• Mark Brown's avatar
    kselftest/arm64: Don't pass headers to the compiler as source · a884f797
    Mark Brown authored
    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: default avatarMark Brown <broonie@kernel.org>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Link: https://lore.kernel.org/r/20230111-arm64-kselftest-clang-v1-3-89c69d377727@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    a884f797
Makefile 1.07 KB