diff --git a/cmake/core.cmake b/cmake/core.cmake index e2c1fec04..0903c3a54 100644 --- a/cmake/core.cmake +++ b/cmake/core.cmake @@ -11,17 +11,6 @@ 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 @@ -29,6 +18,50 @@ macro(MACRO_CORE SCRIPT DEFINE BUILD_DEPRECATED) ${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() @@ -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) @@ -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) @@ -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() \ No newline at end of file diff --git a/cmake/janet.cmake b/cmake/janet.cmake index 84a618462..5830878e3 100644 --- a/cmake/janet.cmake +++ b/cmake/janet.cmake @@ -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() \ No newline at end of file diff --git a/cmake/lua.cmake b/cmake/lua.cmake index 79e8df613..2c3c4af94 100644 --- a/cmake/lua.cmake +++ b/cmake/lua.cmake @@ -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}) \ No newline at end of file +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() diff --git a/cmake/mruby.cmake b/cmake/mruby.cmake index 70392aca1..7771e2d9a 100644 --- a/cmake/mruby.cmake +++ b/cmake/mruby.cmake @@ -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() \ No newline at end of file diff --git a/cmake/pocketpy.cmake b/cmake/pocketpy.cmake index 442f6ef89..3ce48bfbb 100644 --- a/cmake/pocketpy.cmake +++ b/cmake/pocketpy.cmake @@ -2,19 +2,29 @@ # pocketpy (Python) ################################ -add_subdirectory(${THIRDPARTY_DIR}/pocketpy) -target_compile_definitions(pocketpy PRIVATE PK_ENABLE_OS=0) -include_directories(${THIRDPARTY_DIR}/pocketpy/include) +set(BUILD_WITH_PYTHON_DEFAULT TRUE) -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(pocketpy PRIVATE -Wno-psabi) -endif() +option(BUILD_WITH_PYTHON "Python Enabled" ${BUILD_WITH_PYTHON_DEFAULT}) +message("BUILD_WITH_PYTHON: ${BUILD_WITH_PYTHON}") + +if(BUILD_WITH_PYTHON) + + add_subdirectory(${THIRDPARTY_DIR}/pocketpy) + target_compile_definitions(pocketpy PRIVATE PK_ENABLE_OS=0) + include_directories(${THIRDPARTY_DIR}/pocketpy/include) -# alias pocketpy to python for next steps -set_target_properties(pocketpy PROPERTIES OUTPUT_NAME python) -add_library(python ALIAS pocketpy) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(pocketpy PRIVATE -Wno-psabi) + endif() -if(EMSCRIPTEN) - # exceptions must be enabled for emscripten - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fexceptions") -endif() \ No newline at end of file + # alias pocketpy to python for next steps + set_target_properties(pocketpy PROPERTIES OUTPUT_NAME python) + add_library(python ALIAS pocketpy) + + if(EMSCRIPTEN) + # exceptions must be enabled for emscripten + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fexceptions") + endif() + + target_compile_definitions(pocketpy INTERFACE TIC_BUILD_WITH_PYTHON=1) +endif() diff --git a/cmake/quickjs.cmake b/cmake/quickjs.cmake index 57325c183..87a57185f 100644 --- a/cmake/quickjs.cmake +++ b/cmake/quickjs.cmake @@ -2,28 +2,39 @@ # QuickJS ################################ -set(QUICKJS_DIR ${THIRDPARTY_DIR}/quickjs) +set(BUILD_WITH_JS_DEFAULT TRUE) -file(STRINGS ${QUICKJS_DIR}/VERSION CONFIG_VERSION) +option(BUILD_WITH_JS "JS Enabled" ${BUILD_WITH_JS_DEFAULT}) +message("BUILD_WITH_JS: ${BUILD_WITH_JS}") -add_library(quickjs STATIC - ${QUICKJS_DIR}/quickjs.c - ${QUICKJS_DIR}/libregexp.c - ${QUICKJS_DIR}/libunicode.c - ${QUICKJS_DIR}/cutils.c) +if(BUILD_WITH_JS) -target_compile_definitions(quickjs PUBLIC CONFIG_VERSION="${CONFIG_VERSION}") -target_include_directories(quickjs INTERFACE ${QUICKJS_DIR}) + set(QUICKJS_DIR ${THIRDPARTY_DIR}/quickjs) -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - target_compile_definitions(quickjs PRIVATE DUMP_LEAKS) -endif() + file(STRINGS ${QUICKJS_DIR}/VERSION CONFIG_VERSION) -if(BAREMETALPI OR N3DS) - target_compile_definitions(quickjs PRIVATE POOR_CLIB) -endif() + add_library(quickjs STATIC + ${QUICKJS_DIR}/quickjs.c + ${QUICKJS_DIR}/libregexp.c + ${QUICKJS_DIR}/libunicode.c + ${QUICKJS_DIR}/cutils.c) + + target_compile_definitions(quickjs PUBLIC CONFIG_VERSION="${CONFIG_VERSION}") + target_include_directories(quickjs INTERFACE ${QUICKJS_DIR}) + + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_definitions(quickjs PRIVATE DUMP_LEAKS) + endif() + + if(BAREMETALPI OR N3DS) + target_compile_definitions(quickjs PRIVATE POOR_CLIB) + endif() + + if(LINUX) + target_compile_definitions(quickjs PUBLIC _GNU_SOURCE _POSIX_C_SOURCE=200112) + target_link_libraries(quickjs PUBLIC m dl pthread) + endif() + + target_compile_definitions(quickjs INTERFACE TIC_BUILD_WITH_JS=1) -if(LINUX) - target_compile_definitions(quickjs PUBLIC _GNU_SOURCE _POSIX_C_SOURCE=200112) - target_link_libraries(quickjs PUBLIC m dl pthread) endif() \ No newline at end of file diff --git a/cmake/scheme.cmake b/cmake/scheme.cmake index 1584193df..d1cb6661b 100644 --- a/cmake/scheme.cmake +++ b/cmake/scheme.cmake @@ -2,19 +2,30 @@ # SCHEME (S7) ################################ -set(SCHEME_DIR ${THIRDPARTY_DIR}/s7) -set(SCHEME_SRC - ${SCHEME_DIR}/s7.c -) +set(BUILD_WITH_SCHEME_DEFAULT TRUE) -add_library(scheme STATIC ${SCHEME_SRC}) -set_target_properties(scheme PROPERTIES LINKER_LANGUAGE CXX) -target_include_directories(scheme PUBLIC ${SCHEME_DIR}) +option(BUILD_WITH_SCHEME "Scheme Enabled" ${BUILD_WITH_SCHEME_DEFAULT}) +message("BUILD_WITH_SCHEME: ${BUILD_WITH_SCHEME}") -if (N3DS) - target_compile_definitions(scheme PRIVATE S7_N3DS) -endif() +if(BUILD_WITH_SCHEME) + + set(SCHEME_DIR ${THIRDPARTY_DIR}/s7) + set(SCHEME_SRC + ${SCHEME_DIR}/s7.c + ) + + add_library(scheme STATIC ${SCHEME_SRC}) + set_target_properties(scheme PROPERTIES LINKER_LANGUAGE CXX) + target_include_directories(scheme PUBLIC ${SCHEME_DIR}) + + if (N3DS) + target_compile_definitions(scheme PRIVATE S7_N3DS) + endif() + + if (BAREMETALPI) + target_compile_definitions(scheme PRIVATE S7_BAREMETALPI) + endif() + + target_compile_definitions(scheme INTERFACE TIC_BUILD_WITH_SCHEME=1) -if (BAREMETALPI) - target_compile_definitions(scheme PRIVATE S7_BAREMETALPI) endif() \ No newline at end of file diff --git a/cmake/squirrel.cmake b/cmake/squirrel.cmake index 23a7fceb1..1775db9d7 100644 --- a/cmake/squirrel.cmake +++ b/cmake/squirrel.cmake @@ -2,33 +2,42 @@ # SQUIRREL ################################ -set(SQUIRREL_DIR ${THIRDPARTY_DIR}/squirrel) -set(SQUIRREL_SRC - ${SQUIRREL_DIR}/squirrel/sqapi.cpp - ${SQUIRREL_DIR}/squirrel/sqbaselib.cpp - ${SQUIRREL_DIR}/squirrel/sqclass.cpp - ${SQUIRREL_DIR}/squirrel/sqcompiler.cpp - ${SQUIRREL_DIR}/squirrel/sqdebug.cpp - ${SQUIRREL_DIR}/squirrel/sqfuncstate.cpp - ${SQUIRREL_DIR}/squirrel/sqlexer.cpp - ${SQUIRREL_DIR}/squirrel/sqmem.cpp - ${SQUIRREL_DIR}/squirrel/sqobject.cpp - ${SQUIRREL_DIR}/squirrel/sqstate.cpp - ${SQUIRREL_DIR}/squirrel/sqtable.cpp - ${SQUIRREL_DIR}/squirrel/sqvm.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdaux.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdblob.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdio.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdmath.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdrex.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdstream.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdstring.cpp - ${SQUIRREL_DIR}/sqstdlib/sqstdsystem.cpp +set(BUILD_WITH_SQUIRREL_DEFAULT TRUE) -) +option(BUILD_WITH_SQUIRREL "Wasm Enabled" ${BUILD_WITH_SQUIRREL_DEFAULT}) +message("BUILD_WITH_SQUIRREL: ${BUILD_WITH_SQUIRREL}") -add_library(squirrel STATIC ${SQUIRREL_SRC}) -set_target_properties(squirrel PROPERTIES LINKER_LANGUAGE CXX) -target_include_directories(squirrel PUBLIC ${SQUIRREL_DIR}/include) -target_include_directories(squirrel PRIVATE ${SQUIRREL_DIR}/squirrel) -target_include_directories(squirrel PRIVATE ${SQUIRREL_DIR}/sqstdlib) \ No newline at end of file +if(BUILD_WITH_SQUIRREL) + + set(SQUIRREL_DIR ${THIRDPARTY_DIR}/squirrel) + set(SQUIRREL_SRC + ${SQUIRREL_DIR}/squirrel/sqapi.cpp + ${SQUIRREL_DIR}/squirrel/sqbaselib.cpp + ${SQUIRREL_DIR}/squirrel/sqclass.cpp + ${SQUIRREL_DIR}/squirrel/sqcompiler.cpp + ${SQUIRREL_DIR}/squirrel/sqdebug.cpp + ${SQUIRREL_DIR}/squirrel/sqfuncstate.cpp + ${SQUIRREL_DIR}/squirrel/sqlexer.cpp + ${SQUIRREL_DIR}/squirrel/sqmem.cpp + ${SQUIRREL_DIR}/squirrel/sqobject.cpp + ${SQUIRREL_DIR}/squirrel/sqstate.cpp + ${SQUIRREL_DIR}/squirrel/sqtable.cpp + ${SQUIRREL_DIR}/squirrel/sqvm.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdaux.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdblob.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdio.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdmath.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdrex.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdstream.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdstring.cpp + ${SQUIRREL_DIR}/sqstdlib/sqstdsystem.cpp + + ) + + add_library(squirrel STATIC ${SQUIRREL_SRC}) + set_target_properties(squirrel PROPERTIES LINKER_LANGUAGE CXX) + target_include_directories(squirrel PUBLIC ${SQUIRREL_DIR}/include) + target_include_directories(squirrel PRIVATE ${SQUIRREL_DIR}/squirrel) + target_include_directories(squirrel PRIVATE ${SQUIRREL_DIR}/sqstdlib) + target_compile_definitions(squirrel INTERFACE TIC_BUILD_WITH_SQUIRREL=1) +endif() \ No newline at end of file diff --git a/cmake/stub.cmake b/cmake/stub.cmake index 40e55d74c..e43f7adfc 100644 --- a/cmake/stub.cmake +++ b/cmake/stub.cmake @@ -73,19 +73,38 @@ if(BUILD_STUB) endmacro() - MACRO_STUB(lua) - MACRO_STUB(moon) - MACRO_STUB(fennel) + if(BUILD_WITH_LUA) + MACRO_STUB(lua) + endif() + + if(BUILD_WITH_MOON) + MACRO_STUB(moon) + endif() + + if(BUILD_WITH_FENNEL) + MACRO_STUB(fennel) + endif() + + if(BUILD_WITH_JS) + MACRO_STUB(js) + endif() + + if(BUILD_WITH_SCHEME) + MACRO_STUB(scheme) + endif() + + if(BUILD_WITH_SQUIRREL) + MACRO_STUB(squirrel) + endif() + + if(BUILD_WITH_PYTHON) + MACRO_STUB(python) + endif() if(BUILD_WITH_WREN) MACRO_STUB(wren) endif() - MACRO_STUB(js) - MACRO_STUB(squirrel) - MACRO_STUB(python) - MACRO_STUB(scheme) - if(BUILD_WITH_JANET) MACRO_STUB(janet) endif() @@ -94,6 +113,8 @@ if(BUILD_STUB) MACRO_STUB(ruby) endif() - MACRO_STUB(wasm) + if(BUILD_WITH_WASM) + MACRO_STUB(wasm) + endif() endif() \ No newline at end of file diff --git a/cmake/tools.cmake b/cmake/tools.cmake index b61e569b3..af113257c 100644 --- a/cmake/tools.cmake +++ b/cmake/tools.cmake @@ -36,27 +36,70 @@ if(BUILD_DEMO_CARTS) set(DEMO_CARTS_IN ${CMAKE_SOURCE_DIR}/demos) set(DEMO_CARTS_OUT) - file(GLOB DEMO_CARTS - ${DEMO_CARTS_IN}/*.* - ${DEMO_CARTS_IN}/bunny/*.*) + if(BUILD_WITH_LUA) + list(APPEND DEMO_CARTS + ${CMAKE_SOURCE_DIR}/config.lua + ) + endif() - list(APPEND DEMO_CARTS - ${CMAKE_SOURCE_DIR}/config.lua - ) + if(BUILD_WITH_LUA) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/quest.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/car.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/music.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/sfx.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/palette.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bpp.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/tetris.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/font.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/fire.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/benchmark.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/p3d.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/luademo.lua) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/luamark.lua) + endif() + + if(BUILD_WITH_MOON) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/moondemo.moon) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/moonmark.moon) + endif() + + if(BUILD_WITH_FENNEL) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/fenneldemo.fnl) + endif() + + if(BUILD_WITH_JS) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/jsdemo.js) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/jsmark.js) + endif() + + if(BUILD_WITH_SCHEME) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/schemedemo.scm) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/schememark.scm) + endif() + + if(BUILD_WITH_SQUIRREL) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/squirreldemo.nut) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/squirrelmark.nut) + endif() - if(NOT BUILD_WITH_WREN) - list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/wrendemo.wren) - list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/bunny/wrenmark.wren) + if(BUILD_WITH_PYTHON) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/pythondemo.py) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/pythonmark.py) endif() - if(NOT BUILD_WITH_MRUBY) - list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/rubydemo.rb) - list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/bunny/rubymark.rb) + if(BUILD_WITH_WREN) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/wrendemo.wren) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/wrenmark.wren) endif() - if(NOT BUILD_WITH_JANET) - list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/janetdemo.janet) - list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/bunny/janetmark.janet) + if(BUILD_WITH_MRUBY) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/rubydemo.rb) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/rubymark.rb) + endif() + + if(BUILD_WITH_JANET) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/janetdemo.janet) + list(APPEND DEMO_CARTS ${DEMO_CARTS_IN}/bunny/janetmark.janet) endif() foreach(CART_FILE ${DEMO_CARTS}) @@ -75,30 +118,34 @@ if(BUILD_DEMO_CARTS) endforeach(CART_FILE) - # we need to build these separately combining both the project - # and the external WASM binary chunk since projects do not - # include BINARY chunks + if(BUILD_WITH_WASM) - file(GLOB WASM_DEMOS - ${DEMO_CARTS_IN}/wasm/*.wasmp - ${DEMO_CARTS_IN}/bunny/wasmmark/*.wasmp - ) + # we need to build these separately combining both the project + # and the external WASM binary chunk since projects do not + # include BINARY chunks - foreach(CART_FILE ${WASM_DEMOS}) + file(GLOB WASM_DEMOS + ${DEMO_CARTS_IN}/wasm/*.wasmp + ${DEMO_CARTS_IN}/bunny/wasmmark/*.wasmp + ) - get_filename_component(CART_NAME ${CART_FILE} NAME_WE) - get_filename_component(DIR ${CART_FILE} DIRECTORY) + foreach(CART_FILE ${WASM_DEMOS}) - set(OUTNAME ${CMAKE_SOURCE_DIR}/build/assets/${CART_NAME}.tic.dat) - set(WASM_BINARY ${DIR}/${CART_NAME}.wasm) - set(OUTPRJ ${CMAKE_SOURCE_DIR}/build/${CART_NAME}.tic) - list(APPEND DEMO_CARTS_OUT ${OUTNAME}) - add_custom_command(OUTPUT ${OUTNAME} - COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/wasmp2cart ${CART_FILE} ${OUTPRJ} --binary ${WASM_BINARY} && ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bin2txt ${OUTPRJ} ${OUTNAME} -z - DEPENDS bin2txt wasmp2cart ${CART_FILE} ${WASM_BINARY} - ) + get_filename_component(CART_NAME ${CART_FILE} NAME_WE) + get_filename_component(DIR ${CART_FILE} DIRECTORY) - endforeach(CART_FILE) + set(OUTNAME ${CMAKE_SOURCE_DIR}/build/assets/${CART_NAME}.tic.dat) + set(WASM_BINARY ${DIR}/${CART_NAME}.wasm) + set(OUTPRJ ${CMAKE_SOURCE_DIR}/build/${CART_NAME}.tic) + list(APPEND DEMO_CARTS_OUT ${OUTNAME}) + add_custom_command(OUTPUT ${OUTNAME} + COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/wasmp2cart ${CART_FILE} ${OUTPRJ} --binary ${WASM_BINARY} && ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bin2txt ${OUTPRJ} ${OUTNAME} -z + DEPENDS bin2txt wasmp2cart ${CART_FILE} ${WASM_BINARY} + ) + + endforeach(CART_FILE) + + endif() add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/build/assets/cart.png.dat COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bin2txt ${CMAKE_SOURCE_DIR}/build/cart.png ${CMAKE_SOURCE_DIR}/build/assets/cart.png.dat diff --git a/cmake/wasm.cmake b/cmake/wasm.cmake index a5e40bcd2..a3cd60aa0 100644 --- a/cmake/wasm.cmake +++ b/cmake/wasm.cmake @@ -2,22 +2,30 @@ # WASM ################################ -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3LogOutput=0") -set(WASM_DIR ${THIRDPARTY_DIR}/wasm3/source) -set(WASM_SRC - ${WASM_DIR}/m3_bind.c - ${WASM_DIR}/m3_code.c - ${WASM_DIR}/m3_compile.c - ${WASM_DIR}/m3_core.c - ${WASM_DIR}/m3_parse.c - ${WASM_DIR}/m3_env.c - ${WASM_DIR}/m3_exec.c - ${WASM_DIR}/m3_function.c - ${WASM_DIR}/m3_info.c - ${WASM_DIR}/m3_module.c -) +set(BUILD_WITH_WASM_DEFAULT TRUE) -add_library(wasm STATIC ${WASM_SRC}) -target_include_directories(wasm PUBLIC ${THIRDPARTY_DIR}/wasm3/source) -#target_include_directories(wasm PRIVATE ${THIRDPARTY_DIR}/wasm3/src/optional) -#target_include_directories(wasm PRIVATE ${THIRDPARTY_DIR}/wasm3/src/vm) \ No newline at end of file +option(BUILD_WITH_WASM "Wasm Enabled" ${BUILD_WITH_WASM_DEFAULT}) +message("BUILD_WITH_WASM: ${BUILD_WITH_WASM}") + +if(BUILD_WITH_WASM) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3LogOutput=0") + set(WASM_DIR ${THIRDPARTY_DIR}/wasm3/source) + set(WASM_SRC + ${WASM_DIR}/m3_bind.c + ${WASM_DIR}/m3_code.c + ${WASM_DIR}/m3_compile.c + ${WASM_DIR}/m3_core.c + ${WASM_DIR}/m3_parse.c + ${WASM_DIR}/m3_env.c + ${WASM_DIR}/m3_exec.c + ${WASM_DIR}/m3_function.c + ${WASM_DIR}/m3_info.c + ${WASM_DIR}/m3_module.c + ) + + add_library(wasm STATIC ${WASM_SRC}) + target_include_directories(wasm PUBLIC ${THIRDPARTY_DIR}/wasm3/source) + target_compile_definitions(wasm INTERFACE TIC_BUILD_WITH_WASM=1) + +endif() \ No newline at end of file diff --git a/cmake/wren.cmake b/cmake/wren.cmake index 3c304cc0a..bb837bb35 100644 --- a/cmake/wren.cmake +++ b/cmake/wren.cmake @@ -26,4 +26,6 @@ if(BUILD_WITH_WREN) target_include_directories(wren PUBLIC ${THIRDPARTY_DIR}/wren/src/include) target_include_directories(wren PRIVATE ${THIRDPARTY_DIR}/wren/src/optional) target_include_directories(wren PRIVATE ${THIRDPARTY_DIR}/wren/src/vm) + target_compile_definitions(wren INTERFACE TIC_BUILD_WITH_WREN=1) + endif() \ No newline at end of file diff --git a/include/tic80_config.h b/include/tic80_config.h index 0a73f804f..f4be0a241 100644 --- a/include/tic80_config.h +++ b/include/tic80_config.h @@ -22,30 +22,6 @@ #pragma once -#if !defined(TIC_BUILD_WITH_LUA) && \ - !defined(TIC_BUILD_WITH_MOON) && \ - !defined(TIC_BUILD_WITH_FENNEL) && \ - !defined(TIC_BUILD_WITH_JS) && \ - !defined(TIC_BUILD_WITH_SCHEME) && \ - !defined(TIC_BUILD_WITH_SQUIRREL) && \ - !defined(TIC_BUILD_WITH_PYTHON) && \ - !defined(TIC_BUILD_WITH_WASM) - -# define TIC_BUILD_WITH_LUA 1 -# define TIC_BUILD_WITH_MOON 1 -# define TIC_BUILD_WITH_FENNEL 1 -# define TIC_BUILD_WITH_JS 1 -# define TIC_BUILD_WITH_SCHEME 1 -# define TIC_BUILD_WITH_SQUIRREL 1 -# define TIC_BUILD_WITH_PYTHON 1 -# define TIC_BUILD_WITH_WASM 1 - -#endif - -#if defined(TIC_BUILD_WITH_FENNEL) || defined(TIC_BUILD_WITH_MOON) -# define TIC_BUILD_WITH_LUA 1 -#endif - #if defined(__APPLE__) // TODO: this disables macos config # include "AvailabilityMacros.h" diff --git a/src/api/fennel.c b/src/api/fennel.c index 6f9e04f52..83e39c217 100644 --- a/src/api/fennel.c +++ b/src/api/fennel.c @@ -21,14 +21,8 @@ // SOFTWARE. #include "core/core.h" - -// Fennel requires Lua -#if defined(TIC_BUILD_WITH_LUA) - #include "lua_api.h" -#if defined(TIC_BUILD_WITH_FENNEL) - #include "fennel.h" #define FENNEL_CODE(...) #__VA_ARGS__ @@ -227,7 +221,3 @@ tic_script_config FennelSyntaxConfig = .useStructuredEdition = true, }; - -#endif /* defined(TIC_BUILD_WITH_FENNEL) */ - -#endif diff --git a/src/api/janet.c b/src/api/janet.c index b986023da..bc5b4ec3f 100644 --- a/src/api/janet.c +++ b/src/api/janet.c @@ -26,8 +26,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_JANET) - #include static inline tic_core* getJanetMachine(void); @@ -1301,5 +1299,3 @@ const tic_script_config JanetSyntaxConfig = .keywords = JanetKeywords, .keywordsCount = COUNT_OF(JanetKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_JANET) */ diff --git a/src/api/js.c b/src/api/js.c index 1d2a29824..ed3dcd6f4 100644 --- a/src/api/js.c +++ b/src/api/js.c @@ -22,8 +22,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_JS) - #include "tools.h" #include @@ -1285,5 +1283,3 @@ const tic_script_config JsSyntaxConfig = .keywords = JsKeywords, .keywordsCount = COUNT_OF(JsKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_JS) */ diff --git a/src/api/lua.c b/src/api/lua.c index 696d85698..4e691a6d1 100644 --- a/src/api/lua.c +++ b/src/api/lua.c @@ -22,8 +22,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_LUA) - #include #include #include @@ -1824,5 +1822,3 @@ tic_script_config LuaSyntaxConfig = .keywords = LuaKeywords, .keywordsCount = COUNT_OF(LuaKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_LUA) */ diff --git a/src/api/moonscript.c b/src/api/moonscript.c index f1aa6b753..95bca9dff 100644 --- a/src/api/moonscript.c +++ b/src/api/moonscript.c @@ -21,14 +21,8 @@ // SOFTWARE. #include "core/core.h" - -// Moonscript requires Lua -#if defined(TIC_BUILD_WITH_LUA) - #include "lua_api.h" -#if defined(TIC_BUILD_WITH_MOON) - static const char _ms_loadstring[] = "_ms_loadstring"; static inline bool isalnum_(char c) {return isalnum(c) || c == '_';} @@ -225,7 +219,3 @@ tic_script_config MoonSyntaxConfig = .keywords = MoonKeywords, .keywordsCount = COUNT_OF(MoonKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_MOON) */ - -#endif /* defined(TIC_BUILD_WITH_LUA) */ diff --git a/src/api/mruby.c b/src/api/mruby.c index 98e64cd53..717789a8e 100644 --- a/src/api/mruby.c +++ b/src/api/mruby.c @@ -23,8 +23,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_MRUBY) - #include #include #include @@ -1251,5 +1249,3 @@ const tic_script_config MRubySyntaxConfig = .keywords = MRubyKeywords, .keywordsCount = COUNT_OF(MRubyKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_MRUBY) */ diff --git a/src/api/python.c b/src/api/python.c index f5855b418..6a1c2e0d8 100644 --- a/src/api/python.c +++ b/src/api/python.c @@ -1,7 +1,5 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_PYTHON) - #include "pocketpy_c.h" #include #include @@ -1570,5 +1568,3 @@ const tic_script_config PythonSyntaxConfig = .keywords = PythonKeywords, .keywordsCount = COUNT_OF(PythonKeywords), }; - -#endif/* defined(TIC_BUILD_WITH_PYTHON) */ diff --git a/src/api/scheme.c b/src/api/scheme.c index b95d63d79..8226bbb91 100644 --- a/src/api/scheme.c +++ b/src/api/scheme.c @@ -22,10 +22,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_SCHEME) - -//#define USE_FOREIGN_POINTER - #include #include #include @@ -1061,5 +1057,3 @@ tic_script_config SchemeSyntaxConfig = .keywords = SchemeKeywords, .keywordsCount = COUNT_OF(SchemeKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_SCHEME) */ diff --git a/src/api/squirrel.c b/src/api/squirrel.c index 6be42465b..866761e1b 100644 --- a/src/api/squirrel.c +++ b/src/api/squirrel.c @@ -22,10 +22,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_SQUIRREL) - -//#define USE_FOREIGN_POINTER - #include #include #include @@ -1882,5 +1878,3 @@ tic_script_config SquirrelSyntaxConfig = .keywords = SquirrelKeywords, .keywordsCount = COUNT_OF(SquirrelKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_SQUIRREL) */ diff --git a/src/api/wasm.c b/src/api/wasm.c index 22b74a172..bdb04087f 100644 --- a/src/api/wasm.c +++ b/src/api/wasm.c @@ -21,13 +21,10 @@ // SOFTWARE. #include "core/core.h" -#if defined(TIC_BUILD_WITH_WASM) #define dbg(...) printf(__VA_ARGS__) //define dbg(...) - - #include "tools.h" #include @@ -1318,10 +1315,3 @@ const tic_script_config* get_wasm_script_config() { return &WasmSyntaxConfig; } - -#else - -// ?? -s32 wasm_timeout_check(void* udata){return 0;} - -#endif /* defined(TIC_BUILD_WITH_WASM) */ diff --git a/src/api/wren.c b/src/api/wren.c index 93cd08822..ab558b785 100644 --- a/src/api/wren.c +++ b/src/api/wren.c @@ -22,8 +22,6 @@ #include "core/core.h" -#if defined(TIC_BUILD_WITH_WREN) - #include #include #include @@ -1851,5 +1849,3 @@ tic_script_config WrenSyntaxConfig = .keywords = WrenKeywords, .keywordsCount = COUNT_OF(WrenKeywords), }; - -#endif /* defined(TIC_BUILD_WITH_WREN) */ diff --git a/src/core/languages.c b/src/core/languages.c index 5210d2086..56bd1acff 100644 --- a/src/core/languages.c +++ b/src/core/languages.c @@ -45,51 +45,52 @@ extern tic_script_config JanetSyntaxConfig; extern tic_script_config PythonSyntaxConfig; #endif +tic_script_config* Languages[] = +{ -tic_script_config* Languages[] = { + #if defined (TIC_BUILD_WITH_LUA) + &LuaSyntaxConfig, + #endif - #if defined (TIC_BUILD_WITH_LUA) - &LuaSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_MRUBY) + &MRubySyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_MRUBY) - &MRubySyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_JS) + &JsSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_JS) - &JsSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_MOON) + &MoonSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_MOON) - &MoonSyntaxConfig, - #endif - - #if defined(TIC_BUILD_WITH_FENNEL) - &FennelSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_FENNEL) + &FennelSyntaxConfig, + #endif #if defined(TIC_BUILD_WITH_SCHEME) - &SchemeSyntaxConfig, - #endif + &SchemeSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_SQUIRREL) - &SquirrelSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_SQUIRREL) + &SquirrelSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_WREN) - &WrenSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_WREN) + &WrenSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_WASM) - &WasmSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_WASM) + &WasmSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_JANET) - &JanetSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_JANET) + &JanetSyntaxConfig, + #endif - #if defined(TIC_BUILD_WITH_PYTHON) - &PythonSyntaxConfig, - #endif + #if defined(TIC_BUILD_WITH_PYTHON) + &PythonSyntaxConfig, + #endif - NULL}; + NULL +};