dfhack/depends/lua/CMakeLists.txt

111 lines
2.5 KiB
CMake

project(lua CXX)
cmake_minimum_required(VERSION 3.21)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLUA_USE_APICHECK")
# Make bit32 library available (for things like bit32.extract())
add_definitions(-DLUA_COMPAT_BITLIB)
if(WIN32)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE /wd4334)
else()
add_definitions(-DLUA_USE_POSIX -DLUA_USE_DLOPEN)
set(LIBS m dl)
endif()
if(UNIX)
add_definitions(-DLINUX_BUILD)
if(DFHACK_BUILD_64)
set(CMAKE_C_FLAGS "-m64 -mno-avx")
else()
set(CMAKE_C_FLAGS "-m32")
endif()
endif()
set(HDR_LIBLUA
include/lapi.h
include/lauxlib.h
include/lcode.h
include/lctype.h
include/ldebug.h
include/ldo.h
include/lfunc.h
include/lgc.h
include/llex.h
include/llimits.h
include/lmem.h
include/lobject.h
include/lopcodes.h
include/lparser.h
include/lstate.h
include/lstring.h
include/ltable.h
include/ltm.h
include/lua.h
include/luaconf.h
include/lualib.h
include/lundump.h
include/lvm.h
include/lzio.h
)
set_source_files_properties(${HDR_LIBLUA} PROPERTIES HEADER_FILE_ONLY TRUE)
include_directories(include)
# Build Libraries
set(SRC_LIBLUA
src/lapi.c
src/lauxlib.c
src/lbaselib.c
src/lbitlib.c
src/lcode.c
src/lcorolib.c
src/lctype.c
src/ldblib.c
src/ldebug.c
src/ldo.c
src/ldump.c
src/lfunc.c
src/lgc.c
src/linit.c
src/liolib.c
src/llex.c
src/lmathlib.c
src/lmem.c
src/loadlib.c
src/lobject.c
src/lopcodes.c
src/loslib.c
src/lparser.c
src/lstate.c
src/lstring.c
src/lstrlib.c
src/ltable.c
src/ltablib.c
src/ltm.c
src/lundump.c
src/lutf8lib.c
src/lvm.c
src/lzio.c
)
# compile with C++ compiler
set_source_files_properties(${SRC_LIBLUA} PROPERTIES LANGUAGE CXX)
# append headers to sources to make them show up in MSVC GUI
list(APPEND SRC_LIBLUA ${HDR_LIBLUA})
add_library(lua SHARED ${SRC_LIBLUA})
target_link_libraries(lua ${LIBS})
if(MSVC)
# need no space to prevent /FI from being stripped: https://github.com/DFHack/dfhack/issues/1455
target_compile_options(lua PRIVATE "/FIdfhack_llimits.h")
else()
target_compile_options(lua PRIVATE -include dfhack_llimits.h)
set_source_files_properties(src/lstring.c PROPERTIES COMPILE_FLAGS "-Wno-stringop-overflow")
endif()
install(TARGETS lua
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
ide_folder(lua "Depends")