blob: ead097a65e4c1a409ec00e1dbfc6725276b131b7 (
plain)
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
|
########################################################################
# Setup the GRAS library build
########################################################################
include_directories(${GRAS_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
########################################################################
# Setup Boost
########################################################################
find_package(Boost COMPONENTS thread date_time regex system filesystem)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
list(APPEND GRAS_LIBRARIES ${Boost_LIBRARIES})
########################################################################
# Setup Theron Deps
########################################################################
set(THERON_SOURCE_DIR ${GRAS_SOURCE_DIR}/Theron)
include(${THERON_SOURCE_DIR}/cmake/TheronSetup.cmake)
include_directories(${THERON_INCLUDE_DIRS})
link_directories(${THERON_LIBRARY_DIRS})
add_definitions(${THERON_DEFINES})
list(APPEND GRAS_LIBRARIES ${THERON_LIBRARIES})
list(APPEND GRAS_SOURCES ${THERON_SOURCES})
add_definitions(-DTHERON_ENABLE_DEFAULTALLOCATOR_CHECKS=1)
add_definitions(-DTHERON_ENABLE_COUNTERS=1)
########################################################################
# Setup Apology Deps
########################################################################
include_directories(${GRAS_SOURCE_DIR}/Apology/include)
include_directories(${GRAS_SOURCE_DIR}/Apology/lib)
file(GLOB apology_sources "${GRAS_SOURCE_DIR}/Apology/lib/*.cpp")
list(APPEND GRAS_SOURCES ${apology_sources})
########################################################################
# Setup Module Loader
########################################################################
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/module_loader.cpp
${CMAKE_CURRENT_BINARY_DIR}/module_loader.cpp
@ONLY)
list(APPEND GRAS_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/module_loader.cpp
)
list(APPEND GRAS_LIBRARIES ${CMAKE_DL_LIBS})
########################################################################
# Append gras-core library sources
########################################################################
list(APPEND GRAS_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/debug.cpp
${CMAKE_CURRENT_SOURCE_DIR}/callable.cpp
${CMAKE_CURRENT_SOURCE_DIR}/element.cpp
${CMAKE_CURRENT_SOURCE_DIR}/element_uid.cpp
${CMAKE_CURRENT_SOURCE_DIR}/factory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/jit_factory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sbuffer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/circular_buffer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/buffer_queue_circ.cpp
${CMAKE_CURRENT_SOURCE_DIR}/buffer_queue_pool.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tags.cpp
${CMAKE_CURRENT_SOURCE_DIR}/time_tag.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_config.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_message.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_consume.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_produce.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_calls.cpp
${CMAKE_CURRENT_SOURCE_DIR}/thread_pool.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_actor.cpp
${CMAKE_CURRENT_SOURCE_DIR}/task_done.cpp
${CMAKE_CURRENT_SOURCE_DIR}/task_fail.cpp
${CMAKE_CURRENT_SOURCE_DIR}/task_main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_allocator.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_handlers.cpp
${CMAKE_CURRENT_SOURCE_DIR}/topology_handler.cpp
${CMAKE_CURRENT_SOURCE_DIR}/input_handlers.cpp
${CMAKE_CURRENT_SOURCE_DIR}/output_handlers.cpp
${CMAKE_CURRENT_SOURCE_DIR}/hier_block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/top_block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/register_messages.cpp
${CMAKE_CURRENT_SOURCE_DIR}/weak_container.cpp
${CMAKE_CURRENT_SOURCE_DIR}/serialize_types.cpp
)
if (${Boost_VERSION} LESS 104100)
message(WARNING "Boost library version < 104100 does not support property tree - GRAS will be compiled without query interface")
list(APPEND GRAS_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/top_block_query_no_ptree.cpp
)
else()
list(APPEND GRAS_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/top_block_query.cpp
${CMAKE_CURRENT_SOURCE_DIR}/json_parser.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pmc_to_ptree.cpp
)
endif()
########################################################################
# Setup factory compiler
########################################################################
#step 1) call into the LLVM find package
find_program(LLVM_CONFIG_EXECUTABLE llvm-config DOC "llvm-config executable")
if(LLVM_CONFIG_EXECUTABLE)
find_package(LLVM)
endif()
#step 2) setup LLVM if found and find Clang
if(LLVM_FOUND)
add_definitions(-DHAVE_LLVM)
add_definitions(${LLVM_CFLAGS})
link_directories(${LLVM_LIBRARY_DIRS})
include_directories(${LLVM_INCLUDE_DIRS})
list(APPEND GRAS_LIBRARIES ${LLVM_MODULE_LIBS})
list(APPEND GRAS_LIBRARIES ${LLVM_LDFLAGS})
find_package(Clang)
endif()
#step 3) setup Clang if found
if(CLANG_FOUND)
add_definitions(-DHAVE_CLANG)
include_directories(${CLANG_INCLUDE_DIRS})
list(APPEND GRAS_LIBRARIES ${CLANG_LIBS})
endif()
########################################################################
# Build library
########################################################################
add_library(gras SHARED ${GRAS_SOURCES})
target_link_libraries(gras ${GRAS_LIBRARIES})
set_target_properties(gras PROPERTIES VERSION ${GRAS_VERSION})
set_target_properties(gras PROPERTIES DEFINE_SYMBOL "GRAS_DLL_EXPORTS")
install(TARGETS gras
LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT ${GRAS_COMP_RUNTIME} # .so file
ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT ${GRAS_COMP_DEVEL} # .lib file
RUNTIME DESTINATION bin COMPONENT ${GRAS_COMP_RUNTIME} # .dll file
)
########################################################################
# Build pkg config file
########################################################################
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/gras.pc.in
${CMAKE_CURRENT_BINARY_DIR}/gras.pc
@ONLY)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/gras.pc
DESTINATION lib${LIB_SUFFIX}/pkgconfig
COMPONENT ${GRAS_COMP_DEVEL}
)
|