summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2011-06-10 11:32:27 +1000
committerAndrew Tridgell <tridge@samba.org>2011-06-10 17:21:26 +1000
commitae1414e79698c0c506aabd7458c4fbae8cc8fcf5 (patch)
tree37cf6f9d42d4664c3c221db64d7ff85b8b2e8f13
parent91f351568aab728269cdfce3a6cfad8b5785b8d8 (diff)
downloadsamba-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
-rw-r--r--Makefile2
-rw-r--r--buildtools/scripts/Makefile.waf2
-rw-r--r--buildtools/wafsamba/samba_wildcard.py35
3 files changed, 33 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index cbbf045062..3b40c73d95 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ ctags:
# this allows for things like "make bin/smbtorture"
bin/%:: FORCE
- $(WAF) --targets=`basename $@`
+ $(WAF) --targets=$@
FORCE:
pydoctor:
diff --git a/buildtools/scripts/Makefile.waf b/buildtools/scripts/Makefile.waf
index 716ab93270..5fc939c99e 100644
--- a/buildtools/scripts/Makefile.waf
+++ b/buildtools/scripts/Makefile.waf
@@ -62,7 +62,7 @@ ctags:
$(WAF) ctags
bin/%:: FORCE
- $(WAF) --targets=`basename $@`
+ $(WAF) --targets=$@
FORCE:
configure: autogen-waf.sh BUILDTOOLS/scripts/configure.waf
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