Files
Faset_Engine/cmake/Lua.cmake
T

39 lines
2.1 KiB
CMake

# Official Lua sources are checksum-pinned in dependencies.lock.json. Build only
# the VM and libraries, never the standalone lua/luac executables or a system ABI.
faset_dependency(lua)
set(lua_src "${FASET_lua_SOURCE_DIR}/src")
add_library(faset_lua_vendor STATIC
${lua_src}/lapi.c ${lua_src}/lcode.c ${lua_src}/lctype.c
${lua_src}/ldebug.c ${lua_src}/ldo.c ${lua_src}/ldump.c
${lua_src}/lfunc.c ${lua_src}/lgc.c ${lua_src}/llex.c
${lua_src}/lmem.c ${lua_src}/lobject.c ${lua_src}/lopcodes.c
${lua_src}/lparser.c ${lua_src}/lstate.c ${lua_src}/lstring.c
${lua_src}/ltable.c ${lua_src}/ltm.c ${lua_src}/lundump.c
${lua_src}/lvm.c ${lua_src}/lzio.c ${lua_src}/lauxlib.c
${lua_src}/lbaselib.c ${lua_src}/lmathlib.c ${lua_src}/lstrlib.c
${lua_src}/ltablib.c ${lua_src}/lutf8lib.c)
target_include_directories(faset_lua_vendor SYSTEM PUBLIC "${lua_src}")
if(NOT MSVC)
# Upstream intentionally uses compiler-supported computed gotos in the VM.
target_compile_options(faset_lua_vendor PRIVATE -Wno-pedantic)
endif()
if(UNIX)
target_link_libraries(faset_lua_vendor PUBLIC m)
endif()
add_library(faset_lua STATIC ${PROJECT_SOURCE_DIR}/src/scripting/LuaModule.cpp)
add_library(Faset::Lua ALIAS faset_lua)
target_include_directories(faset_lua PUBLIC ${PROJECT_SOURCE_DIR}/include)
target_link_libraries(faset_lua PUBLIC faset_runtime faset_scripting_project PRIVATE faset_lua_vendor)
if(BUILD_TESTING)
add_executable(faset_lua_tests ${PROJECT_SOURCE_DIR}/tests/lua_tests.cpp)
target_link_libraries(faset_lua_tests PRIVATE faset_lua)
target_compile_definitions(faset_lua_tests PRIVATE FASET_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
add_test(NAME lua_contracts COMMAND faset_lua_tests)
set_tests_properties(lua_contracts PROPERTIES TIMEOUT 30)
add_executable(faset_lua_safety_tests ${PROJECT_SOURCE_DIR}/tests/lua_safety_tests.cpp)
target_link_libraries(faset_lua_safety_tests PRIVATE faset_lua)
add_test(NAME lua_safety_contracts COMMAND faset_lua_safety_tests)
set_tests_properties(lua_safety_contracts PROPERTIES TIMEOUT 30)
endif()