Skip to content

Commit d58d579

Browse files
committed
Better organization of make targets
The main thing to keep in mind is that only one build command should (must?) be executed in a cmake-generated build directory. Otherwise, parallelly running make commands (e.g., ninjas) may each other's artifacts (e.g., .ninja_deps). JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
1 parent 1693b4f commit d58d579

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

Makefile

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -245,35 +245,41 @@ $(foreach __SYSTEM,$(NATIVE_SYSTEM) $(MCU_SYSTEMS), \
245245

246246
# Make rule macro to preform cppcheck on a build target.
247247
#
248-
# $(1) - build target
248+
# $(1) - rule to define in the current Makefile
249249
# $(2) - system name
250+
# $(3) - target(s) to check
250251
define CPPCHECK_RULE
251-
.PHONY: check-cpp.$(1)
252-
check-cpp.$(1): $$(BUILD_DIR)/$(2)/Makefile prerequisites
253-
$$(Q)+$$(call SHLOG,$$(BUILD_COMMAND) -C $$(BUILD_DIR)/$(2) cppcheck.$(1),$$(BUILD_DIR)/$(2)/cppcheck.$(1).log,cppcheck run)
252+
.PHONY: $(1)
253+
$(1): $$(BUILD_DIR)/$(2)/Makefile prerequisites
254+
$$(Q) $$(call SHLOG,$$(BUILD_COMMAND) -C $$(BUILD_DIR)/$(2) $(3),$$(BUILD_DIR)/$(2)/$(1).log,cppcheck run)
254255
endef
255256

256257
$(foreach __TARGET,$(JERRY_NATIVE_TARGETS), \
257-
$(eval $(call CPPCHECK_RULE,$(__TARGET),$(NATIVE_SYSTEM))))
258+
$(eval $(call CPPCHECK_RULE,check-cpp.$(__TARGET),$(NATIVE_SYSTEM),cppcheck.$(__TARGET))))
259+
260+
$(eval $(call CPPCHECK_RULE,check-cpp.$(NATIVE_SYSTEM),$(NATIVE_SYSTEM),$(foreach __TARGET,$(JERRY_NATIVE_TARGETS),cppcheck.$(__TARGET))))
258261

259262
$(foreach __TARGET,$(JERRY_STM32F3_TARGETS), \
260-
$(eval $(call CPPCHECK_RULE,$(__TARGET),stm32f3)))
263+
$(eval $(call CPPCHECK_RULE,check-cpp.$(__TARGET),stm32f3,cppcheck.$(__TARGET))))
264+
265+
$(eval $(call CPPCHECK_RULE,check-cpp.mcu_stm32f3,stm32f3,$(foreach __TARGET,$(JERRY_STM32F3_TARGETS),cppcheck.$(__TARGET))))
261266

262267
$(foreach __TARGET,$(JERRY_STM32F4_TARGETS), \
263-
$(eval $(call CPPCHECK_RULE,$(__TARGET),stm32f4)))
268+
$(eval $(call CPPCHECK_RULE,check-cpp.$(__TARGET),stm32f4,cppcheck.$(__TARGET))))
269+
270+
$(eval $(call CPPCHECK_RULE,check-cpp.mcu_stm32f4,stm32f4,$(foreach __TARGET,$(JERRY_STM32F4_TARGETS),cppcheck.$(__TARGET))))
264271

265-
$(eval $(call CPPCHECK_RULE,unittests,$(NATIVE_SYSTEM)))
272+
$(eval $(call CPPCHECK_RULE,check-cpp.unittests,$(NATIVE_SYSTEM),cppcheck.unittests))
266273

267274
# Make rule macro to build a/some target(s) and copy out the result(s).
268275
#
269-
# $(1) - target to define in the current Makefile
276+
# $(1) - rule to define in the current Makefile
270277
# $(2) - name of the system which has a cmake-generated Makefile
271278
# $(3) - target(s) to build with the cmake-generated Makefile
272-
# $(4) - description of the target (printed if make fails)
273279
define BUILD_RULE
274280
.PHONY: $(1)
275281
$(1): $$(BUILD_DIR)/$(2)/Makefile prerequisites
276-
$$(Q) $$(call SHLOG,$$(BUILD_COMMAND) -C $$(BUILD_DIR)/$(2) $(3),$$(BUILD_DIR)/$(2)/$(1).log,$(4))
282+
$$(Q) $$(call SHLOG,$$(BUILD_COMMAND) -C $$(BUILD_DIR)/$(2) $(3),$$(BUILD_DIR)/$(2)/$(1).log,Build)
277283
$$(Q) $$(foreach __TARGET,$(3), \
278284
mkdir -p $$(OUT_DIR)/$$(__TARGET); \
279285
$$(if $$(findstring unittests,$$(__TARGET)), \
@@ -288,21 +294,21 @@ $(1): $$(BUILD_DIR)/$(2)/Makefile prerequisites
288294
endef
289295

290296
$(foreach __TARGET,$(JERRY_NATIVE_TARGETS), \
291-
$(eval $(call BUILD_RULE,$(__TARGET),$(NATIVE_SYSTEM),$(__TARGET),Build)))
297+
$(eval $(call BUILD_RULE,$(__TARGET),$(NATIVE_SYSTEM),$(__TARGET))))
292298

293-
$(eval $(call BUILD_RULE,build-all.$(NATIVE_SYSTEM),$(NATIVE_SYSTEM),$(JERRY_NATIVE_TARGETS),Build))
299+
$(eval $(call BUILD_RULE,build.$(NATIVE_SYSTEM),$(NATIVE_SYSTEM),$(JERRY_NATIVE_TARGETS)))
294300

295301
$(foreach __TARGET,$(JERRY_STM32F3_TARGETS), \
296-
$(eval $(call BUILD_RULE,$(__TARGET),stm32f3,$(__TARGET).bin,Build)))
302+
$(eval $(call BUILD_RULE,$(__TARGET),stm32f3,$(__TARGET).bin)))
297303

