Commit b9e306e0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull misc kbuild updates from Michal Marek:
 "Non-critical kbuild changes:

   - make coccicheck improvements, but no new semantic patches this time

   - make rpm improvements

   - make tar-pkg change to include the architecture in the filename.

     This is a deliberate incompatibility, but nobody has complained so
     far and it is useful if you build for different architectures.  It
     also matches what the deb-pkg and rpm-pkg targets produce.

   - kbuild documentation fix"

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  rpm-pkg: Remove pointless set -e statements
  rpm-pkg: Always regenerate the specfile
  rpm-pkg: Do not write to the parent directory
  rpm-pkg: Do not package the whole source directory
  buildtar: Add ARCH to the archive name
  Coccinelle: Fix patch output when coccicheck is used with M= and C=
  Coccinelle: Add support to the SPFLAGS variable
  Coccinelle: Cleanup the setting of the FLAGS and OPTIONS variables
  Coccinelle: Restore coccicheck verbosity in ONLINE mode (C=1 or C=2)
  scripts/package/Makefile: compare objtree with srctree instead of test KBUILD_OUTPUT
  doc: change example to existing Makefile fragment
  scripts/tags.sh: Add magic for OFFSET and DEFINE
parents 685e56d2 a0f9c6f2
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -134,6 +134,15 @@ MODE variable explained above.
In this mode, there is no information about semantic patches
In this mode, there is no information about semantic patches
displayed, and no commit message proposed.
displayed, and no commit message proposed.


 Additional flags
~~~~~~~~~~~~~~~~~~

Additional flags can be passed to spatch through the SPFLAGS
variable.

    make SPFLAGS=--use_glimpse coccicheck

See spatch --help to learn more about spatch options.


 Proposing new semantic patches
 Proposing new semantic patches
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3 −2
Original line number Original line Diff line number Diff line
@@ -921,8 +921,9 @@ When kbuild executes, the following steps are followed (roughly):
	Often, the KBUILD_CFLAGS variable depends on the configuration.
	Often, the KBUILD_CFLAGS variable depends on the configuration.


	Example:
	Example:
		#arch/x86/Makefile
		#arch/x86/boot/compressed/Makefile
		cflags-$(CONFIG_M386) += -march=i386
		cflags-$(CONFIG_X86_32) := -march=i386
		cflags-$(CONFIG_X86_64) := -mcmodel=small
		KBUILD_CFLAGS += $(cflags-y)
		KBUILD_CFLAGS += $(cflags-y)


	Many arch Makefiles dynamically run the target C compiler to
	Many arch Makefiles dynamically run the target C compiler to
+2 −0
Original line number Original line Diff line number Diff line
@@ -757,6 +757,8 @@ export KBUILD_VMLINUX_INIT := $(head-y) $(init-y)
export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y) $(drivers-y) $(net-y)
export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y) $(drivers-y) $(net-y)
export KBUILD_LDS          := arch/$(SRCARCH)/kernel/vmlinux.lds
export KBUILD_LDS          := arch/$(SRCARCH)/kernel/vmlinux.lds
export LDFLAGS_vmlinux
export LDFLAGS_vmlinux
# used by scripts/pacmage/Makefile
export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) arch Documentation include samples scripts tools virt)


vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN)
vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN)


+18 −13
Original line number Original line Diff line number Diff line
#!/bin/sh
#!/bin/bash


SPATCH="`which ${SPATCH:=spatch}`"
SPATCH="`which ${SPATCH:=spatch}`"


@@ -11,27 +11,32 @@ else
	VERBOSE=0
	VERBOSE=0
fi
fi


FLAGS="$SPFLAGS -very_quiet"

# spatch only allows include directories with the syntax "-I include"
# while gcc also allows "-Iinclude" and "-include include"
COCCIINCLUDE=${LINUXINCLUDE//-I/-I }
COCCIINCLUDE=${COCCIINCLUDE//-include/-I}

if [ "$C" = "1" -o "$C" = "2" ]; then
if [ "$C" = "1" -o "$C" = "2" ]; then
    ONLINE=1
    ONLINE=1


# This requires Coccinelle >= 0.2.3
    # Take only the last argument, which is the C file to test
#    FLAGS="-ignore_unknown_options -very_quiet"
#    OPTIONS=$*

# Workaround for Coccinelle < 0.2.3
	FLAGS="-I $srctree/include -very_quiet"
    shift $(( $# - 1 ))
    shift $(( $# - 1 ))
	OPTIONS=$1
    OPTIONS="$COCCIINCLUDE $1"
else
else
    ONLINE=0
    ONLINE=0
    FLAGS="-very_quiet"
    if [ "$KBUILD_EXTMOD" = "" ] ; then
    if [ "$KBUILD_EXTMOD" = "" ] ; then
        OPTIONS="-dir $srctree"
        OPTIONS="-dir $srctree $COCCIINCLUDE"
    else
    else
        OPTIONS="-dir $KBUILD_EXTMOD -patch $srctree -I $srctree/include -I $KBUILD_EXTMOD/include"
        OPTIONS="-dir $KBUILD_EXTMOD $COCCIINCLUDE"
    fi
    fi
fi
fi


if [ "$KBUILD_EXTMOD" != "" ] ; then
    OPTIONS="-patch $srctree $OPTIONS"
fi

if [ ! -x "$SPATCH" ]; then
if [ ! -x "$SPATCH" ]; then
    echo 'spatch is part of the Coccinelle project and is available at http://coccinelle.lip6.fr/'
    echo 'spatch is part of the Coccinelle project and is available at http://coccinelle.lip6.fr/'
    exit 1
    exit 1
@@ -72,7 +77,7 @@ coccinelle () {
#
#
#    $SPATCH -D $MODE $FLAGS -parse_cocci $COCCI $OPT > /dev/null
#    $SPATCH -D $MODE $FLAGS -parse_cocci $COCCI $OPT > /dev/null


    if [ $VERBOSE -ne 0 ] ; then
    if [ $VERBOSE -ne 0 -a $ONLINE -eq 0 ] ; then


	FILE=`echo $COCCI | sed "s|$srctree/||"`
	FILE=`echo $COCCI | sed "s|$srctree/||"`


+15 −24
Original line number Original line Diff line number Diff line
@@ -27,53 +27,44 @@ RPM := $(shell if [ -x "/usr/bin/rpmbuild" ]; then echo rpmbuild; \


# Remove hyphens since they have special meaning in RPM filenames
# Remove hyphens since they have special meaning in RPM filenames
KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
# Include only those top-level files that are needed by make, plus the GPL copy
TAR_CONTENT := $(KBUILD_ALLDIRS) kernel.spec .config .scmversion Makefile \
               Kbuild Kconfig COPYING $(wildcard localversion*)
TAR_CONTENT := $(addprefix $(KERNELPATH)/,$(TAR_CONTENT))
MKSPEC     := $(srctree)/scripts/package/mkspec
MKSPEC     := $(srctree)/scripts/package/mkspec
PREV       := set -e; cd -P ..;


# rpm-pkg
# rpm-pkg
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
$(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile
rpm-pkg rpm: FORCE
	$(CONFIG_SHELL) $(MKSPEC) > $@
	@if test "$(objtree)" != "$(srctree)"; then \

rpm-pkg rpm: $(objtree)/kernel.spec FORCE
	@if test -n "$(KBUILD_OUTPUT)"; then \
		echo "Building source + binary RPM is not possible outside the"; \
		echo "Building source + binary RPM is not possible outside the"; \
		echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
		echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
		echo "binrpm-pkg target instead."; \
		echo "binrpm-pkg target instead."; \
		false; \
		false; \
	fi
	fi
	$(MAKE) clean
	$(MAKE) clean
	$(PREV) ln -sf $(srctree) $(KERNELPATH)
	ln -sf $(srctree) $(KERNELPATH)
	$(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
	$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
	$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
	$(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
	tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
	$(PREV) rm $(KERNELPATH)
	rm $(KERNELPATH)
	rm -f $(objtree)/.scmversion
	rm -f $(objtree)/.scmversion
	set -e; \
	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
	set -e; \
	mv -f $(objtree)/.tmp_version $(objtree)/.version
	mv -f $(objtree)/.tmp_version $(objtree)/.version

	$(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
	$(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta ../$(KERNELPATH).tar.gz
	rm $(KERNELPATH).tar.gz kernel.spec
	rm ../$(KERNELPATH).tar.gz

clean-files := $(objtree)/kernel.spec


# binrpm-pkg
# binrpm-pkg
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
$(objtree)/binkernel.spec: $(MKSPEC) $(srctree)/Makefile
binrpm-pkg: FORCE
	$(CONFIG_SHELL) $(MKSPEC) prebuilt > $@

binrpm-pkg: $(objtree)/binkernel.spec FORCE
	$(MAKE) KBUILD_SRC=
	$(MAKE) KBUILD_SRC=
	set -e; \
	$(CONFIG_SHELL) $(MKSPEC) prebuilt > $(objtree)/binkernel.spec
	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
	set -e; \
	mv -f $(objtree)/.tmp_version $(objtree)/.version
	mv -f $(objtree)/.tmp_version $(objtree)/.version


	$(RPM) $(RPMOPTS) --define "_builddir $(objtree)" --target \
	$(RPM) $(RPMOPTS) --define "_builddir $(objtree)" --target \
		$(UTS_MACHINE) -bb $<
		$(UTS_MACHINE) -bb $<

	rm binkernel.spec
clean-files += $(objtree)/binkernel.spec


# Deb target
# Deb target
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
Loading