gcc 4.3.3: backport -print-sysroot for libtool
authorMichael Smith <msmith@cbnco.com>
Thu, 21 Oct 2010 20:51:58 +0000 (16:51 -0400)
committerMichael Smith <msmith@cbnco.com>
Fri, 22 Oct 2010 13:08:17 +0000 (09:08 -0400)
libtoolized configure scripts need this in order to autodetect sysroot
path when --with-sysroot is passed.

Signed-off-by: Michael Smith <msmith@cbnco.com>
Acked-by: Khem Raj <raj.khem@gmail.com>
recipes/gcc/gcc-4.3.3.inc
recipes/gcc/gcc-4.3.3/gcc-4.3-backport-print-sysroot.patch [new file with mode: 0644]

index 7bee4af..7239f82 100644 (file)
@@ -8,7 +8,7 @@ LICENSE = "GPLv3"
 DEPENDS = "mpfr gmp"
 NATIVEDEPS = "mpfr-native gmp-native"
 
-INC_PR = "r18"
+INC_PR = "r19"
 
 SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=archive \
        file://fedora/gcc43-c++-builtin-redecl.patch;striplevel=0 \
@@ -65,6 +65,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2;name=archive \
         file://arm-gcc-objective.patch \
        file://Makefile.in.patch \
        file://Makefile.in.parallel.patch \
+       file://gcc-4.3-backport-print-sysroot.patch \
 "
 
 SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
diff --git a/recipes/gcc/gcc-4.3.3/gcc-4.3-backport-print-sysroot.patch b/recipes/gcc/gcc-4.3.3/gcc-4.3-backport-print-sysroot.patch
new file mode 100644 (file)
index 0000000..c44d050
--- /dev/null
@@ -0,0 +1,69 @@
+Backport "gcc -print-sysroot" from 4.4.x, required by some tools
+that auto-detect sysroot (e.g. libtool configured with --with-sysroot).
+
+Source: http://gcc.gnu.org/viewcvs/trunk/gcc/gcc.c?r1=137548&r2=137584&view=patch
+
+--- trunk/gcc/gcc.c    2008/07/07 00:48:55     137548
++++ trunk/gcc/gcc.c    2008/07/07 18:20:06     137584
+@@ -155,6 +155,8 @@
+ static int print_multi_directory;
++static int print_sysroot;
++
+ /* Flag saying to print the relative path we'd use to
+    find OS libraries given the current compiler flags.  */
+@@ -1162,6 +1164,7 @@
+    {"--print-multi-directory", "-print-multi-directory", 0},
+    {"--print-multi-os-directory", "-print-multi-os-directory", 0},
+    {"--print-prog-name", "-print-prog-name=", "aj"},
++   {"--print-sysroot", "-print-sysroot", 0},
+    {"--print-sysroot-headers-suffix", "-print-sysroot-headers-suffix", 0},
+    {"--profile", "-p", 0},
+    {"--profile-blocks", "-a", 0},
+@@ -3244,6 +3247,7 @@
+   -print-multi-lib         Display the mapping between command line options and\n\
+                            multiple library search directories\n"), stdout);
+   fputs (_("  -print-multi-os-directory Display the relative path to OS libraries\n"), stdout);
++  fputs (_("  -print-sysroot           Display the target libraries directory\n"), stdout);
+   fputs (_("  -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n"), stdout);
+   fputs (_("  -Wa,<options>            Pass comma-separated <options> on to the assembler\n"), stdout);
+   fputs (_("  -Wp,<options>            Pass comma-separated <options> on to the preprocessor\n"), stdout);
+@@ -3686,6 +3690,8 @@
+       print_multi_lib = 1;
+       else if (! strcmp (argv[i], "-print-multi-directory"))
+       print_multi_directory = 1;
++      else if (! strcmp (argv[i], "-print-sysroot"))
++      print_sysroot = 1;
+       else if (! strcmp (argv[i], "-print-multi-os-directory"))
+       print_multi_os_directory = 1;
+       else if (! strcmp (argv[i], "-print-sysroot-headers-suffix"))
+@@ -4126,6 +4132,8 @@
+       ;
+       else if (! strcmp (argv[i], "-print-multi-directory"))
+       ;
++      else if (! strcmp (argv[i], "-print-sysroot"))
++      ;
+       else if (! strcmp (argv[i], "-print-multi-os-directory"))
+       ;
+       else if (! strcmp (argv[i], "-print-sysroot-headers-suffix"))
+@@ -6529,6 +6537,18 @@
+       return (0);
+     }
++  if (print_sysroot)
++    {
++      if (target_system_root)
++      {
++          if (target_sysroot_suffix)
++          printf ("%s%s\n", target_system_root, target_sysroot_suffix);
++          else
++          printf ("%s\n", target_system_root);
++      }
++      return (0);
++    }
++
+   if (print_multi_os_directory)
+     {
+       if (multilib_os_dir == NULL)