-
Notifications
You must be signed in to change notification settings - Fork 462
Fix versioning informations in shared libraries #2291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix versioning informations in shared libraries #2291
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@masterleinad Please resolve conflicts.
@junghans Please review.
|
Can you rebase this on top of the merged #2288? And I will test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You want both SOVERSION and VERSION as apps will link against libkokkos.so.3 and not libkokkos.so.3.0.0, fix here: masterleinad#1
34f64a1 to
ef87292
Compare
|
Fixed. |
|
Can someone explain the reasoning behind linking .so.3 instead of .so.3.0.0? |
Good question, having just |
|
I have seen |
Ok, then let's do that. I just tested it with Cabana and Kokkos as well. |
ef87292 to
ac7e0ca
Compare
|
I dropped the last commit. |
|
Next thing: there is a compatibility check and it says "same major version". That is not true either. Kokkos promises backward compatibility not forward. I.e. code written against 3.1 will work with 3.2. But code written against 3.2 may not work against 3.1. |
|
Are you referring to the That seems to be correct reading the CMake doc: “The COMPATIBILITY mode AnyNewerVersion means that the installed package version will be considered compatible if it is newer or exactly the same as the requested version. This mode should be used for packages which are fully backward compatible, also across major versions. If SameMajorVersion is used instead, then the behaviour differs from AnyNewerVersion in that the major version number must be the same as requested, e.g. version 2.0 will not be considered compatible if 1.0 is requested. This mode should be used for packages which guarantee backward compatibility within the same major version. If ExactVersion is used, then the package is only considered compatible if the requested version matches exactly its own version number (not considering the tweak version). For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3. This mode is for packages without compatibility guarantees. If your project has more elaborated version matching rules, you will need to write your own custom ConfigVersion.cmake file instead of using this macro.” |
|
Ah ok. That is fine then. |
Related to #2283.