aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt86
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
7PROJECT(lanes C)
8CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
9INCLUDE(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
14IF(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)
20ENDIF(CYGWIN)
21
22#2DO - use provided bin2c
23# Compile Lua bytecode to C
24ADD_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")
31SET_SOURCE_FILES_PROPERTIES(src/lanes.c PROPERTIES OBJECT_DEPENDS
32 ${CMAKE_CURRENT_BINARY_DIR}/keeper.lch)
33INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
34
35
36# Build
37INCLUDE_DIRECTORIES(src)
38ADD_LIBRARY(lua51-lanes MODULE src/lanes.c src/threading.c src/tools.c)
39
40IF(UNIX AND NOT CYGWIN)
41 SET(LIBS pthread)
42ENDIF(UNIX AND NOT CYGWIN)
43
44IF(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
72ENDIF()
73
74
75
76
77TARGET_LINK_LIBRARIES(lua51-lanes ${LUA_LIBRARY} ${LIBS})
78SET_TARGET_PROPERTIES(lua51-lanes PROPERTIES PREFIX "")
79
80# Install all files and documentation
81INSTALL (TARGETS lua51-lanes DESTINATION ${INSTALL_CMOD})
82INSTALL (FILES src/lanes.lua DESTINATION ${INSTALL_LMOD})
83
84INSTALL (FILES ABOUT BUGS COPYRIGHT CHANGES README TODO DESTINATION ${INSTALL_DATA})
85INSTALL (DIRECTORY docs/ DESTINATION ${INSTALL_DOC})
86INSTALL (DIRECTORY tests/ DESTINATION ${INSTALL_TEST})