waf: build PIEs if supported by the compiler
authorDavid Disseldorp <ddiss@samba.org>
Tue, 28 May 2013 13:11:45 +0000 (15:11 +0200)
committerAlexander Bokovoy <ab@samba.org>
Wed, 29 May 2013 07:36:39 +0000 (09:36 +0200)
Currently waf performs a mandatory check for compiler PIE support,
unless --without-pie is specified.
This change makes Waf only perform the mandatory check if --with-pie is
specified. If neither --with-pie nor --without-pie are specified, then
PIEs are only built if compiler support is available.

Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
wscript

diff --git a/wscript b/wscript
index efebfc402a6db96c482bc9ebcd5f2507550430b1..83c82e354087743366c675a8eba949df7badda1f 100644 (file)
--- a/wscript
+++ b/wscript
@@ -57,8 +57,9 @@ def set_options(opt):
                    action='store_true', dest='without_ad_dc', default=False)
 
     opt.add_option('--with-pie',
                    action='store_true', dest='without_ad_dc', default=False)
 
     opt.add_option('--with-pie',
-                  help=("Build Position Independent Executables (default)"),
-                  action="store_true", dest='enable_pie', default=True)
+                  help=("Build Position Independent Executables " +
+                        "(default if supported by compiler)"),
+                  action="store_true", dest='enable_pie')
     opt.add_option('--without-pie',
                   help=("Disable Position Independent Executable builds"),
                   action="store_false", dest='enable_pie')
     opt.add_option('--without-pie',
                   help=("Disable Position Independent Executable builds"),
                   action="store_false", dest='enable_pie')
@@ -167,10 +168,15 @@ def configure(conf):
     
     conf.SAMBA_CONFIG_H('include/config.h')
 
     
     conf.SAMBA_CONFIG_H('include/config.h')
 
-    if Options.options.enable_pie == True:
-        conf.check_cc(cflags='-fPIE', ldflags='-pie', mandatory=True,
-                      msg="Checking compiler for PIE support")
-        conf.env['ENABLE_PIE'] = True
+    if Options.options.enable_pie != False:
+        if Options.options.enable_pie == True:
+                need_pie = True
+        else:
+                # not specified, only build PIEs if supported by compiler
+                need_pie = False
+        if conf.check_cc(cflags='-fPIE', ldflags='-pie', mandatory=need_pie,
+                         msg="Checking compiler for PIE support"):
+               conf.env['ENABLE_PIE'] = True
 
 def etags(ctx):
     '''build TAGS file using etags'''
 
 def etags(ctx):
     '''build TAGS file using etags'''