aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Germain <bnt.germain@gmail.com>2019-05-05 10:08:53 +0200
committerGitHub <noreply@github.com>2019-05-05 10:08:53 +0200
commit4109442fc48cfb30f83c4f0de8a62d51a9781249 (patch)
tree0e427073b23b9b342f9777f2b0fa30c0197bfe3f
parent9c84074c89661cd1e776eff3d4aa5329a2ac9524 (diff)
parent8bb423b0231fb5b9c32f20badbea30f90e137891 (diff)
downloadlanes-4109442fc48cfb30f83c4f0de8a62d51a9781249.tar.gz
lanes-4109442fc48cfb30f83c4f0de8a62d51a9781249.tar.bz2
lanes-4109442fc48cfb30f83c4f0de8a62d51a9781249.zip
Merge pull request #176 from sonoro1234/clean_cmake
cmake: cleaning and only link against lualib on windows
-rw-r--r--CMakeLists.txt27
-rw-r--r--dist.cmake130
2 files changed, 12 insertions, 145 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 61b7c0d..7f2701b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,11 +6,9 @@
6 6
7PROJECT(lanes C) 7PROJECT(lanes C)
8CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 8CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
9INCLUDE(dist.cmake) 9
10 10
11FIND_PACKAGE(Lua51 REQUIRED) 11FIND_PACKAGE(Lua51 REQUIRED)
12FIND_PROGRAM(LUA NAMES lua5.1 lua51 lua)
13FIND_PROGRAM(LUAC NAMES luac5.1 luac51 luac)
14INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR}) 12INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
15 13
16if(USE_PTHREAD) 14if(USE_PTHREAD)
@@ -27,17 +25,6 @@ IF(CYGWIN)
27 ADD_DEFINITIONS(-Dpthread_yield=sched_yield) 25 ADD_DEFINITIONS(-Dpthread_yield=sched_yield)
28ENDIF(CYGWIN) 26ENDIF(CYGWIN)
29 27
30#2DO - use provided bin2c
31# Embed keeper.lua in text form in C (embedding bytecode is not LuaJIT2-compatible)
32#ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/keeper.lch
33# DEPENDS src/keeper.lua
34# COMMAND "${LUA}" "${CMAKE_CURRENT_SOURCE_DIR}/tools/bin2c.lua"
35# "${CMAKE_CURRENT_SOURCE_DIR}/src/keeper.lua"
36# "-o" "${CMAKE_CURRENT_BINARY_DIR}/keeper.lch")
37#SET_SOURCE_FILES_PROPERTIES(src/lanes.c PROPERTIES OBJECT_DEPENDS
38# ${CMAKE_CURRENT_BINARY_DIR}/keeper.lch)
39#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
40
41 28
42# Build 29# Build
43INCLUDE_DIRECTORIES(src) 30INCLUDE_DIRECTORIES(src)
@@ -49,11 +36,21 @@ IF(UNIX AND NOT CYGWIN)
49ENDIF(UNIX AND NOT CYGWIN) 36ENDIF(UNIX AND NOT CYGWIN)
50 37
51 38
52 39if(WIN32)
53TARGET_LINK_LIBRARIES(core ${LUA_LIBRARY} ${LIBS}) 40TARGET_LINK_LIBRARIES(core ${LUA_LIBRARY} ${LIBS})
41else(WIN32)
42TARGET_LINK_LIBRARIES(core ${LIBS})
43endif(WIN32)
44
54SET_TARGET_PROPERTIES(core PROPERTIES PREFIX "") 45SET_TARGET_PROPERTIES(core PROPERTIES PREFIX "")
55 46
56# Install all files and documentation 47# Install all files and documentation
48set(INSTALL_LMOD share/lua/lmod CACHE PATH "Directory to install Lua modules.")
49set(INSTALL_CMOD share/lua/cmod CACHE PATH "Directory to install Lua binary modules.")
50set(INSTALL_DATA share/${PROJECT_NAME} CACHE PATH "Directory the package can store documentation, tests or other data in.")
51set(INSTALL_DOC ${INSTALL_DATA}/doc CACHE PATH "Recommended directory to install documentation into.")
52set(INSTALL_TEST ${INSTALL_DATA}/test CACHE PATH "Recommended directory to install tests into.")
53
57INSTALL (TARGETS core DESTINATION ${INSTALL_CMOD}) 54INSTALL (TARGETS core DESTINATION ${INSTALL_CMOD})
58INSTALL (FILES src/lanes.lua DESTINATION ${INSTALL_LMOD}) 55INSTALL (FILES src/lanes.lua DESTINATION ${INSTALL_LMOD})
59 56
diff --git a/dist.cmake b/dist.cmake
deleted file mode 100644
index 95928b2..0000000
--- a/dist.cmake
+++ /dev/null
@@ -1,130 +0,0 @@
1# LuaDist CMake utility library.
2# Provides variables and utility functions common to LuaDist CMake builds.
3#
4# Copyright (C) 2007-2010 LuaDist.
5# by David Manura, Peter Drahos
6# Redistribution and use of this file is allowed according to the terms of the MIT license.
7# For details see the COPYRIGHT file distributed with LuaDist.
8# Please note that the package source code is licensed under its own license.
9
10# Few convinence settings
11SET (CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
12SET (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_MODULE_PATH})
13
14# Where to install module parts:
15set(INSTALL_BIN bin CACHE PATH "Where to install binaries to.")
16set(INSTALL_LIB lib CACHE PATH "Where to install libraries to.")
17set(INSTALL_INC include CACHE PATH "Where to install headers to.")
18set(INSTALL_ETC etc CACHE PATH "Where to store configuration files")
19set(INSTALL_LMOD share/lua/lmod CACHE PATH "Directory to install Lua modules.")
20set(INSTALL_CMOD share/lua/cmod CACHE PATH "Directory to install Lua binary modules.")
21set(INSTALL_DATA share/${PROJECT_NAME} CACHE PATH "Directory the package can store documentation, tests or other data in.")
22set(INSTALL_DOC ${INSTALL_DATA}/doc CACHE PATH "Recommended directory to install documentation into.")
23set(INSTALL_EXAMPLE ${INSTALL_DATA}/example CACHE PATH "Recommended directory to install examples into.")
24set(INSTALL_TEST ${INSTALL_DATA}/test CACHE PATH "Recommended directory to install tests into.")
25set(INSTALL_FOO ${INSTALL_DATA}/etc CACHE PATH "Where to install additional files")
26
27
28# In MSVC, prevent warnings that can occur when using standard libraries.
29if(MSVC)
30 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
31endif(MSVC)
32
33# Adds Lua shared library module target `_target`.
34# Additional sources to build the module are listed after `_target`.
35macro(add_lua_module _target)
36 find_package(Lua51 REQUIRED)
37 include_directories(${LUA_INCLUDE_DIR}) #2DO: somehow apply only to _target?
38
39 add_library(${_target} MODULE ${ARGN})
40 set_target_properties(${_target} PROPERTIES PREFIX "")
41 target_link_libraries(${_target} ${LUA_LIBRARY})
42
43 IF(WIN32)
44 set_target_properties(${_target} PROPERTIES LINK_FLAGS "-Wl,--enable-auto-import")
45 ENDIF()
46
47endmacro(add_lua_module)
48
49# Runs Lua script `_testfile` under CTest tester.
50# Optional argument `_testcurrentdir` is current working directory to run test under
51# (defaults to ${CMAKE_CURRENT_BINARY_DIR}).
52# Both paths, if relative, are relative to ${CMAKE_CURRENT_SOURCE_DIR}.
53# Under LuaDist, set test=true in config.lua to enable testing.
54macro(add_lua_test _testfile)
55 include(CTest)
56 if(BUILD_TESTING)
57 find_program(LUA NAMES lua lua.bat)
58 get_filename_component(TESTFILEABS ${_testfile} ABSOLUTE)
59 get_filename_component(TESTFILENAME ${_testfile} NAME)
60 get_filename_component(TESTFILEBASE ${_testfile} NAME_WE)
61
62 # Write wrapper script.
63 set(TESTWRAPPER ${CMAKE_CURRENT_BINARY_DIR}/${TESTFILENAME})
64 set(TESTWRAPPERSOURCE
65"package.path = '${CMAKE_CURRENT_BINARY_DIR}/?.lua\;${CMAKE_CURRENT_SOURCE_DIR}/?.lua\;' .. package.path
66package.cpath = '${CMAKE_CURRENT_BINARY_DIR}/?.so\;${CMAKE_CURRENT_BINARY_DIR}/?.dll\;' .. package.cpath
67return dofile '${TESTFILEABS}'
68" )
69 if(${ARGC} GREATER 1)
70 set(_testcurrentdir ${ARGV1})
71 get_filename_component(TESTCURRENTDIRABS ${_testcurrentdir} ABSOLUTE)
72 set(TESTWRAPPERSOURCE
73"require 'lfs'
74lfs.chdir('${TESTCURRENTDIRABS}')
75${TESTWRAPPERSOURCE}")
76 endif()
77 FILE(WRITE ${TESTWRAPPER} ${TESTWRAPPERSOURCE})
78
79 add_test(${TESTFILEBASE} ${LUA} ${TESTWRAPPER})
80 endif(BUILD_TESTING)
81
82 # see also http://gdcm.svn.sourceforge.net/viewvc/gdcm/Sandbox/CMakeModules/UsePythonTest.cmake
83endmacro(add_lua_test)
84
85# Converts Lua source file `_source` to binary string embedded in C source
86# file `_target`. Optionally compiles Lua source to byte code (not available
87# under LuaJIT2, which doesn't have a bytecode loader). Additionally, Lua
88# versions of bin2c [1] and luac [2] may be passed respectively as additional
89# arguments.
90#
91# [1] http://lua-users.org/wiki/BinToCee
92# [2] http://lua-users.org/wiki/LuaCompilerInLua
93function(add_lua_bin2c _target _source)
94 find_program(LUA NAMES lua lua.bat)
95 execute_process(COMMAND ${LUA} -e "string.dump(function()end)" RESULT_VARIABLE _LUA_DUMP_RESULT ERROR_QUIET)
96 if (NOT ${_LUA_DUMP_RESULT})
97 SET(HAVE_LUA_DUMP true)
98 endif()
99 message("-- string.dump=${HAVE_LUA_DUMP}")
100
101 if (ARGV2)
102 get_filename_component(BIN2C ${ARGV2} ABSOLUTE)
103 set(BIN2C ${LUA} ${BIN2C})
104 else()
105 find_program(BIN2C NAMES bin2c bin2c.bat)
106 endif()
107 if (HAVE_LUA_DUMP)
108 if (ARGV3)
109 get_filename_component(LUAC ${ARGV3} ABSOLUTE)
110 set(LUAC ${LUA} ${LUAC})
111 else()
112 find_program(LUAC NAMES luac luac.bat)
113 endif()
114 endif (HAVE_LUA_DUMP)
115 message("-- bin2c=${BIN2C}")
116 message("-- luac=${LUAC}")
117
118 get_filename_component(SOURCEABS ${_source} ABSOLUTE)
119 if (HAVE_LUA_DUMP)
120 get_filename_component(SOURCEBASE ${_source} NAME_WE)
121 add_custom_command(
122 OUTPUT ${_target} DEPENDS ${_source}
123 COMMAND ${LUAC} -o ${CMAKE_CURRENT_BINARY_DIR}/${SOURCEBASE}.lo ${SOURCEABS}
124 COMMAND ${BIN2C} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCEBASE}.lo ">${_target}" )
125 else()
126 add_custom_command(
127 OUTPUT ${_target} DEPENDS ${SOURCEABS}
128 COMMAND ${BIN2C} ${_source} ">${_target}" )
129 endif()
130endfunction(add_lua_bin2c)