On Sun, Jul 02, 2023 at 10:54:33AM +0100, Stuart Henderson wrote:
> On 2023/07/01 22:37, Raphael Graf wrote:
> > The project has moved to github and the version numbering scheme has 
> > changed.
> > A list of changes is here: https://github.com/PortMidi/portmidi/releases
> > 
> > Audacity still works and I have also compile-tested emulators/hatari and
> > games/odamex.
> > 
> > The delayed playback of midi-mesages is still not implemented in the
> > sndio-specific code (see XXX in files/pm_sndio/pmsndio.c). I doubt that it
> > is even possible to do in userland because of the timing requirements.
> > Does anybody have an idea how to implement this?
> > 
> > 
> > Index: Makefile
> > ===================================================================
> > RCS file: /cvs/ports/audio/portmidi/Makefile,v
> > retrieving revision 1.5
> > diff -u -p -u -p -r1.5 Makefile
> > --- Makefile        11 Mar 2022 18:20:27 -0000      1.5
> > +++ Makefile        1 Jul 2023 20:06:03 -0000
> > @@ -1,33 +1,28 @@
> >  COMMENT =  library for real time input and output of MIDI data
> >  
> > -DISTNAME = portmidi-src-217
> > -PKGNAME =  portmidi-217
> > -REVISION = 0
> > +GH_ACCOUNT =       PortMidi
> > +GH_PROJECT =       portmidi
> > +GH_TAGNAME =       v2.0.4
> > +EPOCH =            0
> >  
> > -SHARED_LIBS =      portmidi        0.0
> > +DISTNAME = portmidi-${GH_TAGNAME:S/v//}
> 
> You don't need this, it's set automatically from GH_PROJECT and
> GH_TAGNAME.
> 
> > +
> > +SHARED_LIBS =      portmidi        1.0
> >  
> >  CATEGORIES =       audio
> >  
> > -HOMEPAGE = http://portmedia.sourceforge.net/
> > +HOMEPAGE = https://github.com/PortMidi/portmidi
> 
> this is set automatically by GH_* too.
> 
> The rest reads ok but I don't have hw to test.

Thank you. Below is an updated diff.

For testing midi-output from audacity, fluidsynth can be used. Just start
fluidsynth and then open a midi file in audacity:
$ pkg_add fluidsynth generaluser-gs-soundfont
$ fluidsynth /usr/local/share/generaluser-gs/GeneralUser_GS.sf2


Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/portmidi/Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile
--- Makefile    11 Mar 2022 18:20:27 -0000      1.5
+++ Makefile    2 Jul 2023 17:57:41 -0000
@@ -1,33 +1,24 @@
 COMMENT =      library for real time input and output of MIDI data
 
-DISTNAME =     portmidi-src-217
-PKGNAME =      portmidi-217
-REVISION =     0
+GH_ACCOUNT =   PortMidi
+GH_PROJECT =   portmidi
+GH_TAGNAME =   v2.0.4
+EPOCH =                0
 
-SHARED_LIBS =  portmidi        0.0
+SHARED_LIBS =  portmidi        1.0
 
 CATEGORIES =   audio
 
-HOMEPAGE =     http://portmedia.sourceforge.net/
-
 # ISC
 PERMIT_PACKAGE =       Yes
 
 WANTLIB        =       pthread sndio
 
-MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=portmedia/}
-EXTRACT_SUFX = .zip
-
-MODULES =       devel/cmake
+MODULES =      devel/cmake
 
-CONFIGURE_ARGS+= -DPROJECT_BINARY_DIR=Release \
-               -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${WRKBUILD}/Release \
-               -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${WRKBUILD}/Release \
-               -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${WRKBUILD}/Release
+CONFIGURE_ARGS+=       -DUSE_SNDIO=ON
 
 NO_TEST =      Yes
