diff options
author | Andrew Tridgell <tridge@samba.org> | 2011-06-10 11:32:27 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2011-06-10 17:21:26 +1000 |
commit | ae1414e79698c0c506aabd7458c4fbae8cc8fcf5 (patch) | |
tree | 37cf6f9d42d4664c3c221db64d7ff85b8b2e8f13 /buildtools/wafsamba | |
parent | 91f351568aab728269cdfce3a6cfad8b5785b8d8 (diff) | |
download | samba-ae1414e79698c0c506aabd7458c4fbae8cc8fcf5.tar.gz samba-ae1414e79698c0c506aabd7458c4fbae8cc8fcf5.tar.bz2 samba-ae1414e79698c0c506aabd7458c4fbae8cc8fcf5.zip |
waf: fixed 'make bin/XXX' for the remaining binaries
this fixes 'make bin/smbd' to work correctly with the waf build. It
didn't work before as smbd is actually 'smbd/smbd' internally and we
tried to use the target name 'smbd'. The new approach reads the
symlink to get the right target.
This also speeds up the null build by quite a lot
Diffstat (limited to 'buildtools/wafsamba')
-rw-r--r-- | buildtools/wafsamba/samba_wildcard.py | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/buildtools/wafsamba/samba_wildcard.py b/buildtools/wafsamba/samba_wildcard.py index 5bf12672a9..75ab5defcd 100644 --- a/buildtools/wafsamba/samba_wildcard.py +++ b/buildtools/wafsamba/samba_wildcard.py @@ -17,7 +17,7 @@ def run_task(t, k): def run_named_build_task(cmd): '''run a named build task, matching the cmd name using fnmatch wildcards against inputs and outputs of all build tasks''' - bld = fake_build_environment() + bld = fake_build_environment(info=False) found = False cwd_node = bld.root.find_dir(os.getcwd()) top_node = bld.root.find_dir(bld.srcnode.abspath()) @@ -50,6 +50,28 @@ def run_named_build_task(cmd): raise Utils.WafError("Unable to find build target matching %s" % cmd) +def rewrite_compile_targets(): + '''cope with the bin/ form of compile target''' + if not Options.options.compile_targets: + return + + bld = fake_build_environment(info=False) + targets = LOCAL_CACHE(bld, 'TARGET_TYPE') + tlist = [] + + for t in Options.options.compile_targets.split(','): + if not os.path.islink(t): + tlist.append(t) + continue + link = os.readlink(t) + list = link.split('/') + for name in [list[-1], '/'.join(list[-2:])]: + if name in targets: + tlist.append(name) + continue + Options.options.compile_targets = ",".join(tlist) + + def wildcard_main(missing_cmd_fn): '''this replaces main from Scripting, allowing us to override the @@ -60,6 +82,9 @@ def wildcard_main(missing_cmd_fn): ''' Scripting.commands = Options.arg_line[:] + # rewrite the compile targets to cope with the bin/xx form + rewrite_compile_targets() + while Scripting.commands: x = Scripting.commands.pop(0) @@ -99,7 +124,7 @@ def wildcard_main(missing_cmd_fn): -def fake_build_environment(): +def fake_build_environment(info=True, flush=False): """create all the tasks for the project, but do not run the build return the build context in use""" bld = getattr(Utils.g_module, 'build_context', Utils.Context)() @@ -119,10 +144,12 @@ def fake_build_environment(): bld.load_dirs(proj[SRCDIR], proj[BLDDIR]) bld.load_envs() - Logs.info("Waf: Entering directory `%s'" % bld.bldnode.abspath()) + if info: + Logs.info("Waf: Entering directory `%s'" % bld.bldnode.abspath()) bld.add_subdirs([os.path.split(Utils.g_module.root_path)[0]]) bld.pre_build() - bld.flush() + if flush: + bld.flush() return bld |