linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PATCHES] kbuild updates
@ 2006-01-09 21:11 Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 01/11] kconfig: factor out ncurses check in a shell script Sam Ravnborg
                   ` (12 more replies)
  0 siblings, 13 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:11 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel, Andrew Morton

Hi Linus.

Please pull from:
	ssh://master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git

Important changes:
	o do not build vmlinux as part of make install.
	     Error out if file is missing
	o no longer use git as part of make install

The changes has not been in -mm, But most are trivial and it works for
me.
The lxdialog change is a preparation for linking in lxdialog with
menuconfig.

	Sam
	
 Documentation/kbuild/makefiles.txt         |    4 -
 Kbuild                                     |    6 -
 Makefile                                   |   99 +++++++++++++++--------------
 arch/frv/boot/Makefile                     |    5 -
 arch/i386/Makefile                         |    9 +-
 arch/i386/boot/Makefile                    |    2 
 arch/i386/boot/install.sh                  |   14 ++++
 arch/ia64/Makefile                         |    7 --
 arch/powerpc/Makefile                      |    6 -
 arch/ppc/Makefile                          |    4 -
 arch/x86_64/Makefile                       |    5 +
 arch/x86_64/boot/Makefile                  |    2 
 arch/x86_64/boot/install.sh                |   41 ------------
 fs/xfs/Kbuild                              |    7 +-
 scripts/kconfig/lxdialog/Makefile          |   48 +++-----------
 scripts/kconfig/lxdialog/check-lxdialog.sh |   68 +++++++++++++++++++
 scripts/mod/file2alias.c                   |    3 
 scripts/reference_discarded.pl             |    7 +-
 scripts/setlocalversion                    |    3 
 19 files changed, 182 insertions(+), 158 deletions(-)

Brian Gerst:
      kbuild: clean up asm-offsets.h creation
      modpost/file2alias: Fix typo

Dave Jones:
      kbuild: reference_discarded addition

H. Peter Anvin:
      kbuild: drop vmlinux dependency from "make install"

Ryan Anderson:
      kbuild: In setlocalversion change -git_dirty to just -dirty

Sam Ravnborg:
      kconfig: factor out ncurses check in a shell script
      kbuild: remove GCC_VERSION
      frv: Use KERNELRELEASE
      kbuild/xfs: introduce fs/xfs/Kbuild
      kbuild: KERNELRELEASE is only re-defined when buiding the kernel

Tore Anderson:
      kbuild: ensure mrproper removes .old_version


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 01/11] kconfig: factor out ncurses check in a shell script
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-10 20:27   ` Jan Engelhardt
  2006-01-09 21:38 ` [PATCH 02/11] kbuild: clean up asm-offsets.h creation Sam Ravnborg
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel


Cleaning up the lxdialog Makefile by factoring out the
ncurses compatibility checks.
This made the checks much more obvious and easier to extend.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/kconfig/lxdialog/Makefile          |   48 +++++---------------
 scripts/kconfig/lxdialog/check-lxdialog.sh |   67 ++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 36 deletions(-)
 create mode 100644 scripts/kconfig/lxdialog/check-lxdialog.sh

ae215b14bdbd459afe5f371175765fae817062a8
diff --git a/scripts/kconfig/lxdialog/Makefile b/scripts/kconfig/lxdialog/Makefile
index a45a13f..8f41d9a 100644
--- a/scripts/kconfig/lxdialog/Makefile
+++ b/scripts/kconfig/lxdialog/Makefile
@@ -1,42 +1,18 @@
-HOST_EXTRACFLAGS := -DLOCALE 
-ifeq ($(shell uname),SunOS)
-HOST_LOADLIBES   := -lcurses
-else
-HOST_LOADLIBES   := -lncurses
-endif
+# Makefile to build lxdialog package
+#
 
-ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
-        HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
-else
-ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
-        HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
-else
-ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
-        HOST_EXTRACFLAGS += -DCURSES_LOC="<ncurses.h>"
-else
-	HOST_EXTRACFLAGS += -DCURSES_LOC="<curses.h>"
-endif
-endif
-endif
+check-lxdialog   := $(srctree)/$(src)/check-lxdialog.sh
+HOST_EXTRACFLAGS := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
+HOST_LOADLIBES   := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags)
+ 
+HOST_EXTRACFLAGS += -DLOCALE 
+
+.PHONY: dochecklxdialog
+$(obj)/dochecklxdialog:
+	$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES)
 
 hostprogs-y	:= lxdialog
-always		:= ncurses $(hostprogs-y)
+always		:= $(hostprogs-y) dochecklxdialog
 
 lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \
 		 util.o lxdialog.o msgbox.o
-
-.PHONY: $(obj)/ncurses
-$(obj)/ncurses:
-	@echo "main() {}" > lxtemp.c
-	@if $(HOSTCC) lxtemp.c  $(HOST_LOADLIBES); then \
-		rm -f lxtemp.c a.out; \
-	else \
-		rm -f lxtemp.c; \
-		echo -e "\007" ;\
-		echo ">> Unable to find the Ncurses libraries." ;\
-		echo ">>" ;\
-		echo ">> You must install ncurses-devel in order" ;\
-		echo ">> to use 'make menuconfig'" ;\
-		echo ;\
-		exit 1 ;\
-	fi
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
new file mode 100644
index 0000000..a3c141b
--- /dev/null
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Check ncurses compatibility
+
+# What library to link
+ldflags()
+{
+	if [ `uname` == SunOS ]; then
+		echo '-lcurses'
+	else
+		echo '-lncurses'
+	fi
+}
+
+# Where is ncurses.h?
+ccflags()
+{
+	if [ -f /usr/include/ncurses/ncurses.h ]; then
+		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
+	elif [ -f /usr/include/ncurses/curses.h ]; then
+		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"'
+	elif [ -f /usr/include/ncurses.h ]; then
+		echo '-DCURSES_LOC="<ncurses.h>"'
+	else
+		echo '-DCURSES_LOC="<curses.h>"'
+	fi
+}
+
+compiler=""
+# Check if we can link to ncurses
+check() {
+	echo "main() {}" | $compiler -xc -
+	if [ $? != 0 ]; then
+		echo " *** Unable to find the ncurses libraries."          1>&2
+		echo " *** make menuconfig require the ncurses libraries"  1>&2
+		echo " *** "                                               1>&2
+		echo " *** Install ncurses (ncurses-devel) and try again"  1>&2
+		echo " *** "                                               1>&2
+		exit 1
+	fi
+}
+
+usage() {
+	printf "Usage: $0 [-check compiler options|-header|-library]\n"
+}
+
+if [ $# == 0 ]; then
+	usage
+	exit 1
+fi
+
+case "$1" in
+	"-check")
+		shift
+		compiler="$@"
+		check
+		;;
+	"-ccflags")
+		ccflags
+		;;
+	"-ldflags")
+		ldflags
+		;;
+	"*")
+		usage
+		exit 1
+		;;
+esac
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 02/11] kbuild: clean up asm-offsets.h creation
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 01/11] kconfig: factor out ncurses check in a shell script Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 03/11] modpost/file2alias: Fix typo Sam Ravnborg
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel

From: Brian Gerst <bgerst@didntduck.org>
Date: 1136590125 -0500

- Move mkdir out of cmd_offsets
- Add input file to sed command instead of using cat

Signed-off-by: Brian Gerst <bgerst@didntduck.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 Kbuild |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

ac448afbcdcc218fd8d177960466ecc4a523722f
diff --git a/Kbuild b/Kbuild
index 7900391..95d6a00 100644
--- a/Kbuild
+++ b/Kbuild
@@ -22,8 +22,6 @@ sed-$(CONFIG_MIPS) := "/^@@@/s///p"
 
 quiet_cmd_offsets = GEN     $@
 define cmd_offsets
-	mkdir -p $(dir $@); \
-	cat $< | \
 	(set -e; \
 	 echo "#ifndef __ASM_OFFSETS_H__"; \
 	 echo "#define __ASM_OFFSETS_H__"; \
@@ -34,7 +32,7 @@ define cmd_offsets
 	 echo " *"; \
 	 echo " */"; \
 	 echo ""; \
-	 sed -ne $(sed-y); \
+	 sed -ne $(sed-y) $<; \
 	 echo ""; \
 	 echo "#endif" ) > $@
 endef
@@ -45,5 +43,6 @@ arch/$(ARCH)/kernel/asm-offsets.s: arch/
 	$(call if_changed_dep,cc_s_c)
 
 $(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild
+	$(Q)mkdir -p $(dir $@)
 	$(call cmd,offsets)
 
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 03/11] modpost/file2alias: Fix typo
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 01/11] kconfig: factor out ncurses check in a shell script Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 02/11] kbuild: clean up asm-offsets.h creation Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 04/11] kbuild: In setlocalversion change -git_dirty to just -dirty Sam Ravnborg
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel

From: Brian Gerst <bgerst@didntduck.org>
Date: 1136735635 -0500

SND_MAX should be FF_MAX

Signed-off-by: Brian Gerst <bgerst@didntduck.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/mod/file2alias.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

cc6fa432f5eec26c43fd06c0314cb1c2cae6d9a1
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index e0eedff..be97caf 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -417,7 +417,7 @@ static int do_input_entry(const char *fi
 		do_input(alias, id->sndbit, 0, SND_MAX);
 	sprintf(alias + strlen(alias), "f*");
 	if (id->flags&INPUT_DEVICE_ID_MATCH_FFBIT)
-		do_input(alias, id->ffbit, 0, SND_MAX);
+		do_input(alias, id->ffbit, 0, FF_MAX);
 	sprintf(alias + strlen(alias), "w*");
 	if (id->flags&INPUT_DEVICE_ID_MATCH_SWBIT)
 		do_input(alias, id->swbit, 0, SW_MAX);
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 04/11] kbuild: In setlocalversion change -git_dirty to just -dirty
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (2 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 03/11] modpost/file2alias: Fix typo Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 05/11] kbuild: ensure mrproper removes .old_version Sam Ravnborg
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel

From: Ryan Anderson <ryan@michonline.com>
Date: 1136712936 -0500

When building Debian packages directly from the git tree, the appended
"git_dirty" is a problem due to the underscore.  In order to cause the
least problems, change that just to "dirty".

Signed-off-by: Ryan Anderson <ryan@michonline.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/setlocalversion |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

24d49756aa67322c2def5dc97344615572ac454e
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index f54dac8..9a23825 100644
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -17,6 +17,6 @@ if head=`git rev-parse --verify HEAD 2>/
 
 	# Are there uncommitted changes?
 	if git diff-files | read dummy; then
-		printf '%s' -git_dirty
+		printf '%s' -dirty
 	fi
 fi
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 05/11] kbuild: ensure mrproper removes .old_version
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (3 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 04/11] kbuild: In setlocalversion change -git_dirty to just -dirty Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 06/11] kbuild: reference_discarded addition Sam Ravnborg
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel

From: Tore Anderson <tore@fud.no>
Date: 1136644480 +0100

If the final linking of vmlinux fails, the file .old_version are left
behind.  This patch ensures the mrproper target will remove it if
present.

Signed-off-by: Tore Anderson <tore@fud.no>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

50aa88e2877f1375ba79d1be7a0ff4aa563741c7
diff --git a/Makefile b/Makefile
index 599e744..50b07fa 100644
--- a/Makefile
+++ b/Makefile
@@ -984,7 +984,7 @@ CLEAN_FILES +=	vmlinux System.map \
 
 # Directories & files removed with 'make mrproper'
 MRPROPER_DIRS  += include/config include2
-MRPROPER_FILES += .config .config.old include/asm .version \
+MRPROPER_FILES += .config .config.old include/asm .version .old_version \
                   include/linux/autoconf.h include/linux/version.h \
                   Module.symvers tags TAGS cscope*
 
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 06/11] kbuild: reference_discarded addition
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (4 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 05/11] kbuild: ensure mrproper removes .old_version Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 07/11] kbuild: remove GCC_VERSION Sam Ravnborg
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel

From: Dave Jones <davej@redhat.com>
Date: 1136533219 -0500

Error: ./fs/quota_v2.o .opd refers to 0000000000000020 R_PPC64_ADDR64    .exit.text

Been carrying this for some time in Red Hat trees.

Keith Ownes <kaos@sgi.com> commented:
For our future {in}sanity, add a comment that this is the ppc .opd
section, not the ia64 .opd section.  ia64 .opd should not point to
discarded sections.

Any idea why ppc .opd points to discarded sections when ia64 does not?
AFAICT no ia64 object has a useful .opd section, they are all empty or
(sometimes) a dummy entry which is 1 byte long.  ia64 .opd data is
built at link time, not compile time.

Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/reference_discarded.pl |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

442ce844e139c1e3c23e8b4df13468041ae35721
diff --git a/scripts/reference_discarded.pl b/scripts/reference_discarded.pl
index c2d5414..4ee6ab2 100644
--- a/scripts/reference_discarded.pl
+++ b/scripts/reference_discarded.pl
@@ -71,6 +71,11 @@ foreach $object (keys(%object)) {
 # printf("ignoring %d conglomerate(s)\n", $ignore);
 
 # printf("Scanning objects\n");
+
+# Keith Ownes <kaos@sgi.com> commented:
+# For our future {in}sanity, add a comment that this is the ppc .opd
+# section, not the ia64 .opd section.
+# ia64 .opd should not point to discarded sections.
 $errorcount = 0;
 foreach $object (keys(%object)) {
 	my $from;
@@ -88,6 +93,7 @@ foreach $object (keys(%object)) {
 		    ($from !~ /\.text\.exit$/ &&
 		     $from !~ /\.exit\.text$/ &&
 		     $from !~ /\.data\.exit$/ &&
+		     $from !~ /\.opd$/ &&
 		     $from !~ /\.exit\.data$/ &&
 		     $from !~ /\.altinstructions$/ &&
 		     $from !~ /\.pdr$/ &&
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 07/11] kbuild: remove GCC_VERSION
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (5 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 06/11] kbuild: reference_discarded addition Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 08/11] frv: Use KERNELRELEASE Sam Ravnborg
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel


This was causing some ordering problems.  Remove the up-front evaluation
and just revaluate the compiler version each time we need it.

(The up-front evaluation was problematic because some architectures modify
the value of $(CC)).

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 Documentation/kbuild/makefiles.txt |    4 ++--
 arch/i386/Makefile                 |    4 ++--
 arch/ia64/Makefile                 |    7 +------
 arch/powerpc/Makefile              |    6 ++----
 arch/ppc/Makefile                  |    3 +--
 5 files changed, 8 insertions(+), 16 deletions(-)

ad14336de8e9cddae9ed29d45bd2e97abb72eaf9
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index d802ce8..443230b 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -1033,9 +1033,9 @@ When kbuild executes the following steps
 
 	Example:
 		#arch/i386/Makefile
-		GCC_VERSION := $(call cc-version)
 		cflags-y += $(shell \
-		if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;)
+		if [ $(call cc-version) -ge 0300 ] ; then \
+			echo "-mregparm=3"; fi ;)
 
 	In the above example -mregparm=3 is only used for gcc version greater
 	than or equal to gcc 3.0.
diff --git a/arch/i386/Makefile b/arch/i386/Makefile
index d121ea1..8f6b90e 100644
--- a/arch/i386/Makefile
+++ b/arch/i386/Makefile
@@ -39,8 +39,8 @@ include $(srctree)/arch/i386/Makefile.cp
 
 # -mregparm=3 works ok on gcc-3.0 and later
 #
-GCC_VERSION			:= $(call cc-version)
-cflags-$(CONFIG_REGPARM) 	+= $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;)
+cflags-$(CONFIG_REGPARM) += $(shell if [ $(call cc-version) -ge 0300 ] ; then \
+                            echo "-mregparm=3"; fi ;)
 
 # Disable unit-at-a-time mode, it makes gcc use a lot more stack
 # due to the lack of sharing of stacklots.
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 67932ad..f722e1a 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -25,7 +25,6 @@ cflags-y	:= -pipe $(EXTRA) -ffixed-r13 -
 		   -falign-functions=32 -frename-registers -fno-optimize-sibling-calls
 CFLAGS_KERNEL	:= -mconstant-gp
 
-GCC_VERSION     := $(call cc-version)
 GAS_STATUS	= $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
 CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
 
@@ -37,11 +36,7 @@ $(error Sorry, you need a newer version 
 		ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
 endif
 
-ifneq ($(shell if [ $(GCC_VERSION) -lt 0300 ] ; then echo "bad"; fi ;),)
-$(error Sorry, your compiler is too old.  GCC v2.96 is known to generate bad code.)
-endif
-
-ifeq ($(GCC_VERSION),0304)
+ifeq ($(call cc-version),0304)
 	cflags-$(CONFIG_ITANIUM)	+= -mtune=merced
 	cflags-$(CONFIG_MCKINLEY)	+= -mtune=mckinley
 endif
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index a13eb57..b98f11b 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -76,8 +76,7 @@ LINUXINCLUDE    += $(LINUXINCLUDE-y)
 CHECKFLAGS	+= -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__
 
 ifeq ($(CONFIG_PPC64),y)
-GCC_VERSION     := $(call cc-version)
-GCC_BROKEN_VEC	:= $(shell if [ $(GCC_VERSION) -lt 0400 ] ; then echo "y"; fi)
+GCC_BROKEN_VEC	:= $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi)
 
 ifeq ($(CONFIG_POWER4_ONLY),y)
 ifeq ($(CONFIG_ALTIVEC),y)
@@ -189,10 +188,9 @@ TOUT	:= .tmp_gas_check
 # Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec
 # instructions.
 # gcc-3.4 and binutils-2.14 are a fatal combination.
-GCC_VERSION	:= $(call cc-version)
 
 checkbin:
-	@if test "$(GCC_VERSION)" = "0304" ; then \
+	@if test "$(call cc-version)" = "0304" ; then \
 		if ! /bin/echo mftb 5 | $(AS) -v -mppc -many -o $(TOUT) >/dev/null 2>&1 ; then \
 			echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '; \
 			echo 'correctly with gcc-3.4 and your version of binutils.'; \
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile
index e719a49..98e940b 100644
--- a/arch/ppc/Makefile
+++ b/arch/ppc/Makefile
@@ -128,10 +128,9 @@ TOUT	:= .tmp_gas_check
 # Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec
 # instructions.
 # gcc-3.4 and binutils-2.14 are a fatal combination.
-GCC_VERSION	:= $(call cc-version)
 
 checkbin:
-	@if test "$(GCC_VERSION)" = "0304" ; then \
+	@if test "$(call cc-version)" = "0304" ; then \
 		if ! /bin/echo mftb 5 | $(AS) -v -mppc -many -o $(TOUT) >/dev/null 2>&1 ; then \
 			echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '; \
 			echo 'correctly with gcc-3.4 and your version of binutils.'; \
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 08/11] frv: Use KERNELRELEASE
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (6 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 07/11] kbuild: remove GCC_VERSION Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 09/11] kbuild: drop vmlinux dependency from "make install" Sam Ravnborg
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel


Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 arch/frv/boot/Makefile |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

63b794bfd898899cc8b6d4679d4fdc486606194b
diff --git a/arch/frv/boot/Makefile b/arch/frv/boot/Makefile
index d75e0d7..5dfc93f 100644
--- a/arch/frv/boot/Makefile
+++ b/arch/frv/boot/Makefile
@@ -57,10 +57,10 @@ initrd:
 # installation
 #
 install: $(CONFIGURE) Image
-	sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) Image $(TOPDIR)/System.map "$(INSTALL_PATH)"
+	sh ./install.sh $(KERNELRELEASE) Image $(TOPDIR)/System.map "$(INSTALL_PATH)"
 
 zinstall: $(CONFIGURE) zImage
-	sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)"
+	sh ./install.sh $(KERNELRELEASE) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)"
 
 #
 # miscellany
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 09/11] kbuild: drop vmlinux dependency from "make install"
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (7 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 08/11] frv: Use KERNELRELEASE Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-12 16:21   ` Cal Peake
  2006-01-31 20:11   ` Dave Hansen
  2006-01-09 21:38 ` [PATCH 10/11] kbuild/xfs: introduce fs/xfs/Kbuild Sam Ravnborg
                   ` (3 subsequent siblings)
  12 siblings, 2 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel

From: H. Peter Anvin <hpa@zytor.com>
Date: 1136684319 -0800

This removes the dependency from vmlinux to install, thus avoiding the
current situation where "make install" has a nasty tendency to leave
root-turds in the working directory.

It also updates x86-64 to be in sync with i386.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 arch/i386/Makefile          |    5 ++---
 arch/i386/boot/Makefile     |    2 +-
 arch/i386/boot/install.sh   |   14 ++++++++++++++
 arch/x86_64/Makefile        |    5 ++++-
 arch/x86_64/boot/Makefile   |    2 +-
 arch/x86_64/boot/install.sh |   40 +---------------------------------------
 6 files changed, 23 insertions(+), 45 deletions(-)

0d20babd86b40fa5ac55d9ebf31d05f6f7082161
diff --git a/arch/i386/Makefile b/arch/i386/Makefile
index 8f6b90e..d3c0409 100644
--- a/arch/i386/Makefile
+++ b/arch/i386/Makefile
@@ -103,7 +103,7 @@ AFLAGS += $(mflags-y)
 boot := arch/i386/boot
 
 .PHONY: zImage bzImage compressed zlilo bzlilo \
-	zdisk bzdisk fdimage fdimage144 fdimage288 install kernel_install
+	zdisk bzdisk fdimage fdimage144 fdimage288 install
 
 all: bzImage
 
@@ -125,8 +125,7 @@ zdisk bzdisk: vmlinux
 fdimage fdimage144 fdimage288: vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
 
-install: vmlinux
-install kernel_install:
+install:
 	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
 
 archclean:
diff --git a/arch/i386/boot/Makefile b/arch/i386/boot/Makefile
index 1e71382..0fea75d 100644
--- a/arch/i386/boot/Makefile
+++ b/arch/i386/boot/Makefile
@@ -100,5 +100,5 @@ zlilo: $(BOOTIMAGE)
 	cp System.map $(INSTALL_PATH)/
 	if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
 
-install: $(BOOTIMAGE)
+install:
 	sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $< System.map "$(INSTALL_PATH)"
diff --git a/arch/i386/boot/install.sh b/arch/i386/boot/install.sh
index f17b40d..5e44c73 100644
--- a/arch/i386/boot/install.sh
+++ b/arch/i386/boot/install.sh
@@ -19,6 +19,20 @@
 #   $4 - default install path (blank if root directory)
 #
 
+verify () {
+	if [ ! -f "$1" ]; then
+		echo ""                                                   1>&2
+		echo " *** Missing file: $1"                              1>&2
+		echo ' *** You need to run "make" before "make install".' 1>&2
+		echo ""                                                   1>&2
+		exit 1
+ 	fi
+}
+
+# Make sure the files actually exist
+verify "$2"
+verify "$3"
+
 # User may have a custom install script
 
 if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi
diff --git a/arch/x86_64/Makefile b/arch/x86_64/Makefile
index a9cd42e..51d8328 100644
--- a/arch/x86_64/Makefile
+++ b/arch/x86_64/Makefile
@@ -80,9 +80,12 @@ bzlilo: vmlinux
 bzdisk: vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) zdisk
 
-install fdimage fdimage144 fdimage288: vmlinux
+fdimage fdimage144 fdimage288: vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@
 
+install:
+	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@ 
+
 archclean:
 	$(Q)$(MAKE) $(clean)=$(boot)
 
diff --git a/arch/x86_64/boot/Makefile b/arch/x86_64/boot/Makefile
index 18c6e91..29f8396 100644
--- a/arch/x86_64/boot/Makefile
+++ b/arch/x86_64/boot/Makefile
@@ -98,5 +98,5 @@ zlilo: $(BOOTIMAGE)
 	cp System.map $(INSTALL_PATH)/
 	if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
 
-install: $(BOOTIMAGE)
+install:
 	sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
diff --git a/arch/x86_64/boot/install.sh b/arch/x86_64/boot/install.sh
index 198af15..baaa236 100644
--- a/arch/x86_64/boot/install.sh
+++ b/arch/x86_64/boot/install.sh
@@ -1,40 +1,2 @@
 #!/bin/sh
-#
-# arch/x86_64/boot/install.sh
-#
-# This file is subject to the terms and conditions of the GNU General Public
-# License.  See the file "COPYING" in the main directory of this archive
-# for more details.
-#
-# Copyright (C) 1995 by Linus Torvalds
-#
-# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
-#
-# "make install" script for i386 architecture
-#
-# Arguments:
-#   $1 - kernel version
-#   $2 - kernel image file
-#   $3 - kernel map file
-#   $4 - default install path (blank if root directory)
-#
-
-# User may have a custom install script
-
-if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi
-if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi
-
-# Default install - same as make zlilo
-
-if [ -f $4/vmlinuz ]; then
-	mv $4/vmlinuz $4/vmlinuz.old
-fi
-
-if [ -f $4/System.map ]; then
-	mv $4/System.map $4/System.old
-fi
-
-cat $2 > $4/vmlinuz
-cp $3 $4/System.map
-
-if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
+. $srctree/arch/i386/boot/install.sh
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 10/11] kbuild/xfs: introduce fs/xfs/Kbuild
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (8 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 09/11] kbuild: drop vmlinux dependency from "make install" Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:38 ` [PATCH 11/11] kbuild: KERNELRELEASE is only re-defined when buiding the kernel Sam Ravnborg
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel


In kbuild the file named 'Kbuild' has precedence over the file named
Makefile. Utilise a file named Kbuild to include the 2.6 Makefile for xfs
- since the xfs people likes to keep their arch specific Makefiles separate.

With this patch xfs does no longer rely on the KERNELRELEASE components to be global.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 fs/xfs/Kbuild |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
 create mode 100644 fs/xfs/Kbuild

a9aa1ffaac7c8d6f093bb8f7cdeea761a5e25f53
diff --git a/fs/xfs/Kbuild b/fs/xfs/Kbuild
new file mode 100644
index 0000000..2566e96
--- /dev/null
+++ b/fs/xfs/Kbuild
@@ -0,0 +1,6 @@
+#
+# The xfs people like to share Makefile with 2.6 and 2.4.
+# Utilise file named Kbuild file which has precedence over Makefile.
+#
+
+include $(srctree)/$(obj)/Makefile-linux-2.6
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 11/11] kbuild: KERNELRELEASE is only re-defined when buiding the kernel
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (9 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 10/11] kbuild/xfs: introduce fs/xfs/Kbuild Sam Ravnborg
@ 2006-01-09 21:38 ` Sam Ravnborg
  2006-01-09 21:50 ` [PATCH 12/11] kbuild: re-export VERSION, PATCHLEVEL, SUBLEVEL Sam Ravnborg
  2006-01-10 16:27 ` [GIT PATCHES] kbuild updates Linus Torvalds
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:38 UTC (permalink / raw)
  To: linux-kernel


