Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
21628e3e
Commit
21628e3e
authored
Apr 18, 2020
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/cmake'
parents
eaea2944
1a54b9d7
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
200 additions
and
258 deletions
+200
-258
CMakeLists.txt
CMakeLists.txt
+94
-25
Jenkinsfile
Jenkinsfile
+18
-22
libcaf_core/CMakeLists.txt
libcaf_core/CMakeLists.txt
+39
-84
libcaf_io/CMakeLists.txt
libcaf_io/CMakeLists.txt
+25
-62
libcaf_openssl/CMakeLists.txt
libcaf_openssl/CMakeLists.txt
+24
-65
No files found.
CMakeLists.txt
View file @
21628e3e
...
...
@@ -66,31 +66,71 @@ if(NOT CAF_LOG_LEVEL IN_LIST CAF_VALID_LOG_LEVELS)
message
(
FATAL_ERROR
"Invalid log level:
\"
${
CAF_LOG_LEVEL
}
\"
"
)
endif
()
if
(
MSVC AND CAF_SANITIZERS
)
message
(
FATAL_ERROR
"Sanitizer builds are currently not supported on MSVC"
)
endif
()
# -- compiler setup ------------------------------------------------------------
if
(
MSVC
)
# Disable 4275 and 4251 (warnings regarding C++ classes at ABI boundaries).
add_compile_options
(
/wd4275 /wd4251
)
if
(
CAF_SANITIZERS
)
message
(
FATAL_ERROR
"Sanitizer builds are currently not supported on MSVC"
)
# Calls target_link_libraries for non-object library targets.
function
(
caf_target_link_libraries target access
)
get_target_property
(
targetType
${
target
}
TYPE
)
if
(
NOT targetType STREQUAL OBJECT_LIBRARY
)
target_link_libraries
(
${
target
}
${
access
}
${
ARGN
}
)
else
()
# If we can't link against it, at least make sure to pull in INTERFACE
# includes and compiler options.
foreach
(
arg
${
ARGN
}
)
if
(
TARGET
${
arg
}
)
target_include_directories
(
${
target
}
PRIVATE
$<TARGET_PROPERTY:
${
arg
}
,INTERFACE_INCLUDE_DIRECTORIES>
)
target_compile_options
(
${
target
}
PRIVATE
$<TARGET_PROPERTY:
${
arg
}
,INTERFACE_COMPILE_OPTIONS>
)
endif
()
endforeach
()
endif
()
elseif
(
CMAKE_CXX_COMPILER_ID MATCHES
"Clang"
endfunction
()
function
(
caf_set_default_properties
)
foreach
(
target
${
ARGN
}
)
if
(
MSVC
)
# Disable 4275 and 4251 (warnings regarding C++ classes at ABI boundaries).
target_compile_options
(
${
target
}
PRIVATE /wd4275 /wd4251
)
elseif
(
CMAKE_CXX_COMPILER_ID MATCHES
"Clang"
OR CMAKE_CXX_COMPILER_ID MATCHES
"GNU"
)
# Flags for both compilers.
add_compile_options
(
-ftemplate-depth=512 -ftemplate-backtrace-limit=0
-Wall -Wextra -pedantic
)
target_compile_options
(
${
target
}
PRIVATE -Wall -Wextra -pedantic
-ftemplate-depth=512 -ftemplate-backtrace-limit=0
)
if
(
CMAKE_CXX_COMPILER_ID MATCHES
"Clang"
)
# Flags for Clang only.
add_compile_options
(
-Wdocumentation
)
target_compile_options
(
${
target
}
PRIVATE
-Wdocumentation
)
else
()
# Flags for GCC only.
add_compile_options
(
-Wno-missing-field-initializers
)
target_compile_options
(
${
target
}
PRIVATE
-Wno-missing-field-initializers
)
endif
()
endif
()
if
(
CAF_SANITIZERS
)
add_compile_options
(
-fsanitize=
${
CAF_SANITIZERS
}
-fno-omit-frame-pointer
)
endif
()
endif
()
if
(
CAF_SANITIZERS
)
target_compile_options
(
${
target
}
PRIVATE
-fsanitize=
${
CAF_SANITIZERS
}
-fno-omit-frame-pointer
)
caf_target_link_libraries
(
${
target
}
PRIVATE
-fsanitize=
${
CAF_SANITIZERS
}
-fno-omit-frame-pointer
)
endif
()
# All of our object libraries can end up in shared libs => PIC.
get_target_property
(
targetType
${
target
}
TYPE
)
if
(
targetType STREQUAL OBJECT_LIBRARY
)
set_property
(
TARGET
${
target
}
PROPERTY POSITION_INDEPENDENT_CODE ON
)
endif
()
# We always place headers in the same directories and need to find generated
# headers from the bin dir.
target_include_directories
(
${
target
}
PRIVATE
"
${
CMAKE_BINARY_DIR
}
"
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
endforeach
()
endfunction
()
# -- unit testing setup / caf_add_test_suites function ------------------------
...
...
@@ -145,9 +185,7 @@ endif()
if
(
BUILD_SHARED_LIBS
)
set
(
CMAKE_CXX_VISIBILITY_PRESET hidden
)
set
(
CMAKE_VISIBILITY_INLINES_HIDDEN yes
)
if
(
POLICY CMP0063
)
cmake_policy
(
SET CMP0063 NEW
)
endif
()
endif
()
# -- utility targets -----------------------------------------------------------
...
...
@@ -160,7 +198,7 @@ if(CAF_ENABLE_UTILITY_TARGETS)
add_custom_target
(
update-enum-strings
)
# adds a consistency check that verifies that `cpp_file` is still valid by
# re-generating the file and comparing it to the existing file
function
(
add_enum_consistency_check hpp_file cpp_file
)
function
(
caf_
add_enum_consistency_check hpp_file cpp_file
)
set
(
input
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/
${
hpp_file
}
"
)
set
(
file_under_test
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/
${
cpp_file
}
"
)
set
(
output
"
${
CMAKE_CURRENT_BINARY_DIR
}
/check/
${
cpp_file
}
"
)
...
...
@@ -187,7 +225,7 @@ if(CAF_ENABLE_UTILITY_TARGETS)
add_dependencies
(
update-enum-strings
"
${
target_name
}
-update"
)
endfunction
()
else
()
function
(
add_enum_consistency_check hpp_file cpp_file
)
function
(
caf_
add_enum_consistency_check hpp_file cpp_file
)
# nop
endfunction
()
endif
()
...
...
@@ -250,6 +288,37 @@ add_custom_command(TARGET uninstall
COMMAND
"
${
CMAKE_COMMAND
}
"
-P
"
${
CMAKE_CURRENT_BINARY_DIR
}
/cmake_uninstall.cmake"
)
# -- utility function for installing library targets ---------------------------
function
(
caf_export_and_install_lib component
)
add_library
(
CAF::
${
component
}
ALIAS libcaf_
${
component
}
)
string
(
TOUPPER
"CAF_
${
component
}
_EXPORT"
exportMacroName
)
target_include_directories
(
libcaf_
${
component
}
INTERFACE
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>
$<BUILD_INTERFACE:
${
CMAKE_BINARY_DIR
}
>
$<INSTALL_INTERFACE:include>
)
generate_export_header
(
libcaf_
${
component
}
EXPORT_MACRO_NAME
${
exportMacroName
}
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/caf/detail/
${
component
}
_export.hpp"
)
set_target_properties
(
libcaf_
${
component
}
PROPERTIES
EXPORT_NAME
${
component
}
SOVERSION
${
CAF_VERSION
}
VERSION
${
CAF_LIB_VERSION
}
OUTPUT_NAME caf_
${
component
}
)
install
(
FILES
"
${
CMAKE_BINARY_DIR
}
/caf/detail/
${
component
}
_export.hpp"
DESTINATION
"
${
CMAKE_INSTALL_INCLUDEDIR
}
/caf/detail"
)
install
(
TARGETS libcaf_
${
component
}
EXPORT CAFTargets
ARCHIVE DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT
${
component
}
RUNTIME DESTINATION
${
CMAKE_INSTALL_BINDIR
}
COMPONENT
${
component
}
LIBRARY DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT
${
component
}
)
install
(
DIRECTORY
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/caf"
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
COMPONENT
${
component
}
FILES_MATCHING PATTERN
"*.hpp"
)
endfunction
()
# -- build all components the user asked for -----------------------------------
add_subdirectory
(
libcaf_core
)
...
...
Jenkinsfile
View file @
21628e3e
...
...
@@ -5,13 +5,12 @@
// Default CMake flags for release builds.
defaultReleaseBuildFlags
=
[
'CAF_ENABLE_RUNTIME_CHECKS:BOOL=ON'
,
'CAF_ENABLE_ACTOR_PROFILER:BOOL=ON'
,
]
// Default CMake flags for debug builds.
defaultDebugBuildFlags
=
defaultReleaseBuildFlags
+
[
'CAF_SANITIZERS:STRING=address,undefined'
,
'CAF_LOG_LEVEL:STRING=TRACE'
,
'CAF_ENABLE_ACTOR_PROFILER:BOOL=ON'
,
]
// Configures the behavior of our stages.
...
...
@@ -23,7 +22,7 @@ config = [
'build'
,
'style'
,
'tests'
,
'coverage'
,
// 'coverage', TODO: fix kcov setup
],
// Our build matrix. Keys are the operating system labels and values are build configurations.
buildMatrix:
[
...
...
@@ -31,10 +30,12 @@ config = [
[
'centos-6'
,
[
builds:
[
'debug'
,
'release'
],
tools:
[
'gcc-7'
],
extraDebugFlags:
[
'CAF_SANITIZERS:STRING=address,undefined'
],
]],
[
'centos-7'
,
[
builds:
[
'debug'
,
'release'
],
tools:
[
'gcc-7'
],
extraDebugFlags:
[
'CAF_SANITIZERS:STRING=address,undefined'
],
]],
[
'ubuntu-16.04'
,
[
builds:
[
'debug'
,
'release'
],
...
...
@@ -48,7 +49,7 @@ config = [
[
'fedora-28'
,
[
builds:
[
'debug'
],
tools:
[
'gcc-8'
],
extraSteps:
[
'coverageReport'
],
// extraSteps: ['coverageReport'], TODO: fix kcov setup
extraFlags:
[
'BUILD_SHARED_LIBS:BOOL=OFF'
],
]],
[
'fedora-28'
,
[
...
...
@@ -59,10 +60,16 @@ config = [
[
'macOS'
,
[
builds:
[
'debug'
,
'release'
],
tools:
[
'clang'
],
extraFlags:
[
'OPENSSL_ROOT_DIR=/usr/local/opt/openssl'
,
'OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include'
,
],
extraDebugFlags:
[
'CAF_SANITIZERS:STRING=address,undefined'
],
]],
[
'FreeBSD'
,
[
builds:
[
'debug'
,
'release'
],
tools:
[
'clang'
],
extraDebugFlags:
[
'CAF_SANITIZERS:STRING=address,undefined'
],
]],
// Non-UNIX systems.
[
'Windows'
,
[
...
...
@@ -70,6 +77,7 @@ config = [
//builds: ['debug', 'release'],
builds:
[
'release'
],
tools:
[
'msvc'
],
extraFlags:
[
'CAF_ENABLE_OPENSSL_MODULE:BOOL=OFF'
],
]],
],
// Platform-specific environment settings.
...
...
@@ -83,24 +91,12 @@ config = [
],
// CMake flags by OS and build type to override defaults for individual builds.
buildFlags:
[
macOS:
[
debug:
defaultDebugBuildFlags
+
[
'OPENSSL_ROOT_DIR=/usr/local/opt/openssl'
,
'OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include'
,
],
release:
defaultReleaseBuildFlags
+
[
'OPENSSL_ROOT_DIR=/usr/local/opt/openssl'
,
'OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include'
,
],
],
Windows:
[
debug:
defaultDebugBuildFlags
+
[
'CAF_ENABLE_OPENSSL_MODULE:BOOL=OFF'
,
],
release:
defaultReleaseBuildFlags
+
[
'CAF_ENABLE_OPENSSL_MODULE:BOOL=OFF'
,
],
nop:
[],
],
// Default CMake flags by build type.
defaultBuildFlags:
[
debug:
defaultDebugBuildFlags
,
release:
defaultReleaseBuildFlags
,
],
// Configures what binary the coverage report uses and what paths to exclude.
coverage:
[
...
...
libcaf_core/CMakeLists.txt
View file @
21628e3e
...
...
@@ -4,21 +4,42 @@ file(GLOB_RECURSE CAF_CORE_HEADERS "caf/*.hpp")
# -- add consistency checks for enum to_string implementations -----------------
add_enum_consistency_check
(
"caf/sec.hpp"
"src/sec_strings.cpp"
)
add_enum_consistency_check
(
"caf/pec.hpp"
"src/pec_strings.cpp"
)
add_enum_consistency_check
(
"caf/stream_priority.hpp"
caf_
add_enum_consistency_check
(
"caf/sec.hpp"
"src/sec_strings.cpp"
)
caf_
add_enum_consistency_check
(
"caf/pec.hpp"
"src/pec_strings.cpp"
)
caf_
add_enum_consistency_check
(
"caf/stream_priority.hpp"
"src/stream_priority_strings.cpp"
)
add_enum_consistency_check
(
"caf/exit_reason.hpp"
caf_
add_enum_consistency_check
(
"caf/exit_reason.hpp"
"src/exit_reason_strings.cpp"
)
add_enum_consistency_check
(
"caf/invoke_message_result.hpp"
caf_
add_enum_consistency_check
(
"caf/invoke_message_result.hpp"
"src/invoke_msg_result_strings.cpp"
)
add_enum_consistency_check
(
"caf/message_priority.hpp"
caf_
add_enum_consistency_check
(
"caf/message_priority.hpp"
"src/message_priority_strings.cpp"
)
add_enum_consistency_check
(
"caf/intrusive/inbox_result.hpp"
caf_
add_enum_consistency_check
(
"caf/intrusive/inbox_result.hpp"
"src/intrusive/inbox_result_strings.cpp"
)
add_enum_consistency_check
(
"caf/intrusive/task_result.hpp"
caf_
add_enum_consistency_check
(
"caf/intrusive/task_result.hpp"
"src/intrusive/task_result_strings.cpp"
)
# -- dependencies --------------------------------------------------------------
if
(
NOT TARGET Threads::Threads
)
find_package
(
Threads REQUIRED
)
endif
()
# -- utility function for setting default properties ---------------------------
function
(
caf_core_set_default_properties
)
foreach
(
target
${
ARGN
}
)
# Set global defaults and set EXPORTS flag.
caf_set_default_properties
(
${
target
}
)
target_compile_definitions
(
${
target
}
PRIVATE libcaf_core_EXPORTS
)
# Pull in public dependencies.
caf_target_link_libraries
(
${
target
}
PUBLIC Threads::Threads
)
if
(
MSVC
)
caf_target_link_libraries
(
${
target
}
PUBLIC iphlpapi
)
endif
()
endforeach
()
endfunction
()
# -- add library target --------------------------------------------------------
add_library
(
libcaf_core_obj OBJECT
${
CAF_CORE_HEADERS
}
...
...
@@ -154,72 +175,12 @@ add_library(libcaf_core_obj OBJECT ${CAF_CORE_HEADERS}
src/uuid.cpp
)
target_include_directories
(
libcaf_core_obj PRIVATE
"
${
CMAKE_BINARY_DIR
}
"
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
add_library
(
libcaf_core
"
${
PROJECT_SOURCE_DIR
}
/cmake/dummy.cpp"
$<TARGET_OBJECTS:libcaf_core_obj>
)
target_include_directories
(
libcaf_core INTERFACE
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>
)
target_include_directories
(
libcaf_core INTERFACE
$<BUILD_INTERFACE:
${
CMAKE_BINARY_DIR
}
>
)
add_library
(
CAF::core ALIAS libcaf_core
)
caf_core_set_default_properties
(
libcaf_core_obj libcaf_core
)
# -- dependencies and compiler flags -------------------------------------------
if
(
BUILD_SHARED_LIBS AND NOT WIN32
)
target_compile_options
(
libcaf_core PRIVATE -fPIC
)
target_compile_options
(
libcaf_core_obj PRIVATE -fPIC
)
endif
()
if
(
NOT TARGET Threads::Threads
)
find_package
(
Threads REQUIRED
)
endif
()
target_link_libraries
(
libcaf_core PUBLIC Threads::Threads
)
if
(
MSVC
)
target_link_libraries
(
libcaf_core PUBLIC iphlpapi
)
endif
()
if
(
CAF_SANITIZERS
)
target_link_libraries
(
libcaf_core PUBLIC -fsanitize=
${
CAF_SANITIZERS
}
)
endif
()
# -- API exports ---------------------------------------------------------------
generate_export_header
(
libcaf_core
EXPORT_MACRO_NAME CAF_CORE_EXPORT
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/caf/detail/core_export.hpp"
STATIC_DEFINE CAF_STATIC_BUILD
)
target_compile_definitions
(
libcaf_core_obj PRIVATE libcaf_core_EXPORTS
)
set_target_properties
(
libcaf_core PROPERTIES
EXPORT_NAME core
SOVERSION
${
CAF_VERSION
}
VERSION
${
CAF_LIB_VERSION
}
OUTPUT_NAME caf_core
)
# -- install library and header files ------------------------------------------
install
(
FILES
"
${
CMAKE_BINARY_DIR
}
/caf/detail/build_config.hpp"
"
${
CMAKE_BINARY_DIR
}
/caf/detail/core_export.hpp"
DESTINATION
"
${
CMAKE_INSTALL_INCLUDEDIR
}
/caf/detail"
)
install
(
TARGETS libcaf_core
EXPORT CAFTargets
ARCHIVE DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT core
RUNTIME DESTINATION
${
CMAKE_INSTALL_BINDIR
}
COMPONENT core
LIBRARY DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT core
)
install
(
DIRECTORY
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/caf"
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
COMPONENT core
FILES_MATCHING PATTERN
"*.hpp"
)
caf_export_and_install_lib
(
core
)
# -- build unit tests ----------------------------------------------------------
...
...
@@ -231,19 +192,13 @@ add_executable(caf-core-test
test/core-test.cpp
$<TARGET_OBJECTS:libcaf_core_obj>
)
caf_core_set_default_properties
(
caf-core-test
)
target_include_directories
(
caf-core-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
)
target_compile_definitions
(
caf-core-test PRIVATE libcaf_core_EXPORTS
)
target_link_libraries
(
caf-core-test PUBLIC CAF::test
)
target_link_libraries
(
caf-core-test PRIVATE
$<TARGET_PROPERTY:libcaf_core,INTERFACE_LINK_LIBRARIES>
)
target_include_directories
(
caf-core-test PRIVATE
"
${
CMAKE_BINARY_DIR
}
"
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
caf_add_test_suites
(
caf-core-test
actor_clock
actor_factory
...
...
libcaf_io/CMakeLists.txt
View file @
21628e3e
...
...
@@ -4,12 +4,27 @@ file(GLOB_RECURSE CAF_IO_HEADERS "caf/*.hpp")
# -- add consistency checks for enum to_string implementations -----------------
add_enum_consistency_check
(
"caf/io/basp/message_type.hpp"
caf_
add_enum_consistency_check
(
"caf/io/basp/message_type.hpp"
"src/io/basp/message_type_strings.cpp"
)
add_enum_consistency_check
(
"caf/io/network/operation.hpp"
caf_
add_enum_consistency_check
(
"caf/io/network/operation.hpp"
"src/io/network/operation_strings.cpp"
)
# -- utility function for setting default properties ---------------------------
function
(
caf_io_set_default_properties
)
foreach
(
target
${
ARGN
}
)
# Set global defaults and set EXPORTS flag.
caf_set_default_properties
(
${
target
}
)
target_compile_definitions
(
${
target
}
PRIVATE libcaf_io_EXPORTS
)
# Pull in public dependencies.
caf_target_link_libraries
(
${
target
}
PUBLIC CAF::core
)
if
(
MSVC
)
caf_target_link_libraries
(
${
target
}
PUBLIC ws2_32 iphlpapi
)
endif
()
endforeach
()
endfunction
()
# -- add library target --------------------------------------------------------
add_library
(
libcaf_io_obj OBJECT
${
CAF_IO_HEADERS
}
...
...
@@ -55,60 +70,13 @@ add_library(libcaf_io_obj OBJECT ${CAF_IO_HEADERS}
src/policy/udp.cpp
)
target_include_directories
(
libcaf_io_obj PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
add_library
(
libcaf_io
"
${
PROJECT_SOURCE_DIR
}
/cmake/dummy.cpp"
$<TARGET_OBJECTS:libcaf_io_obj>
)
target_include_directories
(
libcaf_io INTERFACE
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>
)
add_library
(
CAF::io ALIAS libcaf_io
)
if
(
BUILD_SHARED_LIBS AND NOT WIN32
)
target_compile_options
(
libcaf_io PRIVATE -fPIC
)
target_compile_options
(
libcaf_io_obj PRIVATE -fPIC
)
endif
()
target_include_directories
(
libcaf_io_obj PRIVATE
$<TARGET_PROPERTY:libcaf_core,INTERFACE_INCLUDE_DIRECTORIES>
)
target_link_libraries
(
libcaf_io PUBLIC CAF::core
)
if
(
MSVC
)
target_link_libraries
(
libcaf_io PUBLIC ws2_32 iphlpapi
)
endif
()
generate_export_header
(
libcaf_io
EXPORT_MACRO_NAME CAF_IO_EXPORT
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/caf/detail/io_export.hpp"
STATIC_DEFINE CAF_STATIC_BUILD
)
caf_io_set_default_properties
(
libcaf_io_obj libcaf_io
)
target_compile_definitions
(
libcaf_io_obj PRIVATE libcaf_io_EXPORTS
)
set_target_properties
(
libcaf_io PROPERTIES
EXPORT_NAME io
SOVERSION
${
CAF_VERSION
}
VERSION
${
CAF_LIB_VERSION
}
OUTPUT_NAME caf_io
)
# -- install library and header files ------------------------------------------
install
(
FILES
"
${
CMAKE_BINARY_DIR
}
/caf/detail/io_export.hpp"
DESTINATION
"
${
CMAKE_INSTALL_INCLUDEDIR
}
/caf/detail"
)
install
(
TARGETS libcaf_io
EXPORT CAFTargets
ARCHIVE DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT io
LIBRARY DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT io
RUNTIME DESTINATION
${
CMAKE_INSTALL_BINDIR
}
COMPONENT io
)
install
(
DIRECTORY
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/caf"
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
COMPONENT io
FILES_MATCHING PATTERN
"*.hpp"
)
caf_export_and_install_lib
(
io
)
# -- build unit tests ----------------------------------------------------------
...
...
@@ -120,16 +88,11 @@ add_executable(caf-io-test
test/io-test.cpp
$<TARGET_OBJECTS:libcaf_io_obj>
)
target_include_directories
(
caf-io-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
)
target_compile_definitions
(
caf-io-test PRIVATE libcaf_io_EXPORTS
)
caf_io_set_default_properties
(
caf-io-test
)
target_link_libraries
(
caf-io-test PRIVATE CAF::core CAF::test
)
target_link_libraries
(
caf-io-test PRIVATE
$<TARGET_PROPERTY:libcaf_io,INTERFACE_LINK_LIBRARIES>
)
target_include_directories
(
caf-io-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
)
target_
include_directories
(
caf-io-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
target_
link_libraries
(
caf-io-test PRIVATE CAF::test
)
caf_add_test_suites
(
caf-io-test
io.basp.message_queue
...
...
libcaf_openssl/CMakeLists.txt
View file @
21628e3e
...
...
@@ -2,6 +2,25 @@
file
(
GLOB_RECURSE CAF_OPENSSL_HEADERS
"caf/*.hpp"
)
# -- dependencies --------------------------------------------------------------
if
(
NOT TARGET OpenSSL::SSL OR NOT TARGET OpenSSL::Crypto
)
find_package
(
OpenSSL REQUIRED
)
endif
()
# -- utility function for setting default properties ---------------------------
function
(
caf_openssl_set_default_properties
)
foreach
(
target
${
ARGN
}
)
# Set global defaults and set EXPORTS flag.
caf_set_default_properties
(
${
target
}
)
target_compile_definitions
(
${
target
}
PRIVATE libcaf_openssl_EXPORTS
)
# Pull in public dependencies.
caf_target_link_libraries
(
${
target
}
PUBLIC
CAF::core CAF::io OpenSSL::SSL OpenSSL::Crypto
)
endforeach
()
endfunction
()
# -- add library target --------------------------------------------------------
add_library
(
libcaf_openssl_obj OBJECT
${
CAF_OPENSSL_HEADERS
}
...
...
@@ -12,69 +31,13 @@ add_library(libcaf_openssl_obj OBJECT ${CAF_OPENSSL_HEADERS}
src/openssl/session.cpp
)
target_include_directories
(
libcaf_openssl_obj PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
add_library
(
libcaf_openssl
"
${
PROJECT_SOURCE_DIR
}
/cmake/dummy.cpp"
$<TARGET_OBJECTS:libcaf_openssl_obj>
)
target_include_directories
(
libcaf_openssl INTERFACE
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>
)
add_library
(
CAF::openssl ALIAS libcaf_openssl
)
if
(
BUILD_SHARED_LIBS AND NOT WIN32
)
target_compile_options
(
libcaf_openssl PRIVATE -fPIC
)
target_compile_options
(
libcaf_openssl_obj PRIVATE -fPIC
)
endif
()
caf_openssl_set_default_properties
(
libcaf_openssl_obj libcaf_openssl
)
if
(
NOT TARGET OpenSSL::SSL OR NOT TARGET OpenSSL::Crypto
)
find_package
(
OpenSSL REQUIRED
)
endif
()
target_include_directories
(
libcaf_openssl_obj PRIVATE
$<TARGET_PROPERTY:libcaf_core,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:libcaf_io,INTERFACE_INCLUDE_DIRECTORIES>
${
OPENSSL_INCLUDE_DIR
}
)
target_link_libraries
(
libcaf_openssl PUBLIC
CAF::core CAF::io
OpenSSL::SSL OpenSSL::Crypto
)
generate_export_header
(
libcaf_openssl
EXPORT_MACRO_NAME CAF_OPENSSL_EXPORT
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/caf/detail/openssl_export.hpp"
STATIC_DEFINE CAF_STATIC_BUILD
)
target_compile_definitions
(
libcaf_openssl_obj PRIVATE libcaf_openssl_EXPORTS
)
target_include_directories
(
libcaf_openssl PUBLIC
$<BUILD_INTERFACE:
${
CMAKE_BINARY_DIR
}
>
$<BUILD_INTERFACE:
${
CMAKE_SOURCE_DIR
}
>
$<INSTALL_INTERFACE:include>
)
set_target_properties
(
libcaf_openssl PROPERTIES
EXPORT_NAME openssl
SOVERSION
${
CAF_VERSION
}
VERSION
${
CAF_LIB_VERSION
}
OUTPUT_NAME caf_openssl
)
# -- install library and header files ------------------------------------------
install
(
FILES
"
${
CMAKE_BINARY_DIR
}
/caf/detail/openssl_export.hpp"
DESTINATION
"
${
CMAKE_INSTALL_INCLUDEDIR
}
/caf/detail"
)
install
(
TARGETS libcaf_openssl
EXPORT CAFTargets
ARCHIVE DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT openssl
RUNTIME DESTINATION
${
CMAKE_INSTALL_BINDIR
}
COMPONENT openssl
LIBRARY DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
COMPONENT openssl
)
install
(
DIRECTORY
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/caf"
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
COMPONENT openssl
FILES_MATCHING PATTERN
"*.hpp"
)
caf_export_and_install_lib
(
openssl
)
# -- build unit tests ----------------------------------------------------------
...
...
@@ -87,15 +50,11 @@ add_executable(caf-openssl-test
${
CAF_OPENSSL_TEST_SOURCES
}
$<TARGET_OBJECTS:libcaf_openssl_obj>
)
target_include_directories
(
caf-openssl-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
)
target_compile_definitions
(
caf-openssl-test PRIVATE libcaf_openssl_EXPORTS
)
caf_openssl_set_default_properties
(
caf-openssl-test
)
target_link_libraries
(
caf-openssl-test PRIVATE
CAF::io CAF::core CAF::test OpenSSL::SSL OpenSSL::Crypto
)
target_include_directories
(
caf-openssl-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
)
target_include_directories
(
caf-openssl-test PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
)
target_link_libraries
(
caf-openssl-test PRIVATE CAF::test
)
caf_add_test_suites
(
caf-openssl-test
openssl.authentication
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment