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

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 Diff line number Diff line
@@ -981,7 +981,7 @@ _modinst_:
# boot a modules.dep even before / is mounted read-write.  However the
# boot script depmod is the master version.
PHONY += _modinst_post
_modinst_post: _modinst_
_modinst_post: include/config/kernel.release _modinst_
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst
	$(call cmd,depmod)

@@ -1116,6 +1116,7 @@ help:
	@echo  '  gtags           - Generate GNU GLOBAL index'
	@echo  '  kernelrelease	  - Output the release version string'
	@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  '                    (default: $(INSTALL_HDR_PATH))'; \
	 echo  ''
@@ -1310,7 +1311,7 @@ export_report:
endif #ifeq ($(config-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
# toolchain, so needs $(SUBARCH) passed to checkstack.pl.  Everyone
@@ -1331,6 +1332,9 @@ kernelrelease:
kernelversion:
	@echo $(KERNELVERSION)

image_name:
	@echo $(KBUILD_IMAGE)

# Clear a bunch of variables before executing the submake
tools/: FORCE
	$(Q)mkdir -p $(objtree)/tools
+14 −6
Original line number 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)
output-files  := $(addprefix $(installdir)/, $(all-files))

input-files   := $(foreach hdr, $(header-y), \
input-files1  := $(foreach hdr, $(header-y), \
		   $(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)), \
				$(wildcard $(oldsrcdir)/$(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)), \
			$(wildcard $(gendir)/$(hdr)), \
			$(error Missing generated UAPI file $(gendir)/$(hdr)) \
		   ))
input-files3-name := $(notdir $(input-files3))

# Work out what needs to be removed
oldheaders    := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
@@ -72,7 +78,9 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
                            file$(if $(word 2, $(all-files)),s))
      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                                   \
                echo "\#include <asm-generic/$$F>" > $(installdir)/$$F;    \
        done;                                                           \
@@ -98,7 +106,7 @@ __headersinst: $(subdirs) $(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 $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
	$(call if_changed,install)
+2 −2
Original line number 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))

# $(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
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 Diff line number Diff line
@@ -2,7 +2,7 @@

if [ $# -lt 1 ]
then
	echo "Usage: headers_install.sh OUTDIR [FILES...]
	echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]
	echo
	echo "Prepares kernel header files for use by user space, by removing"
	echo "all compiler.h definitions and #includes, removing any"
@@ -10,6 +10,7 @@ then
	echo "asm/inline/volatile keywords."
	echo
	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."

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

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

# 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/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
		-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" \
		> "$OUTDIR/$FILE"
	[ $? -gt 1 ] && exit 1
+5 −10
Original line number Diff line number Diff line
@@ -15,8 +15,8 @@ endef
quiet_cmd_offsets = GEN     $@
define cmd_offsets
	(set -e; \
	 echo "#ifndef __DEVICEVTABLE_OFFSETS_H__"; \
	 echo "#define __DEVICEVTABLE_OFFSETS_H__"; \
	 echo "#ifndef __DEVICETABLE_OFFSETS_H__"; \
	 echo "#define __DEVICETABLE_OFFSETS_H__"; \
	 echo "/*"; \
	 echo " * DO NOT MODIFY."; \
	 echo " *"; \
@@ -29,15 +29,10 @@ define cmd_offsets
	 echo "#endif" ) > $@
endef

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

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

targets += $(devicetable-offsets-file)
targets += $(devicetable-offsets-file) devicetable-offsets.s

# dependencies on generated files need to be listed explicitly

Loading