To avoid running setlocalversion as root no longer (re-)define
KERNELRELEASE for each run. With this patch KERNELRELEASE is
only re-read when we do an actual kernel build.
Rationale behind this is "do as little as possible" when executing
make install - as root!

A new file named .kernelrelease is strored in the root of the kernel
tree containing the actual version string.
So when we use do a kernel build the .kernelrelease file will be updated.
But in all other situations it is left as-is.

To make it more visible the kernel now prints out the version being build.
Sample:
Building kernel 2.6.15-g63b794bf-dirty
...
...

The patch also un-exports VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION LOCALVERSION
since all users of these are anyway broken - and none is left in the
tree.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 Makefile |   95 +++++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 53 insertions(+), 42 deletions(-)

cb58455c48dc43536e5548bdba4e916b2f0cf13d
diff --git a/Makefile b/Makefile
index 50b07fa..df60aa1 100644
--- a/Makefile
+++ b/Makefile
@@ -141,24 +141,6 @@ VPATH		:= $(srctree)
 
 export srctree objtree VPATH TOPDIR
 
-nullstring :=
-space      := $(nullstring) # end of line
-
-# Take the contents of any files called localversion* and the config
-# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE. Be
-# careful not to include files twice if building in the source
-# directory. LOCALVERSION from the command line override all of this
-
-localver := $(objtree)/localversion* $(srctree)/localversion*
-localver := $(sort $(wildcard $(localver)))
-# skip backup files (containing '~')
-localver := $(foreach f, $(localver), $(if $(findstring ~, $(f)),,$(f)))
-
-LOCALVERSION = $(subst $(space),, \
-	       $(shell cat /dev/null $(localver)) \
-	       $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
-
-KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION)
 
 # SUBARCH tells the usermode build what the underlying arch is.  That is set
 # first, and if a usermode build is happening, the "ARCH=um" on the command
@@ -353,7 +335,10 @@ CFLAGS 		:= -Wall -Wundef -Wstrict-proto
 		   -ffreestanding
 AFLAGS		:= -D__ASSEMBLY__
 
-export	VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION LOCALVERSION KERNELRELEASE \
+# Read KERNELRELEASE from .kernelrelease (if it exists)
+KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null)
+
+export	KERNELRELEASE \
 	ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
 	CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
 	HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
@@ -551,26 +536,6 @@ export KBUILD_IMAGE ?= vmlinux
 # images. Default is /boot, but you can set it to other values
 export	INSTALL_PATH ?= /boot
 
-# If CONFIG_LOCALVERSION_AUTO is set, we automatically perform some tests
-# and try to determine if the current source tree is a release tree, of any sort,
-# or if is a pure development tree.
-#
-# A 'release tree' is any tree with a git TAG associated
-# with it.  The primary goal of this is to make it safe for a native
-# git/CVS/SVN user to build a release tree (i.e, 2.6.9) and also to
-# continue developing against the current Linus tree, without having the Linus
-# tree overwrite the 2.6.9 tree when installed.
-#
-# Currently, only git is supported.
-# Other SCMs can edit scripts/setlocalversion and add the appropriate
-# checks as needed.
-
-
-ifdef CONFIG_LOCALVERSION_AUTO
-	localversion-auto := $(shell $(PERL) $(srctree)/scripts/setlocalversion $(srctree))
-	LOCALVERSION := $(LOCALVERSION)$(localversion-auto)
-endif
-
 #
 # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
 # relocations required by build roots.  This is not defined in the
@@ -782,6 +747,50 @@ $(sort $(vmlinux-init) $(vmlinux-main)) 
 $(vmlinux-dirs): prepare scripts
 	$(Q)$(MAKE) $(build)=$@
 
