[lua] Upgrade to 5.3.5 and add support for Linux and macOS (#6515)

* upgrade lua to 5.3.5

* support POSIX systems

* bump version in CONTROL file

* -lm

* fix copyright check

* don't use c89 on windows

vs2015 already supports c99

* correct vcpkg_extract_source_archive_ex usage and platform detection

* fix FreeBSD
This commit is contained in:
TitanSnow 2019-05-19 05:33:05 +08:00 committed by Victor Romero
parent 1bb3ca1839
commit a462daf251
4 changed files with 68 additions and 16 deletions

View File

@ -9,9 +9,6 @@
PROJECT ( lua )
IF( NOT WIN32 )
message( FATAL_ERROR "Written for window only" )
ENDIF()
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
@ -33,21 +30,45 @@ src/ltable.c src/ltablib.c src/ltm.c src/lundump.c src/lutf8lib.c src/lvm.c src/
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})
# remove warnings
ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS )
IF (WIN32)
# remove warnings
ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS )
ENDIF ()
IF (UNIX)
ADD_DEFINITIONS (-DLUA_USE_POSIX)
FIND_LIBRARY (LIB_MATH NAMES m)
IF (LIB_MATH)
LINK_LIBRARIES (${LIB_MATH})
ENDIF ()
ENDIF ()
#DLL
ADD_LIBRARY ( lua ${SRC_LIBLUA} )
IF (BUILD_SHARED_LIBS)
IF (BUILD_SHARED_LIBS AND WIN32)
TARGET_COMPILE_DEFINITIONS (lua PUBLIC -DLUA_BUILD_AS_DLL )
ENDIF ()
IF (UNIX)
IF (APPLE)
TARGET_COMPILE_DEFINITIONS (lua PUBLIC -DLUA_USE_DLOPEN)
ELSE ()
FIND_LIBRARY (LIB_DLOPEN NAMES dl)
IF (LIB_DLOPEN)
TARGET_COMPILE_DEFINITIONS (lua PUBLIC -DLUA_USE_DLOPEN)
TARGET_LINK_LIBRARIES (lua ${LIB_DLOPEN})
ENDIF ()
ENDIF ()
ENDIF ()
INSTALL ( TARGETS lua
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
@ -59,6 +80,21 @@ IF (NOT DEFINED SKIP_INSTALL_TOOLS)
ADD_EXECUTABLE ( luai src/lua.c ) # interpreter
TARGET_LINK_LIBRARIES ( luai lua )
SET_TARGET_PROPERTIES ( luai PROPERTIES OUTPUT_NAME lua PDB_NAME luai )
IF (UNIX)
IF (CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
SET (_LIB_READLINE_NAME edit)
ELSE ()
SET (_LIB_READLINE_NAME readline)
ENDIF ()
FIND_LIBRARY (LIB_READLINE NAMES ${_LIB_READLINE_NAME})
IF (LIB_READLINE)
TARGET_COMPILE_DEFINITIONS (luai PUBLIC -DLUA_USE_READLINE)
TARGET_LINK_LIBRARIES(luai ${LIB_READLINE})
IF (_LIB_READLINE_NAME STREQUAL edit)
TARGET_INCLUDE_DIRECTORIES (luai PUBLIC /usr/include/edit)
ENDIF ()
ENDIF ()
ENDIF ()
INSTALL ( TARGETS luai luac RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/tools/lua )
ENDIF ()

View File

@ -1,3 +1,3 @@
Source: lua
Version: 5.3.4-4
Version: 5.3.5-1
Description: a powerful, fast, lightweight, embeddable scripting language

View File

@ -7,13 +7,16 @@
#
include(vcpkg_common_functions)
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/lua-5.3.4)
vcpkg_download_distfile(ARCHIVE
URLS "http://www.lua.org/ftp/lua-5.3.4.tar.gz"
FILENAME "lua-5.3.4.tar.gz"
SHA512 739e31f82e6a60fa99910c2005e991b3a1e21339af52847f653cb190b30842054d189ca116ffcfdf9b36e07888c9ce5642b1dd2988cc7eff9f8789f9a2e34997
URLS "https://www.lua.org/ftp/lua-5.3.5.tar.gz"
FILENAME "lua-5.3.5.tar.gz"
SHA512 4f9516acc4659dfd0a9e911bfa00c0788f0ad9348e5724fe8fb17aac59e9c0060a64378f82be86f8534e49c6c013e7488ad17321bafcc787831d3d67406bd0f4
)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
PATCHES vs2015-impl-c99.patch
)
vcpkg_extract_source_archive(${ARCHIVE})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
@ -30,13 +33,15 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
file(READ ${CURRENT_PACKAGES_DIR}/include/luaconf.h LUA_CONF_H)
string(REPLACE "defined(LUA_BUILD_AS_DLL)" "1" LUA_CONF_H "${LUA_CONF_H}")
file(WRITE ${CURRENT_PACKAGES_DIR}/include/luaconf.h "${LUA_CONF_H}")
if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore)
file(READ ${CURRENT_PACKAGES_DIR}/include/luaconf.h LUA_CONF_H)
string(REPLACE "defined(LUA_BUILD_AS_DLL)" "1" LUA_CONF_H "${LUA_CONF_H}")
file(WRITE ${CURRENT_PACKAGES_DIR}/include/luaconf.h "${LUA_CONF_H}")
endif()
endif()
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/lua)
# Handle copyright
file(COPY ${CMAKE_CURRENT_LIST_DIR}/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/lua)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/lua/copyright)
vcpkg_copy_pdbs()

View File

@ -0,0 +1,11 @@
--- a/src/luaconf.h
+++ b/src/luaconf.h
@@ -54,7 +54,7 @@
#if defined(LUA_USE_WINDOWS)
#define LUA_DL_DLL /* enable support for DLL */
-#define LUA_USE_C89 /* broadly, Windows is C89 */
+//#define LUA_USE_C89 /* broadly, Windows is C89 */
#endif