diff options
author | archenroot <archenroot@gmail.com> | 2017-01-15 09:50:26 +0300 |
---|---|---|
committer | Soumith Chintala <soumith@gmail.com> | 2017-01-15 09:50:26 +0300 |
commit | 818868e23521ec1eb6b4bea32714fe39024e01db (patch) | |
tree | 5b068c9102f08612c30505c9d0103537fd009c8e | |
parent | f8831bee21a9d6a41e47ef8626a3bef9ca2d66e5 (diff) |
Adding support for CMAKE (#62)
* Adding support for CMAKE.
-rw-r--r-- | CMakeLists.txt | 68 | ||||
-rw-r--r-- | cmake/FindReadline.cmake | 80 |
2 files changed, 148 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..07239df --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,68 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) +CMAKE_POLICY(VERSION 2.8) + +FIND_LIBRARY(Readline REQUIRED) +FIND_PACKAGE(Torch REQUIRED) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}") +INCLUDE_DIRECTORIES("${LUA_INCDIR}") +LINK_DIRECTORIES("${LUA_LIBDIR}") +LINK_DIRECTORIES("${LIBDIR}") + +# TODO +INCLUDE(CheckIncludeFiles) +INCLUDE(CheckFunctionExists) +INCLUDE(CheckLibraryExists) + +SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + +# Check system packages to be installed +IF (UNIX OR NOT WIN32) + CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H) +ENDIF (UNIX OR NOT WIN32) + +CONFIGURE_FILE("utils.c" "${CMAKE_CURRENT_SOURCE_DIR}/treplutils.c") +# C source files +SET(src + "${CMAKE_CURRENT_SOURCE_DIR}/readline.c" + "${CMAKE_CURRENT_SOURCE_DIR}/treplutils.c" ) + +# LUA source files +SET(luasrc + "${CMAKE_CURRENT_SOURCE_DIR}/init.lua" + "${CMAKE_CURRENT_SOURCE_DIR}/colorize.lua" + "${CMAKE_CURRENT_SOURCE_DIR}/colors.lua" ) + +# Th executable script -> CLI for Torch +SET(scriptsrc + "${CMAKE_CURRENT_SOURCE_DIR}/th") + +# When using MSVC +IF(MSVC) + # we want to respect the standard, and we are bored of those **** . + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE=1) +ENDIF(MSVC) + +ADD_LIBRARY("treplutils" SHARED ${src}) + +# OUTPUT_NAME "treplutils" +# We would like to rename util.c to treputils.so after compilation and without prefix lib +SET_TARGET_PROPERTIES("treplutils" PROPERTIES + PREFIX "" + IMPORT_PREFIX "lib" ) + +# Apple related stuff +IF(APPLE) + SET_TARGET_PROPERTIES("treplutils" PROPERTIES + LINK_FLAGS "-undefined dynamic_lookup") +ENDIF() + +# Install LUA source files +INSTALL(FILES ${luasrc} DESTINATION ${LUADIR}/trepl) +# Install compiled C libraries +INSTALL(TARGETS treplutils LIBRARY DESTINATION ${LUA_LIBDIR} ) +IF(LUALIB) + TARGET_LINK_LIBRARIES(treplutils ${LUALIB} readline) +ENDIF() +# Install cli script +INSTALL(PROGRAMS ${scriptsrc} DESTINATION ${LUA_BINDIR})
\ No newline at end of file diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake new file mode 100644 index 0000000..95bb942 --- /dev/null +++ b/cmake/FindReadline.cmake @@ -0,0 +1,80 @@ +# - Find the readline library +# This module defines +# READLINE_INCLUDE_DIR, path to readline/readline.h, etc. +# READLINE_LIBRARIES, the libraries required to use READLINE. +# READLINE_FOUND, If false, do not try to use READLINE. +# also defined, but not for general use are +# READLINE_readline_LIBRARY, where to find the READLINE library. +# READLINE_ncurses_LIBRARY, where to find the ncurses library [might not be defined] + +# Apple readline does not support readline hooks +# So we look for another one by default +IF(APPLE) + FIND_PATH(READLINE_INCLUDE_DIR NAMES readline/readline.h PATHS + /sw/include + /opt/local/include + /opt/include + /usr/local/include + /usr/include/ + NO_DEFAULT_PATH + ) +ENDIF(APPLE) +FIND_PATH(READLINE_INCLUDE_DIR NAMES readline/readline.h) + + +# Apple readline does not support readline hooks +# So we look for another one by default +IF(APPLE) + FIND_LIBRARY(READLINE_readline_LIBRARY NAMES readline PATHS + /sw/lib + /opt/local/lib + /opt/lib + /usr/local/lib + /usr/lib + NO_DEFAULT_PATH + ) +ENDIF(APPLE) +FIND_LIBRARY(READLINE_readline_LIBRARY NAMES readline) + +# Sometimes readline really needs ncurses +IF(APPLE) + FIND_LIBRARY(READLINE_ncurses_LIBRARY NAMES ncurses PATHS + /sw/lib + /opt/local/lib + /opt/lib + /usr/local/lib + /usr/lib + NO_DEFAULT_PATH + ) +ENDIF(APPLE) +FIND_LIBRARY(READLINE_ncurses_LIBRARY NAMES ncurses) + +MARK_AS_ADVANCED( + READLINE_INCLUDE_DIR + READLINE_readline_LIBRARY + READLINE_ncurses_LIBRARY + ) + +SET( READLINE_FOUND "NO" ) +IF(READLINE_INCLUDE_DIR) + IF(READLINE_readline_LIBRARY) + SET( READLINE_FOUND "YES" ) + SET( READLINE_LIBRARIES + ${READLINE_readline_LIBRARY} + ) + + # some readline libraries depend on ncurses + IF(READLINE_ncurses_LIBRARY) + SET(READLINE_LIBRARIES ${READLINE_LIBRARIES} ${READLINE_ncurses_LIBRARY}) + ENDIF(READLINE_ncurses_LIBRARY) + + ENDIF(READLINE_readline_LIBRARY) +ENDIF(READLINE_INCLUDE_DIR) + +IF(READLINE_FOUND) + MESSAGE(STATUS "Found readline library") +ELSE(READLINE_FOUND) + IF(READLINE_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find readline -- please give some paths to CMake") + ENDIF(READLINE_FIND_REQUIRED) +ENDIF(READLINE_FOUND) |