Skip to content

Commit c396efa

Browse files
committed
Add Catalyst to XCFramework
1 parent 2c6365e commit c396efa

File tree

1 file changed

+87
-46
lines changed

1 file changed

+87
-46
lines changed

build.sh

Lines changed: 87 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ EXAMPLE="example/iOS Test App"
208208
ARCHIVE="archive/libcurl-$LIBCURL-openssl-$OPENSSL-nghttp2-$NGHTTP2"
209209

210210
echo
211-
echo -e "${bold}Creating archive for release v$LIBCURL...${dim}"
211+
echo -e "${bold}Creating archive with XCFrameworks for release v$LIBCURL...${dim}"
212212
echo " See $ARCHIVE"
213213
mkdir -p "$ARCHIVE"
214214
mkdir -p "$ARCHIVE/include/openssl"
@@ -226,106 +226,147 @@ mkdir -p "$ARCHIVE/bin"
226226
mkdir -p "$ARCHIVE/framework"
227227
mkdir -p "$ARCHIVE/xcframework"
228228

229-
# libraries
229+
# libraries for libcurl, libcrypto and libssl
230230
cp curl/lib/libcurl_iOS.a $ARCHIVE/lib/iOS/libcurl.a
231231
cp curl/lib/libcurl_iOS-simulator.a $ARCHIVE/lib/iOS-simulator/libcurl.a
232232
cp curl/lib/libcurl_iOS-fat.a $ARCHIVE/lib/iOS-fat/libcurl.a
233233
cp curl/lib/libcurl_tvOS.a $ARCHIVE/lib/tvOS/libcurl.a
234234
cp curl/lib/libcurl_tvOS-simulator.a $ARCHIVE/lib/tvOS-simulator/libcurl.a
235235
cp curl/lib/libcurl_Mac.a $ARCHIVE/lib/MacOS/libcurl.a
236236

237-
xcodebuild -create-xcframework \
238-
-library $ARCHIVE/lib/iOS/libcurl.a \
239-
-library $ARCHIVE/lib/iOS-simulator/libcurl.a \
240-
-library $ARCHIVE/lib/tvOS/libcurl.a \
241-
-library $ARCHIVE/lib/tvOS-simulator/libcurl.a \
242-
-output $ARCHIVE/xcframework/libcurl.xcframework
243-
244237
cp openssl/iOS/lib/libcrypto.a $ARCHIVE/lib/iOS/libcrypto.a
245238
cp openssl/iOS-simulator/lib/libcrypto.a $ARCHIVE/lib/iOS-simulator/libcrypto.a
246239
cp openssl/iOS-fat/lib/libcrypto.a $ARCHIVE/lib/iOS-fat/libcrypto.a
247240
cp openssl/tvOS/lib/libcrypto.a $ARCHIVE/lib/tvOS/libcrypto.a
248241
cp openssl/tvOS-simulator/lib/libcrypto.a $ARCHIVE/lib/tvOS-simulator/libcrypto.a
249242
cp openssl/Mac/lib/libcrypto.a $ARCHIVE/lib/MacOS/libcrypto.a
250243

251-
xcodebuild -create-xcframework \
252-
-library $ARCHIVE/lib/iOS/libcrypto.a \
253-
-library $ARCHIVE/lib/iOS-simulator/libcrypto.a \
254-
-library $ARCHIVE/lib/tvOS/libcrypto.a \
255-
-library $ARCHIVE/lib/tvOS-simulator/libcrypto.a \
256-
-output $ARCHIVE/xcframework/libcrypto.xcframework
257-
258-
259244
cp openssl/iOS/lib/libssl.a $ARCHIVE/lib/iOS/libssl.a
260245
cp openssl/iOS-simulator/lib/libssl.a $ARCHIVE/lib/iOS-simulator/libssl.a
261246
cp openssl/iOS-fat/lib/libssl.a $ARCHIVE/lib/iOS-fat/libssl.a
262247
cp openssl/tvOS/lib/libssl.a $ARCHIVE/lib/tvOS/libssl.a
263248
cp openssl/tvOS-simulator/lib/libssl.a $ARCHIVE/lib/tvOS-simulator/libssl.a
264249
cp openssl/Mac/lib/libssl.a $ARCHIVE/lib/MacOS/libssl.a
265250

