Message ID | 20240503015820.76394-1-jhubbard@nvidia.com |
---|---|
State | Accepted |
Commit | 019baf635eb6ffe8d6c1343f81788f02a7e0ed98 |
Headers | show |
Series | selftests/binderfs: use the Makefile's rules, not Make's implicit rules | expand |
On Thu, May 02, 2024 at 06:58:20PM -0700, John Hubbard wrote: > First of all, in order to build with clang at all, one must first apply > Valentin Obst's build fix for LLVM [1]. Once that is done, then when > building with clang, via: > > make LLVM=1 -C tools/testing/selftests > > ...the following error occurs: > > clang: error: cannot specify -o when generating multiple output files > > This is because clang, unlike gcc, won't accept invocations of this > form: > > clang file1.c header2.h > > While trying to fix this, I noticed that: > > a) selftests/lib.mk already avoids the problem, and > > b) The binderfs Makefile indavertently bypasses the selftests/lib.mk > build system, and quitely uses Make's implicit build rules for .c files > instead. > > The Makefile attempts to set up both a dependency and a source file, > neither of which was needed, because lib.mk is able to automatically > handle both. This line: > > binderfs_test: binderfs_test.c > > ...causes Make's implicit rules to run, which builds binderfs_test > without ever looking at lib.mk. > > Fix this by simply deleting the "binderfs_test:" Makefile target and > letting lib.mk handle it instead. > > [1] https://lore.kernel.org/all/20240329-selftests-libmk-llvm-rfc-v1-1-2f9ed7d1c49f@valentinobst.de/ > > Fixes: 6e29225af902 ("binderfs: port tests to test harness infrastructure") > Cc: Christian Brauner <brauner@kernel.org> > Signed-off-by: John Hubbard <jhubbard@nvidia.com> > --- Reviewed-by: Christian Brauner <brauner@kernel.org>
On 5/3/24 03:10, Christian Brauner wrote: > On Thu, May 02, 2024 at 06:58:20PM -0700, John Hubbard wrote: >> First of all, in order to build with clang at all, one must first apply >> Valentin Obst's build fix for LLVM [1]. Once that is done, then when >> building with clang, via: >> >> make LLVM=1 -C tools/testing/selftests >> >> ...the following error occurs: >> >> clang: error: cannot specify -o when generating multiple output files >> >> This is because clang, unlike gcc, won't accept invocations of this >> form: >> >> clang file1.c header2.h >> >> While trying to fix this, I noticed that: >> >> a) selftests/lib.mk already avoids the problem, and >> >> b) The binderfs Makefile indavertently bypasses the selftests/lib.mk >> build system, and quitely uses Make's implicit build rules for .c files >> instead. >> >> The Makefile attempts to set up both a dependency and a source file, >> neither of which was needed, because lib.mk is able to automatically >> handle both. This line: >> >> binderfs_test: binderfs_test.c >> >> ...causes Make's implicit rules to run, which builds binderfs_test >> without ever looking at lib.mk. >> >> Fix this by simply deleting the "binderfs_test:" Makefile target and >> letting lib.mk handle it instead. >> >> [1] https://lore.kernel.org/all/20240329-selftests-libmk-llvm-rfc-v1-1-2f9ed7d1c49f@valentinobst.de/ >> >> Fixes: 6e29225af902 ("binderfs: port tests to test harness infrastructure") >> Cc: Christian Brauner <brauner@kernel.org> >> Signed-off-by: John Hubbard <jhubbard@nvidia.com> >> --- > > Reviewed-by: Christian Brauner <brauner@kernel.org> > Thank you. Applied to linunx-kselftest next for Linux 6.10-rc1 thanks, -- Shuah
diff --git a/tools/testing/selftests/filesystems/binderfs/Makefile b/tools/testing/selftests/filesystems/binderfs/Makefile index c2f7cef919c0..eb4c3b411934 100644 --- a/tools/testing/selftests/filesystems/binderfs/Makefile +++ b/tools/testing/selftests/filesystems/binderfs/Makefile @@ -3,6 +3,4 @@ CFLAGS += $(KHDR_INCLUDES) -pthread TEST_GEN_PROGS := binderfs_test -binderfs_test: binderfs_test.c ../../kselftest.h ../../kselftest_harness.h - include ../../lib.mk
First of all, in order to build with clang at all, one must first apply Valentin Obst's build fix for LLVM [1]. Once that is done, then when building with clang, via: make LLVM=1 -C tools/testing/selftests ...the following error occurs: clang: error: cannot specify -o when generating multiple output files This is because clang, unlike gcc, won't accept invocations of this form: clang file1.c header2.h While trying to fix this, I noticed that: a) selftests/lib.mk already avoids the problem, and b) The binderfs Makefile indavertently bypasses the selftests/lib.mk build system, and quitely uses Make's implicit build rules for .c files instead. The Makefile attempts to set up both a dependency and a source file, neither of which was needed, because lib.mk is able to automatically handle both. This line: binderfs_test: binderfs_test.c ...causes Make's implicit rules to run, which builds binderfs_test without ever looking at lib.mk. Fix this by simply deleting the "binderfs_test:" Makefile target and letting lib.mk handle it instead. [1] https://lore.kernel.org/all/20240329-selftests-libmk-llvm-rfc-v1-1-2f9ed7d1c49f@valentinobst.de/ Fixes: 6e29225af902 ("binderfs: port tests to test harness infrastructure") Cc: Christian Brauner <brauner@kernel.org> Signed-off-by: John Hubbard <jhubbard@nvidia.com> --- tools/testing/selftests/filesystems/binderfs/Makefile | 2 -- 1 file changed, 2 deletions(-) base-commit: f03359bca01bf4372cf2c118cd9a987a5951b1c8 prerequisite-patch-id: b901ece2a5b78503e2fb5480f20e304d36a0ea27