mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
kselftest/arm64: Don't pass headers to the compiler as source
[ Upstream commit a884f7970e ]
The signal Makefile rules pass all the dependencies for each executable,
including headers, to the compiler which GCC is happy enough with but
clang rejects:
clang --target=aarch64-none-linux-gnu -fintegrated-as -Wall -O2 -g -I/home/broonie/git/linux/tools/testing/selftests/ -isystem /home/broonie/git/linux/usr/include -D_GNU_SOURCE -std=gnu99 -I. test_signals.c test_signals_utils.c testcases/testcases.c signals.S testcases/fake_sigreturn_bad_magic.c test_signals.h test_signals_utils.h testcases/testcases.h -o testcases/fake_sigreturn_bad_magic
clang: error: cannot specify -o when generating multiple output files
This happens because clang gets confused about what to do with the
header files, failing to identify them as source. This is not amazing
behaviour on clang's part and should ideally be fixed but even if that
happens we'd still need a new clang release so let's instead rework the
Makefile so we use variables for the lists of header and source files,
allowing us to only pass the source files to the compiler and keep clang
happy.
As a bonus the resulting Makefile is a bit easier to read.
Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/r/20230111-arm64-kselftest-clang-v1-3-89c69d377727@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Stable-dep-of: 5225b6562b9a ("kselftest/arm64: signal: fix/refactor SVE vector length enumeration")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5fa2f2dbf0
commit
3363e9a4dd
@@ -22,6 +22,10 @@ $(TEST_GEN_PROGS): $(PROGS)
|
||||
|
||||
# Common test-unit targets to build common-layout test-cases executables
|
||||
# Needs secondary expansion to properly include the testcase c-file in pre-reqs
|
||||
COMMON_SOURCES := test_signals.c test_signals_utils.c testcases/testcases.c \
|
||||
signals.S
|
||||
COMMON_HEADERS := test_signals.h test_signals_utils.h testcases/testcases.h
|
||||
|
||||
.SECONDEXPANSION:
|
||||
$(PROGS): test_signals.c test_signals_utils.c testcases/testcases.c signals.S $$@.c test_signals.h test_signals_utils.h testcases/testcases.h
|
||||
$(CC) $(CFLAGS) $^ -o $@
|
||||
$(PROGS): $$@.c ${COMMON_SOURCES} ${COMMON_HEADERS}
|
||||
$(CC) $(CFLAGS) ${@}.c ${COMMON_SOURCES} -o $@
|
||||
|
||||
Reference in New Issue
Block a user