[PATCH/RFC] libgloss: build with -nostdinc

Mike Frysinger <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
We don't want libgloss building against C library headers that happened
to be installed with the toolchain, so add -nostdinc to the build.  We
still need access to the compiler internal headers, so probe those and
include them via -isystem.  This uses a similar probing style as glibc,
which has used it for over a decade, so it should be safe & stable.

This should prevent any latent bugs due to testing with a toolchain that
is fully configured & installed already.
---
NB: tested against these targets:
aarch64-elf arc-elf arm-eabi
bfin-elf
cr16-elf cris-elf csky-elf
epiphany-elf
frv-elf
h8300-elf
i686-pc-cygwin iq2000-elf
m68k-elf microblaze-elf mips-elf mn10300-elf moxie-elf
nds32le-elf
or1k-elf
powerpc-elf
sparc-elf sparc-rtems
v850e-elf visium-elf

 libgloss/configure    | 20 ++++++++++++++++++++
 libgloss/configure.ac | 11 +++++++++++
 2 files changed, 31 insertions(+)

diff --git a/libgloss/configure b/libgloss/configure
index 08b2609062f3..6cdd4842ae9d 100755
--- a/libgloss/configure
+++ b/libgloss/configure
@@ -4998,6 +4998,26 @@ $as_echo "#define MISSING_SYSCALL_NAMES 1" >>confdefs.h
 esac
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler search settings" >&5
+$as_echo_n "checking for compiler search settings... " >&6; }
+if ${libc_cv_compiler_isystem+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    for subdir in include include-fixed; do
+    if dir=`$CC -print-file-name=$subdir`; then :
+        if test -n "$dir"; then :
+          libc_cv_compiler_isystem="$libc_cv_compiler_isystem -isystem $dir"
+
+fi
+
+fi
+  done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_isystem" >&5
+$as_echo "$libc_cv_compiler_isystem" >&6; }
+CC="$CC -nostdinc $libc_cv_compiler_isystem"
+
 host_makefile_frag_path=$host_makefile_frag
 
 
diff --git a/libgloss/configure.ac b/libgloss/configure.ac
index 486492b7bf0d..e26f295f5d00 100644
--- a/libgloss/configure.ac
+++ b/libgloss/configure.ac
@@ -323,6 +323,17 @@ AC_DEFINE_UNQUOTED(__SYMBOL_PREFIX, "$libc_cv_symbol_prefix", [symbol prefix])
 
 m4_include([libnosys/acinclude.m4])
 
+AC_CACHE_CHECK([for compiler search settings], libc_cv_compiler_isystem, [dnl
+  for subdir in include include-fixed; do
+    AS_IF([dir=`$CC -print-file-name=$subdir`], [dnl
+      AS_IF([test -n "$dir"], [dnl
+        libc_cv_compiler_isystem="$libc_cv_compiler_isystem -isystem $dir"
+      ])
+    ])
+  done
+])
+CC="$CC -nostdinc $libc_cv_compiler_isystem"
+
 dnl We have to assign the same value to other variables because autoconf
 dnl doesn't provide a mechanism to substitute a replacement keyword with
 dnl arbitrary data or pathnames.
-- 
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.