Author: jhb
Date: Wed Jun 27 18:14:33 2018
New Revision: 335717
URL: https://svnweb.freebsd.org/changeset/base/335717

Log:
  Fix GCC 4.2.1 to honor --sysroot for includes.
  
  - Change the C++ directory entries to honor --sysroot if it is set.
  - Don't define CROSS_INCLUDE_DIR for the cross compiler.  Instead, set
    TARGET_SYSTEM_ROOT to point to WORLDTMP and always define
    STANDARD_INCLUDE_DIR.
  - Change STANDARD_INCLUDE_DIR and the C++ include directories to just
    start with "/usr" always.  The compiler will prepend the sysroot when
    doing cross-builds.  GCC_INCLUDE_DIR (which contains headers that ship
    with the compiler such as intrinsincs rather than OS-supplied headers)
    remains hardcoded to look in TOOLS_PREFIX.
  
  Reviewed by:  bdrewery (older version)
  Sponsored by: DARPA / AFRL
  Differential Revision:        https://reviews.freebsd.org/D15127

Modified:
  head/contrib/gcc/cppdefault.c
  head/gnu/usr.bin/cc/Makefile.inc
  head/gnu/usr.bin/cc/cc_tools/freebsd-native.h

Modified: head/contrib/gcc/cppdefault.c
==============================================================================
--- head/contrib/gcc/cppdefault.c       Wed Jun 27 18:11:47 2018        
(r335716)
+++ head/contrib/gcc/cppdefault.c       Wed Jun 27 18:14:33 2018        
(r335717)
@@ -48,7 +48,7 @@ const struct default_include cpp_include_defaults[]
 = {
 #ifdef GPLUSPLUS_INCLUDE_DIR
     /* Pick up GNU C++ generic include files.  */
-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
+    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
 #endif
 #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
     /* Pick up GNU C++ target-dependent include files.  */
@@ -56,7 +56,7 @@ const struct default_include cpp_include_defaults[]
 #endif
 #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
     /* Pick up GNU C++ backward and deprecated include files.  */
-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
+    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
 #endif
 #ifdef LOCAL_INCLUDE_DIR
     /* /usr/local/include comes before the fixincluded header files.  */

Modified: head/gnu/usr.bin/cc/Makefile.inc
==============================================================================
--- head/gnu/usr.bin/cc/Makefile.inc    Wed Jun 27 18:11:47 2018        
(r335716)
+++ head/gnu/usr.bin/cc/Makefile.inc    Wed Jun 27 18:14:33 2018        
(r335717)
@@ -25,6 +25,7 @@ CSTD?=        gnu89
 
 .if ${TARGET_ARCH} != ${MACHINE_ARCH}
 CFLAGS+=       -DCROSS_DIRECTORY_STRUCTURE
+CFLAGS+=       -DTARGET_SYSTEM_ROOT=\"${TOOLS_PREFIX}\"
 .endif
 
 .if ${TARGET_CPUARCH} == "arm"

Modified: head/gnu/usr.bin/cc/cc_tools/freebsd-native.h
==============================================================================
--- head/gnu/usr.bin/cc/cc_tools/freebsd-native.h       Wed Jun 27 18:11:47 
2018        (r335716)
+++ head/gnu/usr.bin/cc/cc_tools/freebsd-native.h       Wed Jun 27 18:14:33 
2018        (r335717)
@@ -15,14 +15,10 @@
 #undef LOCAL_INCLUDE_DIR               /* We don't wish to support one. */
 
 /* Look for the include files in the system-defined places.  */
-#define GPLUSPLUS_INCLUDE_DIR          PREFIX"/include/c++/"GCCVER
-#define        GPLUSPLUS_BACKWARD_INCLUDE_DIR  
PREFIX"/include/c++/"GCCVER"/backward"
+#define GPLUSPLUS_INCLUDE_DIR          "/usr/include/c++/"GCCVER
+#define        GPLUSPLUS_BACKWARD_INCLUDE_DIR  
"/usr/include/c++/"GCCVER"/backward"
 #define GCC_INCLUDE_DIR                        PREFIX"/include/gcc/"GCCVER
-#ifdef CROSS_DIRECTORY_STRUCTURE
-#define CROSS_INCLUDE_DIR              PREFIX"/include"
-#else
-#define STANDARD_INCLUDE_DIR           PREFIX"/include"
-#endif
+#define STANDARD_INCLUDE_DIR           "/usr/include"
 
 /* Under FreeBSD, the normal location of the compiler back ends is the
    /usr/libexec directory.
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to