Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Feb 2023 14:57:04 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: ab80f0b21fbb - main - Ensure .inc files are regenerated when llvm/clang tblgen binaries change
Message-ID:  <202302261457.31QEv4Hd041536@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=ab80f0b21fbb9c44d40e6f7a99090188f4ed2f71

commit ab80f0b21fbb9c44d40e6f7a99090188f4ed2f71
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-02-25 15:25:57 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-02-26 14:56:07 +0000

    Ensure .inc files are regenerated when llvm/clang tblgen binaries change
    
    When doing a fully incremental build (with WITHOUT_CLEAN enabled), from
    a commit before llvm 15 was merged (3264f6b88fce), to a commit after
    that, a number of .inc files were not regenerated. This could lead to
    unexpected compilation errors when these .inc files were included from
    llvm-project sources, similar to:
    
      In file included from /usr/src/contrib/llvm-project/clang/lib/CodeGen/CGBuiltin.cpp:8268:
      /usr/obj/usr/src/amd64.amd64/lib/clang/libclang/clang/Basic/arm_mve_builtin_cg.inc:279:18: error: no matching constructor for initialization of 'clang::CodeGen::Address'
        Address Val2 = Address(Val1, CharUnits::fromQuantity(2));
                       ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Work around this by making the .inc files dependent on the tblgen binary
    used for generating them. E.g., we can relatively safely assume that if
    the binary gets updated, the .inc files must also be updated. (Although
    this is not 100% optimal, the gain by complicating things even more is
    probaby not worth the effort.)
    
    MFC after:      3 days
    Reviewed by:    emaste
    Differential Revision: https://reviews.freebsd.org/D38770
---
 lib/clang/clang.pre.mk                 |  1 +
 lib/clang/headers/Makefile             |  2 ++
 lib/clang/libclang/Makefile            | 22 +++++++++++++++-------
 lib/clang/liblldb/Makefile             |  3 +++
 lib/clang/libllvm/Makefile             |  2 ++
 lib/clang/llvm.pre.mk                  |  1 +
 usr.bin/clang/lld/Makefile             |  2 ++
 usr.bin/clang/lldb-server/Makefile     |  2 ++
 usr.bin/clang/lldb/Makefile            |  2 ++
 usr.bin/clang/llvm-cxxfilt/Makefile    |  2 ++
 usr.bin/clang/llvm-dwarfutil/Makefile  |  2 ++
 usr.bin/clang/llvm-nm/Makefile         |  2 ++
 usr.bin/clang/llvm-objcopy/Makefile    |  2 ++
 usr.bin/clang/llvm-objdump/Makefile    |  2 ++
 usr.bin/clang/llvm-readobj/Makefile    |  2 ++
 usr.bin/clang/llvm-size/Makefile       |  2 ++
 usr.bin/clang/llvm-strings/Makefile    |  2 ++
 usr.bin/clang/llvm-symbolizer/Makefile |  2 ++
 18 files changed, 48 insertions(+), 7 deletions(-)

diff --git a/lib/clang/clang.pre.mk b/lib/clang/clang.pre.mk
index 520a9300e6ce..9ef401645f14 100644
--- a/lib/clang/clang.pre.mk
+++ b/lib/clang/clang.pre.mk
@@ -5,3 +5,4 @@
 CLANG_SRCS=	${LLVM_BASE}/clang
 
 CLANG_TBLGEN?=	clang-tblgen
+CLANG_TBLGEN_BIN!= which ${CLANG_TBLGEN}
diff --git a/lib/clang/headers/Makefile b/lib/clang/headers/Makefile
index 4e5a08e9fed2..df53b7dc7ea0 100644
--- a/lib/clang/headers/Makefile
+++ b/lib/clang/headers/Makefile
@@ -214,6 +214,8 @@ riscv_${hdr:H}.h: ${CLANG_SRCS}/include/clang/Basic/riscv_${hdr:H}.td
 GENINCS+=	riscv_${hdr:H}.h
 .endfor
 
+${GENINCS}: ${CLANG_TBLGEN_BIN}
+
 CLEANFILES=	${GENINCS} ${GENINCS:C/$/.d/}
 
 .include <bsd.prog.mk>
diff --git a/lib/clang/libclang/Makefile b/lib/clang/libclang/Makefile
index 7181da12a065..ac85db06ed58 100644
--- a/lib/clang/libclang/Makefile
+++ b/lib/clang/libclang/Makefile
@@ -1037,13 +1037,6 @@ clang/Basic/riscv_vector_builtin_sema.inc: \
 	    -o ${.TARGET} ${CLANG_SRCS}/include/clang/Basic/riscv_vector.td
 TGHDRS+=	clang/Basic/riscv_vector_builtin_sema.inc
 
-clang/Driver/Options.inc: ${CLANG_SRCS}/include/clang/Driver/Options.td
-	${LLVM_TBLGEN} -gen-opt-parser-defs \
-	    -I ${LLVM_SRCS}/include -I ${CLANG_SRCS}/include/clang/Driver \
-	    -d ${.TARGET:C/$/.d/} -o ${.TARGET} \
-	    ${CLANG_SRCS}/include/clang/Driver/Options.td
-TGHDRS+=	clang/Driver/Options.inc
-
 clang/Parse/AttrParserStringSwitches.inc: \
 	${CLANG_SRCS}/include/clang/Basic/Attr.td
 	${CLANG_TBLGEN} -gen-clang-attr-parser-string-switches \
@@ -1121,10 +1114,25 @@ OpenCLBuiltins.inc: ${CLANG_SRCS}/lib/Sema/OpenCLBuiltins.td
 	    ${CLANG_SRCS}/lib/Sema/OpenCLBuiltins.td
 TGHDRS+=	OpenCLBuiltins.inc
 
+${TGHDRS}: ${CLANG_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
 
+clang/Driver/Options.inc: ${CLANG_SRCS}/include/clang/Driver/Options.td
+	${LLVM_TBLGEN} -gen-opt-parser-defs \
+	    -I ${LLVM_SRCS}/include -I ${CLANG_SRCS}/include/clang/Driver \
+	    -d ${.TARGET:C/$/.d/} -o ${.TARGET} \
+	    ${CLANG_SRCS}/include/clang/Driver/Options.td
+LTGHDRS+=	clang/Driver/Options.inc
+
+${LTGHDRS}: ${LLVM_TBLGEN_BIN}
+
+DEPENDFILES+=	${LTGHDRS:C/$/.d/}
+DPSRCS+=	${LTGHDRS}
+CLEANFILES+=	${LTGHDRS} ${LTGHDRS:C/$/.d/}
+
 .include "../clang.build.mk"
 
 INTERNALLIB=
diff --git a/lib/clang/liblldb/Makefile b/lib/clang/liblldb/Makefile
index e5590ff1e536..1a1494fd2bfb 100644
--- a/lib/clang/liblldb/Makefile
+++ b/lib/clang/liblldb/Makefile
@@ -701,6 +701,7 @@ SRCS+=		Utility/XcodeSDK.cpp
 SRCS+=		Version/Version.cpp
 
 LLDB_TBLGEN?=	lldb-tblgen
+LLDB_TBLGEN_BIN!= which ${LLDB_TBLGEN}
 
 CommandOptions.inc: ${LLDB_SRCS}/source/Commands/Options.td
 	${LLDB_TBLGEN} -gen-lldb-option-defs \
@@ -728,6 +729,8 @@ ${path:T}PropertiesEnum.inc: ${LLDB_SRCS}/source/${path}Properties.td
 TGHDRS+=	${path:T}PropertiesEnum.inc
 .endfor
 
+${TGHDRS}: ${LLDB_TBLGEN_BIN}
+
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
 
diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile
index a031f0fdd706..1cfd75f509c0 100644
--- a/lib/clang/libllvm/Makefile
+++ b/lib/clang/libllvm/Makefile
@@ -2128,6 +2128,8 @@ TGHDRS+=	X86GenRegisterInfo.inc
 TGHDRS+=	X86GenSubtargetInfo.inc
 .endif # MK_LLVM_TARGET_X86
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/lib/clang/llvm.pre.mk b/lib/clang/llvm.pre.mk
index 774d7d47ea37..92124a7bf092 100644
--- a/lib/clang/llvm.pre.mk
+++ b/lib/clang/llvm.pre.mk
@@ -5,3 +5,4 @@ LLVM_BASE=	${SRCTOP}/contrib/llvm-project
 LLVM_SRCS=	${LLVM_BASE}/llvm
 
 LLVM_TBLGEN?=	llvm-tblgen
+LLVM_TBLGEN_BIN!= which ${LLVM_TBLGEN}
diff --git a/usr.bin/clang/lld/Makefile b/usr.bin/clang/lld/Makefile
index aed22a7ae847..150f74b90984 100644
--- a/usr.bin/clang/lld/Makefile
+++ b/usr.bin/clang/lld/Makefile
@@ -95,6 +95,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/lldb-server/Makefile b/usr.bin/clang/lldb-server/Makefile
index 532c2aa2047a..b11fbfbbef33 100644
--- a/usr.bin/clang/lldb-server/Makefile
+++ b/usr.bin/clang/lldb-server/Makefile
@@ -37,6 +37,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/lldb/Makefile b/usr.bin/clang/lldb/Makefile
index 0637b8844cad..b6486756d882 100644
--- a/usr.bin/clang/lldb/Makefile
+++ b/usr.bin/clang/lldb/Makefile
@@ -30,6 +30,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-cxxfilt/Makefile b/usr.bin/clang/llvm-cxxfilt/Makefile
index 0036fbe6cf8d..0ce39d66f0f5 100644
--- a/usr.bin/clang/llvm-cxxfilt/Makefile
+++ b/usr.bin/clang/llvm-cxxfilt/Makefile
@@ -21,6 +21,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-dwarfutil/Makefile b/usr.bin/clang/llvm-dwarfutil/Makefile
index a436acf0e197..6dd9bd2d5259 100644
--- a/usr.bin/clang/llvm-dwarfutil/Makefile
+++ b/usr.bin/clang/llvm-dwarfutil/Makefile
@@ -18,6 +18,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-nm/Makefile b/usr.bin/clang/llvm-nm/Makefile
index 0df48744632d..d3099e5a75be 100644
--- a/usr.bin/clang/llvm-nm/Makefile
+++ b/usr.bin/clang/llvm-nm/Makefile
@@ -19,6 +19,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-objcopy/Makefile b/usr.bin/clang/llvm-objcopy/Makefile
index 20f5f191b766..5cdbf5e32d2d 100644
--- a/usr.bin/clang/llvm-objcopy/Makefile
+++ b/usr.bin/clang/llvm-objcopy/Makefile
@@ -23,6 +23,8 @@ ${hdr}.inc: ${LLVM_BASE}/${SRCDIR}/${hdr}.td
 TGHDRS+=	${hdr}.inc
 .endfor
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-objdump/Makefile b/usr.bin/clang/llvm-objdump/Makefile
index c20bc172528f..b4286ffec623 100644
--- a/usr.bin/clang/llvm-objdump/Makefile
+++ b/usr.bin/clang/llvm-objdump/Makefile
@@ -26,6 +26,8 @@ ${hdr}.inc: ${LLVM_BASE}/${SRCDIR}/${hdr}.td
 TGHDRS+=	${hdr}.inc
 .endfor
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-readobj/Makefile b/usr.bin/clang/llvm-readobj/Makefile
index 4b547d81c583..8926eb03bdbf 100644
--- a/usr.bin/clang/llvm-readobj/Makefile
+++ b/usr.bin/clang/llvm-readobj/Makefile
@@ -30,6 +30,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-size/Makefile b/usr.bin/clang/llvm-size/Makefile
index 20bd5de61192..f39e5db6f872 100644
--- a/usr.bin/clang/llvm-size/Makefile
+++ b/usr.bin/clang/llvm-size/Makefile
@@ -19,6 +19,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-strings/Makefile b/usr.bin/clang/llvm-strings/Makefile
index 1438aa847997..253766ba084d 100644
--- a/usr.bin/clang/llvm-strings/Makefile
+++ b/usr.bin/clang/llvm-strings/Makefile
@@ -17,6 +17,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
diff --git a/usr.bin/clang/llvm-symbolizer/Makefile b/usr.bin/clang/llvm-symbolizer/Makefile
index c4677169f912..ae417356df6b 100644
--- a/usr.bin/clang/llvm-symbolizer/Makefile
+++ b/usr.bin/clang/llvm-symbolizer/Makefile
@@ -20,6 +20,8 @@ ${INCFILE}: ${TDFILE}
 	    -o ${.TARGET} ${TDFILE}
 TGHDRS+=	${INCFILE}
 
+${TGHDRS}: ${LLVM_TBLGEN_BIN}
+
 DEPENDFILES+=	${TGHDRS:C/$/.d/}
 DPSRCS+=	${TGHDRS}
 CLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202302261457.31QEv4Hd041536>