Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/qtlua.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonan Collobert <ronan@collobert.com>2013-10-24 18:37:33 +0400
committerRonan Collobert <ronan@collobert.com>2013-10-24 18:37:33 +0400
commitac8ede8e94d2f236654e13054f6c78dc7954e9d8 (patch)
tree6c493fce8ce52d8de9c287e1eb87a23b418c6cd9
parent8b405a569f4482bc6dd6eeaa672cbc5882837812 (diff)
make cmake works with rocks (workaround luarocks ugliness)
-rw-r--r--CMakeLists.txt92
-rw-r--r--cmake/FindLua.cmake50
-rw-r--r--cmake/QtLuaPaths.cmake29
-rw-r--r--packages/qtide/CMakeLists.txt8
-rw-r--r--rocks/qtlua-scm-1.rockspec26
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"
+}