Merge branch 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Linus Torvalds [Sun, 7 Oct 2012 22:56:10 +0000 (07:56 +0900)]
Pull kbuild fixes from Michal Marek:
 "Here are two fixes I intended to send after v3.6-rc7, but failed to do
  so.  So please pull them for v3.7-rc1 and they will be picked up by
  stable.

  The first one fixes gcc -x <language> syntax in various build-time
  tests, which icecream and possible other gcc wrappers did not
  understand (and yes, icecream is going to be fixed as well).

  The second one fixes make tar-pkg so that unpacking the tarball does
  not replace the /lib -> /usr/lib symlink on recent Fedora releases."

* 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  kbuild: Fix gcc -x syntax
  kbuild: Do not package /boot and /lib in make tar-pkg

1  2 
arch/x86/Makefile
scripts/Kbuild.include
tools/perf/Makefile

diff --combined arch/x86/Makefile
@@@ -27,10 -27,6 +27,10 @@@ ifeq ($(CONFIG_X86_32),y
  
          KBUILD_CFLAGS += -msoft-float -mregparm=3 -freg-struct-return
  
 +        # Never want PIC in a 32-bit kernel, prevent breakage with GCC built
 +        # with nonstandard options
 +        KBUILD_CFLAGS += -fno-pic
 +
          # prevent gcc from keeping the stack 16 byte aligned
          KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
  
@@@ -92,7 -88,7 +92,7 @@@ endi
  ifdef CONFIG_X86_X32
        x32_ld_ok := $(call try-run,\
                        /bin/echo -e '1: .quad 1b' | \
-                       $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" - && \
+                       $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" - && \
                        $(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMPO" && \
                        $(LD) -m elf32_x86_64 "$$TMPO" -o "$$TMP",y,n)
          ifeq ($(x32_ld_ok),y)
@@@ -142,7 -138,7 +142,7 @@@ KBUILD_CFLAGS += $(call cc-option,-mno-
  KBUILD_CFLAGS += $(mflags-y)
  KBUILD_AFLAGS += $(mflags-y)
  
- archscripts: scripts_basic
+ archscripts:
        $(Q)$(MAKE) $(build)=arch/x86/tools relocs
  
  ###
diff --combined scripts/Kbuild.include
@@@ -98,24 -98,24 +98,24 @@@ try-run = $(shell set -e;          
  # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,)
  
  as-option = $(call try-run,\
-       $(CC) $(KBUILD_CFLAGS) $(1) -c -xassembler /dev/null -o "$$TMP",$(1),$(2))
+       $(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2))
  
  # as-instr
  # Usage: cflags-y += $(call as-instr,instr,option1,option2)
  
  as-instr = $(call try-run,\
-       printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3))
+       printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3))
  
  # cc-option
  # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
  
  cc-option = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2))
+       $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
  
  # cc-option-yn
  # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
  cc-option-yn = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n)
+       $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n)
  
  # cc-option-align
  # Prefix align with either -falign or -malign
@@@ -125,7 -125,7 +125,7 @@@ cc-option-align = $(subst -functions=0,
  # cc-disable-warning
  # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
  cc-disable-warning = $(call try-run,\
-       $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -xc /dev/null -o "$$TMP",-Wno-$(strip $(1)))
+       $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
  
  # cc-version
  # Usage gcc-ver := $(call cc-version)
@@@ -143,7 -143,7 +143,7 @@@ cc-ifversion = $(shell [ $(call cc-vers
  # cc-ldoption
  # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both)
  cc-ldoption = $(call try-run,\
-       $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2))
+       $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2))
  
  # ld-option
  # Usage: LDFLAGS += $(call ld-option, -X)
@@@ -209,7 -209,7 +209,7 @@@ endi
  # >$< substitution to preserve $ when reloading .cmd file
  # note: when using inline perl scripts [perl -e '...$$t=1;...']
  # in $(cmd_xxx) double $$ your perl vars
 -make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))
 +make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))))
  
  # Find any prerequisites that is newer than target or that does not exist.
  # PHONY targets skipped in both cases.
diff --combined tools/perf/Makefile
@@@ -37,14 -37,7 +37,14 @@@ include config/utilities.ma
  #
  # Define NO_NEWT if you do not want TUI support.
  #
 +# Define NO_GTK2 if you do not want GTK+ GUI support.
 +#
  # Define NO_DEMANGLE if you do not want C++ symbol demangling.
 +#
 +# 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)
@@@ -57,30 -50,25 +57,30 @@@ ARCH ?= $(shell echo $(uname_M) | sed -
                                  -e s/s390x/s390/ -e s/parisc64/parisc/ \
                                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
                                  -e s/sh[234].*/sh/ )
 +NO_PERF_REGS := 1
  
  CC = $(CROSS_COMPILE)gcc
  AR = $(CROSS_COMPILE)ar
  
  # Additional ARCH settings for x86
  ifeq ($(ARCH),i386)
 -        ARCH := x86
 +      override ARCH := x86
 +      NO_PERF_REGS := 0
 +      LIBUNWIND_LIBS = -lunwind -lunwind-x86
  endif
  ifeq ($(ARCH),x86_64)
 -      ARCH := x86
 +      override ARCH := x86
        IS_X86_64 := 0
        ifeq (, $(findstring m32,$(EXTRA_CFLAGS)))
-               IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -xc - | tail -n 1)
+               IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -x c - | tail -n 1)
        endif
        ifeq (${IS_X86_64}, 1)
                RAW_ARCH := x86_64
                ARCH_CFLAGS := -DARCH_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
@@@ -101,7 -89,7 +101,7 @@@ ifdef PARSER_DEBU
        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)
@@@ -198,10 -186,10 +198,10 @@@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH
  
  TRACE_EVENT_DIR = ../lib/traceevent/
  
 -ifeq ("$(origin O)", "command line")
 -      TE_PATH=$(OUTPUT)/
 +ifneq ($(OUTPUT),)
 +      TE_PATH=$(OUTPUT)
  else
 -      TE_PATH=$(TRACE_EVENT_DIR)/
 +      TE_PATH=$(TRACE_EVENT_DIR)
  endif
  
  LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
@@@ -233,13 -221,13 +233,13 @@@ export PERL_PAT
  FLEX = flex
  BISON= bison
  
 -$(OUTPUT)util/parse-events-flex.c: util/parse-events.l
 +$(OUTPUT)util/parse-events-flex.c: util/parse-events.l $(OUTPUT)util/parse-events-bison.c
        $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/parse-events-flex.h $(PARSER_DEBUG_FLEX) -t util/parse-events.l > $(OUTPUT)util/parse-events-flex.c
  
  $(OUTPUT)util/parse-events-bison.c: util/parse-events.y
        $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c
  
 -$(OUTPUT)util/pmu-flex.c: util/pmu.l
 +$(OUTPUT)util/pmu-flex.c: util/pmu.l $(OUTPUT)util/pmu-bison.c
        $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c
  
  $(OUTPUT)util/pmu-bison.c: util/pmu.y
@@@ -264,7 -252,6 +264,7 @@@ LIB_H += util/include/linux/ctype.
  LIB_H += util/include/linux/kernel.h
  LIB_H += util/include/linux/list.h
  LIB_H += util/include/linux/export.h
 +LIB_H += util/include/linux/magic.h
  LIB_H += util/include/linux/poison.h
  LIB_H += util/include/linux/prefetch.h
  LIB_H += util/include/linux/rbtree.h
