@@ -57,7 +57,9 @@ MIN_MAC_CATALYST_VERSION=13.0
5757MACOS_ARCHS=(" i386" " x86_64" )
5858MACOS_SILICON_ARCHS=(" arm64" )
5959IOS_ARCHS=(" armv7" " arm64" )
60- IOS_SIM_ARCHS=(" i386" " x86_64" )
60+ IOS_SIM_ARCHS=(" i386" " x86_64" " arm64" )
61+ TVOS_ARCHS=(" arm64" )
62+ TVOS_SIM_ARCHS=(" x86_64" " arm64" )
6163MAC_CATALYST_ARCHS=(" x86_64" )
6264
6365# Applied to all platforms
@@ -213,8 +215,8 @@ OPTIONS:
213215 --min-ios-version [num]
214216 Specify the minimum iOS version to target. Since iOS 11+ are 64-bit only,
215217 if the minimum iOS version is set to iOS 11.0 or later, iOS archs is
216- automatically set to 'arm64' and iOS Simulator archs is set to "x86_64",
217- unless '--ios-archs' is also specified.
218+ automatically set to 'arm64' and iOS Simulator archs is set to ( "x86_64"
219+ "arm64") unless '--ios-archs' is also specified.
218220 Defaults to $MIN_IOS_VERSION
219221
220222 --ios-archs "(archs, ...)"
@@ -587,16 +589,16 @@ parseArgs()
587589 if [[ " ${IOS_ARCHS[*]} " =~ armv ]]; then
588590 IOS_SIM_ARCHS+=(" i386" )
589591 fi
590- # Add 64-bit simulator for 64-bit arm
592+ # Add x86-64 and arm64 mac simulator for 64-bit arm iOS
591593 if [[ " ${IOS_ARCHS[*]} " =~ arm64 ]]; then
592- IOS_SIM_ARCHS+=(" x86_64" )
594+ IOS_SIM_ARCHS+=(" x86_64" " arm64 " )
593595 fi
594596 else
595597 read -ra MIN_IOS_PARTS <<< " ${MIN_IOS_VERSION//./ }"
596598 if [[ ${MIN_IOS_PARTS[0]} -ge 11 ]]; then
597599 # iOS 11 dropped support for 32bit devices
598600 IOS_ARCHS=(" arm64" )
599- IOS_SIM_ARCHS=(" x86_64" )
601+ IOS_SIM_ARCHS=(" x86_64" " arm64 " )
600602 fi
601603 fi
602604}
@@ -745,7 +747,7 @@ using darwin : $COMPILER_VERSION~appletv
745747 <target-os>iphone
746748 <cxxflags>"$CXX_FLAGS "
747749 <linkflags>"$LD_FLAGS "
748- <compileflags>"$OTHER_FLAGS -arch arm64 $EXTRA_TVOS_FLAGS -isysroot $TVOS_SDK_PATH "
750+ <compileflags>"$OTHER_FLAGS ${TVOS_ARCH_FLAGS[*]} $EXTRA_TVOS_FLAGS -isysroot $TVOS_SDK_PATH "
749751 <threading>multi
750752;
751753using darwin : $COMPILER_VERSION ~appletvsim
@@ -754,7 +756,7 @@ using darwin : $COMPILER_VERSION~appletvsim
754756 <target-os>iphone
755757 <cxxflags>"$CXX_FLAGS "
756758 <linkflags>"$LD_FLAGS "
757- <compileflags>"$OTHER_FLAGS -arch x86_64 $EXTRA_TVOS_SIM_FLAGS -isysroot $TVOSSIM_SDK_PATH "
759+ <compileflags>"$OTHER_FLAGS ${TVOS_SIM_ARCH_FLAGS[*]} $EXTRA_TVOS_SIM_FLAGS -isysroot $TVOSSIM_SDK_PATH "
758760 <threading>multi
759761;
760762using darwin : $COMPILER_VERSION ~macos
@@ -1039,21 +1041,25 @@ scrunchAllLibsTogetherInOneLibPerPlatform()
10391041 if [[ -n $BUILD_IOS ]]; then
10401042 # iOS Device
10411043 for ARCH in " ${IOS_ARCHS[@]} " ; do
1042- mkdir -p " $IOS_BUILD_DIR /$ARCH /obj"
1044+ mkdir -p " $IOS_BUILD_DIR /iphoneos/ $ARCH /obj"
10431045 done
10441046
10451047 # iOS Simulator
10461048 for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
1047- mkdir -p " $IOS_BUILD_DIR /$ARCH /obj"
1049+ mkdir -p " $IOS_BUILD_DIR /iphonesimulator/ $ARCH /obj"
10481050 done
10491051 fi
10501052
10511053 if [[ -n $BUILD_TVOS ]]; then
10521054 # tvOS Device
1053- mkdir -p " $TVOS_BUILD_DIR /arm64/obj"
1055+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1056+ mkdir -p " $TVOS_BUILD_DIR /appletvos/$ARCH /obj"
1057+ done
10541058
10551059 # tvOS Simulator
1056- mkdir -p " $TVOS_BUILD_DIR /x86_64/obj"
1060+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1061+ mkdir -p " $TVOS_BUILD_DIR /appletvsimulator/$ARCH /obj"
1062+ done
10571063 fi
10581064
10591065 if [[ -n $BUILD_MACOS ]]; then
@@ -1091,30 +1097,44 @@ scrunchAllLibsTogetherInOneLibPerPlatform()
10911097 if [[ " ${# IOS_ARCHS[@]} " -gt 1 ]]; then
10921098 for ARCH in " ${IOS_ARCHS[@]} " ; do
10931099 $IOS_DEV_CMD lipo " iphone-build/stage/lib/libboost_$NAME .a" \
1094- -thin " $ARCH " -o " $IOS_BUILD_DIR /$ARCH /libboost_$NAME .a"
1100+ -thin " $ARCH " -o " $IOS_BUILD_DIR /iphoneos/ $ARCH /libboost_$NAME .a"
10951101 done
10961102 else
10971103 cp " iphone-build/stage/lib/libboost_$NAME .a" \
1098- " $IOS_BUILD_DIR /${IOS_ARCHS[0]} /libboost_$NAME .a"
1104+ " $IOS_BUILD_DIR /iphoneos/ ${IOS_ARCHS[0]} /libboost_$NAME .a"
10991105 fi
11001106
11011107 if [[ " ${# IOS_SIM_ARCHS[@]} " -gt 1 ]]; then
11021108 for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
11031109 $IOS_SIM_DEV_CMD lipo " iphonesim-build/stage/lib/libboost_$NAME .a" \
1104- -thin " $ARCH " -o " $IOS_BUILD_DIR /$ARCH /libboost_$NAME .a"
1110+ -thin " $ARCH " -o " $IOS_BUILD_DIR /iphonesimulator/ $ARCH /libboost_$NAME .a"
11051111 done
11061112 else
11071113 cp " iphonesim-build/stage/lib/libboost_$NAME .a" \
1108- " $IOS_BUILD_DIR /${IOS_SIM_ARCHS[0]} /libboost_$NAME .a"
1114+ " $IOS_BUILD_DIR /iphonesimulator/ ${IOS_SIM_ARCHS[0]} /libboost_$NAME .a"
11091115 fi
11101116 fi
11111117
11121118 if [[ -n $BUILD_TVOS ]]; then
1113- cp " appletv-build/stage/lib/libboost_$NAME .a" \
1114- " $TVOS_BUILD_DIR /arm64/libboost_$NAME .a"
1115-
1116- cp " appletvsim-build/stage/lib/libboost_$NAME .a" \
1117- " $TVOS_BUILD_DIR /x86_64/libboost_$NAME .a"
1119+ if [[ " ${# TVOS_ARCHS[@]} " -gt 1 ]]; then
1120+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1121+ $TVOS_DEV_CMD lipo " appletv-build/stage/lib/libboost_$NAME .a" \
1122+ -thin " $ARCH " -o " $TVOS_BUILD_DIR /appletvos/$ARCH /libboost_$NAME .a"
1123+ done
1124+ else
1125+ cp " appletv-build/stage/lib/libboost_$NAME .a" \
1126+ " $TVOS_BUILD_DIR /appletvos/${TVOS_ARCHS[0]} /libboost_$NAME .a"
1127+ fi
1128+
1129+ if [[ " ${# TVOS_SIM_ARCHS[@]} " -gt 1 ]]; then
1130+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1131+ $TVOS_SIM_DEV_CMD lipo " appletvsim-build/stage/lib/libboost_$NAME .a" \
1132+ -thin " $ARCH " -o " $TVOS_BUILD_DIR /appletvsimulator/$ARCH /libboost_$NAME .a"
1133+ done
1134+ else
1135+ cp " appletvsim-build/stage/lib/libboost_$NAME .a" \
1136+ " $TVOS_BUILD_DIR /appletvsimulator/${TVOS_SIM_ARCHS[0]} /libboost_$NAME .a"
1137+ fi
11181138 fi
11191139
11201140 if [[ -n $BUILD_MACOS ]]; then
@@ -1164,16 +1184,20 @@ scrunchAllLibsTogetherInOneLibPerPlatform()
11641184 echo " Decomposing libboost_${NAME} .a"
11651185 if [[ -n $BUILD_IOS ]]; then
11661186 for ARCH in " ${IOS_ARCHS[@]} " ; do
1167- unpackArchive " $IOS_BUILD_DIR /$ARCH /obj" $NAME
1187+ unpackArchive " $IOS_BUILD_DIR /iphoneos/ $ARCH /obj" $NAME
11681188 done
11691189 for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
1170- unpackArchive " $IOS_BUILD_DIR /$ARCH /obj" $NAME
1190+ unpackArchive " $IOS_BUILD_DIR /iphonesimulator/ $ARCH /obj" $NAME
11711191 done
11721192 fi
11731193
11741194 if [[ -n $BUILD_TVOS ]]; then
1175- unpackArchive " $TVOS_BUILD_DIR /arm64/obj" $NAME
1176- unpackArchive " $TVOS_BUILD_DIR /x86_64/obj" $NAME
1195+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1196+ unpackArchive " $TVOS_BUILD_DIR /appletvos/$ARCH /obj" $NAME
1197+ done
1198+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1199+ unpackArchive " $TVOS_BUILD_DIR /appletvsimulator/$ARCH /obj" $NAME
1200+ done
11771201 fi
11781202
11791203 if [[ -n $BUILD_MACOS ]]; then
@@ -1198,11 +1222,23 @@ scrunchAllLibsTogetherInOneLibPerPlatform()
11981222 echo " Linking each architecture into an uberlib ($ALL_LIBS => libboost.a )"
11991223 if [[ -n $BUILD_IOS ]]; then
12001224 for ARCH in " ${IOS_ARCHS[@]} " ; do
1201- rm " $IOS_BUILD_DIR /$ARCH /libboost.a"
1225+ rm " $IOS_BUILD_DIR /iphoneos/$ARCH /libboost.a"
1226+ done
1227+ rm " $IOS_BUILD_DIR /iphoneos/libboost.a"
1228+ for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
1229+ rm " $IOS_BUILD_DIR /iphonesimulator/$ARCH /libboost.a"
12021230 done
1231+ rm " $IOS_BUILD_DIR /iphonesimulator/libboost.a"
12031232 fi
12041233 if [[ -n $BUILD_TVOS ]]; then
1205- rm " $TVOS_BUILD_DIR " /* /libboost.a
1234+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1235+ rm " $TVOS_BUILD_DIR /appletvos/$ARCH /libboost.a"
1236+ done
1237+ rm " $TVOS_BUILD_DIR /appletvos/libboost.a"
1238+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1239+ rm " $TVOS_BUILD_DIR /appletvsimulator/$ARCH /libboost.a"
1240+ done
1241+ rm " $TVOS_BUILD_DIR /appletvsimulator/libboost.a"
12061242 fi
12071243 if [[ -n $BUILD_MACOS ]]; then
12081244 for ARCH in " ${MACOS_ARCHS[@]} " ; do
@@ -1230,20 +1266,25 @@ scrunchAllLibsTogetherInOneLibPerPlatform()
12301266 if [[ -n $BUILD_IOS ]]; then
12311267 for ARCH in " ${IOS_ARCHS[@]} " ; do
12321268 echo " ...ios-$ARCH "
1233- (cd_or_abort " $IOS_BUILD_DIR /$ARCH " ; $IOS_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
1269+ (cd_or_abort " $IOS_BUILD_DIR /iphoneos/ $ARCH " ; $IOS_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
12341270 done
12351271
12361272 for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
12371273 echo " ...ios-sim-$ARCH "
1238- (cd_or_abort " $IOS_BUILD_DIR /$ARCH " ; $IOS_SIM_ARM_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
1274+ (cd_or_abort " $IOS_BUILD_DIR /iphonesimulator/ $ARCH " ; $IOS_SIM_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
12391275 done
12401276 fi
12411277
12421278 if [[ -n $BUILD_TVOS ]]; then
1243- echo " ...tvOS-arm64"
1244- (cd_or_abort " $TVOS_BUILD_DIR /arm64" ; $TVOS_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
1245- echo " ...tvOS-x86_64"
1246- (cd_or_abort " $TVOS_BUILD_DIR /x86_64" ; $TVOS_SIM_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
1279+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1280+ echo " ...tvOS-$ARCH "
1281+ (cd_or_abort " $TVOS_BUILD_DIR /appletvos/$ARCH " ; $TVOS_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
1282+ done
1283+
1284+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1285+ echo " ...tvOS-sim-$ARCH "
1286+ (cd_or_abort " $TVOS_BUILD_DIR /appletvsimulator/$ARCH " ; $TVOS_SIM_DEV_CMD ar crus libboost.a " obj/$NAME /" * .o; )
1287+ done
12471288 fi
12481289
12491290 if [[ -n $BUILD_MACOS ]]; then
@@ -1282,10 +1323,10 @@ buildUniversal()
12821323
12831324 ARCH_FILES=()
12841325 for ARCH in " ${IOS_ARCHS[@]} " ; do
1285- ARCH_FILES+=(" $ARCH /libboost_$NAME .a" )
1326+ ARCH_FILES+=(" iphoneos/ $ARCH /libboost_$NAME .a" )
12861327 done
12871328 for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
1288- ARCH_FILES+=(" $ARCH /libboost_$NAME .a" )
1329+ ARCH_FILES+=(" iphonesimulator/ $ARCH /libboost_$NAME .a" )
12891330 done
12901331 if [[ " ${# ARCH_FILES[@]} " -gt 0 ]]; then
12911332 echo " ... $NAME "
@@ -1303,12 +1344,12 @@ buildUniversal()
13031344 fi
13041345
13051346 ARCH_FILES=()
1306- if [ -f " arm64/libboost_ $NAME .a " ] ; then
1307- ARCH_FILES+=(" arm64 /libboost_$NAME .a" )
1308- fi
1309- if [ -f " x86_64/libboost_ $NAME .a " ] ; then
1310- ARCH_FILES+=(" x86_64 /libboost_$NAME .a" )
1311- fi
1347+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1348+ ARCH_FILES+=(" appletvos/ $ARCH /libboost_$NAME .a" )
1349+ done
1350+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1351+ ARCH_FILES+=(" appletvsimulator/ $ARCH /libboost_$NAME .a" )
1352+ done
13121353 if [[ " ${# ARCH_FILES[@]} " -gt 0 ]]; then
13131354 echo " ... $NAME "
13141355 $TVOS_DEV_CMD lipo -create " ${ARCH_FILES[@]} " -o " universal/libboost_$NAME .a" || abort " Lipo $NAME failed"
@@ -1398,6 +1439,20 @@ buildXCFramework()
13981439 # archs / plaforms.
13991440 HEADERS_PATH=" "
14001441 if [[ -n $BUILD_IOS ]]; then
1442+ echo " Re-lipo iOS Device libs"
1443+ ARCH_FILES=()
1444+ for ARCH in " ${IOS_ARCHS[@]} " ; do
1445+ ARCH_FILES+=(" $IOS_BUILD_DIR /iphoneos/$ARCH /libboost.a" )
1446+ done
1447+ $IOS_DEV_CMD lipo -create " ${ARCH_FILES[@]} " -o " $IOS_BUILD_DIR /iphoneos/libboost.a" || abort " iOS Device Lipo failed"
1448+
1449+ echo " Re-lipo iOS Simulator libs"
1450+ ARCH_FILES=()
1451+ for ARCH in " ${IOS_SIM_ARCHS[@]} " ; do
1452+ ARCH_FILES+=(" $IOS_BUILD_DIR /iphonesimulator/$ARCH /libboost.a" )
1453+ done
1454+ $IOS_DEV_CMD lipo -create " ${ARCH_FILES[@]} " -o " $IOS_BUILD_DIR /iphonesimulator/libboost.a" || abort " iOS Simulator Lipo failed"
1455+
14011456 for LIBPATH in " $IOS_OUTPUT_DIR " /build/* /libboost.a; do
14021457 LIB_ARGS+=(' -library' " $LIBPATH " )
14031458 SLICES_COUNT=$(( SLICES_COUNT + 1 ))
@@ -1409,6 +1464,20 @@ buildXCFramework()
14091464 fi
14101465 fi
14111466 if [[ -n $BUILD_TVOS ]]; then
1467+ echo " Re-lipo tvOS Device libs"
1468+ ARCH_FILES=()
1469+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1470+ ARCH_FILES+=(" $TVOS_BUILD_DIR /appletvos/$ARCH /libboost.a" )
1471+ done
1472+ $TVOS_DEV_CMD lipo -create " ${ARCH_FILES[@]} " -o " $TVOS_BUILD_DIR /appletvos/libboost.a" || abort " tvOS Device Lipo failed"
1473+
1474+ echo " Re-lipo tvOS Simulator libs"
1475+ ARCH_FILES=()
1476+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1477+ ARCH_FILES+=(" $TVOS_BUILD_DIR /appletvsimulator/$ARCH /libboost.a" )
1478+ done
1479+ $TVOS_DEV_CMD lipo -create " ${ARCH_FILES[@]} " -o " $TVOS_BUILD_DIR /appletvsimulator/libboost.a" || abort " tvOS Simulator Lipo failed"
1480+
14121481 for LIBPATH in " $TVOS_OUTPUT_DIR " /build/* /libboost.a; do
14131482 LIB_ARGS+=(' -library' " $LIBPATH " )
14141483 SLICES_COUNT=$(( SLICES_COUNT + 1 ))
@@ -1563,6 +1632,16 @@ for ARCH in "${IOS_SIM_ARCHS[@]}"; do
15631632 IOS_SIM_ARCH_FLAGS+=(" -arch $ARCH " )
15641633done
15651634
1635+ TVOS_ARCH_FLAGS=()
1636+ for ARCH in " ${TVOS_ARCHS[@]} " ; do
1637+ TVOS_ARCH_FLAGS+=(" -arch $ARCH " )
1638+ done
1639+
1640+ TVOS_SIM_ARCH_FLAGS=()
1641+ for ARCH in " ${TVOS_SIM_ARCHS[@]} " ; do
1642+ TVOS_SIM_ARCH_FLAGS+=(" -arch $ARCH " )
1643+ done
1644+
15661645printVar ()
15671646{
15681647 VAR_NAME=" $1 "
@@ -1620,6 +1699,7 @@ if [[ -n "$PURGE" ]]; then
16201699 rm -r boost_* .tar.bz2
16211700 rm -r build
16221701 rm -r src
1702+ rm -r dist
16231703 echo " Done"
16241704 exit 0
16251705fi
0 commit comments