diff options
Diffstat (limited to 'buildtools/wafsamba')
-rw-r--r-- | buildtools/wafsamba/wscript | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index bad65cac24..e2b1a278dd 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -82,7 +82,7 @@ def set_options(opt): action="store_true", dest='fatal_errors', default=False) gr.add_option('--enable-gccdeps', help=("Enable use of gcc -MD dependency module"), - action="store_true", dest='enable_gccdeps', default=False) + action="store_true", dest='enable_gccdeps', default=True) gr.add_option('--timestamp-dependencies', help=("use file timestamps instead of content for build dependencies (BROKEN)"), action="store_true", dest='timestamp_dependencies', default=False) @@ -160,9 +160,29 @@ def configure(conf): # we need git for 'waf dist' conf.find_program('git', var='GIT') + # older gcc versions (< 4.4) does not work with gccdeps, so we have to see if the .d file is generated if Options.options.enable_gccdeps: - # don't enable gccdeps by default as it needs a very recent version gcc - conf.check_tool('gccdeps', tooldir=conf.srcdir + "/buildtools/wafsamba") + from TaskGen import feature, after + @feature('testd') + @after('apply_core') + def check_d(self): + tsk = self.compiled_tasks[0] + tsk.outputs.append(tsk.outputs[0].change_ext('.d')) + + import Task + cc = Task.TaskBase.classes['cc'] + oldmeth = cc.run + + cc.run = Task.compile_fun_noshell('cc', '${CC} ${CCFLAGS} ${CPPFLAGS} ${_CCINCFLAGS} ${_CCDEFFLAGS} ${CC_SRC_F}${SRC} ${CC_TGT_F}${TGT[0].abspath(env)}')[0] + try: + try: + conf.check(features='cc testd', fragment='int main() {return 0;}\n', ccflags=['-MD'], mandatory=True, msg='Check for -MD') + except: + pass + else: + conf.check_tool('gccdeps', tooldir=conf.srcdir + "/buildtools/wafsamba") + finally: + cc.run = oldmeth # make the install paths available in environment conf.env.LIBDIR = Options.options.LIBDIR or '${PREFIX}/lib' |