|
@@ -173,6 +173,20 @@ uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
|
|
uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
|
|
uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
|
|
uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
|
|
uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
|
|
|
|
|
|
|
|
+ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
|
|
|
|
+ -e s/arm.*/arm/ -e s/sa110/arm/ \
|
|
|
|
+ -e s/s390x/s390/ -e s/parisc64/parisc/ \
|
|
|
|
+ -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
|
|
|
|
+ -e s/sh[234].*/sh/ )
|
|
|
|
+
|
|
|
|
+# Additional ARCH settings for x86
|
|
|
|
+ifeq ($(ARCH),i386)
|
|
|
|
+ ARCH := x86
|
|
|
|
+endif
|
|
|
|
+ifeq ($(ARCH),x86_64)
|
|
|
|
+ ARCH := x86
|
|
|
|
+endif
|
|
|
|
+
|
|
# CFLAGS and LDFLAGS are for the users to override from the command line.
|
|
# CFLAGS and LDFLAGS are for the users to override from the command line.
|
|
|
|
|
|
#
|
|
#
|
|
@@ -285,7 +299,7 @@ endif
|
|
# Those must not be GNU-specific; they are shared with perl/ which may
|
|
# Those must not be GNU-specific; they are shared with perl/ which may
|
|
# be built by a different compiler. (Note that this is an artifact now
|
|
# be built by a different compiler. (Note that this is an artifact now
|
|
# but it still might be nice to keep that distinction.)
|
|
# but it still might be nice to keep that distinction.)
|
|
-BASIC_CFLAGS = -Iutil/include
|
|
|
|
|
|
+BASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include
|
|
BASIC_LDFLAGS =
|
|
BASIC_LDFLAGS =
|
|
|
|
|
|
# Guard against environment variables
|
|
# Guard against environment variables
|
|
@@ -367,6 +381,7 @@ LIB_H += util/include/asm/byteorder.h
|
|
LIB_H += util/include/asm/swab.h
|
|
LIB_H += util/include/asm/swab.h
|
|
LIB_H += util/include/asm/system.h
|
|
LIB_H += util/include/asm/system.h
|
|
LIB_H += util/include/asm/uaccess.h
|
|
LIB_H += util/include/asm/uaccess.h
|
|
|
|
+LIB_H += util/include/dwarf-regs.h
|
|
LIB_H += perf.h
|
|
LIB_H += perf.h
|
|
LIB_H += util/cache.h
|
|
LIB_H += util/cache.h
|
|
LIB_H += util/callchain.h
|
|
LIB_H += util/callchain.h
|
|
@@ -487,6 +502,15 @@ PERFLIBS = $(LIB_FILE)
|
|
-include config.mak.autogen
|
|
-include config.mak.autogen
|
|
-include config.mak
|
|
-include config.mak
|
|
|
|
|
|
|
|
+ifndef NO_DWARF
|
|
|
|
+ifneq ($(shell sh -c "(echo '\#include <dwarf.h>'; echo '\#include <libdw.h>'; echo 'int main(void) { Dwarf *dbg; dbg = dwarf_begin(0, DWARF_C_READ); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -I/usr/include/elfutils -ldw -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
|
|
|
+ msg := $(warning No libdw.h found or old libdw.h found, disables dwarf support. Please install elfutils-devel/elfutils-dev);
|
|
|
|
+ NO_DWARF := 1
|
|
|
|
+endif # Dwarf support
|
|
|
|
+endif # NO_DWARF
|
|
|
|
+
|
|
|
|
+-include arch/$(ARCH)/Makefile
|
|
|
|
+
|
|
ifeq ($(uname_S),Darwin)
|
|
ifeq ($(uname_S),Darwin)
|
|
ifndef NO_FINK
|
|
ifndef NO_FINK
|
|
ifeq ($(shell test -d /sw/lib && echo y),y)
|
|
ifeq ($(shell test -d /sw/lib && echo y),y)
|
|
@@ -519,15 +543,15 @@ else
|
|
msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
|
|
msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
|
|
endif
|
|
endif
|
|
|
|
|
|
-ifneq ($(shell sh -c "(echo '\#include <dwarf.h>'; echo '\#include <libdw.h>'; echo 'int main(void) { Dwarf *dbg; dbg = dwarf_begin(0, DWARF_C_READ); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -I/usr/include/elfutils -ldw -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
|
|
|
- msg := $(warning No libdw.h found or old libdw.h found, disables dwarf support. Please install elfutils-devel/elfutils-dev);
|
|
|
|
-else
|
|
|
|
ifndef NO_DWARF
|
|
ifndef NO_DWARF
|
|
|
|
+ifeq ($(origin PERF_HAVE_DWARF_REGS), undefined)
|
|
|
|
+ msg := $(warning DWARF register mappings have not been defined for architecture $(ARCH), DWARF support disabled);
|
|
|
|
+else
|
|
BASIC_CFLAGS += -I/usr/include/elfutils -DDWARF_SUPPORT
|
|
BASIC_CFLAGS += -I/usr/include/elfutils -DDWARF_SUPPORT
|
|
EXTLIBS += -lelf -ldw
|
|
EXTLIBS += -lelf -ldw
|
|
LIB_OBJS += $(OUTPUT)util/probe-finder.o
|
|
LIB_OBJS += $(OUTPUT)util/probe-finder.o
|
|
-endif
|
|
|
|
-endif
|
|
|
|
|
|
+endif # PERF_HAVE_DWARF_REGS
|
|
|
|
+endif # NO_DWARF
|
|
|
|
|
|
ifneq ($(shell sh -c "(echo '\#include <newt.h>'; echo 'int main(void) { newtInit(); newtCls(); return newtFinished(); }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -lnewt -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
|
ifneq ($(shell sh -c "(echo '\#include <newt.h>'; echo 'int main(void) { newtInit(); newtCls(); return newtFinished(); }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -lnewt -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
|
msg := $(warning newt not found, disables TUI support. Please install newt-devel or libnewt-dev);
|
|
msg := $(warning newt not found, disables TUI support. Please install newt-devel or libnewt-dev);
|