On Thu, Mar 05, 2020 at 09:41:34AM -0700, Shuah Khan wrote:
On 3/4/20 7:20 PM, Kees Cook wrote:
Instead of the TEST_CUSTOM_PROGS+all dance, you can just add an explicit
dependency, with the final seccomp/Makefile looking like this:
# SPDX-License-Identifier: GPL-2.0
CFLAGS += -Wl,-no-as-needed -Wall
LDFLAGS += -lpthread
TEST_GEN_PROGS := seccomp_bpf seccomp_benchmark
TEST_CUSTOM_PROGS is for differentiating test programs that
can't use lib.mk generic rules. It is appropriate to use
for seccomp_bpf
I don't follow? This suggested Makefile works for me (i.e. it can use
the lib.mk generic rules since CFLAGS and LDFLAGS can be customized
first, and it just adds an additional dependency).
include ../lib.mk
# Additional dependencies
$(OUTPUT)/seccomp_bpf: ../kselftest_harness.h
BTW, I see a lot of other targets that use kselftest_harness.h appear to
be missing this Makefile dependency, but that's a different problem. :)
(Though this fails in the same way as above when run from the top-level
directory.)
I didn't see this because I have been the same directory I used
for relocated cross-build kernel. :(
Thanks for testing this. I know the problem here. all is a dependency
for install step and $(OUTPUT) is referencing the objdir before it
gets created. It is a Makefile/lib.mk problem to fix.
I will do a separate patch for this. This will show up in any test
that is using $(OUTPUT) to relocate objects mainly the ones that
require custom build rule like seeccomp.
Okay, cool. It looked to me like it lost track of the top level source
directory (i.e. "make: entering $output" ... "can't find
../other/files")