|
@@ -43,6 +43,8 @@ include config/utilities.mak
|
|
|
#
|
|
|
# Define NO_LIBELF if you do not want libelf dependency (e.g. cross-builds)
|
|
|
#
|
|
|
+# Define NO_LIBUNWIND if you do not want libunwind dependency for dwarf
|
|
|
+# backtrace post unwind.
|
|
|
|
|
|
$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
|
|
|
@$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
|
|
@@ -64,6 +66,7 @@ AR = $(CROSS_COMPILE)ar
|
|
|
ifeq ($(ARCH),i386)
|
|
|
ARCH := x86
|
|
|
NO_PERF_REGS := 0
|
|
|
+ LIBUNWIND_LIBS = -lunwind -lunwind-x86
|
|
|
endif
|
|
|
ifeq ($(ARCH),x86_64)
|
|
|
ARCH := x86
|
|
@@ -77,6 +80,7 @@ ifeq ($(ARCH),x86_64)
|
|
|
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
|
|
|
endif
|
|
|
NO_PERF_REGS := 0
|
|
|
+ LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
|
|
|
endif
|
|
|
|
|
|
# Treat warnings as errors unless directed not to
|
|
@@ -97,7 +101,7 @@ ifdef PARSER_DEBUG
|
|
|
PARSER_DEBUG_CFLAGS := -DPARSER_DEBUG
|
|
|
endif
|
|
|
|
|
|
-CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS)
|
|
|
+CFLAGS = -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS)
|
|
|
EXTLIBS = -lpthread -lrt -lelf -lm
|
|
|
ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
|
|
|
ALL_LDFLAGS = $(LDFLAGS)
|
|
@@ -476,6 +480,21 @@ ifneq ($(call try-cc,$(SOURCE_LIBELF),$(FLAGS_LIBELF)),y)
|
|
|
endif
|
|
|
endif # NO_LIBELF
|
|
|
|
|
|
+ifndef NO_LIBUNWIND
|
|
|
+# for linking with debug library, run like:
|
|
|
+# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
|
|
|
+ifdef LIBUNWIND_DIR
|
|
|
+ LIBUNWIND_CFLAGS := -I$(LIBUNWIND_DIR)/include
|
|
|
+ LIBUNWIND_LDFLAGS := -L$(LIBUNWIND_DIR)/lib
|
|
|
+endif
|
|
|
+
|
|
|
+FLAGS_UNWIND=$(LIBUNWIND_CFLAGS) $(ALL_CFLAGS) $(LIBUNWIND_LDFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(LIBUNWIND_LIBS)
|
|
|
+ifneq ($(call try-cc,$(SOURCE_LIBUNWIND),$(FLAGS_UNWIND)),y)
|
|
|
+ msg := $(warning No libunwind found. Please install libunwind >= 0.99);
|
|
|
+ NO_LIBUNWIND := 1
|
|
|
+endif # Libunwind support
|
|
|
+endif # NO_LIBUNWIND
|
|
|
+
|
|
|
-include arch/$(ARCH)/Makefile
|
|
|
|
|
|
ifneq ($(OUTPUT),)
|
|
@@ -522,6 +541,14 @@ endif # PERF_HAVE_DWARF_REGS
|
|
|
endif # NO_DWARF
|
|
|
endif # NO_LIBELF
|
|
|
|
|
|
+ifdef NO_LIBUNWIND
|
|
|
+ BASIC_CFLAGS += -DNO_LIBUNWIND_SUPPORT
|
|
|
+else
|
|
|
+ EXTLIBS += $(LIBUNWIND_LIBS)
|
|
|
+ BASIC_CFLAGS := $(LIBUNWIND_CFLAGS) $(BASIC_CFLAGS)
|
|
|
+ BASIC_LDFLAGS := $(LIBUNWIND_LDFLAGS) $(BASIC_LDFLAGS)
|
|
|
+endif
|
|
|
+
|
|
|
ifdef NO_NEWT
|
|
|
BASIC_CFLAGS += -DNO_NEWT_SUPPORT
|
|
|
else
|