diff options
-rw-r--r-- | CMakeLists.txt | 92 | ||||
-rw-r--r-- | cmake/FindLua.cmake | 50 | ||||
-rw-r--r-- | cmake/QtLuaPaths.cmake | 29 | ||||
-rw-r--r-- | packages/qtide/CMakeLists.txt | 8 | ||||
-rw-r--r-- | rocks/qtlua-scm-1.rockspec | 26 |
5 files changed, 122 insertions, 83 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a1256d..0a587c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,62 +7,39 @@ CMAKE_POLICY(VERSION 2.6) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
-# If you want to include Lua in a main project,
-# you might want to define those variables yourself
-IF(NOT QtLua_IS_SUBPROJECT)
- INCLUDE(QtLuaPaths)
-
- # We do not support dok generation for now
- MACRO(ADD_TORCH_DOK)
- ENDMACRO(ADD_TORCH_DOK)
-ENDIF()
+INCLUDE(QtLuaPaths)
# --- General
-SET(WITH_QTLUA ON
- CACHE BOOL "Compile qlua and associated packages")
-
SET(WITH_QTLUA_IDE ON
CACHE BOOL "Compile qlua ide (require Qt>=4.4)")
# --- Macros
-IF (WITH_QTLUA)
- INCLUDE(MacroQt4AutoGen)
- INCLUDE(MacroAddQtLuaModule)
- INCLUDE(CheckCXXSourceCompiles)
- INCLUDE(CheckCXXSourceRuns)
-ENDIF (WITH_QTLUA)
-
+INCLUDE(MacroQt4AutoGen)
+INCLUDE(MacroAddQtLuaModule)
+INCLUDE(CheckCXXSourceCompiles)
+INCLUDE(CheckCXXSourceRuns)
# --- Qt4
-IF (WITH_QTLUA AND NOT QT4_FOUND)
- SET(QT_MIN_VERSION "4.3.0")
- FIND_PACKAGE(Qt4)
- IF (NOT QT4_FOUND)
- MESSAGE(STATUS "Disabling QtLua (No suitable Qt4)")
- SET(WITH_QTLUA FALSE CACHE BOOL "Compile qlua and associated packages" FORCE)
- ENDIF (NOT QT4_FOUND)
-ENDIF (WITH_QTLUA AND NOT QT4_FOUND)
-
+SET(QT_MIN_VERSION "4.3.0")
+FIND_PACKAGE(Qt4 REQUIRED)
# --- Lua
-# find lua
-IF (WITH_QTLUA)
- INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
-ENDIF(WITH_QTLUA)
+# Include Lua Files
+FIND_PACKAGE(Lua REQUIRED)
+INCLUDE_DIRECTORIES(${LUA_INCDIR})
-# It is not easy to check this because we have the relative
-# paths activated in general... so the program fails
-# to execute given it is not at the install place
+## Hard to check because of issues with RPATH
+## The compiled program looks for the lua library
+## relative to its own location (arg!)
# # was lua compiled with c++?
-# IF (WITH_QTLUA AND NOT LUA_COMPILED_WITH_CXX)
-# SET(CMAKE_REQUIRED_DEFINITIONS ${LUA_DEFINITIONS})
-# SET(CMAKE_REQUIRED_INCLUDES ${LUA_INCLUDE_DIR})
-# SET(CMAKE_REQUIRED_LIBRARIES ${LUA_LIBRARIES})
-# CHECK_CXX_SOURCE_RUNS("
+# SET(CMAKE_REQUIRED_DEFINITIONS ${LUA_DEFINITIONS})
+# SET(CMAKE_REQUIRED_INCLUDES ${LUA_INCLUDE_DIR})
+# SET(CMAKE_REQUIRED_LIBRARIES ${LUA_LIBRARIES})
+# CHECK_CXX_SOURCE_RUNS("
# #include <stdlib.h>
# #include \"lua.h\"
# #include \"lauxlib.h\"
@@ -74,29 +51,22 @@ ENDIF(WITH_QTLUA) # lua_pushcfunction(L, foo);
# lua_pcall(L, 0, 0, 0); exit(result); }"
# LUA_COMPILED_WITH_CXX)
-# SET(CMAKE_REQUIRED_DEFINITIONS)
-# SET(CMAKE_REQUIRED_INCLUDES)
-# SET(CMAKE_REQUIRED_LIBRARIES)
-# MESSAGE("HEYYY <${LUA_COMPILED_WITH_CXX}>")
-# IF (NOT "${LUA_COMPILED_WITH_CXX}" EQUAL "0")
-# MESSAGE(STATUS "Disabling QtLua (Lua not compiled with C++ exceptions support)")
-# SET(WITH_QTLUA FALSE)
-# ENDIF (NOT "${LUA_COMPILED_WITH_CXX}" EQUAL "0")
-# ENDIF(WITH_QTLUA AND NOT LUA_COMPILED_WITH_CXX)
+# SET(CMAKE_REQUIRED_DEFINITIONS)
+# SET(CMAKE_REQUIRED_INCLUDES)
+# SET(CMAKE_REQUIRED_LIBRARIES)
+# MESSAGE("HEYYY <${LUA_COMPILED_WITH_CXX}>")
+# IF (NOT "${LUA_COMPILED_WITH_CXX}" EQUAL "0")
+# MESSAGE(FATAL_ERROR "Lua not compiled with C++ exceptions support")
+# ENDIF (NOT "${LUA_COMPILED_WITH_CXX}" EQUAL "0")
# --- compile libqtlua
-
-IF (WITH_QTLUA)
- # ADD_SUBDIRECTORY(qtutil)
- ADD_SUBDIRECTORY(qtlua)
- FIND_PACKAGE(QtLua REQUIRED)
- ADD_SUBDIRECTORY(qlua)
- ADD_SUBDIRECTORY(packages)
-ENDIF (WITH_QTLUA)
-
-
+# ADD_SUBDIRECTORY(qtutil)
+ADD_SUBDIRECTORY(qtlua)
+FIND_PACKAGE(QtLua REQUIRED)
+ADD_SUBDIRECTORY(qlua)
+ADD_SUBDIRECTORY(packages)
# --- install qt libraries
@@ -105,7 +75,7 @@ IF (WIN32 AND NOT CYGWIN) CACHE BOOL "Copy the required Qt DLLs into the Torch install dirs")
ENDIF (WIN32 AND NOT CYGWIN)
-IF (WITH_QTLUA AND QT_INSTALL_LIBRARIES)
+IF (QT_INSTALL_LIBRARIES)
# -- turn on all the qt modules we use
SET(QT_USE_QTUITOOLS 1)
SET(QT_USE_QTWEBKIT 1)
@@ -114,4 +84,4 @@ IF (WITH_QTLUA AND QT_INSTALL_LIBRARIES) SET(QT_USE_QTSVG 1)
# -- this takes care of the install
INCLUDE("InstallRequiredQtLibraries")
-ENDIF (WITH_QTLUA AND QT_INSTALL_LIBRARIES)
+ENDIF (QT_INSTALL_LIBRARIES)
diff --git a/cmake/FindLua.cmake b/cmake/FindLua.cmake new file mode 100644 index 0000000..7fd795b --- /dev/null +++ b/cmake/FindLua.cmake @@ -0,0 +1,50 @@ +# - Find lua +# this module looks for Lua +# +# LUA_EXECUTABLE - the full path to lua +# LUA_LIBRARIES - the lua shared library +# LUA_INCLUDE_DIR - directory for lua includes +# LUA_PACKAGE_PATH - where Lua searches for Lua packages +# LUA_PACKAGE_CPATH - where Lua searches for library packages +# LUA_FOUND - If false, don't attempt to use lua. + +SET(LUA_EXECUTABLE "${LUA}") + +FIND_LIBRARY(LUA_LIBRARIES + NAMES lua liblua luajit libluajit + PATHS ${LUA_LIBDIR} + ${LUA_BINDIR} + NO_DEFAULT_PATH) + +SET(LUA_INCLUDE_DIR "${LUA_INCDIR}") + +SET(LUA_PACKAGE_PATH "${LUADIR}") +SET(LUA_PACKAGE_CPATH "${LIBDIR}") + +MARK_AS_ADVANCED( + LUA_EXECUTABLE + LUA_LIBRARIES + LUA_INCLUDE_DIR + LUA_PACKAGE_PATH + LUA_PACKAGE_CPATH + ) + +IF(LUA_EXECUTABLE) + IF(LUA_LIBRARIES) + IF(LUA_INCLUDE_DIR) + SET(LUA_FOUND 1) + ENDIF(LUA_INCLUDE_DIR) + ENDIF(LUA_LIBRARIES) +ENDIF(LUA_EXECUTABLE) + +IF (NOT LUA_FOUND AND Lua_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Lua") +ENDIF (NOT LUA_FOUND AND Lua_FIND_REQUIRED) + +IF(NOT Lua_FIND_QUIETLY) + IF(LUA_FOUND) + MESSAGE(STATUS "Lua found ${LUA_EXECUTABLE}") + ELSE(LUA_FOUND) + MESSAGE(STATUS "Lua not found. Please specify location") + ENDIF(LUA_FOUND) +ENDIF(NOT Lua_FIND_QUIETLY) diff --git a/cmake/QtLuaPaths.cmake b/cmake/QtLuaPaths.cmake index 6168af1..b1d95bd 100644 --- a/cmake/QtLuaPaths.cmake +++ b/cmake/QtLuaPaths.cmake @@ -1,22 +1,15 @@ +# work-around luarocks *ugly* limitations those guys believe that only few +# directories in their PREFIX should be moved around. i really do not know +# what the hell they are thinking. you know what? it is sad. +GET_FILENAME_COMPONENT(CMAKE_INSTALL_PREFIX "${LUA_BINDIR}" PATH) SET(QtLua_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) - -SET(QtLua_INSTALL_BIN_SUBDIR "bin" CACHE PATH - "Install dir for binaries (relative to QtLua_INSTALL_PREFIX)") - -SET(QtLua_INSTALL_LIB_SUBDIR "lib" CACHE PATH - "Install dir for archives (relative to QtLua_INSTALL_PREFIX)") - -SET(QtLua_INSTALL_INCLUDE_SUBDIR "include" CACHE PATH - "Install dir for include (relative to QtLua_INSTALL_PREFIX)") - -SET(QtLua_INSTALL_CMAKE_SUBDIR "share/lua/cmake" CACHE PATH - "Install dir for .cmake files (relative to QtLua_INSTALL_PREFIX)") - -SET(QtLua_INSTALL_LUA_PATH_SUBDIR "share/lua/5.1" CACHE PATH - "Install dir for QtLua packages files (relative to QtLua_INSTALL_PREFIX)") - -SET(QtLua_INSTALL_LUA_CPATH_SUBDIR "lib/lua/5.1" CACHE PATH - "Install dir for QtLua C packages files (relative to QtLua_INSTALL_PREFIX)") +FILE(RELATIVE_PATH QtLua_INSTALL_BIN_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUA_BINDIR}") +FILE(RELATIVE_PATH QtLua_INSTALL_LIB_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUA_LIBDIR}") +FILE(RELATIVE_PATH QtLua_INSTALL_INCLUDE_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUA_INCDIR}") +FILE(RELATIVE_PATH QtLua_INSTALL_CMAKE_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${CONFDIR}/cmake") +FILE(RELATIVE_PATH QtLua_INSTALL_LUA_PATH_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUADIR}") +FILE(RELATIVE_PATH QtLua_INSTALL_LUA_CPATH_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LIBDIR}") +#### SET(QtLua_INSTALL_FINDLUA_DIR "${QtLua_BINARY_DIR}/cmake") SET(QtLua_INSTALL_BIN "${QtLua_INSTALL_PREFIX}/${QtLua_INSTALL_BIN_SUBDIR}") diff --git a/packages/qtide/CMakeLists.txt b/packages/qtide/CMakeLists.txt index 9e557aa..d857d6b 100644 --- a/packages/qtide/CMakeLists.txt +++ b/packages/qtide/CMakeLists.txt @@ -3,7 +3,7 @@ INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") # we need qt>=4.4 for this section -IF (QT4_FOUND AND WITH_QTLUA_IDE AND WITH_QTLUA) +IF (QT4_FOUND AND WITH_QTLUA_IDE) IF (QTVERSION AND NOT QT_VERSION_MAJOR) STRING(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1*10000+\\2*100+\\3" qt_version_expr "${QTVERSION}") @@ -16,10 +16,10 @@ IF (QT4_FOUND AND WITH_QTLUA_IDE AND WITH_QTLUA) MESSAGE(STATUS "Disabling package QTIDE (Needs Qt>=4.4.0)") SET(WITH_QTLUA_IDE FALSE) ENDIF (NOT QT_VERSION OR QT_VERSION LESS "40400") -ENDIF (QT4_FOUND AND WITH_QTLUA_IDE AND WITH_QTLUA) +ENDIF (QT4_FOUND AND WITH_QTLUA_IDE) # proceed -IF (WITH_QTLUA_IDE AND WITH_QTLUA) +IF (WITH_QTLUA_IDE) # find qt IF (QT_QTWEBKIT_FOUND) SET(QT_USE_QTWEBKIT 1) @@ -55,5 +55,5 @@ IF (WITH_QTLUA_IDE AND WITH_QTLUA) MACRO_INSTALL_QTLUA_FILES(qtide init.lua prefs.lua prefs.ui) # ADD_TORCH_DOK(dok qtide "QT Interface" "QT IDE for Lua" 6.) -ENDIF(WITH_QTLUA_IDE AND WITH_QTLUA) +ENDIF(WITH_QTLUA_IDE) diff --git a/rocks/qtlua-scm-1.rockspec b/rocks/qtlua-scm-1.rockspec new file mode 100644 index 0000000..f42610d --- /dev/null +++ b/rocks/qtlua-scm-1.rockspec @@ -0,0 +1,26 @@ +package = "qtlua" +version = "scm-1" + +source = { + url = "git://github.com/torch/qtlua.git", +} + +description = { + summary = "Powerful QT interface to Lua", + detailed = [[ + ]], + homepage = "https://github.com/torch/qtlua", + license = "BSD" +} + +dependencies = { + "lua >= 5.1", +} + +build = { + type = "command", + build_command = [[ +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" +} |