mirror of
https://github.com/walterschell/Lua.git
synced 2024-11-10 01:01:46 +00:00
Updated CMake and README.md for 5.4.6
This commit is contained in:
parent
a6840a1978
commit
4af1093b20
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.1)
|
cmake_minimum_required(VERSION 3.1)
|
||||||
project(lua LANGUAGES C VERSION 5.4.5)
|
project(lua LANGUAGES C VERSION 5.4.6)
|
||||||
|
|
||||||
option(LUA_SUPPORT_DL "Support dynamic loading of compiled modules" OFF)
|
option(LUA_SUPPORT_DL "Support dynamic loading of compiled modules" OFF)
|
||||||
option(LUA_BUILD_AS_CXX "Build lua as C++" OFF)
|
option(LUA_BUILD_AS_CXX "Build lua as C++" OFF)
|
||||||
@ -25,8 +25,8 @@ else()
|
|||||||
option(LUA_BUILD_COMPILER "Build luac compiler" ON)
|
option(LUA_BUILD_COMPILER "Build luac compiler" ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(lua-5.4.5)
|
add_subdirectory(lua-${CMAKE_PROJECT_VERSION})
|
||||||
|
|
||||||
if(LUA_ENABLE_TESTING)
|
if(LUA_ENABLE_TESTING)
|
||||||
add_test(NAME lua-testsuite COMMAND lua -e "_U=true" all.lua WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lua-5.4.5-tests)
|
add_test(NAME lua-testsuite COMMAND lua -e "_U=true" all.lua WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lua-${CMAKE_PROJECT_VERSION}-tests)
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Lua
|
# Lua
|
||||||
CMake based build of Lua 5.4.5
|
CMake based build of Lua 5.4.6
|
||||||
| Build as C | Build as C++ |
|
| Build as C | Build as C++ |
|
||||||
| --: | --: |
|
| --: | --: |
|
||||||
| ![Build Linux](https://github.com/walterschell/Lua/actions/workflows/build-linux.yml/badge.svg?branch=master) | ![Build Linux as C++](https://github.com/walterschell/Lua/actions/workflows/build-linux-cxx.yml/badge.svg?branch=master) |
|
| ![Build Linux](https://github.com/walterschell/Lua/actions/workflows/build-linux.yml/badge.svg?branch=master) | ![Build Linux as C++](https://github.com/walterschell/Lua/actions/workflows/build-linux-cxx.yml/badge.svg?branch=master) |
|
||||||
@ -13,6 +13,3 @@ add_subdirectory(lua)
|
|||||||
...
|
...
|
||||||
target_link_libraries(<YOURTARGET> lua_static)
|
target_link_libraries(<YOURTARGET> lua_static)
|
||||||
```
|
```
|
||||||
|
|
||||||
# Important Note:
|
|
||||||
Depending on your use case, Lua v5.4.5 is API and ABI incompatible with v5.4.1-v5.4.4. A second parameter has been added to `lua_resetthread()`. See https://marc.info/?t=168182290600001&r=1&w=2 for more details.
|
|
171
lua-5.4.6/CMakeLists.txt
Normal file
171
lua-5.4.6/CMakeLists.txt
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
set(LUA_LIB_SRCS
|
||||||
|
"src/lapi.c"
|
||||||
|
"src/lcode.c"
|
||||||
|
"src/lctype.c"
|
||||||
|
"src/ldebug.c"
|
||||||
|
"src/ldo.c"
|
||||||
|
"src/ldump.c"
|
||||||
|
"src/lfunc.c"
|
||||||
|
"src/lgc.c"
|
||||||
|
"src/llex.c"
|
||||||
|
"src/lmem.c"
|
||||||
|
"src/lobject.c"
|
||||||
|
"src/lopcodes.c"
|
||||||
|
"src/lparser.c"
|
||||||
|
"src/lstate.c"
|
||||||
|
"src/lstring.c"
|
||||||
|
"src/ltable.c"
|
||||||
|
"src/ltm.c"
|
||||||
|
"src/lundump.c"
|
||||||
|
"src/lvm.c"
|
||||||
|
"src/lzio.c"
|
||||||
|
"src/lauxlib.c"
|
||||||
|
"src/lbaselib.c"
|
||||||
|
"src/lcorolib.c"
|
||||||
|
"src/ldblib.c"
|
||||||
|
"src/liolib.c"
|
||||||
|
"src/lmathlib.c"
|
||||||
|
"src/loadlib.c"
|
||||||
|
"src/loslib.c"
|
||||||
|
"src/lstrlib.c"
|
||||||
|
"src/ltablib.c"
|
||||||
|
"src/lutf8lib.c"
|
||||||
|
"src/linit.c"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(TARGETS_TO_INSTALL lua_internal lua_include)
|
||||||
|
|
||||||
|
set(LUA_LINKED_LIBRARIES)
|
||||||
|
|
||||||
|
if(LUA_BUILD_AS_CXX)
|
||||||
|
set_source_files_properties(${LUA_LIB_SRCS} "src/lua.c" "src/luac.c" PROPERTIES LANGUAGE CXX )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(lua_internal INTERFACE)
|
||||||
|
|
||||||
|
add_library(lua_include INTERFACE)
|
||||||
|
|
||||||
|
target_include_directories(lua_include INTERFACE
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(lua_internal INTERFACE lua_include)
|
||||||
|
|
||||||
|
if(LUA_ENABLE_SHARED)
|
||||||
|
add_library(lua_shared SHARED ${LUA_LIB_SRCS})
|
||||||
|
target_link_libraries(lua_shared PRIVATE lua_internal PUBLIC lua_include)
|
||||||
|
set_target_properties(lua_shared PROPERTIES
|
||||||
|
VERSION "${PACKAGE_VERSION}"
|
||||||
|
)
|
||||||
|
if(WIN32)
|
||||||
|
target_compile_definitions(lua_shared PRIVATE LUA_BUILD_AS_DLL)
|
||||||
|
endif()
|
||||||
|
list(APPEND TARGETS_TO_INSTALL lua_shared)
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
add_library(Lua::Library ALIAS lua_shared)
|
||||||
|
elseif(NOT TOP_LEVEL)
|
||||||
|
set_target_properties(lua_shared PROPERTIES
|
||||||
|
EXCLUDE_FROM_ALL ON
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(lua_static STATIC ${LUA_LIB_SRCS})
|
||||||
|
target_link_libraries(lua_static PRIVATE lua_internal PUBLIC lua_include)
|
||||||
|
set_target_properties(lua_static PROPERTIES
|
||||||
|
VERSION "${PACKAGE_VERSION}"
|
||||||
|
)
|
||||||
|
list(APPEND TARGETS_TO_INSTALL lua_static)
|
||||||
|
if(NOT BUILD_SHARED_LIBS OR NOT LUA_ENABLE_SHARED)
|
||||||
|
add_library(Lua::Library ALIAS lua_static)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if(UNIX)
|
||||||
|
if(NOT EMSCRIPTEN)
|
||||||
|
find_library(LIBM m)
|
||||||
|
#TODO: Redo this with find_package
|
||||||
|
if(NOT LIBM)
|
||||||
|
message(FATAL_ERROR "libm not found and is required by lua")
|
||||||
|
endif()
|
||||||
|
target_compile_definitions(lua_internal INTERFACE "LUA_USE_POSIX")
|
||||||
|
target_link_libraries(lua_internal INTERFACE m)
|
||||||
|
list(APPEND LUA_LINKED_LIBRARIES m)
|
||||||
|
if(LUA_SUPPORT_DL)
|
||||||
|
find_library(LIBDL "${CMAKE_DL_LIBS}")
|
||||||
|
if(NOT LIBDL)
|
||||||
|
message(FATAL_ERROR "libdl not found and is required by lua")
|
||||||
|
endif()
|
||||||
|
target_compile_definitions(lua_internal INTERFACE "LUA_USE_DLOPEN")
|
||||||
|
target_link_libraries(lua_internal INTERFACE "${CMAKE_DL_LIBS}")
|
||||||
|
list(APPEND LUA_LINKED_LIBRARIES "${CMAKE_DL_LIBS}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_compile_options(lua_internal
|
||||||
|
INTERFACE "-Wall" "-Wextra"
|
||||||
|
)
|
||||||
|
elseif(Win32)
|
||||||
|
target_compile_options(lua_internal
|
||||||
|
INTERFACE "/Wall"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(LUA_BUILD_BINARY)
|
||||||
|
include(CheckIncludeFile)
|
||||||
|
CHECK_INCLUDE_FILE("readline/readline.h" HAVE_READLINE_READLINE_H)
|
||||||
|
|
||||||
|
add_executable(lua "src/lua.c")
|
||||||
|
# Can not use lua_shared because some symbols are not exported
|
||||||
|
target_link_libraries(lua PRIVATE lua_static)
|
||||||
|
set_target_properties(lua PROPERTIES
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
)
|
||||||
|
if (HAVE_READLINE_READLINE_H)
|
||||||
|
target_compile_definitions(lua PRIVATE "LUA_USE_READLINE")
|
||||||
|
target_link_libraries(lua PUBLIC readline)
|
||||||
|
endif()
|
||||||
|
list(APPEND TARGETS_TO_INSTALL lua)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(LUA_BUILD_COMPILER)
|
||||||
|
add_executable(luac "src/luac.c")
|
||||||
|
target_link_libraries(luac PRIVATE lua_static)
|
||||||
|
set_target_properties(luac PROPERTIES
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
)
|
||||||
|
list(APPEND TARGETS_TO_INSTALL luac)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(TARGETS ${TARGETS_TO_INSTALL}
|
||||||
|
EXPORT LuaTargets
|
||||||
|
)
|
||||||
|
|
||||||
|
install(DIRECTORY include/ TYPE INCLUDE)
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
get_target_property(LUA_EXPORT_LIBRARY Lua::Library ALIASED_TARGET)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
LuaConfigVersion.cmake
|
||||||
|
VERSION ${PACKAGE_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
install(EXPORT LuaTargets
|
||||||
|
FILE LuaTargets.cmake
|
||||||
|
DESTINATION "share/cmake/Lua"
|
||||||
|
NAMESPACE Lua::
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
LuaConfig.cmake.in
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/LuaConfig.cmake"
|
||||||
|
INSTALL_DESTINATION "share/cmake/Lua"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/LuaConfig.cmake"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/LuaConfigVersion.cmake"
|
||||||
|
DESTINATION "share/cmake/Lua"
|
||||||
|
)
|
23
lua-5.4.6/LuaConfig.cmake.in
Normal file
23
lua-5.4.6/LuaConfig.cmake.in
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/LuaTargets.cmake")
|
||||||
|
|
||||||
|
set_and_check(LUA_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/include")
|
||||||
|
add_library(Lua::Library ALIAS "Lua::@LUA_EXPORT_LIBRARY@")
|
||||||
|
get_target_property(LUA_CONFIG "Lua::@LUA_EXPORT_LIBRARY@" IMPORTED_CONFIGURATIONS)
|
||||||
|
get_target_property(LUA_LIBRARY "Lua::@LUA_EXPORT_LIBRARY@" "IMPORTED_LOCATION_${LUA_CONFIG}")
|
||||||
|
set(LUA_LIBRARIES "${LUA_LIBRARY}")
|
||||||
|
add_library(LUA_INCLUDE_LIB INTERFACE)
|
||||||
|
target_include_directories(LUA_INCLUDE_LIB INTERFACE "${LUA_INCLUDE_DIR}")
|
||||||
|
list(APPEND LUA_LIBRARIES LUA_INCLUDE_LIB)
|
||||||
|
|
||||||
|
foreach(LIB_NAME @LUA_LINKED_LIBRARIES@)
|
||||||
|
find_library(LIB_LOCATION "${LIB_NAME}")
|
||||||
|
if(NOT LIB_LOCATION)
|
||||||
|
message(FATAL_ERROR "lib${LIB_NAME} not found and is required by lua")
|
||||||
|
else()
|
||||||
|
list(APPEND LUA_LIBRARIES "${LIB_LOCATION}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
check_required_components(Lua)
|
Loading…
Reference in New Issue
Block a user