mirror of https://github.com/ipxe/ipxe.git
[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 <mcb30@ipxe.org>pull/56/head
parent
46719f2264
commit
5430465185
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue