Speed up parallel builds
- make should be $(MAKE) - add + in front of rules spawning long-lasted make process in a subshell. (This would not be needed with $(MAKE) -C .. target, but our makefiles do not handle that because they use $(PWD)) - split the main 'all' rule as all 4 targets are independant - fix dependencies where appropriate for parallelism Extra, not speed-related changes: - remove some double-colon for targets as they do not need it This cuts build time from 5s to 1.5s on a laptop with -j4, and more importantly from 85s to 35s on a KNL node. As a bonus, the fixed dependencies removes the need to clean before rebuilding all the time. Probably.
This commit is contained in:
40
Makefile.in
40
Makefile.in
@ -4,13 +4,21 @@ INCDIR = @INCDIR@
|
|||||||
ETCDIR = @ETCDIR@
|
ETCDIR = @ETCDIR@
|
||||||
MANDIR = @MANDIR@
|
MANDIR = @MANDIR@
|
||||||
|
|
||||||
all::
|
all: executer-mcctrl executer-mcoverlayfs executer-user mckernel
|
||||||
@(cd executer/kernel/mcctrl; make modules)
|
|
||||||
@(cd executer/kernel/mcoverlayfs; make modules)
|
executer-mcctrl:
|
||||||
@(cd executer/user; make)
|
+@(cd executer/kernel/mcctrl; $(MAKE) modules)
|
||||||
@case "$(TARGET)" in \
|
|
||||||
|
executer-mcoverlayfs:
|
||||||
|
+@(cd executer/kernel/mcoverlayfs; $(MAKE) modules)
|
||||||
|
|
||||||
|
executer-user:
|
||||||
|
+@(cd executer/user; $(MAKE))
|
||||||
|
|
||||||
|
mckernel:
|
||||||
|
+@case "$(TARGET)" in \
|
||||||
attached-mic | builtin-x86 | builtin-mic | smp-x86 | smp-arm64) \
|
attached-mic | builtin-x86 | builtin-mic | smp-x86 | smp-arm64) \
|
||||||
(cd kernel; make) \
|
(cd kernel; $(MAKE)) \
|
||||||
;; \
|
;; \
|
||||||
*) \
|
*) \
|
||||||
echo "unknown target $(TARGET)" >&2 \
|
echo "unknown target $(TARGET)" >&2 \
|
||||||
@ -18,13 +26,13 @@ all::
|
|||||||
;; \
|
;; \
|
||||||
esac
|
esac
|
||||||
|
|
||||||
install::
|
install:
|
||||||
@(cd executer/kernel/mcctrl; make install)
|
@(cd executer/kernel/mcctrl; $(MAKE) install)
|
||||||
@(cd executer/kernel/mcoverlayfs; make install)
|
@(cd executer/kernel/mcoverlayfs; $(MAKE) install)
|
||||||
@(cd executer/user; make install)
|
@(cd executer/user; $(MAKE) install)
|
||||||
@case "$(TARGET)" in \
|
@case "$(TARGET)" in \
|
||||||
attached-mic | builtin-x86 | builtin-mic | smp-x86 | smp-arm64) \
|
attached-mic | builtin-x86 | builtin-mic | smp-x86 | smp-arm64) \
|
||||||
(cd kernel; make install) \
|
(cd kernel; $(MAKE) install) \
|
||||||
;; \
|
;; \
|
||||||
*) \
|
*) \
|
||||||
echo "unknown target $(TARGET)" >&2 \
|
echo "unknown target $(TARGET)" >&2 \
|
||||||
@ -67,13 +75,13 @@ install::
|
|||||||
;; \
|
;; \
|
||||||
esac
|
esac
|
||||||
|
|
||||||
clean::
|
clean:
|
||||||
@(cd executer/kernel/mcctrl; make clean)
|
@(cd executer/kernel/mcctrl; $(MAKE) clean)
|
||||||
@(cd executer/kernel/mcoverlayfs; make clean)
|
@(cd executer/kernel/mcoverlayfs; $(MAKE) clean)
|
||||||
@(cd executer/user; make clean)
|
@(cd executer/user; $(MAKE) clean)
|
||||||
@case "$(TARGET)" in \
|
@case "$(TARGET)" in \
|
||||||
attached-mic | builtin-x86 | builtin-mic | smp-x86 | smp-arm64) \
|
attached-mic | builtin-x86 | builtin-mic | smp-x86 | smp-arm64) \
|
||||||
(cd kernel; make clean) \
|
(cd kernel; $(MAKE) clean) \
|
||||||
;; \
|
;; \
|
||||||
*) \
|
*) \
|
||||||
echo "unknown target $(TARGET)" >&2 \
|
echo "unknown target $(TARGET)" >&2 \
|
||||||
|
|||||||
@ -33,7 +33,7 @@ endif
|
|||||||
|
|
||||||
modules:
|
modules:
|
||||||
ifneq ($(BUILD_MODULE),none)
|
ifneq ($(BUILD_MODULE),none)
|
||||||
@(cd $(BUILD_MODULE); make modules)
|
+@(cd $(BUILD_MODULE); make modules)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|||||||
@ -53,7 +53,7 @@ libsched_yield: libsched_yield.c
|
|||||||
$(CC) -shared -fPIC -Wl,-soname,sched_yield.so.1 -o libsched_yield.so.1.0.0 $^ -lc -ldl
|
$(CC) -shared -fPIC -Wl,-soname,sched_yield.so.1 -o libsched_yield.so.1.0.0 $^ -lc -ldl
|
||||||
|
|
||||||
libmcexec.a::
|
libmcexec.a::
|
||||||
(cd arch/${ARCH}; make)
|
+(cd arch/${ARCH}; $(MAKE))
|
||||||
|
|
||||||
libqlmpi.so: qlmpilib.c
|
libqlmpi.so: qlmpilib.c
|
||||||
$(MCC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $<
|
$(MCC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $<
|
||||||
@ -77,13 +77,13 @@ ql_talker: ql_talker.o
|
|||||||
$(CC) $^ $(CFLAGS) -o $@
|
$(CC) $^ $(CFLAGS) -o $@
|
||||||
|
|
||||||
clean::
|
clean::
|
||||||
(cd arch/${ARCH}; make clean)
|
(cd arch/${ARCH}; $(MAKE) clean)
|
||||||
$(RM) $(TARGET) *.o
|
$(RM) $(TARGET) *.o
|
||||||
|
|
||||||
.PHONY: all clean install
|
.PHONY: all clean install
|
||||||
|
|
||||||
install::
|
install::
|
||||||
(cd arch/${ARCH}; make install)
|
(cd arch/${ARCH}; $(MAKE) install)
|
||||||
mkdir -p -m 755 $(BINDIR)
|
mkdir -p -m 755 $(BINDIR)
|
||||||
install -m 755 mcexec $(BINDIR)
|
install -m 755 mcexec $(BINDIR)
|
||||||
mkdir -p -m 755 $(MCKERNEL_LIBDIR)
|
mkdir -p -m 755 $(MCKERNEL_LIBDIR)
|
||||||
|
|||||||
@ -65,8 +65,8 @@ Makefile.dep:
|
|||||||
|
|
||||||
$(IHKOBJ): FORCE
|
$(IHKOBJ): FORCE
|
||||||
@mkdir -p $(dir $(IHKOBJ))
|
@mkdir -p $(dir $(IHKOBJ))
|
||||||
$(call echo_cmd,BUILD IHK,$(TARGET))$(submake) -C $(IHKBASE) $(SUBCMD_OPTS) prepare
|
+$(call echo_cmd,BUILD IHK,$(TARGET))$(submake) -C $(IHKBASE) $(SUBCMD_OPTS) prepare
|
||||||
$(call echo_cmd,BUILD IHK,$(TARGET))$(submake) -C $(IHKBASE) $(SUBCMD_OPTS)
|
+$(call echo_cmd,BUILD IHK,$(TARGET))$(submake) -C $(IHKBASE) $(SUBCMD_OPTS)
|
||||||
|
|
||||||
%.o: $(SRC)/%.c
|
%.o: $(SRC)/%.c
|
||||||
$(cc_cmd)
|
$(cc_cmd)
|
||||||
|
|||||||
@ -26,9 +26,9 @@ all: $(O) $(KERNELS)
|
|||||||
$(O):
|
$(O):
|
||||||
mkdir -p $(O)
|
mkdir -p $(O)
|
||||||
|
|
||||||
%/kernel.img: %/Makefile
|
%/kernel.img: %/Makefile $(KERNELS)
|
||||||
@echo 'Building for' $(dir $@)
|
@echo 'Building for' $(dir $@)
|
||||||
@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
+@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
||||||
|
|
||||||
%/Makefile: Makefile.build FORCE
|
%/Makefile: Makefile.build FORCE
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
|
|||||||
Reference in New Issue
Block a user