aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/compilers/ghc/gcc-clang-wrapper.sh
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/compilers/ghc/gcc-clang-wrapper.sh')
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/development/compilers/ghc/gcc-clang-wrapper.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/compilers/ghc/gcc-clang-wrapper.sh b/infra/libkookie/nixpkgs/pkgs/development/compilers/ghc/gcc-clang-wrapper.sh
new file mode 100755
index 000000000000..45af982c2973
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/compilers/ghc/gcc-clang-wrapper.sh
@@ -0,0 +1,46 @@
+#!@shell@
+
+inPreprocessorMode () {
+ hasE=0
+ hasU=0
+ hasT=0
+ for arg in "$@"
+ do
+ if [ 'x-E' = "x$arg" ]; then hasE=1; fi
+ if [ 'x-undef' = "x$arg" ]; then hasU=1; fi
+ if [ 'x-traditional' = "x$arg" ]; then hasT=1; fi
+ done
+ [ "$hasE$hasU$hasT" = '111' ]
+}
+
+extraClangArgs="-Wno-invalid-pp-token -Wno-unicode -Wno-trigraphs"
+
+adjustPreprocessorLanguage () {
+ newArgs=''
+ while [ $# -gt 0 ]
+ do
+ newArgs="$newArgs $1"
+ if [ "$1" = '-x' ]
+ then
+ shift
+ if [ $# -gt 0 ]
+ then
+ if [ "$1" = 'c' ]
+ then
+ newArgs="$newArgs assembler-with-cpp"
+ else
+ newArgs="$newArgs $1"
+ fi
+ fi
+ fi
+ shift
+ done
+ echo $newArgs
+}
+
+if inPreprocessorMode "$@"
+then
+ exec clang $extraClangArgs `adjustPreprocessorLanguage "$@"`
+else
+ exec clang $extraClangArgs "${@/-nodefaultlibs/}"
+fi