# Template file for 'freecad'
pkgname=freecad
version=1.0.2
revision=10
_pycxx_ver=7.1.8
_ondsel_ver=09d6175a2ba69e7016fcecc4f384946a2f84f92d
build_style=cmake
pycompile_dirs="usr/lib/${pkgname}/Mod"
_inst_prefix=/usr/lib/${pkgname}
configure_args="-DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GUI=ON
 -DFREECAD_QT_VERSION=6 -DBUILD_FEM_NETGEN=OFF -DBUILD_FLAT_MESH=ON
 -DENABLE_DEVELOPER_TESTS=OFF -DBUILD_TEST=OFF
 -DFREECAD_USE_EXTERNAL_PIVY=ON -DCMAKE_INSTALL_PREFIX=${_inst_prefix}
 -DCMAKE_INSTALL_DATAROOTDIR=/usr/share -DCMAKE_INSTALL_DATADIR=/usr/share/${pkgname}
 -DMEDFILE_INCLUDE_DIRS=/usr/include/med -DCOIN3D_INCLUDE_DIRS=/usr/include/Coin3"
hostmakedepends="pkg-config swig doxygen graphviz python3-setuptools
 python3-matplotlib python3-pivy"
makedepends="boost-devel-minimal boost-python3 libboost_filesystem
 libboost_thread libboost_program_options
 libxerces-c-devel zlib-devel occt-devel vtk-devel
 hdf5-devel libgomp-devel libmed-devel eigen double-conversion-devel
 coin3-devel libspnav-devel liblz4-devel netcdf-devel jsoncpp-devel
 glew-devel python3-devel yaml-cpp-devel guidelines-support-library
 qt6-base-devel qt6-svg-devel qt6-tools-devel libpyside6-devel"
depends="python3-matplotlib python3-pivy python3-GitPython python3-Markdown
 python3-pyside6-gui python3-pyside6-network python3-pyside6-printsupport
 python3-pyside6-ui-tools python3-pyside6-widgets"
short_desc="General purpose 3D CAD modeler"
maintainer="Orphaned <orphan@voidlinux.org>"
license="LGPL-2.0-or-later"
homepage="https://freecadweb.org/"
distfiles="https://github.com/FreeCAD/FreeCAD/archive/${version}.tar.gz
 ${SOURCEFORGE_SITE}/cxx/pycxx-${_pycxx_ver}.tar.gz
 https://github.com/FreeCAD/OndselSolver/archive/${_ondsel_ver}.tar.gz>OndselSolver-${_ondsel_ver}.tar.gz"
checksum="228ee52f00627c7d8fa61998179deb01865ece69390829feb1300228d24f7e9e
 4b91e1e1141c23fbd5039df635c4bb6e75632168548f56b83ce177193c0c98c6
 890fb6ddeb1b42face95854689ff7b96c926c368b7d616d9e31e4b35f79ddde8"
python_version=3
skip_extraction="pycxx-${_pycxx_ver}.tar.gz
 OndselSolver-${_ondsel_ver}.tar.gz"

if [ "$XBPS_TARGET_LIBC" = musl ]; then
	makedepends+=" libexecinfo-devel"
	LDFLAGS="-lexecinfo"
fi

CXXFLAGS="-DPYCXX_PYTHON_2TO3"

post_extract() {
	vsrcextract -C src/3rdParty/OndselSolver "OndselSolver-${_ondsel_ver}.tar.gz"
	vsrcextract -C pycxx "pycxx-${_pycxx_ver}.tar.gz"
	rm -r src/CXX
	ln -Tsr ./pycxx/CXX src/CXX
}

post_patch() {
	# Report exact minor version
	# Freecad has a record of shipping mismatching version info
	vminor=${version#*.}
	vminor=${vminor%%.*}
	sed -i -e "s,^\(set(PACKAGE_VERSION_MINOR\) .*,\1 \"${vminor}\")," CMakeLists.txt

	# SubWCRev.py (SCM check) reports "unknown" for these fields
	vsed -e "s,\${PACKAGE_WCREF},${revision}_voidlinux," \
	     -e "s,\${PACKAGE_WCDATE},(from release)," \
	     -e "s,\${PACKAGE_WCURL},Void Linux package ${pkgname}," \
	     -i src/Build/Version.h.cmake
}

pre_configure() {
	configure_args+=" -DPYCXX_INCLUDE_DIR=${wrksrc}/pycxx
	 -DPYCXX_SOURCE_DIR=${wrksrc}/pycxx/Src"
}

post_install() {
	# AppHomePath is computed with binary's realpath:
	# do not move binaries but symlink them instead.
	vmkdir usr/bin
	for f in FreeCAD FreeCADCmd; do
		ln -s ${_inst_prefix}/bin/${f} ${DESTDIR}/usr/bin/${f}
	done
}
