@@ -9,23 +9,118 @@ endif()
9
9
10
10
set (CMAKE_CXX_STANDARD 17)
11
11
12
- add_library (amrexpr)
12
+ if (NOT CMAKE_BUILD_TYPE )
13
+ set (CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo" )
14
+ set (CMAKE_BUILD_TYPE Release
15
+ CACHE STRING
16
+ "Choose the build type, e.g. Release, Debug, or RelWithDebInfo." FORCE)
17
+ endif ()
18
+
19
+ option (ENABLE_CUDA "Enable CUDA support" OFF )
20
+ if (ENABLE_CUDA)
21
+ set (AMREXPR_USE_GPU 1)
22
+ set (AMREXPR_USE_CUDA 1)
23
+ find_package (CUDAToolkit REQUIRED)
24
+ enable_language (CUDA)
25
+ set (CMAKE_CUDA_STANDARD 17)
26
+ endif ()
27
+
28
+ option (ENABLE_HIP "Enable HIP support" OFF )
29
+ if (ENABLE_HIP)
30
+ set (AMREXPR_USE_GPU 1)
31
+ set (AMREXPR_USE_HIP 1)
32
+ find_package (hip REQUIRED)
33
+ enable_language (HIP)
34
+ set (CMAKE_HIP_STANDARD 17)
35
+ endif ()
36
+
37
+ option (ENABLE_SYCL "Enable SYCL support" OFF )
38
+ if (ENABLE_SYCL)
39
+ set (AMREXPR_USE_GPU 1)
40
+ set (AMREXPR_USE_SYCL 1)
41
+ set (CMAKE_CXX_COMPILER icpx)
42
+ endif ()
13
43
44
+ add_library (amrexpr)
14
45
add_subdirectory (Src)
15
46
16
47
configure_file (${PROJECT_SOURCE_DIR} /Tools/CMake/amrexpr_Config.H.in
17
48
${CMAKE_BINARY_DIR} /amrexpr_Config.H)
18
49
19
- include_directories (${PROJECT_SOURCE_DIR} /Src ${CMAKE_BINARY_DIR} )
50
+ target_include_directories (amrexpr PUBLIC
51
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /Src>
52
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR} >
53
+ $<INSTALL_INTERFACE:include >)
20
54
21
- install (TARGETS amrexpr)
55
+ if (ENABLE_CUDA)
56
+ get_target_property (_sources amrexpr SOURCES )
57
+ list (FILTER _sources INCLUDE REGEX "\\ .cpp$" )
58
+ set_source_files_properties (${_sources} PROPERTIES LANGUAGE CUDA)
59
+ if (NOT DEFINED CUDA_ARCHITECTURES)
60
+ message (STATUS "No CUDA architectures specified. Native will be used." )
61
+ set_target_properties (amrexpr PROPERTIES CUDA_ARCHITECTURES native)
62
+ endif ()
63
+ set_target_properties (amrexpr PROPERTIES CUDA_SEPARABLE_COMPILATION ON )
64
+ target_compile_options (amrexpr PRIVATE
65
+ $<$<COMPILE_LANGUAGE:CUDA>:-m64>
66
+ $<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
67
+ $<$<COMPILE_LANGUAGE:CUDA>:--expt-extended-lambda>
68
+ $<$<COMPILE_LANGUAGE:CUDA>:--use_fast_math>)
69
+ target_link_libraries (amrexpr PRIVATE CUDA::cudart)
70
+ endif ()
71
+
72
+ if (ENABLE_SYCL)
73
+ target_compile_options (amrexpr PRIVATE -fsycl)
74
+ endif ()
75
+
76
+ install (TARGETS amrexpr EXPORT amrexprTargets)
22
77
23
78
install (DIRECTORY ${PROJECT_SOURCE_DIR} /Src/ DESTINATION include
24
- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.H"
25
- )
79
+ FILES_MATCHING PATTERN "*.hpp" PATTERN "*.H" )
26
80
27
81
install (FILES ${CMAKE_BINARY_DIR} /amrexpr_Config.H DESTINATION include )
28
82
83
+ set (PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} )
84
+ set (PACKAGE_INCLUDE_INSTALL_DIR "include" )
85
+
86
+ set (amrexpr_FIND_DEPENDENCIES "" )
87
+ if (ENABLE_CUDA)
88
+ set (amrexpr_FIND_DEPENDENCIES "${amrexpr_FIND_DEPENDENCIES} \n find_dependency(CUDAToolkit REQUIRED)" )
89
+ endif ()
90
+ if (ENABLE_HIP)
91
+ set (amrexpr_FIND_DEPENDENCIES "${amrexpr_FIND_DEPENDENCIES} \n find_dependency(hip REQUIRED)" )
92
+ endif ()
93
+ if (ENABLE_SYCL)
94
+ # Adjust SYCL dependency find commands if necessary
95
+ endif ()
96
+
97
+ include (CMakePackageConfigHelpers)
98
+
99
+ write_basic_package_version_file(
100
+ "${CMAKE_CURRENT_BINARY_DIR} /amrexprConfigVersion.cmake"
101
+ VERSION ${PROJECT_VERSION}
102
+ COMPATIBILITY AnyNewerVersion
103
+ )
104
+
105
+ configure_package_config_file(
106
+ "${CMAKE_CURRENT_SOURCE_DIR} /Tools/CMake/amrexprConfig.cmake.in"
107
+ "${CMAKE_CURRENT_BINARY_DIR} /amrexprConfig.cmake"
108
+ INSTALL_DESTINATION lib/cmake/amrexpr
109
+ PATH_VARS PACKAGE_INCLUDE_INSTALL_DIR PACKAGE_INSTALL_PREFIX
110
+ )
111
+
112
+ install (FILES
113
+ "${CMAKE_CURRENT_BINARY_DIR} /amrexprConfig.cmake"
114
+ "${CMAKE_CURRENT_BINARY_DIR} /amrexprConfigVersion.cmake"
115
+ DESTINATION lib/cmake/amrexpr
116
+ )
117
+
118
+ install (EXPORT amrexprTargets
119
+ FILE amrexprTargets.cmake
120
+ NAMESPACE amrexpr::
121
+ DESTINATION lib/cmake/amrexpr
122
+ )
123
+
29
124
# tests
30
125
# enable_testing
31
126
# add_subdirectory(Tests)
0 commit comments