add_startup_object( crt1 SRC start.cpp DEPENDS libc.src.__support.RPC.rpc_client libc.src.__support.GPU.utils libc.src.stdlib.exit libc.src.stdlib.atexit COMPILE_OPTIONS -ffreestanding # To avoid compiler warnings about calling the main function. -fno-builtin -nogpulib # Do not include any GPU vendor libraries. -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -emit-llvm # AMDGPU's intermediate object file format is bitcode. -mcode-object-version=${LIBC_GPU_CODE_OBJECT_VERSION} # Manually set the ABI. --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 "-mcpu=${LIBC_GPU_TARGET_ARCHITECTURE}" "--target=${LIBC_GPU_TARGET_TRIPLE}" "-flto" "-Wl,-mllvm,-amdgpu-lower-global-ctor-dtor=0" "-Wl,-mllvm,-amdhsa-code-object-version=${LIBC_GPU_CODE_OBJECT_VERSION}" )