diff options
author | Denis Kozadaev <denis@dilos.org> | 2023-05-16 11:51:39 +0300 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2023-05-31 15:55:00 +0200 |
commit | 1af8cf351150968aeab5ba7b567b44a06721536d (patch) | |
tree | b913f7046d0a4bb6efa36d00b7d2f2fa4355441f | |
parent | 570dbf6e74f6161fe69dbbc5c5eaf71c2e6a81f9 (diff) | |
download | tde-cmake-1af8cf35.tar.gz tde-cmake-1af8cf35.zip |
tde_setup_architecture_flags: Add test for liner flag -pie or -ztype=pie.
Signed-off-by: Denis Kozadaev <denis@dilos.org>
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit 4e0406ce01b245209676b944eecfcfc9e55f1602)
-rw-r--r-- | modules/TDEMacros.cmake | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake index 8cea22a..2afad68 100644 --- a/modules/TDEMacros.cmake +++ b/modules/TDEMacros.cmake @@ -16,6 +16,7 @@ ################################################# include( CheckCXXCompilerFlag ) +include( CheckLinkerFlag OPTIONAL ) include( TDEVersion ) @@ -2843,7 +2844,29 @@ macro( tde_setup_architecture_flags ) check_cxx_compiler_flag( -fPIE HAVE_PIE_SUPPORT ) if( HAVE_PIE_SUPPORT ) set( TDE_PIE_CFLAGS -fPIE ) - set( TDE_PIE_LDFLAGS -pie ) + + if( ${CMAKE_VERSION} VERSION_LESS "3.18" ) + execute_process(COMMAND "${CMAKE_LINKER}" --help + OUTPUT_VARIABLE __linker_help + ERROR_VARIABLE __linker_help) + if( "${__linker_help}" MATCHES "-pie" ) + set( LINKER_PIE_SUPPORT 1 ) + elseif( "${__linker_help}" MATCHES "type=type.*pie" ) + set( LINKER_ZTYPE_PIE_SUPPORT 1 ) + endif( ) + unset(__linker_help) + else( ) + check_linker_flag(CXX -pie LINKER_PIE_SUPPORT) + if( NOT LINKER_PIE_SUPPORT ) + check_linker_flag(CXX -ztype=pie LINKER_ZTYPE_PIE_SUPPORT) + endif() + endif() + if( LINKER_PIE_SUPPORT ) + set( TDE_PIE_LDFLAGS -pie ) + endif( LINKER_PIE_SUPPORT ) + if( LINKER_ZTYPE_PIE_SUPPORT ) + set( TDE_PIE_LDFLAGS -ztype=pie ) + endif( LINKER_ZTYPE_PIE_SUPPORT ) endif( HAVE_PIE_SUPPORT ) set( _reproducible_cxxflags |