Branch: master

08c6f54d 2014-10-12 10:44:00 Slávek Banko
Build setuid binaries with PIE flags
M modules/TDEMacros.cmake
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake
index 4f5f59e..c271c98 100644
--- a/modules/TDEMacros.cmake
+++ b/modules/TDEMacros.cmake
@@ -13,6 +13,7 @@
 #################################################
 
 include( KDE3Macros ) # we will need this module for a while
+include( CheckCXXCompilerFlag )
 
 
 #################################################
@@ -1023,6 +1024,12 @@
     add_dependencies( ${_target} ${_dependencies} )
   endif( _dependencies )
 
+  # set PIE flags for setuid binaries
+  if( _setuid )
+    set_target_properties( ${_target} PROPERTIES COMPILE_FLAGS ${TDE_PIE_CFLAGS} )
+    set_target_properties( ${_target} PROPERTIES LINK_FLAGS ${TDE_PIE_LDFLAGS} )
+  endif( _setuid )
+
   # set destination directory
   if( _destination )
     if( _setuid )
@@ -1537,4 +1544,10 @@
   else( )
     set( LINKER_IMMEDIATE_BINDING_FLAGS "" CACHE INTERNAL "" FORCE )
   endif( )
+
+  check_cxx_compiler_flag( -fPIE HAVE_PIE_SUPPORT )
+  if( HAVE_PIE_SUPPORT )
+    set( TDE_PIE_CFLAGS -fPIE )
+    set( TDE_PIE_LDFLAGS -pie )
+  endif( HAVE_PIE_SUPPORT )
 endmacro( )