Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96faec94 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next: (25 commits)
  allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
  kbuild: strip generated symbols from *.ko
  kbuild: simplify use of genksyms
  kernel-doc: check for extra kernel-doc notations
  kbuild: add headerdep used to detect inclusion cycles in header files
  kbuild: fix string equality testing in tags.sh
  kbuild: fix make tags/cscope
  kbuild: fix make incompatibility
  kbuild: remove TAR_IGNORE
  setlocalversion: add git-svn support
  setlocalversion: print correct subversion revision
  scripts: improve the decodecode script
  scripts/package: allow custom options to rpm
  genksyms: allow to ignore symbol checksum changes
  genksyms: track symbol checksum changes
  tags and cscope support really belongs in a shell script
  kconfig: fix options to check-lxdialog.sh
  kbuild: gen_init_cpio expands shell variables in file names
  remove bashisms from scripts/extract-ikconfig
  kbuild: teach mkmakfile to be silent
  ...
parents 29263285 9bb48247
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -383,6 +383,20 @@ more details, with real examples.
	to prerequisites are referenced with $(src) (because they are not
	generated files).

    $(kecho)
	echoing information to user in a rule is often a good practice
	but when execution "make -s" one does not expect to see any output
	except for warnings/errors.
	To support this kbuild define $(kecho) which will echo out the
	text following $(kecho) to stdout except if "make -s" is used.

	Example:
		#arch/blackfin/boot/Makefile
		$(obj)/vmImage: $(obj)/vmlinux.gz
			$(call if_changed,uimage)
			@$(kecho) 'Kernel: $@ is ready'


--- 3.11 $(CC) support functions

	The kernel may be built with several different versions of
+66 −141
Original line number Diff line number Diff line
@@ -336,7 +336,7 @@ LINUXINCLUDE := -Iinclude \
                   -I$(srctree)/arch/$(hdr-arch)/include               \
                   -include include/linux/autoconf.h

KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
KBUILD_CPPFLAGS := -D__KERNEL__

KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
		   -fno-strict-aliasing -fno-common \
@@ -439,7 +439,11 @@ ifeq ($(config-targets),1)
include $(srctree)/arch/$(SRCARCH)/Makefile
export KBUILD_DEFCONFIG KBUILD_KCONFIG

config %config: scripts_basic outputmakefile FORCE
config: scripts_basic outputmakefile FORCE
	$(Q)mkdir -p include/linux include/config
	$(Q)$(MAKE) $(build)=scripts/kconfig $@

%config: scripts_basic outputmakefile FORCE
	$(Q)mkdir -p include/linux include/config
	$(Q)$(MAKE) $(build)=scripts/kconfig $@

@@ -600,20 +604,25 @@ export INSTALL_PATH ?= /boot
MODLIB	= $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
export MODLIB

#
#  INSTALL_MOD_STRIP, if defined, will cause modules to be
#  stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
#  the default option --strip-debug will be used.  Otherwise,
#  INSTALL_MOD_STRIP will used as the options to the strip command.
strip-symbols := $(srctree)/scripts/strip-symbols \
		 $(wildcard $(srctree)/arch/$(ARCH)/scripts/strip-symbols)

#
# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped while
# they get installed.  If INSTALL_MOD_STRIP is '1', then the default
# options (see below) will be used.  Otherwise, INSTALL_MOD_STRIP will
# be used as the option(s) to the objcopy command.
ifdef INSTALL_MOD_STRIP
ifeq ($(INSTALL_MOD_STRIP),1)
mod_strip_cmd = $(STRIP) --strip-debug
mod_strip_cmd = $(OBJCOPY) --strip-debug
ifeq ($(CONFIG_KALLSYMS_ALL),$(CONFIG_KALLSYMS_STRIP_GENERATED))
mod_strip_cmd += --wildcard $(addprefix --strip-symbols ,$(strip-symbols))
endif
else
mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP)
mod_strip_cmd = $(OBJCOPY) $(INSTALL_MOD_STRIP)
endif # INSTALL_MOD_STRIP=1
else
mod_strip_cmd = true
mod_strip_cmd = false
endif # INSTALL_MOD_STRIP
export mod_strip_cmd

@@ -743,6 +752,7 @@ last_kallsyms := 2
endif

kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
kallsyms.h := $(wildcard include/config/kallsyms/*.h) $(wildcard include/config/kallsyms/*/*.h)

define verify_kallsyms
	$(Q)$(if $($(quiet)cmd_sysmap),                                      \
@@ -767,24 +777,41 @@ endef

# Generate .S file with all kernel symbols
quiet_cmd_kallsyms = KSYM    $@
      cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
                     $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
      cmd_kallsyms = { test $* -eq 0 || $(NM) -n $<; } \
		     | $(KALLSYMS) $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) >$@

.tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
quiet_cmd_kstrip = STRIP   $@
      cmd_kstrip = $(OBJCOPY) --wildcard $(addprefix --strip$(if $(CONFIG_RELOCATABLE),-unneeded)-symbols ,$(filter %/scripts/strip-symbols,$^)) $< $@