@@@ -332,12 -319,6 +332,12 @@@ LIB_H += $(ARCH_INCLUDE
  LIB_H += util/cgroup.h
  LIB_H += $(TRACE_EVENT_DIR)event-parse.h
  LIB_H += util/target.h
 +LIB_H += util/rblist.h
 +LIB_H += util/intlist.h
 +LIB_H += util/perf_regs.h
 +LIB_H += util/unwind.h
 +LIB_H += ui/helpline.h
 +LIB_H += util/vdso.h
  
  LIB_OBJS += $(OUTPUT)util/abspath.o
  LIB_OBJS += $(OUTPUT)util/alias.o
@@@ -373,7 -354,6 +373,7 @@@ LIB_OBJS += $(OUTPUT)util/usage.
  LIB_OBJS += $(OUTPUT)util/wrapper.o
  LIB_OBJS += $(OUTPUT)util/sigchain.o
  LIB_OBJS += $(OUTPUT)util/symbol.o
 +LIB_OBJS += $(OUTPUT)util/symbol-elf.o
  LIB_OBJS += $(OUTPUT)util/dso-test-data.o
  LIB_OBJS += $(OUTPUT)util/color.o
  LIB_OBJS += $(OUTPUT)util/pager.o
@@@ -403,17 -383,11 +403,17 @@@ LIB_OBJS += $(OUTPUT)util/xyarray.
  LIB_OBJS += $(OUTPUT)util/cpumap.o
  LIB_OBJS += $(OUTPUT)util/cgroup.o
  LIB_OBJS += $(OUTPUT)util/target.o
 +LIB_OBJS += $(OUTPUT)util/rblist.o
 +LIB_OBJS += $(OUTPUT)util/intlist.o
 +LIB_OBJS += $(OUTPUT)util/vdso.o
 +LIB_OBJS += $(OUTPUT)util/stat.o
  
 -BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o
 +LIB_OBJS += $(OUTPUT)ui/helpline.o
 +LIB_OBJS += $(OUTPUT)ui/hist.o
 +LIB_OBJS += $(OUTPUT)ui/stdio/hist.o
  
 +BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o
  BUILTIN_OBJS += $(OUTPUT)builtin-bench.o
 -
  # Benchmark modules
  BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o
  BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o
@@@ -471,73 -445,34 +471,73 @@@ PYRF_OBJS += $(OUTPUT)util/xyarray.
  -include config.mak.autogen
  -include config.mak
  
 -ifndef NO_DWARF
 -FLAGS_DWARF=$(ALL_CFLAGS) -ldw -lelf $(ALL_LDFLAGS) $(EXTLIBS)
 -ifneq ($(call try-cc,$(SOURCE_DWARF),$(FLAGS_DWARF)),y)
 -      msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
 +ifdef NO_LIBELF
        NO_DWARF := 1
 -endif # Dwarf support
 -endif # NO_DWARF
 -
 --include arch/$(ARCH)/Makefile
 -
 -ifneq ($(OUTPUT),)
 -      BASIC_CFLAGS += -I$(OUTPUT)
 -endif
 -
 +      NO_DEMANGLE := 1
 +      NO_LIBUNWIND := 1
 +else
  FLAGS_LIBELF=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS)
  ifneq ($(call try-cc,$(SOURCE_LIBELF),$(FLAGS_LIBELF)),y)
        FLAGS_GLIBC=$(ALL_CFLAGS) $(ALL_LDFLAGS)
        ifneq ($(call try-cc,$(SOURCE_GLIBC),$(FLAGS_GLIBC)),y)
                msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static);
        else
 -              msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel);
 +              NO_LIBELF := 1
 +              NO_DWARF := 1
 +              NO_DEMANGLE := 1
        endif
  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, disabling post unwind support. Please install libunwind-dev[el] >= 0.99);
 +      NO_LIBUNWIND := 1
 +endif # Libunwind support
 +endif # NO_LIBUNWIND
 +
 +-include arch/$(ARCH)/Makefile
 +
 +ifneq ($(OUTPUT),)
 +      BASIC_CFLAGS += -I$(OUTPUT)
 +endif
 +
 +ifdef NO_LIBELF
 +BASIC_CFLAGS += -DNO_LIBELF_SUPPORT
 +
 +EXTLIBS := $(filter-out -lelf,$(EXTLIBS))
 +
 +# Remove ELF/DWARF dependent codes
 +LIB_OBJS := $(filter-out $(OUTPUT)util/symbol-elf.o,$(LIB_OBJS))
 +LIB_OBJS := $(filter-out $(OUTPUT)util/dwarf-aux.o,$(LIB_OBJS))
 +LIB_OBJS := $(filter-out $(OUTPUT)util/probe-event.o,$(LIB_OBJS))
 +LIB_OBJS := $(filter-out $(OUTPUT)util/probe-finder.o,$(LIB_OBJS))
 +
 +BUILTIN_OBJS := $(filter-out $(OUTPUT)builtin-probe.o,$(BUILTIN_OBJS))
 +
 +# Use minimal symbol handling
 +LIB_OBJS += $(OUTPUT)util/symbol-minimal.o
 +
 +else # NO_LIBELF
  
  ifneq ($(call try-cc,$(SOURCE_ELF_MMAP),$(FLAGS_COMMON)),y)
        BASIC_CFLAGS += -DLIBELF_NO_MMAP
  endif
  
 +FLAGS_DWARF=$(ALL_CFLAGS) -ldw -lelf $(ALL_LDFLAGS) $(EXTLIBS)
 +ifneq ($(call try-cc,$(SOURCE_DWARF),$(FLAGS_DWARF)),y)
 +      msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
 +      NO_DWARF := 1
 +endif # Dwarf support
 +
  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);
