Skip to content

Commit c82d42b

Browse files
author
Paul T
authored
Merge pull request #41 from DeveloperPaul123/feature/unify-storage-types
Unified `eventbus` impl for any and variant storage types
2 parents 5103d94 + da45b6e commit c82d42b

File tree

12 files changed

+584
-243
lines changed

12 files changed

+584
-243
lines changed

CMakeLists.txt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.14)
1+
cmake_minimum_required(VERSION 3.25)
22

33
project(eventbus)
44

@@ -7,7 +7,10 @@ set(CXX_STANDARD_REQUIRED ON)
77

88
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
99
include(CPM)
10+
1011
option(EVENTBUS_BUILD_TESTS "Build unit tests." ON)
12+
option(EVENTBUS_BUILD_BENCHMARKS "Build benchmarks." OFF)
13+
option(EVENTBUS_BUILD_EXAMPLES "Build examples" OFF)
1114

1215
# set up warnings interface project to re-use
1316
include(CompilerWarnings)
@@ -23,6 +26,8 @@ if(EVENTBUS_BUILD_TESTS)
2326
CPMAddPackage(
2427
NAME doctest
2528
GITHUB_REPOSITORY onqtam/doctest
29+
# bump CMake version to 3.5
30+
GIT_TAG 3a01ec37828affe4c9650004edb5b304fb9d5b75
2631
VERSION 2.4.11
2732
)
2833

@@ -33,4 +38,11 @@ if(EVENTBUS_BUILD_TESTS)
3338
endif()
3439

3540
add_subdirectory(eventbus)
36-
add_subdirectory(demo)
41+
42+
if(EVENTBUS_BUILD_EXAMPLES)
43+
add_subdirectory(demo)
44+
endif()
45+
46+
if(EVENTBUS_BUILD_BENCHMARKS)
47+
add_subdirectory(benchmark)
48+
endif()

CMakePresets.json

