freebsd-dev/usr.bin/clang
Jessica Clarke c8edd05426 clang: Support building with GCC and DEBUG_FILES disabled
If MK_DEBUG_FILES=no then the Clang link rule has clang as .TARGET,
rather than clang.full, causing the implicit ${CFLAGS.${.TARGET:T}} to
be CFLAGS.clang, and thus pull in flags intended for when your compiler
is Clang, not when linking Clang itself. This doesn't matter if your
compiler is in fact Clang, but it breaks using GCC as, for example,
bsd.sys.mk adds -Qunused-arguments to CFLAGS.clang. This is seen when
trying to build a bootstrap toolchain on Linux where GCC is the system
compiler.

Thus, introduce a new internal NO_TARGET_FLAGS variable that is set by
Clang to disable the addition of these implicit flags. This is a bigger
hammer than necessary, as flags for .o files would be safe, but that is
not needed for Clang.

Note that the same problem does not arise for LDFLAGS when building LLD
with BFD, since our build produces a program called ld.lld, not plain
lld (unlike upstream, where ld.lld is a symlink to lld so they can
support multiple different flavours in one binary).

Suggested by:	sjg
Fixes:		31ba4ce889 ("Allow bootstrapping llvm-tblgen on macOS and Linux")
MFC after:	1 week
Reviewed by:	dim, imp, emaste
Differential Revision:	https://reviews.freebsd.org/D31532
2021-08-24 15:04:25 +01:00
..
bugpoint Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
clang clang: Support building with GCC and DEBUG_FILES disabled 2021-08-24 15:04:25 +01:00
clang-format Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
clang-tblgen Merge llvm-project main llvmorg-12-init-17869-g8e464dd76bef 2021-06-13 21:37:19 +02:00
llc Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
lld Allow bootstrapping llvm-tblgen on macOS and Linux 2021-08-02 14:36:03 +01:00
lldb Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
lldb-server Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
lldb-tblgen Adjust libllvmminimal and tblgen Makefiles so all the tblgen executables 2020-01-25 16:46:39 +00:00
lli Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-ar Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-as Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-bcanalyzer Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-cov Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-cxxdump Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
llvm-cxxfilt Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-diff Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-dis Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-dwarfdump Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-dwp Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 2020-06-28 07:43:43 +00:00
llvm-extract Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-link Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-lto Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
llvm-lto2 Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
llvm-mc Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
llvm-mca Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-modextract Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
llvm-nm Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-objcopy Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-objdump Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-pdbutil Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-profdata Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-rtdyld Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
llvm-size Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-strings Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-symbolizer Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-tblgen Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
llvm-xray Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
opt Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
clang.prog.mk Allow bootstrapping llvm-tblgen on macOS and Linux 2021-08-02 14:36:03 +01:00
llvm.prog.mk Allow bootstrapping llvm-tblgen on macOS and Linux 2021-08-02 14:36:03 +01:00
Makefile Merge llvm-project 12.0.0 release 2021-06-13 22:01:15 +02:00
Makefile.inc clang: use -mxgot for 32-bit mips 2019-10-02 17:15:38 +00:00