This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] scripts: support an empty vendor string


# HG changeset patch
# User Michael Hope <michael.hope@linaro.org>
# Date 1318994616 -46800
# Node ID 5b1330e7264a72b0b50243394469606ef0f76351
# Parent  a31d097e28cd73d07a5484129929a500b4d58efa
scripts: support an empty vendor string

For Linux and other targets, config.sub defaults to 'unknown'
if no vendor was specified.  This patch supplies a fake vendor and
then strips it out afterwards.

This is needed to have an Ubuntu style vendorless tuple such as
arm-linux-gnueabi.  Other features like the alias and sed transform
don't cover it.

Signed-off-by: Michael Hope <michael.hope@linaro.org>

diff -r a31d097e28cd -r 5b1330e7264a scripts/functions
--- a/scripts/functions	Wed Oct 19 15:27:32 2011 +1300
+++ b/scripts/functions	Wed Oct 19 16:23:36 2011 +1300
@@ -944,6 +944,20 @@
     fi
 }
 
+# Computes the target tuple from the configuration and the supplied
+# vendor string
+CT_BuildOneTargetTuple() {
+    local vendor="${1}"
+    local target
+
+    target="${CT_TARGET_ARCH}"
+    target="${target}${vendor:+-${vendor}}"
+    target="${target}${CT_TARGET_KERNEL:+-${CT_TARGET_KERNEL}}"
+    target="${target}${CT_TARGET_SYS:+-${CT_TARGET_SYS}}"
+
+    echo "${target}"
+}
+
 # Compute the target tuple from what is provided by the user
 # Usage: CT_DoBuildTargetTuple
 # In fact this function takes the environment variables to build the target
@@ -994,10 +1008,7 @@
     CT_DoKernelTupleValues
 
     # Finish the target tuple construction
-    CT_TARGET="${CT_TARGET_ARCH}"
-    CT_TARGET="${CT_TARGET}${CT_TARGET_VENDOR:+-${CT_TARGET_VENDOR}}"
-    CT_TARGET="${CT_TARGET}${CT_TARGET_KERNEL:+-${CT_TARGET_KERNEL}}"
-    CT_TARGET="${CT_TARGET}${CT_TARGET_SYS:+-${CT_TARGET_SYS}}"
+    CT_TARGET=$(CT_BuildOneTargetTuple "${CT_TARGET_VENDOR}")
 
     # Sanity checks
     __sed_alias=""
@@ -1012,7 +1023,14 @@
     esac
 
     # Canonicalise it
-    CT_TARGET=$(CT_DoConfigSub "${CT_TARGET}")
+    if [ -n "${CT_TARGET_VENDOR}" ]; then
+        CT_TARGET=$(CT_DoConfigSub "${CT_TARGET}")
+    else
+        # Canonicalise with a fake vendor string then strip it out
+        local target=$(CT_BuildOneTargetTuple "CT_INVALID")
+        CT_TARGET=$(CT_DoConfigSub "${target}" |sed -r -s s:CT_INVALID-::)
+    fi
+
     # Prepare the target CFLAGS
     CT_ARCH_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_ARCH_ENDIAN_CFLAG}"
     CT_ARCH_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_ARCH_ARCH_CFLAG}"

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]