david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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>
This commit is contained in:
Michael Brown 2016-07-05 13:45:54 +01:00
parent 46719f2264
commit 5430465185
2 changed files with 29 additions and 0 deletions

View File

@ -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.

View File

@ -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