-
-WRKDIST =      ${WRKDIR}/portmidi
 
 FIX_CRLF_FILES = porttime/ptlinux.c
 
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/portmidi/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 distinfo
--- distinfo    23 Mar 2019 13:30:08 -0000      1.1.1.1
+++ distinfo    2 Jul 2023 17:57:41 -0000
@@ -1,2 +1,2 @@
-SHA256 (portmidi-src-217.zip) = COmokr2AvbERUhP7ctwpp78v8QizeBgFhqpl88/ULg8=
-SIZE (portmidi-src-217.zip) = 1030830
+SHA256 (portmidi-2.0.4.tar.gz) = ZIk+gjrhRsq9Otf5qanFMydGq+eEfFV7mbJXevqKYHw=
+SIZE (portmidi-2.0.4.tar.gz) = 263225
Index: files/portmidi.pc.in
===================================================================
RCS file: files/portmidi.pc.in
diff -N files/portmidi.pc.in
--- files/portmidi.pc.in        23 Mar 2019 13:30:08 -0000      1.1.1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-prefix=@DEST_DIR@
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: libportmidi
-Description: Portable midi I/O
-Version: 217
-
-Libs: -L${libdir} -lportmidi
-Cflags: -I${includedir}
Index: files/pm_sndio/pmsndio.c
===================================================================
RCS file: /cvs/ports/audio/portmidi/files/pm_sndio/pmsndio.c,v
retrieving revision 1.2
diff -u -p -r1.2 pmsndio.c
--- files/pm_sndio/pmsndio.c    10 May 2019 12:55:19 -0000      1.2
+++ files/pm_sndio/pmsndio.c    2 Jul 2023 17:57:41 -0000
@@ -12,8 +12,8 @@
 #include "pminternal.h"
 #include "porttime.h"
 
-#define NDEVS 9 
-#define SYSEX_MAXLEN 1024 
+#define NDEVS 9
+#define SYSEX_MAXLEN 1024
 
 #define SYSEX_START     0xf0
 #define SYSEX_END       0xf7
@@ -45,18 +45,18 @@ void pm_init()
 
     /* default */
     strcpy(devs[0].name, MIO_PORTANY);
