From b45d6d8d17d95b582d3b46fa73a4c6143300fc49 Mon Sep 17 00:00:00 2001
From: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
Date: Wed, 15 Jan 2020 10:39:46 +0100
Subject: [PATCH] testing/kicad: Support for all archs

Split off support for STEP files in 3D preview to subpackages kicad-opencascade,
which is only build on archs having opencascade. The main package now no longer
depends on opencascade and can be provided on all archs. (Except s390x, because
of missing platform support in libcontext.)
---
 testing/kicad/APKBUILD | 56 ++++++++++++++++++++++++++++++++++++------
 1 file changed, 48 insertions(+), 8 deletions(-)

diff --git a/testing/kicad/APKBUILD b/testing/kicad/APKBUILD
index e702ac32874b..856a37881eaa 100644
--- a/testing/kicad/APKBUILD
+++ b/testing/kicad/APKBUILD
@@ -2,10 +2,10 @@
 # Contributor: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
 pkgname=kicad
 pkgver=5.1.5
-pkgrel=1
+pkgrel=2
 pkgdesc="A Cross Platform and Open Source Electronics Design Automation Suite"
 url="http://kicad-pcb.org/"
-arch="x86_64" # Dependency opencascade is x86_64 only
+arch="all !s390x" # No support for s390x in libcontext (shipped with kicad)
 license="GPL-3.0-or-later"
 makedepends="
 	boost-dev
@@ -15,11 +15,9 @@ makedepends="
 	glew-dev
 	glm-dev
 	ngspice-dev
-	opencascade-dev
 	py3-wxpython
 	python3-dev
 	swig
-	vtk-dev
 	wxgtk-base-dev
 	wxgtk3-dev
 	zlib-dev
@@ -31,15 +29,26 @@ source="
 	kicad-i18n.$pkgver.tar.gz::https://github.com/KiCad/kicad-i18n/archive/$pkgver.tar.gz
 	"
 
-build() {
-	mkdir -p build
-	cd build
+case "$CARCH" in
+	x86_64)
+		makedepends="$makedepends opencascade-dev vtk-dev"
+		subpackages="$subpackages kicad-opencascade"
+		;;
+	*)
+		# Dependency opencascade (needed for STEP file support in 3D preview)
+		# not available on all other architectures
+		;;
+esac
+
+_build_kicad() {
+	mkdir -p "$1"
+	cd "$1"
 	cmake .. \
 		-DCMAKE_BUILD_TYPE=Release \
 		-DCMAKE_INSTALL_PREFIX=/usr \
 		-DCMAKE_INSTALL_LIBDIR=lib \
 		-DKICAD_USE_OCE=OFF \
-		-DKICAD_USE_OCC=ON \
+		-DKICAD_USE_OCC=$2 \
 		-DKICAD_SCRIPTING=ON \
 		-DKICAD_SCRIPTING_PYTHON3=ON  \
 		-DKICAD_SCRIPTING_MODULES=ON  \
@@ -50,11 +59,33 @@ build() {
 		-DwxWidgets_INCLUDE_DIRS=/usr/include \
 		-DBUILD_GITHUB_PLUGIN=ON
 	make
+	cd "$builddir"
+}
+
+_build_kicad_i18n() {
 	cd "$srcdir"/kicad-i18n-$pkgver
 	mkdir -p build
 	cd build
 	cmake .. -DCMAKE_INSTALL_PREFIX=/usr
 	make
+	cd "$builddir"
+}
+
+build() {
+	# First build without opencascade
+	_build_kicad "build" "OFF"
+	_build_kicad_i18n
+
+	# Now build with opencascade, if possible
+	case "$CARCH" in
+		x86_64)
+			_build_kicad "build-occ" "ON"
+			;;
+		*)
+			# Dependency opencascade (needed for STEP file support in 3D preview)
+			# not available on all other architectures
+			;;
+	esac
 }
 
 check() {
@@ -71,5 +102,14 @@ i18n() {
 	cd "$srcdir"/kicad-i18n-$pkgver/build
 	make DESTDIR="$subpkgdir" install
 }
+
+opencascade() {
+	pkgdesc="kicad with support for STEP file in 3D preview"
+	replaces="$pkgname"
+	provides="$pkgname=$pkgver-r$pkgrel"
+	cd "$builddir/build-occ"
+	make DESTDIR="$subpkgdir" install
+}
+
 sha512sums="5ca19e219da07a906f13e236849eb4497c9f827726a5cd13aceffe1d8c7dee480823bf3e949527f59a805eb3b8176fad51576ae663dd07b10e2822f2b37866a5  kicad-5.1.5.tar.xz
 68e6602fcc7e73c22a594b45ecf53a956af8a134e28e86242bfaa4087df21c04b24ae4df9928f00c2cee7eb0631a02a4de1cd09547b36a466fb324f983ea5363  kicad-i18n.5.1.5.tar.gz"
-- 
GitLab