266-
xcodebuild -create-xcframework \
267-
-library $ARCHIVE/lib/iOS/libssl.a \
268-
-library $ARCHIVE/lib/iOS-simulator/libssl.a \
269-
-library $ARCHIVE/lib/tvOS/libssl.a \
270-
-library $ARCHIVE/lib/tvOS-simulator/libssl.a \
271-
-output $ARCHIVE/xcframework/libssl.xcframework
272-
273251
if [ "$catalyst" == "-m" ]; then
252+
# Add catalyst libraries
274253
cp curl/lib/libcurl_Catalyst.a $ARCHIVE/lib/Catalyst/libcurl.a
275254
cp openssl/Catalyst/lib/libcrypto.a $ARCHIVE/lib/Catalyst/libcrypto.a
276255
cp openssl/Catalyst/lib/libssl.a $ARCHIVE/lib/Catalyst/libssl.a
256+
257+
# Build XCFrameworks with Catalyst library
258+
xcodebuild -create-xcframework \
259+
-library $ARCHIVE/lib/iOS/libcurl.a \
260+
-library $ARCHIVE/lib/iOS-simulator/libcurl.a \
261+
-library $ARCHIVE/lib/tvOS/libcurl.a \
262+
-library $ARCHIVE/lib/tvOS-simulator/libcurl.a \
263+
-library $ARCHIVE/lib/Catalyst/libcurl.a \
264+
-output $ARCHIVE/xcframework/libcurl.xcframework
265+
xcodebuild -create-xcframework \
266+
-library $ARCHIVE/lib/iOS/libcrypto.a \
267+
-library $ARCHIVE/lib/iOS-simulator/libcrypto.a \
268+
-library $ARCHIVE/lib/tvOS/libcrypto.a \
269+
-library $ARCHIVE/lib/tvOS-simulator/libcrypto.a \
270+
-library $ARCHIVE/lib/Catalyst/libcrypto.a \
271+
-output $ARCHIVE/xcframework/libcrypto.xcframework
272+
xcodebuild -create-xcframework \
273+
-library $ARCHIVE/lib/iOS/libssl.a \
274+
-library $ARCHIVE/lib/iOS-simulator/libssl.a \
275+
-library $ARCHIVE/lib/tvOS/libssl.a \
276+
-library $ARCHIVE/lib/tvOS-simulator/libssl.a \
277+
-library $ARCHIVE/lib/Catalyst/libssl.a \
278+
-output $ARCHIVE/xcframework/libssl.xcframework
279+
else
280+
# Build XCFrameworks
281+
xcodebuild -create-xcframework \
282+
-library $ARCHIVE/lib/iOS/libcurl.a \
283+
-library $ARCHIVE/lib/iOS-simulator/libcurl.a \
284+
-library $ARCHIVE/lib/tvOS/libcurl.a \
285+
-library $ARCHIVE/lib/tvOS-simulator/libcurl.a \
286+
-output $ARCHIVE/xcframework/libcurl.xcframework
287+
xcodebuild -create-xcframework \
288+
-library $ARCHIVE/lib/iOS/libcrypto.a \
289+
-library $ARCHIVE/lib/iOS-simulator/libcrypto.a \
290+
-library $ARCHIVE/lib/tvOS/libcrypto.a \
291+
-library $ARCHIVE/lib/tvOS-simulator/libcrypto.a \
292+
-output $ARCHIVE/xcframework/libcrypto.xcframework
293+
xcodebuild -create-xcframework \
294+
-library $ARCHIVE/lib/iOS/libssl.a \
295+
-library $ARCHIVE/lib/iOS-simulator/libssl.a \
296+
-library $ARCHIVE/lib/tvOS/libssl.a \
297+
-library $ARCHIVE/lib/tvOS-simulator/libssl.a \
298+
-output $ARCHIVE/xcframework/libssl.xcframework
277299
fi
278300

