diff options
author | Brad King <brad.king@kitware.com> | 2011-12-12 16:37:12 -0500 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-12-14 09:32:27 -0500 |
commit | 5720e1f634b0253013b1887a924492f3dd29f012 (patch) | |
tree | 6393e0c9ce4600ded5bb55468f487c2e96bf14ab /Modules | |
parent | 6fb2a38b0a672959a7ecc8fe4d07350371486310 (diff) | |
download | cmake-5720e1f634b0253013b1887a924492f3dd29f012.tar.gz |
HP: Drive shared library linking with compiler front end
Previously we linked C, Fortran, and ASM shared libraries compiled with
the HP compiler using a direct invocation of the linker (ld). This
behavior was left historically from support for an ancient HP C compiler
that did not know how to create shared libraries. Fortran shared
libraries need to be linked with the compiler to get the language
runtime library dependencies as is already done for C++.
Update the HP-UX-HP* platform information to use the compiler front end
when linking shared libraries. This works on modern HP tools and
produces correct behavior. If there is a need to support older tools
again we can add a special case for them.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/Platform/HP-UX-HP-ASM.cmake | 4 | ||||
-rw-r--r-- | Modules/Platform/HP-UX-HP-C.cmake | 5 | ||||
-rw-r--r-- | Modules/Platform/HP-UX-HP-CXX.cmake | 2 | ||||
-rw-r--r-- | Modules/Platform/HP-UX-HP-Fortran.cmake | 5 | ||||
-rw-r--r-- | Modules/Platform/HP-UX-HP.cmake | 10 |
5 files changed, 3 insertions, 23 deletions
diff --git a/Modules/Platform/HP-UX-HP-ASM.cmake b/Modules/Platform/HP-UX-HP-ASM.cmake index 0a85905eb0..05c69e41bc 100644 --- a/Modules/Platform/HP-UX-HP-ASM.cmake +++ b/Modules/Platform/HP-UX-HP-ASM.cmake @@ -1,6 +1,2 @@ include(Platform/HP-UX-HP) __hpux_compiler_hp(ASM) - -set(CMAKE_SHARED_LIBRARY_CREATE_ASM_FLAGS "-E -b +nodefaultrpath -L/usr/lib") - -set(CMAKE_ASM_CREATE_SHARED_LIBRARY "ld <CMAKE_SHARED_LIBRARY_CREATE_ASM_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_ASM_FLAG><TARGET_SONAME> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") diff --git a/Modules/Platform/HP-UX-HP-C.cmake b/Modules/Platform/HP-UX-HP-C.cmake index d83e01b262..1000935900 100644 --- a/Modules/Platform/HP-UX-HP-C.cmake +++ b/Modules/Platform/HP-UX-HP-C.cmake @@ -1,11 +1,6 @@ include(Platform/HP-UX-HP) __hpux_compiler_hp(C) -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-E -b +nodefaultrpath -L/usr/lib") - set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>") set(CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> -Aa -Ae <FLAGS> -o <OBJECT> -c <SOURCE>") - -# use ld directly to create shared libraries for hp cc -set(CMAKE_C_CREATE_SHARED_LIBRARY "ld <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_C_FLAG><TARGET_SONAME> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") diff --git a/Modules/Platform/HP-UX-HP-CXX.cmake b/Modules/Platform/HP-UX-HP-CXX.cmake index 8f3c70c3ea..dfa1e4e45f 100644 --- a/Modules/Platform/HP-UX-HP-CXX.cmake +++ b/Modules/Platform/HP-UX-HP-CXX.cmake @@ -1,8 +1,6 @@ include(Platform/HP-UX-HP) __hpux_compiler_hp(CXX) -set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "+Z -Wl,-E,+nodefaultrpath -b -L/usr/lib") - set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -S <SOURCE>" diff --git a/Modules/Platform/HP-UX-HP-Fortran.cmake b/Modules/Platform/HP-UX-HP-Fortran.cmake index 5a3ab199cd..30acab8077 100644 --- a/Modules/Platform/HP-UX-HP-Fortran.cmake +++ b/Modules/Platform/HP-UX-HP-Fortran.cmake @@ -1,7 +1,2 @@ include(Platform/HP-UX-HP) __hpux_compiler_hp(Fortran) - -set(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-E -b -L/usr/lib") - -set(CMAKE_Fortran_CREATE_SHARED_LIBRARY - "ld <CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG><TARGET_SONAME> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") diff --git a/Modules/Platform/HP-UX-HP.cmake b/Modules/Platform/HP-UX-HP.cmake index 5e70d31758..bce0a8bce8 100644 --- a/Modules/Platform/HP-UX-HP.cmake +++ b/Modules/Platform/HP-UX-HP.cmake @@ -17,18 +17,14 @@ if(__HPUX_COMPILER_HP) return() endif() set(__HPUX_COMPILER_HP 1) -set(_Wl_C "") -set(_Wl_CXX "-Wl,") -set(_Wl_Fortran "") -set(_Wl_ASM "") macro(__hpux_compiler_hp lang) set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "+Z") + set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-Wl,-E,+nodefaultrpath -b -L/usr/lib") set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-Wl,+s,-E,+nodefaultrpath") - set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG "${_Wl_${lang}}+b") + set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG "-Wl,+b") set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG_SEP ":") - set(CMAKE_SHARED_LIBRARY_SONAME_${lang}_FLAG "${_Wl_${lang}}+h") - set(CMAKE_EXECUTABLE_RUNTIME_${lang}_FLAG "-Wl,+b") + set(CMAKE_SHARED_LIBRARY_SONAME_${lang}_FLAG "-Wl,+h") set(CMAKE_${lang}_FLAGS_INIT "") endmacro() |