@@ -37,48 +37,63 @@ Cpp-Taskflow currently supports the following compilers:\n\
3737" )
3838endif ()
3939
40+ # error setting
4041add_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
4644target_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
5353add_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
7888add_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 ...")
154169set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TF_EXAMPLE_DIR} )
155170
156171add_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
159176add_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
162181add_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
165186add_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
168191add_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
171196add_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
174201add_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
177206add_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
180211add_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
202235add_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 )
204237target_include_directories (utility PRIVATE ${PROJECT_SOURCE_DIR} /doctest )
205238add_test (passive_vector ${TF_UTEST_DIR} /utility -tc=PassiveVector )
206239add_test (object_pool ${TF_UTEST_DIR} /utility -tc=ObjectPool )
207240add_test (singular_alloc ${TF_UTEST_DIR} /utility -tc=SingularAllocator )
208241
209242# unittest for taskflow
210243add_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 )
212245target_include_directories (taskflow_test_tmp PRIVATE ${PROJECT_SOURCE_DIR} /doctest )
213246set_target_properties (taskflow_test_tmp PROPERTIES OUTPUT_NAME "taskflow" )
214247add_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
231264add_executable (spmc_queue unittest/spmc_queue.cpp )
232265target_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 )
234267add_test (WorkStealingQueue.Owner ${TF_UTEST_DIR} /spmc_queue -tc=WSQ.Owner )
235268add_test (WorkStealingQueue.1Thief ${TF_UTEST_DIR} /spmc_queue -tc=WSQ.1Thief )
236269add_test (WorkStealingQueue.2Thieves ${TF_UTEST_DIR} /spmc_queue -tc=WSQ.2Thieves )
@@ -287,7 +320,11 @@ add_executable(
287320target_include_directories (wavefront PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
288321target_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)
292329set_target_properties (wavefront PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
293330
@@ -305,7 +342,11 @@ add_executable(
305342target_include_directories (graph_traversal PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
306343target_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)
310351set_target_properties (graph_traversal PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
311352
@@ -322,7 +363,11 @@ add_executable(
322363target_include_directories (binary_tree PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
323364target_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)
327372set_target_properties (binary_tree PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
328373
@@ -339,7 +384,11 @@ add_executable(
339384target_include_directories (linear_chain PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
340385target_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)
344393set_target_properties (linear_chain PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
345394
@@ -357,8 +406,12 @@ add_executable(
357406target_include_directories (mnist PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
358407target_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)
363416set_target_properties (mnist PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
364417
@@ -376,8 +429,12 @@ add_executable(
376429target_include_directories (parallel_dnn PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
377430target_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)
382439set_target_properties (parallel_dnn PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
383440
@@ -394,7 +451,11 @@ add_executable(
394451target_include_directories (matrix_multiplication PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
395452target_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)
399460set_target_properties (matrix_multiplication PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
400461
@@ -411,7 +472,11 @@ add_executable(
411472target_include_directories (mandelbrot_set PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
412473target_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)
416481set_target_properties (mandelbrot_set PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
417482
@@ -428,7 +493,11 @@ add_executable(
428493target_include_directories (black_scholes PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
429494target_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)
433502set_target_properties (black_scholes PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
434503
@@ -445,7 +514,11 @@ add_executable(
445514target_include_directories (strassen PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
446515target_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)
450523set_target_properties (strassen PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
451524
@@ -462,7 +535,11 @@ add_executable(
462535target_include_directories (parallel_loop PRIVATE ${PROJECT_SOURCE_DIR} /3rd-party/CLI11 )
463536target_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)
467544set_target_properties (parallel_loop PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} )
468545
0 commit comments