====== 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"