@@ -9,23 +9,118 @@ endif()
99
1010set (CMAKE_CXX_STANDARD 17)
1111
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 ()
1343
44+ add_library (amrexpr )
1445add_subdirectory (Src )
1546
1647configure_file (${PROJECT_SOURCE_DIR} /Tools/CMake/amrexpr_Config.H.in
1748 ${CMAKE_BINARY_DIR} /amrexpr_Config.H )
1849
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 >)
2054
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)
2277
2378install (DIRECTORY ${PROJECT_SOURCE_DIR} /Src/ DESTINATION include
24- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.H"
25- )
79+ FILES_MATCHING PATTERN "*.hpp" PATTERN "*.H" )
2680
2781install (FILES ${CMAKE_BINARY_DIR} /amrexpr_Config.H DESTINATION include)
2882
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+
29124# tests
30125# enable_testing
31126# add_subdirectory(Tests)
0 commit comments