mixxxdj / portmidi

PortMidi is a cross platform (Windows, macOS, Linux, and BSDs which support alsalib) library for interfacing with operating systems' MIDI I/O APIs.
Other
19 stars 7 forks source link

CMake: set library versions #2

Closed Be-ing closed 3 years ago

Be-ing commented 3 years ago

ping @PureTryOut

Be-ing commented 3 years ago

It looks like the old build system never set the library version, so I guess 1.0.0 is appropriate? These are the files installed by the portmidi-devel package on Fedora:

portmidi on  library_version via △ v3.20.5 took 2s 
❯ rpm -ql portmidi-devel
/usr/include/pmutil.h
/usr/include/portmidi.h
/usr/include/porttime.h
/usr/lib64/libportmidi.so
/usr/share/doc/portmidi-devel
/usr/share/doc/portmidi-devel/README.txt
/usr/share/doc/portmidi-devel/html
/usr/share/doc/portmidi-devel/html/Info.plist
/usr/share/doc/portmidi-devel/html/Makefile
/usr/share/doc/portmidi-devel/html/Nodes.xml
/usr/share/doc/portmidi-devel/html/Tokens.xml
/usr/share/doc/portmidi-devel/html/annotated.html
/usr/share/doc/portmidi-devel/html/annotated_dup.js
/usr/share/doc/portmidi-devel/html/bc_s.png
/usr/share/doc/portmidi-devel/html/bdwn.png
/usr/share/doc/portmidi-devel/html/classes.html
/usr/share/doc/portmidi-devel/html/closed.png
/usr/share/doc/portmidi-devel/html/dir_ded2072a22a771178971ff408a022519.html
/usr/share/doc/portmidi-devel/html/doc.png
/usr/share/doc/portmidi-devel/html/doxygen.css
/usr/share/doc/portmidi-devel/html/doxygen.svg
/usr/share/doc/portmidi-devel/html/dynsections.js
/usr/share/doc/portmidi-devel/html/files.html
/usr/share/doc/portmidi-devel/html/files_dup.js
/usr/share/doc/portmidi-devel/html/folderclosed.png
/usr/share/doc/portmidi-devel/html/folderopen.png
/usr/share/doc/portmidi-devel/html/functions.html
/usr/share/doc/portmidi-devel/html/functions_vars.html
/usr/share/doc/portmidi-devel/html/group__grp__device.html
/usr/share/doc/portmidi-devel/html/group__grp__device.js
/usr/share/doc/portmidi-devel/html/group__grp__events__filters.html
/usr/share/doc/portmidi-devel/html/group__grp__events__filters.js
/usr/share/doc/portmidi-devel/html/group__grp__io.html
/usr/share/doc/portmidi-devel/html/group__grp__io.js
/usr/share/doc/portmidi-devel/html/index.html
/usr/share/doc/portmidi-devel/html/jquery.js
/usr/share/doc/portmidi-devel/html/menu.js
/usr/share/doc/portmidi-devel/html/menudata.js
/usr/share/doc/portmidi-devel/html/modules.html
/usr/share/doc/portmidi-devel/html/modules.js
/usr/share/doc/portmidi-devel/html/nav_f.png
/usr/share/doc/portmidi-devel/html/nav_g.png
/usr/share/doc/portmidi-devel/html/nav_h.png
/usr/share/doc/portmidi-devel/html/navtree.css
/usr/share/doc/portmidi-devel/html/navtree.js
/usr/share/doc/portmidi-devel/html/navtreedata.js
/usr/share/doc/portmidi-devel/html/navtreeindex0.js
/usr/share/doc/portmidi-devel/html/open.png
/usr/share/doc/portmidi-devel/html/portmidi_8c_source.html
/usr/share/doc/portmidi-devel/html/portmidi_8h_source.html
/usr/share/doc/portmidi-devel/html/resize.js
/usr/share/doc/portmidi-devel/html/splitbar.png
/usr/share/doc/portmidi-devel/html/structPmDeviceInfo.html
/usr/share/doc/portmidi-devel/html/structPmDeviceInfo.js
/usr/share/doc/portmidi-devel/html/structPmEvent.html
/usr/share/doc/portmidi-devel/html/structPmEvent.js
/usr/share/doc/portmidi-devel/html/sync_off.png
/usr/share/doc/portmidi-devel/html/sync_on.png
/usr/share/doc/portmidi-devel/html/tab_a.png
/usr/share/doc/portmidi-devel/html/tab_b.png
/usr/share/doc/portmidi-devel/html/tab_h.png
/usr/share/doc/portmidi-devel/html/tab_s.png
/usr/share/doc/portmidi-devel/html/tabs.css
PureTryOut commented 3 years ago

Normally the latest git tag is used as the version number. This project uses a bit of a weird version notation though, so maybe 1.0.0 is a correct version. No clue :shrug:

Be-ing commented 3 years ago

@dvzrv can you take a look at this? The Arch package for PortMidi has used the SVN revision numbers and the .so has no version.

dvzrv commented 3 years ago

@Be-ing is this going to be a drop-in replacement of the dead original upstream? If so: Thanks, that's great!

I have no clear opinion on this tbh, as I'm just glad that someone picks it up. With most downstreams the consensus seems to be to use the original svn revision as version number though.

The .so version seems to be non-existent/broken (at least when looking at the Arch Linux package), so I guess you can do whatever you want pretty much ;-)

Be-ing commented 3 years ago

@Be-ing is this going to be a drop-in replacement of the dead original upstream? If so: Thanks, that's great!

Yes, all I've done is rewrite the build system with modern CMake. In the future we might implement hotplug support, or if not switch to a more actively maintained cross platform MIDI library for that.

Be-ing commented 3 years ago

I have also forked PortSMF for Tenacity and wrote a modern CMakeLists.txt for it too.

Be-ing commented 3 years ago

I changed this so the SOVERSION is 1 and the VERSION is 1.0.${CMAKE_PROJECT_VERSION}. Does that work?

Be-ing commented 3 years ago

@PureTryOut @dvzrv could you take another look at this?

PureTryOut commented 3 years ago

Seems fine to me.