Summary: Currently AMDGPU only barely supports cross-TU ELF linking. Full linking is usually done via LTO. This requires passing the architecture to the link job. This is done automatically via `-flto` since D144505. Add this to the link options.
20 lines
671 B
CMake
20 lines
671 B
CMake
add_startup_object(
|
|
crt1
|
|
SRC
|
|
start.cpp
|
|
COMPILE_OPTIONS
|
|
-ffreestanding # To avoid compiler warnings about calling the main function.
|
|
-fno-builtin
|
|
-nogpulib # Do not include any GPU vendor libraries.
|
|
-nostdinc
|
|
-mcpu=${LIBC_GPU_TARGET_ARCHITECTURE}
|
|
-emit-llvm # AMDGPU's intermediate object file format is bitcode.
|
|
--target=${LIBC_GPU_TARGET_TRIPLE}
|
|
NO_GPU_BUNDLE # Compile this file directly without special GPU handling.
|
|
)
|
|
get_fq_target_name(crt1 fq_name)
|
|
|
|
# Ensure that clang uses the correct linker for this object type.
|
|
target_link_libraries(${fq_name} PUBLIC
|
|
"--target=${LIBC_GPU_TARGET_TRIPLE}" "-flto")
|