mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
186 lines
7.9 KiB
CMake
186 lines
7.9 KiB
CMake
# # # # sol2
|
|
# The MIT License (MIT)
|
|
#
|
|
# Copyright (c) 2013-2017 Rapptz, ThePhD, and contributors
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
# this software and associated documentation files (the "Software"), to deal in
|
|
# the Software without restriction, including without limitation the rights to
|
|
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
# the Software, and to permit persons to whom the Software is furnished to do so,
|
|
# subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included in all
|
|
# copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
# import necessary standard modules
|
|
include(ExternalProject)
|
|
|
|
# Latest iterations for specific sub-versions of LuaJIT
|
|
set(LUA_JIT_2.0_LATEST_VERSION 2.0.5)
|
|
set(LUA_JIT_2.1_LATEST_VERSION 2.1.0-beta3)
|
|
|
|
# MD5 hashes taken off of LuaJIT's website
|
|
# must be updated whenever a new version appears
|
|
set(LUA_JIT_MD5_2.1.0-beta3 eae40bc29d06ee5e3078f9444fcea39b)
|
|
set(LUA_JIT_MD5_2.1.0-beta3 58d0480e1af0811e7ecee45498d62e2d)
|
|
set(LUA_JIT_MD5_2.1.0-beta2 fa14598d0d775a7ffefb138a606e0d7b)
|
|
set(LUA_JIT_MD5_2.1.0-beta2 b5d943c0174ca217736e2ddc2d9721c3)
|
|
set(LUA_JIT_MD5_2.1.0-beta1 5a5bf71666e77cf6e7a1ae851127b834)
|
|
set(LUA_JIT_MD5_2.1.0-beta1 4b5c2c9aef0e7c0b622b09e7c84d566b)
|
|
set(LUA_JIT_MD5_2.0.5 48353202cbcacab84ee41a5a70ea0a2c)
|
|
set(LUA_JIT_MD5_2.0.5 f7cf52a049d74aee4e624bdc1160b80d)
|
|
set(LUA_JIT_MD5_2.0.4 dd9c38307f2223a504cbfb96e477eca0)
|
|
set(LUA_JIT_MD5_2.0.4 ed1f0caf3d390171f423f6f1b5c57aac)
|
|
set(LUA_JIT_MD5_2.0.3 f14e9104be513913810cd59c8c658dc0)
|
|
set(LUA_JIT_MD5_2.0.3 6c0f6958d5e1f67734fb1ff514ec4c84)
|
|
set(LUA_JIT_MD5_2.0.2 112dfb82548b03377fbefbba2e0e3a5b)
|
|
set(LUA_JIT_MD5_2.0.2 a57c7d1b8eaf46559303dcfd56404045)
|
|
set(LUA_JIT_MD5_2.0.1 85e406e8829602988eb1233a82e29f1f)
|
|
set(LUA_JIT_MD5_2.0.1 cf4aee0e40b220054ee3cffbe0cd6ed5)
|
|
set(LUA_JIT_MD5_2.0.0 97a2b87cc0490784f54b64cfb3b8f5ad)
|
|
set(LUA_JIT_MD5_2.0.0 467f4f531f7e08ee252f5030ecada7ed)
|
|
set(LUA_JIT_MD5_2.0.0-beta11 824aa2684a11e3cc3abe87350a7b6139)
|
|
set(LUA_JIT_MD5_2.0.0-beta11 8629401437048e477c94bd791b0a823a)
|
|
set(LUA_JIT_MD5_2.0.0-beta10 ed66689b96f7ad7bfeffe0b4ff2d63d4)
|
|
set(LUA_JIT_MD5_2.0.0-beta10 f6bbd472726b761b29438c4a06b5ab3c)
|
|
set(LUA_JIT_MD5_2.0.0-beta9 e7e03e67e2550817358bc28b44270c6d)
|
|
set(LUA_JIT_MD5_2.0.0-beta9 3f9ca0309f26e789c6c3246c83696f84)
|
|
set(LUA_JIT_MD5_2.0.0-beta8 f0748a73ae268d49b1d01f56c4fe3e61)
|
|
set(LUA_JIT_MD5_2.0.0-beta8 fb096a90c9e799c8922f32095ef3d93c)
|
|
set(LUA_JIT_MD5_2.0.0-beta7 b845dec15dd9eba2fd17d865601a52e5)
|
|
set(LUA_JIT_MD5_2.0.0-beta7 e10fc2b19de52d8770cdf24f1791dd77)
|
|
set(LUA_JIT_MD5_2.0.0-beta6 bfcbe2a11162cfa84d5a1693b442c8bf)
|
|
set(LUA_JIT_MD5_2.0.0-beta6 f64945c5ecaf3ea71a829fdbb5cb196c)
|
|
set(LUA_JIT_MD5_2.0.0-beta5 7e0dfa03a140148149a1021d4ffd5c57)
|
|
set(LUA_JIT_MD5_2.0.0-beta5 be8087fcb576c30ffbb6368ebc284498)
|
|
set(LUA_JIT_MD5_2.0.0-beta4 5c5a9305b3e06765e1dae138e1a95c3a)
|
|
set(LUA_JIT_MD5_2.0.0-beta4 d0b241be6207fa7d97b6afc41368e05f)
|
|
set(LUA_JIT_MD5_2.0.0-beta3 313b6f164e93e1bbac7bf87abb58d4a1)
|
|
set(LUA_JIT_MD5_2.0.0-beta3 bea9c7bcd5084f98830e31956f276ff6)
|
|
set(LUA_JIT_MD5_2.0.0-beta2 2ebcc38fa1d9756dc2e341f191701120)
|
|
set(LUA_JIT_MD5_2.0.0-beta2 94086f99f647d46a8360adeb11851d66)
|
|
set(LUA_JIT_MD5_2.0.0-beta1 9ed7646d03580a1cec4abeb74ca44843)
|
|
set(LUA_JIT_MD5_2.0.0-beta1 19d5bac616fa739343c7158d9d99a3f3)
|
|
set(LUA_JIT_MD5_1.1.8 ad0e319483fa235e3979537a748631e9)
|
|
set(LUA_JIT_MD5_1.1.8 92870c80f504c34c9b7547cd6c5562d0)
|
|
set(LUA_JIT_MD5_1.1.7 3aed0795f7c8725d3613269cd56f8e5a)
|
|
set(LUA_JIT_MD5_1.1.7 40a8dbc214306bb4b9849fcf026c4ee0)
|
|
set(LUA_JIT_MD5_1.1.6 1a1320e09d0cd5b793014556fb7d64c9)
|
|
set(LUA_JIT_MD5_1.1.6 350d7b9230637056fbd6158b95e8fa11)
|
|
set(LUA_JIT_MD5_1.1.5 b99d244ba4fc1979946ae1025368fc5c)
|
|
set(LUA_JIT_MD5_1.1.5 d3ffbae3bfcd5914b02dc00b1118a59d)
|
|
set(LUA_JIT_MD5_1.1.4 9fe29cfb8126bc9c4302701c06965f1c)
|
|
set(LUA_JIT_MD5_1.1.4 30d318e3287000ecf4c93b29e8783183)
|
|
set(LUA_JIT_MD5_1.1.3 f5db1a147ed3d34677ad1ef310c56da7)
|
|
set(LUA_JIT_MD5_1.1.3 5949e7bce9d97c37c282e1cbe85aa378)
|
|
set(LUA_JIT_MD5_1.1.2 4ae25ce7e3f301d1fcf0b713016edab0)
|
|
set(LUA_JIT_MD5_1.1.0 16d880a98a1ff6608ac1039c802233db)
|
|
set(LUA_JIT_MD5_1.0.3 d0a63d5394cca549889bd820a05b32d2)
|
|
|
|
# Clean up some variables
|
|
string(TOLOWER ${LUA_VERSION} LUA_JIT_NORMALIZED_LUA_VERSION)
|
|
if (LUA_JIT_NORMALIZED_LUA_VERSION MATCHES "([0-9]+\\.[0-9]+\\.[0-9]+(-[A-Za-z0-9_-]+)?)")
|
|
# 3-digit with optional beta1/beta2/beta3 (or whatever): probably okay?
|
|
set(LUA_JIT_VERSION ${CMAKE_MATCH_1})
|
|
elseif (LUA_JIT_NORMALIZED_LUA_VERSION MATCHES "([0-9]+\\.[0-9]+)")
|
|
# extend version number with prefix
|
|
if (${CMAKE_MATCH_1} EQUAL 2)
|
|
if (${CMAKE_MATCH_2} EQUAL 0)
|
|
set(LUA_JIT_VERSION ${LUA_JIT_2.0_LATEST_VERSION})
|
|
elseif (${CMAKE_MATCH_2} EQUAL 1)
|
|
set(LUA_JIT_VERSION ${LUA_JIT_2.1_LATEST_VERSION})
|
|
endif()
|
|
endif()
|
|
if (NOT LUA_JIT_VERSION)
|
|
# Just pick a default version and roll with it
|
|
set(LUA_JIT_VERSION ${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.0)
|
|
endif()
|
|
else()
|
|
message(FATAL "Cannot deduce LuaJIT version from ${LUA_VERSION}")
|
|
endif()
|
|
|
|
message(STATUS "Selecting LuaJIT ${LUA_JIT_VERSION}")
|
|
|
|
# Get hashes for the build
|
|
# LuaJIT unfortunately does not give us SHA1 hashes as well
|
|
# set(LUA_JIT_SHA1 ${LUA_JIT_SHA1_${LUA_JIT_VERSION}})
|
|
set(LUA_JIT_MD5 ${LUA_JIT_MD5_${LUA_JIT_VERSION}})
|
|
|
|
if (LUA_JIT_MD5)
|
|
set(LUA_JIT_DOWNLOAD_MD5_COMMAND URL_MD5 ${LUA_JIT_MD5})
|
|
else ()
|
|
set(LUA_JIT_DOWNLOAD_MD5_COMMAND "")
|
|
endif()
|
|
if (LUA_JIT_SHA1)
|
|
set(LUA_JIT_DOWNLOAD_SHA1_COMMAND URL_HASH SHA1=${LUA_JIT_SHA1})
|
|
else ()
|
|
set(LUA_JIT_DOWNLOAD_SHA1_COMMAND "")
|
|
endif()
|
|
|
|
# # # Do the build
|
|
if (MSVC)
|
|
# Visual C++ is predicated off running msvcbuild.bat
|
|
# which requires a Visual Studio Command Prompt
|
|
|
|
else ()
|
|
# we can simply reuse the makefile here
|
|
# so define it as an external project and then just have the proper
|
|
# build/install/test commands
|
|
|
|
set(LUA_JIT_BUILD_COMMAND make)
|
|
set(LUA_JIT_INSTALL_COMMAND make install PREFIX=${LUA_LIB_DIR})
|
|
set(LUA_JIT_TEST_COMMAND make test)
|
|
set(LUA_JIT_LIB_FILE "${LUA_LIB_DIR}/${LUA_LIBRARY}")
|
|
set(LUA_JIT_DLL_FILE "${LUA_BIN_DIR}/${LUA_DYNAMIC_LIBRARY}")
|
|
if (BUILD_LUA_AS_DLL)
|
|
set(LUA_JIT_BYPRODUCTS ${LUA_JIT_LIB_FILE} ${LUA_JIT_DLL_FILE})
|
|
else()
|
|
set(LUA_JIT_BYPRODUCTS ${LUA_JIT_LIB_FILE})
|
|
endif()
|
|
|
|
ExternalProject_Add(LUA_JIT
|
|
BUILD_IN_SOURCE TRUE
|
|
BUILD_ALWAYS TRUE
|
|
# LuaJIT does not offer a TLS/SSL port
|
|
# TLS_VERIFY TRUE
|
|
PREFIX ${LUA_BUILD_TOPLEVEL}
|
|
SOURCE_DIR ${LUA_BUILD_TOPLEVEL}
|
|
DOWNLOAD_DIR ${LUA_BUILD_TOPLEVEL}
|
|
TMP_DIR "${LUA_BUILD_TOPLEVEL}-tmp"
|
|
STAMP_DIR "${LUA_BUILD_TOPLEVEL}-stamp"
|
|
INSTALL_DIR "${LUA_BUILD_INSTALL_DIR}"
|
|
URL http://luajit.org/download/LuaJIT-${LUA_JIT_VERSION}.tar.gz
|
|
${LUA_JIT_DOWNLOAD_MD5_COMMAND}
|
|
${LUA_JIT_DOWNLOAD_SHA1_COMMAND}
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ${LUA_JIT_BUILD_COMMAND}
|
|
INSTALL_COMMAND ${LUA_JIT_INSTALL_COMMAND}
|
|
TEST_COMMAND ${LUA_JIT_TEST_COMMAND}
|
|
BUILD_BYPRODUCTS ${LUA_JIT_BYPRODUCTS})
|
|
|
|
# TODO: SHARED not fully supported yet, stock makefiles do not build
|
|
# dynamic libs on linux out of the box...
|
|
add_library(lualib_${LUA_JIT_VERSION} ${LUA_BUILD_LIBRARY_TYPE} IMPORTED)
|
|
set_target_properties(lualib_${LUA_JIT_VERSION}
|
|
PROPERTIES
|
|
LANGUAGE C
|
|
LINKER_LANGUAGE C
|
|
INCLUDE_DIRECTORIES ${LUA_INCLUDE_DIR}
|
|
IMPORTED_LOCATION ${LUA_JIT_LIB_FILE}
|
|
IMPORTED_SONAME ${LUA_JIT_DLL_FILE})
|
|
|
|
# make sure the library we export really does depend on Lua
|
|
add_dependencies(lualib_${LUA_JIT_VERSION} LUA_JIT)
|
|
|
|
# set externally-visible target indicator
|
|
set(LUA_LIBRARIES lualib_${LUA_JIT_VERSION})
|
|
endif()
|