mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 20:32:47 +08:00
[lua] Fix library type and usage (#24436)
* [lua] Fix library type and usage * version * Use c code in executables * version * Apply suggestion * version * Add an extra CMakeLists.txt to avoid scope pollution of SET_SOURCE_FILES_PROPERTIES * version * Apply suggestions * version * Various nitpicks: * Use "supports" on features rather than if tests plus message FATAL_ERROR * Deduplicate ENABLE_LUA_CPP and COMPILE_AS_CPP * Add quotes. * Use file(INSTALL rather than configure_file(COPYONLY) Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
This commit is contained in:
parent
ad06b4e869
commit
32d25e6b85
28
ports/lua/CMakeLists-cpp.txt
Normal file
28
ports/lua/CMakeLists-cpp.txt
Normal file
@ -0,0 +1,28 @@
|
||||
SET(SRC_LIBLUACPP ${SRC_LIBLUA})
|
||||
ADD_LIBRARY ( lua-cpp ${SRC_LIBLUACPP} ${HDR_LIBLUACPP} )
|
||||
SET_TARGET_PROPERTIES(lua-cpp PROPERTIES OUTPUT_NAME "lua-c++")
|
||||
SET_SOURCE_FILES_PROPERTIES(${SRC_LIBLUACPP} PROPERTIES LANGUAGE CXX)
|
||||
TARGET_INCLUDE_DIRECTORIES(lua-cpp PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src> PUBLIC $<INSTALL_INTERFACE:include>)
|
||||
IF (BUILD_SHARED_LIBS AND WIN32)
|
||||
TARGET_COMPILE_DEFINITIONS (lua-cpp PUBLIC -DLUA_BUILD_AS_DLL )
|
||||
ENDIF ()
|
||||
IF (UNIX)
|
||||
IF (APPLE)
|
||||
TARGET_COMPILE_DEFINITIONS (lua-cpp PUBLIC -DLUA_USE_DLOPEN)
|
||||
ELSE ()
|
||||
FIND_LIBRARY (LIB_DLOPEN NAMES dl)
|
||||
IF (LIB_DLOPEN)
|
||||
TARGET_COMPILE_DEFINITIONS (lua-cpp PUBLIC -DLUA_USE_DLOPEN)
|
||||
TARGET_LINK_LIBRARIES (lua-cpp ${LIB_DLOPEN})
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
INSTALL ( TARGETS lua-cpp
|
||||
EXPORT unofficial-lua-cpp-config
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
INSTALL(EXPORT unofficial-lua-cpp-config DESTINATION share/unofficial-lua-cpp)
|
@ -10,32 +10,16 @@
|
||||
PROJECT ( lua )
|
||||
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
||||
|
||||
SET (HDR_LIBLUA
|
||||
src/lapi.h src/lauxlib.h src/lcode.h src/lctype.h src/ldebug.h src/ldo.h src/lfunc.h
|
||||
src/lgc.h src/llex.h src/llimits.h src/lmem.h src/lobject.h src/lopcodes.h src/lparser.h
|
||||
src/lstate.h src/lstring.h src/ltable.h src/ltm.h src/lua.h src/luaconf.h src/lualib.h
|
||||
src/lundump.h src/lvm.h src/lzio.h
|
||||
)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.18)
|
||||
|
||||
# Build Libraries
|
||||
SET (SRC_LIBLUA
|
||||
src/lapi.c src/lauxlib.c src/lbaselib.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
|
||||
)
|
||||
FILE(GLOB HDR_LIBLUA "${CMAKE_SOURCE_DIR}/src/*.h")
|
||||
# For luac.c
|
||||
LIST(REMOVE_ITEM HDR_LIBLUA "${CMAKE_SOURCE_DIR}/src/lopnames.h")
|
||||
|
||||
IF (COMPILE_AS_CPP)
|
||||
SET_SOURCE_FILES_PROPERTIES(${SRC_LIBLUA} src/lua.c src/luac.c PROPERTIES LANGUAGE CXX)
|
||||
ELSE ()
|
||||
SET (CMAKE_C_STANDARD 99)
|
||||
ENDIF ()
|
||||
|
||||
# append headers to sources to make them show up in MSVC GUI
|
||||
LIST(APPEND SRC_LIBLUA ${HDR_LIBLUA})
|
||||
FILE(GLOB SRC_LIBLUA "${CMAKE_SOURCE_DIR}/src/*.c")
|
||||
# Executables luac and luai
|
||||
LIST(REMOVE_ITEM SRC_LIBLUA "${CMAKE_SOURCE_DIR}/src/luac.c" "${CMAKE_SOURCE_DIR}/src/lua.c")
|
||||
|
||||
IF (WIN32)
|
||||
# remove warnings
|
||||
@ -50,9 +34,13 @@ IF (UNIX)
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
#DLL
|
||||
ADD_LIBRARY ( lua ${SRC_LIBLUA} )
|
||||
# C library
|
||||
SET (CMAKE_C_STANDARD 99)
|
||||
SET(SRC_LIBLUAC ${SRC_LIBLUA})
|
||||
ADD_LIBRARY ( lua ${SRC_LIBLUAC} ${HDR_LIBLUA} )
|
||||
TARGET_INCLUDE_DIRECTORIES(lua PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src> PUBLIC $<INSTALL_INTERFACE:include>)
|
||||
SET_PROPERTY (TARGET lua PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
SET_SOURCE_FILES_PROPERTIES(${SRC_LIBLUAC} PROPERTIES LANGUAGE C)
|
||||
|
||||
IF (BUILD_SHARED_LIBS AND WIN32)
|
||||
TARGET_COMPILE_DEFINITIONS (lua PUBLIC -DLUA_BUILD_AS_DLL )
|
||||
@ -72,45 +60,25 @@ ENDIF ()
|
||||
|
||||
INSTALL ( TARGETS lua
|
||||
EXPORT unofficial-lua-config
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
install(EXPORT unofficial-lua-config DESTINATION share/unofficial-lua)
|
||||
|
||||
# CXX library
|
||||
IF (COMPILE_AS_CPP)
|
||||
ADD_LIBRARY ( lua-cpp ${SRC_LIBLUA} )
|
||||
SET_TARGET_PROPERTIES(lua-cpp PROPERTIES OUTPUT_NAME "lua-c++")
|
||||
IF (BUILD_SHARED_LIBS AND WIN32)
|
||||
TARGET_COMPILE_DEFINITIONS (lua-cpp PUBLIC -DLUA_BUILD_AS_DLL )
|
||||
ENDIF ()
|
||||
IF (UNIX)
|
||||
IF (APPLE)
|
||||
TARGET_COMPILE_DEFINITIONS (lua-cpp PUBLIC -DLUA_USE_DLOPEN)
|
||||
ELSE ()
|
||||
FIND_LIBRARY (LIB_DLOPEN NAMES dl)
|
||||
IF (LIB_DLOPEN)
|
||||
TARGET_COMPILE_DEFINITIONS (lua-cpp PUBLIC -DLUA_USE_DLOPEN)
|
||||
TARGET_LINK_LIBRARIES (lua-cpp ${LIB_DLOPEN})
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
INSTALL ( TARGETS lua-cpp
|
||||
EXPORT unofficial-lua-cpp-config
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
|
||||
)
|
||||
|
||||
install(EXPORT unofficial-lua-cpp-config DESTINATION share/unofficial-lua-cpp)
|
||||
ADD_SUBDIRECTORY(cpp)
|
||||
ENDIF()
|
||||
|
||||
IF (INSTALL_TOOLS)
|
||||
ADD_EXECUTABLE ( luac src/luac.c ${SRC_LIBLUA} ) # compiler uses non-exported APIs, so must include sources directly.
|
||||
ADD_EXECUTABLE ( luai src/lua.c ) # interpreter
|
||||
TARGET_LINK_LIBRARIES ( luai lua )
|
||||
# compiler uses non-exported APIs, so must include sources directly.
|
||||
ADD_EXECUTABLE ( luac ${CMAKE_SOURCE_DIR}/src/luac.c ${SRC_LIBLUA} ${CMAKE_SOURCE_DIR}/src/lopnames.h )
|
||||
ADD_EXECUTABLE ( luai ${CMAKE_SOURCE_DIR}/src/lua.c ) # interpreter
|
||||
|
||||
TARGET_INCLUDE_DIRECTORIES(luac PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src)
|
||||
TARGET_LINK_LIBRARIES ( luai PRIVATE lua )
|
||||
SET_TARGET_PROPERTIES ( luai PROPERTIES OUTPUT_NAME lua PDB_NAME luai )
|
||||
IF (UNIX)
|
||||
IF (CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
|
||||
@ -127,7 +95,7 @@ IF (INSTALL_TOOLS)
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
INSTALL ( TARGETS luai luac RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/tools/lua )
|
||||
INSTALL ( TARGETS luai luac RUNTIME DESTINATION tools/lua )
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT SKIP_INSTALL_HEADERS)
|
||||
|
@ -5,31 +5,20 @@ vcpkg_download_distfile(ARCHIVE
|
||||
)
|
||||
vcpkg_extract_source_archive_ex(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
ARCHIVE ${ARCHIVE}
|
||||
ARCHIVE "${ARCHIVE}"
|
||||
PATCHES
|
||||
vs2015-impl-c99.patch
|
||||
fix-ios-system.patch
|
||||
)
|
||||
|
||||
file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
|
||||
|
||||
# Used in cmake wrapper
|
||||
set(ENABLE_LUA_CPP 0)
|
||||
if ("cpp" IN_LIST FEATURES)
|
||||
if (VCPKG_TARGET_IS_UWP)
|
||||
message(FATAL_ERROR "Feature cpp does not support uwp.")
|
||||
endif()
|
||||
set(ENABLE_LUA_CPP 1)
|
||||
endif()
|
||||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/CMakeLists-cpp.txt" DESTINATION "${SOURCE_PATH}/cpp" RENAME "CMakeLists.txt")
|
||||
|
||||
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
|
||||
FEATURES
|
||||
cpp COMPILE_AS_CPP
|
||||
cpp COMPILE_AS_CPP # Also used in cmake wrapper
|
||||
tools INSTALL_TOOLS
|
||||
)
|
||||
if(VCPKG_TARGET_IS_IOS AND "tools" IN_LIST FEATURES)
|
||||
message(FATAL_ERROR "lua[tools] is not supported for iOS platform build")
|
||||
endif()
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
@ -62,5 +51,4 @@ endif()
|
||||
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
|
||||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
|
||||
|
||||
# Handle copyright
|
||||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/COPYRIGHT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
|
||||
|
@ -7,7 +7,7 @@ endforeach()
|
||||
|
||||
_find_package(unofficial-lua CONFIG ${REQUIRES})
|
||||
|
||||
if (@ENABLE_LUA_CPP@)
|
||||
if (@COMPILE_AS_CPP@)
|
||||
_find_package(unofficial-lua-cpp CONFIG ${REQUIRES})
|
||||
endif()
|
||||
|
||||
|
@ -1,9 +1,10 @@
|
||||
{
|
||||
"name": "lua",
|
||||
"version": "5.4.4",
|
||||
"port-version": 1,
|
||||
"port-version": 2,
|
||||
"description": "A powerful, fast, lightweight, embeddable scripting language",
|
||||
"homepage": "https://www.lua.org",
|
||||
"license": null,
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
@ -16,10 +17,12 @@
|
||||
],
|
||||
"features": {
|
||||
"cpp": {
|
||||
"description": "Builds Lua for C++ linkage"
|
||||
"description": "Builds Lua for C++ linkage",
|
||||
"supports": "!uwp"
|
||||
},
|
||||
"tools": {
|
||||
"description": "Builds Lua compiler and interpreter"
|
||||
"description": "Builds Lua compiler and interpreter",
|
||||
"supports": "!ios"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4302,7 +4302,7 @@
|
||||
},
|
||||
"lua": {
|
||||
"baseline": "5.4.4",
|
||||
"port-version": 1
|
||||
"port-version": 2
|
||||
},
|
||||
"luabridge": {
|
||||
"baseline": "2.6",
|
||||
|
@ -1,5 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "1443185b76c2f6e0e74c425ed0b3176e98a5fb01",
|
||||
"version": "5.4.4",
|
||||
"port-version": 2
|
||||
},
|
||||
{
|
||||
"git-tree": "26701e6e610ff6eaee198ca1aaa0b9125e4b2d6f",
|
||||
"version": "5.4.4",
|
||||
|
Loading…
Reference in New Issue
Block a user