-    pm_add_device("SNDIO", devs[k].name, TRUE, (void *) &devs[k],
+    pm_add_device("SNDIO", devs[k].name, TRUE, FALSE, (void *) &devs[k],
         &pm_sndio_in_dictionary);
-    pm_add_device("SNDIO", devs[k].name, FALSE, (void *) &devs[k],
+    pm_add_device("SNDIO", devs[k].name, FALSE, FALSE, (void *) &devs[k],
         &pm_sndio_out_dictionary);
     k++;
 
     for (i = 0; i < 4; i++) {
         for (j = 0; j < 2; j++) {
             sprintf(devs[k].name, "%s/%d", devices[i], j);
-            pm_add_device("SNDIO", devs[k].name, TRUE, (void *) &devs[k],
+            pm_add_device("SNDIO", devs[k].name, TRUE, FALSE, (void *) 
&devs[k],
               &pm_sndio_in_dictionary);
-            pm_add_device("SNDIO", devs[k].name, FALSE, (void *) &devs[k],
+            pm_add_device("SNDIO", devs[k].name, FALSE, FALSE, (void *) 
&devs[k],
               &pm_sndio_out_dictionary);
             k++;
         }
@@ -85,7 +85,7 @@ void pm_term(void)
 
 PmDeviceID Pm_GetDefaultInputDeviceID() {
     Pm_Initialize();
-    return pm_default_input_device_id; 
+    return pm_default_input_device_id;
 }
 
 PmDeviceID Pm_GetDefaultOutputDeviceID() {
@@ -107,14 +107,14 @@ static int midi_message_length(PmMessage
         return common_len[st & 7];
     else if (st >= 0x80)
         return voice_len[(st >> 4) & 7];
-    else 
+    else
         return 0;
 }
 
 void* input_thread(void *param)
 {
     PmInternal *midi = (PmInternal*)param;
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
     struct pollfd pfd[1];
     nfds_t nfds;
     unsigned char st = 0, c = 0;
@@ -206,8 +206,7 @@ static void set_mode(struct mio_dev *dev
 
 static PmError sndio_out_open(PmInternal *midi, void *driverInfo)
 {
-    descriptor_type desc = &descriptors[midi->device_id];
-    struct mio_dev *dev = (struct mio_dev *) desc->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
     if (dev->mode & MIO_OUT)
         return pmNoError;
@@ -219,14 +218,12 @@ static PmError sndio_out_open(PmInternal
         return pmHostError;
     }
 
-    midi->descriptor = (void *)dev;
     return pmNoError;
 }
 
 static PmError sndio_in_open(PmInternal *midi, void *driverInfo)
 {
-    descriptor_type desc = &descriptors[midi->device_id];
-    struct mio_dev *dev = (struct mio_dev *) desc->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
     if (dev->mode & MIO_IN)
         return pmNoError;
@@ -237,7 +234,6 @@ static PmError sndio_in_open(PmInternal 
           "mio_open (input) failed: %s\n", dev->name);
         return pmHostError;
     }
-    midi->descriptor = (void *)dev;
     pthread_attr_t attr;
     pthread_attr_init(&attr);
     pthread_create(&dev->thread, &attr, input_thread, ( void* )midi);
@@ -246,7 +242,7 @@ static PmError sndio_in_open(PmInternal 
 
 static PmError sndio_out_close(PmInternal *midi)
 {
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
     if (dev->mode & MIO_OUT)
         set_mode(dev, dev->mode & ~MIO_OUT);
@@ -255,7 +251,7 @@ static PmError sndio_out_close(PmInterna
 
 static PmError sndio_in_close(PmInternal *midi)
 {
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
     if (dev->mode & MIO_IN) {
         set_mode(dev, dev->mode & ~MIO_IN);
@@ -280,7 +276,7 @@ static PmError do_write(struct mio_dev *
     size_t w = mio_write(dev->hdl, addr, nbytes);
 
     if (w != nbytes) {
-        snprintf(dev->errmsg, PM_HOST_ERROR_MSG_LEN, 
+        snprintf(dev->errmsg, PM_HOST_ERROR_MSG_LEN,
           "mio_write failed, bytes written:%zu\n", w);
         return pmHostError;
     }
@@ -290,14 +286,19 @@ static PmError do_write(struct mio_dev *
 static PmError sndio_write_byte(PmInternal *midi, unsigned char byte,
                         PmTimestamp timestamp)
 {
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
-    return do_write(dev, &byte, 1);
+    if (midi->latency > 0) {
+        /* XXX the byte should be queued for later playback */
+        return do_write(dev, &byte, 1);
+    } else {
+        return do_write(dev, &byte, 1);
+    }
 }
 
 static PmError sndio_write_short(PmInternal *midi, PmEvent *event)
 {
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
     int nbytes = midi_message_length(event->message);
 
     if (midi->latency > 0) {
@@ -321,14 +322,14 @@ PmError sndio_sysex(PmInternal *midi, Pm
 
 static unsigned int sndio_has_host_error(PmInternal *midi)
 {
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
     return (dev->errmsg[0] != '\0');
 }
 
 static void sndio_get_host_error(PmInternal *midi, char *msg, unsigned int len)
 {
-    struct mio_dev *dev = (struct mio_dev *) midi->descriptor;
+    struct mio_dev *dev = pm_descriptors[midi->device_id].descriptor;
 
     strlcpy(msg, dev->errmsg, len);
     dev->errmsg[0] = '\0';
@@ -347,7 +348,6 @@ pm_fns_node pm_sndio_in_dictionary = {
     sndio_in_close,
     success_poll,
     sndio_has_host_error,
-    sndio_get_host_error
 };
 
 pm_fns_node pm_sndio_out_dictionary = {
@@ -363,6 +363,5 @@ pm_fns_node pm_sndio_out_dictionary = {
     sndio_out_close,
     none_poll,
     sndio_has_host_error,
-    sndio_get_host_error
 };
 
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: /cvs/ports/audio/portmidi/patches/patch-CMakeLists_txt,v
retrieving revision 1.2
diff -u -p -r1.2 patch-CMakeLists_txt
--- patches/patch-CMakeLists_txt        11 Mar 2022 18:20:27 -0000      1.2
+++ patches/patch-CMakeLists_txt        2 Jul 2023 17:57:41 -0000
@@ -1,16 +1,24 @@
+-Option USE_SNDIO
+-Install static lib as well
+
 Index: CMakeLists.txt
 --- CMakeLists.txt.orig
 +++ CMakeLists.txt
-@@ -73,5 +73,11 @@ add_subdirectory(pm_test)
- add_subdirectory(pm_dylib)
+@@ -26,6 +26,8 @@ option(PM_USE_STATIC_RUNTIME 
+        "Use MSVC static runtime. Only applies when BUILD_SHARED_LIBS is OFF"
+        ON)
  
- # Cannot figure out how to make an xcode Java application with CMake
--add_subdirectory(pm_java)
-+#add_subdirectory(pm_java)
++option(USE_SNDIO "Use sndio backend" OFF)
++
+ # MSVCRT_DLL is used to construct the MSVC_RUNTIME_LIBRARY property
+ #  (see pm_common/CMakeLists.txt and pm_test/CMakeLists.txt)
+ if(PM_USE_STATIC_RUNTIME AND NOT BUILD_SHARED_LIBS)
+@@ -117,7 +119,7 @@ if(BUILD_JAVA_NATIVE_INTERFACE)
+ endif(BUILD_JAVA_NATIVE_INTERFACE)
  
-+set(DEST_DIR "${CMAKE_INSTALL_PREFIX}")
-+CONFIGURE_FILE("portmidi.pc.in" "portmidi.pc" @ONLY)
-+install(FILES
-+  "${CMAKE_CURRENT_BINARY_DIR}/portmidi.pc"
-+  DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig"
-+)
+ # Install the libraries and headers (Linux and Mac OS X command line)
+-INSTALL(TARGETS portmidi ${PMJNI_IF_EXISTS}
++INSTALL(TARGETS portmidi portmidi_s ${PMJNI_IF_EXISTS}
+   EXPORT PortMidiTargets
+   LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+   ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
Index: patches/patch-pm_common_CMakeLists_txt
===================================================================
RCS file: /cvs/ports/audio/portmidi/patches/patch-pm_common_CMakeLists_txt,v
retrieving revision 1.2
diff -u -p -r1.2 patch-pm_common_CMakeLists_txt
--- patches/patch-pm_common_CMakeLists_txt      11 Mar 2022 18:20:27 -0000      
1.2
+++ patches/patch-pm_common_CMakeLists_txt      2 Jul 2023 17:57:41 -0000
@@ -1,55 +1,42 @@
+-Build static library as well
+-Use sndio backend
+
 Index: pm_common/CMakeLists.txt
 --- pm_common/CMakeLists.txt.orig
 +++ pm_common/CMakeLists.txt
-@@ -66,21 +66,12 @@ if(UNIX)
-     set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
-     message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
-   else(APPLE)
--    # LINUX settings...
--    include(FindJNI)
--    message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
--    message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
--    message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2})
--    message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY})
--    set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
--    # libjvm.so is found relative to JAVA_INCLUDE_PATH:
--    set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so)
+@@ -37,9 +37,10 @@ set(PM_LIB_PUBLIC_SRC ${PMDIR}/pm_common/portmidi.c
+                       ${PMDIR}/pm_common/pmutil.c
+                       ${PMDIR}/porttime/porttime.c)
+ add_library(portmidi ${PM_LIB_PUBLIC_SRC})
++add_library(portmidi_s STATIC ${PM_LIB_PUBLIC_SRC})
  
--    set(LINUXSRC pmlinuxalsa pmlinux finddefault)
--    prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
-+    set(LINUXSRC pmsndio)
-+    prepend_path(LIBSRC ../pm_sndio/ ${LINUXSRC})
-     list(APPEND LIBSRC ../porttime/ptlinux)
+ # MSVCRT_DLL is "DLL" for shared runtime library, and "" for static:
+-set_target_properties(portmidi PROPERTIES
++set_target_properties(portmidi portmidi_s PROPERTIES
+                       VERSION ${LIBRARY_VERSION}
+                       SOVERSION ${LIBRARY_SOVERSION}
+                       OUTPUT_NAME "${PM_ACTUAL_LIB_NAME}"
+@@ -78,8 +79,22 @@ if(NOT WIN32)
+   find_package(Threads REQUIRED)
+ endif()
  
--    set(PM_NEEDED_LIBS pthread asound)
-+    set(PM_NEEDED_LIBS pthread sndio)
-   endif(APPLE)
- else(UNIX)
-   if(WIN32)
-@@ -99,7 +90,6 @@ else(UNIX)
-     set(PM_NEEDED_LIBS winmm.lib)
-   endif(WIN32)
- endif(UNIX)
--set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY})
- 
- # this completes the list of library sources by adding shared code
- list(APPEND LIBSRC pmutil portmidi)
-@@ -109,17 +99,10 @@ add_library(portmidi-static ${LIBSRC})
- set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s")
- target_link_libraries(portmidi-static ${PM_NEEDED_LIBS})
- 
--# define the jni library
--include_directories(${JAVA_INCLUDE_PATHS})
- 
--set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c)
--add_library(pmjni SHARED ${JNISRC})
--target_link_libraries(pmjni ${JNI_EXTRA_LIBS})
--set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib")
--
- # install the libraries (Linux and Mac OS X command line)
- if(UNIX)
--  INSTALL(TARGETS portmidi-static pmjni
-+  INSTALL(TARGETS portmidi-static
-     LIBRARY DESTINATION /usr/local/lib
-     ARCHIVE DESTINATION /usr/local/lib)
- # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here
++# Check for sndio
++include (FindPackageHandleStandardArgs)
++find_path(SNDIO_INCLUDE_DIRS NAMES sndio.h)
++find_library(SNDIO_LIBRARY sndio)
++find_package_handle_standard_args(Sndio
++    REQUIRED_VARS SNDIO_LIBRARY SNDIO_INCLUDE_DIRS)
++
+ # first include the appropriate system-dependent file:
+-if(UNIX AND APPLE)
++if(SNDIO_FOUND AND USE_SNDIO)
++  set(PM_LIB_PRIVATE_SRC
++      ${PMDIR}/porttime/ptlinux.c
++      ${PMDIR}/pm_sndio/pmsndio.c)
++  set(PM_NEEDED_LIBS Threads::Threads ${SNDIO_LIBRARY} PARENT_SCOPE)
++  target_link_libraries(portmidi PRIVATE Threads::Threads ${SNDIO_LIBRARY})
++  target_include_directories(portmidi PRIVATE ${SNDIO_INCLUDE_DIRS})
++elseif(UNIX AND APPLE)
+   set(Threads::Threads "" PARENT_SCOPE)
+   find_library(COREAUDIO_LIBRARY CoreAudio REQUIRED)
+   find_library(COREFOUNDATION_LIBRARY CoreFoundation REQUIRED)
Index: patches/patch-pm_dylib_CMakeLists_txt
===================================================================
RCS file: patches/patch-pm_dylib_CMakeLists_txt
diff -N patches/patch-pm_dylib_CMakeLists_txt
--- patches/patch-pm_dylib_CMakeLists_txt       11 Mar 2022 18:20:27 -0000      
1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,37 +0,0 @@
-Index: pm_dylib/CMakeLists.txt
---- pm_dylib/CMakeLists.txt.orig
-+++ pm_dylib/CMakeLists.txt
-@@ -62,30 +62,11 @@ if(UNIX)
-     set(INSTALL_NAME_DIR "/usr/local/lib")
-     message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
-   else(APPLE)
--    # LINUX settings...
--    include(FindJNI)
--    # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
--    # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
--    # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
--    # note: user might need to set JAVA_INCLUDE_PATH manually
--    #
--    # this will probably break on BSD and other Unix systems; the fix
--    # depends on whether FindJNI can find Java or not. If yes, then
--    # we should try to rely on automatically set JAVA_INCLUDE_PATH and
--    # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
--    # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
--    # because JAVA_INCLUDE_PATH2 is pretty obscure)
--    set(JAVA_INCLUDE_PATH  ${JAVA_INCLUDE_PATH-UNKNOWN}
--        CACHE STRING "where to find Java SDK include directory")
--    set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
--    # libjvm.so is found relative to JAVA_INCLUDE_PATH:
--    set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
--
--    set(LINUXSRC pmlinuxalsa pmlinux finddefault)
--    prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
-+    set(LINUXSRC pmsndio)
-+    prepend_path(LIBSRC ../pm_sndio/ ${LINUXSRC})
-     list(APPEND LIBSRC ../porttime/ptlinux)
- 
--    set(PM_NEEDED_LIBS pthread asound)
-+    set(PM_NEEDED_LIBS pthread sndio)
-   endif(APPLE)
- else(UNIX)
-   if(WIN32)
Index: patches/patch-pm_test_CMakeLists_txt
===================================================================
RCS file: patches/patch-pm_test_CMakeLists_txt
diff -N patches/patch-pm_test_CMakeLists_txt
--- patches/patch-pm_test_CMakeLists_txt        11 Mar 2022 18:20:27 -0000      
1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-Index: pm_test/CMakeLists.txt
---- pm_test/CMakeLists.txt.orig
-+++ pm_test/CMakeLists.txt
-@@ -1,4 +1,5 @@
- # pm_test
-+cmake_policy(SET CMP0037 OLD)
- 
- # set the build directory to be in portmidi, not in portmidi/pm_test
- # this is required for Xcode:
Index: patches/patch-porttime_ptlinux_c
===================================================================
RCS file: /cvs/ports/audio/portmidi/patches/patch-porttime_ptlinux_c,v
retrieving revision 1.3
diff -u -p -r1.3 patch-porttime_ptlinux_c
--- patches/patch-porttime_ptlinux_c    11 Mar 2022 18:20:27 -0000      1.3
+++ patches/patch-porttime_ptlinux_c    2 Jul 2023 17:57:41 -0000
@@ -1,47 +1,22 @@
+Upstream commit 3209da8c9865efa3dbc1a2e642350c154df20d2a
+
 Index: porttime/ptlinux.c
 --- porttime/ptlinux.c.orig
 +++ porttime/ptlinux.c
-@@ -31,14 +31,13 @@ CHANGE LOG
+@@ -31,11 +31,15 @@ CHANGE LOG
  #include "porttime.h"
- #include "sys/time.h"
+ #include "time.h"
  #include "sys/resource.h"
 -#include "sys/timeb.h"
  #include "pthread.h"
  
  #define TRUE 1
  #define FALSE 0
++
++#ifndef CLOCK_MONOTONIC_RAW
++  #define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
++#endif
++
  
  static int time_started_flag = FALSE;
--static struct timeb time_offset = {0, 0, 0, 0};
-+static struct timespec time_offset = {0, 0};
- static pthread_t pt_thread_pid;
- static int pt_thread_created = FALSE;
- 
-@@ -79,7 +78,7 @@ static void *Pt_CallbackProc(void *p)
- PtError Pt_Start(int resolution, PtCallback *callback, void *userData)
- {
-     if (time_started_flag) return ptNoError;
--    ftime(&time_offset); /* need this set before process runs */
-+    clock_gettime(CLOCK_MONOTONIC, &time_offset); /* need this set before 
process runs */
-     if (callback) {
-         int res;
-         pt_callback_parameters *parms = (pt_callback_parameters *) 
-@@ -120,12 +119,12 @@ int Pt_Started()
- 
- PtTimestamp Pt_Time()
- {
--    long seconds, milliseconds;
--    struct timeb now;
--    ftime(&now);
--    seconds = now.time - time_offset.time;
--    milliseconds = now.millitm - time_offset.millitm;
--    return seconds * 1000 + milliseconds;
-+    long seconds, nanoseconds;
-+    struct timespec now;
-+    clock_gettime(CLOCK_MONOTONIC, &now);
-+    seconds = now.tv_sec - time_offset.tv_sec;
-+    nanoseconds = now.tv_nsec - time_offset.tv_nsec;
-+    return seconds * 1000 + nanoseconds / 1000000;
- }
- 
- 
+ static struct timespec time_offset = {0, 0};
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/audio/portmidi/pkg/PLIST,v
retrieving revision 1.2
diff -u -p -r1.2 PLIST
--- pkg/PLIST   11 Mar 2022 18:20:27 -0000      1.2
+++ pkg/PLIST   2 Jul 2023 17:57:41 -0000
@@ -1,5 +1,12 @@
+include/pmutil.h
 include/portmidi.h
 include/porttime.h
+lib/cmake/
+lib/cmake/PortMidi/
+lib/cmake/PortMidi/PortMidiConfig.cmake
+lib/cmake/PortMidi/PortMidiConfigVersion.cmake
+lib/cmake/PortMidi/PortMidiTargets${MODCMAKE_BUILD_SUFFIX}
+lib/cmake/PortMidi/PortMidiTargets.cmake
+@static-lib lib/libportmidi.a
 @lib lib/libportmidi.so.${LIBportmidi_VERSION}
-lib/libportmidi_s.a
 lib/pkgconfig/portmidi.pc

Reply via email to