In a sub-directory source files may be conditionally built using a Makefile.objs line such as
crypto-obj-$(CONFIG_CTHULHU) = foo.o It is also possible to add custom linker flags for when this foo.o is later linked into a binary foo.o-libs = -lcthulhu When the unqualfied 'foo.o' filename matches the name of an object in another directory, however, it appears the linker flags leak out and affect the linking of the foo.o from the other directory. This patch demos the bug by adding a crypto/piix.o file. It should have no effect because CONFIG_CTHULHU is not defined, however, the existence of hw/pci-host/piix.o and hw/ide/piix.o in fact causes '-lcthulhu' to be added to the link line twice, causing build failure: $ make LINK x86_64-softmmu/qemu-system-x86_64 /usr/bin/ld: cannot find -lcthuhlu /usr/bin/ld: cannot find -lcthuhlu collect2: error: ld returned 1 exit status make[1]: *** [Makefile:193: qemu-system-x86_64] Error 1 make: *** [Makefile:482: subdir-x86_64-softmmu] Error 2 Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> --- crypto/Makefile.objs | 4 ++++ crypto/piix.c | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 crypto/piix.c diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs index 2b99e08062..73b4548f12 100644 --- a/crypto/Makefile.objs +++ b/crypto/Makefile.objs @@ -38,3 +38,7 @@ crypto-obj-y += block-luks.o crypto-aes-obj-y = aes.o stub-obj-y += pbkdf-stub.o + + +crypto-obj-$(CONFIG_CTHUHLU) += piix.o +piix.o-libs = -lcthuhlu diff --git a/crypto/piix.c b/crypto/piix.c new file mode 100644 index 0000000000..367683f7bb --- /dev/null +++ b/crypto/piix.c @@ -0,0 +1,2 @@ + +random garbage as this ".c" file will never be built -- 2.17.0