Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added cmake build options for all the supported scripts #2423

Merged
merged 1 commit into from
Dec 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 102 additions & 45 deletions cmake/core.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,57 @@ macro(MACRO_CORE SCRIPT DEFINE BUILD_DEPRECATED)
${TIC80CORE_DIR}/core/draw.c
${TIC80CORE_DIR}/core/io.c
${TIC80CORE_DIR}/core/sound.c
${TIC80CORE_DIR}/api/js.c
${TIC80CORE_DIR}/api/lua.c
${TIC80CORE_DIR}/api/moonscript.c
${TIC80CORE_DIR}/api/fennel.c
${TIC80CORE_DIR}/api/wren.c
${TIC80CORE_DIR}/api/wasm.c
${TIC80CORE_DIR}/api/squirrel.c
${TIC80CORE_DIR}/api/python.c
${TIC80CORE_DIR}/api/scheme.c
${TIC80CORE_DIR}/api/mruby.c
${TIC80CORE_DIR}/api/janet.c
${TIC80CORE_DIR}/tic.c
${TIC80CORE_DIR}/cart.c
${TIC80CORE_DIR}/tools.c
${TIC80CORE_DIR}/zip.c
${TIC80CORE_DIR}/tilesheet.c
)

if(BUILD_WITH_LUA)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/lua.c)
endif()

if(BUILD_WITH_MOON)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/moonscript.c)
endif()

if(BUILD_WITH_FENNEL)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/fennel.c)
endif()

if(BUILD_WITH_JS)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/js.c)
endif()

if(BUILD_WITH_SCHEME)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/scheme.c)
endif()

if(BUILD_WITH_SQUIRREL)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/squirrel.c)
endif()

if(BUILD_WITH_PYTHON)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/python.c)
endif()

if(BUILD_WITH_WREN)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/wren.c)
endif()

if(BUILD_WITH_MRUBY)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/mruby.c)
endif()

if(BUILD_WITH_JANET)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/janet.c)
endif()

if(BUILD_WITH_WASM)
list(APPEND TIC80CORE_SRC ${TIC80CORE_DIR}/api/wasm.c)
endif()

if(${BUILD_DEPRECATED})
set(TIC80CORE_SRC ${TIC80CORE_SRC} ${TIC80CORE_DIR}/ext/gif.c)
endif()
Expand All @@ -49,17 +82,27 @@ macro(MACRO_CORE SCRIPT DEFINE BUILD_DEPRECATED)
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/src)

target_link_libraries(tic80core${SCRIPT}
lua
lpeg
wasm
squirrel
python
scheme
quickjs
blipbuf
zlib
)
target_link_libraries(tic80core${SCRIPT} blipbuf zlib)

if(BUILD_WITH_LUA)
target_link_libraries(tic80core${SCRIPT} lua)
endif()

if(BUILD_WITH_JS)
target_link_libraries(tic80core${SCRIPT} quickjs)
endif()

if(BUILD_WITH_SCHEME)
target_link_libraries(tic80core${SCRIPT} scheme)
endif()

if(BUILD_WITH_SQUIRREL)
target_link_libraries(tic80core${SCRIPT} squirrel)
endif()

if(BUILD_WITH_PYTHON)
target_link_libraries(tic80core${SCRIPT} python)
endif()

if(BUILD_WITH_WREN)
target_link_libraries(tic80core${SCRIPT} wren)
Expand All @@ -73,6 +116,10 @@ macro(MACRO_CORE SCRIPT DEFINE BUILD_DEPRECATED)
target_link_libraries(tic80core${SCRIPT} janet)
endif()

if(BUILD_WITH_WASM)
target_link_libraries(tic80core${SCRIPT} wasm)
endif()

if(${BUILD_DEPRECATED})
target_compile_definitions(tic80core${SCRIPT} PRIVATE BUILD_DEPRECATED)
target_link_libraries(tic80core${SCRIPT} giflib)
Expand All @@ -90,38 +137,48 @@ MACRO_CORE("" "" TRUE)

if(BUILD_STUB)

MACRO_CORE(lua TIC_BUILD_WITH_LUA FALSE)
MACRO_CORE(moon TIC_BUILD_WITH_MOON FALSE)
MACRO_CORE(fennel TIC_BUILD_WITH_FENNEL FALSE)
MACRO_CORE(js TIC_BUILD_WITH_JS FALSE)
if(BUILD_WITH_LUA)
MACRO_CORE(lua TIC_BUILD_WITH_LUA FALSE)
endif()

if(BUILD_WITH_WREN)
MACRO_CORE(wren TIC_BUILD_WITH_WREN FALSE)
if(BUILD_WITH_MOON)
MACRO_CORE(moon TIC_BUILD_WITH_MOON FALSE)
endif()

if(BUILD_WITH_FENNEL)
MACRO_CORE(fennel TIC_BUILD_WITH_FENNEL FALSE)
endif()

if(BUILD_WITH_JS)
MACRO_CORE(js TIC_BUILD_WITH_JS FALSE)
endif()

if(BUILD_WITH_SCHEME)
MACRO_CORE(scheme TIC_BUILD_WITH_SCHEME FALSE)
endif()

if(BUILD_WITH_SQUIRREL)
MACRO_CORE(squirrel TIC_BUILD_WITH_SQUIRREL FALSE)
endif()

if(BUILD_WITH_PYTHON)
MACRO_CORE(python TIC_BUILD_WITH_PYTHON FALSE)
endif()

MACRO_CORE(squirrel TIC_BUILD_WITH_SQUIRREL FALSE)
MACRO_CORE(python TIC_BUILD_WITH_PYTHON FALSE)
MACRO_CORE(scheme TIC_BUILD_WITH_SCHEME FALSE)
MACRO_CORE(wasm TIC_BUILD_WITH_WASM FALSE)
if(BUILD_WITH_WREN)
MACRO_CORE(wren TIC_BUILD_WITH_WREN FALSE)
endif()

if(BUILD_WITH_MRUBY)
MACRO_CORE(ruby TIC_BUILD_WITH_MRUBY FALSE)
MACRO_CORE(ruby TIC_BUILD_WITH_MRUBY FALSE)
endif()

if(BUILD_WITH_JANET)
MACRO_CORE(janet TIC_BUILD_WITH_JANET FALSE)
MACRO_CORE(janet TIC_BUILD_WITH_JANET FALSE)
endif()

endif()

if(BUILD_WITH_WREN)
target_compile_definitions(tic80core PUBLIC TIC_BUILD_WITH_WREN=1)
endif()
if(BUILD_WITH_WASM)
MACRO_CORE(wasm TIC_BUILD_WITH_WASM FALSE)
endif()

if(BUILD_WITH_MRUBY)
target_compile_definitions(tic80core PUBLIC TIC_BUILD_WITH_MRUBY=1)
endif()

if(BUILD_WITH_JANET)
target_compile_definitions(tic80core PUBLIC TIC_BUILD_WITH_JANET=1)
endif()
2 changes: 2 additions & 0 deletions cmake/janet.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,6 @@ if(BUILD_WITH_JANET)
add_library(janet ${THIRDPARTY_DIR}/janet/build/c/janet.c)
target_include_directories(janet PUBLIC ${THIRDPARTY_DIR}/janet/src/include)
target_include_directories(janet PUBLIC ${CMAKE_SOURCE_DIR}/build/janet/)
target_compile_definitions(janet INTERFACE TIC_BUILD_WITH_JANET=1)

endif()
142 changes: 88 additions & 54 deletions cmake/lua.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,63 +2,97 @@
# LUA
################################

set(LUA_DIR ${THIRDPARTY_DIR}/lua)
set(LUA_SRC
${LUA_DIR}/lapi.c
${LUA_DIR}/lcode.c
${LUA_DIR}/lctype.c
${LUA_DIR}/ldebug.c
${LUA_DIR}/ldo.c
${LUA_DIR}/ldump.c
${LUA_DIR}/lfunc.c
${LUA_DIR}/lgc.c
${LUA_DIR}/llex.c
${LUA_DIR}/lmem.c
${LUA_DIR}/lobject.c
${LUA_DIR}/lopcodes.c
${LUA_DIR}/lparser.c
${LUA_DIR}/lstate.c
${LUA_DIR}/lstring.c
${LUA_DIR}/ltable.c
${LUA_DIR}/ltm.c
${LUA_DIR}/lundump.c
${LUA_DIR}/lvm.c
${LUA_DIR}/lzio.c
${LUA_DIR}/lauxlib.c
${LUA_DIR}/lbaselib.c
${LUA_DIR}/lcorolib.c
${LUA_DIR}/ldblib.c
${LUA_DIR}/liolib.c
${LUA_DIR}/lmathlib.c
${LUA_DIR}/loslib.c
${LUA_DIR}/lstrlib.c
${LUA_DIR}/ltablib.c
${LUA_DIR}/lutf8lib.c
${LUA_DIR}/loadlib.c
${LUA_DIR}/linit.c
)

add_library(lua STATIC ${LUA_SRC})

target_compile_definitions(lua PRIVATE LUA_COMPAT_5_2)
target_include_directories(lua INTERFACE ${THIRDPARTY_DIR}/lua)

