Skip to content

Commit 9c28a2a

Browse files
[#9] Ship SDK as source-only py3-none-any wheel
1 parent 3c74836 commit 9c28a2a

3 files changed

Lines changed: 22 additions & 113 deletions

File tree

CMakeLists.txt

Lines changed: 8 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -63,90 +63,6 @@ target_include_directories(bsk_sdk_headers INTERFACE
6363
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/Basilisk>
6464
)
6565

66-
# Minimal runtime subset which is a build ALL curated .c/.cpp
67-
file(GLOB BSK_RUNTIME_MIN_SOURCES
68-
CONFIGURE_DEPENDS
69-
"${BSK_RUNTIME_MIN_SRC_DIR}/*.c"
70-
"${BSK_RUNTIME_MIN_SRC_DIR}/*.cpp"
71-
)
72-
73-
add_library(bsk_runtime_min STATIC ${BSK_RUNTIME_MIN_SOURCES})
74-
add_library(bsk::runtime_min ALIAS bsk_runtime_min)
75-
76-
target_compile_features(bsk_runtime_min PUBLIC cxx_std_17)
77-
target_link_libraries(bsk_runtime_min PUBLIC bsk::sdk_headers Eigen3::Eigen)
78-
79-
set_target_properties(bsk_runtime_min PROPERTIES POSITION_INDEPENDENT_CODE ON)
80-
81-
target_include_directories(bsk_runtime_min PUBLIC
82-
$<BUILD_INTERFACE:${BSK_SDK_INCLUDE_SRC_DIR}/Basilisk>
83-
$<BUILD_INTERFACE:${BSK_SDK_COMPAT_INCLUDE_DIR}>
84-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/Basilisk>
85-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat>
86-
)
87-
88-
# Basilisk architecture utility support library
89-
file(GLOB BSK_ARCH_UTILITIES_SOURCES
90-
CONFIGURE_DEPENDS
91-
"${BSK_ARCH_UTILITIES_SRC_DIR}/*.c"
92-
"${BSK_ARCH_UTILITIES_SRC_DIR}/*.cpp"
93-
)
94-
95-
add_library(bsk_arch_utilities STATIC ${BSK_ARCH_UTILITIES_SOURCES})
96-
add_library(bsk::arch_utilities ALIAS bsk_arch_utilities)
97-
98-
target_compile_features(bsk_arch_utilities PUBLIC cxx_std_17)
99-
target_link_libraries(bsk_arch_utilities PUBLIC bsk::sdk_headers Eigen3::Eigen)
100-
if(MSVC)
101-
target_compile_definitions(bsk_arch_utilities PRIVATE _USE_MATH_DEFINES)
102-
endif()
103-
104-
set_target_properties(bsk_arch_utilities PROPERTIES POSITION_INDEPENDENT_CODE ON)
105-
106-
target_include_directories(bsk_arch_utilities PUBLIC
107-
$<BUILD_INTERFACE:${BSK_SDK_INCLUDE_SRC_DIR}/Basilisk>
108-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/Basilisk>
109-
)
110-
111-
target_include_directories(bsk_arch_utilities PRIVATE
112-
${BSK_SDK_INCLUDE_SRC_DIR}/Basilisk/architecture/utilities
113-
)
114-
115-
# Minimal Basilisk "arch" subset
116-
file(GLOB BSK_ARCH_MIN_SOURCES
117-
CONFIGURE_DEPENDS
118-
"${BSK_ARCH_MIN_SRC_DIR}/*.c"
119-
"${BSK_ARCH_MIN_SRC_DIR}/*.cpp"
120-
)
121-
122-
add_library(bsk_arch_min STATIC ${BSK_ARCH_MIN_SOURCES})
123-
add_library(bsk::arch_min ALIAS bsk_arch_min)
124-
125-
target_compile_features(bsk_arch_min PUBLIC cxx_std_17)
126-
target_link_libraries(bsk_arch_min PUBLIC bsk::sdk_headers bsk::arch_utilities)
127-
128-
set_target_properties(bsk_arch_min PROPERTIES POSITION_INDEPENDENT_CODE ON)
129-
130-
target_include_directories(bsk_arch_min PUBLIC
131-
$<BUILD_INTERFACE:${BSK_SDK_INCLUDE_SRC_DIR}/Basilisk>
132-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/Basilisk>
133-
)
134-
135-
target_include_directories(bsk_arch_min PRIVATE
136-
${BSK_SDK_INCLUDE_SRC_DIR}/Basilisk/architecture/utilities
137-
${BSK_SDK_INCLUDE_SRC_DIR}/Basilisk/architecture/utilities/moduleIdGenerator
138-
)
139-
140-
141-
add_library(bsk_plugin INTERFACE)
142-
add_library(bsk::bsk_plugin ALIAS bsk_plugin)
143-
144-
target_link_libraries(bsk_plugin INTERFACE
145-
bsk::sdk_headers
146-
bsk::arch_min
147-
bsk::arch_utilities
148-
bsk::runtime_min
149-
)
15066

15167
install(
15268
DIRECTORY "${BSK_SDK_INCLUDE_SRC_DIR}/"
@@ -158,6 +74,14 @@ install(
15874
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/compat"
15975
)
16076

77+
install(
78+
DIRECTORY "${BSK_ARCH_MIN_SRC_DIR}/"
79+
DESTINATION "arch_min"
80+
FILES_MATCHING
81+
PATTERN "*.c"
82+
PATTERN "*.cpp"
83+
)
84+
16185
install(
16286
DIRECTORY "${BSK_ARCH_UTILITIES_SRC_DIR}/"
16387
DESTINATION "arch_utilities"
@@ -187,18 +111,6 @@ install(
187111
PATTERN "__pycache__" EXCLUDE
188112
)
189113

190-
install(
191-
TARGETS bsk_arch_min bsk_arch_utilities bsk_runtime_min bsk_sdk_headers bsk_plugin
192-
EXPORT bsk-sdkTargets
193-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
194-
)
195-
196-
install(
197-
EXPORT bsk-sdkTargets
198-
NAMESPACE bsk::
199-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bsk-sdk"
200-
)
201-
202114
install(
203115
FILES
204116
"${CMAKE_CURRENT_SOURCE_DIR}/src/bsk_sdk/__init__.py"

cmake/bsk-sdkConfig.cmake.in

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ get_filename_component(_bsk_sdk_pkg_dir "${_bsk_sdk_lib_dir}" PATH) # <p
88
set(BSK_SDK_PKG_DIR "${_bsk_sdk_pkg_dir}" CACHE PATH "bsk-sdk package root")
99
set(BSK_SDK_INCLUDE_DIR "${BSK_SDK_PKG_DIR}/include" CACHE PATH "bsk-sdk include root")
1010
set(BSK_SDK_COMPAT_INCLUDE_DIR "${BSK_SDK_INCLUDE_DIR}/compat" CACHE PATH "bsk-sdk compat include dir")
11-
set(BSK_SDK_ARCH_UTILITIES_DIR "${BSK_SDK_PKG_DIR}/arch_utilities" CACHE PATH "bsk-sdk arch_utilities dir (if shipped)")
12-
set(BSK_SDK_RUNTIME_MIN_DIR "${BSK_SDK_PKG_DIR}/runtime_min" CACHE PATH "bsk-sdk runtime_min dir (if shipped)")
11+
set(BSK_SDK_ARCH_MIN_DIR "${BSK_SDK_PKG_DIR}/arch_min" CACHE PATH "bsk-sdk arch_min sources dir")
12+
set(BSK_SDK_ARCH_UTILITIES_DIR "${BSK_SDK_PKG_DIR}/arch_utilities" CACHE PATH "bsk-sdk arch_utilities sources dir")
13+
set(BSK_SDK_RUNTIME_MIN_DIR "${BSK_SDK_PKG_DIR}/runtime_min" CACHE PATH "bsk-sdk runtime_min sources dir")
1314
set(BSK_SDK_SWIG_DIR "${BSK_SDK_PKG_DIR}/swig" CACHE PATH "bsk-sdk swig dir")
1415
set(BSK_SDK_TOOLS_DIR "${BSK_SDK_PKG_DIR}/tools" CACHE PATH "bsk-sdk tools dir")
1516

@@ -21,19 +22,15 @@ if(NOT TARGET Eigen3::Eigen)
2122
)
2223
endif()
2324

24-
include("${_bsk_sdk_config_dir}/bsk-sdkTargets.cmake")
25-
26-
function(_bsk_sdk_make_alias_if_needed alias_name real_name)
27-
if(TARGET "${real_name}" AND NOT TARGET "${alias_name}")
28-
add_library("${alias_name}" ALIAS "${real_name}")
29-
endif()
30-
endfunction()
31-
32-
_bsk_sdk_make_alias_if_needed(bsk::sdk_headers bsk::bsk_sdk_headers)
33-
_bsk_sdk_make_alias_if_needed(bsk::arch_min bsk::bsk_arch_min)
34-
_bsk_sdk_make_alias_if_needed(bsk::arch_utilities bsk::bsk_arch_utilities)
35-
_bsk_sdk_make_alias_if_needed(bsk::runtime_min bsk::bsk_runtime_min)
36-
_bsk_sdk_make_alias_if_needed(bsk::plugin bsk::bsk_plugin)
25+
# Header-only SDK target — SDK sources are compiled directly into each plugin.
26+
if(NOT TARGET bsk::sdk_headers)
27+
add_library(bsk::sdk_headers IMPORTED INTERFACE GLOBAL)
28+
set_target_properties(bsk::sdk_headers PROPERTIES
29+
INTERFACE_INCLUDE_DIRECTORIES
30+
"${BSK_SDK_INCLUDE_DIR};${BSK_SDK_COMPAT_INCLUDE_DIR};${BSK_SDK_INCLUDE_DIR}/Basilisk"
31+
INTERFACE_COMPILE_FEATURES "cxx_std_17"
32+
)
33+
endif()
3734

3835
# Read the BSK version this SDK was synced from.
3936
file(STRINGS "${_bsk_sdk_pkg_dir}/_bsk_version.txt" BSK_SDK_BSK_VERSION LIMIT_COUNT 1)

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ bsk-sdk = "bsk_sdk"
2626

2727
[tool.scikit-build]
2828
wheel.packages = ["bsk_sdk"]
29-
# SDK content is source/header-only, so this wheel is pure Python and
30-
# should not carry ABI/platform tags.
29+
# SDK sources and headers are compiled into each plugin at plugin build time,
30+
# so this wheel carries no native artifacts and is genuinely platform-neutral.
3131
wheel.py-api = "py3"
3232
wheel.platlib = false
3333
wheel.install-dir = "bsk_sdk"

0 commit comments

Comments
 (0)