|
1 |
| -# Copyright (C) 2007-2009 LuaDist. |
2 |
| -# Created by Peter Drahoš and Peter Kapec |
| 1 | +# Copyright (C) 2007-2011 LuaDist. |
| 2 | +# Created by Peter Drahoš, Peter Kapec |
3 | 3 | # Redistribution and use of this file is allowed according to the terms of the MIT license.
|
4 | 4 | # For details see the COPYRIGHT file distributed with LuaDist.
|
5 | 5 | # Please note that the package source code is licensed under its own license.
|
6 | 6 |
|
7 |
| -PROJECT ( lua C ) |
8 |
| -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) |
9 |
| -INCLUDE(dist.cmake ) |
10 |
| - |
11 |
| -# Determine install host |
12 |
| -IF ( WIN32 AND NOT CYGWIN) |
13 |
| - ADD_DEFINITIONS ( -DLUA_BUILD_AS_DLL ) |
14 |
| - IF(MSVC) |
15 |
| - ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE ) |
16 |
| - SET(DEF_FILE src/lua.def) |
17 |
| - SET(DLL_RC_FILE src/lua_dll.rc) |
18 |
| - SET(LUA_RC_FILE src/lua.rc) |
19 |
| - SET(LUAC_RC_FILE src/lua_simple.rc) |
20 |
| - ENDIF() |
21 |
| -ELSE ( ) |
22 |
| - ADD_DEFINITIONS ( -DLUA_USE_POSIX -DLUA_USE_DLOPEN ) |
23 |
| - SET ( LIBS m dl ) |
24 |
| -ENDIF ( ) |
25 |
| - |
26 |
| -# Add Readline support when available |
27 |
| -FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h) |
28 |
| -FIND_LIBRARY(READLINE_LIBRARY NAMES readline) |
29 |
| -IF ( READLINE_LIBRARY ) |
30 |
| - INCLUDE_DIRECTORIES ( ${READLINE_INCLUDE_DIR} ) |
31 |
| - ADD_DEFINITIONS ( -DLUA_USE_READLINE ) |
32 |
| - SET ( LIBS ${LIBS} ${READLINE_LIBRARY} ) |
33 |
| -ENDIF ( ) |
34 |
| - |
35 |
| -# Add Curses support when available |
36 |
| -INCLUDE(FindCurses) |
37 |
| -IF ( CURSES_LIBRARY ) |
38 |
| - INCLUDE_DIRECTORIES ( ${CURSES_INCLUDE_DIR} ) |
39 |
| - SET ( LIBS ${LIBS} ${CURSES_LIBRARY} ) |
40 |
| -ENDIF ( ) |
41 |
| - |
42 |
| -# Build Libraries |
43 |
| -SET ( SRC_LIBLUA 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 ) |
44 |
| - |
45 |
| -ADD_LIBRARY ( liblua SHARED ${SRC_LIBLUA} ${DEF_FILE} ${DLL_RC_FILE}) |
46 |
| -TARGET_LINK_LIBRARIES ( liblua ${LIBS}) |
47 |
| -SET_TARGET_PROPERTIES ( liblua PROPERTIES OUTPUT_NAME lua51 CLEAN_DIRECT_OUTPUT 1 ) |
48 |
| - |
49 |
| -ADD_LIBRARY ( liblua_static ${SRC_LIBLUA} ) |
50 |
| -TARGET_LINK_LIBRARIES ( liblua_static ${LIBS}) |
51 |
| - |
52 |
| -INCLUDE_DIRECTORIES ( src ) |
53 |
| - |
54 |
| -# Build Executables |
55 |
| -SET ( SRC_LUA src/lua.c ) |
56 |
| -SET ( SRC_LUAC src/luac.c src/print.c ) |
57 |
| - |
58 |
| -ADD_EXECUTABLE ( lua ${SRC_LUA} ${LUA_RC_FILE}) |
59 |
| -ADD_EXECUTABLE ( luac ${SRC_LUAC} ${LUAC_RC_FILE}) |
60 |
| -TARGET_LINK_LIBRARIES ( lua liblua ) |
61 |
| -TARGET_LINK_LIBRARIES ( luac liblua_static ) |
62 |
| - |
63 |
| -# Install |
64 |
| -INSTALL ( TARGETS lua luac liblua RUNTIME DESTINATION ${INSTALL_BIN} LIBRARY DESTINATION ${INSTALL_LIB} ARCHIVE DESTINATION ${INSTALL_LIB}) |
65 |
| -INSTALL ( FILES src/lua.h src/luaconf.h src/lualib.h src/lauxlib.h etc/lua.hpp DESTINATION ${INSTALL_INC} ) |
66 |
| -INSTALL ( FILES etc/strict.lua DESTINATION ${INSTALL_LMOD} ) |
67 |
| -INSTALL ( DIRECTORY doc etc test DESTINATION ${INSTALL_DATA} PATTERN ".git" EXCLUDE ) |
68 |
| -INSTALL ( FILES README COPYRIGHT HISTORY DESTINATION ${INSTALL_DATA} ) |
| 7 | +project ( lua C ) |
| 8 | +cmake_minimum_required ( VERSION 2.6 ) |
| 9 | +include ( dist.cmake ) |
| 10 | + |
| 11 | +## CONFIGURATION |
| 12 | +# Default configuration (we assume POSIX by default) |
| 13 | +set ( LUA_PATH "LUA_PATH" CACHE STRING "Environment variable to use as package.path." ) |
| 14 | +set ( LUA_CPATH "LUA_CPATH" CACHE STRING "Environment variable to use as package.cpath." ) |
| 15 | +set ( LUA_INIT "LUA_INIT" CACHE STRING "Environment variable for initial script." ) |
| 16 | + |
| 17 | +option ( LUA_ANSI "Use only ansi features." OFF ) |
| 18 | +option ( LUA_USE_RELATIVE_LOADLIB "Use modified loadlib.c with support for relative paths on posix systems." ON) |
| 19 | +set ( LUA_IDSIZE 60 CACHE NUMBER "gives the maximum size for the description of the source." ) |
| 20 | +set ( LUA_PROMPT "> " CACHE STRING "Is the default prompt used by stand-alone Lua." ) |
| 21 | +set ( LUA_PROMPT2 ">> " CACHE STRING "Is the default continuation prompt used by stand-alone Lua." ) |
| 22 | +set ( LUA_MAXINPUT 512 CACHE NUMBER "Is the maximum length for an input line in the stand-alone interpreter.") |
| 23 | + |
| 24 | +#2DO: LUAI_* and LUAL_* settings, for now defaults are used. |
| 25 | + |
| 26 | +if ( WIN32 AND NOT CYGWIN ) |
| 27 | + # Windows systems |
| 28 | + option ( LUA_WIN "Windows specific build." ON ) |
| 29 | + option ( LUA_BUILD_AS_DLL "Build Lua library as Dll." ON ) |
| 30 | + # Paths |
| 31 | + set ( LUA_DIRSEP "\\" ) |
| 32 | + set ( LUA_LDIR "!\\lua\\" CACHE STRING "Pure Lua module location." ) |
| 33 | + set ( LUA_CDIR "!\\" CACHE STRING "Binary Lua module location." ) |
| 34 | + set ( LUA_PATH_DEFAULT ".\\?.lua;${LUA_LDIR}?.lua;${LUA_LDIR}?\\init.lua;${LUA_CDIR}?.lua;${LUA_CDIR}?\\init.lua" ) |
| 35 | + set ( LUA_CPATH_DEFAULT ".\\?${CMAKE_SHARED_MODULE_SUFFIX};${LUA_CDIR}?${CMAKE_SHARED_MODULE_SUFFIX};${LUA_CDIR}loadall${CMAKE_SHARED_MODULE_SUFFIX}" ) |
| 36 | +else () |
| 37 | + # Posix systems |
| 38 | + option ( LUA_USE_POSIX "Use POSIX functionality." ON ) |
| 39 | + option ( LUA_USE_DLOPEN "Use dynamic linker to load modules." ON ) |
| 40 | + option ( LUA_USE_MKSTEMP "Use mkstep." ON ) |
| 41 | + option ( LUA_USE_ISATTY "Use tty." ON ) |
| 42 | + option ( LUA_USE_POPEN "Use popen." ON ) |
| 43 | + option ( LUA_USE_ULONGJMP "Use ulongjmp" ON) |
| 44 | + # Paths |
| 45 | + set ( LUA_DIRSEP "/" ) |
| 46 | + set ( LUA_LDIR "/usr/local/share/lua/5.1/" CACHE STRING "Pure Lua module location." ) |
| 47 | + set ( LUA_CDIR "/usr/local/lib/lua/5.1/" CACHE STRING "Binary Lua module location." ) |
| 48 | + set ( LUA_PATH_DEFAULT "./?.lua;${LUA_LDIR}?.lua;${LUA_LDIR}?/init.lua;${LUA_CDIR}?.lua;${LUA_CDIR}?/init.lua" ) |
| 49 | + set ( LUA_CPATH_DEFAULT "./?${CMAKE_SHARED_MODULE_SUFFIX};${LUA_CDIR}?${CMAKE_SHARED_MODULE_SUFFIX};${LUA_CDIR}loadall${CMAKE_SHARED_MODULE_SUFFIX}" ) |
| 50 | +endif () |
| 51 | + |
| 52 | +## SETUP |
| 53 | +# Optional libraries |
| 54 | +find_package ( Readline ) |
| 55 | +if ( READLINE_FOUND ) |
| 56 | + option ( LUA_USE_READLINE "Use readline in the Lua CLI." ON ) |
| 57 | +endif () |
| 58 | + |
| 59 | +find_package ( Curses ) |
| 60 | +if ( CURSES_FOUND ) |
| 61 | + option ( LUA_USE_CURSES "Use curses in the Lua CLI." ON ) |
| 62 | +endif () |
| 63 | + |
| 64 | +# Setup needed variables and libraries |
| 65 | +if ( LUA_USE_POSIX ) |
| 66 | + # On POSIX Lua links to standard math library "m" |
| 67 | + list ( APPEND LIBS m ) |
| 68 | +endif () |
| 69 | + |
| 70 | +if ( LUA_USE_DLOPEN ) |
| 71 | + # Link to dynamic linker library "dl" |
| 72 | + list ( APPEND LIBS dl ) |
| 73 | +endif () |
| 74 | + |
| 75 | +if ( LUA_WIN ) |
| 76 | + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE ) |
| 77 | + # Add extra rc files to the windows build |
| 78 | + if ( MSVC OR MINGW ) |
| 79 | + set ( LUA_DEF src/lua.def ) |
| 80 | + set ( LUA_DLL_RC src/lua_dll.rc ) |
| 81 | + set ( LUA_RC src/lua.rc ) |
| 82 | + set ( LUAC_RC src/lua_simple.rc ) |
| 83 | + endif () |
| 84 | +endif () |
| 85 | + |
| 86 | +if ( LUA_USE_READLINE ) |
| 87 | + # Add readline |
| 88 | + include_directories ( ${READLINE_INCLUDE_DIR} ) |
| 89 | + list ( APPEND LIBS ${READLINE_LIBRARY} ) |
| 90 | +endif () |
| 91 | + |
| 92 | +if ( LUA_USE_CURSES ) |
| 93 | + # Add curses |
| 94 | + include_directories ( ${CURSES_INCLUDE_DIR} ) |
| 95 | + list ( APPEND LIBS ${CURSES_LIBRARY} ) |
| 96 | +endif () |
| 97 | + |
| 98 | +## SOURCES |
| 99 | +# Generate luaconf.h |
| 100 | +configure_file ( src/luaconf.h.in ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h ) |
| 101 | + |
| 102 | +# Sources and headers |
| 103 | +include_directories ( src ${CMAKE_CURRENT_BINARY_DIR} ) |
| 104 | +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/linit.c ) |
| 105 | +set ( SRC_LUA src/lua.c ) |
| 106 | +set ( SRC_LUAC src/luac.c src/print.c ) |
| 107 | + |
| 108 | +if ( LUA_USE_RELATIVE_LOADLIB ) |
| 109 | + # Use modified loadlib |
| 110 | + list ( APPEND SRC_LIB src/loadlib_rel.c ) |
| 111 | +else () |
| 112 | + list ( APPEND SRC_LIB src/loadlib.c ) |
| 113 | +endif () |
| 114 | + |
| 115 | +## BUILD |
| 116 | +# Create dynamic library |
| 117 | +add_library ( liblua SHARED ${SRC_LIB} ${LUA_DLL_RC} ${LUA_DEF} ) |
| 118 | +target_link_libraries ( liblua ${LIBS} ) |
| 119 | +set_target_properties ( liblua PROPERTIES OUTPUT_NAME lua51 CLEAN_DIRECT_OUTPUT 1 ) |
| 120 | + |
| 121 | +# Create static library, this is needed to compile luac in the 5.1.x Lua series |
| 122 | +add_library ( liblua_static STATIC ${SRC_LIB} ) |
| 123 | +target_link_libraries ( liblua_static ${LIBS} ) |
| 124 | + |
| 125 | +add_executable ( lua ${SRC_LUA} ${LUA_RC} ) |
| 126 | +target_link_libraries ( lua liblua ) |
| 127 | + |
| 128 | +add_executable ( luac ${SRC_LUAC} ${LUAC_RC} ) |
| 129 | +target_link_libraries ( luac liblua_static ) |
| 130 | + |
| 131 | +## INSTALL |
| 132 | +install ( TARGETS lua luac liblua RUNTIME DESTINATION ${INSTALL_BIN} LIBRARY DESTINATION ${INSTALL_LIB} ARCHIVE DESTINATION ${INSTALL_LIB} ) |
| 133 | +install ( FILES src/lua.h src/lualib.h src/lauxlib.h etc/lua.hpp ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h DESTINATION ${INSTALL_INC} ) |
| 134 | +install ( FILES etc/strict.lua DESTINATION ${INSTALL_LMOD} ) |
| 135 | +install ( DIRECTORY doc etc test DESTINATION ${INSTALL_DATA} ) |
| 136 | +install ( FILES README COPYRIGHT HISTORY DESTINATION ${INSTALL_DATA} ) |
| 137 | + |
| 138 | +## TESTS |
| 139 | +add_lua_test ( test/bisect.lua ) |
| 140 | +add_lua_test ( test/cf.lua ) |
| 141 | +add_lua_test ( test/echo.lua ) |
| 142 | +add_lua_test ( test/env.lua ) |
| 143 | +add_lua_test ( test/factorial.lua ) |
| 144 | +add_lua_test ( test/fib.lua ) |
| 145 | +add_lua_test ( test/fibfor.lua ) |
| 146 | +#add_lua_test ( test/globals.lua ) # Requires input |
| 147 | +add_lua_test ( test/hello.lua ) |
| 148 | +add_lua_test ( test/life.lua ) |
| 149 | +#add_lua_test ( test/luac.lua ) # Requires input |
| 150 | +add_lua_test ( test/printf.lua ) |
| 151 | +#add_lua_test ( test/readonly.lua ) # this is aimed to fail, modification is required |
| 152 | +add_lua_test ( test/sieve.lua ) |
| 153 | +add_lua_test ( test/sort.lua ) |
| 154 | +#add_lua_test ( test/table.lua ) # Requires input |
| 155 | +add_lua_test ( test/trace-calls.lua ) |
| 156 | +add_lua_test ( test/trace-globals.lua ) |
| 157 | +#add_lua_test ( test/xd.lua ) # Requires input |
| 158 | + |
| 159 | + |
0 commit comments