quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

apple-xcframework.sh (25390B)


      1 #! /bin/sh
      2 
      3 export PREFIX="$(pwd)/libsodium-apple"
      4 export MACOS_ARM64_PREFIX="${PREFIX}/tmp/macos-arm64"
      5 export MACOS_ARM64E_PREFIX="${PREFIX}/tmp/macos-arm64e"
      6 export MACOS_X86_64_PREFIX="${PREFIX}/tmp/macos-x86_64"
      7 export IOS32_PREFIX="${PREFIX}/tmp/ios32"
      8 export IOS32s_PREFIX="${PREFIX}/tmp/ios32s"
      9 export IOS64_PREFIX="${PREFIX}/tmp/ios64"
     10 export IOS64E_PREFIX="${PREFIX}/tmp/ios64e"
     11 export IOS_SIMULATOR_ARM64_PREFIX="${PREFIX}/tmp/ios-simulator-arm64"
     12 export IOS_SIMULATOR_ARM64E_PREFIX="${PREFIX}/tmp/ios-simulator-arm64e"
     13 export IOS_SIMULATOR_I386_PREFIX="${PREFIX}/tmp/ios-simulator-i386"
     14 export IOS_SIMULATOR_X86_64_PREFIX="${PREFIX}/tmp/ios-simulator-x86_64"
     15 export WATCHOS32_PREFIX="${PREFIX}/tmp/watchos32"
     16 export WATCHOS64_32_PREFIX="${PREFIX}/tmp/watchos64_32"
     17 export WATCHOS64_PREFIX="${PREFIX}/tmp/watchos64"
     18 export WATCHOS64E_PREFIX="${PREFIX}/tmp/watchos64e"
     19 export WATCHOS_SIMULATOR_ARM64_PREFIX="${PREFIX}/tmp/watchos-simulator-arm64"
     20 export WATCHOS_SIMULATOR_ARM64E_PREFIX="${PREFIX}/tmp/watchos-simulator-arm64e"
     21 export WATCHOS_SIMULATOR_I386_PREFIX="${PREFIX}/tmp/watchos-simulator-i386"
     22 export WATCHOS_SIMULATOR_X86_64_PREFIX="${PREFIX}/tmp/watchos-simulator-x86_64"
     23 export TVOS_PREFIX="${PREFIX}/tmp/tvos"
     24 export TVOSE_PREFIX="${PREFIX}/tmp/tvose"
     25 export TVOS_SIMULATOR_ARM64_PREFIX="${PREFIX}/tmp/tvos-simulator-arm64"
     26 export TVOS_SIMULATOR_ARM64E_PREFIX="${PREFIX}/tmp/tvos-simulator-arm644"
     27 export TVOS_SIMULATOR_X86_64_PREFIX="${PREFIX}/tmp/tvos-simulator-x86_64"
     28 export VISIONOS_PREFIX="${PREFIX}/tmp/visionos"
     29 export VISIONOSE_PREFIX="${PREFIX}/tmp/visionose"
     30 export VISIONOS_SIMULATOR_PREFIX="${PREFIX}/tmp/visionos-simulator"
     31 export VISIONOSE_SIMULATOR_PREFIX="${PREFIX}/tmp/visionose-simulator"
     32 export CATALYST_ARM64_PREFIX="${PREFIX}/tmp/catalyst-arm64"
     33 export CATALYST_ARM64E_PREFIX="${PREFIX}/tmp/catalyst-arm64e"
     34 export CATALYST_X86_64_PREFIX="${PREFIX}/tmp/catalyst-x86_64"
     35 export LOG_FILE="${PREFIX}/tmp/build_log"
     36 export XCODEDIR="$(xcode-select -p)"
     37 
     38 export MACOS_VERSION_MIN=${MACOS_VERSION_MIN-"10.10"}
     39 export IOS_VERSION_MIN=${IOS_VERSION_MIN-"9.0.0"}
     40 export IOS_SIMULATOR_VERSION_MIN=${IOS_SIMULATOR_VERSION_MIN-$IOS_VERSION_MIN}
     41 export WATCHOS_VERSION_MIN=${WATCHOS_VERSION_MIN-"4.0.0"}
     42 export WATCHOS_SIMULATOR_VERSION_MIN=${WATCHOS_SIMULATOR_VERSION_MIN-$WATCHOS_VERSION_MIN}
     43 export TVOS_VERSION_MIN=${TVOS_VERSION_MIN-"9.0.0"}
     44 export TVOS_SIMULATOR_VERSION_MIN=${TVOS_SIMULATOR_VERSION_MIN-$TVOS_VERSION_MIN}
     45 
     46 echo
     47 echo "Warnings related to headers being present but not usable are due to functions"
     48 echo "that didn't exist in the specified minimum iOS version level."
     49 echo "They can be safely ignored."
     50 echo
     51 echo "Define the LIBSODIUM_MINIMAL_BUILD environment variable to build a"
     52 echo "library without deprecated/undocumented/low-level functions."
     53 echo
     54 echo "Define the LIBSODIUM_SKIP_SIMULATORS environment variable to skip building"
     55 echo "the simulators libraries (iOS, watchOS, tvOS, visionOS simulators)."
     56 echo
     57 
     58 if [ "$LIBSODIUM_MINIMAL_BUILD" ]; then
     59   export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal"
     60 else
     61   export LIBSODIUM_ENABLE_MINIMAL_FLAG=""
     62 fi
     63 
     64 IOS32_SUPPORTED=false
     65 [ "$(echo "$IOS_VERSION_MIN" | cut -d'.' -f1)" -lt "11" ] && IOS32_SUPPORTED=true
     66 
     67 I386_SIMULATOR_SUPPORTED=false
     68 [ "$(echo "$IOS_SIMULATOR_VERSION_MIN" | cut -d'.' -f1)" -lt "11" ] && I386_SIMULATOR_SUPPORTED=true
     69 
     70 VISIONOS_SUPPORTED=false
     71 [ -d "${XCODEDIR}/Platforms/XROS.platform" ] && VISIONOS_SUPPORTED=true
     72 
     73 NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)
     74 PROCESSORS=${NPROCESSORS:-3}
     75 
     76 swift_module_map() {
     77   echo 'module Clibsodium {'
     78   echo '    header "sodium.h"'
     79   echo '    export *'
     80   echo '}'
     81 }
     82 
     83 build_macos() {
     84   export BASEDIR="${XCODEDIR}/Platforms/MacOSX.platform/Developer"
     85   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
     86 
     87   ## macOS arm64
     88   export CFLAGS="-O3 -arch arm64 -mmacosx-version-min=${MACOS_VERSION_MIN}"
     89   export LDFLAGS="-arch arm64 -mmacosx-version-min=${MACOS_VERSION_MIN}"
     90 
     91   make distclean >/dev/null 2>&1
     92   ./configure --host=aarch64-apple-darwin23 --prefix="$MACOS_ARM64_PREFIX" \
     93     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
     94   make -j${PROCESSORS} install || exit 1
     95 
     96   ## macOS arm64e
     97   export CFLAGS="-O3 -arch arm64e -mmacosx-version-min=${MACOS_VERSION_MIN}"
     98   export LDFLAGS="-arch arm64e -mmacosx-version-min=${MACOS_VERSION_MIN}"
     99 
    100   make distclean >/dev/null 2>&1
    101   ./configure --host=aarch64-apple-darwin23 --prefix="$MACOS_ARM64E_PREFIX" \
    102     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    103   make -j${PROCESSORS} install || exit 1
    104 
    105   ## macOS x86_64
    106   export CFLAGS="-O3 -arch x86_64 -mmacosx-version-min=${MACOS_VERSION_MIN}"
    107   export LDFLAGS="-arch x86_64 -mmacosx-version-min=${MACOS_VERSION_MIN}"
    108 
    109   make distclean >/dev/null 2>&1
    110   ./configure --host=x86_64-apple-darwin23 --prefix="$MACOS_X86_64_PREFIX" \
    111     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    112   make -j${PROCESSORS} install || exit 1
    113 }
    114 
    115 build_ios() {
    116   export BASEDIR="${XCODEDIR}/Platforms/iPhoneOS.platform/Developer"
    117   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    118   export SDK="${BASEDIR}/SDKs/iPhoneOS.sdk"
    119 
    120   if [ "$IOS32_SUPPORTED" = true ]; then
    121     ## 32-bit iOS
    122     export CFLAGS="-O3 -mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    123     export LDFLAGS="-mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    124 
    125     make distclean >/dev/null 2>&1
    126     ./configure --host=arm-apple-darwin23 --prefix="$IOS32_PREFIX" \
    127       ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    128     make -j${PROCESSORS} install || exit 1
    129 
    130     ## 32-bit armv7s iOS
    131     export CFLAGS="-O3 -mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    132     export LDFLAGS="-mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    133 
    134     make distclean >/dev/null 2>&1
    135     ./configure --host=arm-apple-darwin23 --prefix="$IOS32s_PREFIX" \
    136       ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    137     make -j${PROCESSORS} install || exit 1
    138   fi
    139 
    140   ## 64-bit iOS
    141   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    142   export LDFLAGS="-arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    143 
    144   make distclean >/dev/null 2>&1
    145   ./configure --host=aarch64-apple-darwin23 --prefix="$IOS64_PREFIX" \
    146     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    147   make -j${PROCESSORS} install || exit 1
    148 
    149   ## 64-bit iOS arm64e
    150   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    151   export LDFLAGS="-arch arm64e -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
    152 
    153   make distclean >/dev/null 2>&1
    154   ./configure --host=aarch64-apple-darwin23 --prefix="$IOS64E_PREFIX" \
    155     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    156   make -j${PROCESSORS} install || exit 1
    157 }
    158 
    159 build_ios_simulator() {
    160   export BASEDIR="${XCODEDIR}/Platforms/iPhoneSimulator.platform/Developer"
    161   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    162   export SDK="${BASEDIR}/SDKs/iPhoneSimulator.sdk"
    163 
    164   ## arm64 simulator
    165   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    166   export LDFLAGS="-arch arm64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    167 
    168   make distclean >/dev/null 2>&1
    169   ./configure --host=aarch64-apple-darwin23 --prefix="$IOS_SIMULATOR_ARM64_PREFIX" \
    170     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    171   make -j${PROCESSORS} install || exit 1
    172 
    173   ## arm64e simulator
    174   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    175   export LDFLAGS="-arch arm64e -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    176 
    177   make distclean >/dev/null 2>&1
    178   ./configure --host=aarch64-apple-darwin23 --prefix="$IOS_SIMULATOR_ARM64E_PREFIX" \
    179     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    180   make -j${PROCESSORS} install || exit 1
    181 
    182   if [ "$I386_SIMULATOR_SUPPORTED" = true ]; then
    183     ## i386 simulator
    184     export CFLAGS="-O3 -arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    185     export LDFLAGS="-arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    186 
    187     make distclean >/dev/null 2>&1
    188     ./configure --host=i686-apple-darwin23 --prefix="$IOS_SIMULATOR_I386_PREFIX" \
    189       ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    190     make -j${PROCESSORS} install || exit 1
    191   fi
    192 
    193   ## x86_64 simulator
    194   export CFLAGS="-O3 -arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    195   export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}"
    196 
    197   make distclean >/dev/null 2>&1
    198   ./configure --host=x86_64-apple-darwin23 --prefix="$IOS_SIMULATOR_X86_64_PREFIX" \
    199     ${LIBSODIUM_ENABLE_MINIMAL_FLAG}
    200   make -j${PROCESSORS} install || exit 1
    201 }
    202 
    203 build_watchos() {
    204   export BASEDIR="${XCODEDIR}/Platforms/WatchOS.platform/Developer"
    205   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    206   export SDK="${BASEDIR}/SDKs/WatchOS.sdk"
    207 
    208   # 32-bit watchOS
    209   export CFLAGS="-O3 -mthumb -arch armv7k -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    210   export LDFLAGS="-mthumb -arch armv7k -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    211 
    212   make distclean >/dev/null 2>&1
    213   ./configure --host=arm-apple-darwin23 --prefix="$WATCHOS32_PREFIX" \
    214     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    215   make -j${PROCESSORS} install || exit 1
    216 
    217   ## 64-bit arm64_32 watchOS
    218   export CFLAGS="-O3 -mthumb -arch arm64_32 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    219   export LDFLAGS="-mthumb -arch arm64_32 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    220 
    221   make distclean >/dev/null 2>&1
    222   ./configure --host=aarch64-apple-darwin23 --prefix="$WATCHOS64_32_PREFIX" \
    223     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    224   make -j${PROCESSORS} install || exit 1
    225 
    226   ## 64-bit arm64 watchOS
    227   export CFLAGS="-O3 -mthumb -arch arm64 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    228   export LDFLAGS="-mthumb -arch arm64 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    229 
    230   make distclean >/dev/null 2>&1
    231   ./configure --host=aarch64-apple-darwin23 --prefix="$WATCHOS64_PREFIX" \
    232     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    233   make -j${PROCESSORS} install || exit 1
    234 
    235   ## 64-bit arm64e watchOS
    236   export CFLAGS="-O3 -mthumb -arch arm64e -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    237   export LDFLAGS="-mthumb -arch arm64e -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}"
    238 
    239   make distclean >/dev/null 2>&1
    240   ./configure --host=aarch64-apple-darwin23 --prefix="$WATCHOS64E_PREFIX" \
    241     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    242   make -j${PROCESSORS} install || exit 1
    243 }
    244 
    245 build_watchos_simulator() {
    246   export BASEDIR="${XCODEDIR}/Platforms/WatchSimulator.platform/Developer"
    247   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    248   export SDK="${BASEDIR}/SDKs/WatchSimulator.sdk"
    249 
    250   ## arm64 simulator
    251   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    252   export LDFLAGS="-arch arm64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    253 
    254   make distclean >/dev/null 2>&1
    255   ./configure --host=aarch64-apple-darwin23 --prefix="$WATCHOS_SIMULATOR_ARM64_PREFIX" \
    256     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    257   make -j${PROCESSORS} install || exit 1
    258 
    259   ## arm64e simulator
    260   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    261   export LDFLAGS="-arch arm64e -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    262 
    263   make distclean >/dev/null 2>&1
    264   ./configure --host=aarch64-apple-darwin23 --prefix="$WATCHOS_SIMULATOR_ARM64E_PREFIX" \
    265     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    266   make -j${PROCESSORS} install || exit 1
    267 
    268   ## i386 simulator
    269   export CFLAGS="-O3 -arch i386 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    270   export LDFLAGS="-arch i386 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    271 
    272   make distclean >/dev/null 2>&1
    273   ./configure --host=i686-apple-darwin23 --prefix="$WATCHOS_SIMULATOR_I386_PREFIX" \
    274     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    275   make -j${PROCESSORS} install || exit 1
    276 
    277   ## x86_64 simulator
    278   export CFLAGS="-O3 -arch x86_64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    279   export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}"
    280 
    281   make distclean >/dev/null 2>&1
    282   ./configure --host=x86_64-apple-darwin23 --prefix="$WATCHOS_SIMULATOR_X86_64_PREFIX" \
    283     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    284   make -j${PROCESSORS} install || exit 1
    285 }
    286 
    287 build_tvos() {
    288   export BASEDIR="${XCODEDIR}/Platforms/AppleTVOS.platform/Developer"
    289   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    290   export SDK="${BASEDIR}/SDKs/AppleTVOS.sdk"
    291 
    292   ## 64-bit tvOS
    293   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK} -mtvos-version-min=${TVOS_VERSION_MIN}"
    294   export LDFLAGS="-arch arm64 -isysroot ${SDK} -mtvos-version-min=${TVOS_VERSION_MIN}"
    295 
    296   make distclean >/dev/null 2>&1
    297   ./configure --host=aarch64-apple-darwin23 --prefix="$TVOS_PREFIX" \
    298     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    299   make -j${PROCESSORS} install || exit 1
    300 
    301   ## 64-bit tvOS
    302   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK} -mtvos-version-min=${TVOS_VERSION_MIN}"
    303   export LDFLAGS="-arch arm64e -isysroot ${SDK} -mtvos-version-min=${TVOS_VERSION_MIN}"
    304 
    305   make distclean >/dev/null 2>&1
    306   ./configure --host=aarch64-apple-darwin23 --prefix="$TVOSE_PREFIX" \
    307     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    308   make -j${PROCESSORS} install || exit 1
    309 }
    310 
    311 build_tvos_simulator() {
    312   export BASEDIR="${XCODEDIR}/Platforms/AppleTVSimulator.platform/Developer"
    313   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    314   export SDK="${BASEDIR}/SDKs/AppleTVSimulator.sdk"
    315 
    316   ## arm64 simulator
    317   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}"
    318   export LDFLAGS="-arch arm64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}"
    319 
    320   make distclean >/dev/null 2>&1
    321   ./configure --host=aarch64-apple-darwin23 --prefix="$TVOS_SIMULATOR_ARM64_PREFIX" \
    322     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    323   make -j${PROCESSORS} install || exit 1
    324 
    325   ## arm64e simulator
    326   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}"
    327   export LDFLAGS="-arch arm64e -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}"
    328 
    329   make distclean >/dev/null 2>&1
    330   ./configure --host=aarch64-apple-darwin23 --prefix="$TVOS_SIMULATOR_ARM64E_PREFIX" \
    331     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    332   make -j${PROCESSORS} install || exit 1
    333 
    334   ## x86_64 simulator
    335   export CFLAGS="-O3 -arch x86_64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}"
    336   export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}"
    337 
    338   make distclean >/dev/null 2>&1
    339   ./configure --host=x86_64-apple-darwin23 --prefix="$TVOS_SIMULATOR_X86_64_PREFIX" \
    340     ${LIBSODIUM_ENABLE_MINIMAL_FLAG}
    341   make -j${PROCESSORS} install || exit 1
    342 }
    343 
    344 build_visionos() {
    345   export BASEDIR="${XCODEDIR}/Platforms/XROS.platform/Developer"
    346   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    347   export SDK="${BASEDIR}/SDKs/XROS.sdk"
    348 
    349   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK}"
    350   export LDFLAGS="-arch arm64 -isysroot ${SDK}"
    351 
    352   make distclean >/dev/null 2>&1
    353   ./configure --host=aarch64-apple-darwin23 --prefix="$VISIONOS_PREFIX" \
    354     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    355   make -j${PROCESSORS} install || exit 1
    356 
    357   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK}"
    358   export LDFLAGS="-arch arm64e -isysroot ${SDK}"
    359 
    360   make distclean >/dev/null 2>&1
    361   ./configure --host=aarch64-apple-darwin23 --prefix="$VISIONOSE_PREFIX" \
    362     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    363   make -j${PROCESSORS} install || exit 1
    364 }
    365 
    366 build_visionos_simulator() {
    367   export BASEDIR="${XCODEDIR}/Platforms/XRSimulator.platform/Developer"
    368   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    369   export SDK="${BASEDIR}/SDKs/XRSimulator.sdk"
    370 
    371   export CFLAGS="-O3 -arch arm64 -isysroot ${SDK}"
    372   export LDFLAGS="-arch arm64 -isysroot ${SDK}"
    373 
    374   make distclean >/dev/null 2>&1
    375   ./configure --host=aarch64-apple-darwin23 --prefix="$VISIONOS_SIMULATOR_PREFIX" \
    376     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    377   make -j${PROCESSORS} install || exit 1
    378 
    379   export CFLAGS="-O3 -arch arm64e -isysroot ${SDK}"
    380   export LDFLAGS="-arch arm64e -isysroot ${SDK}"
    381 
    382   make distclean >/dev/null 2>&1
    383   ./configure --host=aarch64-apple-darwin23 --prefix="$VISIONOSE_SIMULATOR_PREFIX" \
    384     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    385   make -j${PROCESSORS} install || exit 1
    386 }
    387 
    388 build_catalyst() {
    389   export BASEDIR="${XCODEDIR}/Platforms/MacOSX.platform/Developer"
    390   export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
    391   export SDK="${BASEDIR}/SDKs/MacOSX.sdk"
    392 
    393   ## arm64 catalyst
    394   export CFLAGS="-O3 -arch arm64 -target arm64-apple-ios13.1-macabi -isysroot ${SDK}"
    395   export LDFLAGS="-arch arm64 -target arm64-apple-ios13.1-macabi -isysroot ${SDK}"
    396 
    397   make distclean >/dev/null 2>&1
    398   ./configure --host=aarch64-apple-ios --prefix="$CATALYST_ARM64_PREFIX" \
    399     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    400   make -j${PROCESSORS} install || exit 1
    401 
    402   ## arm64e catalyst
    403   export CFLAGS="-O3 -arch arm64e -target arm64e-apple-ios13.1-macabi -isysroot ${SDK}"
    404   export LDFLAGS="-arch arm64e -target arm64e-apple-ios13.1-macabi -isysroot ${SDK}"
    405 
    406   make distclean >/dev/null 2>&1
    407   ./configure --host=aarch64-apple-ios --prefix="$CATALYST_ARM64E_PREFIX" \
    408     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    409   make -j${PROCESSORS} install || exit 1
    410 
    411   ## x86_64 catalyst
    412   export CFLAGS="-O3 -arch x86_64 -target x86_64-apple-ios13.1-macabi -isysroot ${SDK}"
    413   export LDFLAGS="-arch x86_64 -target x86_64-apple-ios13.1-macabi -isysroot ${SDK}"
    414 
    415   make distclean >/dev/null 2>&1
    416   ./configure --host=x86_64-apple-ios --prefix="$CATALYST_X86_64_PREFIX" \
    417     ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1
    418   make -j${PROCESSORS} install || exit 1
    419 }
    420 
    421 mkdir -p "${PREFIX}/tmp"
    422 
    423 echo "Building for macOS..."
    424 build_macos >"$LOG_FILE" 2>&1 || exit 1
    425 echo "Building for iOS..."
    426 build_ios >"$LOG_FILE" 2>&1 || exit 1
    427 echo "Building for watchOS..."
    428 build_watchos >"$LOG_FILE" 2>&1 || exit 1
    429 echo "Building for tvOS..."
    430 build_tvos >"$LOG_FILE" 2>&1 || exit 1
    431 echo "Building for Catalyst..."
    432 build_catalyst >"$LOG_FILE" 2>&1 || exit 1
    433 if [ "$VISIONOS_SUPPORTED" = true ]; then
    434   echo "Building for visionOS..."
    435   build_visionos >"$LOG_FILE" 2>&1 || exit 1
    436 fi
    437 
    438 if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
    439   echo "Building for the iOS simulator..."
    440   build_ios_simulator >"$LOG_FILE" 2>&1 || exit 1
    441   echo "Building for the watchOS simulator..."
    442   build_watchos_simulator >"$LOG_FILE" 2>&1 || exit 1
    443   echo "Building for the tvOS simulator..."
    444   build_tvos_simulator >"$LOG_FILE" 2>&1 || exit 1
    445   if [ "$VISIONOS_SUPPORTED" = true ]; then
    446     echo "Building for the visionOS simulator..."
    447     build_visionos_simulator >"$LOG_FILE" 2>&1 || exit 1
    448   fi
    449 else
    450   echo "[Skipping the simulators]"
    451 fi
    452 
    453 echo "Adding the Clibsodium module map for Swift..."
    454 
    455 find "$PREFIX" -name "include" -type d -print | while read -r f; do
    456   swift_module_map >"${f}/module.modulemap"
    457 done
    458 
    459 echo "Bundling macOS targets..."
    460 
    461 mkdir -p "${PREFIX}/macos/lib"
    462 cp -a "${MACOS_X86_64_PREFIX}/include" "${PREFIX}/macos/"
    463 for ext in a dylib; do
    464   lipo -create \
    465     "${MACOS_ARM64_PREFIX}/lib/libsodium.${ext}" \
    466     "${MACOS_ARM64E_PREFIX}/lib/libsodium.${ext}" \
    467     "${MACOS_X86_64_PREFIX}/lib/libsodium.${ext}" \
    468     -output "${PREFIX}/macos/lib/libsodium.${ext}"
    469 done
    470 
    471 echo "Bundling iOS targets..."
    472 
    473 mkdir -p "${PREFIX}/ios/lib"
    474 cp -a "${IOS64_PREFIX}/include" "${PREFIX}/ios/"
    475 for ext in a dylib; do
    476   LIBRARY_PATHS="$IOS64_PREFIX/lib/libsodium.${ext}"
    477   LIBRARY_PATHS="$LIBRARY_PATHS $IOS64E_PREFIX/lib/libsodium.${ext}"
    478   if [ "$IOS32_SUPPORTED" = true ]; then
    479     LIBRARY_PATHS="$LIBRARY_PATHS $IOS32_PREFIX/lib/libsodium.${ext}"
    480     LIBRARY_PATHS="$LIBRARY_PATHS $IOS32s_PREFIX/lib/libsodium.${ext}"
    481   fi
    482   lipo -create \
    483     ${LIBRARY_PATHS} \
    484     -output "$PREFIX/ios/lib/libsodium.${ext}"
    485 done
    486 
    487 echo "Bundling watchOS targets..."
    488 
    489 mkdir -p "${PREFIX}/watchos/lib"
    490 cp -a "${WATCHOS64_32_PREFIX}/include" "${PREFIX}/watchos/"
    491 for ext in a dylib; do
    492   lipo -create \
    493     "${WATCHOS32_PREFIX}/lib/libsodium.${ext}" \
    494     "${WATCHOS64_32_PREFIX}/lib/libsodium.${ext}" \
    495     "${WATCHOS64_PREFIX}/lib/libsodium.${ext}" \
    496     "${WATCHOS64E_PREFIX}/lib/libsodium.${ext}" \
    497     -output "${PREFIX}/watchos/lib/libsodium.${ext}"
    498 done
    499 
    500 echo "Bundling tvOS targets..."
    501 
    502 mkdir -p "${PREFIX}/tvos/lib"
    503 cp -a "${TVOS_PREFIX}/include" "${PREFIX}/tvos/"
    504 for ext in a dylib; do
    505   lipo -create \
    506     "$TVOS_PREFIX/lib/libsodium.${ext}" \
    507     "$TVOSE_PREFIX/lib/libsodium.${ext}" \
    508     -output "$PREFIX/tvos/lib/libsodium.${ext}"
    509 done
    510 
    511 if [ "$VISIONOS_SUPPORTED" = true ]; then
    512   echo "Bundling visionOS targets..."
    513 
    514   mkdir -p "${PREFIX}/visionos/lib"
    515   cp -a "${VISIONOS_PREFIX}/include" "${PREFIX}/visionos/"
    516   for ext in a dylib; do
    517     lipo -create \
    518       "$VISIONOS_PREFIX/lib/libsodium.${ext}" \
    519       "$VISIONOSE_PREFIX/lib/libsodium.${ext}" \
    520       -output "$PREFIX/visionos/lib/libsodium.${ext}"
    521   done
    522 fi
    523 
    524 echo "Bundling Catalyst targets..."
    525 
    526 mkdir -p "${PREFIX}/catalyst/lib"
    527 cp -a "${CATALYST_X86_64_PREFIX}/include" "${PREFIX}/catalyst/"
    528 for ext in a dylib; do
    529   if [ ! -f "${CATALYST_X86_64_PREFIX}/lib/libsodium.${ext}" ]; then
    530     continue
    531   fi
    532   lipo -create \
    533     "${CATALYST_ARM64_PREFIX}/lib/libsodium.${ext}" \
    534     "${CATALYST_ARM64E_PREFIX}/lib/libsodium.${ext}" \
    535     "${CATALYST_X86_64_PREFIX}/lib/libsodium.${ext}" \
    536     -output "${PREFIX}/catalyst/lib/libsodium.${ext}"
    537 done
    538 
    539 if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
    540   echo "Bundling iOS simulators..."
    541 
    542   mkdir -p "${PREFIX}/ios-simulators/lib"
    543   cp -a "${IOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/ios-simulators/"
    544   for ext in a dylib; do
    545     LIBRARY_PATHS="${IOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}"
    546     LIBRARY_PATHS="$LIBRARY_PATHS ${IOS_SIMULATOR_ARM64E_PREFIX}/lib/libsodium.${ext}"
    547     LIBRARY_PATHS="$LIBRARY_PATHS ${IOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}"
    548     if [ "$I386_SIMULATOR_SUPPORTED" = true ]; then
    549       LIBRARY_PATHS="$LIBRARY_PATHS ${IOS_SIMULATOR_I386_PREFIX}/lib/libsodium.${ext}"
    550     fi
    551     lipo -create \
    552       ${LIBRARY_PATHS} \
    553       -output "${PREFIX}/ios-simulators/lib/libsodium.${ext}" || exit 1
    554   done
    555 
    556   echo "Bundling watchOS simulators..."
    557 
    558   mkdir -p "${PREFIX}/watchos-simulators/lib"
    559   cp -a "${WATCHOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/watchos-simulators/"
    560   for ext in a dylib; do
    561     lipo -create \
    562       "${WATCHOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \
    563       "${WATCHOS_SIMULATOR_ARM64E_PREFIX}/lib/libsodium.${ext}" \
    564       "${WATCHOS_SIMULATOR_I386_PREFIX}/lib/libsodium.${ext}" \
    565       "${WATCHOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \
    566       -output "${PREFIX}/watchos-simulators/lib/libsodium.${ext}"
    567   done
    568 
    569   echo "Bundling tvOS simulators..."
    570 
    571   mkdir -p "${PREFIX}/tvos-simulators/lib"
    572   cp -a "${TVOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/tvos-simulators/"
    573   for ext in a dylib; do
    574     lipo -create \
    575       "${TVOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \
    576       "${TVOS_SIMULATOR_ARM64E_PREFIX}/lib/libsodium.${ext}" \
    577       "${TVOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \
    578       -output "${PREFIX}/tvos-simulators/lib/libsodium.${ext}" || exit 1
    579   done
    580 
    581   if [ "$VISIONOS_SUPPORTED" = true ]; then
    582     echo "Bundling visionOS simulators..."
    583 
    584     mkdir -p "${PREFIX}/visionos-simulators/lib"
    585     cp -a "${VISIONOS_SIMULATOR_PREFIX}/include" "${PREFIX}/visionos-simulators/"
    586     for ext in a dylib; do
    587       lipo -create \
    588         "${VISIONOS_SIMULATOR_PREFIX}/lib/libsodium.${ext}" \
    589         "${VISIONOSE_SIMULATOR_PREFIX}/lib/libsodium.${ext}" \
    590         -output "${PREFIX}/visionos-simulators/lib/libsodium.${ext}" || exit 1
    591     done
    592   fi
    593 fi
    594 
    595 echo "Creating Clibsodium.xcframework..."
    596 
    597 rm -rf "${PREFIX}/Clibsodium.xcframework"
    598 
    599 XCFRAMEWORK_ARGS=""
    600 for f in macos ios watchos tvos visionos catalyst; do
    601   if [ "$VISIONOS_SUPPORTED" = false ] && [ "$f" = "visionos" ]; then
    602     continue
    603   fi
    604   XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -library $(readlink -f ${PREFIX}/${f}/lib/libsodium.a)"
    605   XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -headers $(readlink -f ${PREFIX}/${f}/include)"
    606 done
    607 if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then
    608   for f in ios-simulators watchos-simulators tvos-simulators visionos-simulators; do
    609     if [ "$VISIONOS_SUPPORTED" = false ] && [ "$f" = "visionos-simulators" ]; then
    610       continue
    611     fi
    612     XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -library $(readlink -f ${PREFIX}/${f}/lib/libsodium.a)"
    613     XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -headers $(readlink -f ${PREFIX}/${f}/include)"
    614   done
    615 fi
    616 xcodebuild -create-xcframework \
    617   ${XCFRAMEWORK_ARGS} \
    618   -output "${PREFIX}/Clibsodium.xcframework" >/dev/null
    619 
    620 ls -ld -- "$PREFIX"
    621 ls -l -- "$PREFIX"
    622 ls -l -- "$PREFIX/Clibsodium.xcframework"
    623 
    624 echo "Done!"
    625 
    626 # Cleanup
    627 rm -rf -- "$PREFIX/tmp"
    628 make distclean >/dev/null