@@ -3,11 +3,17 @@ source scripts/get-openssl-version.sh
33
44set -euo pipefail
55
6+ if [ $# == 0 ]; then
7+ echo " Usage: ` basename $0 ` static|dynamic"
8+ exit 1
9+ fi
10+
611if [ ! -d lib ]; then
712 echo " Please run build-libssl.sh first!"
813 exit 1
914fi
1015
16+ FWTYPE=$1
1117FWNAME=openssl
1218FWROOT=frameworks
1319
@@ -89,99 +95,128 @@ function get_openssl_version_from_file() {
8995 echo $( get_openssl_version $std_version )
9096}
9197
92- DEVELOPER=` xcode-select -print-path`
93- FW_EXEC_NAME=" ${FWNAME} .framework/${FWNAME} "
94- INSTALL_NAME=" @rpath/${FW_EXEC_NAME} "
95- COMPAT_VERSION=" 1.0.0"
96- CURRENT_VERSION=" 1.0.0"
98+ if [ $FWTYPE == " dynamic" ]; then
99+ DEVELOPER=` xcode-select -print-path`
100+ FW_EXEC_NAME=" ${FWNAME} .framework/${FWNAME} "
101+ INSTALL_NAME=" @rpath/${FW_EXEC_NAME} "
102+ COMPAT_VERSION=" 1.0.0"
103+ CURRENT_VERSION=" 1.0.0"
97104
98- RX=' ([A-z]+)([0-9]+(\.[0-9]+)*)-([A-z0-9_]+)\.sdk'
105+ RX=' ([A-z]+)([0-9]+(\.[0-9]+)*)-([A-z0-9_]+)\.sdk'
99106
100- cd bin
101- for TARGETDIR in ` ls -d * .sdk` ; do
102- if [[ $TARGETDIR =~ $RX ]]; then
103- PLATFORM=" ${BASH_REMATCH[1]} "
104- SDKVERSION=" ${BASH_REMATCH[2]} "
105- ARCH=" ${BASH_REMATCH[4]} "
106- fi
107+ cd bin
108+ for TARGETDIR in ` ls -d * .sdk` ; do
109+ if [[ $TARGETDIR =~ $RX ]]; then
110+ PLATFORM=" ${BASH_REMATCH[1]} "
111+ SDKVERSION=" ${BASH_REMATCH[2]} "
112+ ARCH=" ${BASH_REMATCH[4]} "
113+ fi
107114
108- echo " Assembling .dylib for $PLATFORM $SDKVERSION ($ARCH )"
109-
110- MIN_SDK_VERSION=$( get_min_sdk " ${TARGETDIR} /lib/libcrypto.a" )
111- if [[ $PLATFORM == AppleTVSimulator* ]]; then
112- MIN_SDK=" -platform_version tvos-simulator $MIN_SDK_VERSION $SDKVERSION "
113- elif [[ $PLATFORM == AppleTV* ]]; then
114- MIN_SDK=" -platform_version tvos $MIN_SDK_VERSION $SDKVERSION "
115- elif [[ $PLATFORM == MacOSX* ]]; then
116- MIN_SDK=" -platform_version macos $MIN_SDK_VERSION $SDKVERSION "
117- elif [[ $PLATFORM == Catalyst* ]]; then
118- MIN_SDK=" -platform_version mac-catalyst $MIN_SDK_VERSION $SDKVERSION "
119- PLATFORM=" MacOSX"
120- elif [[ $PLATFORM == iPhoneSimulator* ]]; then
121- MIN_SDK=" -platform_version ios-simulator $MIN_SDK_VERSION $SDKVERSION "
122- elif [[ $PLATFORM == WatchOS* ]]; then
123- MIN_SDK=" -platform_version watchos $MIN_SDK_VERSION $SDKVERSION "
124- elif [[ $PLATFORM == WatchSimulator* ]]; then
125- MIN_SDK=" -platform_version watchos-simulator $MIN_SDK_VERSION $SDKVERSION "
126- elif [[ $PLATFORM == XRSimulator* ]]; then
127- MIN_SDK=" -platform_version xros-simulator $MIN_SDK_VERSION $SDKVERSION "
128- elif [[ $PLATFORM == XR* ]]; then
129- MIN_SDK=" -platform_version xros $MIN_SDK_VERSION $SDKVERSION "
130- else
131- MIN_SDK=" -platform_version ios $MIN_SDK_VERSION $SDKVERSION "
132- fi
115+ echo " Assembling .dylib for $PLATFORM $SDKVERSION ($ARCH )"
133116
134- CROSS_TOP=" ${DEVELOPER} /Platforms/${PLATFORM} .platform/Developer"
135- CROSS_SDK=" ${PLATFORM}${SDKVERSION} .sdk"
136- SDK=" ${CROSS_TOP} /SDKs/${CROSS_SDK} "
117+ MIN_SDK_VERSION=$( get_min_sdk " ${TARGETDIR} /lib/libcrypto.a" )
118+ if [[ $PLATFORM == AppleTVSimulator* ]]; then
119+ MIN_SDK=" -platform_version tvos-simulator $MIN_SDK_VERSION $SDKVERSION "
120+ elif [[ $PLATFORM == AppleTV* ]]; then
121+ MIN_SDK=" -platform_version tvos $MIN_SDK_VERSION $SDKVERSION "
122+ elif [[ $PLATFORM == MacOSX* ]]; then
123+ MIN_SDK=" -platform_version macos $MIN_SDK_VERSION $SDKVERSION "
124+ elif [[ $PLATFORM == Catalyst* ]]; then
125+ MIN_SDK=" -platform_version mac-catalyst $MIN_SDK_VERSION $SDKVERSION "
126+ PLATFORM=" MacOSX"
127+ elif [[ $PLATFORM == iPhoneSimulator* ]]; then
128+ MIN_SDK=" -platform_version ios-simulator $MIN_SDK_VERSION $SDKVERSION "
129+ elif [[ $PLATFORM == WatchOS* ]]; then
130+ MIN_SDK=" -platform_version watchos $MIN_SDK_VERSION $SDKVERSION "
131+ elif [[ $PLATFORM == WatchSimulator* ]]; then
132+ MIN_SDK=" -platform_version watchos-simulator $MIN_SDK_VERSION $SDKVERSION "
133+ elif [[ $PLATFORM == XRSimulator* ]]; then
134+ MIN_SDK=" -platform_version xros-simulator $MIN_SDK_VERSION $SDKVERSION "
135+ elif [[ $PLATFORM == XR* ]]; then
136+ MIN_SDK=" -platform_version xros $MIN_SDK_VERSION $SDKVERSION "
137+ else
138+ MIN_SDK=" -platform_version ios $MIN_SDK_VERSION $SDKVERSION "
139+ fi
137140
138- TARGETOBJ=" ${TARGETDIR} /obj"
139- rm -rf $TARGETOBJ
140- mkdir $TARGETOBJ
141- cd $TARGETOBJ
142- ar -x ../lib/libcrypto.a
143- ar -x ../lib/libssl.a
144- cd ..
141+ CROSS_TOP=" ${DEVELOPER} /Platforms/${PLATFORM} .platform/Developer"
142+ CROSS_SDK=" ${PLATFORM}${SDKVERSION} .sdk"
143+ SDK=" ${CROSS_TOP} /SDKs/${CROSS_SDK} "
144+
145+ TARGETOBJ=" ${TARGETDIR} /obj"
146+ rm -rf $TARGETOBJ
147+ mkdir $TARGETOBJ
148+ cd $TARGETOBJ
149+ ar -x ../lib/libcrypto.a
150+ ar -x ../lib/libssl.a
151+ cd ..
145152
146- ld obj/* .o \
147- -dylib \
148- -lSystem \
149- -arch $ARCH \
150- $MIN_SDK \
151- -syslibroot $SDK \
152- -compatibility_version $COMPAT_VERSION \
153- -current_version $CURRENT_VERSION \
154- -application_extension \
155- -o $FWNAME .dylib
156- install_name_tool -id $INSTALL_NAME $FWNAME .dylib
153+ ld obj/* .o \
154+ -dylib \
155+ -lSystem \
156+ -arch $ARCH \
157+ $MIN_SDK \
158+ -syslibroot $SDK \
159+ -compatibility_version $COMPAT_VERSION \
160+ -current_version $CURRENT_VERSION \
161+ -application_extension \
162+ -o $FWNAME .dylib
163+ install_name_tool -id $INSTALL_NAME $FWNAME .dylib
157164
165+ cd ..
166+ done
158167 cd ..
159- done
160- cd ..
161168
162- for SYS in ${ALL_SYSTEMS[@]} ; do
163- SYSDIR=" $FWROOT /$SYS "
164- FWDIR=" $SYSDIR /$FWNAME .framework"
165- DYLIBS=(bin/${SYS} * /$FWNAME .dylib)
166-
167- if [[ ${# DYLIBS[@]} -gt 0 && -e ${DYLIBS[0]} ]]; then
168- echo " Creating framework for $SYS "
169- mkdir -p $FWDIR /Headers
170- lipo -create ${DYLIBS[@]} -output $FWDIR /$FWNAME
171- cp -r include/$FWNAME /* $FWDIR /Headers/
172- cp -L assets/$SYS /Info.plist $FWDIR /Info.plist
173- MIN_SDK_VERSION=$( get_min_sdk " $FWDIR /$FWNAME " )
174- OPENSSL_VERSION=$( get_openssl_version_from_file " $FWDIR /Headers/opensslv.h" )
175- sed -e " s/\\\$ (MIN_SDK_VERSION)/$MIN_SDK_VERSION /g" \
176- -e " s/\\\$ (OPENSSL_VERSION)/$OPENSSL_VERSION /g" \
177- -i ' ' " $FWDIR /Info.plist"
178- echo " Created $FWDIR "
179- else
180- echo " Skipped framework for $SYS "
181- fi
182- done
169+ for SYS in ${ALL_SYSTEMS[@]} ; do
170+ SYSDIR=" $FWROOT /$SYS "
171+ FWDIR=" $SYSDIR /$FWNAME .framework"
172+ DYLIBS=(bin/${SYS} * /$FWNAME .dylib)
173+
174+ if [[ ${# DYLIBS[@]} -gt 0 && -e ${DYLIBS[0]} ]]; then
175+ echo " Creating framework for $SYS "
176+ mkdir -p $FWDIR /Headers
177+ lipo -create ${DYLIBS[@]} -output $FWDIR /$FWNAME
178+ cp -r include/$FWNAME /* $FWDIR /Headers/
179+ cp -L assets/$SYS /Info.plist $FWDIR /Info.plist
180+ MIN_SDK_VERSION=$( get_min_sdk " $FWDIR /$FWNAME " )
181+ OPENSSL_VERSION=$( get_openssl_version_from_file " $FWDIR /Headers/opensslv.h" )
182+ sed -e " s/\\\$ (MIN_SDK_VERSION)/$MIN_SDK_VERSION /g" \
183+ -e " s/\\\$ (OPENSSL_VERSION)/$OPENSSL_VERSION /g" \
184+ -i ' ' " $FWDIR /Info.plist"
185+ echo " Created $FWDIR "
186+ else
187+ echo " Skipped framework for $SYS "
188+ fi
189+ done
183190
184- rm bin/* /$FWNAME .dylib
191+ rm bin/* /$FWNAME .dylib
192+ else
193+ for SYS in ${ALL_SYSTEMS[@]} ; do
194+ SYSDIR=" $FWROOT /$SYS "
195+ FWDIR=" $SYSDIR /$FWNAME .framework"
196+ LIBS_CRYPTO=(bin/${SYS} * /lib/libcrypto.a)
197+ LIBS_SSL=(bin/${SYS} * /lib/libssl.a)
198+
199+ if [[ ${# LIBS_CRYPTO[@]} -gt 0 && -e ${LIBS_CRYPTO[0]} && ${# LIBS_SSL[@]} -gt 0 && -e ${LIBS_SSL[0]} ]]; then
200+ echo " Creating framework for $SYS "
201+ mkdir -p $FWDIR /lib
202+ lipo -create ${LIBS_CRYPTO[@]} -output $FWDIR /lib/libcrypto.a
203+ lipo -create ${LIBS_SSL[@]} -output $FWDIR /lib/libssl.a
204+ libtool -static -o $FWDIR /$FWNAME $FWDIR /lib/* .a
205+ rm -rf $FWDIR /lib
206+ mkdir -p $FWDIR /Headers
207+ cp -r include/$FWNAME /* $FWDIR /Headers/
208+ cp -L assets/$SYS /Info.plist $FWDIR /Info.plist
209+ MIN_SDK_VERSION=$( get_min_sdk " $FWDIR /$FWNAME " )
210+ OPENSSL_VERSION=$( get_openssl_version_from_file " $FWDIR /Headers/opensslv.h" )
211+ sed -e " s/\\\$ (MIN_SDK_VERSION)/$MIN_SDK_VERSION /g" \
212+ -e " s/\\\$ (OPENSSL_VERSION)/$OPENSSL_VERSION /g" \
213+ -i ' ' " $FWDIR /Info.plist"
214+ echo " Created $FWDIR "
215+ else
216+ echo " Skipped framework for $SYS "
217+ fi
218+ done
219+ fi
185220
186221# macOS and Catalyst symlinks
187222for SYS in ${ALL_SYSTEMS[@]} ; do
0 commit comments