quickjs-tart

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

build-ios.sh (2709B)


      1 #!/bin/bash
      2 set -eu
      3 
      4 if [ -z ${2+x} ]; then
      5   echo "usage:   $0 <SDK> <ABI>"
      6   echo "example: $0 iphoneos arm64"
      7   echo "example: $0 iphonesimulator arm64"
      8   echo "example: $0 m arm64"
      9   exit 1
     10 fi
     11 
     12 SDK=$1
     13 ABI=$2
     14 
     15 case $ABI in
     16 arm64)
     17   ARCH="arm64"
     18   CPU_FAMILY=aarch64
     19   CPU=armv8
     20   ENDIAN=little
     21   ;;
     22 x86_64)
     23   ARCH="x86_64"
     24   CPU_FAMILY=x86_64
     25   CPU=x86_64
     26   ENDIAN=little
     27   ;;
     28 *)
     29    echo unknown ABI
     30    exit 1
     31    ;;
     32 esac
     33 
     34 case $SDK in
     35 iphoneos)
     36   MIN_OS_VERSION=${MIN_SDK_VERSION:-15.0}
     37   TARGET_TRIPLE=$ARCH-apple-ios${MIN_OS_VERSION}
     38   SDK_NAME="iPhoneOS"
     39   SYSTEM='ios'
     40   ;;
     41 iphonesimulator)
     42   MIN_OS_VERSION=${MIN_SDK_VERSION:-15.0}
     43   TARGET_TRIPLE=$ARCH-apple-ios${MIN_OS_VERSION}-simulator
     44   SDK_NAME="iPhoneSimulator"
     45   SYSTEM='ios'
     46   ;;
     47 macosx)
     48   MIN_OS_VERSION=${MIN_SDK_VERSION:-11.0}
     49   TARGET_TRIPLE=$ARCH-macosx${MIN_OS_VERSION}
     50   SDK_NAME="MacOSX"
     51   SYSTEM='darwin'
     52   ;;
     53 *)
     54   echo unknown SDK
     55   exit 1
     56   ;;
     57 esac
     58 
     59 PLATFORM_PATH="$(xcrun --sdk ${SDK} --show-sdk-platform-path)"
     60 SDK_VERSION="$(xcrun --sdk ${SDK} --show-sdk-version)"
     61 SDK_ROOT="${PLATFORM_PATH}/Developer/SDKs/${SDK_NAME}${SDK_VERSION}.sdk"
     62 SYS_ROOT="${SDK_ROOT}"
     63 LIB_PATH="${SYS_ROOT}/usr/lib"
     64 INC_PATH="${SYS_ROOT}/usr/include"
     65 
     66 CROSSFILE=cross/ios-$SDK-$ABI.cross.txt
     67 MIN_OS_FLAG=-m${SDK}-version-min=$MIN_OS_VERSION
     68 
     69 cat > $CROSSFILE <<EOF
     70 [binaries]
     71 c = ['xcrun', '--sdk', '$SYS_ROOT', 'clang']
     72 cpp = ['xcrun', '--sdk', '$SYS_ROOT', 'clang++']
     73 objc = ['xcrun', '--sdk', '$SYS_ROOT', 'clang']
     74 objcpp = ['xcrun', '--sdk', '$SYS_ROOT', 'clang++']
     75 ld = ['clang']
     76 ar = 'ar'
     77 strip = 'strip'
     78 
     79 [built-in options]
     80 c_args = ['$MIN_OS_FLAG', '-target', '$TARGET_TRIPLE', '-arch', '$ARCH', '-isysroot', '$SYS_ROOT']
     81 cpp_args = ['$MIN_OS_FLAG', '-target', '$TARGET_TRIPLE', '-arch', '$ARCH', '-isysroot', '$SYS_ROOT']
     82 c_link_args = ['$MIN_OS_FLAG', '-target', '$TARGET_TRIPLE', '-arch', '$ARCH', '-isysroot', '$SYS_ROOT']
     83 cpp_link_args = ['$MIN_OS_FLAG', '-target', '$TARGET_TRIPLE', '-arch', '$ARCH', '-isysroot', '$SYS_ROOT']
     84 objc_args = ['$MIN_OS_FLAG', '-target', '$TARGET_TRIPLE', '-arch', '$ARCH', '-isysroot', '$SYS_ROOT']
     85 objcpp_args = ['$MIN_OS_FLAG', '-target', '$TARGET_TRIPLE', '-arch', '$ARCH', '-isysroot', '$SYS_ROOT']
     86 
     87 [properties]
     88 root = '$SDK_ROOT'
     89 has_function_printf = true
     90 has_function_hfkerhisadf = false
     91 
     92 [host_machine]
     93 cpu_family = '$CPU_FAMILY'
     94 cpu = '$CPU'
     95 endian = '$ENDIAN'
     96 system = '$SYSTEM'
     97 
     98 [cmake]
     99 CMAKE_OSX_SYSROOT='${SDK}'
    100 EOF
    101 
    102 BUILD_DIR=build-ios/${SDK}-${ARCH}
    103 mkdir -p "${BUILD_DIR}"
    104 
    105 meson setup --errorlogs  \
    106   -Doptimization=3 \
    107   --includedir=${INC_PATH} \
    108   --libdir=${LIB_PATH} \
    109   --cross-file $CROSSFILE  \
    110   --build.cmake-prefix-path=${SYS_ROOT} \
    111   ${BUILD_DIR} .
    112 
    113 ninja -v -C ${BUILD_DIR}