@@ -49,7 +49,6 @@ UNSET(_ALPAKA_COMMON_FILE)
4949UNSET (_ALPAKA_ADD_EXECUTABLE_FILE)
5050UNSET (_ALPAKA_ADD_LIBRRAY_FILE)
5151UNSET (_ALPAKA_FILES_HEADER)
52- UNSET (_ALPAKA_FILES_SOURCE)
5352UNSET (_ALPAKA_FILES_OTHER)
5453UNSET (_ALPAKA_VERSION_DEFINE)
5554UNSET (_ALPAKA_VER_MAJOR)
@@ -128,7 +127,7 @@ IF(${ALPAKA_DEBUG} GREATER 1)
128127 SET (Boost_DETAILED_FAILURE_MSG ON )
129128ENDIF ()
130129IF (ALPAKA_ACC_CPU_B_SEQ_T_FIBERS_ENABLE)
131- FIND_PACKAGE (Boost ${_ALPAKA_BOOST_MIN_VER} QUIET COMPONENTS fiber context system thread chrono date_time)
130+ FIND_PACKAGE (Boost ${_ALPAKA_BOOST_MIN_VER} QUIET COMPONENTS fiber context system thread atomic chrono date_time)
132131 IF (NOT Boost_FIBER_FOUND)
133132 MESSAGE (STATUS "Optional alpaka dependency Boost fiber could not be found! Fibers back-end disabled!" )
134133 SET (ALPAKA_ACC_CPU_B_SEQ_T_FIBERS_ENABLE OFF CACHE BOOL "Enable the Fibers CPU back-end" FORCE)
@@ -207,8 +206,29 @@ IF(NOT Boost_FOUND)
207206 SET (_ALPAKA_FOUND FALSE )
208207
209208ELSE ()
210- LIST (APPEND _ALPAKA_INCLUDE_DIRECTORIES_PUBLIC ${Boost_INCLUDE_DIRS} )
211- LIST (APPEND _ALPAKA_LINK_LIBRARIES_PUBLIC ${Boost_LIBRARIES} )
209+ IF (Boost_FIBER_FOUND)
210+ # Boost fiber and default header-only libraries
211+ IF (TARGET Boost::fiber)
212+ LIST (APPEND _ALPAKA_LINK_LIBRARIES_PUBLIC
213+ Boost::boost
214+ Boost::fiber Boost::context Boost::system Boost::thread
215+ Boost::chrono Boost::date_time Boost::atomic
216+ )
217+ ELSE ()
218+ # fallback: Boost version is too new for CMake
219+ LIST (APPEND _ALPAKA_INCLUDE_DIRECTORIES_PUBLIC ${Boost_INCLUDE_DIRS} )
220+ LIST (APPEND _ALPAKA_LINK_LIBRARIES_PUBLIC ${Boost_LIBRARIES} )
221+ ENDIF ()
222+ ELSE ()
223+ # header-only libraries
224+ IF (TARGET Boost::boost)
225+ LIST (APPEND _ALPAKA_LINK_LIBRARIES_PUBLIC Boost::boost)
226+ ELSE ()
227+ # fallback: Boost version is too new for CMake
228+ LIST (APPEND _ALPAKA_INCLUDE_DIRECTORIES_PUBLIC ${Boost_INCLUDE_DIRS} )
229+ LIST (APPEND _ALPAKA_LINK_LIBRARIES_PUBLIC ${Boost_LIBRARIES} )
230+ ENDIF ()
231+ ENDIF ()
212232ENDIF ()
213233
214234#-------------------------------------------------------------------------------
@@ -491,15 +511,13 @@ IF(ALPAKA_CI)
491511ENDIF ()
492512
493513SET (_ALPAKA_INCLUDE_DIRECTORY "${_ALPAKA_ROOT_DIR} /include" )
494- LIST (APPEND _ALPAKA_INCLUDE_DIRECTORIES_PUBLIC "${_ALPAKA_INCLUDE_DIRECTORY} " )
495514SET (_ALPAKA_SUFFIXED_INCLUDE_DIR "${_ALPAKA_INCLUDE_DIRECTORY} /alpaka" )
496515
497516SET (_ALPAKA_LINK_LIBRARY)
498517LIST (APPEND _ALPAKA_LINK_LIBRARIES_PUBLIC "${_ALPAKA_LINK_LIBRARY} " )
499518
500519# Add all the source and include files in all recursive subdirectories and group them accordingly.
501520append_recursive_files_add_to_src_group("${_ALPAKA_SUFFIXED_INCLUDE_DIR} " "${_ALPAKA_SUFFIXED_INCLUDE_DIR} " "hpp" _ALPAKA_FILES_HEADER)
502- append_recursive_files_add_to_src_group("${_ALPAKA_SUFFIXED_INCLUDE_DIR} " "${_ALPAKA_SUFFIXED_INCLUDE_DIR} " "cpp" _ALPAKA_FILES_SOURCE)
503521
504522append_recursive_files_add_to_src_group("${_ALPAKA_ROOT_DIR} /script" "${_ALPAKA_ROOT_DIR} " "sh" _ALPAKA_FILES_SCRIPT)
505523SET_SOURCE_FILES_PROPERTIES (${_ALPAKA_FILES_SCRIPT} PROPERTIES HEADER_FILE_ONLY TRUE )
@@ -517,9 +535,13 @@ SET_SOURCE_FILES_PROPERTIES(${_ALPAKA_FILES_OTHER} PROPERTIES HEADER_FILE_ONLY T
517535#-------------------------------------------------------------------------------
518536# Target.
519537IF (NOT TARGET "alpaka" )
520- ADD_LIBRARY (
521- "alpaka"
522- ${_ALPAKA_FILES_HEADER} ${_ALPAKA_FILES_SOURCE} ${_ALPAKA_FILES_SCRIPT} ${_ALPAKA_FILES_CMAKE} ${_ALPAKA_FILES_DOC} ${_ALPAKA_FILES_OTHER} )
538+ ADD_LIBRARY ("alpaka" INTERFACE )
539+
540+ # HACK: Workaround for the limitation that files added to INTERFACE targets (target_sources) can not be marked as PUBLIC or PRIVATE but only as INTERFACE.
541+ # Therefore those files will be added to projects "linking" to the INTERFACE library, but are not added to the project itself within an IDE.
542+ add_custom_target ("alpakaIde"
543+ SOURCES ${_ALPAKA_FILES_HEADER} ${_ALPAKA_FILES_SCRIPT} ${_ALPAKA_FILES_CMAKE} ${_ALPAKA_FILES_DOC} ${_ALPAKA_FILES_OTHER}
544+ )
523545
524546 # Compile options.
525547 IF (${ALPAKA_DEBUG} GREATER 1)
@@ -532,7 +554,7 @@ IF(NOT TARGET "alpaka")
532554 IF (${_ALPAKA_COMPILE_OPTIONS_PUBLIC_LENGTH} GREATER 0)
533555 TARGET_COMPILE_OPTIONS (
534556 "alpaka"
535- PUBLIC ${_ALPAKA_COMPILE_OPTIONS_PUBLIC} )
557+ INTERFACE ${_ALPAKA_COMPILE_OPTIONS_PUBLIC} )
536558 ENDIF ()
537559
538560 # Compile definitions.
@@ -546,7 +568,7 @@ IF(NOT TARGET "alpaka")
546568 IF (${_ALPAKA_COMPILE_DEFINITIONS_PUBLIC_LENGTH} GREATER 0)
547569 TARGET_COMPILE_DEFINITIONS (
548570 "alpaka"
549- PUBLIC ${_ALPAKA_COMPILE_DEFINITIONS_PUBLIC} )
571+ INTERFACE ${_ALPAKA_COMPILE_DEFINITIONS_PUBLIC} )
550572 ENDIF ()
551573
552574 # Include directories.
@@ -560,8 +582,14 @@ IF(NOT TARGET "alpaka")
560582 IF (${_ALPAKA_INCLUDE_DIRECTORIES_PUBLIC_LENGTH} GREATER 0)
561583 TARGET_INCLUDE_DIRECTORIES (
562584 "alpaka"
563- PUBLIC ${_ALPAKA_INCLUDE_DIRECTORIES_PUBLIC} )
585+ SYSTEM
586+ INTERFACE ${_ALPAKA_INCLUDE_DIRECTORIES_PUBLIC} )
564587 ENDIF ()
588+ # the alpaka library itself
589+ TARGET_INCLUDE_DIRECTORIES (
590+ "alpaka"
591+ INTERFACE ${_ALPAKA_INCLUDE_DIRECTORY}
592+ )
565593
566594 # Link libraries.
567595 # There are no PUBLIC_LINK_FLAGS in CMAKE:
@@ -576,7 +604,7 @@ IF(NOT TARGET "alpaka")
576604 IF (${_ALPAKA_LINK_LIBRARIES_PUBLIC_LENGTH} GREATER 0)
577605 TARGET_LINK_LIBRARIES (
578606 "alpaka"
579- PUBLIC ${_ALPAKA_LINK_LIBRARIES_PUBLIC} ${_ALPAKA_LINK_FLAGS_PUBLIC} )
607+ INTERFACE ${_ALPAKA_LINK_LIBRARIES_PUBLIC} ${_ALPAKA_LINK_FLAGS_PUBLIC} )
580608 ENDIF ()
581609ENDIF ()
582610
@@ -604,6 +632,7 @@ list_add_prefix("-D" alpaka_DEFINITIONS)
604632LIST (APPEND alpaka_DEFINITIONS ${_ALPAKA_COMPILE_OPTIONS_PUBLIC} )
605633SET (alpaka_INCLUDE_DIR ${_ALPAKA_INCLUDE_DIRECTORY} )
606634SET (alpaka_INCLUDE_DIRS ${_ALPAKA_INCLUDE_DIRECTORIES_PUBLIC} )
635+ LIST (APPEND alpaka_INCLUDE_DIRS ${_ALPAKA_INCLUDE_DIRECTORY} )
607636SET (alpaka_LIBRARY ${_ALPAKA_LINK_LIBRARY} )
608637SET (alpaka_LIBRARIES ${_ALPAKA_LINK_FLAGS_PUBLIC} )
609638LIST (APPEND alpaka_LIBRARIES ${_ALPAKA_LINK_LIBRARIES_PUBLIC} )
@@ -646,7 +675,6 @@ IF(NOT _ALPAKA_FOUND)
646675 UNSET (_ALPAKA_ADD_EXECUTABLE_FILE)
647676 UNSET (_ALPAKA_ADD_LIBRARY_FILE)
648677 UNSET (_ALPAKA_FILES_HEADER)
649- UNSET (_ALPAKA_FILES_SOURCE)
650678 UNSET (_ALPAKA_FILES_OTHER)
651679 UNSET (_ALPAKA_BOOST_MIN_VER)
652680 UNSET (_ALPAKA_VERSION_DEFINE)
@@ -669,7 +697,6 @@ ELSE()
669697 _ALPAKA_ADD_EXECUTABLE_FILE
670698 _ALPAKA_ADD_LIBRARY_FILE
671699 _ALPAKA_FILES_HEADER
672- _ALPAKA_FILES_SOURCE
673700 _ALPAKA_FILES_OTHER
674701 _ALPAKA_BOOST_MIN_VER
675702 _ALPAKA_VERSION_DEFINE
0 commit comments