41 lines
1.4 KiB
Bash
41 lines
1.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Setup Swift bridge files after cargo build
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# Find the most recently built output directory
|
||
|
|
OUT=$(find target/release/build -maxdepth 2 -type d -name out -path '*kreuzberg-swift-*' \
|
||
|
|
-exec stat -f '%m %N' {} + 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
|
||
|
|
if [ -z "$OUT" ]; then
|
||
|
|
echo "ERROR: Could not find swift-bridge build output in target/release/build/"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Using swift-bridge output from: $OUT"
|
||
|
|
|
||
|
|
# Fix swift-bridge visibility: make 'var ptr' and 'var isOwned' properties public for internal type conversion
|
||
|
|
fixVisibility() {
|
||
|
|
sed -e 's/^ var ptr: UnsafeMutableRawPointer$/ public var ptr: UnsafeMutableRawPointer/g' \
|
||
|
|
-e 's/^ var isOwned: Bool = true$/ public var isOwned: Bool = true/g'
|
||
|
|
}
|
||
|
|
|
||
|
|
# Ensure target directories exist
|
||
|
|
mkdir -p packages/swift/Sources/RustBridgeC
|
||
|
|
mkdir -p packages/swift/Sources/RustBridge
|
||
|
|
|
||
|
|
# Copy C headers
|
||
|
|
cat "$OUT/SwiftBridgeCore.h" "$OUT/kreuzberg-swift/kreuzberg-swift.h" \
|
||
|
|
>packages/swift/Sources/RustBridgeC/RustBridgeC.h
|
||
|
|
|
||
|
|
# Copy Swift bridge files with import statement prepended
|
||
|
|
{
|
||
|
|
printf 'import RustBridgeC\n'
|
||
|
|
cat "$OUT/SwiftBridgeCore.swift" | fixVisibility
|
||
|
|
} >packages/swift/Sources/RustBridge/SwiftBridgeCore.swift
|
||
|
|
{
|
||
|
|
printf 'import RustBridgeC\n'
|
||
|
|
cat "$OUT/kreuzberg-swift/kreuzberg-swift.swift" | fixVisibility
|
||
|
|
} >packages/swift/Sources/RustBridge/kreuzberg-swift.swift
|
||
|
|
|
||
|
|
echo "Swift-bridge files setup complete"
|