====== Calculation BIOS Build Time ======
makefile
target: target1 target2
gcc -o ExecutionFile target1 target2
Step1 : Add two variables before .XXXXX ex:.PHONY
START_TIME := $(shell echo %time%)
END_TIME := $(shell echo %time%)
Step2 : Add two targets
start_time:
@echo Start Time: $(START_TIME)
end_time:
$(eval END_TIME := $(shell echo %time%))
@echo Start Time: $(START_TIME)
@echo End Time: $(END_TIME)
@echo.
@echo Calculate time...
@powershell -Command "$$start_time = [datetime]::Parse('$(START_TIME)'); $$end_time = [datetime]::Parse('$(END_TIME)'); $$duration = $$end_time - $$start_time;echo Build_time: $$duration"
Step3 : Add "start_time" "end_time" targets to ".PHONY"
.PHONY : all clean rebuild run RunAmiSdl AptioV sdl Prologue start_time end_time
Step4 : Add the target to start location and end location\\
all: start_time Prologue $(BUILD_DIR) RunAmiSdl AptioV end_time
Completion makefile
export CONFIGURATION_DIR:=AmiPkg/Configuration/
export UTILITIES_MAK:=$(CONFIGURATION_DIR)utilities.mak
include $(UTILITIES_MAK)
ifeq ($(wildcard $(TOOLS_DIR)/BuildToolsVersion.mak),$(TOOLS_DIR)/BuildToolsVersion.mak)
include $(TOOLS_DIR)/BuildToolsVersion.mak
else
export BUILD_TOOLS_VERSION=0
endif
export MAIN_MAK:=$(CONFIGURATION_DIR)Main.mak
export TOKEN_MAK:=Build/Token.mak
export MODULE_MAK:=Build/module.mak
export APTIO_MAKE:=$(MAKE) --no-print-directory
# Script that runs AmiSdl and other AMI preprocessing tools can be either part of the build tools (higher priority)
# or part of the project (lower priority).
ifeq ($(wildcard $(TOOLS_DIR)/RunAmiTools.mak),$(TOOLS_DIR)/RunAmiTools.mak)
RUN_AMI_TOOLS_MAK:=$(TOOLS_DIR)/RunAmiTools.mak
else
RUN_AMI_TOOLS_MAK:=$(CONFIGURATION_DIR)RunAmiSdl.mak
endif
START_TIME := $(shell echo %time%)
END_TIME := $(shell echo %time%)
.PHONY : all clean rebuild run RunAmiSdl AptioV sdl Prologue start_time end_time
all: start_time Prologue $(BUILD_DIR) RunAmiSdl AptioV end_time
# Print build information
Prologue:
$(ECHO) Build Tools: $(BUILD_TOOLS_VERSION).
# Clean out the old files
clean:
@$(ECHO) Deleting temporary files...
ifeq ($(wildcard $(BUILD_DIR)), $(BUILD_DIR))
-$(RMDIR) $(BUILD_DIR)
endif
ifeq ($(wildcard Conf), Conf)
-$(RMDIR) Conf
endif
@$(APTIO_MAKE) -s -f $(RUN_AMI_TOOLS_MAK) clean
@$(ECHO) Done.
rebuild: clean all
run:
$(APTIO_MAKE) -f $(MAIN_MAK) run
sdl: $(BUILD_DIR) RunAmiSdl
# Check if Build exists, if not, then make it
$(BUILD_DIR):
mkdir $(BUILD_DIR)
RunAmiSdl:
@$(APTIO_MAKE) -f $(RUN_AMI_TOOLS_MAK) all
# If TODAY/NOW are not defined on the command line, generate them automatically.
# These auto-generated values may be overridden with TODAY/NOW SDL tokens.
# TODAY/NOW defined on the command line have the highest priority (SDL tokens do not override them).
# TODAY format: mm/dd/yyyy
# NOW format: hh:mm:ss
ifeq ($(TODAY),)
export TODAY := $(shell $(DATE) +'%m/%d/%Y')
endif
ifeq ($(NOW),)
export NOW := $(shell $(DATE) +%T)
endif
AptioV:
$(APTIO_MAKE) -f $(MAIN_MAK) $(target)
ifeq ($(call __ge, $(BUILD_TOOLS_VERSION), 29),yes)
@$(APTIO_MAKE) -s -f $(RUN_AMI_TOOLS_MAK) End
endif
$ GBT_ME_Build.bat
start_time:
@echo Start Time: $(START_TIME)
end_time:
$(eval END_TIME := $(shell echo %time%))
@echo Start Time: $(START_TIME)
@echo End Time: $(END_TIME)
@echo.
@echo Calculate time...
@powershell -Command "$$start_time = [datetime]::Parse('$(START_TIME)'); $$end_time = [datetime]::Parse('$(END_TIME)'); $$duration = $$end_time - $$start_time;echo Build_time: $$duration"