@@@ -548,29 -483,6 +548,29 @@@ els
        LIB_OBJS += $(OUTPUT)util/dwarf-aux.o
  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)
 +      LIB_OBJS += $(OUTPUT)util/unwind.o
 +endif
 +
 +ifdef NO_LIBAUDIT
 +      BASIC_CFLAGS += -DNO_LIBAUDIT_SUPPORT
 +else
 +      FLAGS_LIBAUDIT = $(ALL_CFLAGS) $(ALL_LDFLAGS) -laudit
 +      ifneq ($(call try-cc,$(SOURCE_LIBAUDIT),$(FLAGS_LIBAUDIT)),y)
 +              msg := $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev);
 +              BASIC_CFLAGS += -DNO_LIBAUDIT_SUPPORT
 +      else
 +              BUILTIN_OBJS += $(OUTPUT)builtin-trace.o
 +              EXTLIBS += -laudit
 +      endif
 +endif
  
  ifdef NO_NEWT
        BASIC_CFLAGS += -DNO_NEWT_SUPPORT
@@@ -588,13 -500,14 +588,13 @@@ els
                LIB_OBJS += $(OUTPUT)ui/browsers/annotate.o
                LIB_OBJS += $(OUTPUT)ui/browsers/hists.o
                LIB_OBJS += $(OUTPUT)ui/browsers/map.o
 -              LIB_OBJS += $(OUTPUT)ui/helpline.o
                LIB_OBJS += $(OUTPUT)ui/progress.o
                LIB_OBJS += $(OUTPUT)ui/util.o
                LIB_OBJS += $(OUTPUT)ui/tui/setup.o
                LIB_OBJS += $(OUTPUT)ui/tui/util.o
 +              LIB_OBJS += $(OUTPUT)ui/tui/helpline.o
                LIB_H += ui/browser.h
                LIB_H += ui/browsers/map.h
 -              LIB_H += ui/helpline.h
                LIB_H += ui/keysyms.h
                LIB_H += ui/libslang.h
                LIB_H += ui/progress.h
@@@ -606,7 -519,7 +606,7 @@@ endi
  ifdef NO_GTK2
        BASIC_CFLAGS += -DNO_GTK2_SUPPORT
  else
 -      FLAGS_GTK2=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(shell pkg-config --libs --cflags gtk+-2.0)
 +      FLAGS_GTK2=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(shell pkg-config --libs --cflags gtk+-2.0 2>/dev/null)
        ifneq ($(call try-cc,$(SOURCE_GTK2),$(FLAGS_GTK2)),y)
                msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev);
                BASIC_CFLAGS += -DNO_GTK2_SUPPORT
                ifeq ($(call try-cc,$(SOURCE_GTK2_INFOBAR),$(FLAGS_GTK2)),y)
                        BASIC_CFLAGS += -DHAVE_GTK_INFO_BAR
                endif
 -              BASIC_CFLAGS += $(shell pkg-config --cflags gtk+-2.0)
 -              EXTLIBS += $(shell pkg-config --libs gtk+-2.0)
 +              BASIC_CFLAGS += $(shell pkg-config --cflags gtk+-2.0 2>/dev/null)
 +              EXTLIBS += $(shell pkg-config --libs gtk+-2.0 2>/dev/null)
                LIB_OBJS += $(OUTPUT)ui/gtk/browser.o
                LIB_OBJS += $(OUTPUT)ui/gtk/setup.o
                LIB_OBJS += $(OUTPUT)ui/gtk/util.o
 +              LIB_OBJS += $(OUTPUT)ui/gtk/helpline.o
                # Make sure that it'd be included only once.
                ifneq ($(findstring -DNO_NEWT_SUPPORT,$(BASIC_CFLAGS)),)
                        LIB_OBJS += $(OUTPUT)ui/setup.o
