diff options
Diffstat (limited to '')
-rw-r--r-- | src/lua/CMakeLists.txt | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/src/lua/CMakeLists.txt b/src/lua/CMakeLists.txt new file mode 100644 index 00000000..bf35b047 --- /dev/null +++ b/src/lua/CMakeLists.txt @@ -0,0 +1,154 @@ +# Copyright (C) 2007-2015 LuaDist. +# Created by Peter Drahoš, Peter Kapec +# Redistribution and use of this file is allowed according to the terms of the MIT license. +# For details see the COPYRIGHT file distributed with LuaDist. +# Please note that the package source code is licensed under its own license. + +project ( lua C ) +cmake_minimum_required ( VERSION 2.8 ) + +# ceph: something in here causes libgmock_main to be built as a shared +# library, likely because it is modifying special variables. it doesn't really +# need to be here, it mostly contains a bunch of install/cpack stuff. +#include ( cmake/dist.cmake ) + +## CONFIGURATION +# Default configuration (we assume POSIX by default) +set ( LUA_PATH "LUA_PATH" CACHE STRING "Environment variable to use as package.path." ) +set ( LUA_CPATH "LUA_CPATH" CACHE STRING "Environment variable to use as package.cpath." ) +set ( LUA_INIT "LUA_INIT" CACHE STRING "Environment variable for initial script." ) + +option ( LUA_USE_C89 "Use only C89 features." OFF ) +option ( LUA_USE_RELATIVE_LOADLIB "Use modified loadlib.c with support for relative paths on posix systems." ON ) + +# Ceph: turn off compatibility with older Lua versions +option ( LUA_COMPAT_5_1 "Enable backwards compatibility options with lua-5.1." OFF) +option ( LUA_COMPAT_5_2 "Enable backwards compatibility options with lua-5.2." OFF) + +#2DO: LUAI_* and LUAL_* settings, for now defaults are used. +set ( LUA_DIRSEP "/" ) +set ( LUA_MODULE_SUFFIX ${CMAKE_SHARED_MODULE_SUFFIX} ) +set ( LUA_LDIR ${INSTALL_LMOD} ) +set ( LUA_CDIR ${INSTALL_CMOD} ) + +if ( LUA_USE_RELATIVE_LOADLIB ) + # This will set up relative paths to lib + string ( REGEX REPLACE "[^!/]+" ".." LUA_DIR "!/${INSTALL_BIN}/" ) +else ( ) + # Direct path to installation + set ( LUA_DIR ${CMAKE_INSTALL_PREFIX} CACHE STRING "Destination from which modules will be resolved. See INSTALL_LMOD and INSTALL_CMOD." ) +endif ( ) + +set ( LUA_PATH_DEFAULT "./?.lua;${LUA_DIR}${LUA_LDIR}/?.lua;${LUA_DIR}${LUA_LDIR}/?/init.lua" ) +set ( LUA_CPATH_DEFAULT "./?${LUA_MODULE_SUFFIX};${LUA_DIR}${LUA_CDIR}/?${LUA_MODULE_SUFFIX};${LUA_DIR}${LUA_CDIR}/loadall${LUA_MODULE_SUFFIX}" ) + +if ( WIN32 AND NOT CYGWIN ) + # Windows systems + option ( LUA_USE_WINDOWS "Windows specific build." ON ) + option ( LUA_BUILD_WLUA "Build wLua interpretter without console output." ON ) + option ( LUA_BUILD_AS_DLL "Build Lua library as Dll." ${BUILD_SHARED_LIBS} ) + + # Paths (Double escapes needed) + set ( LUA_DIRSEP "\\\\" ) + string ( REPLACE " /" ${LUA_DIRSEP} LUA_DIR "${LUA_DIR}" ) + string ( REPLACE "/" ${LUA_DIRSEP} LUA_LDIR "${LUA_LDIR}" ) + string ( REPLACE "/" ${LUA_DIRSEP} LUA_CDIR "${LUA_CDIR}" ) + string ( REPLACE "/" ${LUA_DIRSEP} LUA_PATH_DEFAULT "${LUA_PATH_DEFAULT}" ) + string ( REPLACE "/" ${LUA_DIRSEP} LUA_CPATH_DEFAULT "${LUA_CPATH_DEFAULT}" ) +else ( ) + # Posix systems (incl. Cygwin) + option ( LUA_USE_POSIX "Use POSIX features." ON ) + option ( LUA_USE_DLOPEN "Use dynamic linker to load modules." ON ) + # Apple and Linux specific + if ( LINUX OR APPLE ) + option ( LUA_USE_AFORMAT "Assume 'printf' handles 'aA' specifiers" ON ) + endif ( ) +endif ( ) + +# ceph: readline is only needed for the cli +## SETUP +# Optional libraries +#find_package ( Readline ) +#if ( READLINE_FOUND ) +# option ( LUA_USE_READLINE "Use readline in the Lua CLI." ON ) +#endif ( ) + +# Setup needed variables and libraries +if ( LUA_USE_POSIX ) + # On POSIX Lua links to standard math library "m" + list ( APPEND LIBS m ) +endif ( ) + +if ( LUA_USE_DLOPEN ) + # Link to dynamic linker library "dl" + find_library ( DL_LIBRARY NAMES dl ) + if ( DL_LIBRARY ) + list ( APPEND LIBS ${DL_LIBRARY} ) + endif ( ) +endif ( ) + +if ( LUA_USE_READLINE ) + # Add readline + include_directories ( ${READLINE_INCLUDE_DIR} ) + list ( APPEND LIBS ${READLINE_LIBRARY} ) +endif ( ) + +## SOURCES +# Generate luaconf.h +configure_file ( src/luaconf.h.in ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h ) + +# Sources and headers +include_directories ( src ${CMAKE_CURRENT_BINARY_DIR} ) +set ( SRC_CORE src/lapi.c src/lcode.c src/lctype.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 ) +set ( SRC_LIB src/lauxlib.c src/lbaselib.c src/lbitlib.c src/lcorolib.c src/ldblib.c + src/liolib.c src/lmathlib.c src/loslib.c src/lstrlib.c src/ltablib.c src/linit.c + src/lutf8lib.c ) +set ( SRC_LUA src/lua.c ) +set ( SRC_LUAC src/luac.c ) + +if ( LUA_USE_RELATIVE_LOADLIB ) + # Use modified loadlib + list ( APPEND SRC_LIB src/loadlib_rel.c ) +else ( ) + list ( APPEND SRC_LIB src/loadlib.c ) +endif ( ) + +## BUILD +# Create lua library +add_library ( liblua STATIC ${SRC_CORE} ${SRC_LIB} ${LUA_DLL_RC} ) +target_link_libraries ( liblua ${LIBS} ) +# Ceph: add includes path to liblua users +target_include_directories(liblua PUBLIC src ${CMAKE_CURRENT_BINARY_DIR}) +# Ceph: only need the logical name +set_target_properties ( liblua PROPERTIES OUTPUT_NAME lua CLEAN_DIRECT_OUTPUT 1 ) +if ( LUA_BUILD_AS_DLL ) + set_target_properties ( liblua PROPERTIES COMPILE_DEFINITIONS LUA_BUILD_AS_DLL ) +endif () + +# Ceph: don't build Lua executable +#add_executable ( lua ${SRC_LUA} src/lua.rc ) +#target_link_libraries ( lua liblua ) + +# Ceph: don't build Lua executable +#add_executable ( luac ${SRC_CORE} ${SRC_LIB} ${SRC_LUAC} src/luac.rc ) +#target_link_libraries ( luac ${LIBS} ) + +# Ceph: dont' build Lua executable +# On windows a variant of the lua interpreter without console output needs to be built +#if ( LUA_BUILD_WLUA ) +# add_executable ( wlua WIN32 src/wmain.c ${SRC_LUA} src/lua.rc ) +# target_link_libraries ( wlua liblua ) +# install_executable ( wlua ) +#endif ( ) + +# Ceph: Lua is built as a convenience library; don't install anything +#install_executable ( lua luac ) +#install_library ( liblua ) +#install_data ( README.md ) +#install_lua_module ( strict etc/strict.lua ) +#install_header ( src/lua.h src/lualib.h src/lauxlib.h src/lua.hpp ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h ) +#install_doc ( doc/ ) +#install_foo ( etc/ ) +#install_test ( test/ ) |