diff options
author | Bryan Drewery <bdrewery@FreeBSD.org> | 2016-08-23 19:29:37 +0000 |
---|---|---|
committer | Bryan Drewery <bdrewery@FreeBSD.org> | 2016-08-23 19:29:37 +0000 |
commit | 4d611b2b2d8ef0a80823853e26868f7c6d816d74 (patch) | |
tree | d02cd4dd968a04817554b98a24fed17579d4fc4b /Makefile.libcompat | |
parent | de7b37e61892b3134a7bcf86f402af987671a575 (diff) | |
download | src-4d611b2b2d8ef0a80823853e26868f7c6d816d74.tar.gz src-4d611b2b2d8ef0a80823853e26868f7c6d816d74.zip |
Fix in-tree GCC builds after r304681.
There were a few issues.
- In-tree GCC won't have X_COMPILER_TYPE defined but will have
WANT_COMPILER_TYPE==gcc set from the SYSTEM_COMPILER logic that can
be used. Make the clang check specific to clang as well to ensure
-target doesn't leak into a GCC build.
- When using a cross-compiler GCC (with a default sysroot or arch) and also
passing --sysroot, it basically forgets all internal paths for
libraries. We've already worked around this quite a bit for
the external toolchains. Now for the in-tree bootstrap cross-compiler
GCC, also pass in the needed -B${WORLDTMP}/usr/lib to find the crt
object files, but also -isystem and -L to fix the paths. This creates
quite a spammy build log, but it is clear and still achieves the goals
and stays consistent between internal and external build flags.
Reducing the spam by using the '=' prefix feature will help and be
done later.
MFC after: 3 days
X-MFC-With: r304681
Reported by: bz
Pointyhat to: bdrewery
Sponsored by: EMC / Isilon Storage Division
Notes
Notes:
svn path=/head/; revision=304695
Diffstat (limited to 'Makefile.libcompat')
-rw-r--r-- | Makefile.libcompat | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Makefile.libcompat b/Makefile.libcompat index 9fbfa075d338..987874b15489 100644 --- a/Makefile.libcompat +++ b/Makefile.libcompat @@ -73,7 +73,8 @@ LIBCOMPATCFLAGS+= ${LIBCOMPATCPUFLAGS} \ # Clang/GCC. LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat} -.if defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc +.if ${WANT_COMPILER_TYPE} == gcc || \ + (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) # GCC requires -isystem when using a cross-compiler and --sysroot. Note that # Makefile.inc1 only applies this with an external compiler but libcompat # always does since even in-tree GCC 4.2 needs this to override the built-in |