build: try to honor MAKEFLAGS from make
authorAndrew Tridgell <tridge@samba.org>
Wed, 14 Apr 2010 13:37:47 +0000 (23:37 +1000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 14 Apr 2010 13:37:47 +0000 (23:37 +1000)
This means "make -j" and "make -k" now do roughly what is expected

make -j will use the number of CPUs on the system, regardless of the
number after the -j (as MAKEFLAGS doesn't contain that value).

make -k will will continue on errors

buildtools/scripts/Makefile.waf
buildtools/wafsamba/samba_utils.py
buildtools/wafsamba/wscript

index a1c4b695251cdc2fbf95fee7f53e5b49dc8ebe90..ac5c01355a884e4027d6e96d3694f49230f4f819 100644 (file)
@@ -1,11 +1,6 @@
 # simple makefile wrapper to run waf
 
-# default to using only 1 cpu, to be friendly to build
-# farm machines. I wonder how we get at the -jN option
-# from make to pass it to waf?
-JOBS=1
-
-WAF=JOBS=$(JOBS) BUILDTOOLS/bin/waf
+WAF=WAF_MAKE=1 BUILDTOOLS/bin/waf
 
 all:
        $(WAF) build
index 7ee166351320e6d6dc7356c87e18420d10263410..bf051afa3b62a4dd38a2573ef054d514e4dcb465 100644 (file)
@@ -438,3 +438,29 @@ def RECURSE(ctx, directory):
     raise
 Options.Handler.RECURSE = RECURSE
 Build.BuildContext.RECURSE = RECURSE
+
+
+def CHECK_MAKEFLAGS(bld):
+    '''check for MAKEFLAGS environment variable in case we are being
+    called from a Makefile try to honor a few make command line flags'''
+    if not 'WAF_MAKE' in os.environ:
+        return
+    makeflags = os.environ.get('MAKEFLAGS')
+    jobs_set = False
+    for opt in makeflags.split():
+        # options can come either as -x or as x
+        if opt[0] != '-':
+            for v in opt:
+                if v == 'j':
+                    jobs_set = True
+                elif v == 'k':
+                    Options.options.keep = True                
+        elif opt == '-j':
+            jobs_set = True
+        elif opt == '-k':
+            Options.options.keep = True                
+    if not jobs_set:
+        # default to one job
+        Options.options.jobs = 1
+            
+Build.BuildContext.CHECK_MAKEFLAGS = CHECK_MAKEFLAGS
index a395bfedf3b74775219764992727e03ac8ea864e..b4fcb99684864043965915c0507ffa810bfb3570 100644 (file)
@@ -226,6 +226,7 @@ def configure(conf):
 
 
 def build(bld):
+    bld.CHECK_MAKEFLAGS()
     bld.SETUP_BUILD_GROUPS()
     bld.ENFORCE_GROUP_ORDERING()
     bld.CHECK_PROJECT_RULES()