@@ -151,6 +151,23 @@ set(stdexec_export_targets)
151
151
# Define the main library
152
152
add_library (stdexec INTERFACE )
153
153
154
+ file (GLOB_RECURSE exec_headers CONFIGURE_DEPENDS include /exec/*.hpp )
155
+ file (GLOB_RECURSE stdexec_headers CONFIGURE_DEPENDS include /stdexec/*.hpp )
156
+ target_sources (stdexec
157
+ PUBLIC
158
+ FILE_SET headers
159
+ TYPE HEADERS
160
+ BASE_DIRS include
161
+ FILES
162
+ ${exec_headers}
163
+ ${stdexec_headers}
164
+ # stdexec_version_config.hpp is generated by rapids' script
165
+ FILE_SET version_config
166
+ TYPE HEADERS
167
+ BASE_DIRS ${CMAKE_BINARY_DIR} /include
168
+ FILES
169
+ ${CMAKE_BINARY_DIR} /include/stdexec_version_config.hpp
170
+ )
154
171
list (APPEND stdexec_export_targets stdexec )
155
172
156
173
# Set library version
@@ -160,10 +177,6 @@ set_target_properties(stdexec PROPERTIES
160
177
161
178
# Declare the public include directories
162
179
include (GNUInstallDirs )
163
- target_include_directories (stdexec INTERFACE
164
- $< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include/>
165
- $< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
166
- )
167
180
168
181
target_link_libraries (stdexec INTERFACE Threads::Threads )
169
182
@@ -269,9 +282,15 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC")
269
282
endif ()
270
283
271
284
if (STDEXEC_ENABLE_CUDA )
272
-
273
- file (GLOB_RECURSE nvexec_sources include /nvexec/*.cuh )
274
- add_library (nvexec INTERFACE ${nvexec_sources} )
285
+ file (GLOB_RECURSE nvexec_headers CONFIGURE_DEPENDS include /nvexec/*.cuh )
286
+ add_library (nvexec INTERFACE )
287
+ target_sources (nvexec
288
+ PUBLIC
289
+ FILE_SET headers
290
+ TYPE HEADERS
291
+ BASE_DIRS include
292
+ FILES ${nvexec_headers}
293
+ )
275
294
list (APPEND stdexec_export_targets nvexec )
276
295
add_library (STDEXEC::nvexec ALIAS nvexec )
277
296
@@ -283,6 +302,10 @@ if(STDEXEC_ENABLE_CUDA)
283
302
target_link_options (nvexec INTERFACE
284
303
$< $< AND:$< CXX_COMPILER_ID:NVHPC> ,$< COMPILE_LANGUAGE:CXX> > :-stdpar -gpu=cc${CMAKE_CUDA_ARCHITECTURES}> )
285
304
305
+ install (TARGETS nvexec
306
+ EXPORT stdexec-exports
307
+ FILE_SET headers )
308
+
286
309
if (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC" ))
287
310
include (rapids-cuda )
288
311
# Needs to run before `enable_language(CUDA)`
@@ -330,16 +353,29 @@ if (STDEXEC_ENABLE_TBB)
330
353
INSTALL_EXPORT_SET stdexec-exports
331
354
)
332
355
333
- file (GLOB_RECURSE tbbpool_sources include /execpools/tbb/*.hpp )
334
- add_library (tbbpool INTERFACE ${tbbpool_sources} )
356
+ # CONFIGURE_DEPENDS ensures that CMake reconfigures when a relevant hpp file is
357
+ # added or removed.
358
+ file (GLOB_RECURSE tbbpool_headers CONFIGURE_DEPENDS include /execpools/tbb/*.hpp )
359
+ add_library (tbbpool INTERFACE )
335
360
list (APPEND stdexec_export_targets tbbpool )
336
361
add_library (STDEXEC::tbbpool ALIAS tbbpool )
362
+ target_sources (tbbpool
363
+ PUBLIC
364
+ FILE_SET headers
365
+ TYPE HEADERS
366
+ BASE_DIRS include
367
+ FILES ${tbbpool_headers}
368
+ )
337
369
338
370
target_link_libraries (tbbpool
339
371
INTERFACE
340
372
STDEXEC::stdexec
341
373
TBB::tbb
342
374
)
375
+
376
+ install (TARGETS tbbpool
377
+ EXPORT stdexec-exports
378
+ FILE_SET headers )
343
379
endif ()
344
380
345
381
option (STDEXEC_ENABLE_TASKFLOW "Enable TaskFlow targets" OFF )
@@ -435,10 +471,6 @@ endif()
435
471
436
472
set (SYSTEM_CONTEXT_SOURCES src/system_context/system_context.cpp )
437
473
add_library (system_context STATIC ${SYSTEM_CONTEXT_SOURCES} )
438
- target_include_directories (system_context PRIVATE
439
- $< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include/>
440
- $< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
441
- )
442
474
target_compile_features (system_context PUBLIC cxx_std_20 )
443
475
set_target_properties (system_context PROPERTIES
444
476
CXX_STANDARD 20
@@ -448,7 +480,7 @@ target_compile_options(system_context PUBLIC
448
480
$< $< COMPILE_LANG_AND_ID:CXX,MSVC> :/Zc:__cplusplus /Zc:preprocessor>
449
481
)
450
482
add_library (STDEXEC::system_context ALIAS system_context )
451
-
483
+ target_link_libraries ( system_context PUBLIC stdexec )
452
484
453
485
454
486
if (CMAKE_CROSSCOMPILING )
@@ -499,16 +531,9 @@ endif()
499
531
include (CPack )
500
532
501
533
install (TARGETS stdexec system_context
502
- DESTINATION ${CMAKE_INSTALL_LIBDIR}
503
- EXPORT stdexec-exports )
504
-
505
- install (
506
- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include/
507
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
508
-
509
- install (
510
- FILES ${CMAKE_CURRENT_BINARY_DIR} /include/stdexec_version_config.hpp
511
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
534
+ EXPORT stdexec-exports
535
+ FILE_SET headers
536
+ FILE_SET version_config )
512
537
513
538
##############################################################################
514
539
# Install exports ------------------------------------------------------------
0 commit comments