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.
This commit is contained in:
parent
6fb2a38b0a
commit
5720e1f634
|
@ -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>")
|
||||
|
|
|
@ -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>")
|
||||
|
|
|
@ -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>"
|
||||
|
|
|
@ -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>")
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue