diff options
author | Ronan Collobert <locronan@fb.com> | 2014-09-10 23:41:55 +0400 |
---|---|---|
committer | Ronan Collobert <locronan@fb.com> | 2014-09-10 23:44:00 +0400 |
commit | 62b119485477bf41e4189c7700aefdb3e3b45d23 (patch) | |
tree | a104902434779515708c3380cf06c6c6141b809f /lua-5.1 | |
parent | f487d6d8dcf40d8c1f3ec1fab52f31c50d3ca7b4 (diff) |
added support for vanilla lua 5.1 (-DWITH_LUA51=ON) in cmake
Diffstat (limited to 'lua-5.1')
-rw-r--r-- | lua-5.1/CMakeLists.txt | 102 | ||||
-rw-r--r-- | lua-5.1/cmake/FindReadline.cmake | 60 | ||||
-rw-r--r-- | lua-5.1/src/luaconf.h.in (renamed from lua-5.1/src/luaconf.h) | 11 |
3 files changed, 172 insertions, 1 deletions
diff --git a/lua-5.1/CMakeLists.txt b/lua-5.1/CMakeLists.txt new file mode 100644 index 0000000..4bf9a39 --- /dev/null +++ b/lua-5.1/CMakeLists.txt @@ -0,0 +1,102 @@ +# -*- cmake -*- + +PROJECT(Lua) + +CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR) +CMAKE_POLICY(VERSION 2.6) + +SET(CMAKE_MODULE_PATH + "${CMAKE_CURRENT_SOURCE_DIR}/cmake" + "${CMAKE_MODULE_PATH}") + +SET(INSTALL_INCLUDE_SUBDIR "include" CACHE STRING "installation include subdirectory name") +IF(WIN32) + SET(INSTALL_BIN_SUBDIR "." CACHE STRING "installation executable subdirectory name") + SET(INSTALL_LIB_SUBDIR "." CACHE STRING "installation library subdirectory name") + SET(INSTALL_LUA_PATH_SUBDIR "lua") # not editable + SET(INSTALL_LUA_CPATH_SUBDIR ".") # not editable +ELSE() + SET(INSTALL_BIN_SUBDIR "bin" CACHE STRING "installation executable subdirectory name") + SET(INSTALL_LIB_SUBDIR "lib" CACHE STRING "installation library subdirectory name") + SET(INSTALL_LUA_PATH_SUBDIR "share/lua/5.1") # not editable + SET(INSTALL_LUA_LIB_SUBDIR "lib" CACHE STRING "installation lua lib subdirectory name") + SET(INSTALL_LUA_CPATH_SUBDIR "${INSTALL_LUA_LIB_SUBDIR}/lua/5.1") # not editable +ENDIF() + +IF(UNIX) +# IF(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr/local") +# ADD_DEFINITIONS(-DLUA_ROOT="${CMAKE_INSTALL_PREFIX}") +# ENDIF() + SET(LUA_ROOT "${CMAKE_INSTALL_PREFIX}") +ENDIF() + +# Readline support +FIND_PACKAGE(Readline) +IF(READLINE_FOUND) + SET(DLUA_USE_READLINE 1) + LIST(APPEND LIBS ${READLINE_LIBRARIES}) + INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR}) +ENDIF(READLINE_FOUND) + +INCLUDE(CheckLibraryExists) +INCLUDE(CheckSymbolExists) +INCLUDE(CheckFunctionExists) + +CHECK_FUNCTION_EXISTS(_longjmp LUA_USE_ULONGJMP) +CHECK_SYMBOL_EXISTS(isatty unistd.h LUA_USE_ISATTY) +CHECK_SYMBOL_EXISTS(mkstemp stdlib.h LUA_USE_MKSTEMP) +CHECK_SYMBOL_EXISTS(popen stdio.h LUA_USE_POPEN) +CHECK_LIBRARY_EXISTS(m sin "" LUA_USE_LIBM) +IF(LUA_USE_LIBM) + LIST(APPEND LIBS "m") +ENDIF() + +IF(NOT WIN32) + FIND_LIBRARY(DL_LIBRARY "dl") + IF(DL_LIBRARY) + SET(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARY}) + LIST(APPEND LIBS ${DL_LIBRARY}) + ENDIF(DL_LIBRARY) + CHECK_FUNCTION_EXISTS(dlopen LUA_USE_DLOPEN) + IF(NOT LUA_USE_DLOPEN) + MESSAGE(FATAL_ERROR "Cannot compile a useful lua. +Function dlopen() seems not to be supported on your platform. +Apparently you are not on a Windows platform as well. +So lua has no way to deal with shared libraries!") + ENDIF(NOT LUA_USE_DLOPEN) +ELSE() + SET(LUA_BUILD_AS_DLL 1) +ENDIF() + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) +CONFIGURE_FILE(src/luaconf.h.in + ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h src/lua.h src/lauxlib.h src/lualib.h + DESTINATION "${INSTALL_INCLUDE_SUBDIR}") + +SET(SRC_LIB + src/lapi.c src/lcode.c src/ldebug.c src/ldo.c src/ldump.c src/lfunc.c src/lgc.c src/llex.c src/lmem.c + src/lobject.c src/lopcodes.c src/lparser.c src/lstate.c src/lstring.c src/ltable.c src/ltm.c + src/lundump.c src/lvm.c src/lzio.c + src/lauxlib.c src/lbaselib.c src/ldblib.c src/liolib.c + src/lmathlib.c src/loslib.c src/ltablib.c src/lstrlib.c src/loadlib.c src/linit.c + ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h) + +# Shared library and executables +ADD_LIBRARY(liblua SHARED ${SRC_LIB}) +SET_TARGET_PROPERTIES(liblua PROPERTIES + PREFIX "lib" IMPORT_PREFIX "lib" OUTPUT_NAME "luajit") +ADD_EXECUTABLE(lua src/lua.c ${SRC_LIB}) +ADD_EXECUTABLE(luac src/luac.c src/print.c ${SRC_LIB}) +TARGET_LINK_LIBRARIES(liblua ${LIBS}) +TARGET_LINK_LIBRARIES(lua ${LIBS}) +TARGET_LINK_LIBRARIES(luac ${LIBS}) + +# Install files +INSTALL(TARGETS lua luac liblua + RUNTIME DESTINATION "${INSTALL_BIN_SUBDIR}" + LIBRARY DESTINATION "${INSTALL_LIB_SUBDIR}" + ARCHIVE DESTINATION "${INSTALL_LIB_SUBDIR}") + +INSTALL(FILES src/lua.h ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h src/lualib.h src/lauxlib.h + DESTINATION "${INSTALL_INCLUDE_SUBDIR}/lua") diff --git a/lua-5.1/cmake/FindReadline.cmake b/lua-5.1/cmake/FindReadline.cmake new file mode 100644 index 0000000..4a2fc0c --- /dev/null +++ b/lua-5.1/cmake/FindReadline.cmake @@ -0,0 +1,60 @@ +# - 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. + +# 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) + +MARK_AS_ADVANCED( + READLINE_INCLUDE_DIR + READLINE_readline_LIBRARY + ) + +SET( READLINE_FOUND "NO" ) +IF(READLINE_INCLUDE_DIR) + IF(READLINE_readline_LIBRARY) + SET( READLINE_FOUND "YES" ) + SET( READLINE_LIBRARIES + ${READLINE_readline_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) diff --git a/lua-5.1/src/luaconf.h b/lua-5.1/src/luaconf.h.in index e2cb261..2a7a1ae 100644 --- a/lua-5.1/src/luaconf.h +++ b/lua-5.1/src/luaconf.h.in @@ -11,6 +11,15 @@ #include <limits.h> #include <stddef.h> +#cmakedefine LUA_USE_ULONGJMP 1 +#cmakedefine LUA_USE_DLOPEN 1 +#cmakedefine LUA_USE_ISATTY 1 +#cmakedefine LUA_USE_MKSTEMP 1 +#cmakedefine LUA_USE_POPEN 1 +#cmakedefine LUA_USE_READLINE 1 +#cmakedefine LUA_USE_MODULE_AND_LIBRARY 1 +#cmakedefine LUA_BUILD_AS_DLL 1 +#define LUA_ROOT "@LUA_ROOT@/" /* ** ================================================================== @@ -94,7 +103,7 @@ ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" #else -#define LUA_ROOT "/usr/local/" +/* #define LUA_ROOT "/usr/local/" */ #define LUA_LDIR LUA_ROOT "share/lua/5.1/" #define LUA_CDIR LUA_ROOT "lib/lua/5.1/" #define LUA_PATH_DEFAULT \ |