@@@ -728,7 -640,7 +728,7 @@@ els
                EXTLIBS += -liberty
                BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE
          else
 -              FLAGS_BFD=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd
 +              FLAGS_BFD=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -DPACKAGE='perf' -lbfd
                has_bfd := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD))
                ifeq ($(has_bfd),y)
                        EXTLIBS += -lbfd
        endif
  endif
  
 +ifeq ($(NO_PERF_REGS),0)
 +      ifeq ($(ARCH),x86)
 +              LIB_H += arch/x86/include/perf_regs.h
 +      endif
 +else
 +      BASIC_CFLAGS += -DNO_PERF_REGS
 +endif
  
  ifdef NO_STRLCPY
        BASIC_CFLAGS += -DNO_STRLCPY
@@@ -774,14 -679,6 +774,14 @@@ els
        endif
  endif
  
 +ifdef NO_BACKTRACE
 +       BASIC_CFLAGS += -DNO_BACKTRACE
 +else
 +       ifneq ($(call try-cc,$(SOURCE_BACKTRACE),),y)
 +               BASIC_CFLAGS += -DNO_BACKTRACE
 +       endif
 +endif
 +
  ifdef ASCIIDOC8
        export ASCIIDOC8
  endif
@@@ -799,7 -696,6 +799,7 @@@ perfexecdir_SQ = $(subst ','\'',$(perfe
  template_dir_SQ = $(subst ','\'',$(template_dir))
  htmldir_SQ = $(subst ','\'',$(htmldir))
  prefix_SQ = $(subst ','\'',$(prefix))
 +sysconfdir_SQ = $(subst ','\'',$(sysconfdir))
  
  SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
  
@@@ -867,10 -763,10 +867,10 @@@ $(OUTPUT)perf.o perf.spec 
  # over the general rule for .o
  
  $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS
 -      $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Iutil/ -w $<
 +      $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(ALL_CFLAGS) -w $<
  
  $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS
 -      $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -Iutil/ -w $<
 +      $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -w $<
  
  $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
        $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
@@@ -942,10 -838,7 +942,10 @@@ $(LIB_FILE): $(LIB_OBJS
  
  # libtraceevent.a
  $(LIBTRACEEVENT):
 -      $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) $(COMMAND_O) libtraceevent.a
 +      $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a
 +
 +$(LIBTRACEEVENT)-clean:
 +      $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean
  
  help:
        @echo 'Perf make targets:'
@@@ -1054,8 -947,6 +1054,8 @@@ install: al
        $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'
        $(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
        $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
 +      $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'
 +      $(INSTALL) bash_completion '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf'
  
  install-python_ext:
        $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
@@@ -1086,14 -977,13 +1086,14 @@@ quick-install-html
  
  ### Cleaning rules
  
 -clean:
 +clean: $(LIBTRACEEVENT)-clean
        $(RM) $(LIB_OBJS) $(BUILTIN_OBJS) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf.o $(LANG_BINDINGS)
        $(RM) $(ALL_PROGRAMS) perf
        $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope*
        $(MAKE) -C Documentation/ clean
        $(RM) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS
 -      $(RM) $(OUTPUT)util/*-{bison,flex}*
 +      $(RM) $(OUTPUT)util/*-bison*
 +      $(RM) $(OUTPUT)util/*-flex*
        $(python-clean)
  
  .PHONY: all install clean strip $(LIBTRACEEVENT)