diff options
-rw-r--r-- | src/Makefile.housekeeping | 27 | ||||
-rw-r--r-- | src/include/ipxe/profile.h | 2 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping index a02acc8dd..f09db3728 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 := <invalid> +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. diff --git a/src/include/ipxe/profile.h b/src/include/ipxe/profile.h index b6d2b19e0..2c69e1208 100644 --- a/src/include/ipxe/profile.h +++ b/src/include/ipxe/profile.h @@ -12,11 +12,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include <bits/profile.h> #include <ipxe/tables.h> +#ifndef PROFILING #ifdef NDEBUG #define PROFILING 0 #else #define PROFILING 1 #endif +#endif /** * A data structure for storing profiling information |