Skip to content

Commit 822405a

Browse files
author
Andras Fekete
committed
Massively simplify apple-universal script
1 parent abab390 commit 822405a

1 file changed

Lines changed: 32 additions & 255 deletions

File tree

IDE/apple-universal/build-wolfssl-framework.sh

Lines changed: 32 additions & 255 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,16 @@
2020
# along with this program; if not, write to the Free Software
2121
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
2222

23-
2423
set -euo pipefail
2524

2625
WOLFSSL_DIR=$(pwd)/../../
2726
OUTDIR=$(pwd)/artifacts
2827
LIPODIR=${OUTDIR}/lib
2928
SDK_OUTPUT_DIR=${OUTDIR}/xcframework
3029

31-
3230
CFLAGS_COMMON=""
33-
# Optional configure flags passed in by user through -c argument
34-
CONF_OPTS_EXTRA=""
3531
# Base configure flags
36-
CONF_OPTS_COMMON="--disable-shared --enable-static"
32+
CONF_OPTS="--disable-shared --enable-static"
3733

3834
helpFunction()
3935
{
@@ -47,287 +43,68 @@ helpFunction()
4743
while getopts ":c:" opt; do
4844
case $opt in
4945
c)
50-
CONF_OPTS_EXTRA="$OPTARG"
46+
CONF_OPTS+=" $OPTARG"
5147
;;
5248
\?)
5349
echo "Invalid option: -$OPTARG" >&2; helpFunction
5450
;;
5551
esac
5652
done
5753

58-
# Amalgamate extra CLI options with base options
59-
CONF_OPTS="${CONF_OPTS_COMMON} ${CONF_OPTS_EXTRA}"
60-
6154
rm -rf $OUTDIR
6255
mkdir -p $LIPODIR
6356
mkdir -p $SDK_OUTPUT_DIR
6457

