forked from cocaine/cocaine-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
162 lines (134 loc) · 3.85 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(COCAINE-CORE)
SET(COCAINE_VERSION_MAJOR 0)
SET(COCAINE_VERSION_MINOR 12)
SET(COCAINE_VERSION_RELEASE 0)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
IF(NOT APPLE)
OPTION(COCAINE_ALLOW_CGROUPS "Build CGroups support for Process Isolate" ON)
ELSE()
OPTION(COCAINE_ALLOW_CGROUPS "Build CGroups support for Process Isolate" OFF)
ENDIF()
OPTION(COCAINE_ALLOW_RAFT "Build Raft support for Runtime" OFF)
INCLUDE(cmake/locate_library.cmake)
LOCATE_LIBRARY(LIBARCHIVE "archive.h" "archive")
IF(NOT APPLE)
LOCATE_LIBRARY(LIBBFD "bfd.h" "bfd")
SET(LIBBFD_LIBRARY "bfd" "dl")
ENDIF()
FIND_PACKAGE(Boost 1.48.0
REQUIRED COMPONENTS
filesystem
program_options
system
thread)
IF(COCAINE_ALLOW_CGROUPS)
LOCATE_LIBRARY(LIBCGROUP "libcgroup.h" "cgroup")
SET(LIBCGROUP_LIBRARY "cgroup")
ENDIF()
LOCATE_LIBRARY(LIBLTDL "ltdl.h" "ltdl")
LOCATE_LIBRARY(LIBMSGPACK "msgpack.hpp" "msgpack")
LOCATE_LIBRARY(LIBMHASH "mhash.h" "mhash")
IF(NOT APPLE)
LOCATE_LIBRARY(LIBUUID "uuid/uuid.h" "uuid")
SET(LIBUUID_LIBRARY "uuid")
ENDIF()
CONFIGURE_FILE(
"${PROJECT_SOURCE_DIR}/config.hpp.in"
"${PROJECT_SOURCE_DIR}/include/cocaine/config.hpp")
INCLUDE_DIRECTORIES(
${Boost_INCLUDE_DIRS}
${LIBCGROUP_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIR}
${LIBMHASH_INCLUDE_DIRS}
${LIBMSGPACK_INCLUDE_DIRS}
${LIBARCHIVE_INCLUDE_DIRS}
${LIBLTDL_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(BEFORE
${PROJECT_SOURCE_DIR}/foreign/backward-cpp
${PROJECT_SOURCE_DIR}/foreign/blackhole/src
${PROJECT_SOURCE_DIR}/foreign/rapidjson/include
${PROJECT_SOURCE_DIR}/include)
LINK_DIRECTORIES(
${Boost_LIBRARY_DIRS}
${LIBCGROUP_LIBRARY_DIRS}
${LIBMHASH_LIBRARY_DIRS}
${LIBMSGPACK_LIBRARY_DIRS}
${LIBARCHIVE_LIBRARY_DIRS}
${LIBLTDL_LIBRARY_DIRS})
IF(COCAINE_ALLOW_RAFT)
ADD_LIBRARY(cocaine-raft STATIC
src/raft.cpp
src/service/counter.cpp)
SET_TARGET_PROPERTIES(cocaine-raft PROPERTIES
COMPILE_FLAGS "-std=c++0x -W -Wall -Werror -pedantic -fPIC")
SET(LIBCOCAINE_RAFT cocaine-raft)
ENDIF()
ADD_LIBRARY(cocaine-core SHARED
src/actor.cpp
src/api.cpp
src/chamber.cpp
src/cluster/multicast.cpp
src/context.cpp
src/crypto.cpp
src/defaults.cpp
src/dispatch.cpp
src/dynamic.cpp
src/engine.cpp
src/essentials.cpp
src/gateway/adhoc.cpp
src/isolate/process.cpp
src/isolate/process/archive.cpp
src/isolate/process/spooler.cpp
src/logging.cpp
src/repository.cpp
src/service/locator.cpp
src/service/logging.cpp
src/service/node.cpp
src/service/node/app.cpp
src/service/node/engine.cpp
src/service/node/manifest.cpp
src/service/node/profile.cpp
src/service/node/queue.cpp
src/service/node/session.cpp
src/service/node/slave.cpp
src/service/storage.cpp
src/session.cpp
src/storage/files.cpp
src/unique_id.cpp)
TARGET_LINK_LIBRARIES(cocaine-core
archive
${Boost_LIBRARIES}
${LIBCGROUP_LIBRARY}
${LIBCOCAINE_RAFT}
ltdl
mhash
msgpack
${LIBUUID_LIBRARY})
SET_TARGET_PROPERTIES(cocaine-core PROPERTIES
VERSION 3)
ADD_EXECUTABLE(cocaine-runtime
src/runtime/pid_file.cpp
src/runtime/runtime.cpp)
TARGET_LINK_LIBRARIES(cocaine-runtime
stdc++
${LIBBFD_LIBRARY}
${Boost_LIBRARIES}
cocaine-core)
SET_TARGET_PROPERTIES(cocaine-core cocaine-runtime PROPERTIES
COMPILE_FLAGS "-std=c++0x -W -Wall -Werror -pedantic")
IF(NOT COCAINE_LIBDIR)
SET(COCAINE_LIBDIR lib)
ENDIF()
INSTALL(
TARGETS
cocaine-core
cocaine-runtime
RUNTIME DESTINATION bin COMPONENT runtime
LIBRARY DESTINATION ${COCAINE_LIBDIR} COMPONENT runtime
ARCHIVE DESTINATION ${COCAINE_LIBDIR} COMPONENT development)
INSTALL(
DIRECTORY
include/
DESTINATION include
COMPONENT development)