summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kozadaev <denis@dilos.org>2023-05-16 11:51:39 +0300
committerSlávek Banko <slavek.banko@axis.cz>2023-05-31 15:55:00 +0200
commit1af8cf351150968aeab5ba7b567b44a06721536d (patch)
treeb913f7046d0a4bb6efa36d00b7d2f2fa4355441f
parent570dbf6e74f6161fe69dbbc5c5eaf71c2e6a81f9 (diff)
downloadtde-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.cmake25
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