EventBus/CMakeLists.txt

100 lines
3.2 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
2017-08-04 23:50:35 +02:00
Reorganize project structure commit f7dd4172cf535cf52601a8819cf5c8bfabcd1fe4 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 31 10:26:27 2018 +0200 Improve Travis script Fixed after reordering project structure commit d054e5c91762da15defa458404e355d7c670e301 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Mon Jul 30 15:11:21 2018 +0200 Update Travis CI for linux and OSX commit 63395f5a7e3dd9f2a52b2d6a254da89ec1d6e5e9 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Fri Jul 27 14:38:40 2018 +0200 Secure EventBus from wrong usage For example user previously could do such thing: bus.listen<const MyEvent>(...) bus.listen<MyEvent>(...) Those we 2 different events :/ commit f9195316d3ba6313ee425e3194b65b32fe52d641 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Thu Jul 26 12:44:17 2018 +0200 Update for better managing Debug/Release Updated project for easy switch between debug/release versions of library Thanks to that we can do only find_package and don't have to care about if's switching between debug/release Thanks: https://github.com/forexample/package-example commit 7d708959d9e96176875ca882f0f69a72622added Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Wed Jul 25 13:45:55 2018 +0200 Update clang-format style commit beb1d3b863379490f321e43f3e42ab272954ea67 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 16:05:16 2018 +0200 Add some docs commit ca450dfeee2d4bc604bbb9bf0599f373c21a4173 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:49:52 2018 +0200 Remove not needed includes commit 6473b80e8e60408675bcc4adc88653390576c4bd Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:41:57 2018 +0200 Code format commit 8abb56e1dd4b71df2b05bb34bef0530567e4ff2e Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:41:40 2018 +0200 Improve performance Thanks to that we don't need RTTI commit 1feacbb1f9ae6a5ac2209a6dc1df5c868ead8fd4 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:14:16 2018 +0200 Remove trash commit b5dc5c05589b969dd61eb65b68e4cdce69c5a5fb Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:00:15 2018 +0200 Fix include path commit 9939fd09805191f0bdada6cb85193a291d519116 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:51:02 2018 +0200 Update install lib commit 9eaa09f9ec5a29045b03ffc7632878863a2b2b9b Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:50:47 2018 +0200 Fix commit 7a5b3323af0b728f7e511ac22ff5027c6d06402e Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:16:12 2018 +0200 Update README commit beb6599ee4385fdffc747dc866db46e160be1358 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:16:05 2018 +0200 Add performance compare to Poco::NotifactionCenter commit 1d25b997580a9ee09c9db86135b4ca9e1b1a10c6 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:14:08 2018 +0200 Update clang-format commit 4f4cb4a7e8a849c067a42085eb3e76c3df894bc7 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:04:30 2018 +0200 Remove bad flag It is only working for GCC commit 66a7945084607f94d9d0c803008398e8d281fd06 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:03:15 2018 +0200 Remove deprecated stuff It was breaking encapsulation commit 1e7500607b42bff3632250f623888b95a503dfd0 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:01:37 2018 +0200 Update sample commit 11a146bb9145fa55f9b9a39a9e033387007a7151 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:01:27 2018 +0200 Add clang-format rules commit 685562c632d9751f50a2f05b92ef9ebf53a5d6e0 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 12:47:10 2018 +0200 Reorganize project layout Inspired by: https://www.youtube.com/watch?v=6sWec7b0JIc commit 40d1d6487814730533d7dd7cbedbaf2b4e34ef19 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 12:45:55 2018 +0200 Remove Catch2 submodule Switch to own dependency commit ca21df04f392adcb027a5b4f25ffac085b51f48c Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 11:28:51 2018 +0200 Remove old code
2018-07-31 11:33:35 +02:00
# Layout of project is inspired by: https://youtu.be/6sWec7b0JIc?t=20m50s
# This top level CMakeLists should be used for development
2017-09-01 16:15:31 +02:00
2019-12-29 15:00:20 +01:00
project(EventBusDev LANGUAGES CXX)
2017-08-04 23:50:35 +02:00
2019-03-30 15:28:17 +01:00
option(ENABLE_TEST "Enable test" ON)
option(ENABLE_PERFORMANCE "Enable performance subproject" OFF)
option(ENABLE_LIBCXX "Enable build with libc++" OFF)
2019-03-30 15:28:17 +01:00
set(CMAKE_CXX_STANDARD 17)
2019-12-29 15:00:20 +01:00
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if(ENABLE_LIBCXX)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")
else()
message(FATAL_ERROR "C++ compiler should be set to clang")
endif()
endif()
# Build Types
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}
CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel tsan asan lsan msan ubsan"
FORCE)
# ThreadSanitizer
set(CMAKE_C_FLAGS_TSAN
"-fsanitize=thread -g -O1"
CACHE STRING "Flags used by the C compiler during ThreadSanitizer builds."
FORCE)
set(CMAKE_CXX_FLAGS_TSAN
"-fsanitize=thread -g -O1"
CACHE STRING "Flags used by the C++ compiler during ThreadSanitizer builds."
FORCE)
# AddressSanitize
set(CMAKE_C_FLAGS_ASAN
"-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer -g -O1"
CACHE STRING "Flags used by the C compiler during AddressSanitizer builds."
FORCE)
set(CMAKE_CXX_FLAGS_ASAN
"-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer -g -O1"
CACHE STRING "Flags used by the C++ compiler during AddressSanitizer builds."
FORCE)
# LeakSanitizer
set(CMAKE_C_FLAGS_LSAN
"-fsanitize=leak -fno-omit-frame-pointer -g -O1"
CACHE STRING "Flags used by the C compiler during LeakSanitizer builds."
FORCE)
set(CMAKE_CXX_FLAGS_LSAN
"-fsanitize=leak -fno-omit-frame-pointer -g -O1"
CACHE STRING "Flags used by the C++ compiler during LeakSanitizer builds."
FORCE)
# Remember to switch lib: https://stackoverflow.com/questions/20617788/using-memory-sanitizer-with-libstdc/20784130#20784130
# use ENABLE_LIBCXX
# MemorySanitizer
set(CMAKE_C_FLAGS_MSAN
"-fsanitize=memory -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O2"
CACHE STRING "Flags used by the C compiler during MemorySanitizer builds."
FORCE)
set(CMAKE_CXX_FLAGS_MSAN
"-fsanitize=memory -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O2"
CACHE STRING "Flags used by the C++ compiler during MemorySanitizer builds."
FORCE)
# UndefinedBehaviour
set(CMAKE_C_FLAGS_UBSAN
"-fsanitize=undefined"
CACHE STRING "Flags used by the C compiler during UndefinedBehaviourSanitizer builds."
FORCE)
set(CMAKE_CXX_FLAGS_UBSAN
"-fsanitize=undefined"
CACHE STRING "Flags used by the C++ compiler during UndefinedBehaviourSanitizer builds."
FORCE)
Reorganize project structure commit f7dd4172cf535cf52601a8819cf5c8bfabcd1fe4 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 31 10:26:27 2018 +0200 Improve Travis script Fixed after reordering project structure commit d054e5c91762da15defa458404e355d7c670e301 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Mon Jul 30 15:11:21 2018 +0200 Update Travis CI for linux and OSX commit 63395f5a7e3dd9f2a52b2d6a254da89ec1d6e5e9 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Fri Jul 27 14:38:40 2018 +0200 Secure EventBus from wrong usage For example user previously could do such thing: bus.listen<const MyEvent>(...) bus.listen<MyEvent>(...) Those we 2 different events :/ commit f9195316d3ba6313ee425e3194b65b32fe52d641 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Thu Jul 26 12:44:17 2018 +0200 Update for better managing Debug/Release Updated project for easy switch between debug/release versions of library Thanks to that we can do only find_package and don't have to care about if's switching between debug/release Thanks: https://github.com/forexample/package-example commit 7d708959d9e96176875ca882f0f69a72622added Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Wed Jul 25 13:45:55 2018 +0200 Update clang-format style commit beb1d3b863379490f321e43f3e42ab272954ea67 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 16:05:16 2018 +0200 Add some docs commit ca450dfeee2d4bc604bbb9bf0599f373c21a4173 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:49:52 2018 +0200 Remove not needed includes commit 6473b80e8e60408675bcc4adc88653390576c4bd Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:41:57 2018 +0200 Code format commit 8abb56e1dd4b71df2b05bb34bef0530567e4ff2e Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:41:40 2018 +0200 Improve performance Thanks to that we don't need RTTI commit 1feacbb1f9ae6a5ac2209a6dc1df5c868ead8fd4 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:14:16 2018 +0200 Remove trash commit b5dc5c05589b969dd61eb65b68e4cdce69c5a5fb Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 15:00:15 2018 +0200 Fix include path commit 9939fd09805191f0bdada6cb85193a291d519116 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:51:02 2018 +0200 Update install lib commit 9eaa09f9ec5a29045b03ffc7632878863a2b2b9b Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:50:47 2018 +0200 Fix commit 7a5b3323af0b728f7e511ac22ff5027c6d06402e Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:16:12 2018 +0200 Update README commit beb6599ee4385fdffc747dc866db46e160be1358 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:16:05 2018 +0200 Add performance compare to Poco::NotifactionCenter commit 1d25b997580a9ee09c9db86135b4ca9e1b1a10c6 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 14:14:08 2018 +0200 Update clang-format commit 4f4cb4a7e8a849c067a42085eb3e76c3df894bc7 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:04:30 2018 +0200 Remove bad flag It is only working for GCC commit 66a7945084607f94d9d0c803008398e8d281fd06 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:03:15 2018 +0200 Remove deprecated stuff It was breaking encapsulation commit 1e7500607b42bff3632250f623888b95a503dfd0 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:01:37 2018 +0200 Update sample commit 11a146bb9145fa55f9b9a39a9e033387007a7151 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 13:01:27 2018 +0200 Add clang-format rules commit 685562c632d9751f50a2f05b92ef9ebf53a5d6e0 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 12:47:10 2018 +0200 Reorganize project layout Inspired by: https://www.youtube.com/watch?v=6sWec7b0JIc commit 40d1d6487814730533d7dd7cbedbaf2b4e34ef19 Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 12:45:55 2018 +0200 Remove Catch2 submodule Switch to own dependency commit ca21df04f392adcb027a5b4f25ffac085b51f48c Author: Dawid Drozd <dawid.drozd@mobica.com> Date: Tue Jul 24 11:28:51 2018 +0200 Remove old code
2018-07-31 11:33:35 +02:00
add_subdirectory(lib/)
2019-12-27 11:21:43 +01:00
add_subdirectory(use_case/)
2017-08-04 23:50:35 +02:00
2019-03-30 15:28:17 +01:00
if(ENABLE_TEST)
enable_testing()
add_subdirectory(test/)
endif()
if(ENABLE_PERFORMANCE)
add_subdirectory(performance/)
endif()
2017-08-04 23:50:35 +02:00
2021-05-06 12:11:21 -04:00
target_compile_options(EventBus PRIVATE
2019-03-30 15:28:17 +01:00
-Wall -pedantic
-Wnon-virtual-dtor
-Werror
-Wno-error=deprecated-declarations
)