Commit cb63fc26 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull kbuild updates from Michal Marek:
 - fix for make headers_install argv explosion with too long path
 - scripts/setlocalversion does not call git update-index needlessly
 - fix for the src.rpm produced by make rpm-pkg.  The new make
   image_name can be useful also for other packaging tools.
 - scripts/mod/devicetable-offsets.o is not rebuilt during each make run
 - make modules_install dependency fix
 - scripts/sortextable portability fix
 - fix for kbuild to generate the output directory for all object files
   in subdirs.
 - a couple of minor fixes

* 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  kbuild: create directory for dir/file.o
  tools/include: use stdint types for user-space byteshift headers
  Makefile: Fix install error with make -j option
  Fix a build warning in scripts/mod/file2alias.c
  improve modalias building
  scripts/mod: Spelling s/DEVICEVTABLE/DEVICETABLE/
  kbuild: fix error when building from src rpm
  scripts/setlocalversion on write-protected source tree
  Makefile.lib: align DTB quiet_cmd
  kbuild: fix make headers_install when path is too long
parents a9642fa3 4d47dde4
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -981,7 +981,7 @@ _modinst_:
# boot a modules.dep even before / is mounted read-write.  However the
# boot a modules.dep even before / is mounted read-write.  However the
# boot script depmod is the master version.
# boot script depmod is the master version.
PHONY += _modinst_post
PHONY += _modinst_post
_modinst_post: _modinst_
_modinst_post: include/config/kernel.release _modinst_
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst
	$(call cmd,depmod)
	$(call cmd,depmod)


@@ -1116,6 +1116,7 @@ help:
	@echo  '  gtags           - Generate GNU GLOBAL index'
	@echo  '  gtags           - Generate GNU GLOBAL index'
	@echo  '  kernelrelease	  - Output the release version string'
	@echo  '  kernelrelease	  - Output the release version string'
	@echo  '  kernelversion	  - Output the version stored in Makefile'
	@echo  '  kernelversion	  - Output the version stored in Makefile'
	@echo  '  image_name	  - Output the image name'
	@echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
	@echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
	 echo  '                    (default: $(INSTALL_HDR_PATH))'; \
	 echo  '                    (default: $(INSTALL_HDR_PATH))'; \
	 echo  ''
	 echo  ''
@@ -1310,7 +1311,7 @@ export_report:
endif #ifeq ($(config-targets),1)
endif #ifeq ($(config-targets),1)
endif #ifeq ($(mixed-targets),1)
endif #ifeq ($(mixed-targets),1)


PHONY += checkstack kernelrelease kernelversion
PHONY += checkstack kernelrelease kernelversion image_name


# UML needs a little special treatment here.  It wants to use the host
# UML needs a little special treatment here.  It wants to use the host
# toolchain, so needs $(SUBARCH) passed to checkstack.pl.  Everyone
# toolchain, so needs $(SUBARCH) passed to checkstack.pl.  Everyone
@@ -1331,6 +1332,9 @@ kernelrelease:
kernelversion:
kernelversion:
	@echo $(KERNELVERSION)
	@echo $(KERNELVERSION)


image_name:
	@echo $(KBUILD_IMAGE)

# Clear a bunch of variables before executing the submake
# Clear a bunch of variables before executing the submake
tools/: FORCE
tools/: FORCE
	$(Q)mkdir -p $(objtree)/tools
	$(Q)mkdir -p $(objtree)/tools
+14 −6
Original line number Original line Diff line number Diff line
@@ -47,18 +47,24 @@ header-y := $(filter-out $(generic-y), $(header-y))
all-files     := $(header-y) $(genhdr-y) $(wrapper-files)
all-files     := $(header-y) $(genhdr-y) $(wrapper-files)
output-files  := $(addprefix $(installdir)/, $(all-files))
output-files  := $(addprefix $(installdir)/, $(all-files))


input-files   := $(foreach hdr, $(header-y), \
input-files1  := $(foreach hdr, $(header-y), \
		   $(if $(wildcard $(srcdir)/$(hdr)), \
		   $(if $(wildcard $(srcdir)/$(hdr)), \
			$(wildcard $(srcdir)/$(hdr)), \
			$(wildcard $(srcdir)/$(hdr))) \
		   )
input-files1-name := $(notdir $(input-files1))
input-files2  := $(foreach hdr, $(header-y), \
		   $(if  $(wildcard $(srcdir)/$(hdr)),, \
			$(if $(wildcard $(oldsrcdir)/$(hdr)), \
			$(if $(wildcard $(oldsrcdir)/$(hdr)), \
				$(wildcard $(oldsrcdir)/$(hdr)), \
				$(wildcard $(oldsrcdir)/$(hdr)), \
				$(error Missing UAPI file $(srcdir)/$(hdr))) \
				$(error Missing UAPI file $(srcdir)/$(hdr))) \
		   )) \
		   ))
		 $(foreach hdr, $(genhdr-y), \
input-files2-name := $(notdir $(input-files2))
input-files3  := $(foreach hdr, $(genhdr-y), \
		   $(if	$(wildcard $(gendir)/$(hdr)), \
		   $(if	$(wildcard $(gendir)/$(hdr)), \
			$(wildcard $(gendir)/$(hdr)), \
			$(wildcard $(gendir)/$(hdr)), \
			$(error Missing generated UAPI file $(gendir)/$(hdr)) \
			$(error Missing generated UAPI file $(gendir)/$(hdr)) \
		   ))
		   ))
input-files3-name := $(notdir $(input-files3))


# Work out what needs to be removed
# Work out what needs to be removed
oldheaders    := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
oldheaders    := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
@@ -72,7 +78,9 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
                            file$(if $(word 2, $(all-files)),s))
                            file$(if $(word 2, $(all-files)),s))
      cmd_install = \
      cmd_install = \
        $(CONFIG_SHELL) $< $(installdir) $(input-files); \
        $(CONFIG_SHELL) $< $(installdir) $(srcdir) $(input-files1-name); \
        $(CONFIG_SHELL) $< $(installdir) $(oldsrcdir) $(input-files2-name); \
        $(CONFIG_SHELL) $< $(installdir) $(gendir) $(input-files3-name); \
        for F in $(wrapper-files); do                                   \
        for F in $(wrapper-files); do                                   \
                echo "\#include <asm-generic/$$F>" > $(installdir)/$$F;    \
                echo "\#include <asm-generic/$$F>" > $(installdir)/$$F;    \
        done;                                                           \
        done;                                                           \
@@ -98,7 +106,7 @@ __headersinst: $(subdirs) $(install-file)
	@:
	@:


targets += $(install-file)
targets += $(install-file)
$(install-file): scripts/headers_install.sh $(input-files) FORCE
$(install-file): scripts/headers_install.sh $(input-files1) $(input-files2) $(input-files3) FORCE
	$(if $(unwanted),$(call cmd,remove),)
	$(if $(unwanted),$(call cmd,remove),)
	$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
	$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
	$(call if_changed,install)
	$(call if_changed,install)
+2 −2
Original line number Original line Diff line number Diff line
@@ -63,7 +63,7 @@ multi-objs := $(multi-objs-y) $(multi-objs-m)
subdir-obj-y := $(filter %/built-in.o, $(obj-y))
subdir-obj-y := $(filter %/built-in.o, $(obj-y))


# $(obj-dirs) is a list of directories that contain object files
# $(obj-dirs) is a list of directories that contain object files
obj-dirs := $(dir $(multi-objs) $(subdir-obj-y))
obj-dirs := $(dir $(multi-objs) $(obj-y))


# Replace multi-part objects by their individual parts, look at local dir only
# Replace multi-part objects by their individual parts, look at local dir only
real-objs-y := $(foreach m, $(filter-out $(subdir-obj-y), $(obj-y)), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) $(extra-y)
real-objs-y := $(foreach m, $(filter-out $(subdir-obj-y), $(obj-y)), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) $(extra-y)
+5 −2
Original line number Original line Diff line number Diff line
@@ -2,7 +2,7 @@


if [ $# -lt 1 ]
if [ $# -lt 1 ]
then
then
	echo "Usage: headers_install.sh OUTDIR [FILES...]
	echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]
	echo
	echo
	echo "Prepares kernel header files for use by user space, by removing"
	echo "Prepares kernel header files for use by user space, by removing"
	echo "all compiler.h definitions and #includes, removing any"
	echo "all compiler.h definitions and #includes, removing any"
@@ -10,6 +10,7 @@ then
	echo "asm/inline/volatile keywords."
	echo "asm/inline/volatile keywords."
	echo
	echo
	echo "OUTDIR: directory to write each userspace header FILE to."
	echo "OUTDIR: directory to write each userspace header FILE to."
	echo "SRCDIR: source directory where files are picked."
	echo "FILES:  list of header files to operate on."
	echo "FILES:  list of header files to operate on."


	exit 1
	exit 1
@@ -19,6 +20,8 @@ fi


OUTDIR="$1"
OUTDIR="$1"
shift
shift
SRCDIR="$1"
shift


# Iterate through files listed on command line
# Iterate through files listed on command line


@@ -34,7 +37,7 @@ do
		-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
		-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
		-e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
		-e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
		-e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
		-e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
		"$i" > "$OUTDIR/$FILE.sed" || exit 1
		"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
	scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
	scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
		> "$OUTDIR/$FILE"
		> "$OUTDIR/$FILE"
	[ $? -gt 1 ] && exit 1
	[ $? -gt 1 ] && exit 1
+5 −10
Original line number Original line Diff line number Diff line
@@ -15,8 +15,8 @@ endef
quiet_cmd_offsets = GEN     $@
quiet_cmd_offsets = GEN     $@
define cmd_offsets
define cmd_offsets
	(set -e; \
	(set -e; \
	 echo "#ifndef __DEVICEVTABLE_OFFSETS_H__"; \
	 echo "#ifndef __DEVICETABLE_OFFSETS_H__"; \
	 echo "#define __DEVICEVTABLE_OFFSETS_H__"; \
	 echo "#define __DEVICETABLE_OFFSETS_H__"; \
	 echo "/*"; \
	 echo "/*"; \
	 echo " * DO NOT MODIFY."; \
	 echo " * DO NOT MODIFY."; \
	 echo " *"; \
	 echo " *"; \
@@ -29,15 +29,10 @@ define cmd_offsets
	 echo "#endif" ) > $@
	 echo "#endif" ) > $@
endef
endef


# We use internal kbuild rules to avoid the "is up to date" message from make
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s
scripts/mod/devicetable-offsets.s: scripts/mod/devicetable-offsets.c FORCE
	$(call if_changed,offsets)
	$(Q)mkdir -p $(dir $@)
	$(call if_changed_dep,cc_s_c)


$(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s
targets += $(devicetable-offsets-file) devicetable-offsets.s
	$(call cmd,offsets)

targets += $(devicetable-offsets-file)


# dependencies on generated files need to be listed explicitly
# dependencies on generated files need to be listed explicitly


Loading