Skip to content

Commit 2c3484c

Browse files
committed
update xcframework script
1 parent db13e63 commit 2c3484c

File tree

4 files changed

+94
-8
lines changed

4 files changed

+94
-8
lines changed

Makefile.ios

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,57 @@
11
IOS_OUTPUT?=ios
22
IOS_BINDING_OUTPUT?=$(BINDING_OUTPUT)/$(IOS_OUTPUT)
33
IOS_BINDING_NAME?=$(BINDING_NAME).a
4+
IOS_FRAMEWORK_NAME?=RSABridge
45

56
binding_ios: binding_ios_arm64 binding_ios_x86_64_sim
67
lipo $(IOS_BINDING_OUTPUT)/x86_64_sim/$(IOS_BINDING_NAME) $(IOS_BINDING_OUTPUT)/arm64/$(IOS_BINDING_NAME) -create -output $(IOS_BINDING_OUTPUT)/$(IOS_BINDING_NAME)
78
cp $(IOS_BINDING_OUTPUT)/arm64/*.h $(IOS_BINDING_OUTPUT)
89
rm -rf $(IOS_BINDING_OUTPUT)/arm64 $(IOS_BINDING_OUTPUT)/x86_64_sim
910

1011
binding_ios_xcframework: binding_ios_all_iphone binding_ios_all_sim binding_ios_all_catalyst
11-
mkdir -p $(IOS_BINDING_OUTPUT)/headers
12-
cp $(IOS_BINDING_OUTPUT)/arm64/*.h $(IOS_BINDING_OUTPUT)/headers
13-
rm -rf $(IOS_BINDING_OUTPUT)/Rsa.xcframework
12+
rm -rf $(IOS_BINDING_OUTPUT)/$(IOS_FRAMEWORK_NAME).xcframework
13+
14+
rm -rf $(IOS_BINDING_OUTPUT)/arm64_framework
15+
mkdir -p $(IOS_BINDING_OUTPUT)/arm64_framework/$(IOS_FRAMEWORK_NAME).framework/Headers
16+
cp -r ios/framework-template/ $(IOS_BINDING_OUTPUT)/arm64_framework/$(IOS_FRAMEWORK_NAME).framework
17+
cp $(IOS_BINDING_OUTPUT)/arm64/$(IOS_BINDING_NAME) $(IOS_BINDING_OUTPUT)/arm64_framework/$(IOS_FRAMEWORK_NAME).framework/$(IOS_FRAMEWORK_NAME)
18+
cp $(IOS_BINDING_OUTPUT)/arm64/*.h $(IOS_BINDING_OUTPUT)/arm64_framework/$(IOS_FRAMEWORK_NAME).framework/Headers
19+
20+
rm -rf $(IOS_BINDING_OUTPUT)/sim_framework
21+
mkdir -p $(IOS_BINDING_OUTPUT)/sim_framework/$(IOS_FRAMEWORK_NAME).framework/Headers
22+
cp -r ios/framework-template/ $(IOS_BINDING_OUTPUT)/sim_framework/$(IOS_FRAMEWORK_NAME).framework
23+
cp $(IOS_BINDING_OUTPUT)/sim/$(IOS_BINDING_NAME) $(IOS_BINDING_OUTPUT)/sim_framework/$(IOS_FRAMEWORK_NAME).framework/$(IOS_FRAMEWORK_NAME)
24+
cp $(IOS_BINDING_OUTPUT)/sim/*.h $(IOS_BINDING_OUTPUT)/sim_framework/$(IOS_FRAMEWORK_NAME).framework/Headers
25+
26+
rm -rf $(IOS_BINDING_OUTPUT)/catalyst_framework
27+
mkdir -p $(IOS_BINDING_OUTPUT)/catalyst_framework/$(IOS_FRAMEWORK_NAME).framework/Headers
28+
cp -r ios/framework-template/ $(IOS_BINDING_OUTPUT)/catalyst_framework/$(IOS_FRAMEWORK_NAME).framework
29+
cp $(IOS_BINDING_OUTPUT)/catalyst/$(IOS_BINDING_NAME) $(IOS_BINDING_OUTPUT)/catalyst_framework/$(IOS_FRAMEWORK_NAME).framework/$(IOS_FRAMEWORK_NAME)
30+
cp $(IOS_BINDING_OUTPUT)/catalyst/*.h $(IOS_BINDING_OUTPUT)/catalyst_framework/$(IOS_FRAMEWORK_NAME).framework/Headers
31+
32+
NAME=$(IOS_FRAMEWORK_NAME) HEADER_NAME=$(BINDING_NAME) ./ios/prepare-xcframework.sh $(IOS_BINDING_OUTPUT)
33+
1434
xcodebuild -create-xcframework \
15-
-library $(IOS_BINDING_OUTPUT)/arm64/$(IOS_BINDING_NAME) -headers $(IOS_BINDING_OUTPUT)/headers \
16-
-library $(IOS_BINDING_OUTPUT)/sim/$(IOS_BINDING_NAME) -headers $(IOS_BINDING_OUTPUT)/headers \
17-
-library $(IOS_BINDING_OUTPUT)/catalyst/$(IOS_BINDING_NAME) -headers $(IOS_BINDING_OUTPUT)/headers \
18-
-output $(IOS_BINDING_OUTPUT)/Rsa.xcframework
19-
rm -rf $(IOS_BINDING_OUTPUT)/arm64 $(IOS_BINDING_OUTPUT)/sim $(IOS_BINDING_OUTPUT)/catalyst $(IOS_BINDING_OUTPUT)/headers
35+
-framework $(IOS_BINDING_OUTPUT)/arm64_framework/$(IOS_FRAMEWORK_NAME).framework \
36+
-framework $(IOS_BINDING_OUTPUT)/sim_framework/$(IOS_FRAMEWORK_NAME).framework \
37+
-framework $(IOS_BINDING_OUTPUT)/catalyst_framework/$(IOS_FRAMEWORK_NAME).framework \
38+
-output $(IOS_BINDING_OUTPUT)/$(IOS_FRAMEWORK_NAME).xcframework
39+
40+
rm -rf $(IOS_BINDING_OUTPUT)/arm64 $(IOS_BINDING_OUTPUT)/sim $(IOS_BINDING_OUTPUT)/catalyst
41+
rm -rf $(IOS_BINDING_OUTPUT)/arm64_framework $(IOS_BINDING_OUTPUT)/sim_framework $(IOS_BINDING_OUTPUT)/catalyst_framework $(IOS_BINDING_OUTPUT)/framework_headers
2042

2143
binding_ios_all_iphone: binding_ios_arm64
2244

2345
binding_ios_all_sim: binding_ios_x86_64_sim binding_ios_arm64_sim
2446
mkdir -p $(IOS_BINDING_OUTPUT)/sim
2547
lipo $(IOS_BINDING_OUTPUT)/x86_64_sim/$(IOS_BINDING_NAME) $(IOS_BINDING_OUTPUT)/arm64_sim/$(IOS_BINDING_NAME) -create -output $(IOS_BINDING_OUTPUT)/sim/$(IOS_BINDING_NAME)
48+
cp $(IOS_BINDING_OUTPUT)/arm64_sim/*.h $(IOS_BINDING_OUTPUT)/sim
2649
rm -rf $(IOS_BINDING_OUTPUT)/x86_64_sim $(IOS_BINDING_OUTPUT)/arm64_sim
2750

2851
binding_ios_all_catalyst: binding_ios_x86_64_catalyst binding_ios_arm64_catalyst
2952
mkdir -p $(IOS_BINDING_OUTPUT)/catalyst
3053
lipo $(IOS_BINDING_OUTPUT)/x86_64_catalyst/$(IOS_BINDING_NAME) $(IOS_BINDING_OUTPUT)/arm64_catalyst/$(IOS_BINDING_NAME) -create -output $(IOS_BINDING_OUTPUT)/catalyst/$(IOS_BINDING_NAME)
54+
cp $(IOS_BINDING_OUTPUT)/arm64_catalyst/*.h $(IOS_BINDING_OUTPUT)/catalyst
3155
rm -rf $(IOS_BINDING_OUTPUT)/x86_64_catalyst $(IOS_BINDING_OUTPUT)/arm64_catalyst
3256

3357
binding_ios_x86_64_catalyst:

ios/framework-template/Info.plist

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CFBundleExecutable</key>
6+
<string>_NAME_</string>
7+
<key>CFBundleIdentifier</key>
8+
<string>_NAME_</string>
9+
<key>MinimumOSVersion</key>
10+
<string>100.0</string>
11+
<key>CFBundleShortVersionString</key>
12+
<string>_VERSION_</string>
13+
<key>CFBundleVersion</key>
14+
<string>_BUILD_NUMBER_</string>
15+
<key>CFBundlePackageType</key>
16+
<string>FMWK</string>
17+
</dict>
18+
</plist>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
framework module "_NAME_" {
2+
header "_HEADER_NAME_.h"
3+
export *
4+
}

ios/prepare-xcframework.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/bash
2+
3+
# Determine version and require NAME as an env variable
4+
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "0.0.$(git rev-parse --short HEAD)")
5+
SED_INPLACE_FLAG=("-i")
6+
7+
# Adjust sed for macOS
8+
if [[ "$OSTYPE" == "darwin"* ]]; then
9+
SED_INPLACE_FLAG=("-i" "")
10+
fi
11+
12+
13+
14+
VERSION=${VERSION#v}
15+
VERSION=$(echo "$VERSION" | sed 's/-.*//')
16+
17+
BUILD_NUMBER=${BUILD_NUMBER:-"${VERSION}.$(date +%s)"}
18+
19+
20+
echo "Using version: $VERSION"
21+
echo "Using build number: $BUILD_NUMBER"
22+
23+
echo "Using name: ${NAME:-<not set>}"
24+
echo "Using header name: ${HEADER_NAME:-<not set>}"
25+
26+
find $1 -type f -name "*.plist" -exec sed "${SED_INPLACE_FLAG[@]}" "s/_VERSION_/${VERSION}/g" {} +
27+
find $1 -type f -name "*.plist" -exec sed "${SED_INPLACE_FLAG[@]}" "s/_BUILD_NUMBER_/${BUILD_NUMBER}/g" {} +
28+
29+
if [[ -n "$HEADER_NAME" ]]; then
30+
find $1 \( -name "*.modulemap" \) \
31+
-exec sed "${SED_INPLACE_FLAG[@]}" "s/_HEADER_NAME_/${HEADER_NAME}/g" {} +
32+
echo "Replaced _HEADER_NAME_ with $HEADER_NAME"
33+
fi
34+
35+
if [[ -n "$NAME" ]]; then
36+
find $1 \( -name "*.plist" -o -name "*.modulemap" \) \
37+
-exec sed "${SED_INPLACE_FLAG[@]}" "s/_NAME_/${NAME}/g" {} +
38+
echo "Replaced _NAME_ with $NAME"
39+
fi
40+

0 commit comments

Comments
 (0)