SUMMARY="Interactive physics simulator"
DESCRIPTION="Step is an interactive physical simulator. It allows you to explore \
the physical world through simulations. It works like this: you place some bodies \
on the scene, add some forces such as gravity or springs, then click Simulate and \
Step shows you how your scene will evolve according to the laws of physics. You \
can change every property of the bodies/forces in your experiment (even during \
simulation) and see how this will change evolution of the experiment. \
With Step you cannot only learn but feel how physics works!

Features:
* Classical mechanical simulation in two dimensions
* Particles, springs with damping, gravitational and coulomb forces
* Rigid bodies
* Collision detection (currently only discrete) and handling
* Soft (deformable) bodies simulated as user-editable particles-springs system, sound waves
* Molecular dynamics (currently using Lennard-Jones potential): gas and liquid, \
condensation and evaporation, calculation of macroscopic quantities and their variances
* Units conversion and expression calculation: you can enter something like \"(2 days + \
3 hours) * 80 km/h\" and it will be accepted as distance value (requires libqalculate)
* Errors calculation and propagation: you can enter values like \"1.3 ± 0.2\" for any property \
and errors for all dependent properties will be calculated using statistical formulas
* Solver error estimation: errors introduced by the solver is calculated and added \
to user-entered errors
* Several different solvers: up to 8th order, explicit and implicit, with or without \
adaptive timestep (most of the solvers require GSL library)
* Controller tool to easily control properties during simulation (even with \
custom keyboard shortcuts)
* Tools to visualize results: graph, meter, tracer
* Context information for all objects, integrated wikipedia browser
* Collection of example experiments, more can be downloaded with KNewStuff
* Integrated tutorials."
HOMEPAGE="https://apps.kde.org/ru/step"
COPYRIGHT="2010-2021 KDE Organisation"
LICENSE="GNU GPL v2"
REVISION="1"
SOURCE_URI="https://download.kde.org/stable/release-service/$portVersion/src/step-$portVersion.tar.xz"
CHECKSUM_SHA256="593c66694905ba9696cfe25e375bec7a4935ee3418ba33da3c047198860e8196"
SOURCE_DIR="step-$portVersion"
PATCHES="step-$portVersion.patchset"
ADDITIONAL_FILES="step.rdef.in"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