+# Build the kernel release string
+# The KERNELRELEASE is stored in a file named .kernelrelease
+# to be used when executing for example make install or make modules_install
+#
+# Take the contents of any files called localversion* and the config
+# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE.
+# LOCALVERSION from the command line override all of this
+
+nullstring :=
+space      := $(nullstring) # end of line
+
+___localver = $(objtree)/localversion* $(srctree)/localversion*
+__localver  = $(sort $(wildcard $(___localver)))
+# skip backup files (containing '~')
+_localver = $(foreach f, $(__localver), $(if $(findstring ~, $(f)),,$(f)))
+
+localver = $(subst $(space),, \
+	   $(shell cat /dev/null $(_localver)) \
+	   $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
+	       
+# If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called
+# and if the SCM is know a tag from the SCM is appended.
+# The appended tag is determinded by the SCM used.
+#
+# Currently, only git is supported.
+# Other SCMs can edit scripts/setlocalversion and add the appropriate
+# checks as needed.
+ifdef CONFIG_LOCALVERSION_AUTO
+	_localver-auto = $(shell $(CONFIG_SHELL) \
+	                  $(srctree)/scripts/setlocalversion $(srctree))
+	localver-auto  = $(LOCALVERSION)$(_localver-auto)
+endif
+
+localver-full = $(localver)$(localver-auto)
+
+# Store (new) KERNELRELASE string in .kernelrelease
+kernelrelease = \
+       $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(localver-full)
+.kernelrelease: FORCE
+	$(Q)rm -f .kernelrelease
+	$(Q)echo $(kernelrelease) > .kernelrelease
+	$(Q)echo "  Building kernel $(kernelrelease)"
+
+
 # Things we need to do before we recursively start building the kernel
 # or the modules are listed in "prepare".
 # A multi level approach is used. prepareN is processed before prepareN-1.
@@ -798,8 +807,7 @@ $(vmlinux-dirs): prepare scripts
 # and if so do:
 # 1) Check that make has not been executed in the kernel src $(srctree)
 # 2) Create the include2 directory, used for the second asm symlink
-
-prepare3:
+prepare3: .kernelrelease
 ifneq ($(KBUILD_SRC),)
 	@echo '  Using $(srctree) as source for kernel'
 	$(Q)if [ -f $(srctree)/.config ]; then \
@@ -986,7 +994,7 @@ CLEAN_FILES +=	vmlinux System.map \
 MRPROPER_DIRS  += include/config include2
 MRPROPER_FILES += .config .config.old include/asm .version .old_version \
                   include/linux/autoconf.h include/linux/version.h \
-                  Module.symvers tags TAGS cscope*
+		  .kernelrelease Module.symvers tags TAGS cscope*
 
 # clean - Delete most, but leave enough to build external modules
 #
@@ -1072,6 +1080,7 @@ help:
 	@echo  '  tags/TAGS	  - Generate tags file for editors'
 	@echo  '  cscope	  - Generate cscope index'
 	@echo  '  kernelrelease	  - Output the release version string'
+	@echo  '  kernelversion	  - Output the version stored in Makefile'
 	@echo  ''
 	@echo  'Static analysers'
 	@echo  '  buildcheck      - List dangling references to vmlinux discarded sections'
@@ -1293,6 +1302,8 @@ checkstack:
 
 kernelrelease:
 	@echo $(KERNELRELEASE)
+kernelversion:
+	@echo $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
 # FIXME Should go into a make.lib or something 
 # ===========================================================================
-- 
1.0.GIT


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 12/11] kbuild: re-export VERSION, PATCHLEVEL, SUBLEVEL
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (10 preceding siblings ...)
  2006-01-09 21:38 ` [PATCH 11/11] kbuild: KERNELRELEASE is only re-defined when buiding the kernel Sam Ravnborg
@ 2006-01-09 21:50 ` Sam Ravnborg
  2006-01-10 16:27 ` [GIT PATCHES] kbuild updates Linus Torvalds
  12 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-09 21:50 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel, Andrew Morton

One last minute patch added to the tree:

kbuild: re-export VERSION, PATCHLEVEL, SUBLEVEL

Eric Sandeen <sandeen@sgi.com> pointed out that it is usefull to have
access to VERSION, PATCHLEVEL, SUBLEVEL in external modules, and gooling
a litte confirmed this.
So re-export them.
Usage within the kernel is still discouraged but possible.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---
commit 4f0210b9c4889eede9f8f379f93570c01998ccb9
tree 0883096acb3bc46e65a6873b777f01214d6a7852
parent cb58455c48dc43536e5548bdba4e916b2f0cf13d
author Sam Ravnborg <sam@mars.ravnborg.org> Mon, 09 Jan 2006 22:48:34 +0100
committer Sam Ravnborg <sam@mars.ravnborg.org> Mon, 09 Jan 2006 22:48:34 +0100

 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index df60aa1..1d1afa5 100644
--- a/Makefile
+++ b/Makefile
@@ -338,7 +338,7 @@ AFLAGS		:= -D__ASSEMBLY__
 # Read KERNELRELEASE from .kernelrelease (if it exists)
 KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null)
 
-export	KERNELRELEASE \
+export	VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE \
 	ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
 	CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
 	HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [GIT PATCHES] kbuild updates
  2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
                   ` (11 preceding siblings ...)
  2006-01-09 21:50 ` [PATCH 12/11] kbuild: re-export VERSION, PATCHLEVEL, SUBLEVEL Sam Ravnborg
@ 2006-01-10 16:27 ` Linus Torvalds
  2006-01-12 23:18   ` [2.6 patch] i386: remove gcc version check for CONFIG_REGPARM Adrian Bunk
  12 siblings, 1 reply; 25+ messages in thread
From: Linus Torvalds @ 2006-01-10 16:27 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel, Andrew Morton



On Mon, 9 Jan 2006, Sam Ravnborg wrote:
>
> Please pull from:
> 	ssh://master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git

Ok, pulled.

However, fixing up a trivial conflict in i386/Makefile, I noticed this:

	cflags-$(CONFIG_REGPARM) += $(shell if [ $(call cc-version) -ge 0300 ] ; then \
				    echo "-mregparm=3"; fi ;)

and it strikes me that this is WRONG.

It's wrong for some subtle reasons: it means that CONFIG_REGPARM is set 
whether or not it is actually _used_, which means that anybody who depends 
on CONFIG_REGPARM in the sources is just screwed.

Now, for this particular usage, the only breakage is in the i386 
<asm/module.h>, which will report "REGPARM" in MODULE_REGPARM regardless 
of whether the kernel was compiled with -mregparm=3 or not. So it's mainly 
cosmetic.

But it strikes me that we'd be a _lot_ better off if the Kconfig phase 
would check the compiler version, instead of us checking it dynamically a 
hundred times in the Makefiles. It would be more efficient, and we could 
make things like this more _correct_. 

Comments?

		Linus

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 01/11] kconfig: factor out ncurses check in a shell script
  2006-01-09 21:38 ` [PATCH 01/11] kconfig: factor out ncurses check in a shell script Sam Ravnborg
@ 2006-01-10 20:27   ` Jan Engelhardt
  2006-01-10 21:01     ` Sam Ravnborg
  2006-01-11 16:55     ` Sam Ravnborg
  0 siblings, 2 replies; 25+ messages in thread
From: Jan Engelhardt @ 2006-01-10 20:27 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

>
>Cleaning up the lxdialog Makefile by factoring out the
>ncurses compatibility checks.
>This made the checks much more obvious and easier to extend.

BTW, do you know a nice way to detect ncursesw?




Jan Engelhardt
-- 

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 01/11] kconfig: factor out ncurses check in a shell script
  2006-01-10 20:27   ` Jan Engelhardt
@ 2006-01-10 21:01     ` Sam Ravnborg
  2006-01-10 21:28       ` Jan Engelhardt
  2006-01-11 16:55     ` Sam Ravnborg
  1 sibling, 1 reply; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-10 21:01 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: linux-kernel

On Tue, Jan 10, 2006 at 09:27:42PM +0100, Jan Engelhardt wrote:
> >
> >Cleaning up the lxdialog Makefile by factoring out the
> >ncurses compatibility checks.
> >This made the checks much more obvious and easier to extend.
> 
> BTW, do you know a nice way to detect ncursesw?
Hi Jan.

I had ncursesw in my mind too when I did this.
If you look at the test implemented to check for ncurses it
should be simple to use same principle to check if one can use
ncursesw. If gcc does not fail then ncursesw is present.

Care to give it a spin?
Otherwise I will try later this week.

	Sam

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 01/11] kconfig: factor out ncurses check in a shell script
  2006-01-10 21:01     ` Sam Ravnborg
@ 2006-01-10 21:28       ` Jan Engelhardt
  0 siblings, 0 replies; 25+ messages in thread
From: Jan Engelhardt @ 2006-01-10 21:28 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

>I had ncursesw in my mind too when I did this.
>If you look at the test implemented to check for ncurses it
>should be simple to use same principle to check if one can use
>ncursesw. If gcc does not fail then ncursesw is present.
>
>Care to give it a spin?

Ah yes, keeping the gray cells in shape; let me give it a twist.


Jan Engelhardt
-- 

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 01/11] kconfig: factor out ncurses check in a shell script
  2006-01-10 20:27   ` Jan Engelhardt
  2006-01-10 21:01     ` Sam Ravnborg
@ 2006-01-11 16:55     ` Sam Ravnborg
  2006-01-11 18:11       ` Jan Engelhardt
  1 sibling, 1 reply; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-11 16:55 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: linux-kernel

On Tue, Jan 10, 2006 at 09:27:42PM +0100, Jan Engelhardt wrote:
> >
> >Cleaning up the lxdialog Makefile by factoring out the
> >ncurses compatibility checks.
> >This made the checks much more obvious and easier to extend.
> 
> BTW, do you know a nice way to detect ncursesw?
Something like this?

diff --git a/scripts/kconfig/lxdialog/Makefile b/scripts/kconfig/lxdialog/Makefile
index 8f41d9a..fae3e29 100644
--- a/scripts/kconfig/lxdialog/Makefile
+++ b/scripts/kconfig/lxdialog/Makefile
@@ -1,9 +1,9 @@
 # Makefile to build lxdialog package
 #
 
-check-lxdialog   := $(srctree)/$(src)/check-lxdialog.sh
-HOST_EXTRACFLAGS := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
-HOST_LOADLIBES   := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags)
+check-lxdialog  := $(srctree)/$(src)/check-lxdialog.sh
+HOST_EXTRACFLAGS:= $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
+HOST_LOADLIBES  := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
  
 HOST_EXTRACFLAGS += -DLOCALE 
 
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
index a3c141b..3f172f1 100644
--- a/scripts/kconfig/lxdialog/check-lxdialog.sh
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -4,11 +4,22 @@
 # What library to link
 ldflags()
 {
-	if [ `uname` == SunOS ]; then
-		echo '-lcurses'
-	else
+	echo "main() {}" | $compiler -lncursesw -xc - 2> /dev/null
+	if [ $? -eq 0 ]; then
+		echo '-lncursesw'
+		exit
+	fi
+	echo "main() {}" | $compiler -lncurses -xc - 2> /dev/null
+	if [ $? -eq 0 ]; then
 		echo '-lncurses'
+		exit
+	fi
+	echo "main() {}" | $compiler -lcurses -xc - 2> /dev/null
+	if [ $? -eq 0 ]; then
+		echo '-lcurses'
+		exit
 	fi
+	exit 1
 }
 
 # Where is ncurses.h?
@@ -58,6 +69,8 @@ case "$1" in
 		ccflags
 		;;
 	"-ldflags")
+		shift
+		compiler="$@"
 		ldflags
 		;;
 	"*")

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH 01/11] kconfig: factor out ncurses check in a shell script
  2006-01-11 16:55     ` Sam Ravnborg
@ 2006-01-11 18:11       ` Jan Engelhardt
  0 siblings, 0 replies; 25+ messages in thread
From: Jan Engelhardt @ 2006-01-11 18:11 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

>+	echo "main() {}" | $compiler -lncursesw -xc - 2> /dev/null
>+	if [ $? -eq 0 ]; then
>+		echo '-lncursesw'
>+		exit
>+	fi
>+	echo "main() {}" | $compiler -lncurses -xc - 2> /dev/null
>+	if [ $? -eq 0 ]; then
> 		echo '-lncurses'
>+		exit
>+	fi
>+	echo "main() {}" | $compiler -lcurses -xc - 2> /dev/null
>+	if [ $? -eq 0 ]; then
>+		echo '-lcurses'
>+		exit
> 	fi
>+	exit 1


You forget to remove a.out, or whatever the compiler produces. I suggest
  $compiler -o /dev/null




Jan Engelhardt
-- 

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 09/11] kbuild: drop vmlinux dependency from "make install"
  2006-01-09 21:38 ` [PATCH 09/11] kbuild: drop vmlinux dependency from "make install" Sam Ravnborg
@ 2006-01-12 16:21   ` Cal Peake
  2006-01-12 21:25     ` Sam Ravnborg
  2006-01-31 20:11   ` Dave Hansen
  1 sibling, 1 reply; 25+ messages in thread
From: Cal Peake @ 2006-01-12 16:21 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

On Mon, 9 Jan 2006, Sam Ravnborg wrote:

> This removes the dependency from vmlinux to install, thus avoiding the
> current situation where "make install" has a nasty tendency to leave
> root-turds in the working directory.

Is removing the `kernel_install' target considered a userspace interface 
breakage? ;) Or am I just gonna have to get used to typing `make install' 
again?

-- 
"Silly rabbit, kicks are for ribs!" -- Homer Simpson


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 09/11] kbuild: drop vmlinux dependency from "make install"
  2006-01-12 16:21   ` Cal Peake
@ 2006-01-12 21:25     ` Sam Ravnborg
  0 siblings, 0 replies; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-12 21:25 UTC (permalink / raw)
  To: Cal Peake; +Cc: linux-kernel

On Thu, Jan 12, 2006 at 11:21:51AM -0500, Cal Peake wrote:
> On Mon, 9 Jan 2006, Sam Ravnborg wrote:
> 
> > This removes the dependency from vmlinux to install, thus avoiding the
> > current situation where "make install" has a nasty tendency to leave
> > root-turds in the working directory.
> 
> Is removing the `kernel_install' target considered a userspace interface 
> breakage? ;) Or am I just gonna have to get used to typing `make install' 
> again?
make install is there to stay. And now where install and kernel_install
do the same thing the latter will disappear.
So yes, soon yo have to type less.

	Sam

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [2.6 patch] i386: remove gcc version check for CONFIG_REGPARM
  2006-01-10 16:27 ` [GIT PATCHES] kbuild updates Linus Torvalds
@ 2006-01-12 23:18   ` Adrian Bunk
  0 siblings, 0 replies; 25+ messages in thread
From: Adrian Bunk @ 2006-01-12 23:18 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Sam Ravnborg, linux-kernel, Andrew Morton

On Tue, Jan 10, 2006 at 08:27:57AM -0800, Linus Torvalds wrote:
> 
> 
> On Mon, 9 Jan 2006, Sam Ravnborg wrote:
> >
> > Please pull from:
> > 	ssh://master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git
> 
> Ok, pulled.
> 
> However, fixing up a trivial conflict in i386/Makefile, I noticed this:
> 
> 	cflags-$(CONFIG_REGPARM) += $(shell if [ $(call cc-version) -ge 0300 ] ; then \
> 				    echo "-mregparm=3"; fi ;)
> 
> and it strikes me that this is WRONG.
> 
> It's wrong for some subtle reasons: it means that CONFIG_REGPARM is set 
> whether or not it is actually _used_, which means that anybody who depends 
> on CONFIG_REGPARM in the sources is just screwed.
>...

The change from Sam's tree conflicted with my patch to completely remove  
the version check since we do no longer support any gcc < 3.0.  

Patch below.

> 		Linus

cu
Adrian


<--  snip  -->


Since we do no longer support any gcc < 3.0, there's no need to check 
for it..


Signed-off-by: Adrian Bunk <bunk@stusta.de>

--- linux-2.6.15-mm3-full/arch/i386/Makefile.old	2006-01-13 00:04:09.000000000 +0100
+++ linux-2.6.15-mm3-full/arch/i386/Makefile	2006-01-13 00:05:09.000000000 +0100
@@ -37,10 +37,7 @@
 # CPU-specific tuning. Anything which can be shared with UML should go here.
 include $(srctree)/arch/i386/Makefile.cpu
 
-# -mregparm=3 works ok on gcc-3.0 and later
-#
-cflags-$(CONFIG_REGPARM) += $(shell if [ $(call cc-version) -ge 0300 ] ; then \
-                            echo "-mregparm=3"; fi ;)
+cflags-$(CONFIG_REGPARM) += -mregparm=3
 
 # Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
 # a lot more stack due to the lack of sharing of stacklots:


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 09/11] kbuild: drop vmlinux dependency from "make install"
  2006-01-09 21:38 ` [PATCH 09/11] kbuild: drop vmlinux dependency from "make install" Sam Ravnborg
  2006-01-12 16:21   ` Cal Peake
@ 2006-01-31 20:11   ` Dave Hansen
  2006-01-31 21:04     ` [PATCH 09/11] kbuild: drop vmlinux dependency from 'make install' Sam Ravnborg
  1 sibling, 1 reply; 25+ messages in thread
From: Dave Hansen @ 2006-01-31 20:11 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

On Mon, 2006-01-09 at 22:38 +0100, Sam Ravnborg wrote:
> This removes the dependency from vmlinux to install, thus avoiding the
> current situation where "make install" has a nasty tendency to leave
> root-turds in the working directory.

One minor issue I've noticed with this is that I have script that do:

	make -j8 vmlinux install

Without the dependency, I think the install is done in parallel, and
doesn't get the result of that build.  Is there a way I can accomplish
the same thing with one make command with the new dependency?

-- Dave


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 09/11] kbuild: drop vmlinux dependency from 'make  install'
  2006-01-31 20:11   ` Dave Hansen
