Detect toolchain based on gcc -dumpmachine
authorPhilip Jägenstedt <philipj@opera.com>
Mon, 7 Jun 2010 04:12:14 +0000 (06:12 +0200)
committerJohn Koleszar <jkoleszar@google.com>
Thu, 10 Jun 2010 14:20:12 +0000 (10:20 -0400)
Using uname fails e.g. on a 64-bit machine with a 32-bit toolchain.
The following gcc -dumpmachine strings have been verified:
 * 32-bit Linux gives i486-linux-gnu
 * 64-bit Linux gives x86_64-linux-gnu
 * Mac OS X 10.5 gives i686-apple-darwin9
 * MinGW gives mingw32

*darwin8* and *bsd* can safely be assumed to be correct, but *cygwin*
is a guess.

Change-Id: I6bef2ab5e97cbd3410aa66b0c4f84d2231884b05

build/make/configure.sh

index a70a84e..28ed21c 100755 (executable)
@@ -497,10 +497,10 @@ setup_gnu_toolchain() {
 
 process_common_toolchain() {
     if [ -z "$toolchain" ]; then
-        uname="$(uname -a)"
+       gcctarget="$(gcc -dumpmachine 2> /dev/null)"
 
         # detect tgt_isa
-        case "$uname" in
+        case "$gcctarget" in
             *x86_64*)
                 tgt_isa=x86_64
                 ;;
@@ -510,19 +510,19 @@ process_common_toolchain() {
         esac
 
         # detect tgt_os
-        case "$uname" in
-            *Darwin\ Kernel\ Version\ 8*)
+        case "$gcctarget" in
+            *darwin8*)
                 tgt_isa=universal
                 tgt_os=darwin8
                 ;;
-            *Darwin\ Kernel\ Version\ 9*)
+            *darwin9*)
                 tgt_isa=universal
                 tgt_os=darwin9
                 ;;
-            *Msys*|*Cygwin*)
+            *msys*|*cygwin*)
                 tgt_os=win32
                 ;;
-            *Linux*|*BSD*)
+            *linux*|*bsd*)
                 tgt_os=linux
                 ;;
         esac