forked from Shamrock-code/Shamrock
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
130 lines (99 loc) · 4.09 KB
/
Copy pathCMakeLists.txt
File metadata and controls
130 lines (99 loc) · 4.09 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
## -------------------------------------------------------
##
## SHAMROCK code for hydrodynamics
## Copyright (c) 2021-2026 Timothée David--Cléris <tim.shamrock@proton.me>
## SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
## Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
##
## -------------------------------------------------------
################################
# Cmake config
################################
cmake_minimum_required(VERSION 3.9...3.10)
enable_testing()
# Necessary to link a subfolder library into another subfolder
cmake_policy(SET CMP0079 NEW)
cmake_policy(SET CMP0076 NEW)
list(APPEND CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/cmake
)
option(EXPORT_COMPILE_COMMANDS "export the compile_commands.json" ON)
# Necessary for clangd to work properly
if(EXPORT_COMPILE_COMMANDS)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
include(AreSubmoduleClones)
################################
# Shamrock versioning
################################
set(SHAMROCK_VERSION_MAJOR 2025)
set(SHAMROCK_VERSION_MINOR 10)
set(SHAMROCK_VERSION_PATCH 0)
project(Shamrock VERSION ${SHAMROCK_VERSION_MAJOR}.${SHAMROCK_VERSION_MINOR}.${SHAMROCK_VERSION_PATCH})
include(ShamVersioning)
######################
# Platform specfics
######################
if(APPLE)
message(WARNING "forcing SHAMROCK_USE_SHARED_LIB=Off on Macos because of known issues")
set(SHAMROCK_FORCE_SHARED_LIB Off)
endif()
######################
# CXX specfics
######################
include(ShamConfigureCXX)
######################
# Compiler selection
######################
if("${SHAMROCK_ENABLE_BACKEND}" STREQUAL "SYCL")
include(ShamConfigureSYCL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SHAM_CXX_SYCL_FLAGS}")
else()
message(FATAL_ERROR
"You must select a Shamrock Backend "
"-DSHAMROCK_ENABLE_BACKEND=[SYCL]")
endif()
set(SHAMROCK_ENABLE_BACKEND "${SHAMROCK_ENABLE_BACKEND}" CACHE STRING "Shamrock backend used")
enable_language(C)
enable_language(CXX)
######################
# add libs
######################
include(ShamConfigureMPI)
include(ShamConfigurePybind11)
include(ShamConfigureNVTX)
include(ShamConfigureFmtlib)
include(ShamConfigureNlohmannJson)
include(ShamConfigurePlfNanotimer)
include(ShamConfigureMDSpan)
####################################################################################################
# Shamrock Configuration
####################################################################################################
include(ShamrockBuildOptions)
####################################################################################################
# target Configuration
####################################################################################################
message(" ---- targets section ----")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
option(SHAMROCK_PATCH_LIB_RPATH "patch the lib RPATH to include the current directory and ../lib" OFF)
if(SHAMROCK_PATCH_LIB_RPATH)
message("-- patching lib RPATH to include the current directory and ../lib")
# CMake wants to strip the RPATH from the shared libraries,
# but we need it for the install python bindings, as all .so will be in the same directory
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
# ldd search paths
# - $ORIGIN : search in same dir
# - $ORIGIN/../lib : search in ../lib (typically where shamrock is in bin and libs in ../lib)
# - $ORIGIN/../../.. : in python install locate /lib from site package
# .pyvenv/lib/python3.14/site-packages/shamrock/shamrock.cpython-314-x86_64-linux-gnu.so
# -> .pyvenv/lib
set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/../lib;$ORIGIN/../../..")
endif()
add_subdirectory(src)
####################################################################################################
# Documentation
####################################################################################################
include(ShamrockDoc)