Lines changed: 196 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -1,161 +1,198 @@
11
{
2-
"version": 3,
3-
"configurePresets": [
4-
{
5-
"name": "linux-base",
6-
"hidden": true,
7-
"description": "Target the Windows Subsystem for Linux (WSL) or a remote Linux system.",
8-
"generator": "Ninja",
9-
"binaryDir": "${sourceDir}/out/build/${presetName}",
10-
"condition": {
11-
"type": "equals",
12-
"lhs": "${hostSystemName}",
13-
"rhs": "Linux"
14-
},
15-
"vendor": {
16-
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
17-
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
18-
}
19-
},
20-
"cacheVariables": {
21-
"EVENTBUS_BUILD_TESTS": "ON"
22-
}
23-
},
24-
{
25-
"name": "windows-base",
26-
"description": "Target Windows with the Visual Studio development environment.",
27-
"hidden": true,
28-
"generator": "Ninja",
29-
"binaryDir": "${sourceDir}/out/build/${presetName}",
30-
"installDir": "${sourceDir}/out/install/${presetName}",
31-
"cacheVariables": {
32-
"CMAKE_CXX_COMPILER": "cl",
33-
"CMAKE_C_COMPILER": "cl"
34-
},
35-
"condition": {
36-
"type": "equals",
37-
"lhs": "${hostSystemName}",
38-
"rhs": "Windows"
39-
},
40-
"architecture": {
41-
"value": "x64",
42-
"strategy": "external"
43-
},
44-
"toolset": {
45-
"value": "host=x64",
46-
"strategy": "external"
47-
}
48-
},
49-
{
50-
"name": "gcc-base",
51-
"hidden": true,
52-
"inherits": "linux-base",
53-
"cacheVariables": {
54-
"CMAKE_CXX_COMPILER": "g++",
55-
"CMAKE_C_COMPILER": "gcc"
56-
}
57-
},
58-
{
59-
"name": "gcc-debug",
60-
"inherits": "gcc-base",
61-
"displayName": "GCC Debug",
62-
"cacheVariables": {
63-
"CMAKE_BUILD_TYPE": "Debug"
64-
}
65-
},
66-
{
67-
"name": "gcc-release",
68-
"inherits": "gcc-base",
69-
"displayName": "GCC Release",
70-
"cacheVariables": {
71-
"CMAKE_BUILD_TYPE": "Release"
72-
}
73-
},
74-
{
75-
"name": "clang-base",
76-
"hidden": true,
77-
"inherits": "linux-base",
78-
"cacheVariables": {
79-
"CMAKE_CXX_COMPILER": "clang++",
80-
"CMAKE_C_COMPILER": "clang"
81-
}
82-
},
83-
{
84-
"name": "clang-debug",
85-
"inherits": "clang-base",
86-
"displayName": "Clang Debug",
87-
"cacheVariables": {
88-
"CMAKE_BUILD_TYPE": "Debug"
89-
}
90-
},
91-
{
92-
"name": "clang-release",
93-
"inherits": "clang-base",
94-
"displayName": "Clang Release",
95-
"cacheVariables": {
96-
"CMAKE_BUILD_TYPE": "Release"
97-
}
98-
},
99-
{
100-
"name": "clang-release-with-debug-info",
101-
"inherits": "clang-base",
102-
"displayName": "Clang RelWithDebInfo",
103-
"cacheVariables": {
104-
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
105-
}
106-
},
107-
{
108-
"name": "x64-debug",
109-
"displayName": "x64 Debug",
110-
"description": "Target Windows (64-bit) with the Visual Studio development environment. (Debug)",
111-
"inherits": "windows-base",
112-
"architecture": {
113-
"value": "x64",
114-
"strategy": "external"
115-
},
116-
"cacheVariables": {
117-
"CMAKE_BUILD_TYPE": "Debug"
118-
}
119-
},
120-
{
121-
"name": "x64-debug-clang",
122-
"displayName": "x64 Debug Clang",
123-
"description": "Target Windows (64-bit) with Clang",
124-
"inherits": "windows-base",
125-
"cacheVariables": {
126-
"CMAKE_C_COMPILER": "clang",
127-
"CMAKE_CXX_COMPILER": "clang++",
128-
"CMAKE_BUILD_TYPE": "Debug"
129-
}
130-
},
131-
{
132-
"name": "x64-release-clang",
133-
"displayName": "x64 Release Clang",
134-
"description": "Target Windows (64-bit) with Clang (Release)",
135-
"inherits": "windows-base",
136-
"cacheVariables": {
137-
"CMAKE_C_COMPILER": "clang",
138-
"CMAKE_CXX_COMPILER": "clang++",
139-
"CMAKE_BUILD_TYPE": "Release"
140-
}
141-
},
142-
{
143-
"name": "x64-release",
144-
"displayName": "x64 Release",
145-
"description": "Target Windows (64-bit) with the Visual Studio development environment. (Release)",
146-
"inherits": "x64-debug",
147-
"cacheVariables": {
148-
"CMAKE_BUILD_TYPE": "Release"
149-
}
150-
},
151-
{
152-
"name": "x64-release-with-debug",
153-
"displayName": "x64 Release w/Debug",
154-
"description": "Target Windows (64-bit) with the Visual Studio development environment. (RelWithDebInfo)",
155-
"inherits": "x64-debug",
156-
"cacheVariables": {
157-
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
158-
}
2+
"version": 3,
3+
"configurePresets": [
4+
{
5+
"name": "base",
6+
"hidden": true,
7+
"generator": "Ninja",
8+
"binaryDir": "${sourceDir}/build/${presetName}",
9+
"installDir": "${sourceDir}/build/install/${presetName}",
10+
"cacheVariables": {
11+
"CMAKE_EXPORT_COMPILE_COMMANDS": "YES",
12+
"EVENTBUS_BUILD_TESTS": "ON",
13+
"EVENTBUS_BUILD_EXAMPLES": "ON",
14+
"EVENTBUS_BUILD_BENCHMARKS": "ON"
15+
}
16+
},
17+
{
18+
"name": "macos-base",
19+
"hidden": true,
20+
"inherits": "base",
21+
"condition": {
22+
"type": "equals",
23+
"lhs": "${hostSystemName}",
24+
"rhs": "Darwin"
25+
}
26+
},
27+
{
28+
"name": "clang-debug",
29+
"inherits": "macos-base",
30+
"displayName": "macOS Clang Debug",
31+
"cacheVariables": {
32+
"CMAKE_BUILD_TYPE": "Debug",
33+
"CMAKE_CXX_COMPILER": "clang++",
34+
"CMAKE_C_COMPILER": "clang"
35+
}
36+
},
37+
{
38+
"name": "clang-release",
39+
"inherits": "macos-base",
40+
"displayName": "macOS Clang Release",
41+
"cacheVariables": {
42+
"CMAKE_BUILD_TYPE": "Release",
43+
"CMAKE_CXX_COMPILER": "clang++",
44+
"CMAKE_C_COMPILER": "clang"
45+
}
46+
},
47+
{
48+
"name": "linux-base",
49+
"hidden": true,
50+
"inherits": "base",
51+
"description": "Target the Windows Subsystem for Linux (WSL) or a remote Linux system.",
52+
"condition": {
53+
"type": "equals",
54+
"lhs": "${hostSystemName}",
55+
"rhs": "Linux"
56+
},
57+
"vendor": {
58+
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
59+
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
15960
}
160-
]
161-
}
61+
}
62+
},
63+
{
64+
"name": "windows-base",
65+
"description": "Target Windows with the Visual Studio development environment.",
66+
"hidden": true,
67+
"inherits": "base",
68+
"cacheVariables": {
69+
"CMAKE_CXX_COMPILER": "cl",
70+
"CMAKE_C_COMPILER": "cl"
71+
},
72+
"condition": {
73+
"type": "equals",
74+
"lhs": "${hostSystemName}",
75+
"rhs": "Windows"
76+
},
77+
"architecture": {
78+
"value": "x64",
79+
"strategy": "external"
80+
},
81+
"toolset": {
82+
"value": "host=x64",
83+
"strategy": "external"
84+
}
85+
},
86+
{
87+
"name": "gcc-base",
88+
"hidden": true,
89+
"inherits": "linux-base",
90+
"cacheVariables": {
91+
"CMAKE_CXX_COMPILER": "g++",
92+
"CMAKE_C_COMPILER": "gcc"
93+
}
94+
},
95+
{
96+
"name": "gcc-debug",
97+
"inherits": "gcc-base",
98+
"displayName": "GCC Debug",
99+
"cacheVariables": {
100+
"CMAKE_BUILD_TYPE": "Debug"
101+
}
102+
},
103+
{
104+
"name": "gcc-release",
105+
"inherits": "gcc-base",
106+
"displayName": "GCC Release",
107+
"cacheVariables": {
108+
"CMAKE_BUILD_TYPE": "Release"
109+
}
110+
},
111+
{
112+
"name": "clang-base",
113+
"hidden": true,
114+
"inherits": "linux-base",
115+
"cacheVariables": {
116+
"CMAKE_CXX_COMPILER": "clang++",
117+
"CMAKE_C_COMPILER": "clang"
118+
}
119+
},
120+
{
121+
"name": "clang-debug",
122+
"inherits": "clang-base",
123+
"displayName": "Clang Debug",
124+
"cacheVariables": {
125+
"CMAKE_BUILD_TYPE": "Debug"
126+
}
127+
},
128+
{
129+
"name": "clang-release",
130+
"inherits": "clang-base",
131+
"displayName": "Clang Release",
132+
"cacheVariables": {
133+
"CMAKE_BUILD_TYPE": "Release"
134+
}
135+
},
136+
{
137+
"name": "clang-release-with-debug-info",
138+
"inherits": "clang-base",
139+
"displayName": "Clang RelWithDebInfo",
140+
"cacheVariables": {
141+
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
142+
}
143+
},
144+
{
145+
"name": "x64-debug",
146+
"displayName": "x64 Debug",
147+
"description": "Target Windows (64-bit) with the Visual Studio development environment. (Debug)",
148+
"inherits": "windows-base",
149+
"architecture": {
150+
"value": "x64",
151+
"strategy": "external"
152+
},
153+
"cacheVariables": {
154+
"CMAKE_BUILD_TYPE": "Debug"
155+
}
156+
},
157+
{
158+
"name": "x64-debug-clang",
159+
"displayName": "x64 Debug Clang",
160+
"description": "Target Windows (64-bit) with Clang",
161+
"inherits": "windows-base",
162+
"cacheVariables": {
163+
"CMAKE_C_COMPILER": "clang",
164+
"CMAKE_CXX_COMPILER": "clang++",
165+
"CMAKE_BUILD_TYPE": "Debug"
166+
}
167+
},
168+
{
169+
"name": "x64-release-clang",
170+
"displayName": "x64 Release Clang",
171+
"description": "Target Windows (64-bit) with Clang (Release)",
172+
"inherits": "windows-base",
173+
"cacheVariables": {
174+
"CMAKE_C_COMPILER": "clang",
175+
"CMAKE_CXX_COMPILER": "clang++",
176+
"CMAKE_BUILD_TYPE": "Release"
177+
}
178+
},
179+
{
180+
"name": "x64-release",
181+
"displayName": "x64 Release",
182+
"description": "Target Windows (64-bit) with the Visual Studio development environment. (Release)",
183+
"inherits": "x64-debug",
184+
"cacheVariables": {
185+
"CMAKE_BUILD_TYPE": "Release"
186+
}
187+
},
188+
{
189+
"name": "x64-release-with-debug",
190+
"displayName": "x64 Release w/Debug",
191+
"description": "Target Windows (64-bit) with the Visual Studio development environment. (RelWithDebInfo)",
192+
"inherits": "x64-debug",
193+
"cacheVariables": {
194+
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
195+
}
196+
}
197+
]
198+
}

0 commit comments

Comments
 (0)