From 5430465185ba037c1f9c06cd3ec486b56dafb539 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 5 Jul 2016 13:45:54 +0100 Subject: [profile] Allow profiling to be globally enabled or disabled As with assertions, profiling is enabled for objects built with any debug level (including an explicit debug level of zero). Allow profiling to be globally enabled or disabled by adding PROFILE=1 or PROFILE=0 respectively to the build command line. Signed-off-by: Michael Brown --- src/Makefile.housekeeping | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/Makefile.housekeeping') diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping index a02acc8d..f09db372 100644 --- a/src/Makefile.housekeeping +++ b/src/Makefile.housekeeping @@ -747,6 +747,33 @@ include/assert.h : $(ASSERT_LIST) .PRECIOUS : include/assert.h +# (Single-element) list of profiling configuration +# +PROFILE_LIST := $(BIN)/.profile.list +ifeq ($(wildcard $(PROFILE_LIST)),) +PROFILE_OLD := +else +PROFILE_OLD := $(shell cat $(PROFILE_LIST)) +endif +ifneq ($(PROFILE_OLD),$(PROFILE)) +$(shell $(ECHO) "$(PROFILE)" > $(PROFILE_LIST)) +endif + +$(PROFILE_LIST) : $(MAKEDEPS) + +VERYCLEANUP += $(PROFILE_LIST) + +# Profiling configuration +# +ifneq ($(PROFILE),) +CFLAGS += -DPROFILING=$(PROFILE) +endif + +include/ipxe/profile.h : $(PROFILE_LIST) + $(Q)$(TOUCH) $@ + +.PRECIOUS : include/ipxe/profile.h + # These files use .incbin inline assembly to include a binary file. # Unfortunately ccache does not detect this dependency and caches # builds even when the binary file has changed. -- cgit v1.2.3-55-g7522