diff options
author | Ronan Collobert <ronan@collobert.com> | 2014-02-14 14:17:43 +0400 |
---|---|---|
committer | Ronan Collobert <ronan@collobert.com> | 2014-02-14 14:27:11 +0400 |
commit | 66a5927b7cf584bc11bf3f42c12c9ad97cb26413 (patch) | |
tree | afd3ab067e598fc4f0f49704aad4c0f81d538ad6 /cmake | |
parent | fa0e47d77dbb1858441c2e339c41fbd00b8c6569 (diff) |
added/modified cmake files to make torch7 a standalone package
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/TorchConfig.cmake.in | 34 | ||||
-rw-r--r-- | cmake/TorchExports.cmake | 14 | ||||
-rw-r--r-- | cmake/TorchPackage.cmake | 35 | ||||
-rw-r--r-- | cmake/TorchPaths.cmake | 32 | ||||
-rw-r--r-- | cmake/TorchPathsInit.cmake | 47 | ||||
-rw-r--r-- | cmake/TorchWrap.cmake | 11 | ||||
-rw-r--r-- | cmake/TorchWrap.cmake.in | 11 |
7 files changed, 184 insertions, 0 deletions
diff --git a/cmake/TorchConfig.cmake.in b/cmake/TorchConfig.cmake.in new file mode 100644 index 0000000..246629d --- /dev/null +++ b/cmake/TorchConfig.cmake.in @@ -0,0 +1,34 @@ +# This (ugly) setup assumes: +# CMAKE_PREFIX_PATH = LUA_BINDIR +# CMAKE_INSTALL_PREFIX = PREFIX + +# Define Torch basic subpaths +SET(Torch_INSTALL_PREFIX "@Torch_INSTALL_PREFIX@") + +SET(Torch_INSTALL_BIN_SUBDIR "@Torch_INSTALL_BIN_SUBDIR@") +SET(Torch_INSTALL_MAN_SUBDIR "@Torch_INSTALL_MAN_SUBDIR@") +SET(Torch_INSTALL_LIB_SUBDIR "@Torch_INSTALL_LIB_SUBDIR@") +SET(Torch_INSTALL_SHARE_SUBDIR "@Torch_INSTALL_SHARE_SUBDIR@") +SET(Torch_INSTALL_INCLUDE_SUBDIR "@Torch_INSTALL_INCLUDE_SUBDIR@") +SET(Torch_INSTALL_CMAKE_SUBDIR "@Torch_INSTALL_CMAKE_SUBDIR@") +SET(Torch_INSTALL_LUA_PATH_SUBDIR "@Torch_INSTALL_LUA_PATH_SUBDIR@") +SET(Torch_INSTALL_LUA_CPATH_SUBDIR "@Torch_INSTALL_LUA_CPATH_SUBDIR@") +SET(Torch_INSTALL_CMAKE_RIDBUS "@Torch_INSTALL_CMAKE_RIDBUS@") + +FILE(RELATIVE_PATH Torch_INSTALL_LUA_PATH_SUBDIR "${Torch_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/lua") +FILE(RELATIVE_PATH Torch_INSTALL_LUA_CPATH_SUBDIR "${Torch_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/lib") + +SET(CMAKE_MODULE_PATH "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_CMAKE_SUBDIR}" "${CMAKE_MODULE_PATH}") +SET(CMAKE_INSTALL_PREFIX "${Torch_INSTALL_PREFIX}") # override + +INCLUDE(TorchPathsInit) +INCLUDE(TorchPackage) +INCLUDE(TorchWrap) + +# Define Torch basic targets +INCLUDE(TorchExports) + +INCLUDE_DIRECTORIES("${Torch_INSTALL_INCLUDE}") +INCLUDE_DIRECTORIES("${Torch_INSTALL_INCLUDE}/TH") + +MESSAGE(STATUS "Found Torch7 in ${Torch_INSTALL_PREFIX}") diff --git a/cmake/TorchExports.cmake b/cmake/TorchExports.cmake new file mode 100644 index 0000000..7a45319 --- /dev/null +++ b/cmake/TorchExports.cmake @@ -0,0 +1,14 @@ +INSTALL(EXPORT torch-exports + DESTINATION "${Torch_INSTALL_CMAKE_SUBDIR}" + FILE "TorchExports.cmake") + +CONFIGURE_FILE("cmake/TorchConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/TorchConfig.cmake" @ONLY) +CONFIGURE_FILE("cmake/TorchWrap.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/TorchWrap.cmake" @ONLY) + +INSTALL( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/TorchConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/TorchWrap.cmake" + "cmake/TorchPathsInit.cmake" + "cmake/TorchPackage.cmake" + DESTINATION "${Torch_INSTALL_CMAKE_SUBDIR}") diff --git a/cmake/TorchPackage.cmake b/cmake/TorchPackage.cmake new file mode 100644 index 0000000..9ee30c7 --- /dev/null +++ b/cmake/TorchPackage.cmake @@ -0,0 +1,35 @@ +# -*- cmake -*- + +MACRO(ADD_TORCH_PACKAGE package src luasrc) + + INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + + ### C/C++ sources + IF(src) + + ADD_LIBRARY(${package} MODULE ${src}) + + ### Torch packages supposes libraries prefix is "lib" + SET_TARGET_PROPERTIES(${package} PROPERTIES + PREFIX "lib" + IMPORT_PREFIX "lib" + INSTALL_NAME_DIR "@executable_path/${Torch_INSTALL_BIN2CPATH}") + + IF(APPLE) + SET_TARGET_PROPERTIES(${package} PROPERTIES + LINK_FLAGS "-undefined dynamic_lookup") + ENDIF() + + INSTALL(TARGETS ${package} + RUNTIME DESTINATION ${Torch_INSTALL_LUA_CPATH_SUBDIR} + LIBRARY DESTINATION ${Torch_INSTALL_LUA_CPATH_SUBDIR}) + + ENDIF(src) + + ### lua sources + IF(luasrc) + INSTALL(FILES ${luasrc} + DESTINATION ${Torch_INSTALL_LUA_PATH_SUBDIR}/${package}) + ENDIF(luasrc) + +ENDMACRO(ADD_TORCH_PACKAGE) diff --git a/cmake/TorchPaths.cmake b/cmake/TorchPaths.cmake new file mode 100644 index 0000000..b0417aa --- /dev/null +++ b/cmake/TorchPaths.cmake @@ -0,0 +1,32 @@ +# workaround another annoying cmake bug +# http://public.kitware.com/Bug/view.php?id=14462 +# https://awesome.naquadah.org/bugs/index.php?do=details&task_id=869 +MACRO(NORMALIZE_PATH _path_) + get_filename_component(${_path_}_abs "${${_path_}}" ABSOLUTE) + SET(${_path_} "${${_path_}_abs}") +ENDMACRO() + +NORMALIZE_PATH(LUA_BINDIR) +NORMALIZE_PATH(LUA_LIBDIR) +NORMALIZE_PATH(LUA_INCDIR) +NORMALIZE_PATH(LUADIR) +NORMALIZE_PATH(LIBDIR) + +GET_FILENAME_COMPONENT(CMAKE_INSTALL_PREFIX "${LUA_BINDIR}" PATH) + +SET(Torch_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) +FILE(RELATIVE_PATH Torch_INSTALL_BIN_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUA_BINDIR}") +FILE(RELATIVE_PATH Torch_INSTALL_LIB_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUA_LIBDIR}") +FILE(RELATIVE_PATH Torch_INSTALL_INCLUDE_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUA_INCDIR}") + +SET(Torch_INSTALL_MAN_SUBDIR "share/man" CACHE PATH + "Install dir for man pages (relative to Torch_INSTALL_PREFIX)") + +SET(Torch_INSTALL_SHARE_SUBDIR "share" CACHE PATH + "Install dir for data (relative to Torch_INSTALL_PREFIX)") + +SET(Torch_INSTALL_CMAKE_SUBDIR "share/cmake/torch" CACHE PATH + "Install dir for .cmake files (relative to Torch_INSTALL_PREFIX)") + +FILE(RELATIVE_PATH Torch_INSTALL_LUA_PATH_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LUADIR}") +FILE(RELATIVE_PATH Torch_INSTALL_LUA_CPATH_SUBDIR "${CMAKE_INSTALL_PREFIX}" "${LIBDIR}") diff --git a/cmake/TorchPathsInit.cmake b/cmake/TorchPathsInit.cmake new file mode 100644 index 0000000..35f13c1 --- /dev/null +++ b/cmake/TorchPathsInit.cmake @@ -0,0 +1,47 @@ +SET(Torch_INSTALL_BIN "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_BIN_SUBDIR}") +SET(Torch_INSTALL_MAN "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_MAN_SUBDIR}") +SET(Torch_INSTALL_LIB "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_LIB_SUBDIR}") +SET(Torch_INSTALL_SHARE "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_SHARE_SUBDIR}") +SET(Torch_INSTALL_INCLUDE "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_INCLUDE_SUBDIR}") +#SET(Torch_INSTALL_DOK "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_DOK_SUBDIR}") +#SET(Torch_INSTALL_HTML "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_HTML_SUBDIR}") +SET(Torch_INSTALL_CMAKE "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_CMAKE_SUBDIR}") +SET(Torch_INSTALL_LUA_PATH "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_LUA_PATH_SUBDIR}") +#SET(Torch_INSTALL_LUA_PKG_PATH "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_LUA_PKG_PATH_SUBDIR}") +SET(Torch_INSTALL_LUA_CPATH "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_LUA_CPATH_SUBDIR}") +#SET(Torch_INSTALL_LUAROCKS_SYSCONF "${Torch_INSTALL_PREFIX}/${Torch_INSTALL_LUAROCKS_SYSCONF_SUBDIR}") + +# reverse relative path to prefix (ridbus is the palindrom of subdir) +FILE(RELATIVE_PATH Torch_INSTALL_BIN_RIDBUS "${Torch_INSTALL_BIN}" "${Torch_INSTALL_PREFIX}/.") +FILE(RELATIVE_PATH Torch_INSTALL_CMAKE_RIDBUS "${Torch_INSTALL_CMAKE}" "${Torch_INSTALL_PREFIX}/.") +GET_FILENAME_COMPONENT(Torch_INSTALL_BIN_RIDBUS "${Torch_INSTALL_BIN_RIDBUS}" PATH) +GET_FILENAME_COMPONENT(Torch_INSTALL_CMAKE_RIDBUS "${Torch_INSTALL_CMAKE_RIDBUS}" PATH) + +IF(UNIX) + OPTION(WITH_RPATH "Build libraries with executable rpaths" ON) + + IF(WITH_RPATH) + SET(CMAKE_SKIP_BUILD_RPATH FALSE) + SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + FILE(RELATIVE_PATH Torch_INSTALL_BIN2LIB + "${Torch_INSTALL_BIN}" "${Torch_INSTALL_LIB}") + FILE(RELATIVE_PATH Torch_INSTALL_BIN2CPATH + "${Torch_INSTALL_BIN}" "${Torch_INSTALL_LUA_CPATH}") + IF(NOT APPLE) + OPTION(WITH_DYNAMIC_RPATH + "Build libraries with executable relative rpaths (\$ORIGIN)" ON ) + ENDIF(NOT APPLE) + IF (WITH_DYNAMIC_RPATH OR APPLE) + SET(CMAKE_INSTALL_RPATH "\$ORIGIN/${Torch_INSTALL_BIN2LIB}") + ELSE (WITH_DYNAMIC_RPATH OR APPLE) + SET(CMAKE_INSTALL_RPATH "${Torch_INSTALL_LIB}") + ENDIF (WITH_DYNAMIC_RPATH OR APPLE) + SET(CMAKE_INSTALL_NAME_DIR "@executable_path/${Torch_INSTALL_BIN2LIB}") + ENDIF(WITH_RPATH) +ENDIF(UNIX) + +IF (WIN32) + SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") +ENDIF (WIN32) diff --git a/cmake/TorchWrap.cmake b/cmake/TorchWrap.cmake new file mode 100644 index 0000000..4fd6978 --- /dev/null +++ b/cmake/TorchWrap.cmake @@ -0,0 +1,11 @@ +MACRO(ADD_TORCH_WRAP target luafile) + INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}") + GET_FILENAME_COMPONENT(_file_ "${luafile}" NAME_WE) + SET(cfile "${_file_}.c") + ADD_CUSTOM_COMMAND( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${cfile}" + COMMAND ${LUA} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${luafile}" "${CMAKE_CURRENT_BINARY_DIR}/${cfile}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS "${luafile}") + ADD_CUSTOM_TARGET(${target} DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${cfile}") +ENDMACRO(ADD_TORCH_WRAP) diff --git a/cmake/TorchWrap.cmake.in b/cmake/TorchWrap.cmake.in new file mode 100644 index 0000000..12d7eb8 --- /dev/null +++ b/cmake/TorchWrap.cmake.in @@ -0,0 +1,11 @@ +MACRO(ADD_TORCH_WRAP target luafile) + INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}") + GET_FILENAME_COMPONENT(_file_ "${luafile}" NAME_WE) + SET(cfile "${_file_}.c") + ADD_CUSTOM_COMMAND( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${cfile}" + COMMAND @LUA@ ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${luafile}" "${CMAKE_CURRENT_BINARY_DIR}/${cfile}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS "${luafile}") + ADD_CUSTOM_TARGET(${target} DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${cfile}") +ENDMACRO(ADD_TORCH_WRAP) |