Files
fail/src/CMakeLists.txt
Horst Schirmeier d3d2faf680 globally rename Fail* to FAIL*
Change-Id: Ief2cb687cc69dd92c2e04f9314f0f1347e0a84ed
2016-07-26 17:41:32 +02:00

51 lines
2.3 KiB
CMake

### Setup search paths for headers ##
include_directories(${CMAKE_CURRENT_BINARY_DIR}/core)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/core/comm)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core)
# We need to control all the protoc import paths to ensure, that all
# protoc imports refer to the same root path. Otherwise the generated
# protoc headers are not comptabile.
SET(PROTOBUF_GENERATE_CPP_APPEND_PATH FALSE)
SET(PROTOBUF_IMPORT_DIRS "/usr/include;${CMAKE_CURRENT_SOURCE_DIR}/core/comm"
"${CMAKE_CURRENT_BINARY_DIR}/core/comm")
# Note: CMAKE_CURRENT_BINARY_DIR is needed to find "FailConfig.hpp", which
# is generated by CMake from config/FailConfig.hpp.in and stored in
# your build-dir. (The same goes for "FailControlMessage.pb.h", etc.)
# This is done in the "src"-folder because experiments need to include
# FAIL* headers as well (see hierarchy of CMakeLists.txt's).
## Add CMakeLists from subdirectories ##
# The FAIL* core source files (and it's subdirectories):
add_subdirectory(core)
# Here we add all user-defined experiments (which fills the target list)
add_subdirectory(experiments)
message(STATUS "[${PROJECT_NAME}] Chosen experiment targets:")
foreach(experiment_name ${EXPERIMENTS_ACTIVATED})
message(STATUS "[${PROJECT_NAME}] -> ${experiment_name}")
endforeach(experiment_name)
# Here we add activated plugins
add_subdirectory(plugins)
message(STATUS "[${PROJECT_NAME}] Chosen plugin targets:")
foreach(plugin_name ${PLUGINS_ACTIVATED})
message(STATUS "[${PROJECT_NAME}] -> ${plugin_name}")
endforeach(plugin_name)
# libfail: dummy library that pulls in all other libraries as dependencies
# (probably there's a smarter way to do that with cmake?)
add_library(fail dummy.cc)
## Setup build dependencies of the FAIL* lib
## -> the FAIL* targets and user defined experiment targets
# start/end-group: ld must iterate over these archives more than once to figure
# out which objects are needed
set(experiment_libraries "")
foreach(exp_or_plugin ${EXPERIMENTS_ACTIVATED} ${PLUGINS_ACTIVATED})
set(experiment_libraries ${experiment_libraries} fail-${exp_or_plugin})
endforeach(exp_or_plugin)
target_link_libraries(fail fail-sal fail-cpn fail-efw fail-comm fail-util ${experiment_libraries})