refactor(make): reorganize targets and improve locking mechanism
1. Introduce a “project lock” mechanism alongside the existing “build lock”; the lock file is now generated within the platform-specific Makefile. 2. Set `project` as the default Makefile goal for consistency. 3. Remove the `standalone` target to improve compatibility, especially when invoked via `make -f`. 4. Simplify target dependencies for better maintainability and clarity.
This commit is contained in:
+10
-29
@@ -45,7 +45,8 @@ endif
|
||||
# COMMON INITIALIZATION
|
||||
#------------------------------------------------------------------------------
|
||||
PLATFORM_TOOLS = $(SCRIPT_DIR)/platform/$(PLATFORM)
|
||||
BUILD_LOCK = $(BUILD_DIR)/.project.lock
|
||||
BUILD_LOCK = $(BUILD_DIR)/.build.lock
|
||||
PROJECT_LOCK = $(BUILD_DIR)/.project.lock
|
||||
|
||||
ifeq ('xilinx', '$(PLATFORM)')
|
||||
include $(PLATFORM_TOOLS)/xilinx.mk
|
||||
@@ -56,43 +57,23 @@ endif
|
||||
# Generic Goals
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
.DEFAULT_GOAL := all
|
||||
PHONY += all
|
||||
ifneq ($(wildcard $(BUILD_LOCK)),)
|
||||
all:
|
||||
@$(call print_build_type,$(PLATFORM))
|
||||
$(MAKE) --no-print-directory build
|
||||
@$(call print,Done ($(notdir $(BUILD_DIR))))
|
||||
else
|
||||
all:
|
||||
@$(call print_build_type,$(PLATFORM))
|
||||
$(MAKE) --no-print-directory project
|
||||
$(MAKE) --no-print-directory build
|
||||
@$(call print,Done ($(notdir $(BUILD_DIR))))
|
||||
endif
|
||||
PHONY := clean reset project build sdkopen
|
||||
.DEFAULT_GOAL := project
|
||||
|
||||
# Create project using corresponding SDK
|
||||
project: $(PLATFORM)_project
|
||||
@echo "$(TIMESTAMP): Build lock." > $(BUILD_LOCK)
|
||||
|
||||
standalone:
|
||||
$(MAKE) --no-print-directory project LINK_SRCS=n
|
||||
|
||||
# Build project using generic compiler
|
||||
build: $(PLATFORM)_sdkbuild
|
||||
# Build project using corresponding compiler
|
||||
build: project $(PLATFORM)_sdkbuild
|
||||
|
||||
# Open the project using the corresponding SDK
|
||||
sdkopen: $(PLATFORM)_sdkopen
|
||||
sdkopen: project $(PLATFORM)_sdkopen
|
||||
|
||||
# Remove build artefacts
|
||||
PHONY += clean
|
||||
ifneq ($(wildcard $(BUILD_LOCK)),)
|
||||
clean:
|
||||
@$(call log,Cleaning sdk build uploaded to board)
|
||||
$(MAKE) --no-print-directory $(PLATFORM)_sdkclean
|
||||
clean: $(PLATFORM)_sdkclean
|
||||
else
|
||||
clean:
|
||||
@$(call log,No project found, cleaning dummy files)
|
||||
$(MAKE) --no-print-directory reset
|
||||
clean: reset
|
||||
endif
|
||||
|
||||
# Remove the whole build directory
|
||||
|
||||
Reference in New Issue
Block a user