$(foreach n,0 1 2 3,.tmp_kallsyms$(n).o): KBUILD_AFLAGS += -Wa,--strip-local-absolute
$(foreach n,0 1 2 3,.tmp_kallsyms$(n).o): %.o: %.S scripts FORCE
	$(call if_changed_dep,as_o_S)

.tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS)
ifeq ($(CONFIG_KALLSYMS_STRIP_GENERATED),y)
strip-ext := .stripped
endif

.tmp_kallsyms%.S: .tmp_vmlinux%$(strip-ext) $(KALLSYMS) $(kallsyms.h)
	$(call cmd,kallsyms)

# make -jN seems to have problems with intermediate files, see bug #3330.
.SECONDARY: $(foreach n,1 2 3,.tmp_vmlinux$(n).stripped)
.tmp_vmlinux%.stripped: .tmp_vmlinux% $(strip-symbols) $(kallsyms.h)
	$(call cmd,kstrip)

ifneq ($(CONFIG_DEBUG_INFO),y)
.tmp_vmlinux%: LDFLAGS_vmlinux += -S
endif
# .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version
.tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE
	$(call if_changed_rule,ksym_ld)
.tmp_vmlinux%: $(vmlinux-lds) $(vmlinux-all) FORCE
	$(if $(filter 1,$*),$(call if_changed_rule,ksym_ld),$(call if_changed,vmlinux__))

.tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE
	$(call if_changed,vmlinux__)
.tmp_vmlinux0$(strip-ext):
	$(Q)echo "placeholder" >$@

.tmp_vmlinux3: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms2.o FORCE
	$(call if_changed,vmlinux__)
.tmp_vmlinux1: .tmp_kallsyms0.o
.tmp_vmlinux2: .tmp_kallsyms1.o
.tmp_vmlinux3: .tmp_kallsyms2.o

# Needs to visit scripts/ before $(KALLSYMS) can be used.
$(KALLSYMS): scripts ;
@@ -926,7 +953,7 @@ PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
# 2) Create the include2 directory, used for the second asm symlink
prepare3: include/config/kernel.release
ifneq ($(KBUILD_SRC),)
	@echo '  Using $(srctree) as source for kernel'
	@$(kecho) '  Using $(srctree) as source for kernel'
	$(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
		echo "  $(srctree) is not clean, please run 'make mrproper'";\
		echo "  in the '$(srctree)' directory.";\
@@ -983,7 +1010,7 @@ endef
# directory for generated filesas used by some architectures.
define create-symlink
	if [ ! -L include/asm ]; then                                      \
			echo '  SYMLINK $@ -> include/asm-$(SRCARCH)';     \
			$(kecho) '  SYMLINK $@ -> include/asm-$(SRCARCH)'; \
			if [ ! -d include/asm-$(SRCARCH) ]; then           \
				mkdir -p include/asm-$(SRCARCH);           \
			fi;                                                \
@@ -1022,6 +1049,10 @@ include/linux/version.h: $(srctree)/Makefile FORCE
include/linux/utsrelease.h: include/config/kernel.release FORCE
	$(call filechk,utsrelease.h)

PHONY += headerdep
headerdep:
	$(Q)find include/ -name '*.h' | xargs --max-args 1 scripts/headerdep.pl

# ---------------------------------------------------------------------------

PHONY += depend dep
@@ -1096,7 +1127,7 @@ all: modules
PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
	$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
	@echo '  Building modules, stage 2.';
	@$(kecho) '  Building modules, stage 2.';
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild

@@ -1270,7 +1301,8 @@ help:
	@echo  '  versioncheck    - Sanity check on version.h usage'
	@echo  '  includecheck    - Check for duplicate included header files'
	@echo  '  export_report   - List the usages of all exported symbols'
	@echo  '  headers_check   - Sanity check on exported headers'; \
	@echo  '  headers_check   - Sanity check on exported headers'
	@echo  '  headerdep       - Detect inclusion cycles in headers'; \
	 echo  ''
	@echo  'Kernel packaging:'
	@$(MAKE) $(build)=$(package-dir) help
@@ -1360,7 +1392,7 @@ $(module-dirs): crmodverdir $(objtree)/Module.symvers
	$(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)

modules: $(module-dirs)
	@echo '  Building modules, stage 2.';
	@$(kecho) '  Building modules, stage 2.';
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost

PHONY += modules_install
@@ -1409,123 +1441,12 @@ endif # KBUILD_EXTMOD

# Generate tags for editors
# ---------------------------------------------------------------------------
quiet_cmd_tags = GEN     $@
      cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@

#We want __srctree to totally vanish out when KBUILD_OUTPUT is not set
#(which is the most common case IMHO) to avoid unneeded clutter in the big tags file.
#Adding $(srctree) adds about 20M on i386 to the size of the output file!

ifeq ($(src),$(obj))
__srctree =
else
__srctree = $(srctree)/
endif

ifeq ($(ALLSOURCE_ARCHS),)
ifeq ($(ARCH),um)
ALLINCLUDE_ARCHS := $(ARCH) $(SUBARCH)
else
ALLINCLUDE_ARCHS := $(SRCARCH)
endif
else
#Allow user to specify only ALLSOURCE_PATHS on the command line, keeping existing behaviour.
ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS)
endif

