Commit a2bc8dea authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-v4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild updates from Masahiro Yamada:

 - Use Make-builtin $(abspath ...) helper to get absolute path

 - Add W=2 extra warning option to detect unused macros

 - Use more KCONFIG_CONFIG instead hard-coded .config

 - Fix bugs of tar*-pkg targets

* tag 'kbuild-v4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kbuild: buildtar: do not print successful message if tar returns error
  kbuild: buildtar: fix tar error when CONFIG_MODULES is disabled
  kbuild: Use KCONFIG_CONFIG in buildtar
  Kbuild: enable -Wunused-macros warning for "make W=2"
  kbuild: use $(abspath ...) instead of $(shell cd ... && /bin/pwd)
parents dff4d1f6 77780f79
...@@ -130,8 +130,8 @@ endif ...@@ -130,8 +130,8 @@ endif
ifneq ($(KBUILD_OUTPUT),) ifneq ($(KBUILD_OUTPUT),)
# check that the output directory actually exists # check that the output directory actually exists
saved-output := $(KBUILD_OUTPUT) saved-output := $(KBUILD_OUTPUT)
KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ $(shell [ -d $(KBUILD_OUTPUT) ] || mkdir -p $(KBUILD_OUTPUT))
&& /bin/pwd) KBUILD_OUTPUT := $(realpath $(KBUILD_OUTPUT))
$(if $(KBUILD_OUTPUT),, \ $(if $(KBUILD_OUTPUT),, \
$(error failed to create output directory "$(saved-output)")) $(error failed to create output directory "$(saved-output)"))
...@@ -978,7 +978,7 @@ ifdef CONFIG_HEADERS_CHECK ...@@ -978,7 +978,7 @@ ifdef CONFIG_HEADERS_CHECK
$(Q)$(MAKE) -f $(srctree)/Makefile headers_check $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
endif endif
ifdef CONFIG_GDB_SCRIPTS ifdef CONFIG_GDB_SCRIPTS
$(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py $(Q)ln -fsn $(abspath $(srctree)/scripts/gdb/vmlinux-gdb.py)
endif endif
ifdef CONFIG_TRIM_UNUSED_KSYMS ifdef CONFIG_TRIM_UNUSED_KSYMS
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
...@@ -1238,7 +1238,7 @@ _modinst_: ...@@ -1238,7 +1238,7 @@ _modinst_:
@rm -rf $(MODLIB)/kernel @rm -rf $(MODLIB)/kernel
@rm -f $(MODLIB)/source @rm -f $(MODLIB)/source
@mkdir -p $(MODLIB)/kernel @mkdir -p $(MODLIB)/kernel
@ln -s `cd $(srctree) && /bin/pwd` $(MODLIB)/source @ln -s $(abspath $(srctree)) $(MODLIB)/source
@if [ ! $(objtree) -ef $(MODLIB)/build ]; then \ @if [ ! $(objtree) -ef $(MODLIB)/build ]; then \
rm -f $(MODLIB)/build ; \ rm -f $(MODLIB)/build ; \
ln -s $(CURDIR) $(MODLIB)/build ; \ ln -s $(CURDIR) $(MODLIB)/build ; \
...@@ -1630,11 +1630,11 @@ image_name: ...@@ -1630,11 +1630,11 @@ image_name:
# 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
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/
tools/%: FORCE tools/%: FORCE
$(Q)mkdir -p $(objtree)/tools $(Q)mkdir -p $(objtree)/tools
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $* $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/ $*
# Single targets # Single targets
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
......
...@@ -37,6 +37,7 @@ warning-2 += $(call cc-option, -Wlogical-op) ...@@ -37,6 +37,7 @@ warning-2 += $(call cc-option, -Wlogical-op)
warning-2 += $(call cc-option, -Wmissing-field-initializers) warning-2 += $(call cc-option, -Wmissing-field-initializers)
warning-2 += $(call cc-option, -Wsign-compare) warning-2 += $(call cc-option, -Wsign-compare)
warning-2 += $(call cc-option, -Wmaybe-uninitialized) warning-2 += $(call cc-option, -Wmaybe-uninitialized)
warning-2 += $(call cc-option, -Wunused-macros)
warning-3 := -Wbad-function-cast warning-3 := -Wbad-function-cast
warning-3 += -Wcast-qual warning-3 += -Wcast-qual
......
always := gdb-scripts always := gdb-scripts
SRCTREE := $(shell cd $(srctree) && /bin/pwd) SRCTREE := $(abspath $(srctree))
$(obj)/gdb-scripts: $(obj)/gdb-scripts:
ifneq ($(KBUILD_SRC),) ifneq ($(KBUILD_SRC),)
......
...@@ -24,20 +24,19 @@ tarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar" ...@@ -24,20 +24,19 @@ tarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar"
# #
case "${1}" in case "${1}" in
tar-pkg) tar-pkg)
compress="cat" opts=
file_ext=""
;; ;;
targz-pkg) targz-pkg)
compress="gzip" opts=--gzip
file_ext=".gz" tarball=${tarball}.gz
;; ;;
tarbz2-pkg) tarbz2-pkg)
compress="bzip2" opts=--bzip2
file_ext=".bz2" tarball=${tarball}.bz2
;; ;;
tarxz-pkg) tarxz-pkg)
compress="xz" opts=--xz
file_ext=".xz" tarball=${tarball}.xz
;; ;;
*) *)
echo "Unknown tarball target \"${1}\" requested, please add it to ${0}." >&2 echo "Unknown tarball target \"${1}\" requested, please add it to ${0}." >&2
...@@ -51,13 +50,14 @@ esac ...@@ -51,13 +50,14 @@ esac
# #
rm -rf -- "${tmpdir}" rm -rf -- "${tmpdir}"
mkdir -p -- "${tmpdir}/boot" mkdir -p -- "${tmpdir}/boot"
dirs=boot
# #
# Try to install modules # Try to install modules
# #
if grep -q '^CONFIG_MODULES=y' "${objtree}/.config"; then if grep -q '^CONFIG_MODULES=y' "${KCONFIG_CONFIG}"; then
make ARCH="${ARCH}" O="${objtree}" KBUILD_SRC= INSTALL_MOD_PATH="${tmpdir}" modules_install make ARCH="${ARCH}" O="${objtree}" KBUILD_SRC= INSTALL_MOD_PATH="${tmpdir}" modules_install
dirs="$dirs lib"
fi fi
...@@ -65,7 +65,7 @@ fi ...@@ -65,7 +65,7 @@ fi
# Install basic kernel files # Install basic kernel files
# #
cp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}" cp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}"
cp -v -- "${objtree}/.config" "${tmpdir}/boot/config-${KERNELRELEASE}" cp -v -- "${KCONFIG_CONFIG}" "${tmpdir}/boot/config-${KERNELRELEASE}"
cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
...@@ -124,14 +124,12 @@ esac ...@@ -124,14 +124,12 @@ esac
# #
# Create the tarball # Create the tarball
# #
( if tar --owner=root --group=root --help >/dev/null 2>&1; then
opts= opts="$opts --owner=root --group=root"
if tar --owner=root --group=root --help >/dev/null 2>&1; then fi
opts="--owner=root --group=root"
fi tar cf $tarball -C $tmpdir $opts $dirs
tar cf - -C "$tmpdir" boot/ lib/ $opts | ${compress} > "${tarball}${file_ext}"
)
echo "Tarball successfully created in ${tarball}${file_ext}" echo "Tarball successfully created in $tarball"
exit 0 exit 0
...@@ -26,7 +26,7 @@ endif ...@@ -26,7 +26,7 @@ endif
ifneq ($(OUTPUT),) ifneq ($(OUTPUT),)
# check that the output directory actually exists # check that the output directory actually exists
OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) OUTDIR := $(realpath $(OUTPUT))
$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
endif endif
......
ifneq ($(O),) ifneq ($(O),)
ifeq ($(origin O), command line) ifeq ($(origin O), command line)
dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),) ABSOLUTE_O := $(realpath $(O))
ABSOLUTE_O := $(shell cd $(O) ; pwd) dummy := $(if $(ABSOLUTE_O),,$(error O=$(O) does not exist))
OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/) OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/)
COMMAND_O := O=$(ABSOLUTE_O) COMMAND_O := O=$(ABSOLUTE_O)
ifeq ($(objtree),) ifeq ($(objtree),)
...@@ -12,7 +12,7 @@ endif ...@@ -12,7 +12,7 @@ endif
# check that the output directory actually exists # check that the output directory actually exists
ifneq ($(OUTPUT),) ifneq ($(OUTPUT),)
OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) OUTDIR := $(realpath $(OUTPUT))
$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
endif endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment