# Maintainer: Simon Zeni <simon@bl4ckb0ne.ca>
pkgname=intel-graphics-compiler
pkgver=2.11.7
pkgrel=0
pkgdesc="Intel® Graphics Compiler for OpenCL™"
url="https://github.com/intel/intel-graphics-compiler"
arch="x86_64"
license="MIT"
_llvmver=15.0.7
_vciver=0.22.1
_oclclangver=15.0.1
_spirvllvmver=15.0.11
options="!check net" # no tests, fetches SPIRV-Headers
makedepends="bash
	bison
	cmake
	flex-dev
	py3-mako
	py3-yaml
	python3
	samurai
	spirv-headers
	spirv-tools-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/intel/intel-graphics-compiler/archive/refs/tags/v$pkgver.tar.gz
	fix-includes.patch
	fix-metadata.patch
	https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-$_llvmver.tar.gz
	lfs64.nopatch
	vc-intrinsics-$_vciver.tar.gz::https://github.com/intel/vc-intrinsics/archive/refs/tags/v$_vciver.tar.gz
	spirv-llvm-translator-$_spirvllvmver.tar.gz::https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/refs/tags/v$_spirvllvmver.tar.gz
	opencl-clang-$_oclclangver.tar.gz::https://github.com/intel/opencl-clang/archive/refs/tags/v$_oclclangver.tar.gz"

prepare() {
	default_prepare

	mv ../vc-intrinsics-$_vciver ../vc-intrinsics
	mv ../llvm-project-llvmorg-$_llvmver ../llvm-project
	mv ../opencl-clang-$_oclclangver ../llvm-project/llvm/projects/opencl-clang
	mv ../SPIRV-LLVM-Translator-$_spirvllvmver ../llvm-project/llvm/projects/llvm-spirv

	cd ../llvm-project
	patch -p1 -i $srcdir/lfs64.nopatch
}

build() {
	if [ "$CBUILD" != "$CHOST" ]; then
		crossopts="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
	fi

	CXXFLAGS="$CXXFLAGS -I$srcdir/llvm-project/llvm/projects/llvm-spirv/include"

	cmake -B build -G Ninja \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib \
		-DIGC_METRICS=OFF \
		-DIGC_OPTION__ARCHITECTURE_TARGET=Linux64 \
		-DIGC_OPTION__SPIRV_TOOLS_MODE=Prebuilds \
		-DIGC_OPTION__USE_PREINSTALLED_SPIRV_HEADERS=ON \
		-DIGC_OPTION__CLANG_MODE=Source \
		-DIGC_OPTION__LLD_MODE=Source \
		-DIGC_OPTION__LLVM_PREFERRED_VERSION="${_llvmver}" \
		-DIGC_OPTION__LLVM_MODE=Source \
		-DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR=ON \
		-DIGC_OPTION__USE_KHRONOS_SPIRV_TRANSLATOR_IN_SC=ON \
		-DIGC_OPTION__VC_INTRINSICS_MODE=Source \
		$crossopts . -Wno-dev
	cmake --build build
}

package() {
	DESTDIR="$pkgdir" cmake --install build

	install -Dm644 LICENSE.md "$pkgdir"/usr/share/licenses/$pkgname/LICENSE

	# We don't package lld
	rm "$pkgdir"/usr/bin/lld
}

sha512sums="
c91ad53398c394de3d415e1c60712740ea3506adf2960e49bf687ef58bb43fe9d7a52eada096d0b8271b5b73e2cfdefafbfab7250da9244722f7bec51285b5cd  intel-graphics-compiler-2.11.7.tar.gz
9fb547a904657c453abf5515c779749d4dbf1f026b8550d4eb8300db97dd6fd78bbd0354c2d907fefe69e1038086e524ee3b624346b5ad06a8838be4356f647d  fix-includes.patch
ce3ccd44f2d7474b9f1e23f4f279b9e04196ae7d9801b10b20e90380ca9e3cccdceed9cee316c2c012a9535679e4a13c0006778a61bf12d1c73333f07e8c2846  fix-metadata.patch
99beff9ee6f8c26f16ea53f03ba6209a119099cbe361701b0d5f4df9d5cc5f2f0da7c994c899a4cec876da8428564dc7a8e798226a9ba8b5c18a3ef8b181d39e  llvmorg-15.0.7.tar.gz
c1802340b68abdef274f78a9845797c663a569f074c5925f1dea89ed7a6a29f20c1359acb88c233e75d17fd0536bbd1071ef7f6b61123800b263a0fd1939298e  lfs64.nopatch
d339c5c7bed134691ff1a63dbc0f320cc92724cbb8314660a82436416c868c5ad3c1df16e6d55008ad2605ac15615f03255c1adf358f8d3833df6e8290647d6a  vc-intrinsics-0.22.1.tar.gz
99c8633f0406788106141999e27380cd65172b255dfcf5b17572eee4f4e8e270656171702de95b8eb69c97ce7bc4bd56b1c4aec6bffe7708f60484b05ba38315  spirv-llvm-translator-15.0.11.tar.gz
194eec1e2582eb7fba2d2956c1fc80b6107ff68c55052a338bed0d61f214a177f05ff3230b21cc1f5a8d11fc4812ab6bd1aaddab8ae6725275493a83fb6cc2fd  opencl-clang-15.0.1.tar.gz
"