65-
66-
buildIOSSim()
67-
{
68-
set -x
69-
pushd .
70-
cd $WOLFSSL_DIR
71-
72-
ARCH=$1
73-
HOST="${ARCH}-apple-darwin"
74-
SDK_ROOT=$(xcrun --sdk iphonesimulator --show-sdk-path)
75-
76-
./configure -prefix=${OUTDIR}/wolfssl-ios-simulator-${ARCH} ${CONF_OPTS} --host=${HOST} \
77-
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
78-
make -j
79-
make install
80-
81-
popd
82-
set +x
83-
}
84-
85-
buildIOS()
86-
{
58+
build() { # <ARCH=arm64|x86_64> <TYPE=iphonesimulator|iphoneos|macosx|watchos|watchsimulator|appletvos|appletvsimulator>
8759
set -x
8860
pushd .
8961
cd $WOLFSSL_DIR
9062

91-
ARCH=$1
63+
ARCH=$1
9264
HOST="${ARCH}-apple-darwin"
93-
SDK_ROOT=$(xcrun --sdk iphoneos --show-sdk-path)
65+
TYPE=$2
66+
SDK_ROOT=$(xcrun --sdk ${TYPE} --show-sdk-path)
9467

95-
./configure -prefix=${OUTDIR}/wolfssl-ios-${ARCH} ${CONF_OPTS} --host=${HOST} \
68+
./configure -prefix=${OUTDIR}/wolfssl-${TYPE}-${ARCH} ${CONF_OPTS} --host=${HOST} \
9669
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
97-
make -j
70+
make -j src/libwolfssl.la
9871
make install
9972

10073
popd
10174
set +x
10275
}
10376

104-
buildMacOS()
105-
{
106-
set -x
107-
pushd .
108-
cd $WOLFSSL_DIR
77+
XCFRAMEWORKS=
78+
for type in iphonesimulator macosx appletvsimulator watchsimulator ; do
79+
build arm64 ${type}
80+
build x86_64 ${type}
10981

110-
ARCH=$1
111-
HOST="${ARCH}-apple-darwin"
112-
SDK_ROOT=$(xcrun --sdk macosx --show-sdk-path)
82+
# Create universal binaries from architecture-specific static libraries
83+
lipo \
84+
"$OUTDIR/wolfssl-${type}-x86_64/lib/libwolfssl.a" \
85+
"$OUTDIR/wolfssl-${type}-arm64/lib/libwolfssl.a" \
86+
-create -output $LIPODIR/libwolfssl-${type}.a
11387

114-
./configure -prefix=${OUTDIR}/wolfssl-macos-${ARCH} ${CONF_OPTS} --host=${HOST} \
115-
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
116-
make -j
117-
make install
118-
119-
popd
120-
set +x
121-
}
122-
123-
buildWatchOS()
124-
{
125-
set -x
126-
pushd .
127-
cd $WOLFSSL_DIR
128-
129-
ARCH=$1
130-
HOST="${ARCH}-apple-darwin"
131-
SDK_ROOT=$(xcrun --sdk watchos --show-sdk-path)
132-
133-
./configure -prefix=${OUTDIR}/wolfssl-watchos-${ARCH} ${CONF_OPTS} --host=${HOST} \
134-
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
135-
make -j
136-
make install
137-
138-
popd
139-
set +x
140-
}
141-
142-
buildWatchOSSim()
143-
{
144-
set -x
145-
pushd .
146-
cd $WOLFSSL_DIR
147-
148-
ARCH=$1
149-
HOST="${ARCH}-apple-darwin"
150-
SDK_ROOT=$(xcrun --sdk watchsimulator --show-sdk-path)
151-
152-
./configure -prefix=${OUTDIR}/wolfssl-watchos-simulator-${ARCH} ${CONF_OPTS} --host=${HOST} \
153-
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
154-
make -j
155-
make install
156-
157-
popd
158-
set +x
159-
}
160-
161-
buildTVOS()
162-
{
163-
set -x
164-
pushd .
165-
cd $WOLFSSL_DIR
166-
167-
ARCH=arm64
168-
HOST="${ARCH}-apple-darwin"
169-
SDK_ROOT=$(xcrun --sdk appletvos --show-sdk-path)
170-
171-
./configure -prefix=${OUTDIR}/wolfssl-tvos-${ARCH} ${CONF_OPTS} --host=${HOST} \
172-
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
173-
make -j
174-
make install
175-
176-
popd
177-
set +x
178-
}
179-
180-
buildTVOSSim()
181-
{
182-
set -x
183-
pushd .
184-
cd $WOLFSSL_DIR
185-
186-
ARCH=$1
187-
HOST="${ARCH}-apple-darwin"
188-
SDK_ROOT=$(xcrun --sdk appletvsimulator --show-sdk-path)
189-
190-
./configure -prefix=${OUTDIR}/wolfssl-tvos-simulator-${ARCH} ${CONF_OPTS} --host=${HOST} \
191-
CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}"
192-
make -j
193-
make install
194-
195-
popd
196-
set +x
197-
}
198-
199-
buildCatalyst()
200-
{
201-
echo "TBD"
202-
}
203-
204-
############################################################################################################################################
205-
# IOS Simulator ############################################################################################################################
206-
############################################################################################################################################
207-
buildIOSSim arm64
208-
buildIOSSim x86_64
209-
210-
# Create universal binaries from architecture-specific static libraries
211-
lipo \
212-
"$OUTDIR/wolfssl-ios-simulator-x86_64/lib/libwolfssl.a" \
213-
"$OUTDIR/wolfssl-ios-simulator-arm64/lib/libwolfssl.a" \
214-
-create -output $LIPODIR/libwolfssl-ios-simulator.a
215-
216-
echo "Checking libraries"
217-
xcrun -sdk iphonesimulator lipo -info $LIPODIR/libwolfssl-ios-simulator.a
218-
219-
############################################################################################################################################
220-
# IOS ######################################################################################################################################
221-
############################################################################################################################################
222-
buildIOS arm64
223-
224-
# Create universal binaries from architecture-specific static libraries
225-
lipo \
226-
"$OUTDIR/wolfssl-ios-arm64/lib/libwolfssl.a" \
227-
-create -output $LIPODIR/libwolfssl-ios.a
228-
229-
echo "Checking libraries"
230-
xcrun -sdk iphoneos lipo -info $LIPODIR/libwolfssl-ios.a
231-
232-
233-
############################################################################################################################################
234-
# MacOS ####################################################################################################################################
235-
############################################################################################################################################
236-
buildMacOS arm64
237-
buildMacOS x86_64
238-
239-
# Create universal binaries from architecture-specific static libraries
240-
lipo \
241-
"$OUTDIR/wolfssl-macos-x86_64/lib/libwolfssl.a" \
242-
"$OUTDIR/wolfssl-macos-arm64/lib/libwolfssl.a" \
243-
-create -output $LIPODIR/libwolfssl-macos.a
244-
245-
echo "Checking libraries"
246-
xcrun -sdk macosx lipo -info $LIPODIR/libwolfssl-macos.a
247-
248-
249-
############################################################################################################################################
250-
# tvOS Simulator ###########################################################################################################################
251-
############################################################################################################################################
252-
buildTVOSSim arm64
253-
buildTVOSSim x86_64
254-
255-
# Create universal binaries from architecture-specific static libraries
256-
lipo \
257-
"$OUTDIR/wolfssl-tvos-simulator-x86_64/lib/libwolfssl.a" \
258-
"$OUTDIR/wolfssl-tvos-simulator-arm64/lib/libwolfssl.a" \
259-
-create -output $LIPODIR/libwolfssl-tvos-simulator.a
260-
261-
echo "Checking libraries"
262-
xcrun -sdk appletvsimulator lipo -info $LIPODIR/libwolfssl-tvos-simulator.a
263-
264-
265-
############################################################################################################################################
266-
# tvOS #####################################################################################################################################
267-
############################################################################################################################################
268-
buildTVOS arm64
269-
270-
# Create universal binaries from architecture-specific static libraries
271-
lipo \
272-
"$OUTDIR/wolfssl-tvos-arm64/lib/libwolfssl.a" \
273-
-create -output $LIPODIR/libwolfssl-tvos.a
274-
275-
echo "Checking libraries"
276-
xcrun -sdk appletvos lipo -info $LIPODIR/libwolfssl-tvos.a
277-
278-
279-
############################################################################################################################################
280-
# watchOS Simulator ########################################################################################################################
281-
############################################################################################################################################
282-
buildWatchOSSim arm64
283-
buildWatchOSSim x86_64
284-
285-
# Create universal binaries from architecture-specific static libraries
286-
lipo \
287-
"$OUTDIR/wolfssl-watchos-simulator-arm64/lib/libwolfssl.a" \
288-
"$OUTDIR/wolfssl-watchos-simulator-x86_64/lib/libwolfssl.a" \
289-
-create -output $LIPODIR/libwolfssl-watchos-simulator.a
290-
291-
echo "Checking libraries"
292-
xcrun -sdk watchsimulator lipo -info $LIPODIR/libwolfssl-watchos-simulator.a
293-
294-
295-
############################################################################################################################################
296-
# watchOS ##################################################################################################################################
297-
############################################################################################################################################
298-
buildWatchOS arm64
299-
300-
# Create universal binaries from architecture-specific static libraries
301-
lipo \
302-
"$OUTDIR/wolfssl-watchos-arm64/lib/libwolfssl.a" \
303-
-create -output $LIPODIR/libwolfssl-watchos.a
304-
305-
echo "Checking libraries"
306-
xcrun -sdk watchos lipo -info $LIPODIR/libwolfssl-watchos.a
88+
echo "Checking libraries"
89+
xcrun -sdk ${type} lipo -info $LIPODIR/libwolfssl-${type}.a
90+
XCFRAMEWORKS+=" -library ${LIPODIR}/libwolfssl-${type}.a -headers ${OUTDIR}/wolfssl-${type}-arm64/include"
91+
done
30792

93+
for type in iphoneos appletvos ; do
94+
build arm64 ${type}
30895

309-
############################################################################################################################################
310-
# Catalyst #################################################################################################################################
311-
############################################################################################################################################
96+
# Create universal binaries from architecture-specific static libraries
97+
lipo \
98+
"$OUTDIR/wolfssl-${type}-arm64/lib/libwolfssl.a" \
99+
-create -output $LIPODIR/libwolfssl-${type}.a
312100

101+
echo "Checking libraries"
102+
xcrun -sdk ${type} lipo -info $LIPODIR/libwolfssl-${type}.a
103+
XCFRAMEWORKS+=" -library ${LIPODIR}/libwolfssl-${type}.a -headers ${OUTDIR}/wolfssl-${type}-arm64/include"
104+
done
313105

314106
############################################################################################################################################
315107
# ********** BUILD FRAMEWORK
316108
############################################################################################################################################
317109

318-
xcodebuild -create-xcframework \
319-
-library ${LIPODIR}/libwolfssl-ios-simulator.a \
320-
-headers ${OUTDIR}/wolfssl-ios-simulator-arm64/include \
321-
-library ${LIPODIR}/libwolfssl-ios.a \
322-
-headers ${OUTDIR}/wolfssl-ios-arm64/include \
323-
-library ${LIPODIR}/libwolfssl-macos.a \
324-
-headers ${OUTDIR}/wolfssl-macos-arm64/include \
325-
-library ${LIPODIR}/libwolfssl-tvos.a \
326-
-headers ${OUTDIR}/wolfssl-tvos-arm64/include \
327-
-library ${LIPODIR}/libwolfssl-tvos-simulator.a \
328-
-headers ${OUTDIR}/wolfssl-tvos-simulator-arm64/include \
329-
-library ${LIPODIR}/libwolfssl-watchos.a \
330-
-headers ${OUTDIR}/wolfssl-watchos-arm64/include \
331-
-library ${LIPODIR}/libwolfssl-watchos-simulator.a \
332-
-headers ${OUTDIR}/wolfssl-watchos-simulator-arm64/include \
333-
-output ${SDK_OUTPUT_DIR}/libwolfssl.xcframework
110+
xcodebuild -create-xcframework ${XCFRAMEWORKS} -output ${SDK_OUTPUT_DIR}/libwolfssl.xcframework

0 commit comments

Comments
 (0)