@ 2006-01-31 21:04     ` Sam Ravnborg
  2006-02-01 23:27       ` Keith Owens
  0 siblings, 1 reply; 25+ messages in thread
From: Sam Ravnborg @ 2006-01-31 21:04 UTC (permalink / raw)
  To: Dave Hansen; +Cc: Sam Ravnborg, linux-kernel

> On Mon, 2006-01-09 at 22:38 +0100, Sam Ravnborg wrote:
>> This removes the dependency from vmlinux to install, thus avoiding the
>> current situation where "make install" has a nasty tendency to leave
>> root-turds in the working directory.
>
> One minor issue I've noticed with this is that I have script that do:
>
> 	make -j8 vmlinux install
>
> Without the dependency, I think the install is done in parallel, and
> doesn't get the result of that build.
Correct. All targets on the commandline are evaluated in parallel.

>  Is there a way I can accomplish
> the same thing with one make command with the new dependency?
No - unfortunately not.

Oh, you may restrict yourself to UP and use make -j1 but that would be
a workaround ;-)

    Sam


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 09/11] kbuild: drop vmlinux dependency from 'make install'
  2006-01-31 21:04     ` [PATCH 09/11] kbuild: drop vmlinux dependency from 'make install' Sam Ravnborg
@ 2006-02-01 23:27       ` Keith Owens
  0 siblings, 0 replies; 25+ messages in thread
From: Keith Owens @ 2006-02-01 23:27 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: Dave Hansen, linux-kernel

"Sam Ravnborg" (on Tue, 31 Jan 2006 22:04:19 +0100 (CET)) wrote:
>> On Mon, 2006-01-09 at 22:38 +0100, Sam Ravnborg wrote:
>>> This removes the dependency from vmlinux to install, thus avoiding the
>>> current situation where "make install" has a nasty tendency to leave
>>> root-turds in the working directory.
>>
>> One minor issue I've noticed with this is that I have script that do:
>>
>> 	make -j8 vmlinux install
>>
>> Without the dependency, I think the install is done in parallel, and
>> doesn't get the result of that build.
>Correct. All targets on the commandline are evaluated in parallel.
>
>>  Is there a way I can accomplish
>> the same thing with one make command with the new dependency?
>No - unfortunately not.
>
>Oh, you may restrict yourself to UP and use make -j1 but that would be
>a workaround ;-)

Pseudo code: make install, modules-install etc. depend on other targets
if and only if there are multiple targets on the command line.  A bare
make install will have no dependencies on vmlinux, make install plus
other targets will wait for the other targets.  Mind you, I still think
that removing the dependency to avoid root turds is the wrong approach.

goal := $(sort $(MAKECMDGOALS))
goal_install := $(filter %install,$(goal))
goal_other := $(filter-out %install,$(goal))
ifneq ($(goal_install),)
  ifneq ($(goal_other),)
    $(goal_install): $(goal_other)
  endif
endif


^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2006-02-01 23:27 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-09 21:11 [GIT PATCHES] kbuild updates Sam Ravnborg
2006-01-09 21:38 ` [PATCH 01/11] kconfig: factor out ncurses check in a shell script Sam Ravnborg
2006-01-10 20:27   ` Jan Engelhardt
2006-01-10 21:01     ` Sam Ravnborg
2006-01-10 21:28       ` Jan Engelhardt
2006-01-11 16:55     ` Sam Ravnborg
2006-01-11 18:11       ` Jan Engelhardt
2006-01-09 21:38 ` [PATCH 02/11] kbuild: clean up asm-offsets.h creation Sam Ravnborg
2006-01-09 21:38 ` [PATCH 03/11] modpost/file2alias: Fix typo Sam Ravnborg
2006-01-09 21:38 ` [PATCH 04/11] kbuild: In setlocalversion change -git_dirty to just -dirty Sam Ravnborg
2006-01-09 21:38 ` [PATCH 05/11] kbuild: ensure mrproper removes .old_version Sam Ravnborg
2006-01-09 21:38 ` [PATCH 06/11] kbuild: reference_discarded addition Sam Ravnborg
2006-01-09 21:38 ` [PATCH 07/11] kbuild: remove GCC_VERSION Sam Ravnborg
2006-01-09 21:38 ` [PATCH 08/11] frv: Use KERNELRELEASE Sam Ravnborg
2006-01-09 21:38 ` [PATCH 09/11] kbuild: drop vmlinux dependency from "make install" Sam Ravnborg
2006-01-12 16:21   ` Cal Peake
2006-01-12 21:25     ` Sam Ravnborg
2006-01-31 20:11   ` Dave Hansen
2006-01-31 21:04     ` [PATCH 09/11] kbuild: drop vmlinux dependency from 'make install' Sam Ravnborg
2006-02-01 23:27       ` Keith Owens
2006-01-09 21:38 ` [PATCH 10/11] kbuild/xfs: introduce fs/xfs/Kbuild Sam Ravnborg
2006-01-09 21:38 ` [PATCH 11/11] kbuild: KERNELRELEASE is only re-defined when buiding the kernel Sam Ravnborg
2006-01-09 21:50 ` [PATCH 12/11] kbuild: re-export VERSION, PATCHLEVEL, SUBLEVEL Sam Ravnborg
2006-01-10 16:27 ` [GIT PATCHES] kbuild updates Linus Torvalds
2006-01-12 23:18   ` [2.6 patch] i386: remove gcc version check for CONFIG_REGPARM Adrian Bunk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).