#!/bin/bash # # Copyright (c) 2024 Martin Storsjo # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. get_dir() { target="$1" while [ -L "$target" ]; do cd "$(dirname "$target")" target="$(readlink "$(basename "$target")")" done cd "$(dirname "$target")" pwd } DIR="$(get_dir "$0")" # If changing this wrapper, change clang-scan-deps-wrapper.c accordingly. EXE="$DIR/clang-scan-deps" FLAGS=() while [ $# -gt 0 ]; do if [ -n "$got_flags" ]; then CMD_EXE="$1" FLAGS+=("$1") shift break elif [ "$1" = "--" ]; then got_flags=1 FLAGS+=("$1") else FLAGS+=("$1") fi shift done if [ -n "$CMD_EXE" ]; then CMD_BASENAME="$(basename "$CMD_EXE")" CMD_BASENAME="${CMD_BASENAME%.*}" CMD_TARGET="${CMD_BASENAME%-*}" CMD_EXE_SUFFIX="${CMD_BASENAME##*-}" if [ "$CMD_TARGET" != "$CMD_BASENAME" ]; then case $CMD_EXE_SUFFIX in clang|clang++|gcc|g++|c++|as|cc|c99|c11) IS_CLANG=1 ;; esac fi fi if [ -n "$IS_CLANG" ]; then "$EXE" "${FLAGS[@]}" -stdlib=libc++ "$@" else "$EXE" "${FLAGS[@]}" "$@" fi