PKGNAME=rocm-llvm
PKGDES="LLVM customized for ROCm"
PKGSEC=devel
PKGDEP="gcc-runtime libxml2 libedit zlib rocm-core"
BUILDDEP="cmake llvm llvm-22"

USECLANG=1

# Note: Keep libclang_rt.builtins.a, Compiling for GPU environment
NOSTATIC=0

LLVM_BASE_SET="clang;lld;flang;clang-tools-extra"
_LLVM_BASE_RUNTIME_SET="libcxx;libcxxabi;libunwind;openmp;compiler-rt"

ABTYPE=cmakeninja
CMAKE_AFTER=(
    '-DCMAKE_INSTALL_PREFIX=/usr/lib/rocm/lib/llvm'
    '-DCMAKE_INSTALL_RPATH=/usr/lib/rocm/lib/llvm/lib;/usr/lib/rocm/lib'
    '-DCMAKE_C_COMPILER=/usr/lib/llvm-22/bin/clang'
    '-DCMAKE_CXX_COMPILER=/usr/lib/llvm-22/bin/clang++'
    '-DBUILD_SHARED_LIBS=ON'
    '-DLIBCXX_ENABLE_SHARED=OFF'
    '-DLIBCXX_ENABLE_STATIC=ON'
    '-DLIBCXXABI_ENABLE_SHARED=OFF'
    '-DLIBCXXABI_ENABLE_STATIC=ON'
    '-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON'
    '-DLIBCXXABI_USE_LLVM_UNWINDER=ON'
    '-DLIBCXX_USE_COMPILER_RT=ON'
    '-DLLVM_ENABLE_PIC=ON'
# Note: https://github.com/ROCm/rocm-libraries/issues/7700
    '-DLLVM_ENABLE_ASSERTIONS=OFF'
    '-DLLVM_TARGETS_TO_BUILD=Native;AMDGPU'
    '-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=SPIRV'
    '-DCMAKE_SKIP_INSTALL_RPATH=OFF'
    '-DCMAKE_SKIP_RPATH=OFF'
    '-DLLVM_INCLUDE_TESTS=ON'
    '-DLLVM_BUILD_UTILS=ON'
    '-DCOMPILER_RT_INCLUDE_TESTS=OFF'
    '-DCOMPILER_RT_BUILD_SANITIZERS=OFF'
    '-DCOMPILER_RT_BUILD_XRAY=OFF'
    '-DCOMPILER_RT_BUILD_MEMPROF=OFF'
    '-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF'
    '-DRUNTIMES_CMAKE_ARGS=-DCMAKE_LINKER_TYPE=LLD'
    '-DCMAKE_LINKER_TYPE=LLD'
    '-DLLVM_INSTALL_UTILS=ON'
    "-DLLVM_ENABLE_PROJECTS=${LLVM_BASE_SET}"
    "-DLLVM_ENABLE_RUNTIMES=${_LLVM_BASE_RUNTIME_SET}"
)
CMAKE_AFTER__LOONGARCH64=(
    ${CMAKE_AFTER[@]}
    '-DCMAKE_C_FLAGS=-mcmodel=medium'
    '-DCMAKE_CXX_FLAGS=-mcmodel=medium'
)

FAIL_ARCH="!(amd64|arm64|loongarch64|riscv64)"
