Decide automatically whether to use GCC or Clang.
[mdw-cross] / src / cross.in
index ddfd71e..38d3136 100644 (file)
@@ -41,4 +41,28 @@ case :$PATH: in
   *) PATH=$CROSSDIR/tools:$PATH ;;
 esac
 
+case ${CROSS_NATIVE_P-nil} in
+  t) gcc=gcc clang=clang ;;
+  nil) gcc=$CROSS_ARCH-gcc clang=${CROSS_clang_TOOL-clang} ;;
+esac
+if type >/dev/null 2>&1 "$gcc"; then found_gcc=t; else found_gcc=nil; fi
+if type >/dev/null 2>&1 "$clang"; then found_clang=t; else found_clang=nil; fi
+case ${CROSS_COMPILER-guess},$found_gcc,$found_clang in
+  guess,t,* | prefer-gcc,t,* | gcc,t,* | prefer-clang,t,nil)
+    CROSS_COMPILER=gcc ;;
+  guess,nil,t | prefer-clang,*,t | clang,*,t | prefer-gcc,nil,t)
+    CROSS_COMPILER=clang ;;
+  guess,* | prefer-gcc,* | prefer-clang,*)
+    echo 2>&1 "${0##*/}: couldn't find C compiler \`$gcc' or \`$clang'"
+    exit 2
+    ;;
+  gcc,*) echo 2>&1 "${0##*/}: couldn't find C compiler \`$gcc'"; exit 2 ;;
+  clang,*) echo 2>&1 "${0##*/}: couldn't find C compiler \`$clang'"; exit 2 ;;
+  *)
+    echo 2>&1 "${0##*/}: unrecognized preferred compiler \`$CROSS_COMPILER'"
+    exit 2
+    ;;
+esac
+export CROSS_COMPILER
+
 exec "$@"