@@ -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