if(N3DS)
target_compile_definitions(lua PUBLIC LUA_32BITS)
set(BUILD_WITH_LUA_DEFAULT TRUE)
set(BUILD_WITH_MOON_DEFAULT TRUE)
set(BUILD_WITH_FENNEL_DEFAULT TRUE)

option(BUILD_WITH_LUA "Lua Enabled" ${BUILD_WITH_LUA_DEFAULT})
message("BUILD_WITH_LUA: ${BUILD_WITH_LUA}")

option(BUILD_WITH_MOON "Moon Enabled" ${BUILD_WITH_MOON_DEFAULT})
message("BUILD_WITH_MOON: ${BUILD_WITH_MOON}")

option(BUILD_WITH_FENNEL "Fennel Enabled" ${BUILD_WITH_FENNEL_DEFAULT})
message("BUILD_WITH_FENNEL: ${BUILD_WITH_FENNEL}")

if(BUILD_WITH_MOON OR BUILD_WITH_FENNEL)
set(BUILD_WITH_LUA TRUE)
endif()

if(BUILD_WITH_LUA)

set(LUA_DIR ${THIRDPARTY_DIR}/lua)
set(LUA_SRC
${LUA_DIR}/lapi.c
${LUA_DIR}/lcode.c
${LUA_DIR}/lctype.c
${LUA_DIR}/ldebug.c
${LUA_DIR}/ldo.c
${LUA_DIR}/ldump.c
${LUA_DIR}/lfunc.c
${LUA_DIR}/lgc.c
${LUA_DIR}/llex.c
${LUA_DIR}/lmem.c
${LUA_DIR}/lobject.c
${LUA_DIR}/lopcodes.c
${LUA_DIR}/lparser.c
${LUA_DIR}/lstate.c
${LUA_DIR}/lstring.c
${LUA_DIR}/ltable.c
${LUA_DIR}/ltm.c
${LUA_DIR}/lundump.c
${LUA_DIR}/lvm.c
${LUA_DIR}/lzio.c
${LUA_DIR}/lauxlib.c
${LUA_DIR}/lbaselib.c
${LUA_DIR}/lcorolib.c
${LUA_DIR}/ldblib.c
${LUA_DIR}/liolib.c
${LUA_DIR}/lmathlib.c
${LUA_DIR}/loslib.c
${LUA_DIR}/lstrlib.c
${LUA_DIR}/ltablib.c
${LUA_DIR}/lutf8lib.c
${LUA_DIR}/loadlib.c
${LUA_DIR}/linit.c
)

add_library(lua STATIC ${LUA_SRC})

target_compile_definitions(lua PRIVATE LUA_COMPAT_5_2)
target_include_directories(lua INTERFACE ${THIRDPARTY_DIR}/lua)

if(N3DS)
target_compile_definitions(lua PUBLIC LUA_32BITS)
endif()

target_compile_definitions(lua INTERFACE TIC_BUILD_WITH_LUA=1)

if(BUILD_WITH_MOON)
target_compile_definitions(lua INTERFACE TIC_BUILD_WITH_MOON=1)
endif()

if(BUILD_WITH_FENNEL)
target_compile_definitions(lua INTERFACE TIC_BUILD_WITH_FENNEL=1)
endif()
endif()

################################
# LPEG
################################

set(LPEG_DIR ${THIRDPARTY_DIR}/lpeg)
set(LPEG_SRC
${LPEG_DIR}/lpcap.c
${LPEG_DIR}/lpcode.c
${LPEG_DIR}/lpprint.c
${LPEG_DIR}/lptree.c
${LPEG_DIR}/lpvm.c
)

add_library(lpeg STATIC ${LPEG_SRC})
target_include_directories(lpeg PRIVATE ${LUA_DIR})
if(BUILD_WITH_MOON)

set(LPEG_DIR ${THIRDPARTY_DIR}/lpeg)
set(LPEG_SRC
${LPEG_DIR}/lpcap.c
${LPEG_DIR}/lpcode.c
${LPEG_DIR}/lpprint.c
${LPEG_DIR}/lptree.c
${LPEG_DIR}/lpvm.c
)

add_library(lpeg STATIC ${LPEG_SRC})
target_include_directories(lpeg PRIVATE ${LUA_DIR})
target_link_libraries(lua PRIVATE lpeg)
endif()
3 changes: 3 additions & 0 deletions cmake/mruby.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,7 @@ if(BUILD_WITH_MRUBY)
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${MRUBY_DIR}/include
)
add_dependencies(mruby mruby_vendor)

target_compile_definitions(mruby INTERFACE TIC_BUILD_WITH_MRUBY=1)

endif()
Loading
Loading