-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathCMakeLists.txt
109 lines (90 loc) · 3.37 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
cmake_minimum_required(VERSION 3.22)
project(sphexa CXX C)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -DNDEBUG")
set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG")
list(APPEND CMAKE_MODULE_PATH
"${PROJECT_SOURCE_DIR}/cmake"
"${PROJECT_SOURCE_DIR}/main/cmake"
)
option(BUILD_TESTING "build unit and integration tests" ON)
option(BUILD_ANALYTICAL "build analytical solution" ON)
option(SPH_EXA_WITH_CUDA "Enable building for NVIDIA GPUs" ON)
option(SPH_EXA_WITH_HIP "Enable building for AMD GPUs" ON)
set(CSTONE_DIR ${PROJECT_SOURCE_DIR}/domain/include)
set(CSTONE_TEST_DIR ${PROJECT_SOURCE_DIR}/domain/test)
if (BUILD_TESTING)
include(setup_GTest)
endif()
find_package(MPI)
find_package(OpenMP)
# if INTERFACE_LINK_OPTIONS for OpenMP_CXX is not set, we set
# INTERFACE_LINK_OPTIONS = INTERFACE_COMPILE_OPTIONS
# i.e. we add e.g. the -fopenmp flag to the linker
get_property(OpenMP_CXX_INTERFACE_LINK_OPTIONS TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_LINK_OPTIONS)
if (NOT OpenMP_CXX_INTERFACE_LINK_OPTIONS)
# fill in using INTERFACE_COMPILE_OPTIONS
get_property(OpenMP_CXX_INTERFACE_LINK_OPTIONS TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_COMPILE_OPTIONS)
set_property(TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_LINK_OPTIONS ${OpenMP_CXX_INTERFACE_LINK_OPTIONS})
endif()
include(CTest)
include(CheckLanguage)
set(default_build_type "Release")
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
if(SPH_EXA_WITH_CUDA)
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
enable_language(CUDA)
find_package(CUDAToolkit)
set(CMAKE_CUDA_STANDARD 17)
else()
message(STATUS "No CUDA support")
set(SPH_EXA_WITH_CUDA OFF)
endif()
endif()
if(SPH_EXA_WITH_HIP)
check_language(HIP)
if(CMAKE_HIP_COMPILER AND NOT CMAKE_CUDA_COMPILER)
enable_language(HIP)
find_package(hip)
set(CMAKE_HIP_STANDARD 17)
else()
message(STATUS "No HIP support")
set(SPH_EXA_WITH_HIP OFF)
endif()
endif()
if(SPH_EXA_WITH_HIP AND SPH_EXA_WITH_CUDA)
message(FATAL_ERROR "CUDA and HIP cannot both be turned on")
endif()
option(SPH_EXA_WITH_H5PART "Enable HDF5 IO using the H5Part library" ON)
if (SPH_EXA_WITH_H5PART)
set(HDF5_PREFER_PARALLEL true)
find_package(HDF5)
if (HDF5_FOUND)
add_subdirectory(./extern/h5part)
else()
message(STATUS "No HDF5 support")
set(SPH_EXA_WITH_H5PART OFF)
endif ()
endif ()
set(INSITU None CACHE STRING "Enable in-situ support")
set_property(CACHE INSITU PROPERTY STRINGS None Catalyst Ascent)
if(INSITU STREQUAL "Catalyst")
find_package(catalyst REQUIRED PATHS "$ENV{EBROOTPARAVIEW}/lib/cmake/paraview-5.10")
elseif(INSITU STREQUAL "Ascent")
find_package(Ascent REQUIRED PATHS "$ENV{EBROOTASCENT}/lib/cmake/ascent")
endif()
option(SPH_EXA_WITH_GRACKLE "Enable radiative cooling with GRACKLE" OFF)
if (SPH_EXA_WITH_GRACKLE)
add_subdirectory(extern/grackle)
endif()
add_subdirectory(domain)
add_subdirectory(ryoanji)
add_subdirectory(scripts)
add_subdirectory(sph)
add_subdirectory(physics)
add_subdirectory(main)