diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 043729b..8317664 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -1,5 +1,14 @@ include(FetchContent) +# ---- luajit (MIT) +FetchContent_Declare( + luajit + GIT_REPOSITORY https://github.com/LuaJIT/LuaJIT.git + GIT_TAG 8635cbabf3094c4d8bd00578c7d812bea87bb2d3 +) +FetchContent_Populate(luajit) +include(luajit.cmake) + # ---- gtest (BSD-3-Clause) FetchContent_Declare( googletest diff --git a/thirdparty/luajit.cmake b/thirdparty/luajit.cmake new file mode 100644 index 0000000..61d81a6 --- /dev/null +++ b/thirdparty/luajit.cmake @@ -0,0 +1,56 @@ +set(src "${luajit_SOURCE_DIR}/src") +if (UNIX) + find_program(MAKE make REQUIRED) + + set(lib "${src}/libluajit.a") + add_custom_target(luajit-build + COMMAND + ${MAKE} -j BUILDMODE=static CFLAGS=-fPIC + + WORKING_DIRECTORY "${luajit_SOURCE_DIR}" + VERBATIM + ) + + # To enable assertions, add the following options: + # XCFLAGS="-DLUA_USE_APICHECK -DLUA_USE_ASSERT -Og -g" + +elseif (MINGW) + find_program(MAKE mingw32-make REQUIRED) + + set(lib "${src}/libluajit.a") + add_custom_target(luajit-build + COMMAND ${MAKE} -j BUILDMODE=static CFLAGS=-fPIC + + WORKING_DIRECTORY "${luajit_SOURCE_DIR}/src" + VERBATIM + ) + +elseif (MSVC) + set(lib "${src}/lua51.lib") + add_custom_command( + OUTPUT "${lib}" + COMMAND msvcbuild.bat static + DEPENDS "${luajit_BINARY_DIR}/skip_build" + + WORKING_DIRECTORY "${src}" + VERBATIM + ) + add_custom_target(luajit-build SOURCES "${lib}") + +else() + message(ERROR "unknown environment") +endif() + +add_library(luajit-imported STATIC IMPORTED) +set_target_properties(luajit-imported PROPERTIES + IMPORTED_LOCATION "${lib}" +) +add_dependencies(luajit-imported luajit-build) + +add_library(luajit INTERFACE) +target_link_libraries(luajit + INTERFACE luajit-imported $<$:m> +) +target_include_directories(luajit SYSTEM BEFORE + INTERFACE "${src}" +)