Skip to content

Commit af4ec30

Browse files
committed
apple-xcframework: move headers into a Clibsodium subdirectory
The generated Clibsodium.xcframework will have headers at Headers/Clibsodium/ instead of Headers/ This prevents the module.modulemap collision when used alongside other xcframeworks.
1 parent 3e4de8a commit af4ec30

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

dist-build/apple-xcframework.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,21 @@ swift_module_map() {
7171
echo '}'
7272
}
7373

74+
# Move headers into a Clibsodium subdirectory to avoid module.modulemap collisions
75+
# when multiple xcframeworks are used together (see swift-sodium issue #276)
76+
reorganize_headers() {
77+
local include_dir="$1"
78+
if [ -d "$include_dir" ] && [ ! -d "$include_dir/Clibsodium" ]; then
79+
mkdir -p "$include_dir/Clibsodium"
80+
# Move all files and directories (except Clibsodium itself) into Clibsodium/
81+
for item in "$include_dir"/*; do
82+
if [ "$(basename "$item")" != "Clibsodium" ]; then
83+
mv "$item" "$include_dir/Clibsodium/"
84+
fi
85+
done
86+
fi
87+
}
88+
7489
build_macos() {
7590
export BASEDIR="${XCODEDIR}/Platforms/MacOSX.platform/Developer"
7691
export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
@@ -420,6 +435,7 @@ echo "Bundling macOS targets..."
420435

421436
mkdir -p "${PREFIX}/macos/lib"
422437
cp -a "${MACOS_X86_64_PREFIX}/include" "${PREFIX}/macos/"
438+
reorganize_headers "${PREFIX}/macos/include"
423439
for ext in a dylib; do
424440
lipo -create \
425441
"${MACOS_ARM64_PREFIX}/lib/libsodium.${ext}" \
@@ -432,6 +448,7 @@ echo "Bundling iOS targets..."
432448

433449
mkdir -p "${PREFIX}/ios/lib"
434450
cp -a "${IOS64_PREFIX}/include" "${PREFIX}/ios/"
451+
reorganize_headers "${PREFIX}/ios/include"
435452
for ext in a dylib; do
436453
LIBRARY_PATHS="$IOS64_PREFIX/lib/libsodium.${ext}"
437454
LIBRARY_PATHS="$LIBRARY_PATHS $IOS64E_PREFIX/lib/libsodium.${ext}"
@@ -444,6 +461,7 @@ echo "Bundling watchOS targets..."
444461

445462
mkdir -p "${PREFIX}/watchos/lib"
446463
cp -a "${WATCHOS64_32_PREFIX}/include" "${PREFIX}/watchos/"
464+
reorganize_headers "${PREFIX}/watchos/include"
447465
for ext in a dylib; do
448466
lipo -create \
449467
"${WATCHOS32_PREFIX}/lib/libsodium.${ext}" \
@@ -457,6 +475,7 @@ echo "Bundling tvOS targets..."
457475

458476
mkdir -p "${PREFIX}/tvos/lib"
459477
cp -a "${TVOS_PREFIX}/include" "${PREFIX}/tvos/"
478+
reorganize_headers "${PREFIX}/tvos/include"
460479
for ext in a dylib; do
461480
lipo -create \
462481
"$TVOS_PREFIX/lib/libsodium.${ext}" \
@@ -469,6 +488,7 @@ if [ "$VISIONOS_SUPPORTED" = true ]; then
469488

470489
mkdir -p "${PREFIX}/visionos/lib"
471490
cp -a "${VISIONOS_PREFIX}/include" "${PREFIX}/visionos/"
491+
reorganize_headers "${PREFIX}/visionos/include"
472492
for ext in a dylib; do
473493
lipo -create \
474494
"$VISIONOS_PREFIX/lib/libsodium.${ext}" \
@@ -481,6 +501,7 @@ echo "Bundling Catalyst targets..."
481501

482502
mkdir -p "${PREFIX}/catalyst/lib"
483503
cp -a "${CATALYST_X86_64_PREFIX}/include" "${PREFIX}/catalyst/"
504+
reorganize_headers "${PREFIX}/catalyst/include"
484505
for ext in a dylib; do
485506
if [ ! -f "${CATALYST_X86_64_PREFIX}/lib/libsodium.${ext}" ]; then
486507
continue
@@ -497,6 +518,7 @@ if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
497518

498519
mkdir -p "${PREFIX}/ios-simulators/lib"
499520
cp -a "${IOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/ios-simulators/"
521+
reorganize_headers "${PREFIX}/ios-simulators/include"
500522
for ext in a dylib; do
501523
LIBRARY_PATHS="${IOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}"
502524
LIBRARY_PATHS="$LIBRARY_PATHS ${IOS_SIMULATOR_ARM64E_PREFIX}/lib/libsodium.${ext}"
@@ -510,6 +532,7 @@ if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
510532

511533
mkdir -p "${PREFIX}/watchos-simulators/lib"
512534
cp -a "${WATCHOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/watchos-simulators/"
535+
reorganize_headers "${PREFIX}/watchos-simulators/include"
513536
for ext in a dylib; do
514537
lipo -create \
515538
"${WATCHOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \
@@ -523,6 +546,7 @@ if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
523546

524547
mkdir -p "${PREFIX}/tvos-simulators/lib"
525548
cp -a "${TVOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/tvos-simulators/"
549+
reorganize_headers "${PREFIX}/tvos-simulators/include"
526550
for ext in a dylib; do
527551
lipo -create \
528552
"${TVOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \
@@ -536,6 +560,7 @@ if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
536560

537561
mkdir -p "${PREFIX}/visionos-simulators/lib"
538562
cp -a "${VISIONOS_SIMULATOR_PREFIX}/include" "${PREFIX}/visionos-simulators/"
563+
reorganize_headers "${PREFIX}/visionos-simulators/include"
539564
for ext in a dylib; do
540565
lipo -create \
541566
"${VISIONOS_SIMULATOR_PREFIX}/lib/libsodium.${ext}" \

0 commit comments

Comments
 (0)