#!/usr/bin/make -f

DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_PACKAGE_VERSION ?= $(shell dpkg-parsechangelog -S Version)
UPSTREAM_VERSION := $(shell echo '$(DEB_PACKAGE_VERSION)' | sed -e 's/-[^-]*$$//')

# Define source path
SOURCE_PATH = $(realpath .)
DEVICE_LIBS_DIR = $(realpath amd/device-libs)
COMGR_DIR = $(realpath amd/comgr)
HIPCC_DIR = $(realpath amd/hipcc)

%:
	CC=clang CXX=clang++ dh $@

override_dh_auto_configure:
	mkdir -p $(SOURCE_PATH)/build_
	mkdir $(SOURCE_PATH)/build_/device-libs
	mkdir $(SOURCE_PATH)/build_/comgr
	mkdir $(SOURCE_PATH)/build_/hipcc

	CC=clang CXX=clang++ cmake -B$(SOURCE_PATH)/build_/device-libs -S$(DEVICE_LIBS_DIR)  -G Ninja \
		-DCMAKE_BUILD_RPATH="/opt/rocm-$(UPSTREAM_VERSION)/lib;/opt/rocm-$(UPSTREAM_VERSION)/lib64;/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/lib" \
		-DCMAKE_INSTALL_RPATH="/opt/rocm-$(UPSTREAM_VERSION)/lib;/opt/rocm-$(UPSTREAM_VERSION)/lib64;/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/lib" \
		-DCMAKE_C_COMPILER=clang \
		-DCMAKE_CXX_COMPILER=clang++ \
		-DCMAKE_CXX_FLAGS="-I/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/include" \
		-DCMAKE_INSTALL_PREFIX="$(SOURCE_PATH)/debian/rocm-llvm-extra/opt/rocm-$(UPSTREAM_VERSION)" \
		-DCMAKE_LINKER_TYPE=LLD \
		-DCMAKE_FIND_ROOT_PATH=/opt/rocm-$(UPSTREAM_VERSION)/ \
		-DCMAKE_PREFIX_PATH=/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/

	CC=clang CXX=clang++ cmake -B$(SOURCE_PATH)/build_/comgr -S $(COMGR_DIR) -G Ninja \
		-DCMAKE_BUILD_RPATH="/opt/rocm-$(UPSTREAM_VERSION)/lib;/opt/rocm-$(UPSTREAM_VERSION)/lib64;/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/lib" \
		-DCMAKE_INSTALL_RPATH="/opt/rocm-$(UPSTREAM_VERSION)/lib;/opt/rocm-$(UPSTREAM_VERSION)/lib64;/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/lib" \
		-DCMAKE_C_COMPILER=clang \
		-DCMAKE_CXX_COMPILER=clang++ \
		-DCMAKE_CXX_FLAGS="-I/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/include" \
		-DCMAKE_INSTALL_PREFIX="$(SOURCE_PATH)/debian/rocm-llvm-extra/opt/rocm-$(UPSTREAM_VERSION)" \
		-DAMDDeviceLibs_DIR=$(SOURCE_PATH)/build_/device-libs/lib/cmake/AMDDeviceLibs/ \
		-DCMAKE_LINKER_TYPE=LLD \
		-DCMAKE_FIND_ROOT_PATH=/opt/rocm-$(UPSTREAM_VERSION)/ \
		-DCMAKE_PREFIX_PATH=/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/

	CC=clang CXX=clang++ cmake -B$(SOURCE_PATH)/build_/hipcc -S $(HIPCC_DIR) -G Ninja \
		-DCMAKE_BUILD_RPATH="/opt/rocm-$(UPSTREAM_VERSION)/lib;/opt/rocm-$(UPSTREAM_VERSION)/lib64;/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/lib" \
		-DCMAKE_INSTALL_RPATH="/opt/rocm-$(UPSTREAM_VERSION)/lib;/opt/rocm-$(UPSTREAM_VERSION)/lib64;/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/lib" \
		-DCMAKE_C_COMPILER=clang \
		-DCMAKE_CXX_COMPILER=clang++ \
		-DCMAKE_CXX_FLAGS="-I/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/include" \
		-DCMAKE_INSTALL_PREFIX="$(SOURCE_PATH)/debian/rocm-llvm-extra/opt/rocm-$(UPSTREAM_VERSION)" \
		-DCMAKE_LINKER_TYPE=LLD \
		-DCMAKE_FIND_ROOT_PATH=/opt/rocm-$(UPSTREAM_VERSION)/ \
		-DCMAKE_PREFIX_PATH=/opt/rocm-$(UPSTREAM_VERSION)/lib/llvm/

override_dh_auto_build:
	for dir in device-libs comgr hipcc; do \
		cmake --build $(SOURCE_PATH)/build_/$$dir --parallel $(shell nproc); \
	done

override_dh_auto_install:
	for dir in device-libs comgr hipcc; do \
		cmake --install $(SOURCE_PATH)/build_/$$dir --prefix $(SOURCE_PATH)/debian/rocm-llvm-extra/opt/rocm-$(UPSTREAM_VERSION); \
	done

override_dh_auto_clean:
	rm -rf $(SOURCE_PATH)/build_
	dh_auto_clean

override_dh_auto_test:
	:

override_dh_dwz:
	:
