add lua-cmake-build script and configuration file

This commit is contained in:
Matt Boney 2023-10-28 22:19:08 -06:00
parent 358fb7457f
commit fd812d3c71
2 changed files with 53 additions and 0 deletions

41
CMakeLists.txt Normal file
View File

@ -0,0 +1,41 @@
cmake_minimum_required(VERSION 3.15)
project(lua-cmake-build)
include(lua-config.cmake)
file(GLOB LUA_SOURCES ${LUA_SRC_DIR}/*.c)
foreach (luasourcefile ${LUA_SOURCES})
get_filename_component(testname ${luasourcefile} NAME_WLE)
get_filename_component(dirname ${luasourcefile} DIRECTORY)
## skip over lua.c and luac.c
string(FIND ${luasourcefile} "lua.c" LUA_C_NAME)
if(${LUA_C_NAME} LESS 0)
list(APPEND LUA_LIBRARY_SRC ${luasourcefile})
endif()
endforeach()
add_library(lua_static STATIC ${LUA_LIBRARY_SRC})
set_property(TARGET lua_static PROPERTY OUTPUT_NAME ${LUA_LIBRARY_NAME}_static)
set_target_properties(lua_static PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" PREFIX "")
install(TARGETS lua_static ARCHIVE DESTINATION ${CMAKE_BINARY_DIR})
add_executable(lua_binary ${LUA_SRC_DIR}/lua.c)
target_link_libraries(lua_binary lua_library)
set_property(TARGET lua_binary PROPERTY OUTPUT_NAME ${LUA_BINARY_NAME})
set_target_properties(lua_binary PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
add_executable(luac_binary ${LUA_SRC_DIR}/luac.c)
target_link_libraries(luac_binary lua_static)
set_property(TARGET luac_binary PROPERTY OUTPUT_NAME ${LUAC_BINARY_NAME})
set_target_properties(luac_binary PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
add_definitions(-DLUA_BUILD_AS_DLL)
add_library(lua_library SHARED ${LUA_LIBRARY_SRC})
set_property(TARGET lua_library PROPERTY OUTPUT_NAME ${LUA_LIBRARY_NAME})
set_target_properties(lua_library PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" PREFIX "")
install(TARGETS lua_binary luac_binary lua_static lua_library
RUNTIME DESTINATION ${CMAKE_BINARY_DIR}
LIBRARY DESTINATION ${CMAKE_BINARY_DIR}
ARCHIVE DESTINATION ${CMAKE_BINARY_DIR}
)

12
lua-config.cmake Normal file
View File

@ -0,0 +1,12 @@
### Full path to lua/src.
set(LUA_SRC_DIR "u:/src/lua-5.4.6/src")
### Desired names for lua.exe, luac.exe, lua.dll, and lua_static.lib
set(LUA_BINARY_NAME "lua54")
set(LUAC_BINARY_NAME "luac54")
set(LUA_LIBRARY_NAME "lua54")
set(LUA_STATIC_NAME "lua54_static")
## Note:
## Some platforms may want liblua54.dll instead of lua54.dll for example.
## If this is the case, remove PREFIX "" statements from the CMakeList.txt