diff options
Diffstat (limited to 'pkgs/build-support/gcc-wrapper/gcc-wrapper.sh')
-rw-r--r-- | pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh new file mode 100644 index 0000000000000..59f38086f3250 --- /dev/null +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -0,0 +1,74 @@ +#! /bin/sh + +if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then + . "$NIX_GCC_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GLIBC_FLAGS_SET"; then + NIX_CFLAGS_COMPILE="@cflagsCompile@ $NIX_CFLAGS_COMPILE" + NIX_CFLAGS_LINK="@cflagsLink@ $NIX_CFLAGS_LINK" + NIX_LDFLAGS="@ldflags@ $NIX_LDFLAGS" +fi + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +if test "$*" = "-v"; then + dontLink=1 +else + for i in "$@"; do + if test "$i" = "-c"; then + dontLink=1 + elif test "$i" = "-S"; then + dontLink=1 + elif test "$i" = "-E"; then + dontLink=1 + elif test "$i" = "-E"; then + dontLink=1 + elif test "$i" = "-M"; then + dontLink=1 + elif test "$i" = "-MM"; then + dontLink=1 + fi + done +fi + +# Add the flags for the C compiler proper. +extra=($NIX_CFLAGS_COMPILE) + +if test "$dontLink" != "1"; then + + # Add the flags that should only be passed to the compiler when + # linking. + extra=(${extra[@]} $NIX_CFLAGS_LINK) + + # Add the flags that should be passed to the linker (and prevent + # `ld-wrapper' from adding NIX_LDFLAGS again). + for i in $NIX_LDFLAGS; do + extra=(${extra[@]} "-Wl,$i") + done + export NIX_LDFLAGS_SET=1 + + if test "$NIX_STRIP_DEBUG" = "1"; then + # Add executable-stripping flags. + extra=(${extra[@]} $NIX_CFLAGS_STRIP) + fi +fi + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gcc@:" >&2 + for i in "$@"; do + echo " $i" >&2 + done + echo "extra flags to @gcc@:" >&2 + for i in ${extra[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then + . "$NIX_GCC_WRAPPER_EXEC_HOOK" +fi + +exec @gcc@ "$@" ${extra[@]} |