From 902f8c34144f25365ef02c53bc80cce98de9a040 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Thu, 21 Aug 2014 17:28:14 +0400 Subject: [PATCH] Reducing build time: make debug.linux 8.778s -> 6.426s; make unittests: 32.230s -> 9.259s. --- Makefile.mk | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/Makefile.mk b/Makefile.mk index c59ea9983..bfed047bd 100644 --- a/Makefile.mk +++ b/Makefile.mk @@ -1,3 +1,5 @@ +export SHELL=/bin/bash + ifeq ($(TARGET),) $(error TARGET not set) endif @@ -379,8 +381,8 @@ all: clean $(JERRY_TARGETS) $(JERRY_TARGETS): @rm -rf $(TARGET_DIR) @mkdir -p $(TARGET_DIR) - @cppcheck $(DEFINES_JERRY) $(SOURCES_JERRY_C) $(MAIN_MODULE_SRC) $(INCLUDES_JERRY) $(INCLUDES_THIRDPARTY) \ - --error-exitcode=1 --std=c99 --enable=all --suppress=missingIncludeSystem --suppress=unusedFunction 1>/dev/null + @cppcheck -j8 $(DEFINES_JERRY) $(SOURCES_JERRY_C) $(MAIN_MODULE_SRC) $(INCLUDES_JERRY) $(INCLUDES_THIRDPARTY) \ + --error-exitcode=1 --std=c99 --enable=all 1>/dev/null @vera++ -r ./tools/vera++ -p jerry $(SOURCES_JERRY_C) $(MAIN_MODULE_SRC) $(SOURCES_JERRY_H) -e --no-duplicate 1>$(TARGET_DIR)/vera.log @mkdir -p $(TARGET_DIR)/obj @source_index=0; \ @@ -412,26 +414,43 @@ $(TESTS_TARGET): @rm -rf $(TARGET_DIR) @mkdir -p $(TARGET_DIR) @mkdir -p $(TARGET_DIR)/obj - @cppcheck $(DEFINES_JERRY) `find $(UNITTESTS_SRC_DIR) -name *.[c]` $(SOURCES_JERRY_C) $(INCLUDES_JERRY) $(INCLUDES_THIRDPARTY) \ - --error-exitcode=1 --std=c99 --enable=all --suppress=missingIncludeSystem --suppress=unusedFunction 1>/dev/null + @cppcheck -j8 $(DEFINES_JERRY) `find $(UNITTESTS_SRC_DIR) -name *.[c]` $(SOURCES_JERRY_C) $(INCLUDES_JERRY) $(INCLUDES_THIRDPARTY) \ + --error-exitcode=1 --std=c99 --enable=all 1>/dev/null @source_index=0; \ for jerry_src in $(SOURCES_JERRY); \ do \ cmd="$(CC) -c $(DEFINES_JERRY) $(CFLAGS_COMMON) $(CFLAGS_JERRY) \ $(INCLUDES_JERRY) $(INCLUDES_THIRDPARTY) $$jerry_src -o $(TARGET_DIR)/obj/$$(basename $$jerry_src).$$source_index.o"; \ - if [ "$(option_echo)" = "enable" ]; then echo $$cmd; echo; fi; \ - $$cmd; \ - if [ $$? -ne 0 ]; then echo Failed "'$$cmd'"; exit 1; fi; \ + if [ "$(OPTION_ECHO)" = "enable" ]; then echo $$cmd; echo; fi; \ + $$cmd & \ + ids[$$source_index]=$$!; \ + cmds[$$source_index]="$$cmd"; \ source_index=$$(($$source_index+1)); \ + done; \ + for i in `seq 1 $$source_index`; \ + do \ + wait $${ids[$$i]}; \ + status_code=$$?; \ + if [ $$status_code -ne 0 ]; then echo Failed "'"$${cmds[$$i]}"'"; exit 1; fi; \ done - @for unit_test in $(SOURCES_UNITTESTS); \ + @unit_test_index=0; \ + for unit_test in $(SOURCES_UNITTESTS); \ do \ cmd="$(CC) $(DEFINES_JERRY) $(CFLAGS_COMMON) $(CFLAGS_JERRY) \ $(INCLUDES_JERRY) $(INCLUDES_THIRDPARTY) $(TARGET_DIR)/obj/*.o $(UNITTESTS_SRC_DIR)/$$unit_test.c -lc -o $(TARGET_DIR)/$$unit_test"; \ if [ "$(OPTION_ECHO)" = "enable" ]; then echo $$cmd; echo; fi; \ - $$cmd; \ + $$cmd & \ + ids[$$unit_test_index]=$$!; \ + cmds[$$unit_test_index]="$$cmd"; \ + unit_test_index=$$(($$unit_test_index+1)); \ if [ $$? -ne 0 ]; then echo Failed "'$$cmd'"; exit 1; fi; \ - done + done; \ + for i in `seq 1 $$unit_test_index`; \ + do \ + wait $${ids[$$i]}; \ + status_code=$$?; \ + if [ $$status_code -ne 0 ]; then echo Failed "'"$${cmds[$$i]}"'"; exit 1; fi; \ + done @ rm -rf $(TARGET_DIR)/obj @ VALGRIND=$(VALGRIND_CMD) ./tools/jerry_unittest.sh $(TARGET_DIR) $(TESTS_OPTS)