298-
$(eval $(call BUILD_RULE,build-all.mcu_stm32f3,stm32f3,$(patsubst %,%.bin,$(JERRY_STM32F3_TARGETS)),Build))
304+
$(eval $(call BUILD_RULE,build.mcu_stm32f3,stm32f3,$(patsubst %,%.bin,$(JERRY_STM32F3_TARGETS))))
299305

300306
$(foreach __TARGET,$(JERRY_STM32F4_TARGETS), \
301-
$(eval $(call BUILD_RULE,$(__TARGET),stm32f4,$(__TARGET).bin,Build)))
307+
$(eval $(call BUILD_RULE,$(__TARGET),stm32f4,$(__TARGET).bin)))
302308

303-
$(eval $(call BUILD_RULE,build-all.mcu_stm32f4,stm32f4,$(patsubst %,%.bin,$(JERRY_STM32F4_TARGETS)),Build))
309+
$(eval $(call BUILD_RULE,build.mcu_stm32f4,stm32f4,$(patsubst %,%.bin,$(JERRY_STM32F4_TARGETS))))
304310

305-
$(eval $(call BUILD_RULE,unittests,$(NATIVE_SYSTEM),unittests,Build))
311+
$(eval $(call BUILD_RULE,unittests,$(NATIVE_SYSTEM),unittests))
306312

307313
# Make rule macro to test a build target with a test suite.
308314
#
@@ -316,7 +322,7 @@ $(eval $(call BUILD_RULE,unittests,$(NATIVE_SYSTEM),unittests,Build))
316322
# others output. This manifests mostly in the repeated builds of jerry-libc and
317323
# its non-deterministically vanishing .a files.
318324
define JSTEST_RULE
319-
test-js.$(1).$(2): build-all.$$(NATIVE_SYSTEM)
325+
test-js.$(1).$(2): build.$$(NATIVE_SYSTEM)
320326
$$(Q) $$(call SHLOG,./tools/runners/run-test-suite.sh \
321327
$$(OUT_DIR)/$(1)/jerry \
322328
$$(OUT_DIR)/$(1)/check/$(2) \
@@ -346,10 +352,10 @@ check-vera: prerequisites
346352
$(Q) ./tools/check-vera.sh
347353

348354
.PHONY: check-cpp
349-
check-cpp: $(patsubst %,check-cpp.%,$(JERRY_NATIVE_TARGETS) $(JERRY_STM32F3_TARGETS) $(JERRY_STM32F4_TARGETS) unittests)
355+
check-cpp: check-cpp.$(NATIVE_SYSTEM) $(foreach __SYSTEM,$(MCU_SYSTEMS),check-cpp.mcu_$(__SYSTEM)) check-cpp.unittests
350356

351357
.PHONY: build
352-
build: $(patsubst %,build-all.%,$(NATIVE_SYSTEM) $(foreach __SYSTEM,$(MCU_SYSTEMS),mcu_$(__SYSTEM)))
358+
build: build.$(NATIVE_SYSTEM) $(foreach __SYSTEM,$(MCU_SYSTEMS),build.mcu_$(__SYSTEM))
353359

354360
.PHONY: test-unit
355361
test-unit: unittests
@@ -371,11 +377,13 @@ test-js-precommit: \
371377
test-js.$(__TARGET).$(firstword $(subst :, ,$(__SUITE)))))
372378

373379
.PHONY: precommit
374-
precommit:
375-
$(Q) $(MAKE) --no-print-directory clean
376-
$(Q) echo "Running checks, building engine & unit tests..."
377-
$(Q)+$(MAKE) --no-print-directory check-signed-off check-vera check-cpp build unittests
378-
$(Q) echo "...running unit tests..."
380+
precommit: prerequisites
381+
$(Q)+$(MAKE) --no-print-directory clean
382+
$(Q) echo "Running checks..."
383+
$(Q)+$(MAKE) --no-print-directory check-signed-off check-vera check-cpp
384+
$(Q) echo "...building engine..."
385+
$(Q)+$(MAKE) --no-print-directory build
386+
$(Q) echo "...building and running unit tests..."
379387
$(Q)+$(MAKE) --no-print-directory test-unit
380388
$(Q) echo "...running precommit JS tests..."
381389
$(Q)+$(MAKE) --no-print-directory test-js-precommit

0 commit comments

Comments
 (0)