The attached patch fixes the problem described in bug 200969: currently, libjsoncpp.so is not properly versioned by SCons; in other words, there's no SONAME in the library's ELF header, which confuses the linker when creating binaries that link against it. This causes the problems in the bug I mentioned before. Solve it by using InstallVersionedLib(), available since SCons 2.3.0: this call is able to properly version the shared library the way we need it. Since there is no support for actually installing the files outside the build directory, we have to recreate the required symlinks ourselves in the Makefile. Another related change is that we now create the libraries with the proper names instead of doing that in the Makefile.
Created attachment 157994 [details] Proposed patch
*** Bug 201056 has been marked as a duplicate of this bug. ***
A commit references this bug: Author: rakuco Date: Tue Jun 30 21:43:06 UTC 2015 New revision: 391009 URL: https://svnweb.freebsd.org/changeset/ports/391009 Log: Properly version libjsoncpp.so. Fix the problem described in bug 200969: currently, libjsoncpp.so is not properly versioned by SCons; in other words, there's no SONAME in the library's ELF header, which confuses the linker when creating binaries that link against it. Solve it by using InstallVersionedLib(), available since SCons 2.3.0: this call is able to properly version the shared library the way we need it. Since there is no support for actually installing the files outside the build directory, we have to recreate the required symlinks ourselves in the Makefile. Another related change is that we now create the libraries with the proper names instead of doing that in the Makefile. I'm (ab)using the maintainer's approval given to bug 200939, as swills's latest patch includes this change as well. PR: 200969 PR: 201057 Approved by: johan@stromnet.se (maintainer) Changes: head/devel/jsoncpp/Makefile head/devel/jsoncpp/files/patch-SConstruct head/devel/jsoncpp/files/patch-src_lib__json_sconscript head/devel/jsoncpp/pkg-plist