diff options
author | Brad King <brad.king@kitware.com> | 2013-02-14 14:58:29 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-02-14 15:16:36 (GMT) |
commit | baa33acbdaa3bf88fe1fc591562574ab43b056fe (patch) | |
tree | ca65ce42428f9ed4e10e01830a844fb364317677 /Modules/Platform/AIX-GNU.cmake | |
parent | 171b0993d9596bd3d8e7363515346c6313e7d3a2 (diff) | |
download | CMake-baa33acbdaa3bf88fe1fc591562574ab43b056fe.zip CMake-baa33acbdaa3bf88fe1fc591562574ab43b056fe.tar.gz CMake-baa33acbdaa3bf88fe1fc591562574ab43b056fe.tar.bz2 |
AIX-GNU: Put implicit link directories in runtime libpath (#13909)
The GNU compiler front-ends on AIX invoke the linker with flags of the
form "-L/path/to/gnu/runtime/lib" to tell ld where to find the language
runtime libraries. They depend on the default libpath behavior
documented in "man ld" to add the -L paths also to the runtime libpath
so the dynamic loader can find the language runtime libraries. This
differs from platforms whose linkers have distinct -rpath flags that
non-system compilers can use to tell the dynamic loader where to find
their language runtime libraries.
Since commit 96fd5909 (Implement linking with paths to library files,
2008-01-22) CMake always passes "-Wl,-blibpath:" followed by any
project-defined RPATH plus "/usr/lib:/lib" in order to explicitly set
the runtime libpath and avoid getting all the project -L paths in the
runtime libpath. The explicit libpath prevents the GNU compiler runtime
library -L paths from being placed in the libpath and then the dynamic
loader fails to find the language runtime libraries.
CMake already detects the implicit link directories for each language
since commit 07ea19ad (Implicit link info for C, CXX, and Fortran,
2009-07-23). Add the implicit link directories to the explicit runtime
libpath for GNU compilers on AIX to fix this use case.
Diffstat (limited to 'Modules/Platform/AIX-GNU.cmake')
-rw-r--r-- | Modules/Platform/AIX-GNU.cmake | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Modules/Platform/AIX-GNU.cmake b/Modules/Platform/AIX-GNU.cmake index 81ba365..a73a7a2 100644 --- a/Modules/Platform/AIX-GNU.cmake +++ b/Modules/Platform/AIX-GNU.cmake @@ -23,4 +23,5 @@ macro(__aix_compiler_gnu lang) set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG_SEP ":") set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS} -Wl,-G,-brtl,-bnoipath") set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-Wl,-brtl,-bnoipath,-bexpall") # +s, flag for exe link to use shared lib + set(CMAKE_${lang}_USE_IMPLICIT_LINK_DIRECTORIES_IN_RUNTIME_PATH 1) endmacro() |