Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: Tell cmake to set 'rpath' so the installed 'cmark' can find 'l…
…ibcmark.so' Before this commit, the 'cmark' executable didn't inform the dynamic linker where to look for the 'libcmark' shared object; this becomes an irritation when 'libcmark' is installed in an unorthodox location: $ ldd /path/to/installed/files/bin/cmark linux-gate.so.1 (0xb7ed7000) libcmark.so.0.31.0 => not found libc.so.6 => /usr/lib/libc.so.6 (0xb7cf3000) /lib/ld-linux.so.2 => /usr/lib/ld-linux.so.2 (0xb7ed8000) Because of this commit, the 'cmark' executable's 'rpath' setting (or equivalent) is set upon installation, thereby providing the required search directory: $ ldd /path/to/installed/files/bin/cmark linux-gate.so.1 (0xb7ef2000) libcmark.so.0.31.0 => /path/to/installed/files/lib/libcmark.so.0.31.0 (0xb7e95000) libc.so.6 => /usr/lib/libc.so.6 (0xb7cbc000) /lib/ld-linux.so.2 => /usr/lib/ld-linux.so.2 (0xb7ef3000) There is some intelligence behind whether 'rpath' is set at all: * If a shared object (e.g., 'libcmark') is going to be installed in a standard location, then such location is not added to 'rpath'. * A non-standard installation will cause 'rpath' to include at least the following path provided by cmake: "${CMAKE_INSTALL_FULL_LIBDIR}" * Also, cmake has been instructed to append any non-standard path to 'rpath' if cmake is aware of an external dependency from such a path. Of course, this will only help on a system that supports an 'rpath' feature known to cmake; for example, Windows has no such feature, and so all of this will presumably be ignored when building under that system.
- Loading branch information