Use make -jX by default
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 6 Jan 2017 19:12:39 +0000 (14:12 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 10 Jan 2017 00:01:40 +0000 (19:01 -0500)
We'll guess an X for you, or your can set your own in your Makelocal.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
Makefile
Makelocal.template

index 56ec8b3..35ade64 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -36,6 +36,9 @@
 #
 #      - There are a few other TODOs sprinkled throughout the makefile.
 
+# Number of make jobs to spawn.  Can override this in Makelocal
+MAKE_JOBS ?= $(shell expr `cat /proc/cpuinfo | grep processor | wc -l` - 1)
+
 # Allow people to override our setting of the --no-print-directory option in
 # their Makelocal. This is useful, for example, to allow emacs to find the
 # correct file when errors are encountered using its builtin 'M-x compile'
@@ -71,14 +74,14 @@ define make_as_parent
        $(clear_current_env)\
        $(export_parent_env)\
        $(call export_user_variables)\
-       $(MAKE) $(NO_PRINT_DIRECTORY) $(1)
+       $(MAKE) $(NO_PRINT_DIRECTORY) -j $(MAKE_JOBS) $(1)
 endef
 
 # Do not:
 # o  use make's built-in rules and variables
 #    (this increases performance and avoids hard-to-debug behaviour);
 # o  print "Entering directory ...";
-MAKEFLAGS += -rR $(NO_PRINT_DIRECTORY)
+MAKEFLAGS += -rR $(NO_PRINT_DIRECTORY) -j $(MAKE_JOBS)
 
 # That's our default target when none is given on the command line
 # This can be overriden with a Makelocal
index 23ef9c6..098cf93 100644 (file)
@@ -8,6 +8,9 @@
 #CFLAGS_TESTS += -fno-optimize-sibling-calls
 export CFLAGS_USER CFLAGS_TESTS
 
+# The default is num_cpus.  Use whatever you want.
+# MAKE_JOBS := 100
+
 # brho's custom targets.  Customize to your system.
 #$(OBJDIR)/kern/.kvm.touch: $(CMP_KERNEL_OBJ)
 #      @echo "  (KVM) Copying to mnt/hdd"