Skip to content

Commit 1459a32

Browse files
committed
Improve install handling.
1 parent 8d1241f commit 1459a32

File tree

4 files changed

+31
-21
lines changed

4 files changed

+31
-21
lines changed

CMakeLists.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,7 @@ write_basic_package_version_file(
952952
COMPATIBILITY SameMajorVersion
953953
)
954954

955-
# generate configuration file
955+
# generate configuration files
956956
configure_package_config_file(
957957
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmConfig.cmake.in" "${PROJECT_BINARY_DIR}/plssvmConfig.cmake"
958958
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/plssvm/cmake
@@ -961,6 +961,15 @@ configure_package_config_file(
961961
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmHIPTargets.cmake.in" "${PROJECT_BINARY_DIR}/plssvmHIPTargets.cmake"
962962
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/plssvm/cmake
963963
)
964+
configure_package_config_file(
965+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmAdaptiveCppTargets.cmake.in" "${PROJECT_BINARY_DIR}/plssvmAdaptiveCppTargets.cmake"
966+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/plssvm/cmake
967+
)
968+
string(REPLACE "\"" "\\\"" PLSSVM_ESCAPED_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # necessary to correctly escape quotes
969+
configure_package_config_file(
970+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmstdparTargets.cmake.in" "${PROJECT_BINARY_DIR}/plssvmstdparTargets.cmake"
971+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/plssvm/cmake
972+
)
964973

965974
# create and copy install-targets file
966975
install(
@@ -979,9 +988,9 @@ install(
979988
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmOpenCLTargets.cmake"
980989
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmOpenMPTargets.cmake"
981990
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmHPXTargets.cmake"
982-
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmAdaptiveCppTargets.cmake"
991+
"${PROJECT_BINARY_DIR}/plssvmAdaptiveCppTargets.cmake"
983992
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmDPCPPTargets.cmake"
984993
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmKokkosTargets.cmake"
985-
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/plssvm/plssvmstdparTargets.cmake"
994+
"${PROJECT_BINARY_DIR}/plssvmstdparTargets.cmake"
986995
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/plssvm/cmake
987996
)

cmake/plssvm/plssvmAdaptiveCppTargets.cmake renamed to cmake/plssvm/plssvmAdaptiveCppTargets.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ include(CMakeFindDependencyMacro)
1010
if (TARGET plssvm::plssvm-SYCL_adaptivecpp)
1111
# enable AdaptiveCpp
1212
find_dependency(AdaptiveCpp CONFIG)
13+
# set ACPP_TARGETS
14+
set(ACPP_TARGETS "@ACPP_TARGETS@")
15+
message(STATUS "Setting ACPP_TARGETS to \"${ACPP_TARGETS}\"")
1316
# set alias targets
1417
add_library(plssvm::AdaptiveCpp ALIAS plssvm::plssvm-SYCL_adaptivecpp)
1518
add_library(plssvm::adaptivecpp ALIAS plssvm::plssvm-SYCL_adaptivecpp)

cmake/plssvm/plssvmConfig.cmake.in

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ find_dependency(fmt REQUIRED)
3838
include("${CMAKE_CURRENT_LIST_DIR}/plssvmTargets.cmake")
3939

4040
# list all available libraries
41-
set(PLSSVM_SUPPORTED_COMPONENTS "OpenMP;HPX;CUDA;HIP;OpenCL;DPCPP;AdaptiveCpp;Kokkos;stdpar")
41+
set(PLSSVM_SUPPORTED_COMPONENTS "OpenMP;HPX;CUDA;HIP;OpenCL;DPCPP;AdaptiveCpp;Kokkos;stdpar") # TODO: icpx, acpp, SYCL components?
4242
set(PLSSVM_DISABLED_COMPONENTS "${PLSSVM_SUPPORTED_COMPONENTS}")
4343

4444
# check which libraries are available
@@ -74,17 +74,6 @@ foreach (_comp ${plssvm_FIND_COMPONENTS})
7474
set(plssvm_FOUND OFF)
7575
set(plssvm_NOT_FOUND_MESSAGE "Component ${_comp} wasn't enabled!")
7676
else ()
77-
# set component specific variables
78-
if (${_comp} MATCHES "AdaptiveCpp")
79-
set(ACPP_TARGETS @ACPP_TARGETS@)
80-
elseif (${_comp} MATCHES "stdpar")
81-
set(PLSSVM_STDPAR_BACKEND @PLSSVM_STDPAR_BACKEND@)
82-
set(CMAKE_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
83-
if (CMAKE_CXX_FLAGS)
84-
message(STATUS "Setting CMAKE_CXX_FLAGS for the plssvm::stdpar backend to: \"${CMAKE_CXX_FLAGS}\"")
85-
endif ()
86-
endif ()
87-
8877
# include the component specific config file
8978
include("${CMAKE_CURRENT_LIST_DIR}/plssvm${_comp}Targets.cmake")
9079
# remove the found element from the list
Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,24 @@ include(CMakeFindDependencyMacro)
88

99
# check if the stdpar backend is available
1010
if (TARGET plssvm::plssvm-stdpar)
11+
# configure variables
12+
set(PLSSVM_STDPAR_BACKEND @PLSSVM_STDPAR_BACKEND@)
13+
set(CMAKE_CXX_FLAGS "@PLSSVM_ESCAPED_CXX_FLAGS@")
14+
if (CMAKE_CXX_FLAGS)
15+
message(STATUS "Setting CMAKE_CXX_FLAGS for the plssvm::stdpar backend to: \"${CMAKE_CXX_FLAGS}\"")
16+
endif ()
17+
1118
# enable stdpar based on the used stdpar implementation
1219
include(CheckCXXCompilerFlag)
1320
if (PLSSVM_STDPAR_BACKEND MATCHES "NVHPC")
14-
enable_language(CUDA)
15-
find_dependency(CUDAToolkit)
1621
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC")
1722
set(plssvm_FOUND OFF)
1823
set(plssvm_stdpar_FOUND OFF)
1924
set(plssvm_NOT_FOUND_MESSAGE "The CMAKE_CXX_COMPILER must be set to NVIDIA's HPC SDK compiler (nvc++) in user code in order to use plssvm::stdpar!")
2025
return()
2126
endif ()
27+
enable_language(CUDA)
28+
find_dependency(CUDAToolkit)
2229
elseif (PLSSVM_STDPAR_BACKEND MATCHES "roc-stdpar")
2330
check_cxx_compiler_flag("--hipstdpar" PLSSVM_HAS_HIPSTDPAR_STDPAR_FLAG)
2431
if (NOT PLSSVM_HAS_HIPSTDPAR_STDPAR_FLAG)
@@ -30,32 +37,34 @@ if (TARGET plssvm::plssvm-stdpar)
3037
return()
3138
endif ()
3239
elseif (PLSSVM_STDPAR_BACKEND MATCHES "IntelLLVM")
33-
find_dependency(oneDPL)
3440
check_cxx_compiler_flag("-fsycl-pstl-offload" PLSSVM_HAS_INTEL_LLVM_STDPAR_FLAG)
3541
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM" AND NOT PLSSVM_HAS_INTEL_LLVM_STDPAR_FLAG)
3642
set(plssvm_FOUND OFF)
3743
set(plssvm_stdpar_FOUND OFF)
3844
set(plssvm_NOT_FOUND_MESSAGE "The CMAKE_CXX_COMPILER must be set to the Intel LLVM compiler (icpx) in user code in order to use plssvm::stdpar!")
3945
return()
4046
endif ()
47+
find_dependency(oneDPL)
4148
elseif (PLSSVM_STDPAR_BACKEND MATCHES "ACPP")
42-
find_dependency(TBB)
4349
check_cxx_compiler_flag("--acpp-stdpar" PLSSVM_HAS_ACPP_STDPAR_FLAG)
4450
if (NOT PLSSVM_HAS_ACPP_STDPAR_FLAG)
4551
set(plssvm_FOUND OFF)
4652
set(plssvm_stdpar_FOUND OFF)
4753
set(plssvm_NOT_FOUND_MESSAGE "The CMAKE_CXX_COMPILER must be set to the AdaptiveCpp compiler (acpp) in user code in order to use plssvm::stdpar!")
4854
return()
4955
endif ()
50-
elseif (PLSSVM_STDPAR_BACKEND MATCHES "GNU_TBB")
5156
find_dependency(TBB)
52-
find_dependency(Boost COMPONENTS atomic)
57+
set(ACPP_TARGETS "@ACPP_TARGETS@")
58+
message(STATUS "Setting ACPP_TARGETS to \"${ACPP_TARGETS}\"")
59+
elseif (PLSSVM_STDPAR_BACKEND MATCHES "GNU_TBB")
5360
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
5461
set(plssvm_FOUND OFF)
5562
set(plssvm_stdpar_FOUND OFF)
5663
set(plssvm_NOT_FOUND_MESSAGE "The CMAKE_CXX_COMPILER must be set to GNU GCC in user code in order to use plssvm::stdpar!")
5764
return()
5865
endif ()
66+
find_dependency(TBB)
67+
find_dependency(Boost COMPONENTS atomic)
5968
else ()
6069
message(FATAL_ERROR "Unrecognized stdpar implementation!")
6170
endif ()

0 commit comments

Comments
 (0)