diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1799c01 --- /dev/null +++ b/CMakeLists.txt | |||
@@ -0,0 +1,86 @@ | |||
1 | # Copyright (C) 2007-2009 LuaDist. | ||
2 | # Created by Peter Kapec | ||
3 | # Redistribution and use of this file is allowed according to the terms of the MIT license. | ||
4 | # For details see the COPYRIGHT file distributed with LuaDist. | ||
5 | # Please note that the package source code is licensed under its own license. | ||
6 | |||
7 | PROJECT(lanes C) | ||
8 | CMAKE_MINIMUM_REQUIRED(VERSION 2.8) | ||
9 | INCLUDE(dist.cmake) | ||
10 | |||
11 | #2DO - patch threading.c to suppot cygwin. | ||
12 | # The following values are just a guess. | ||
13 | # WARNING: test segfault under Cygwin | ||
14 | IF(CYGWIN) | ||
15 | ADD_DEFINITIONS(-D_PRIO_MODE=SCHED_FIFO) | ||
16 | ADD_DEFINITIONS(-D_PRIO_HI=15) # maximum that doesn't crash | ||
17 | ADD_DEFINITIONS(-D_PRIO_0=0) | ||
18 | ADD_DEFINITIONS(-D_PRIO_LO=-15) # ??? | ||
19 | ADD_DEFINITIONS(-Dpthread_yield=sched_yield) | ||
20 | ENDIF(CYGWIN) | ||
21 | |||
22 | #2DO - use provided bin2c | ||
23 | # Compile Lua bytecode to C | ||
24 | ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/keeper.lch | ||
25 | DEPENDS src/keeper.lua | ||
26 | COMMAND "${LUAC}" "-o" "${CMAKE_CURRENT_BINARY_DIR}/keeper.lo" | ||
27 | "${CMAKE_CURRENT_SOURCE_DIR}/src/keeper.lua" | ||
28 | COMMAND "${LUA}" "${CMAKE_CURRENT_SOURCE_DIR}/tools/bin2c.lua" | ||
29 | "${CMAKE_CURRENT_BINARY_DIR}/keeper.lo" | ||
30 | "-o" "${CMAKE_CURRENT_BINARY_DIR}/keeper.lch") | ||
31 | SET_SOURCE_FILES_PROPERTIES(src/lanes.c PROPERTIES OBJECT_DEPENDS | ||
32 | ${CMAKE_CURRENT_BINARY_DIR}/keeper.lch) | ||
33 | INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) | ||
34 | |||
35 | |||
36 | # Build | ||
37 | INCLUDE_DIRECTORIES(src) | ||
38 | ADD_LIBRARY(lua51-lanes MODULE src/lanes.c src/threading.c src/tools.c) | ||
39 | |||
40 | IF(UNIX AND NOT CYGWIN) | ||
41 | SET(LIBS pthread) | ||
42 | ENDIF(UNIX AND NOT CYGWIN) | ||
43 | |||
44 | IF(MINGW) | ||
45 | #~ FIND_FILE(MSVCR80 NAMES msvcr80.dll msvcr90.dll) | ||
46 | #~ SET(LIBS gcc ${MSVCR80}) | ||
47 | #~ IF(MSVC90) | ||
48 | |||
49 | #~ from InstallRequiredSystemLibraries.cmake | ||
50 | |||
51 | IF(CMAKE_CL_64) | ||
52 | SET(CMAKE_MSVC_ARCH amd64) | ||
53 | ELSE(CMAKE_CL_64) | ||
54 | SET(CMAKE_MSVC_ARCH x86) | ||
55 | ENDIF(CMAKE_CL_64) | ||
56 | |||
57 | GET_FILENAME_COMPONENT(devenv_dir "${CMAKE_MAKE_PROGRAM}" PATH) | ||
58 | GET_FILENAME_COMPONENT(base_dir "${devenv_dir}/../.." ABSOLUTE) | ||
59 | |||
60 | # Find the runtime library redistribution directory. | ||
61 | FIND_PATH(MSVC90_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest | ||
62 | PATHS | ||
63 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]/../../VC/redist" | ||
64 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\9.0;InstallDir]/../../VC/redist" | ||
65 | "${base_dir}/VC/redist" | ||
66 | ) | ||
67 | SET(MSVC90_CRT_DIR "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.CRT") | ||
68 | SET(LIBS gcc msvcr90 "${MSVC90_CRT_DIR}/msvcr90.dll") | ||
69 | |||
70 | #~ ENDIF() | ||
71 | |||
72 | ENDIF() | ||
73 | |||
74 | |||
75 | |||
76 | |||
77 | TARGET_LINK_LIBRARIES(lua51-lanes ${LUA_LIBRARY} ${LIBS}) | ||
78 | SET_TARGET_PROPERTIES(lua51-lanes PROPERTIES PREFIX "") | ||
79 | |||
80 | # Install all files and documentation | ||
81 | INSTALL (TARGETS lua51-lanes DESTINATION ${INSTALL_CMOD}) | ||
82 | INSTALL (FILES src/lanes.lua DESTINATION ${INSTALL_LMOD}) | ||
83 | |||
84 | INSTALL (FILES ABOUT BUGS COPYRIGHT CHANGES README TODO DESTINATION ${INSTALL_DATA}) | ||
85 | INSTALL (DIRECTORY docs/ DESTINATION ${INSTALL_DOC}) | ||
86 | INSTALL (DIRECTORY tests/ DESTINATION ${INSTALL_TEST}) | ||