Skip to content

Commit 6a28533

Browse files
committed
updated cmake
1 parent a3c1607 commit 6a28533

4 files changed

Lines changed: 140 additions & 59 deletions

File tree

CMakeLists.txt

Lines changed: 129 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -37,48 +37,63 @@ Cpp-Taskflow currently supports the following compilers:\n\
3737
")
3838
endif()
3939

40+
# error setting
4041
add_library(error_settings INTERFACE)
41-
42-
# Using namespaces causes CMake to error our in case of typos on the
43-
# consuming side, very important.
44-
add_library(cpptaskflow::error_settings ALIAS error_settings)
42+
add_library(tf::error_settings ALIAS error_settings)
4543

4644
target_compile_options(
47-
error_settings
48-
INTERFACE
49-
$<$<CXX_COMPILER_ID:Clang>:-Wall -Wextra -Wfatal-errors>
50-
$<$<CXX_COMPILER_ID:GNU>:-Wall -Wextra -Wfatal-errors>
51-
$<$<CXX_COMPILER_ID:MSVC>:/W3 /permissive->)
45+
error_settings
46+
INTERFACE
47+
$<$<CXX_COMPILER_ID:Clang>:-Wall -Wextra -Wfatal-errors>
48+
$<$<CXX_COMPILER_ID:GNU>:-Wall -Wextra -Wfatal-errors>
49+
$<$<CXX_COMPILER_ID:MSVC>:/W3 /permissive->
50+
)
5251

52+
# additional features
5353
add_library(features_settings INTERFACE)
54-
add_library(cpptaskflow::features_settings ALIAS features_settings)
55-
target_compile_definitions(features_settings INTERFACE $<$<CXX_COMPILER_ID:MSVC>:_ENABLE_EXTENDED_ALIGNED_STORAGE>)
56-
57-
add_library(optimize_settings INTERFACE)
58-
59-
add_library(cpptaskflow::optimize_settings ALIAS optimize_settings)
54+
add_library(tf::features_settings ALIAS features_settings)
55+
target_compile_definitions(
56+
features_settings
57+
INTERFACE
58+
$<$<CXX_COMPILER_ID:MSVC>:_ENABLE_EXTENDED_ALIGNED_STORAGE>
59+
)
6060

61+
# optimization
62+
#
6163
##! Msvc flags info
62-
# /Zi - Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger.
64+
# /Zi - Produces a program database (PDB) that contains type information
65+
# and symbolic debugging information for use with the debugger.
6366
# /FS - Allows multiple cl.exe processes to write to the same .pdb file
6467
# /DEBUG - Enable debug during linking
6568
# /Od - Disables optimization
6669
# /Ox - Full optimization
6770
# /Oy- do not suppress frame pointers (recommended for debugging)
71+
#
72+
add_library(optimize_settings INTERFACE)
73+
add_library(tf::optimize_settings ALIAS optimize_settings)
6874

69-
target_compile_options(optimize_settings INTERFACE
70-
$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:Clang>>:-O2 -march=native>
71-
$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:GNU>>:-O2 -march=native>
72-
$<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:GNU>>:-O0 -g>
73-
$<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:Clang>>:-O0 -g>
74-
$<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:MSVC>>:/Zi /FS /DEBUG /Od /MP /MDd /Oy->
75-
$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:MSVC>>:/O2 -DNDEBUG /MP>
76-
)
75+
target_compile_options(
76+
optimize_settings INTERFACE
77+
#$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:Clang>>:-O2 -march=native>
78+
#$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:GNU>>:-O2 -march=native>
79+
#$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:MSVC>>:/O2 -DNDEBUG /MP>
80+
#$<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:GNU>>:-O0 -g>
81+
#$<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:Clang>>:-O0 -g>
82+
#$<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:MSVC>>:/Zi /FS /DEBUG /Od /MP /MDd /Oy->
83+
$<$<CXX_COMPILER_ID:Clang>:-O2 -march=native>
84+
$<$<CXX_COMPILER_ID:GNU>:-O2 -march=native>
85+
$<$<CXX_COMPILER_ID:MSVC>:/O2 -DNDEBUG /MP>
86+
)
7787

7888
add_library(default_settings INTERFACE)
79-
add_library(cpptaskflow::default_settings ALIAS default_settings)
80-
target_link_libraries(default_settings INTERFACE cpptaskflow::error_settings cpptaskflow::optimize_settings cpptaskflow::features_settings)
81-
89+
add_library(tf::default_settings ALIAS default_settings)
90+
target_link_libraries(
91+
default_settings
92+
INTERFACE
93+
tf::error_settings
94+
tf::optimize_settings
95+
tf::features_settings
96+
)
8297

8398
# CXX target properties
8499
#set(CMAKE_CXX_STANDARD 17)
@@ -154,31 +169,49 @@ message(STATUS "Building examples ...")
154169
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TF_EXAMPLE_DIR})
155170

156171
add_executable(simple ${TF_EXAMPLE_DIR}/simple.cpp)
157-
target_link_libraries(simple ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
172+
target_link_libraries(
173+
simple ${PROJECT_NAME} Threads::Threads tf::default_settings
174+
)
158175

159176
add_executable(observer ${TF_EXAMPLE_DIR}/observer.cpp)
160-
target_link_libraries(observer ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
177+
target_link_libraries(
178+
observer ${PROJECT_NAME} Threads::Threads tf::default_settings
179+
)
161180

162181
add_executable(subflow ${TF_EXAMPLE_DIR}/subflow.cpp)
163-
target_link_libraries(subflow ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
182+
target_link_libraries(
183+
subflow ${PROJECT_NAME} Threads::Threads tf::default_settings
184+
)
164185

165186
add_executable(debug ${TF_EXAMPLE_DIR}/debug.cpp)
166-
target_link_libraries(debug ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
187+
target_link_libraries(
188+
debug ${PROJECT_NAME} Threads::Threads tf::default_settings
189+
)
167190

168191
add_executable(reduce ${TF_EXAMPLE_DIR}/reduce.cpp)
169-
target_link_libraries(reduce ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
192+
target_link_libraries(
193+
reduce ${PROJECT_NAME} Threads::Threads tf::default_settings
194+
)
170195

171196
add_executable(parallel_for ${TF_EXAMPLE_DIR}/parallel_for.cpp)
172-
target_link_libraries(parallel_for ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
197+
target_link_libraries(
198+
parallel_for ${PROJECT_NAME} Threads::Threads tf::default_settings
199+
)
173200

174201
add_executable(dynamic_traversal ${TF_EXAMPLE_DIR}/dynamic_traversal.cpp)
175-
target_link_libraries(dynamic_traversal ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
202+
target_link_libraries(
203+
dynamic_traversal ${PROJECT_NAME} Threads::Threads tf::default_settings
204+
)
176205

177206
add_executable(run_variants ${TF_EXAMPLE_DIR}/run_variants.cpp)
178-
target_link_libraries(run_variants ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
207+
target_link_libraries(
208+
run_variants ${PROJECT_NAME} Threads::Threads tf::default_settings
209+
)
179210

180211
add_executable(composition ${TF_EXAMPLE_DIR}/composition.cpp)
181-
target_link_libraries(composition ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
212+
target_link_libraries(
213+
composition ${PROJECT_NAME} Threads::Threads tf::default_settings
214+
)
182215

183216
#add_executable(dice_pools ${TF_EXAMPLE_DIR}/dice_pools.cpp)
184217
#target_link_libraries(dice_pools ${PROJECT_NAME} Threads::Threads)
@@ -200,15 +233,15 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TF_UTEST_DIR})
200233

201234
# unittest for utility
202235
add_executable(utility unittest/utility.cpp)
203-
target_link_libraries(utility ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
236+
target_link_libraries(utility ${PROJECT_NAME} Threads::Threads tf::default_settings)
204237
target_include_directories(utility PRIVATE ${PROJECT_SOURCE_DIR}/doctest)
205238
add_test(passive_vector ${TF_UTEST_DIR}/utility -tc=PassiveVector)
206239
add_test(object_pool ${TF_UTEST_DIR}/utility -tc=ObjectPool)
207240
add_test(singular_alloc ${TF_UTEST_DIR}/utility -tc=SingularAllocator)
208241

209242
# unittest for taskflow
210243
add_executable(taskflow_test_tmp unittest/taskflow.cpp)
211-
target_link_libraries(taskflow_test_tmp ${PROJECT_NAME} Threads::Threads cpptaskflow::default_settings)
244+
target_link_libraries(taskflow_test_tmp ${PROJECT_NAME} Threads::Threads tf::default_settings)
212245
target_include_directories(taskflow_test_tmp PRIVATE ${PROJECT_SOURCE_DIR}/doctest)
213246
set_target_properties(taskflow_test_tmp PROPERTIES OUTPUT_NAME "taskflow")
214247
add_test(builder ${TF_UTEST_DIR}/taskflow -tc=Builder)
@@ -230,7 +263,7 @@ add_test(observer ${TF_UTEST_DIR}/taskflow -tc=Observer)
230263
# unittest for WorkStealingQueue
231264
add_executable(spmc_queue unittest/spmc_queue.cpp)
232265
target_link_libraries(spmc_queue ${PROJECT_NAME} Threads::Threads)
233-
target_include_directories(spmc_queue PRIVATE ${PROJECT_SOURCE_DIR}/doctest cpptaskflow::default_settings)
266+
target_include_directories(spmc_queue PRIVATE ${PROJECT_SOURCE_DIR}/doctest tf::default_settings)
234267
add_test(WorkStealingQueue.Owner ${TF_UTEST_DIR}/spmc_queue -tc=WSQ.Owner)
235268
add_test(WorkStealingQueue.1Thief ${TF_UTEST_DIR}/spmc_queue -tc=WSQ.1Thief)
236269
add_test(WorkStealingQueue.2Thieves ${TF_UTEST_DIR}/spmc_queue -tc=WSQ.2Thieves)
@@ -287,7 +320,11 @@ add_executable(
287320
target_include_directories(wavefront PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
288321
target_link_libraries(
289322
wavefront
290-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
323+
${PROJECT_NAME}
324+
Threads::Threads
325+
${TBB_IMPORTED_TARGETS}
326+
${OpenMP_CXX_LIBRARIES}
327+
tf::default_settings
291328
)
292329
set_target_properties(wavefront PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
293330

@@ -305,7 +342,11 @@ add_executable(
305342
target_include_directories(graph_traversal PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
306343
target_link_libraries(
307344
graph_traversal
308-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
345+
${PROJECT_NAME}
346+
Threads::Threads
347+
${TBB_IMPORTED_TARGETS}
348+
${OpenMP_CXX_LIBRARIES}
349+
tf::default_settings
309350
)
310351
set_target_properties(graph_traversal PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
311352

@@ -322,7 +363,11 @@ add_executable(
322363
target_include_directories(binary_tree PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
323364
target_link_libraries(
324365
binary_tree
325-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
366+
${PROJECT_NAME}
367+
Threads::Threads
368+
${TBB_IMPORTED_TARGETS}
369+
${OpenMP_CXX_LIBRARIES}
370+
tf::default_settings
326371
)
327372
set_target_properties(binary_tree PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
328373

@@ -339,7 +384,11 @@ add_executable(
339384
target_include_directories(linear_chain PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
340385
target_link_libraries(
341386
linear_chain
342-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
387+
${PROJECT_NAME}
388+
Threads::Threads
389+
${TBB_IMPORTED_TARGETS}
390+
${OpenMP_CXX_LIBRARIES}
391+
tf::default_settings
343392
)
344393
set_target_properties(linear_chain PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
345394

@@ -357,8 +406,12 @@ add_executable(
357406
target_include_directories(mnist PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
358407
target_link_libraries(
359408
mnist
360-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS}
361-
${OpenMP_CXX_LIBRARIES} stdc++fs cpptaskflow::default_settings
409+
${PROJECT_NAME}
410+
Threads::Threads
411+
${TBB_IMPORTED_TARGETS}
412+
${OpenMP_CXX_LIBRARIES}
413+
stdc++fs
414+
tf::default_settings
362415
)
363416
set_target_properties(mnist PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
364417

@@ -376,8 +429,12 @@ add_executable(
376429
target_include_directories(parallel_dnn PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
377430
target_link_libraries(
378431
parallel_dnn
379-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS}
380-
${OpenMP_CXX_LIBRARIES} stdc++fs cpptaskflow::default_settings
432+
${PROJECT_NAME}
433+
Threads::Threads
434+
${TBB_IMPORTED_TARGETS}
435+
${OpenMP_CXX_LIBRARIES}
436+
stdc++fs
437+
tf::default_settings
381438
)
382439
set_target_properties(parallel_dnn PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
383440

@@ -394,7 +451,11 @@ add_executable(
394451
target_include_directories(matrix_multiplication PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
395452
target_link_libraries(
396453
matrix_multiplication
397-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
454+
${PROJECT_NAME}
455+
Threads::Threads
456+
${TBB_IMPORTED_TARGETS}
457+
${OpenMP_CXX_LIBRARIES}
458+
tf::default_settings
398459
)
399460
set_target_properties(matrix_multiplication PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
400461

@@ -411,7 +472,11 @@ add_executable(
411472
target_include_directories(mandelbrot_set PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
412473
target_link_libraries(
413474
mandelbrot_set
414-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
475+
${PROJECT_NAME}
476+
Threads::Threads
477+
${TBB_IMPORTED_TARGETS}
478+
${OpenMP_CXX_LIBRARIES}
479+
tf::default_settings
415480
)
416481
set_target_properties(mandelbrot_set PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
417482

@@ -428,7 +493,11 @@ add_executable(
428493
target_include_directories(black_scholes PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
429494
target_link_libraries(
430495
black_scholes
431-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
496+
${PROJECT_NAME}
497+
Threads::Threads
498+
${TBB_IMPORTED_TARGETS}
499+
${OpenMP_CXX_LIBRARIES}
500+
tf::default_settings
432501
)
433502
set_target_properties(black_scholes PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
434503

@@ -445,7 +514,11 @@ add_executable(
445514
target_include_directories(strassen PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
446515
target_link_libraries(
447516
strassen
448-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
517+
${PROJECT_NAME}
518+
Threads::Threads
519+
${TBB_IMPORTED_TARGETS}
520+
${OpenMP_CXX_LIBRARIES}
521+
tf::default_settings
449522
)
450523
set_target_properties(strassen PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
451524

@@ -462,7 +535,11 @@ add_executable(
462535
target_include_directories(parallel_loop PRIVATE ${PROJECT_SOURCE_DIR}/3rd-party/CLI11)
463536
target_link_libraries(
464537
parallel_loop
465-
${PROJECT_NAME} Threads::Threads ${TBB_IMPORTED_TARGETS} ${OpenMP_CXX_LIBRARIES} cpptaskflow::default_settings
538+
${PROJECT_NAME}
539+
Threads::Threads
540+
${TBB_IMPORTED_TARGETS}
541+
${OpenMP_CXX_LIBRARIES}
542+
tf::default_settings
466543
)
467544
set_target_properties(parallel_loop PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS})
468545

benchmark/graph_traversal/levelgraph.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,8 @@ class LevelGraph {
202202

203203
Node& node_at(size_t level, size_t index){ return _graph[level][index]; }
204204

205-
const size_t level(){ return _level_num; }
206-
const size_t length() { return _length_num; }
205+
size_t level(){ return _level_num; }
206+
size_t length() { return _length_num; }
207207

208208
size_t graph_size() const {
209209
size_t size = 0;

example/parallel_for.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void parallel_for_on_index(int N) {
3838
// ----------------------------------------------------------------------------
3939

4040
// Function: main
41-
int main(int argc, char* argv[]) {
41+
int main() {
4242

4343
parallel_for_on_range(10);
4444
parallel_for_on_index(10);

0 commit comments

Comments
 (0)