ALLSOURCE_ARCHS := $(SRCARCH)

define find-sources
        ( for arch in $(ALLSOURCE_ARCHS) ; do \
	       find $(__srctree)arch/$${arch} $(RCS_FIND_IGNORE) \
		    -wholename $(__srctree)arch/$${arch}/include/asm -type d -prune \
	            -o -name $1 -print; \
	  done ; \
	  find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \
	       -name $1 -print; \
	  find $(__srctree)include $(RCS_FIND_IGNORE) \
	       \( -name config -o -name 'asm-*' \) -prune \
	       -o -name $1 -print; \
	  for arch in $(ALLINCLUDE_ARCHS) ; do \
	       test -e $(__srctree)include/asm-$${arch} && \
                 find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
	            -name $1 -print; \
	       test -e $(__srctree)arch/$${arch}/include/asm && \
	         find $(__srctree)arch/$${arch}/include/asm $(RCS_FIND_IGNORE) \
	            -name $1 -print; \
	  done ; \
	  find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
	       -name $1 -print; \
	  find $(__srctree) $(RCS_FIND_IGNORE) \
	       \( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
	       -name $1 -print; \
	  )
endef

define all-sources
	$(call find-sources,'*.[chS]')
endef
define all-kconfigs
	$(call find-sources,'Kconfig*')
endef
define all-defconfigs
	$(call find-sources,'defconfig')
endef

define xtags
	if $1 --version 2>&1 | grep -iq exuberant; then \
	    $(all-sources) | xargs $1 -a \
		-I __initdata,__exitdata,__acquires,__releases \
		-I __read_mostly,____cacheline_aligned,____cacheline_aligned_in_smp,____cacheline_internodealigned_in_smp \
		-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
		--extra=+f --c-kinds=+px \
		--regex-asm='/^ENTRY\(([^)]*)\).*/\1/'; \
	    $(all-kconfigs) | xargs $1 -a \
		--langdef=kconfig \
		--language-force=kconfig \
		--regex-kconfig='/^[[:blank:]]*(menu|)config[[:blank:]]+([[:alnum:]_]+)/\2/'; \
	    $(all-defconfigs) | xargs -r $1 -a \
		--langdef=dotconfig \
		--language-force=dotconfig \
		--regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'; \
	elif $1 --version 2>&1 | grep -iq emacs; then \
	    $(all-sources) | xargs $1 -a; \
	    $(all-kconfigs) | xargs $1 -a \
		--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'; \
	    $(all-defconfigs) | xargs -r $1 -a \
		--regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \
	else \
	    $(all-sources) | xargs $1 -a; \
	fi
endef

quiet_cmd_cscope-file = FILELST cscope.files
      cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files

quiet_cmd_cscope = MAKE    cscope.out
      cmd_cscope = cscope -b -f cscope.out

cscope: FORCE
	$(call cmd,cscope-file)
	$(call cmd,cscope)

quiet_cmd_TAGS = MAKE   $@
define cmd_TAGS
	rm -f $@; \
	$(call xtags,etags)
endef

TAGS: FORCE
	$(call cmd,TAGS)

quiet_cmd_tags = MAKE   $@
define cmd_tags
	rm -f $@; \
	$(call xtags,ctags)
endef

tags: FORCE
tags TAGS cscope: FORCE
	$(call cmd,tags)


# Scripts to check various things for consistency
# ---------------------------------------------------------------------------

@@ -1604,7 +1525,11 @@ endif
	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)

# Modules
/ %/: prepare scripts FORCE
/: prepare scripts FORCE
	$(cmd_crmodverdir)
	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
	$(build)=$(build-dir)
%/: prepare scripts FORCE
	$(cmd_crmodverdir)
	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
	$(build)=$(build-dir)
@@ -1638,7 +1563,7 @@ cmd_crmodverdir = $(Q)mkdir -p $(MODVERDIR) \
                  $(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*)

a_flags = -Wp,-MD,$(depfile) $(KBUILD_AFLAGS) $(AFLAGS_KERNEL) \
	  $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \
	  $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(KBUILD_CPPFLAGS) \
	  $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o)

quiet_cmd_as_o_S = AS      $@
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE

$(obj)/vmImage: $(obj)/vmlinux.gz
	$(call if_changed,uimage)
	@echo 'Kernel: $@ is ready'
	@$(kecho) 'Kernel: $@ is ready'

install:
	sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
+1 −0
Original line number Diff line number Diff line
__cpu_vendor_dev_X86_VENDOR_*
+7 −0
Original line number Diff line number Diff line
@@ -588,6 +588,13 @@ config KALLSYMS_ALL

	   Say N.

config KALLSYMS_STRIP_GENERATED
	bool "Strip machine generated symbols from kallsyms"
	depends on KALLSYMS_ALL
	default y
	help
	  Say N if you want kallsyms to retain even machine generated symbols.

config KALLSYMS_EXTRA_PASS
	bool "Do an extra kallsyms pass"
	depends on KALLSYMS
Loading