Open
Conversation
- use make's features to get the platform detection out of the shell script - make the library file a real target: now use 'make libsvm.so.2' instead of 'make lib' (but the latter is still there for backwards compatibility) - don't explicitly embed -soname (Linux) or -install_name (OS X); rather, let the platform decide. Because of this, the target is built with its final name and then linked to its versioned name, instead of the other way around.
static library lines via MacPorts: https://trac.macports.org/browser/trunk/dports/math/libsvm/files/patch-Makefile.diff
MinGW describes the differences well: http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use By following this convention, libsvm should be compatible with MinGW.
Closed
There was a problem hiding this comment.
out of curiosity: Couldn't we use implicit make rules for the 4 targets above?
Author
There was a problem hiding this comment.
Yes. 100%. I can add these, or you can fork my branch, PR me, and I'll pull, if you want the credit in the log for it.
Unfortunately I don't think the authors pay close attention to this repo---their official one seems private---so we will have to wait a while to see what they think.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Because of this, the target is built with its final name and then linked to its versioned name, instead of the other way around.
OS X auto-embeds -install_name:
Linux doesn't embed -soname (but maybe it should??):
But this is inconsistent with what I've observed the system libraries on my Linux. Hence, I am not entirely sold on the idea of removing -soname, and if you think it is important I can easily revert it.
Also, please investigate what downstream is doing to your package. You can get clues from them, or you need to beat them over the head with a cluestick. I am not familiar enough to judge which.
macports added .dylib-specific flags: -current_version and -compatibility_version. I am not sure how important these are to OS X. The .dylib works without them, but it might be worthwhile to play by Apple's rules.
Debian/Ubuntu thinks LVER=3 and packages libsvm as "libsvm3", but your SHVER=2; what gives?
In good news, libsvm installs almost unmodified on ArchLinux. All they had to add was
make liband where files get finally installed.