The diff below updates audio/portmidi to 2.0.4. (I have already submitted this update some time ago, see https://marc.info/?l=openbsd-ports&m=168824866808246)
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 I have build-tested the following dependent ports: audio/audacity audio/mscore devel/pygame emulators/hatari games/dsda-doom games/odamex graphics/darktable Everything seems to work as before, except for audio/mscore, which is now picking up portmidi. I will send a diff for mscore as soon as this diff is committed. I'm not 100% sure that no other port is picking it up, but I don't think so. Any comments or oks? Index: Makefile =================================================================== RCS file: /cvs/ports/audio/portmidi/Makefile,v retrieving revision 1.7 diff -u -p -u -p -r1.7 Makefile --- Makefile 7 Nov 2023 14:19:20 -0000 1.7 +++ Makefile 8 May 2025 13:04:24 -0000 @@ -1,33 +1,24 @@ COMMENT = library for real time input and output of MIDI data -DISTNAME = portmidi-src-217 -PKGNAME = portmidi-217 -REVISION = 1 +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 = https://portmedia.sourceforge.net/ - # ISC PERMIT_PACKAGE = Yes WANTLIB = pthread sndio -SITES = ${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 -u -p -r1.1.1.1 distinfo --- distinfo 23 Mar 2019 13:30:08 -0000 1.1.1.1 +++ distinfo 8 May 2025 13:04:24 -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: /cvs/ports/audio/portmidi/files/portmidi.pc.in,v retrieving revision 1.1.1.1 diff -u -p -u -p -r1.1.1.1 portmidi.pc.in --- files/portmidi.pc.in 23 Mar 2019 13:30:08 -0000 1.1.1.1 +++ files/portmidi.pc.in 8 May 2025 13:04:24 -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 -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 8 May 2025 13:04:24 -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 -u -p -r1.2 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 11 Mar 2022 18:20:27 -0000 1.2 +++ patches/patch-CMakeLists_txt 8 May 2025 13:04:24 -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 -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 8 May 2025 13:04:24 -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 -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 8 May 2025 13:04:24 -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 -u -p -r1.2 PLIST --- pkg/PLIST 11 Mar 2022 18:20:27 -0000 1.2 +++ pkg/PLIST 8 May 2025 13:04:24 -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