diff options
Diffstat (limited to '14.2.0/gentoo/09_all_esysroot.patch')
-rw-r--r-- | 14.2.0/gentoo/09_all_esysroot.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/14.2.0/gentoo/09_all_esysroot.patch b/14.2.0/gentoo/09_all_esysroot.patch new file mode 100644 index 0000000..8dcfd22 --- /dev/null +++ b/14.2.0/gentoo/09_all_esysroot.patch @@ -0,0 +1,67 @@ +From a2e98f3928a4bef1f9a027f8af22b019beff9600 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <chewi@gentoo.org> +Date: Sun, 4 Aug 2024 17:02:06 +0100 +Subject: [PATCH] Allow setting target sysroot with ESYSROOT env var for + cross-compilers + +The variable is ignored for native compilers. The --sysroot command line +option takes precedence. + +Signed-off-by: James Le Cuirot <chewi@gentoo.org> +--- + gcc/doc/invoke.texi | 10 ++++++++++ + gcc/gcc.cc | 10 ++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi +index f82f7d281..2f03b080d 100644 +--- a/gcc/doc/invoke.texi ++++ b/gcc/doc/invoke.texi +@@ -19027,6 +19027,10 @@ for this option. If your linker does not support this option, the + header file aspect of @option{--sysroot} still works, but the + library aspect does not. + ++On Gentoo Linux, this option can also be set for cross-compilers using the ++@env{ESYSROOT} environmnent variable. The variable is ignored for native ++compilers. The command line option takes precedence. ++ + @opindex no-sysroot-suffix + @item --no-sysroot-suffix + For some targets, a suffix is added to the root directory specified +@@ -37409,6 +37413,12 @@ using GCC also uses these directories when searching for ordinary + libraries for the @option{-l} option (but directories specified with + @option{-L} come first). + ++@vindex ESYSROOT ++@item ESYSROOT ++On Gentoo Linux, this variable sets the logical root directory for headers and ++libraries for cross-compilers. It is ignored for native compilers. The ++@option{--sysroot} option takes precedence. ++ + @vindex LANG + @cindex locale definition + @item LANG +diff --git a/gcc/gcc.cc b/gcc/gcc.cc +index 728332b81..06d8c469b 100644 +--- a/gcc/gcc.cc ++++ b/gcc/gcc.cc +@@ -5501,6 +5501,16 @@ process_command (unsigned int decoded_options_count, + "BINUTILS", PREFIX_PRIORITY_LAST, 0, 1); + free (tooldir_prefix); + ++ if (*cross_compile == '1' && !target_system_root_changed) ++ { ++ const char *esysroot = env.get("ESYSROOT"); ++ if (esysroot && esysroot[0] != '\0' && strcmp(esysroot, "/") != 0 && (!target_system_root || strcmp(esysroot, target_system_root) != 0)) ++ { ++ target_system_root = esysroot; ++ target_system_root_changed = 1; ++ } ++ } ++ + #if defined(TARGET_SYSTEM_ROOT_RELOCATABLE) && !defined(VMS) + /* If the normal TARGET_SYSTEM_ROOT is inside of $exec_prefix, + then consider it to relocate with the rest of the GCC installation +-- +2.45.2 + |