-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
145 lines (123 loc) · 4.06 KB
/
CMakeLists.txt
File metadata and controls
145 lines (123 loc) · 4.06 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
cmake_minimum_required(VERSION 3.26)
# Compile both C and C++ sources
project(bsk_sdk LANGUAGES C CXX)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
# Python wheel layout
set(BSK_SDK_INCLUDE_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/include")
set(BSK_ARCH_MIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/arch_min")
set(BSK_ARCH_UTILITIES_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/arch_utilities")
set(BSK_RUNTIME_MIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/runtime_min")
set(BSK_SDK_COMPAT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/include_compat")
set(BSK_SDK_SWIG_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/swig")
set(BSK_SDK_TOOLS_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tools")
find_package(Eigen3 CONFIG QUIET)
if(NOT Eigen3_FOUND)
include(FetchContent)
FetchContent_Declare(
Eigen3
URL https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
URL_HASH SHA256=8586084f71f9bde545ee7fa6d00288b264a2b7ac3607b974e54d13e7162c1c72
DOWNLOAD_EXTRACT_TIMESTAMP ON
)
set(EIGEN_BUILD_DOC OFF CACHE BOOL "" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(EIGEN_BUILD_PKGCONFIG OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(Eigen3)
message(STATUS "bsk-sdk: Eigen3 not found locally — downloaded via FetchContent")
endif()
# Bundle Eigen3 headers into the wheel so downstream consumers are self-contained.
if(DEFINED eigen3_SOURCE_DIR)
set(_bsk_eigen3_src "${eigen3_SOURCE_DIR}")
else()
get_target_property(_bsk_eigen3_incdirs Eigen3::Eigen INTERFACE_INCLUDE_DIRECTORIES)
list(GET _bsk_eigen3_incdirs 0 _bsk_eigen3_src)
endif()
install(
DIRECTORY "${_bsk_eigen3_src}/Eigen"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/eigen3"
)
install(
DIRECTORY "${_bsk_eigen3_src}/unsupported"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/eigen3"
OPTIONAL
)
# Header-only SDK target
add_library(bsk_sdk_headers INTERFACE)
add_library(bsk::sdk_headers ALIAS bsk_sdk_headers)
target_compile_features(bsk_sdk_headers INTERFACE cxx_std_17)
target_include_directories(bsk_sdk_headers INTERFACE
$<BUILD_INTERFACE:${BSK_SDK_INCLUDE_SRC_DIR}>
$<BUILD_INTERFACE:${BSK_SDK_COMPAT_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/Basilisk>
)
install(
DIRECTORY "${BSK_SDK_INCLUDE_SRC_DIR}/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
install(
DIRECTORY "${BSK_SDK_COMPAT_INCLUDE_DIR}/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/compat"
)
install(
DIRECTORY "${BSK_ARCH_MIN_SRC_DIR}/"
DESTINATION "arch_min"
FILES_MATCHING
PATTERN "*.c"
PATTERN "*.cpp"
)
install(
DIRECTORY "${BSK_ARCH_UTILITIES_SRC_DIR}/"
DESTINATION "arch_utilities"
FILES_MATCHING
PATTERN "*.c"
PATTERN "*.cpp"
)
install(
DIRECTORY "${BSK_RUNTIME_MIN_SRC_DIR}/"
DESTINATION "runtime_min"
FILES_MATCHING
PATTERN "*.c"
PATTERN "*.cpp"
PATTERN "*.h"
)
install(
DIRECTORY "${BSK_SDK_SWIG_SRC_DIR}/"
DESTINATION "swig"
COMPONENT python
)
install(
DIRECTORY "${BSK_SDK_TOOLS_SRC_DIR}/"
DESTINATION "tools"
PATTERN "__pycache__" EXCLUDE
)
install(
FILES
"${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/__init__.py"
"${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/_bsk_version.txt"
DESTINATION "."
)
configure_package_config_file(
cmake/bsk-sdkConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/bsk-sdkConfig.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bsk-sdk"
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/bsk-sdkConfigVersion.cmake"
VERSION ${SKBUILD_PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/bsk-sdkConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/bsk-sdkConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bsk-sdk"
)
install(
FILES
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/bsk_add_swig_module.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/bsk_generate_messages.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bsk-sdk"
)