From 7594c740063c71b533cd2affd9b85213e2614e6d Mon Sep 17 00:00:00 2001 From: Ronan Collobert Date: Mon, 6 Oct 2014 18:22:04 -0700 Subject: cmake: workaround luarocks limitation (concerning lua library in use) --- cmake/FindLua.cmake | 83 ++++++++++++++++++++++++++++++++++++++++------ rocks/qtlua-scm-1.rockspec | 2 +- 2 files changed, 73 insertions(+), 12 deletions(-) diff --git a/cmake/FindLua.cmake b/cmake/FindLua.cmake index 0d2aa4e..875a4ec 100644 --- a/cmake/FindLua.cmake +++ b/cmake/FindLua.cmake @@ -10,23 +10,84 @@ INCLUDE(CheckLibraryExists) -SET(LUA_EXECUTABLE "${LUA}") +IF(LUA) # if we are using luarocks + MESSAGE(STATUS "Lua: using information from luarocks") + SET(LUA_EXECUTABLE "${LUA}") + SET(LUA_INCLUDE_DIR "${LUA_INCDIR}") + SET(LUA_PACKAGE_PATH "${LUADIR}") + SET(LUA_PACKAGE_CPATH "${LIBDIR}") -FIND_LIBRARY(LUA_LIBRARIES - NAMES lua liblua luajit libluajit lua-5.1 luajit-5.1 liblua-5.1 libluajit-5.1 - PATHS ${LUA_LIBDIR} - ${LUA_BINDIR} - NO_DEFAULT_PATH) + IF(LUALIB) # present on windows platforms only + SET(LUA_LIBRARIES "${LUALIB}") + ELSE() # too bad, luarocks does not provide it (pfff...) + GET_FILENAME_COMPONENT(LUA_EXEC_NAME ${LUA_EXECUTABLE} NAME_WE) + IF(LUA_EXEC_NAME STREQUAL "luajit") + FIND_LIBRARY(LUA_LIBRARIES + NAMES luajit libluajit + PATHS ${LUA_LIBDIR} + NO_DEFAULT_PATH) + ELSEIF(LUA_EXEC_NAME STREQUAL "lua") + FIND_LIBRARY(LUA_LIBRARIES + NAMES lua liblua + PATHS ${LUA_LIBDIR} + NO_DEFAULT_PATH) + ELSE() + MESSAGE(FATAL_ERROR "You seem to have a non-standard lua installation -- are you using luajit-rocks?") + ENDIF() + MESSAGE(STATUS "Lua library guess (no info from luarocks): ${LUA_LIBRARIES}") + ENDIF() + +ELSE() # standalone -- not using luarocks + + IF(WITH_LUA51) + FIND_PROGRAM(LUA_EXECUTABLE + NAMES + lua51 + lua5.1 + lua + PATH) + ELSE() + FIND_PROGRAM(LUA_EXECUTABLE + NAMES + luajit + PATH) + ENDIF() + MESSAGE(STATUS "Lua executable: ${LUA_EXECUTABLE}") + + IF(LUA_EXECUTABLE) + GET_FILENAME_COMPONENT(LUA_DIR ${LUA_EXECUTABLE} PATH) + ENDIF(LUA_EXECUTABLE) + + IF(WITH_LUA51) + FIND_LIBRARY(LUA_LIBRARIES + NAMES lua liblua lua-5.1 liblua-5.1 libluajit-5.1 + PATHS ${LUA_DIR}/../lib + ${LUA_DIR} + NO_DEFAULT_PATH) + ELSE() + FIND_LIBRARY(LUA_LIBRARIES + NAMES luajit libluajit luajit-5.1 libluajit-5.1 + PATHS ${LUA_DIR}/../lib + ${LUA_DIR} + NO_DEFAULT_PATH) + ENDIF() + MESSAGE(STATUS "Lua library: ${LUA_LIBRARIES}") + + FIND_PATH(LUA_INCLUDE_DIR lua.h + ${LUA_DIR}/../include/lua-5.1 + ${LUA_DIR}/../include/lua51 + ${LUA_DIR}/../include/lua + ${LUA_DIR}/../include + NO_DEFAULT_PATH) + + MESSAGE(STATUS "Lua include directory: ${LUA_INCLUDE_DIR}") + +ENDIF() IF(LUA_LIBRARIES) CHECK_LIBRARY_EXISTS(${LUA_LIBRARIES} luaJIT_setmode "" LUA_JIT) ENDIF() -SET(LUA_INCLUDE_DIR "${LUA_INCDIR}") - -SET(LUA_PACKAGE_PATH "${LUADIR}") -SET(LUA_PACKAGE_CPATH "${LIBDIR}") - MARK_AS_ADVANCED( LUA_EXECUTABLE LUA_LIBRARIES diff --git a/rocks/qtlua-scm-1.rockspec b/rocks/qtlua-scm-1.rockspec index bfbe380..f42610d 100644 --- a/rocks/qtlua-scm-1.rockspec +++ b/rocks/qtlua-scm-1.rockspec @@ -20,7 +20,7 @@ dependencies = { build = { type = "command", build_command = [[ -cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUA=$(LUA) -DLUA_BINDIR="$(LUA_BINDIR)" -DLUA_INCDIR="$(LUA_INCDIR)" -DLUA_LIBDIR="$(LUA_LIBDIR)" -DLUADIR="$(LUADIR)" -DLIBDIR="$(LIBDIR)" -DCONFDIR="$(CONFDIR)" && $(MAKE) +cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUA=$(LUA) -DLUALIB=$(LUALIB) -DLUA_BINDIR="$(LUA_BINDIR)" -DLUA_INCDIR="$(LUA_INCDIR)" -DLUA_LIBDIR="$(LUA_LIBDIR)" -DLUADIR="$(LUADIR)" -DLIBDIR="$(LIBDIR)" -DCONFDIR="$(CONFDIR)" && $(MAKE) ]], install_command = "cd build && $(MAKE) install" } -- cgit v1.2.3