diff options
author | Ferdinand Thiessen <rpm@fthiessen.de> | 2015-12-03 21:18:39 +0100 |
---|---|---|
committer | est31 <MTest31@outlook.com> | 2015-12-05 23:31:09 +0100 |
commit | 70ece71ee4e8f8bff5cbc572710c0fa6fc3b355f (patch) | |
tree | 3ae8a0950287f694fe9c61a673b418a04b435791 | |
parent | 5643b9b9ed3ec39f90e3a7c9bf09bc255e0bcef3 (diff) | |
download | minetest-70ece71ee4e8f8bff5cbc572710c0fa6fc3b355f.tar.gz minetest-70ece71ee4e8f8bff5cbc572710c0fa6fc3b355f.tar.bz2 minetest-70ece71ee4e8f8bff5cbc572710c0fa6fc3b355f.zip |
Improve LuaJIT detection
On openSUSE luajit is not detected correctly.
This is because openSUSE is using a lua version suffix, like other Linux distributions do it also.
So the include directory is:
include/luajit-5_1-2.0
-rw-r--r-- | cmake/Modules/FindLua.cmake | 25 | ||||
-rw-r--r-- | cmake/Modules/FindLuaJIT.cmake | 50 | ||||
-rw-r--r-- | src/CMakeLists.txt | 19 |
3 files changed, 67 insertions, 27 deletions
diff --git a/cmake/Modules/FindLua.cmake b/cmake/Modules/FindLua.cmake deleted file mode 100644 index 479dfcf41..000000000 --- a/cmake/Modules/FindLua.cmake +++ /dev/null @@ -1,25 +0,0 @@ - -option(ENABLE_LUAJIT "Enable LuaJIT support" TRUE) -mark_as_advanced(LUA_LIBRARY LUA_INCLUDE_DIR) -set(USE_LUAJIT FALSE) - -if(ENABLE_LUAJIT) - find_library(LUA_LIBRARY luajit - NAMES luajit-5.1) - find_path(LUA_INCLUDE_DIR luajit.h - NAMES luajit.h - PATH_SUFFIXES luajit-2.0) - if(LUA_LIBRARY AND LUA_INCLUDE_DIR) - set(USE_LUAJIT TRUE) - endif() -else() - message (STATUS "LuaJIT detection disabled! (ENABLE_LUAJIT=0)") -endif() - -if(NOT USE_LUAJIT) - message(STATUS "LuaJIT not found, using bundled Lua.") - set(LUA_LIBRARY "lua") - set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src") - add_subdirectory(lua) -endif() - diff --git a/cmake/Modules/FindLuaJIT.cmake b/cmake/Modules/FindLuaJIT.cmake new file mode 100644 index 000000000..e4335d834 --- /dev/null +++ b/cmake/Modules/FindLuaJIT.cmake @@ -0,0 +1,50 @@ +# Locate LuaJIT library +# This module defines +# LUAJIT_FOUND, if false, do not try to link to Lua +# LUA_INCLUDE_DIR, where to find lua.h +# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8) +# +# This module is similar to FindLua51.cmake except that it finds LuaJit instead. + +FIND_PATH(LUA_INCLUDE_DIR luajit.h + HINTS + $ENV{LUA_DIR} + PATH_SUFFIXES include/luajit-2.0 include/luajit-5_1-2.0 include + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt +) + +FIND_LIBRARY(LUA_LIBRARY + NAMES luajit-5.1 + HINTS + $ENV{LUA_DIR} + PATH_SUFFIXES lib64 lib + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw + /opt/local + /opt/csw + /opt +) + +IF(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/luajit.h") + FILE(STRINGS "${LUA_INCLUDE_DIR}/luajit.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT .+\"") + + STRING(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}") + UNSET(lua_version_str) +ENDIF() + +INCLUDE(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if +# all listed variables are TRUE +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJit + REQUIRED_VARS LUA_LIBRARY LUA_INCLUDE_DIR + VERSION_VAR LUA_VERSION_STRING) + +MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dfbd2f5d8..6256a8504 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -155,8 +155,23 @@ if(ENABLE_FREETYPE) endif() endif(ENABLE_FREETYPE) - -find_package(Lua REQUIRED) +# LuaJIT +option(ENABLE_LUAJIT "Enable LuaJIT support" TRUE) +set(USE_LUAJIT FALSE) +if(ENABLE_LUAJIT) + find_package(LuaJIT) + if(LUAJIT_FOUND) + set(USE_LUAJIT TRUE) + endif(LUAJIT_FOUND) +else() + message (STATUS "LuaJIT detection disabled! (ENABLE_LUAJIT=0)") +endif() +if(NOT USE_LUAJIT) + message(STATUS "LuaJIT not found, using bundled Lua.") + set(LUA_LIBRARY "lua") + set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src") + add_subdirectory(lua) +endif() find_package(GMP REQUIRED) |