279301
cp openssl/*.a $ARCHIVE/framework
280302

303+
# libraries for nghttp2
281304
if [ "$buildnghttp2" != "" ]; then
305+
# nghttp2 libraries
282306
cp nghttp2/lib/libnghttp2_iOS.a $ARCHIVE/lib/iOS/libnghttp2.a
283307
cp nghttp2/lib/libnghttp2_iOS-simulator.a $ARCHIVE/lib/iOS-simulator/libnghttp2.a
284308
cp nghttp2/lib/libnghttp2_iOS-fat.a $ARCHIVE/lib/iOS-fat/libnghttp2.a
285309
cp nghttp2/lib/libnghttp2_tvOS.a $ARCHIVE/lib/tvOS/libnghttp2.a
286310
cp nghttp2/lib/libnghttp2_tvOS-simulator.a $ARCHIVE/lib/tvOS-simulator/libnghttp2.a
287311
cp nghttp2/lib/libnghttp2_Mac.a $ARCHIVE/lib/MacOS/libnghttp2.a
288312
if [ "$catalyst" == "-m" ]; then
289-
cp nghttp2/lib/libnghttp2_Catalyst.a $ARCHIVE/lib/Catalyst/libnghttp2.a
313+
cp nghttp2/lib/libnghttp2_Catalyst.a $ARCHIVE/lib/Catalyst/libnghttp2.a
314+
xcodebuild -create-xcframework \
315+
-library $ARCHIVE/lib/iOS/libnghttp2.a \
316+
-library $ARCHIVE/lib/iOS-simulator/libnghttp2.a \
317+
-library $ARCHIVE/lib/tvOS/libnghttp2.a \
318+
-library $ARCHIVE/lib/tvOS-simulator/libnghttp2.a \
319+
-library $ARCHIVE/lib/Catalyst/libnghttp2.a \
320+
-output $ARCHIVE/xcframework/libnghttp2.xcframework
321+
else
322+
xcodebuild -create-xcframework \
323+
-library $ARCHIVE/lib/iOS/libnghttp2.a \
324+
-library $ARCHIVE/lib/iOS-simulator/libnghttp2.a \
325+
-library $ARCHIVE/lib/tvOS/libnghttp2.a \
326+
-library $ARCHIVE/lib/tvOS-simulator/libnghttp2.a \
327+
-output $ARCHIVE/xcframework/libnghttp2.xcframework
290328
fi
291-
292-
xcodebuild -create-xcframework \
293-
-library $ARCHIVE/lib/iOS/libnghttp2.a \
294-
-library $ARCHIVE/lib/iOS-simulator/libnghttp2.a \
295-
-library $ARCHIVE/lib/tvOS/libnghttp2.a \
296-
-library $ARCHIVE/lib/tvOS-simulator/libnghttp2.a \
297-
-output $ARCHIVE/xcframework/libnghttp2.xcframework
298-
299329
fi
330+
300331
# archive header files
301332
cp openssl/iOS/include/openssl/* "$ARCHIVE/include/openssl"
302333
cp curl/include/curl/* "$ARCHIVE/include/curl"
334+
303335
# grab root certs
304336
curl -sL https://curl.se/ca/cacert.pem > $ARCHIVE/cacert.pem
337+
305338
# create README for archive
306339
sed -e "s/ZZZLIBCURL/$LIBCURL/g" -e "s/ZZZOPENSSL/$OPENSSL/g" -e "s/ZZZNGHTTP2/$NGHTTP2/g" archive/release-template.md > $ARCHIVE/README.md
307340
echo
308-
# update test app
341+
342+
# EXAMPLE App - update test app with latest includes and XCFrameworks
309343
echo -e "${bold}Copying libraries to Test App ...${dim}"
310344
echo " See $EXAMPLE"
311345
mkdir -p "$EXAMPLE/libs"
312346
mkdir -p "$EXAMPLE/include"
313-
cp openssl/iOS-fat/lib/libcrypto.a "$EXAMPLE/libs/libcrypto.a"
314-
cp openssl/iOS-fat/lib/libssl.a "$EXAMPLE/libs/libssl.a"
347+
# Includes
315348
cp openssl/iOS-fat/include/openssl/* "$EXAMPLE/include/openssl/"
316-
if [ "$catalyst" == "-m" ]; then
317-
cp openssl/openssl-ios-x86_64-maccatalyst.a "$EXAMPLE/libs/openssl-ios-x86_64-maccatalyst.a"
318-
cp curl/lib/libcurl_Catalyst.a "$EXAMPLE/libs/libcurl_Catalyst.a"
319-
if [ "$buildnghttp2" != "" ]; then
320-
cp nghttp2/lib/libnghttp2_Catalyst.a "$EXAMPLE/libs/libnghttp2_Catalyst.a"
321-
fi
322-
fi
323349
cp curl/include/curl/* "$EXAMPLE/include/curl/"
324-
cp curl/lib/libcurl_iOS-fat.a "$EXAMPLE/libs/libcurl.a"
350+
cp $ARCHIVE/cacert.pem "$EXAMPLE/cacert.pem"
351+
# XCFrameworks
352+
cp -R $ARCHIVE/xcframework/libcrypto.xcframework "$EXAMPLE/libs/"
353+
cp -R $ARCHIVE/xcframework/libssl.xcframework "$EXAMPLE/libs/"
354+
cp -R $ARCHIVE/xcframework/libcurl.xcframework "$EXAMPLE/libs/"
325355
if [ "$buildnghttp2" != "" ]; then
326-
cp nghttp2/lib/libnghttp2_iOS-fat.a "$EXAMPLE/libs/libnghttp2.a"
356+
#cp nghttp2/lib/libnghttp2_iOS-fat.a "$EXAMPLE/libs/libnghttp2.a"
357+
cp -R $ARCHIVE/xcframework/libnghttp2.xcframework "$EXAMPLE/libs/"
327358
fi
328-
cp $ARCHIVE/cacert.pem "$EXAMPLE/cacert.pem"
359+
#cp openssl/iOS-fat/lib/libcrypto.a "$EXAMPLE/libs/libcrypto.a"
360+
#cp openssl/iOS-fat/lib/libssl.a "$EXAMPLE/libs/libssl.a"
361+
#cp curl/lib/libcurl_iOS-fat.a "$EXAMPLE/libs/libcurl.a"
362+
# if [ "$catalyst" == "-m" ]; then
363+
# cp openssl/openssl-ios-x86_64-maccatalyst.a "$EXAMPLE/libs/openssl-ios-x86_64-maccatalyst.a"
364+
# cp curl/lib/libcurl_Catalyst.a "$EXAMPLE/libs/libcurl_Catalyst.a"
365+
# if [ "$buildnghttp2" != "" ]; then
366+
# cp nghttp2/lib/libnghttp2_Catalyst.a "$EXAMPLE/libs/libnghttp2_Catalyst.a"
367+
# fi
368+
# fi
369+
329370
echo
330371
# create universal Mac binaries and run test
331372
echo -e "${bold}Archiving Mac binaries for curl and openssl...${dim}"

0 commit comments

Comments
 (0)