|
66 | 66 | chmod +x "$wrapper_dir/$tool" |
67 | 67 | done |
68 | 68 |
|
| 69 | +for tool in ar ranlib; do |
| 70 | + cat >"$wrapper_dir/$tool" <<EOF |
| 71 | +#!/usr/bin/env bash |
| 72 | +set -euo pipefail |
| 73 | +
|
| 74 | +exec "$zig" "$tool" "\$@" |
| 75 | +EOF |
| 76 | + chmod +x "$wrapper_dir/$tool" |
| 77 | +done |
| 78 | + |
69 | 79 | processor=${cargo_target%%-*} |
70 | 80 | toolchain_file="$wrapper_dir/toolchain.cmake" |
71 | 81 | cat >"$toolchain_file" <<EOF |
72 | 82 | set(CMAKE_SYSTEM_NAME Linux) |
73 | 83 | set(CMAKE_SYSTEM_PROCESSOR "$processor") |
74 | 84 | set(CMAKE_C_COMPILER "$wrapper_dir/cc") |
75 | 85 | set(CMAKE_CXX_COMPILER "$wrapper_dir/c++") |
| 86 | +set(CMAKE_AR "$wrapper_dir/ar") |
| 87 | +set(CMAKE_RANLIB "$wrapper_dir/ranlib") |
76 | 88 | set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) |
77 | 89 | EOF |
78 | 90 |
|
79 | 91 | is_stale_z3_build_dir() { |
80 | | - local build_dir=$1 |
| 92 | + local z3_build_dir=$1 |
| 93 | + local cmake_build_dir="$z3_build_dir/out/build" |
| 94 | + |
| 95 | + if [[ ! -f "$cmake_build_dir/CMakeCache.txt" ]]; then |
| 96 | + return 0 |
| 97 | + fi |
| 98 | + |
| 99 | + if ! grep -q "CMAKE_AR:FILEPATH=$wrapper_dir/ar" "$cmake_build_dir/CMakeCache.txt" 2>/dev/null; then |
| 100 | + return 0 |
| 101 | + fi |
| 102 | + if ! grep -q "CMAKE_RANLIB:FILEPATH=$wrapper_dir/ranlib" "$cmake_build_dir/CMakeCache.txt" 2>/dev/null; then |
| 103 | + return 0 |
| 104 | + fi |
81 | 105 |
|
82 | 106 | grep -R -q -E \ |
83 | 107 | 'cargo-zigbuild|zigc(c|xx)-.*unknown-linux-gnu\.[0-9]+\.[0-9]+' \ |
84 | | - "$build_dir/CMakeCache.txt" "$build_dir/CMakeFiles" 2>/dev/null |
| 108 | + "$cmake_build_dir/CMakeCache.txt" "$cmake_build_dir/CMakeFiles" 2>/dev/null |
| 109 | +} |
| 110 | + |
| 111 | +clean_z3_cargo_artifacts() { |
| 112 | + local profile_dir=$1 |
| 113 | + |
| 114 | + rm -rf "$profile_dir"/build/z3-sys-* |
| 115 | + rm -rf "$profile_dir"/.fingerprint/z3-sys-* "$profile_dir"/.fingerprint/z3-* |
| 116 | + rm -f "$profile_dir"/deps/libz3_sys-* "$profile_dir"/deps/z3_sys-* |
| 117 | + rm -f "$profile_dir"/deps/libz3-* "$profile_dir"/deps/z3-* |
85 | 118 | } |
86 | 119 |
|
87 | 120 | for profile in release debug; do |
88 | 121 | z3_build_root="target/$bare_cargo_target/$profile/build" |
89 | 122 | if [[ -d $z3_build_root ]]; then |
90 | 123 | while IFS= read -r z3_build_dir; do |
91 | 124 | if is_stale_z3_build_dir "$z3_build_dir"; then |
92 | | - echo "Removing stale z3-sys CMake cache: $z3_build_dir" >&2 |
93 | | - rm -rf "$z3_build_dir" |
| 125 | + echo "Removing stale z3-sys cross-build artifacts under target/$bare_cargo_target/$profile" >&2 |
| 126 | + clean_z3_cargo_artifacts "target/$bare_cargo_target/$profile" |
| 127 | + break |
94 | 128 | fi |
95 | | - done < <(find "$z3_build_root" -mindepth 3 -maxdepth 3 -type d -path "*/z3-sys-*/out/build") |
| 129 | + done < <(find "$z3_build_root" -mindepth 1 -maxdepth 1 -type d -name "z3-sys-*") |
96 | 130 | fi |
97 | 131 | done |
98 | 132 |
|
|
0 commit comments