mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-06 15:08:57 +02:00
190 lines
5.2 KiB
Bash
190 lines
5.2 KiB
Bash
SUMMARY="Cross-Platform MIDI IO"
|
|
DESCRIPTION="PortMidi is a cross-platform MIDI input/output library."
|
|
HOMEPAGE="https://github.com/PortMidi/portmidi"
|
|
COPYRIGHT="1999-2000 Ross Bencina and Phil Burk
|
|
2001-2009 Roger B. Dannenberg"
|
|
LICENSE="MIT"
|
|
REVISION="2"
|
|
SOURCE_URI="https://github.com/PortMidi/portmidi/archive/refs/tags/v$portVersion.tar.gz"
|
|
CHECKSUM_SHA256="64893e823ae146cabd3ad7f9a9a9c5332746abe7847c557b99b2577afa8a607c"
|
|
SOURCE_DIR="portmidi-$portVersion"
|
|
ADDITIONAL_FILES="pmdefaults.rdef.in"
|
|
|
|
ARCHITECTURES="all"
|
|
SECONDARY_ARCHITECTURES="x86"
|
|
|
|
# This uses the wrong libVersion from upstream - change this back to $portVersion when fixed
|
|
libVersion="2.0.3"
|
|
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
|
|
|
|
PROVIDES="
|
|
portmidi$secondaryArchSuffix = $portVersion
|
|
lib:libportmidi$secondaryArchSuffix = $libVersionCompat
|
|
"
|
|
REQUIRES="
|
|
haiku${secondaryArchSuffix}
|
|
"
|
|
|
|
PROVIDES_devel="
|
|
portmidi${secondaryArchSuffix}_devel = $portVersion
|
|
devel:libportmidi$secondaryArchSuffix = $libVersionCompat
|
|
"
|
|
REQUIRES_devel="
|
|
portmidi$secondaryArchSuffix == $portVersion base
|
|
"
|
|
|
|
PROVIDES_tools="
|
|
portmidi${secondaryArchSuffix}_tools = $portVersion
|
|
cmd:portmidi_fast$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_fastrcv$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_latency$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_midiclock$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_midithread$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_midithru$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_mm$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_multivirtual$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_pmlist$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_qtest$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_recvvirtual$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_sendvirtual$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_sysex$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_testio$secondaryArchSuffix = $portVersion
|
|
cmd:portmidi_virttest$secondaryArchSuffix = $portVersion
|
|
"
|
|
REQUIRES_tools="
|
|
haiku$secondaryArchSuffix
|
|
portmidi$secondaryArchSuffix == $portVersion base
|
|
"
|
|
|
|
BUILD_REQUIRES="
|
|
haiku${secondaryArchSuffix}_devel
|
|
"
|
|
|
|
BUILD_PREREQUIRES="
|
|
cmd:cmake
|
|
cmd:gcc$secondaryArchSuffix
|
|
cmd:ld$secondaryArchSuffix
|
|
cmd:make
|
|
cmd:pkg_config$secondaryArchSuffix
|
|
"
|
|
|
|
# the java bindings do not work with x86_gcc2 because java is not available for it
|
|
# (it would build but fail at runtime with an "UnsatisfiedLinkError: missing library")
|
|
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
|
PROVIDES_devel+="
|
|
devel:libpmjni$secondaryArchSuffix = $libVersionCompat
|
|
"
|
|
REQUIRES_devel+="
|
|
portmidi${secondaryArchSuffix}_java == $portVersion
|
|
"
|
|
|
|
SUMMARY_java="Cross-Platform MIDI IO (Java bindings)"
|
|
PROVIDES_java="
|
|
portmidi${secondaryArchSuffix}_java = $portVersion
|
|
lib:libpmjni$secondaryArchSuffix = $libVersionCompat
|
|
"
|
|
REQUIRES_java="
|
|
haiku$secondaryArchSuffix
|
|
portmidi$secondaryArchSuffix == $portVersion base
|
|
java:runtime >= 17
|
|
"
|
|
|
|
BUILD_REQUIRES+="
|
|
java:environment >= 17
|
|
"
|
|
|
|
BUILD_PREREQUIRES+="
|
|
cmd:javac >= 17
|
|
"
|
|
fi
|
|
|
|
BUILD()
|
|
{
|
|
mkdir -p build
|
|
cd build
|
|
|
|
extraCMakeArgs=
|
|
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
|
source /system/data/profile.d/openjdk.sh
|
|
extraCMakeArgs="-DBUILD_JAVA_NATIVE_INTERFACE=ON -DBUILD_PMDEFAULTS=ON"
|
|
fi
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release $cmakeDirArgs \
|
|
-DBUILD_PORTMIDI_TESTS=ON $extraCMakeArgs
|
|
make $jobArgs
|
|
}
|
|
|
|
INSTALL()
|
|
{
|
|
cd build
|
|
make install
|
|
cd ..
|
|
|
|
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
|
cp pm_java/pmdefaults/pmdefaults.jar $libDir
|
|
|
|
mkdir $preferencesDir
|
|
|
|
# the included pmdefaults script would need changes anyway, so we just create our own
|
|
cat <<- EOF > "$preferencesDir/PortMidi Setup"
|
|
#!/bin/sh
|
|
$JAVA_HOME/bin/java -Djava.library.path=$libDir -jar $libDir/pmdefaults.jar
|
|
EOF
|
|
|
|
chmod +x "$preferencesDir/PortMidi Setup"
|
|
|
|
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
|
|
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
|
|
local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`"
|
|
sed \
|
|
-e "s|@MAJOR@|$MAJOR|" \
|
|
-e "s|@MIDDLE@|$MIDDLE|" \
|
|
-e "s|@MINOR@|$MINOR|" \
|
|
$portDir/additional-files/pmdefaults.rdef.in \
|
|
> pmdefaults.rdef
|
|
|
|
rc pmdefaults.rdef
|
|
settype -t application/x-vnd.Be-elfexecutable "$preferencesDir/PortMidi Setup"
|
|
resattr -o "$preferencesDir/PortMidi Setup" pmdefaults.rsrc
|
|
|
|
addPreferencesDeskbarSymlink "$preferencesDir/PortMidi Setup"
|
|
|
|
prepareInstalledDevelLib libpmjni
|
|
|
|
# the java bindings need an unversioned libpmjni.so
|
|
ln -s libpmjni.so.${portVersion%~*} $libDir/libpmjni.so
|
|
fi
|
|
|
|
# install test tools
|
|
mkdir -p $binDir
|
|
for tool in fast fastrcv latency midiclock midithread midithru mm multivirtual pmlist \
|
|
qtest recvvirtual sendvirtual sysex testio virttest
|
|
do
|
|
cp build/pm_test/$tool $binDir/portmidi-$tool
|
|
done
|
|
|
|
prepareInstalledDevelLib libportmidi
|
|
|
|
fixPkgconfig
|
|
|
|
packageEntries devel \
|
|
$developDir \
|
|
$libDir/cmake
|
|
|
|
packageEntries tools \
|
|
$binDir
|
|
|
|
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
|
packageEntries java \
|
|
$libDir/libpmjni.so* \
|
|
$libDir/pmdefaults.jar \
|
|
"$preferencesDir/PortMidi Setup" \
|
|
$dataDir # this contains the Deskbar symlink
|
|
fi
|
|
}
|
|
|
|
TEST()
|
|
{
|
|
# the tests are individual commands that need to be run interactively
|
|
true
|
|
}
|