diff options
author | soumith <soumith@gmail.com> | 2016-02-03 02:43:19 +0300 |
---|---|---|
committer | soumith <soumith@gmail.com> | 2016-02-03 02:43:19 +0300 |
commit | 57e96be7c3c01a6524e94740eb8a9c758630f22e (patch) | |
tree | bff44c685fef342cb17f60c5fb2059e2291d6166 | |
parent | 2f789b812159fa522bb5d7acbf40df47deb6c50f (diff) |
first cmake for lua 5.3
-rw-r--r-- | CMakeLists.txt | 9 | ||||
-rw-r--r-- | lua-5.3/CMakeLists.txt | 101 | ||||
-rw-r--r-- | lua-5.3/cmake/FindReadline.cmake | 60 | ||||
-rw-r--r-- | lua-5.3/src/luaconf.h.in (renamed from lua-5.3/src/luaconf.h) | 11 |
4 files changed, 176 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e5df3ad..d1dfe8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,8 +9,9 @@ ENDIF(NOT CMAKE_BUILD_TYPE) CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR) CMAKE_POLICY(VERSION 2.6) -OPTION(WITH_LUA51 "Use Lua 5.1 instead of LuaJIT 2.0" OFF) -OPTION(WITH_LUA52 "Use Lua 5.2 instead of LuaJIT 2.0" OFF) +OPTION(WITH_LUA51 "Use Lua 5.1 instead of LuaJIT 2.1" OFF) +OPTION(WITH_LUA52 "Use Lua 5.2 instead of LuaJIT 2.1" OFF) +OPTION(WITH_LUA53 "Use Lua 5.3 instead of LuaJIT 2.1" OFF) OPTION(WITH_LUAJIT21 "Use LuaJIT 2.1 instead of LuaJIT 2.0" OFF) OPTION(WITH_SYSTEM_LUAJIT "Use LuaJIT installed on the system" OFF) OPTION(WITH_LUAROCKS "Install Luarocks" ON) @@ -27,6 +28,10 @@ ELSEIF(WITH_LUA52) SET(LUA_EXE_NAME lua) SET(LUA_VERSION 5.2) ADD_SUBDIRECTORY(lua-5.2) +ELSEIF(WITH_LUA53) + SET(LUA_EXE_NAME lua) + SET(LUA_VERSION 5.3) + ADD_SUBDIRECTORY(lua-5.3) ELSEIF(WITH_LUAJIT21) SET(LUA_EXE_NAME luajit) SET(LUA_VERSION 5.1) diff --git a/lua-5.3/CMakeLists.txt b/lua-5.3/CMakeLists.txt new file mode 100644 index 0000000..2df9e3d --- /dev/null +++ b/lua-5.3/CMakeLists.txt @@ -0,0 +1,101 @@ +# -*- 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.3/" CACHE STRING "lua path subdirectory name") + SET(INSTALL_LUA_LIB_SUBDIR "lib" CACHE STRING "installation lua lib subdirectory name") + SET(INSTALL_LUA_CPATH_SUBDIR "${INSTALL_LUA_LIB_SUBDIR}/lua/5.3/" CACHE STRING "lua cpath subdirectory name") +ENDIF() + +IF(UNIX) + SET(LUA_ROOT "${CMAKE_INSTALL_PREFIX}") + SET(LUA_USE_POSIX 1) +ENDIF() + +# Readline support +FIND_PACKAGE(Readline) +IF(READLINE_FOUND) + SET(LUA_USE_READLINE 1) + LIST(APPEND LIBS ${READLINE_LIBRARIES}) + INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR}) +ENDIF(READLINE_FOUND) + +INCLUDE(CheckLibraryExists) +INCLUDE(CheckSymbolExists) +INCLUDE(CheckFunctionExists) + +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() + +SET(CMAKE_THREAD_PREFER_PTHREAD TRUE) +FIND_PACKAGE(Threads) +IF(THREADS_FOUND) + LIST(APPEND LIBS ${CMAKE_THREAD_LIBS_INIT}) +ENDIF() + +INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR} src) +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 src/lua.hpp + DESTINATION "${INSTALL_INCLUDE_SUBDIR}") + +SET(SRC_LIB src/lapi.c src/lauxlib.c src/lbaselib.c src/lbitlib.c src/lcode.c src/lcorolib.c src/lctype.c + src/ldblib.c src/ldebug.c src/ldo.c src/ldump.c src/lfunc.c src/lgc.c src/linit.c src/liolib.c src/llex.c + src/lmem.c src/loadlib.c src/lobject.c src/lopcodes.c src/loslib.c src/lparser.c src/lstate.c src/lstring.c + src/lstrlib.c src/ltable.c src/ltablib.c src/ltm.c src/lua.c src/luac.c src/lundump.c src/lutf8lib.c + src/lvm.c src/lzio.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 "lua") +ADD_EXECUTABLE(lua src/lua.c ${SRC_LIB}) +ADD_EXECUTABLE(luac src/luac.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 src/lua.hpp + DESTINATION "${INSTALL_INCLUDE_SUBDIR}/lua") diff --git a/lua-5.3/cmake/FindReadline.cmake b/lua-5.3/cmake/FindReadline.cmake new file mode 100644 index 0000000..4a2fc0c --- /dev/null +++ b/lua-5.3/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.3/src/luaconf.h b/lua-5.3/src/luaconf.h.in index b4ed500..f0bba74 100644 --- a/lua-5.3/src/luaconf.h +++ b/lua-5.3/src/luaconf.h.in @@ -12,6 +12,12 @@ #include <stddef.h> +#cmakedefine LUA_USE_DLOPEN 1 +#cmakedefine LUA_USE_POSIX 1 +#cmakedefine LUA_USE_READLINE 1 +#cmakedefine LUA_BUILD_AS_DLL 1 +#define LUA_ROOT "@LUA_ROOT@/" + /* ** =================================================================== ** Search for "@@" to find all configurable definitions. @@ -188,7 +194,7 @@ #else /* }{ */ -#define LUA_ROOT "/usr/local/" +/* #define LUA_ROOT "/usr/local/" */ #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" #define LUA_PATH_DEFAULT \ @@ -606,7 +612,7 @@ /* -@@ lua_number2strx converts a float to an hexadecimal numeric string. +@@ lua_number2strx converts a float to an hexadecimal numeric string. ** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that. ** Otherwise, you can leave 'lua_number2strx' undefined and Lua will ** provide its own implementation. @@ -764,4 +770,3 @@ #endif - |