mirror of
https://github.com/nesbox/TIC-80.git
synced 2026-04-18 14:32:31 +00:00
* Initial Nintendo Switch Port * Switch: Enable CRT shader * Switch: Some QOL changes - hack: make the menu accessible with "+" - Invert Controller buttons A/B X/Y - Enable network log only for debug builds - Enable touchscreen mouse emulation Also add myself to the credits in README --------- Co-authored-by: Vadim Grigoruk <grigoruk@gmail.com>
85 lines
2.4 KiB
CMake
85 lines
2.4 KiB
CMake
################################
|
|
# QuickJS
|
|
################################
|
|
|
|
option(BUILD_WITH_JS "JS Enabled" ${BUILD_WITH_ALL})
|
|
message("BUILD_WITH_JS: ${BUILD_WITH_JS}")
|
|
|
|
if(BUILD_WITH_JS AND PREFER_SYSTEM_LIBRARIES)
|
|
find_path(quickjs_INLCUDE_DIR NAMES quickjs.h PATH_SUFFIXES quickjs)
|
|
find_library(quickjs_LIBRARY NAMES quickjs PATH_SUFFIXES quickjs)
|
|
if(quickjs_INLCUDE_DIR AND quickjs_LIBRARY)
|
|
add_library(js STATIC
|
|
${CMAKE_SOURCE_DIR}/src/api/js.c
|
|
${CMAKE_SOURCE_DIR}/src/api/parse_note.c
|
|
)
|
|
target_compile_definitions(js INTERFACE TIC_BUILD_WITH_JS)
|
|
target_link_libraries(js PRIVATE runtime ${quickjs_LIBRARY})
|
|
target_include_directories(js
|
|
PUBLIC ${quickjs_INLCUDE_DIR}
|
|
PRIVATE
|
|
${CMAKE_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/src
|
|
)
|
|
message(STATUS "Use system library: quickjs")
|
|
return()
|
|
else()
|
|
message(WARNING "System library quickjs not found")
|
|
endif()
|
|
endif()
|
|
|
|
if(BUILD_WITH_JS)
|
|
|
|
set(QUICKJS_DIR ${THIRDPARTY_DIR}/quickjs)
|
|
|
|
file(STRINGS ${QUICKJS_DIR}/VERSION CONFIG_VERSION)
|
|
|
|
set(QUICKJS_SRC
|
|
${QUICKJS_DIR}/quickjs.c
|
|
${QUICKJS_DIR}/libregexp.c
|
|
${QUICKJS_DIR}/libunicode.c
|
|
${QUICKJS_DIR}/cutils.c
|
|
${QUICKJS_DIR}/dtoa.c
|
|
)
|
|
|
|
add_library(quickjs STATIC ${QUICKJS_SRC})
|
|
target_compile_definitions(quickjs PRIVATE CONFIG_VERSION="${CONFIG_VERSION}")
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
target_compile_definitions(quickjs PRIVATE DUMP_LEAKS)
|
|
endif()
|
|
|
|
if(BAREMETALPI OR NINTENDO_3DS OR NINTENDO_SWITCH)
|
|
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()
|
|
|
|
set(JS_SRC
|
|
${CMAKE_SOURCE_DIR}/src/api/js.c
|
|
${CMAKE_SOURCE_DIR}/src/api/parse_note.c
|
|
)
|
|
|
|
add_library(js ${TIC_RUNTIME} ${JS_SRC})
|
|
|
|
if(NOT BUILD_STATIC)
|
|
set_target_properties(js PROPERTIES PREFIX "")
|
|
else()
|
|
target_compile_definitions(js INTERFACE TIC_BUILD_WITH_JS=1)
|
|
endif()
|
|
|
|
target_link_libraries(js PRIVATE runtime)
|
|
|
|
target_link_libraries(js PRIVATE quickjs)
|
|
target_include_directories(js
|
|
PRIVATE
|
|
${QUICKJS_DIR}
|
|
${CMAKE_SOURCE_DIR}/include
|
|
${CMAKE_SOURCE_DIR}/src
|
|
)
|
|
|
|
|
|
endif() |