blob: ab94525d43641087b60b2794c89607501d9a0a7e (
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
|
########################################################################
# 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}/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()
########################################################################
# 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}
)
|