1SUMMARY="Cross-Platform MIDI IO" 2DESCRIPTION="PortMidi is a cross-platform MIDI input/output library." 3HOMEPAGE="https://github.com/PortMidi/portmidi" 4COPYRIGHT="1999-2000 Ross Bencina and Phil Burk 5 2001-2009 Roger B. Dannenberg" 6LICENSE="MIT" 7REVISION="2" 8SOURCE_URI="https://github.com/PortMidi/portmidi/archive/refs/tags/v$portVersion.tar.gz" 9CHECKSUM_SHA256="64893e823ae146cabd3ad7f9a9a9c5332746abe7847c557b99b2577afa8a607c" 10SOURCE_DIR="portmidi-$portVersion" 11ADDITIONAL_FILES="pmdefaults.rdef.in" 12 13ARCHITECTURES="all" 14SECONDARY_ARCHITECTURES="x86" 15 16# This uses the wrong libVersion from upstream - change this back to $portVersion when fixed 17libVersion="2.0.3" 18libVersionCompat="$libVersion compat >= ${libVersion%%.*}" 19 20PROVIDES=" 21 portmidi$secondaryArchSuffix = $portVersion 22 lib:libportmidi$secondaryArchSuffix = $libVersionCompat 23 " 24REQUIRES=" 25 haiku${secondaryArchSuffix} 26 " 27 28PROVIDES_devel=" 29 portmidi${secondaryArchSuffix}_devel = $portVersion 30 devel:libportmidi$secondaryArchSuffix = $libVersionCompat 31 " 32REQUIRES_devel=" 33 portmidi$secondaryArchSuffix == $portVersion base 34 " 35 36PROVIDES_tools=" 37 portmidi${secondaryArchSuffix}_tools = $portVersion 38 cmd:portmidi_fast$secondaryArchSuffix = $portVersion 39 cmd:portmidi_fastrcv$secondaryArchSuffix = $portVersion 40 cmd:portmidi_latency$secondaryArchSuffix = $portVersion 41 cmd:portmidi_midiclock$secondaryArchSuffix = $portVersion 42 cmd:portmidi_midithread$secondaryArchSuffix = $portVersion 43 cmd:portmidi_midithru$secondaryArchSuffix = $portVersion 44 cmd:portmidi_mm$secondaryArchSuffix = $portVersion 45 cmd:portmidi_multivirtual$secondaryArchSuffix = $portVersion 46 cmd:portmidi_pmlist$secondaryArchSuffix = $portVersion 47 cmd:portmidi_qtest$secondaryArchSuffix = $portVersion 48 cmd:portmidi_recvvirtual$secondaryArchSuffix = $portVersion 49 cmd:portmidi_sendvirtual$secondaryArchSuffix = $portVersion 50 cmd:portmidi_sysex$secondaryArchSuffix = $portVersion 51 cmd:portmidi_testio$secondaryArchSuffix = $portVersion 52 cmd:portmidi_virttest$secondaryArchSuffix = $portVersion 53 " 54REQUIRES_tools=" 55 haiku$secondaryArchSuffix 56 portmidi$secondaryArchSuffix == $portVersion base 57 " 58 59BUILD_REQUIRES=" 60 haiku${secondaryArchSuffix}_devel 61 " 62 63BUILD_PREREQUIRES=" 64 cmd:cmake 65 cmd:gcc$secondaryArchSuffix 66 cmd:ld$secondaryArchSuffix 67 cmd:make 68 cmd:pkg_config$secondaryArchSuffix 69 " 70 71# the java bindings do not work with x86_gcc2 because java is not available for it 72# (it would build but fail at runtime with an "UnsatisfiedLinkError: missing library") 73if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then 74 PROVIDES_devel+=" 75 devel:libpmjni$secondaryArchSuffix = $libVersionCompat 76 " 77 REQUIRES_devel+=" 78 portmidi${secondaryArchSuffix}_java == $portVersion 79 " 80 81 SUMMARY_java="Cross-Platform MIDI IO (Java bindings)" 82 PROVIDES_java=" 83 portmidi${secondaryArchSuffix}_java = $portVersion 84 lib:libpmjni$secondaryArchSuffix = $libVersionCompat 85 " 86 REQUIRES_java=" 87 haiku$secondaryArchSuffix 88 portmidi$secondaryArchSuffix == $portVersion base 89 java:runtime >= 17 90 " 91 92 BUILD_REQUIRES+=" 93 java:environment >= 17 94 " 95 96 BUILD_PREREQUIRES+=" 97 cmd:javac >= 17 98 " 99fi 100 101BUILD() 102{ 103 mkdir -p build 104 cd build 105 106 extraCMakeArgs= 107 if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then 108 source /system/data/profile.d/openjdk.sh 109 extraCMakeArgs="-DBUILD_JAVA_NATIVE_INTERFACE=ON -DBUILD_PMDEFAULTS=ON" 110 fi 111 cmake .. -DCMAKE_BUILD_TYPE=Release $cmakeDirArgs \ 112 -DBUILD_PORTMIDI_TESTS=ON $extraCMakeArgs 113 make $jobArgs 114} 115 116INSTALL() 117{ 118 cd build 119 make install 120 cd .. 121 122 if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then 123 cp pm_java/pmdefaults/pmdefaults.jar $libDir 124 125 mkdir $preferencesDir 126 127 # the included pmdefaults script would need changes anyway, so we just create our own 128 cat <<- EOF > "$preferencesDir/PortMidi Setup" 129 #!/bin/sh 130 $JAVA_HOME/bin/java -Djava.library.path=$libDir -jar $libDir/pmdefaults.jar 131 EOF 132 133 chmod +x "$preferencesDir/PortMidi Setup" 134 135 local MAJOR="`echo "$portVersion" | cut -d. -f1`" 136 local MIDDLE="`echo "$portVersion" | cut -d. -f2`" 137 local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`" 138 sed \ 139 -e "s|@MAJOR@|$MAJOR|" \ 140 -e "s|@MIDDLE@|$MIDDLE|" \ 141 -e "s|@MINOR@|$MINOR|" \ 142 $portDir/additional-files/pmdefaults.rdef.in \ 143 > pmdefaults.rdef 144 145 rc pmdefaults.rdef 146 settype -t application/x-vnd.Be-elfexecutable "$preferencesDir/PortMidi Setup" 147 resattr -o "$preferencesDir/PortMidi Setup" pmdefaults.rsrc 148 149 addPreferencesDeskbarSymlink "$preferencesDir/PortMidi Setup" 150 151 prepareInstalledDevelLib libpmjni 152 153 # the java bindings need an unversioned libpmjni.so 154 ln -s libpmjni.so.${portVersion%~*} $libDir/libpmjni.so 155 fi 156 157 # install test tools 158 mkdir -p $binDir 159 for tool in fast fastrcv latency midiclock midithread midithru mm multivirtual pmlist \ 160 qtest recvvirtual sendvirtual sysex testio virttest 161 do 162 cp build/pm_test/$tool $binDir/portmidi-$tool 163 done 164 165 prepareInstalledDevelLib libportmidi 166 167 fixPkgconfig 168 169 packageEntries devel \ 170 $developDir \ 171 $libDir/cmake 172 173 packageEntries tools \ 174 $binDir 175 176 if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then 177 packageEntries java \ 178 $libDir/libpmjni.so* \ 179 $libDir/pmdefaults.jar \ 180 "$preferencesDir/PortMidi Setup" \ 181 $dataDir # this contains the Deskbar symlink 182 fi 183} 184 185TEST() 186{ 187 # the tests are individual commands that need to be run interactively 188 true 189} 190