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-
2423set -euo pipefail
2524
2625WOLFSSL_DIR=$( pwd) /../../
2726OUTDIR=$( pwd) /artifacts
2827LIPODIR=${OUTDIR} /lib
2928SDK_OUTPUT_DIR=${OUTDIR} /xcframework
3029
31-
3230CFLAGS_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
3834helpFunction ()
3935{
@@ -47,287 +43,68 @@ helpFunction()
4743while 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
5652done
5753
58- # Amalgamate extra CLI options with base options
59- CONF_OPTS=" ${CONF_OPTS_COMMON} ${CONF_OPTS_EXTRA} "
60-
6154rm -rf $OUTDIR
6255mkdir -p $LIPODIR
6356mkdir -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