[kbuild-devel] [patch] kbuild: remember ARCH in the object directory

2007-06-12 Thread Oleg Verych
[patch] kbuild: remember ARCH in the object directory

 - rephrase some related (misspelled) comments,
 - remove all trailing whitespace in the top Makefile,

 * remember ARCH in the output directory, thus making build of i386
   on amd64 *actually* convenient,

 - harmless refactoring of the Makefile generating.

Signed-off-by: Oleg Verych [EMAIL PROTECTED]
---
-o--=O`C  /. .\
 #oo'L O  o
___=E M^--

 Just lazy typing `make ARCH=i386` every time i want to check lguest.

 Makefile   |   17 -
 scripts/mkmakefile |   42 --
 2 files changed, 32 insertions(+), 27 deletions(-)

Index: linux-2.6.22-rc4-mm2/scripts/mkmakefile
===
--- linux-2.6.22-rc4-mm2.orig/scripts/mkmakefile2007-06-12 
11:21:27.755466250 +0200
+++ linux-2.6.22-rc4-mm2/scripts/mkmakefile 2007-06-12 12:04:13.675826250 
+0200
@@ -1,6 +1,6 @@
-#!/bin/sh
+#!/bin/sh -e
 # Generates a small Makefile used in the root of the output
-# directory, to allow make to be started from there.
-# The Makefile also allow for more convinient build of external modules
+# directory, to allow kernel build to be started from there.
+# External modules can't built with it as well.
 
 # Usage
@@ -9,28 +9,34 @@
 # $3 - version
 # $4 - patchlevel
+# $5 - ARCH
 
+set -e
 
-test ! -r $2/Makefile -o -O $2/Makefile || exit 0
 echo   GEN $2/Makefile
+echo #
+# Automatically generated by
+# $0
+#
+VERSION= $3
+PATCHLEVEL = $4
+
+KERNELSRC  = $1
+KERNELOUTPUT   = $2
+ARCH   = $5
+ $2/Makefile
 
-cat  EOF  $2/Makefile
-# Automatically generated by $0: don't edit
+cat  EOF  $2/Makefile
+MAKEFLAGS  += -rR --no-print-directory
 
-VERSION = $3
-PATCHLEVEL = $4
+export ARCH
 
-KERNELSRC:= $1
-KERNELOUTPUT := $2
-
-MAKEFLAGS += --no-print-directory
+all:
+   $(MAKE) -C $(KERNELSRC) O=$(KERNELOUTPUT)
 
-.PHONY: all \$(MAKECMDGOALS)
+$(filter-out all Makefile,$(MAKECMDGOALS)) %/:
+   $(MAKE) -C $(KERNELSRC) O=$(KERNELOUTPUT) $@
 
-all:
-   \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT)
+.PHONY: all $(MAKECMDGOALS)
 
 Makefile:;
-
-\$(filter-out all Makefile,\$(MAKECMDGOALS)) %/:
-   \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$@
 EOF
Index: linux-2.6.22-rc4-mm2/Makefile
===
--- linux-2.6.22-rc4-mm2.orig/Makefile  2007-06-12 11:35:20.559513250 +0200
+++ linux-2.6.22-rc4-mm2/Makefile   2007-06-12 11:51:10.438877000 +0200
@@ -156,5 +156,5 @@ export srctree objtree VPATH TOPDIR
 # first, and if a usermode build is happening, the ARCH=um on the command
 # line overrides the setting of ARCH below.  If a native build is happening,
-# then ARCH is assigned, getting whatever value it gets normally, and 
+# then ARCH is assigned, getting whatever value it gets normally, and
 # SUBARCH is subsequently ignored.
 
@@ -242,5 +242,5 @@ export KBUILD_CHECKSRC KBUILD_SRC KBUILD
 #
 # If $(quiet) is empty, the whole command will be printed.
-# If it is set to quiet_, only the short version will be printed. 
+# If it is set to quiet_, only the short version will be printed.
 # If it is set to silent_, nothing will be printed at all, since
 # the variable $(silent_cmd_cc_o_c) doesn't exist.
@@ -352,11 +352,10 @@ scripts/basic/%: scripts_basic ;
 
 PHONY += outputmakefile
-# outputmakefile generates a Makefile in the output directory, if using a
-# separate output directory. This allows convenient use of make in the
-# output directory.
 outputmakefile:
+# generate a Makefile in the output directory, if using a
+# separate output directory; allows convenient use of make there
 ifneq ($(KBUILD_SRC),)
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
-   $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
+   $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) $(ARCH)
 endif
 
@@ -699,5 +698,5 @@ endef
 cmd_ksym_ld = $(cmd_vmlinux__)
 define rule_ksym_ld
-   : 
+   :
+$(call cmd,vmlinux_version)
$(call cmd,vmlinux__)
@@ -750,5 +749,5 @@ endif
$(Q)rm -f .old_version
 
-# The actual objects are generated when descending, 
+# The actual objects are generated when descending,
 # make sure no implicit rule kicks in
 $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
@@ -1454,5 +1453,5 @@ endif
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
-# FIXME Should go into a make.lib or something 
+# FIXME Should go into a make.lib or something
 # ===
 

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kbuild-devel 

Re: [kbuild-devel] [patch] kbuild: remember ARCH in the object directory

2007-06-12 Thread Oleg Verych
On Tue, Jun 12, 2007 at 09:12:09AM -0700, Randy Dunlap wrote:
[]
 I did:
 
 # build a linux-2.6.22-rc4-git4 kernel source tree  cd into it
 # mkdir BLD
 $ make ARCH=i386 O=BLD defconfig
 $ make -j4 O=BLD all BLD/bld.out 21
 
 and it cried to me:
 
   GEN /scsi/linsrc/linux-2.6.22-rc4-git4/BLD/Makefile
 scripts/kconfig/conf -s arch/x86_64/Kconfig
 #... many config warning lines
 *
 * Restart config...
 *
 *
 * Processor type and features
 *
 Subarchitecture Type
  1. PC-compatible (X86_PC)
   2. Support for ScaleMP vSMP (X86_VSMP) (NEW)
 choice[1-2]: aborted!
 
 Console input/output is redirected. Run 'make oldconfig' to update 
 configuration.
 
 make[3]: *** [silentoldconfig] Error 1
 make[2]: *** [silentoldconfig] Error 2
 make[1]: *** [include/config/auto.conf] Error 2
 make: *** [all] Error 2
 
[] 

 What did I do wrong??

That Makefile is used only, if you are *in* that obj. directory.
Thus `cd BLD` is what you've forget.

There must be a better way to have this kind of choice be saved,
but it's chicken-and-egg issue from the kconfig POV.

As i'm always try to use separate obj. dir., i've made life easier
*in* it.


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kbuild-devel mailing list
kbuild-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kbuild-devel


Re: [kbuild-devel] [patch] kbuild: remember ARCH in the object directory

2007-06-12 Thread Sam Ravnborg
On Tue, Jun 12, 2007 at 07:19:22PM +0200, Oleg Verych wrote:
 On Tue, Jun 12, 2007 at 09:12:09AM -0700, Randy Dunlap wrote:
 []
  I did:
  
  # build a linux-2.6.22-rc4-git4 kernel source tree  cd into it
  # mkdir BLD
  $ make ARCH=i386 O=BLD defconfig
  $ make -j4 O=BLD all BLD/bld.out 21
  
  and it cried to me:
  
GEN /scsi/linsrc/linux-2.6.22-rc4-git4/BLD/Makefile
  scripts/kconfig/conf -s arch/x86_64/Kconfig
  #... many config warning lines
  *
  * Restart config...
  *
  *
  * Processor type and features
  *
  Subarchitecture Type
   1. PC-compatible (X86_PC)
2. Support for ScaleMP vSMP (X86_VSMP) (NEW)
  choice[1-2]: aborted!
  
  Console input/output is redirected. Run 'make oldconfig' to update 
  configuration.
  
  make[3]: *** [silentoldconfig] Error 1
  make[2]: *** [silentoldconfig] Error 2
  make[1]: *** [include/config/auto.conf] Error 2
  make: *** [all] Error 2
  
 [] 
 
  What did I do wrong??
 
 That Makefile is used only, if you are *in* that obj. directory.
 Thus `cd BLD` is what you've forget.
 
 There must be a better way to have this kind of choice be saved,
 but it's chicken-and-egg issue from the kconfig POV.
 
 As i'm always try to use separate obj. dir., i've made life easier
 *in* it.

I fully agree with the intent of the patch.
But it fails exactly because it introduce different behaviour
dependent of actual usage.

For non O= build ARCH is not saved and does not work
For make O= it does not work
For make in the output dir it works
For external modules it does not work

This will greatly confuse people.

If we go the save important parts of the config I prefer
something along the suggestion by hpa with a config file.
The config file should though be named along the lines
of Kbuild.config and the syntax should be future proof.
I like the syntax of the .git/config file and
it should be along these lines.

And the bahavior should be exactly the same for all uses
listed above.

Sam

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kbuild-devel mailing list
kbuild-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kbuild-devel


Re: [kbuild-devel] [patch] kbuild: remember ARCH in the object directory

2007-06-12 Thread Oleg Verych
On Tue, Jun 12, 2007 at 08:09:57PM +0200, Sam Ravnborg wrote:
[]
 If we go the save important parts of the config I prefer
 something along the suggestion by hpa with a config file.
 The config file should though be named along the lines
 of Kbuild.config and the syntax should be future proof.
 I like the syntax of the .git/config file and
 it should be along these lines.
 
 And the bahavior should be exactly the same for all uses
 listed above.

Agree. But this will be another story.

Anyway, patch without those 3 lines with ARCH is quite useful, don't
you think ?;)


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kbuild-devel mailing list
kbuild-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kbuild-devel


Re: [kbuild-devel] [patch] kbuild: remember ARCH in the object directory

2007-06-12 Thread H. Peter Anvin
Sam Ravnborg wrote:
 
 If we go the save important parts of the config I prefer
 something along the suggestion by hpa with a config file.
 The config file should though be named along the lines
 of Kbuild.config and the syntax should be future proof.
 I like the syntax of the .git/config file and
 it should be along these lines.
 

It's actually derived from the Windows 3.x config file.  I think it's
massive overkill for this purpose; since the variables can be set on the
command line we're not dealing with multiple namespaces, and it would be
better to have a make-like syntax.

-hpa

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
kbuild-devel mailing list
kbuild-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kbuild-devel