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:
@@ -33,7 +33,7 @@ endif
|
||||
|
||||
modules:
|
||||
ifneq ($(BUILD_MODULE),none)
|
||||
@(cd $(BUILD_MODULE); make modules)
|
||||
+@(cd $(BUILD_MODULE); make modules)
|
||||
endif
|
||||
|
||||
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
|
||||
|
||||
libmcexec.a::
|
||||
(cd arch/${ARCH}; make)
|
||||
+(cd arch/${ARCH}; $(MAKE))
|
||||
|
||||
libqlmpi.so: qlmpilib.c
|
||||
$(MCC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $<
|
||||
@@ -77,13 +77,13 @@ ql_talker: ql_talker.o
|
||||
$(CC) $^ $(CFLAGS) -o $@
|
||||
|
||||
clean::
|
||||
(cd arch/${ARCH}; make clean)
|
||||
(cd arch/${ARCH}; $(MAKE) clean)
|
||||
$(RM) $(TARGET) *.o
|
||||
|
||||
.PHONY: all clean install
|
||||
|
||||
install::
|
||||
(cd arch/${ARCH}; make install)
|
||||
(cd arch/${ARCH}; $(MAKE) install)
|
||||
mkdir -p -m 755 $(BINDIR)
|
||||
install -m 755 mcexec $(BINDIR)
|
||||
mkdir -p -m 755 $(MCKERNEL_LIBDIR)
|
||||
|
||||
Reference in New Issue
Block a user