From fd812d3c719227493156ba47e14b8aef3acbac78 Mon Sep 17 00:00:00 2001 From: Matt Boney Date: Sat, 28 Oct 2023 22:19:08 -0600 Subject: [PATCH] add lua-cmake-build script and configuration file --- CMakeLists.txt | 41 +++++++++++++++++++++++++++++++++++++++++ lua-config.cmake | 12 ++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 lua-config.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2176c42 --- /dev/null +++ b/CMakeLists.txt @@ -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} +) diff --git a/lua-config.cmake b/lua-config.cmake new file mode 100644 index 0000000..463678c --- /dev/null +++ b/lua-config.cmake @@ -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