Files
2025-05-04 10:41:00 -07:00

254 lines
7.4 KiB
Makefile
Executable File

#!/usr/bin/make -f
amd_device_libs_prefix = lib/rocm/llvm/lib/clang/$(llvm_maj_ver)
deb_inst := $(CURDIR)/debian/tmp/
build_stage1 := $(CURDIR)/build-llvm/
build_stage2 := $(CURDIR)/build-llvm-2/
build_devicelibs := $(CURDIR)/build-devicelibs/
_includedir := /usr/include
build_type := RelWithDebInfo
bundle_prefix := /usr/lib/rocm/llvm
llvm_maj_ver := 19
llvm_triple := x86_64-gnu-linux
targets_to_build := "X86;AMDGPU"
projects_to_build := "clang;clang-tools-extra;lld"
# Turn off build libc++, libc++abi
# runtimes_to_build := "compiler-rt;libcxx;libcxxabi"
runtimes_to_build := "compiler-rt"
# Problems applying the build flags to the intermediate compiler
# Clear all the flags
CFLAGS :=
CFLAGS_FOR_BUILD :=
CPPFLAGS :=
CPPFLAGS_FOR_BUILD :=
CXXFLAGS :=
CXXFLAGS_FOR_BUILD :=
LDFLAGS :=
LDFLAGS_FOR_BUILD :=
llvmrocm_cmake_config = \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCLANG_ENABLE_STATIC_ANALYZER=OFF \
-DCLANG_ENABLE_ARCMT=OFF \
-DCMAKE_BUILD_TYPE=$(build_type) \
-DCMAKE_INSTALL_DO_STRIP=ON \
-DCMAKE_INSTALL_PREFIX=$(bundle_prefix) \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
-DCOMPILER_RT_BUILD_ORC=OFF \
-DCOMPILER_RT_BUILD_PROFILE=OFF \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_BUILD_XRAY=OFF \
-DENABLE_LINKER_BUILD_ID=ON \
-DLIBCXX_INCLUDE_BENCHMARKS=OFF \
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
-DLLVM_BINUTILS_INCDIR=$(_includedir) \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_BUILD_RUNTIME=ON \
-DLLVM_DEFAULT_TARGET_TRIPLE=$(llvm_triple) \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_FFI=ON \
-DLLVM_ENABLE_OCAMLDOC=OFF \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_ZLIB=ON \
-DLLVM_ENABLE_ZSTD=ON \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_TARGETS_TO_BUILD=$(targets_to_build) \
-DLLVM_TOOL_GOLD_BUILD=ON \
-DLLVM_TOOL_LLVM_AS_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_DIS_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_DLANG_DEMANGLE_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_ISEL_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_ITANIUM_DEMANGLE_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_MC_ASSEMBLE_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_MC_DISASSEMBLE_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_MICROSOFT_DEMANGLE_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_OPT_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_RUST_DEMANGLE_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_SPECIAL_CASE_LIST_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_YAML_NUMERIC_PARSER_FUZZER_BUILD=OFF \
-DLLVM_TOOL_LLVM_YAML_PARSER_FUZZER_BUILD=OFF \
-DLLVM_TOOL_VFABI_DEMANGLE_FUZZER_BUILD=OFF \
-DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_BUILD_TOOLS=ON \
-DLLVM_BUILD_UTILS=ON \
-DMLIR_BUILD_MLIR_C_DYLIB=ON
llvmrocm_stage1_config = \
-DCMAKE_AR=$(build_stage1)/bin/llvm-ar \
-DCMAKE_C_COMPILER=$(build_stage1)/bin/clang \
-DCMAKE_CXX_COMPILER=$(build_stage1)/bin/clang++ \
-DCMAKE_LINKER=$(build_stage1)/bin/ld.lld \
-DCMAKE_RANLIB=$(build_stage1)/bin/llvm-ranlib \
-DLLVM_DIR=$(build_stage1)/lib/cmake/llvm \
-DClang_DIR=$(build_stage1)/lib/cmake/clang \
-DLLD_DIR=$(build_stage1)/lib/cmake/lld
llvmrocm_tools_config = \
-DCMAKE_AR=$(build_stage2)/bin/llvm-ar \
-DCMAKE_C_COMPILER=$(build_stage2)/bin/clang \
-DCMAKE_CXX_COMPILER=$(build_stage2)/bin/clang++ \
-DCMAKE_LINKER=$(build_stage2)/bin/ld.lld \
-DCMAKE_RANLIB=$(build_stage2)/bin/llvm-ranlib \
-DLLVM_ROOT=$(build_stage2) \
-DClang_DIR=$(build_stage2)/lib/cmake/clang \
-DLLD_DIR=$(build_stage2)/lib/cmake/lld
llvmrocm_devicelibs_config = \
-DAMDDeviceLibs_DIR=$(build_devicelibs)/lib/cmake/AMDDeviceLibs
%:
dh $@
dirs:
- mkdir stamps
- mkdir build-llvm
- mkdir build-llvm-2
- mkdir build-devicelibs
- mkdir build-comgr
- mkdir build-hipcc
stamps/config-llvm: dirs
cmake -G Ninja -S llvm -B build-llvm \
$(llvmrocm_cmake_config) \
-DCMAKE_INSTALL_PREFIX=$(bundle_prefix) \
-DCMAKE_INSTALL_LIBDIR=lib \
-DLLVM_ENABLE_PROJECTS=$(projects_to_build)
touch $@
stamps/build-llvm: stamps/config-llvm
ninja -C build-llvm
touch $@
# Turn off build libc++, libc++abi
# dpkg-shlibdeps: error: cannot find library libc++abi.so.1 needed by
# debian/rocm-llvm/usr/lib/rocm/llvm/lib/libc++.so.1.0 (ELF format:
# 'elf64-x86-64' abi: 'ELF:64:l:amd64:0'; RPATH: '')
stamps/config-llvm-2: stamps/build-llvm
cmake -G Ninja -S llvm -B build-llvm-2 \
$(llvmrocm_cmake_config) \
$(llvmrocm_stage1_config) \
-DCMAKE_INSTALL_PREFIX=$(bundle_prefix) \
-DCMAKE_INSTALL_RPATH=$(bundle_prefix)/lib \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_SKIP_INSTALL_RPATH=OFF \
-DCLANG_DEFAULT_LINKER=lld \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_TOOL_COMPILER_RT_BUILD=ON \
-DLLVM_TOOL_LIBCXXABI_BUILD=OFF \
-DLLVM_TOOL_LIBCXX_BUILD=OFF \
-DLLVM_ENABLE_PROJECTS=$(projects_to_build) \
-DLLVM_ENABLE_RUNTIMES=$(runtimes_to_build)
touch $@
stamps/build-llvm-2: stamps/config-llvm-2
ninja -C build-llvm-2
touch $@
stamps/install-llvm-2: stamps/build-llvm-2
DESTDIR=$(deb_inst) \
ninja -C build-llvm-2 install
touch $@
stamps/config-devicelibs: stamps/install-llvm-2
cmake -G Ninja -S amd/device-libs -B build-devicelibs \
$(llvmrocm_cmake_config) \
$(llvmrocm_tools_config) \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_NEW="$(amd_device_libs_prefix)/amdgcn" \
-DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_OLD=""
touch $@
stamps/build-devicelibs: stamps/config-devicelibs
ninja -C build-devicelibs
touch $@
stamps/install-devicelibs: stamps/build-devicelibs
DESTDIR=$(deb_inst) \
ninja -C build-devicelibs install
touch $@
stamps/config-comgr: stamps/install-devicelibs
cmake -G Ninja -S amd/comgr -B build-comgr \
$(llvmrocm_cmake_config) \
$(llvmrocm_tools_config) \
$(llvmrocm_devicelibs_config) \
-DCMAKE_INSTALL_RPATH=$(bundle_prefix)/lib \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib
touch $@
stamps/build-comgr: stamps/config-comgr
ninja -C build-comgr
touch $@
stamps/install-comgr: stamps/build-comgr
DESTDIR=$(deb_inst) \
ninja -C build-comgr install
touch $@
stamps/config-hipcc: stamps/install-comgr
cmake -G Ninja -S amd/hipcc -B build-hipcc \
$(llvmrocm_cmake_config) \
$(llvmrocm_tools_config) \
$(llvmrocm_devicelibs_config) \
-DCMAKE_INSTALL_RPATH=$(bundle_prefix)/lib \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib
touch $@
stamps/build-hipcc: stamps/config-hipcc
ninja -C build-hipcc
touch $@
stamps/install-hipcc: stamps/build-hipcc
DESTDIR=$(deb_inst) \
ninja -C build-hipcc install
touch $@
override_dh_auto_configure: stamps/config-hipcc
override_dh_auto_build: stamps/build-hipcc
override_dh_auto_install: stamps/install-hipcc
rm -rf $(deb_inst)/usr/lib/ocaml
rm -rf $(deb_inst)/usr/hip
rm -rf $(deb_inst)/usr/share/doc/ROCm-Device-Libs/LICENSE.TXT
override_dh_install:
dh_install
dh_missing --list-missing
# No docs
override_dh_installdocs:
# Too many DIE's
override_dh_dwz:
clean:
- rm -rf build-*
- rm -rf stamps
- rm -rf $(deb_inst)
- rm -rf debian/.debhelper
- rm -rf debian/rocm-llvm
- rm -rf libcxx/utils/libcxx/__pycache__
override_dh_auto_clean: clean
override_dh_ocamlinit:
override_dh_ocamlclean:
override_dh_ocaml: