2025-06-26 16:03:57 +07:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
|
|
|
|
BUILDROOT_ABS="$(realpath "$SCRIPT_DIR/../../buildroot/include" 2>/dev/null || echo "")"
|
|
|
|
|
PARSED_ARGS=()
|
|
|
|
|
|
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
|
case "$1" in
|
|
|
|
|
-isystem)
|
|
|
|
|
shift
|
|
|
|
|
ARG="$1"
|
|
|
|
|
[[ -n "$ARG" ]] && shift || break
|
|
|
|
|
ARG_ABS="$(realpath "$ARG" 2>/dev/null || echo "")"
|
|
|
|
|
if [[ -n "$ARG_ABS" && "$ARG_ABS" == "$BUILDROOT_ABS" ]]; then
|
|
|
|
|
PARSED_ARGS+=("-I$ARG")
|
|
|
|
|
else
|
|
|
|
|
PARSED_ARGS+=("-isystem" "$ARG")
|
|
|
|
|
fi
|
|
|
|
|
;;
|
|
|
|
|
-isystem*)
|
|
|
|
|
ARG="${1#-isystem}"
|
|
|
|
|
shift
|
|
|
|
|
ARG_ABS="$(realpath "$ARG" 2>/dev/null || echo "")"
|
|
|
|
|
if [[ -n "$ARG_ABS" && "$ARG_ABS" == "$BUILDROOT_ABS" ]]; then
|
|
|
|
|
PARSED_ARGS+=("-I$ARG")
|
|
|
|
|
else
|
|
|
|
|
PARSED_ARGS+=("-isystem$ARG")
|
|
|
|
|
fi
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
PARSED_ARGS+=("$1")
|
|
|
|
|
shift
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
2025-07-01 16:21:57 +07:00
|
|
|
TARGET=""
|
|
|
|
|
if [ -n "$SPC_TARGET" ]; then
|
|
|
|
|
TARGET="-target $SPC_TARGET"
|
2025-07-01 16:40:12 +07:00
|
|
|
fi
|
2025-07-01 16:21:57 +07:00
|
|
|
|
|
|
|
|
output=$(zig cc $TARGET -lstdc++ $COMPILER_EXTRA "${PARSED_ARGS[@]}" 2>&1)
|
2025-07-01 14:12:51 +07:00
|
|
|
status=$?
|
2025-06-26 16:03:57 +07:00
|
|
|
|
2025-07-01 14:12:51 +07:00
|
|
|
if [ $status -eq 0 ]; then
|
|
|
|
|
echo "$output"
|
|
|
|
|
exit 0
|
2025-06-26 16:03:57 +07:00
|
|
|
fi
|
|
|
|
|
|
2025-07-01 14:12:51 +07:00
|
|
|
if echo "$output" | grep -q "version '.*' in target triple"; then
|
2025-07-01 16:21:57 +07:00
|
|
|
echo "$output" | grep -v "version '.*' in target triple"
|
2025-07-01 14:12:51 +07:00
|
|
|
exit 0
|
2025-06-26 16:03:57 +07:00
|
|
|
else
|
2025-07-01 16:21:57 +07:00
|
|
|
exec zig cc $TARGET $COMPILER_EXTRA "${PARSED_ARGS[@]}"
|
2025-06-26 16:03:57 +07:00
|
|
|
fi
|