cc
#! /nix/store/4cq7zlsqbs3l2lf7bb3vr03xxf0v2czz-bash-4.4-p12/bin/bash set -eu -o pipefail +o posix shopt -s nullglob if (( "${NIX_DEBUG:-0}" >= 7 )); then set -x fi path_backup="$PATH" # That @-vars are substituted separately from bash evaluation makes # shellcheck think this, and others like it, are useless conditionals. # shellcheck disable=SC2157 if [[ -n "/nix/store/dpi4c08jkfqbpsp2y8fd1wx9pjfciza6-coreutils-8.29" && -n "/nix/store/dbc3rk5f2hgcxvwlns3xmbr253987dcr-gnugrep-3.1" ]]; then PATH="/nix/store/dpi4c08jkfqbpsp2y8fd1wx9pjfciza6-coreutils-8.29/bin:/nix/store/dbc3rk5f2hgcxvwlns3xmbr253987dcr-gnugrep-3.1/bin" fi source /nix/store/hdbr6240s17l7slgljd5n0ylpl0kjb4s-clang-wrapper-5.0.1/nix-support/utils.sh # Flirting with a layer violation here. if [ -z "${NIX_BINTOOLS_WRAPPER_x86_64_apple_darwin_FLAGS_SET:-}" ]; then source /nix/store/wxylzk7s2wk0ggldclcsp4b7dm018lj9-cctools-binutils-darwin-wrapper/nix-support/add-flags.sh fi # Put this one second so libc ldflags take priority. if [ -z "${NIX_CC_WRAPPER_x86_64_apple_darwin_FLAGS_SET:-}" ]; then source /nix/store/hdbr6240s17l7slgljd5n0ylpl0kjb4s-clang-wrapper-5.0.1/nix-support/add-flags.sh fi # Parse command line options and set several variables. # For instance, figure out if linker flags should be passed. # GCC prints annoying warnings when they are not needed. dontLink=0 nonFlagArgs=0 # shellcheck disable=SC2193 [[ "/nix/store/2vk76kbkb0n1fqwwnppml0qb98j13h1k-clang-5.0.1/bin/clang" = *++ ]] && isCpp=1 || isCpp=0 cppInclude=1 expandResponseParams "$@" declare -i n=0 nParams=${#params[@]} while (( "$n" < "$nParams" )); do p=${params[n]} p2=${params[n+1]:-} # handle `p` being last one if [ "$p" = -c ]; then dontLink=1 elif [ "$p" = -S ]; then dontLink=1 elif [ "$p" = -E ]; then dontLink=1 elif [ "$p" = -E ]; then dontLink=1 elif [ "$p" = -M ]; then dontLink=1 elif [ "$p" = -MM ]; then dontLink=1 elif [[ "$p" = -x && "$p2" = *-header ]]; then dontLink=1 elif [[ "$p" = -x && "$p2" = c++* && "$isCpp" = 0 ]]; then isCpp=1 elif [ "$p" = -nostdlib ]; then isCpp=-1 elif [ "$p" = -nostdinc ]; then cppInclude=0 elif [ "$p" = -nostdinc++ ]; then cppInclude=0 elif [[ "$p" != -?* ]]; then # A dash alone signifies standard input; it is not a flag nonFlagArgs=1 fi n+=1 done # If we pass a flag like -Wl, then gcc will call the linker unless it # can figure out that it has to do something else (e.g., because of a # "-c" flag). So if no non-flag arguments are given, don't pass any # linker flags. This catches cases like "gcc" (should just print # "gcc: no input files") and "gcc -v" (should print the version). if [ "$nonFlagArgs" = 0 ]; then dontLink=1 fi # Optionally filter out paths not refering to the store. if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "$NIX_STORE" ]]; then rest=() nParams=${#params[@]} declare -i n=0 while (( "$n" < "$nParams" )); do p=${params[n]} p2=${params[n+1]:-} # handle `p` being last one if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then skip "${p:2}" elif [ "$p" = -L ] && badPath "$p2"; then n+=1; skip "$p2" elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then skip "${p:2}" elif [ "$p" = -I ] && badPath "$p2"; then n+=1; skip "$p2" elif [ "$p" = -isystem ] && badPath "$p2"; then n+=1; skip "$p2" else rest+=("$p") fi n+=1 done # Old bash empty array hack params=(${rest+"${rest[@]}"}) fi # Clear march/mtune=native -- they bring impurity. if [ "$NIX_x86_64_apple_darwin_ENFORCE_NO_NATIVE" = 1 ]; then rest=() temp="" # Old bash empty array hack for p in ${params+"${params[@]}"}; do if [[ "$p" = -m*=native ]]; then skip "$p" else # printf "rest %q\n" ${rest+"${rest[@]}"} >&2 if [[ $temp == *"$p@"* ]]; then # printf "\n into skip :$p" >&2 # skip "$p" rest+=("$p") else rest+=("$p") temp+="$p@ \n" # printf "\n into add : $p" >&2 # printf "\n temp value : $temp" >&2 fi fi done temp="" # Old bash empty array hack params=(${rest+"${rest[@]}"}) fi if [[ "$isCpp" = 1 ]]; then if [[ "$cppInclude" = 1 ]]; then NIX_x86_64_apple_darwin_CFLAGS_COMPILE+=" ${NIX_x86_64_apple_darwin_CXXSTDLIB_COMPILE-}" fi NIX_x86_64_apple_darwin_CFLAGS_LINK+=" $NIX_x86_64_apple_darwin_CXXSTDLIB_LINK" fi source /nix/store/hdbr6240s17l7slgljd5n0ylpl0kjb4s-clang-wrapper-5.0.1/nix-support/add-hardening.sh # Add the flags for the C compiler proper. extraAfter=($NIX_x86_64_apple_darwin_CFLAGS_COMPILE "${hardeningCFlags[@]}") extraBefore=() if [ "$dontLink" != 1 ]; then # Add the flags that should only be passed to the compiler when # linking. extraAfter+=($NIX_x86_64_apple_darwin_CFLAGS_LINK) # Add the flags that should be passed to the linker (and prevent # `ld-wrapper' from adding NIX_x86_64_apple_darwin_LDFLAGS again). for i in $NIX_x86_64_apple_darwin_LDFLAGS_BEFORE; do extraBefore+=("-Wl,$i") done temp="" for i in $NIX_x86_64_apple_darwin_LDFLAGS; do if [ "${i:0:3}" = -L/ ]; then if [[ $temp == *"$i@"* ]]; then skip "$i" else extraAfter+=("$i") temp+="$i@ \n" fi # extraAfter+=("$i") else extraAfter+=("-Wl,$i") fi done export NIX_x86_64_apple_darwin_LDFLAGS_SET=1 fi # As a very special hack, if the arguments are just `-v', then don't # add anything. This is to prevent `gcc -v' (which normally prints # out the version number and returns exit code 0) from printing out # `No input files specified' and returning exit code 1. if [ "$*" = -v ]; then extraAfter=() extraBefore=() fi # Optionally print debug info. if (( "${NIX_DEBUG:-0}" >= 1 )); then # Old bash workaround, see ld-wrapper for explanation. echo "extra flags before to /nix/store/2vk76kbkb0n1fqwwnppml0qb98j13h1k-clang-5.0.1/bin/clang:" >&2 printf " %q\n" ${extraBefore+"${extraBefore[@]}"} >&2 echo "original flags to /nix/store/2vk76kbkb0n1fqwwnppml0qb98j13h1k-clang-5.0.1/bin/clang:" >&2 printf " %q\n" ${params+"${params[@]}"} >&2 echo "extra flags after to /nix/store/2vk76kbkb0n1fqwwnppml0qb98j13h1k-clang-5.0.1/bin/clang:" >&2 printf " %q\n" ${extraAfter+"${extraAfter[@]}"} >&2 fi PATH="$path_backup" # Old bash workaround, see above. exec /nix/store/2vk76kbkb0n1fqwwnppml0qb98j13h1k-clang-5.0.1/bin/clang \ ${extraBefore+"${extraBefore[@]}"} \ ${params+"${params[@]}"} \ ${extraAfter+"${extraAfter[@]}"}
如果我的文章对你有帮助,就点一下推荐吧.(*^__^*)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步