-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathCMakeLists.txt
77 lines (68 loc) · 3.53 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
################################################################################
## ##
## This file is part of NCrystal (see https://mctools.github.io/ncrystal/) ##
## ##
## Copyright 2015-2025 NCrystal developers ##
## ##
## Licensed under the Apache License, Version 2.0 (the "License"); ##
## you may not use this file except in compliance with the License. ##
## You may obtain a copy of the License at ##
## ##
## http://www.apache.org/licenses/LICENSE-2.0 ##
## ##
## Unless required by applicable law or agreed to in writing, software ##
## distributed under the License is distributed on an "AS IS" BASIS, ##
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ##
## See the License for the specific language governing permissions and ##
## limitations under the License. ##
## ##
################################################################################
cmake_minimum_required(VERSION 3.16...3.27)
project( NCrystalRoot LANGUAGES C CXX )
set( NCRYSTAL_SKBUILD_MONOLITHIC "OFF" )
if ( DEFINED SKBUILD_PROJECT_NAME )
message( STATUS
"scikit-build mode detected. Will produce monolithic"
" package including ncrystal-python contents." )
set( NCRYSTAL_SKBUILD_MONOLITHIC "ON" )
endif()
add_subdirectory("${PROJECT_SOURCE_DIR}/ncrystal_core")
if ( NCRYSTAL_ENABLE_TESTING )
enable_testing()
add_subdirectory("${PROJECT_SOURCE_DIR}/tests")
endif()
if ( NCRYSTAL_SKBUILD_MONOLITHIC )
set ( ncrystal_skbld_autogendir "${PROJECT_SOURCE_DIR}/skbld_autogen" )
#Cleanup skbld_autogendir unless we are building FROM an sdist (or creating
#one):
if ( EXISTS "${ncrystal_skbld_autogendir}/is_sdist.txt"
AND NOT "${SKBUILD_STATE}" STREQUAL "sdist" )
message(STATUS "Running from sdist - will not clean autogenerated files")
else()
if ( IS_DIRECTORY "${ncrystal_skbld_autogendir}" )
message( STATUS "Cleaning out ${ncrystal_skbld_autogendir}" )
file( REMOVE_RECURSE "${ncrystal_skbld_autogendir}" )
endif()
file( MAKE_DIRECTORY "${ncrystal_skbld_autogendir}" )
if ( "${SKBUILD_STATE}" STREQUAL "sdist" )
file(TOUCH "${ncrystal_skbld_autogendir}/is_sdist.txt")
endif()
endif()
# Monolithic install, include Python modules, but change the name of the
# _is_std.py file to _is_monolithic.py, so the code knows how it is being used
# in this manner later (note we use separate files and not just variables
# inside files for this, because that allows us to detect broken installations
# where ncrystal-monolithic and ncrystal-python packages both clobber the same
# directories.
if ( NOT EXISTS "${ncrystal_skbld_autogendir}/NCrystal/_is_monolithic.py" )
file(
COPY "${PROJECT_SOURCE_DIR}/ncrystal_python/src/NCrystal"
DESTINATION "${ncrystal_skbld_autogendir}"
)
file(
RENAME
"${ncrystal_skbld_autogendir}/NCrystal/_is_std.py"
"${ncrystal_skbld_autogendir}/NCrystal/_is_monolithic.py"
)
endif()
endif()