PROVIDES="
	step$secondaryArchSuffix = $portVersion
	app:Step$secondaryArchSuffix = $portVersion
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libgsl$secondaryArchSuffix
	lib:libKF5Archive$secondaryArchSuffix
	lib:libKF5Attica$secondaryArchSuffix
	lib:libKF5Auth$secondaryArchSuffix
	lib:libKF5Bookmarks$secondaryArchSuffix
	lib:libKF5Codecs$secondaryArchSuffix
	lib:libKF5Completion$secondaryArchSuffix
	lib:libKF5ConfigCore$secondaryArchSuffix
	lib:libKF5ConfigGui$secondaryArchSuffix
	lib:libKF5ConfigWidgets$secondaryArchSuffix
	lib:libKF5CoreAddons$secondaryArchSuffix
	lib:libKF5Crash$secondaryArchSuffix
	lib:libKF5DBusAddons$secondaryArchSuffix
	lib:libKF5GuiAddons$secondaryArchSuffix
	lib:libKF5I18n$secondaryArchSuffix
	lib:libKF5IconThemes$secondaryArchSuffix
	lib:libKF5ItemViews$secondaryArchSuffix
	lib:libKF5JobWidgets$secondaryArchSuffix
	lib:libKF5KIOCore$secondaryArchSuffix
	lib:libKF5KIOFileWidgets$secondaryArchSuffix
	lib:libKF5KIOWidgets$secondaryArchSuffix
	lib:libKF5NewStuff$secondaryArchSuffix
	lib:libKF5Notifications$secondaryArchSuffix
	lib:libKF5Plotting$secondaryArchSuffix
	lib:libKF5Service$secondaryArchSuffix
	lib:libKF5Solid$secondaryArchSuffix
	lib:libKF5SonnetUi$secondaryArchSuffix
	lib:libKF5TextEditor$secondaryArchSuffix
	lib:libKF5TextWidgets$secondaryArchSuffix
	lib:libKF5WidgetsAddons$secondaryArchSuffix
	lib:libKF5WindowSystem$secondaryArchSuffix
	lib:libKF5XmlGui$secondaryArchSuffix
	lib:libQt5Core$secondaryArchSuffix
	lib:libQt5DBus$secondaryArchSuffix
	lib:libQt5Gui$secondaryArchSuffix
	lib:libQt5Widgets$secondaryArchSuffix
	lib:libQt5Xml$secondaryArchSuffix
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	extra_cmake_modules$secondaryArchSuffix >= 5.86
	devel:eigen$secondaryArchSuffix
	devel:libgsl$secondaryArchSuffix
	devel:libKF5Archive$secondaryArchSuffix
	devel:libKF5Attica$secondaryArchSuffix
	devel:libKF5Auth$secondaryArchSuffix
	devel:libKF5Bookmarks$secondaryArchSuffix
	devel:libKF5Codecs$secondaryArchSuffix
	devel:libKF5Completion$secondaryArchSuffix
	devel:libKF5ConfigCore$secondaryArchSuffix
	devel:libKF5ConfigWidgets$secondaryArchSuffix
	devel:libKF5CoreAddons$secondaryArchSuffix
	devel:libKF5Crash$secondaryArchSuffix
	devel:libKF5DBusAddons$secondaryArchSuffix
	devel:libKF5DocTools$secondaryArchSuffix
	devel:libKF5GuiAddons$secondaryArchSuffix
	devel:libKF5I18n$secondaryArchSuffix
	devel:libKF5IconThemes$secondaryArchSuffix
	devel:libKF5ItemModels$secondaryArchSuffix
	devel:libKF5ItemViews$secondaryArchSuffix
	devel:libKF5JobWidgets$secondaryArchSuffix
	devel:libKF5KIOCore$secondaryArchSuffix
	devel:libKF5KIOFileWidgets$secondaryArchSuffix
	devel:libKF5KIOWidgets$secondaryArchSuffix
	devel:libKF5NewStuff$secondaryArchSuffix
	devel:libKF5Notifications$secondaryArchSuffix
	devel:libKF5Plotting$secondaryArchSuffix
	devel:libKF5Service$secondaryArchSuffix
	devel:libKF5Solid$secondaryArchSuffix
	devel:libKF5SonnetUi$secondaryArchSuffix
	devel:libKF5TextEditor$secondaryArchSuffix
	devel:libKF5TextWidgets$secondaryArchSuffix
	devel:libKF5WidgetsAddons$secondaryArchSuffix
	devel:libKF5WindowSystem$secondaryArchSuffix
	devel:libKF5XmlGui$secondaryArchSuffix
	devel:libQt5Core$secondaryArchSuffix >= 5.15
	"
BUILD_PREREQUIRES="
	cmd:cmake
	cmd:g++$secondaryArchSuffix
	cmd:lrelease$secondaryArchSuffix >= 5
	cmd:make
	cmd:pkg_config$secondaryArchSuffix
	cmd:update_mime_database$secondaryArchSuffix
	"

BUILD()
{
	# disable docs generation
	sed -e '/add_subdirectory(doc)/ s/^#*/#/' -i CMakeLists.txt
	sed -e '/kdoctools_install(po)/ s/^#*/#/' -i CMakeLists.txt

	mkdir -p build
	cd build

	cmake .. \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=$appsDir \
		-DCMAKE_INSTALL_DATADIR=$dataDir \
		-DCMAKE_INSTALL_DATAROOTDIR=$dataDir \
		-DSHARE_INSTALL_PREFIX=$dataDir \
		-DECM_DIR=/system/data/cmake/Modules/ECM/cmake
	make $jobArgs
}

INSTALL()
{
	cd build
	make install

	mv $appsDir/bin/step $appsDir/Step
	rm -rf $appsDir/bin $dataDir/icons

	local APP_SIGNATURE="application/x-vnd.kde-step"
	local MAJOR="`echo "$portVersion" | cut -d. -f1`"
	local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
	local MINOR="`echo "$portVersion" | cut -d. -f3`"
	local LONG_INFO="$SUMMARY"
	sed \
		-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
		-e "s|@MAJOR@|$MAJOR|" \
		-e "s|@MIDDLE@|$MIDDLE|" \
		-e "s|@MINOR@|$MINOR|" \
		-e "s|@LONG_INFO@|$LONG_INFO|" \
		$portDir/additional-files/step.rdef.in > step.rdef

	addResourcesToBinaries step.rdef $appsDir/Step
	addAppDeskbarSymlink $appsDir/Step
}
