Message ID | 9fc8b5395321abbfcaf5d78477a9a7cd350b08e4.camel@infradead.org (mailing list archive) |
---|---|
State | Accepted |
Commit | fc6543bb55d4077c44e577c321bbf158446c8000 |
Headers | show |
Series | KVM: selftests: add -MP to CFLAGS | expand |
From: David Woodhouse > Sent: 28 October 2023 20:35 > > Using -MD without -MP causes build failures when a header file is deleted > or moved. With -MP, the compiler will emit phony targets for the header > files it lists as dependencies, and the Makefiles won't refuse to attempt > to rebuild a C unit which no longer includes the deleted header. Won't a phony target stop a header being built if there is an actual rule to build it? I usually add: %.h: echo "Ignoring stale dependency for $@" Which only applies if there isn't an explicit rule. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
On Sun, 2023-10-29 at 21:13 +0000, David Laight wrote: > From: David Woodhouse > > Sent: 28 October 2023 20:35 > > > > Using -MD without -MP causes build failures when a header file is deleted > > or moved. With -MP, the compiler will emit phony targets for the header > > files it lists as dependencies, and the Makefiles won't refuse to attempt > > to rebuild a C unit which no longer includes the deleted header. > > Won't a phony target stop a header being built if there is > an actual rule to build it? It probably would have taken you about the same time to find the answer for yourself, as it took to write that email. Why don't you try it?
From: David Woodhouse > Sent: 30 October 2023 09:46 > > On Sun, 2023-10-29 at 21:13 +0000, David Laight wrote: > > From: David Woodhouse > > > Sent: 28 October 2023 20:35 > > > > > > Using -MD without -MP causes build failures when a header file is deleted > > > or moved. With -MP, the compiler will emit phony targets for the header > > > files it lists as dependencies, and the Makefiles won't refuse to attempt > > > to rebuild a C unit which no longer includes the deleted header. > > > > Won't a phony target stop a header being built if there is > > an actual rule to build it? > > It probably would have taken you about the same time to find the answer > for yourself, as it took to write that email. Why don't you try it? I was sure that just adding foo.h: would generate a 'no rules to build' error. Maybe that was BSD make or SYS-V make. But calling the 'phony' is probably wrong. PHONY has a very specific meaning to make - and these aren't PHONY. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
On Mon, 2023-10-30 at 10:08 +0000, David Laight wrote: > From: David Woodhouse > > Sent: 30 October 2023 09:46 > > > > On Sun, 2023-10-29 at 21:13 +0000, David Laight wrote: > > > From: David Woodhouse > > > > Sent: 28 October 2023 20:35 > > > > > > > > Using -MD without -MP causes build failures when a header file is deleted > > > > or moved. With -MP, the compiler will emit phony targets for the header > > > > files it lists as dependencies, and the Makefiles won't refuse to attempt > > > > to rebuild a C unit which no longer includes the deleted header. > > > > > > Won't a phony target stop a header being built if there is > > > an actual rule to build it? > > > > It probably would have taken you about the same time to find the answer > > for yourself, as it took to write that email. Why don't you try it? > > I was sure that just adding > > foo.h: > > would generate a 'no rules to build' error. > Maybe that was BSD make or SYS-V make. > > But calling the 'phony' is probably wrong. > PHONY has a very specific meaning to make - and these aren't PHONY. I recommend filing a bug against the GCC documentation then. https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#index-MP
On Sat, 28 Oct 2023 20:34:53 +0100, David Woodhouse wrote: > Using -MD without -MP causes build failures when a header file is deleted > or moved. With -MP, the compiler will emit phony targets for the header > files it lists as dependencies, and the Makefiles won't refuse to attempt > to rebuild a C unit which no longer includes the deleted header. > > Applied to kvm-x86 selftests, thanks! [1/1] KVM: selftests: add -MP to CFLAGS https://github.com/kvm-x86/linux/commit/fc6543bb55d4 -- https://github.com/kvm-x86/linux/tree/next
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile index a3bb36fb3cfc..20ea549da570 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -211,7 +211,7 @@ else LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include endif CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \ - -Wno-gnu-variable-sized-type-not-at-end -MD\ + -Wno-gnu-variable-sized-type-not-at-end -MD -MP \ -fno-builtin-memcmp -fno-builtin-memcpy -fno-builtin-memset \ -fno-builtin-strnlen \ -fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \