254 lines
7.4 KiB
Makefile
Executable File
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:
|