#!/bin/sh set -e cd /p2pool CHECKOUT_REF=${P2POOL_CHECKOUT:-$2} if [ -z "$CHECKOUT_REF" ]; then echo "No checkout ref provided. Pass a version/tag as argument 2 or set P2POOL_CHECKOUT." exit 1 fi if ! git rev-parse --verify --quiet "$CHECKOUT_REF^{commit}" >/dev/null; then echo "Requested ref '$CHECKOUT_REF' is not present in the build context, falling back to HEAD." CHECKOUT_REF=HEAD fi echo "Checking out ${CHECKOUT_REF} (version label $2)" git checkout --detach "$CHECKOUT_REF" git -c submodule.external/src/grpc.update=none submodule update --recursive --jobs $(nproc) export TZ=UTC0 BUILD_TIMESTAMP=$(git show --no-patch --format=%ct "$CHECKOUT_REF") CURRENT_DATE=$(date -u -d @$BUILD_TIMESTAMP +"%Y-%m-%d") CURRENT_TIME=$(date -u -d @$BUILD_TIMESTAMP +"%H:%M:%S") TOUCH_DATE=$(date -u -d @$BUILD_TIMESTAMP +"%Y%m%d%H%M.%S") flags_size="" flags_datetime="-D__DATE__=\"\\\"$CURRENT_DATE\\\"\" -D__TIME__=\"\\\"$CURRENT_TIME\\\"\" -Wno-builtin-macro-redefined" flags_libs="-Os -flto -w $flags_size $flags_datetime" flags_p2pool="$flags_size $flags_datetime" detect_darwin_triple() { arch="$1" if [ -n "${APPLE_DARWIN_TRIPLE:-}" ]; then printf '%s\n' "$APPLE_DARWIN_TRIPLE" return 0 fi best="" best_version=-1 for bin in /usr/local/bin/${arch}-apple-darwin*-clang; do [ -e "$bin" ] || continue base=$(basename "$bin") prefix=${base%-clang} version=${prefix##*-darwin} case "$version" in ''|*[!0-9]*) continue ;; esac if [ "$version" -gt "$best_version" ]; then best="$prefix" best_version="$version" fi done if [ -n "$best" ]; then printf '%s\n' "$best" return 0 fi return 1 } darwin_triple="$(detect_darwin_triple x86_64 || true)" if [ -z "$darwin_triple" ]; then echo "macOS cross toolchain binaries not found in PATH" >&2 exit 1 fi export APPLE_DARWIN_TRIPLE="$darwin_triple" clang_bin="$(command -v "${darwin_triple}-clang" || true)" clangxx_bin="$(command -v "${darwin_triple}-clang++" || true)" clangas_bin="$(command -v "${darwin_triple}-as" || true)" install_name_tool_bin="$(command -v "${darwin_triple}-install_name_tool" || true)" if [ -z "$install_name_tool_bin" ]; then install_name_tool_bin="$(command -v "${darwin_triple}-install-name-tool" || true)" fi if [ -z "$install_name_tool_bin" ]; then install_name_tool_bin="$(command -v llvm-install-name-tool || true)" fi if [ -z "$clang_bin" ] || [ -z "$clangxx_bin" ] || [ -z "$clangas_bin" ]; then echo "macOS cross toolchain binaries not found in PATH (prefix ${darwin_triple})" >&2 exit 1 fi if [ -z "$install_name_tool_bin" ]; then install_name_tool_bin="$(dirname "$clang_bin")/${darwin_triple}-install_name_tool" fi if [ ! -x "$install_name_tool_bin" ]; then echo "macOS install_name_tool not found (looked for ${darwin_triple}-install_name_tool / install-name-tool)" >&2 exit 1 fi find_macos_sdk() { if [ -n "${SDKROOT:-}" ] && [ -d "${SDKROOT:-}" ]; then echo "$SDKROOT" return 0 fi for base in /usr/local/target/SDK /usr/local/osxcross/target/SDK /osxcross/target/SDK; do if [ -d "$base" ]; then for candidate in "$base"/MacOSX*.sdk; do if [ -d "$candidate" ]; then echo "$candidate" return 0 fi done fi done find /usr/local -maxdepth 4 -name 'MacOSX*.sdk' -type d 2>/dev/null | head -n 1 } sdk_sysroot="$(find_macos_sdk)" if [ -z "$sdk_sysroot" ]; then echo "Unable to locate macOS SDK sysroot. Set SDKROOT to the SDK path." >&2 exit 1 fi export SDKROOT="$sdk_sysroot" cmake_osx_args="-DCMAKE_OSX_SYSROOT=$sdk_sysroot -DCMAKE_SYSROOT=$sdk_sysroot -DCMAKE_SYSTEM_FRAMEWORK_PATH=$sdk_sysroot/System/Library/Frameworks" cmake_osx_args="$cmake_osx_args -DCMAKE_INSTALL_NAME_TOOL=$install_name_tool_bin" wrap_compiler() { real_bin="$1" wrapper_path="$2" cat > "$wrapper_path" <