2003-09-10 19:14:33

by Sam Ravnborg

[permalink] [raw]
Subject: [BK PATCHES] kbuild/kconfig

Hi Linus.

Here are a few kbuild/kconfig related patches:

1) kbuild: Save relevant parts of modules.txt
2) kconfig: Allow architectures to select board specific configs
3) kbuild: Build minimum in scripts/ when changing configuration
4) kbuild: Remove cscope.out during make mrproper
5) kbuild/ppc*: Remove obsolete _config support
6) bk ignore scripts/bin2c

The only patch worth mention is the one allowing architectures
to select board specific configurations. Adding a few trivial
changes to conf.c enabled generic support for that.
ppc* already followed the required setup.
I did not update arm for this new scheme. Russell?

Please pull
bk pull bk://linux-sam.bkbits.net/kbuild

Patches will follow.

Sam


[email protected], 2003-09-10 20:34:29+02:00, [email protected]
kbuild/ppc*: Remove obsolete _config support

arch/ppc/Makefile | 4 ----
arch/ppc64/Makefile | 4 ----
2 files changed, 8 deletions(-)


[email protected], 2003-09-10 20:26:00+02:00, [email protected]
kbuild: Remove cscope.out during make mrproper

From: "Nathan T. Lynch" <[email protected]>

The attached patch fixes the toplevel Makefile to remove cscope.out
during make mrproper. The default name for the database that cscope
creates is cscope.out, and this is what the cscope rule in the
makefile uses. Currently, mrproper will leave cscope.out behind,
which can make for interesting diffs...

Makefile | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)


[email protected], 2003-09-10 20:23:57+02:00, [email protected]
kbuild: Build minimum in scripts/ when changing configuration

From: Ricky Beam <[email protected]>, me

With the increasing amount of programs located in scripts/, several
of which is dependent on the kernel configuration, it makes sense to
avoid building these too often.
With this patch only fixdep is build, the minimal requirement for running
any *config target

Makefile | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)


[email protected], 2003-09-10 20:14:02+02:00, [email protected]
kconfig: Allow architectures to select board specific configs

This patch introduces the framework required for architectures to supply
several independent configurations. Three architectures does this today:
ppc, ppc64 and arm.
The infrastructure provided here requires the files to be located in
the following directory:
arch/$(ARCH)/configs
The file shall be named <board>_defconfig

To select the configuration for ppc/gemini simply issue the following command:
make gemini_defconfig
This will generate a valid configuration.

ppc and ppc64 already comply to the above requirements, arm needs some
trivial updates.

scripts/kconfig/Makefile | 3 +++
scripts/kconfig/conf.c | 30 ++++++++++++++++++++++--------
2 files changed, 25 insertions(+), 8 deletions(-)


[email protected], 2003-09-10 20:04:00+02:00, [email protected]
kbuild: Save relevant parts of modules.txt

The out-dated modules.txt were deleted from the kernel, save the kbuild
related bits in Documentation/kbuild.
It needs more updates, but for now this is better than nothing

Documentation/kbuild/00-INDEX | 2 ++
Documentation/kbuild/modules.txt | 28 ++++++++++++++++++++++++++++
2 files changed, 30 insertions(+)



2003-09-10 19:23:39

by Sam Ravnborg

[permalink] [raw]
Subject: kbuild/ppc*: Remove obsolete _config support

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1272 -> 1.1273
# arch/ppc/Makefile 1.43 -> 1.44
# arch/ppc64/Makefile 1.32 -> 1.33
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/09/10 [email protected] 1.1273
# kbuild/ppc*: Remove obsolete _config support
# --------------------------------------------
#
diff -Nru a/arch/ppc/Makefile b/arch/ppc/Makefile
--- a/arch/ppc/Makefile Wed Sep 10 21:15:51 2003
+++ b/arch/ppc/Makefile Wed Sep 10 21:15:51 2003
@@ -58,10 +58,6 @@
$(BOOT_TARGETS): vmlinux
$(Q)$(MAKE) $(build)=arch/ppc/boot $@

-%_config: arch/ppc/configs/%_defconfig
- rm -f .config arch/ppc/defconfig
- cp -f arch/ppc/configs/$(@:config=defconfig) .config
-
archclean:
$(Q)$(MAKE) $(clean)=arch/ppc/boot

diff -Nru a/arch/ppc64/Makefile b/arch/ppc64/Makefile
--- a/arch/ppc64/Makefile Wed Sep 10 21:15:51 2003
+++ b/arch/ppc64/Makefile Wed Sep 10 21:15:51 2003
@@ -41,10 +41,6 @@
$(boottarget-y): vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

-%_config: arch/ppc64/configs/%_defconfig
- rm -f .config arch/ppc64/defconfig
- cp -f arch/ppc64/configs/$(@:config=defconfig) arch/ppc64/defconfig
-
bootimage-$(CONFIG_PPC_PSERIES) := zImage
bootimage-$(CONFIG_PPC_ISERIES) := vmlinux.sm
BOOTIMAGE := $(bootimage-y)

2003-09-10 19:23:38

by Sam Ravnborg

[permalink] [raw]
Subject: kbuild: Remove cscope.out during make mrproper

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1271 -> 1.1272
# Makefile 1.428 -> 1.429
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/09/10 [email protected] 1.1272
# kbuild: Remove cscope.out during make mrproper
#
# From: "Nathan T. Lynch" <[email protected]>
#
# The attached patch fixes the toplevel Makefile to remove cscope.out
# during make mrproper. The default name for the database that cscope
# creates is cscope.out, and this is what the cscope rule in the
# makefile uses. Currently, mrproper will leave cscope.out behind,
# which can make for interesting diffs...
# --------------------------------------------
#
diff -Nru a/Makefile b/Makefile
--- a/Makefile Wed Sep 10 21:15:47 2003
+++ b/Makefile Wed Sep 10 21:15:47 2003
@@ -675,7 +675,7 @@
.menuconfig.log \
include/asm \
.hdepend include/linux/modversions.h \
- tags TAGS cscope kernel.spec \
+ tags TAGS cscope.out kernel.spec \
.tmp*

# Directories removed with 'make mrproper'

2003-09-10 19:20:18

by Sam Ravnborg

[permalink] [raw]
Subject: kconfig: Allow architectures to select board specific configs

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1269 -> 1.1270
# scripts/kconfig/conf.c 1.9 -> 1.10
# scripts/kconfig/Makefile 1.9 -> 1.10
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/09/10 [email protected] 1.1270
# kconfig: Allow architectures to select board specific configs
#
# This patch introduces the framework required for architectures to supply
# several independent configurations. Three architectures does this today:
# ppc, ppc64 and arm.
# The infrastructure provided here requires the files to be located in
# the following directory:
# arch/$(ARCH)/configs
# The file shall be named <board>_defconfig
#
# To select the configuration for ppc/gemini simply issue the following command:
# make gemini_defconfig
# This will generate a valid configuration.
#
# ppc and ppc64 already comply to the above requirements, arm needs some
# trivial updates.
# --------------------------------------------
#
diff -Nru a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
--- a/scripts/kconfig/Makefile Wed Sep 10 21:15:40 2003
+++ b/scripts/kconfig/Makefile Wed Sep 10 21:15:40 2003
@@ -40,6 +40,9 @@
defconfig: $(obj)/conf
$< -d arch/$(ARCH)/Kconfig

+%_defconfig: $(obj)/conf
+ $(Q)$< -D arch/$(ARCH)/configs/$@ arch/$(ARCH)/Kconfig
+
# Help text used by make help
help:
@echo ' oldconfig - Update current config utilising a line-oriented program'
diff -Nru a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
--- a/scripts/kconfig/conf.c Wed Sep 10 21:15:40 2003
+++ b/scripts/kconfig/conf.c Wed Sep 10 21:15:40 2003
@@ -26,6 +26,7 @@
set_no,
set_random
} input_mode = ask_all;
+char *defconfig_file;

static int indent = 1;
static int valid_stdin = 1;
@@ -483,11 +484,12 @@

int main(int ac, char **av)
{
+ int i = 1;
const char *name;
struct stat tmpstat;

- if (ac > 1 && av[1][0] == '-') {
- switch (av[1][1]) {
+ if (ac > i && av[i][0] == '-') {
+ switch (av[i++][1]) {
case 'o':
input_mode = ask_new;
break;
@@ -498,6 +500,15 @@
case 'd':
input_mode = set_default;
break;
+ case 'D':
+ input_mode = set_default;
+ defconfig_file = av[i++];
+ if (!defconfig_file) {
+ printf("%s: No default config file specified\n",
+ av[0]);
+ exit(1);
+ }
+ break;
case 'n':
input_mode = set_no;
break;
@@ -516,18 +527,21 @@
printf("%s [-o|-s] config\n", av[0]);
exit(0);
}
- name = av[2];
- } else
- name = av[1];
+ }
+ name = av[i];
+ if (!name) {
+ printf("%s: Kconfig file missing\n", av[0]);
+ }
conf_parse(name);
//zconfdump(stdout);
switch (input_mode) {
case set_default:
- name = conf_get_default_confname();
- if (conf_read(name)) {
+ if (!defconfig_file)
+ defconfig_file = conf_get_default_confname();
+ if (conf_read(defconfig_file)) {
printf("***\n"
"*** Can't find default configuration \"%s\"!\n"
- "***\n", name);
+ "***\n", defconfig_file);
exit(1);
}
break;

2003-09-10 19:20:19

by Sam Ravnborg

[permalink] [raw]
Subject: kbuild: Save relevant parts of modules.txt

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1267 -> 1.1268
# Documentation/kbuild/00-INDEX 1.4 -> 1.5
# (new) -> 1.1 Documentation/kbuild/modules.txt
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/09/10 [email protected] 1.1268
# kbuild: Save relevant parts of modules.txt
#
# The out-dated modules.txt were deleted from the kernel, save the kbuild
# related bits in Documentation/kbuild.
# It needs more updates, but for now this is better than nothing
# --------------------------------------------
#
diff -Nru a/Documentation/kbuild/00-INDEX b/Documentation/kbuild/00-INDEX
--- a/Documentation/kbuild/00-INDEX Wed Sep 10 21:15:32 2003
+++ b/Documentation/kbuild/00-INDEX Wed Sep 10 21:15:32 2003
@@ -4,3 +4,5 @@
- specification of Config Language, the language in Kconfig files
makefiles.txt
- developer information for linux kernel makefiles
+modules.txt
+ - how to build modules and to install them
diff -Nru a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt
--- /dev/null Wed Dec 31 16:00:00 1969
+++ b/Documentation/kbuild/modules.txt Wed Sep 10 21:15:32 2003
@@ -0,0 +1,28 @@
+For now this is a raw copy from the old Documentation/modules.txt,
+which was removed in 2.6.0-test5.
+The information herein is correct but not complete.
+
+Installing modules in a non-standard location
+---------------------------------------------
+When the modules needs to be installed under another directory
+the INSTALL_MOD_PATH can be used to prefix "/lib/modules" as seen
+in the following example:
+
+make INSTALL_MOD_PATH=/frodo modules_install
+
+This will install the modules in the directory /frodo/lib/modules.
+/frodo can be a NFS mounted filesystem on another machine, allowing
+out-of-the-box support for installation on remote machines.
+
+
+Compiling modules outside the official kernel
+---------------------------------------------
+Often modules are developed outside the official kernel.
+To keep up with changes in the build system the most portable way
+to compile a module outside the kernel is to use the following command-line:
+
+make -C path/to/kernel/src SUBDIRS=$PWD modules
+
+This requires that a makefile exits made in accordance to
+Documentation/kbuild/makefiles.txt.
+

2003-09-10 19:35:52

by Russell King

[permalink] [raw]
Subject: Re: [BK PATCHES] kbuild/kconfig

On Wed, Sep 10, 2003 at 09:14:11PM +0200, Sam Ravnborg wrote:
> Hi Linus.
>
> Here are a few kbuild/kconfig related patches:
>
> 1) kbuild: Save relevant parts of modules.txt
> 2) kconfig: Allow architectures to select board specific configs
> 3) kbuild: Build minimum in scripts/ when changing configuration
> 4) kbuild: Remove cscope.out during make mrproper
> 5) kbuild/ppc*: Remove obsolete _config support
> 6) bk ignore scripts/bin2c
>
> The only patch worth mention is the one allowing architectures
> to select board specific configurations. Adding a few trivial
> changes to conf.c enabled generic support for that.
> ppc* already followed the required setup.
> I did not update arm for this new scheme. Russell?

I'd much rather we keep our current scheme because it makes 100% sense
for ARM since there is no "generic" configuration which covers a subset
of configurations.

To illustrate this fact, here's some statistics on the symbolic usage
between all the default configurations on ARM:

- 414 configuration symbols are only defined on one default configuration
file.
- 281 configuration symbols occur in between 2 and 9 inclusive files.
- 122 configuration symbols occur between 10 and 46 files.
- 3 configuration symbols occur in all 47 default configuration files.

I'm far from happy doing any conversions to make this work. The current
system was fine and fit our needs exactly.

--
Russell King ([email protected]) http://www.arm.linux.org.uk/personal/
Linux kernel maintainer of:
2.6 ARM Linux - http://www.arm.linux.org.uk/
2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core

2003-09-10 19:39:36

by Sam Ravnborg

[permalink] [raw]
Subject: kbuild: Build minimum in scripts/ when changing configuration

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1270 -> 1.1271
# Makefile 1.427 -> 1.428
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/09/10 [email protected] 1.1271
# kbuild: Build minimum in scripts/ when changing configuration
#
# From: Ricky Beam <[email protected]>, me
#
# With the increasing amount of programs located in scripts/, several
# of which is dependent on the kernel configuration, it makes sense to
# avoid building these too often.
# With this patch only fixdep is build, the minimal requirement for running
# any *config target
# --------------------------------------------
#
diff -Nru a/Makefile b/Makefile
--- a/Makefile Wed Sep 10 21:15:44 2003
+++ b/Makefile Wed Sep 10 21:15:44 2003
@@ -253,12 +253,15 @@

# Helpers built in scripts/

-scripts/docproc scripts/fixdep scripts/split-include : scripts ;
+scripts/docproc scripts/split-include : scripts ;

-.PHONY: scripts
+.PHONY: scripts scripts/fixdep
scripts:
$(Q)$(MAKE) $(build)=scripts

+scripts/fixdep:
+ $(Q)$(MAKE) $(build)=scripts $@
+

# To make sure we do not include .config for any of the *config targets
# catch them early, and hand them over to scripts/kconfig/Makefile
@@ -336,8 +339,8 @@

# If .config is newer than include/linux/autoconf.h, someone tinkered
# with it and forgot to run make oldconfig
-include/linux/autoconf.h: scripts/fixdep .config
- $(Q)$(MAKE) $(build)=scripts/kconfig silentoldconfig
+include/linux/autoconf.h: .config
+ $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig

endif

2003-09-10 19:48:13

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [BK PATCHES] kbuild/kconfig

On Wed, Sep 10, 2003 at 08:34:25PM +0100, Russell King wrote:
>
> I'd much rather we keep our current scheme because it makes 100% sense
> for ARM since there is no "generic" configuration which covers a subset
> of configurations.

What has changed is only the steps needed.
Old way:
make anakin_config => copied def-configs/ankin to .config
make oldconfig => required to make a consistent config

New way
make anakin_defconfig => Creates a consistent config in one step

The patch just introduced a generic method to fetch a given
configuration and to make that configuration consistent.
Similar to running "make oldconfig".

See, no new funtionality, just a different way to achieve the same.
OK?

> To illustrate this fact, here's some statistics on the symbolic usage
> between all the default configurations on ARM:
>
> - 414 configuration symbols are only defined on one default configuration
> file.
> - 281 configuration symbols occur in between 2 and 9 inclusive files.
> - 122 configuration symbols occur between 10 and 46 files.
> - 3 configuration symbols occur in all 47 default configuration files.
>
> I'm far from happy doing any conversions to make this work. The current
> system was fine and fit our needs exactly.

As outlined in a private mail, the only thing needed for arm to do
is to rename 48 files and one directory. And to delete ~10 lines form a
makefile.
That is an acceptable price to pay for getting generic support for something
that will see wider use by other architectures (my prediction).

Sam

2003-09-10 20:01:17

by Ricky Beam

[permalink] [raw]
Subject: Re: kbuild: Build minimum in scripts/ when changing configuration

On Wed, 10 Sep 2003, Sam Ravnborg wrote:
>+scripts/fixdep:
>+ $(Q)$(MAKE) $(build)=scripts $@
>+

Umm, that still doesn't address the "already up to date" make will generate
when fixdep doesn't need to be rebuilt. (which is why I changed things the
way I did.)

--Ricky


2003-09-10 20:13:24

by Sam Ravnborg

[permalink] [raw]
Subject: Re: kbuild: Build minimum in scripts/ when changing configuration

On Wed, Sep 10, 2003 at 03:58:02PM -0400, Ricky Beam wrote:
> On Wed, 10 Sep 2003, Sam Ravnborg wrote:
> >+scripts/fixdep:
> >+ $(Q)$(MAKE) $(build)=scripts $@
> >+
>
> Umm, that still doesn't address the "already up to date" make will generate
> when fixdep doesn't need to be rebuilt. (which is why I changed things the
> way I did.)
I am aware of that.
It does not happen in the usual situations where it would have become
visible.
One example is "make oldconfig" where it appears, but there is so much
other output that I avoided to introduce special support to avoid it.

You see the same with asm-offset.h. We could avoid that with a hack
in Makefile.build, but I have resisted to do it, again to avoid special cases.

Sam

2003-09-10 21:03:28

by Ricky Beam

[permalink] [raw]
Subject: Re: kbuild: Build minimum in scripts/ when changing configuration

On Wed, 10 Sep 2003, Sam Ravnborg wrote:
>I am aware of that.
>It does not happen in the usual situations where it would have become
>visible.
>One example is "make oldconfig" where it appears, but there is so much
>other output that I avoided to introduce special support to avoid it.
>
>You see the same with asm-offset.h. We could avoid that with a hack
>in Makefile.build, but I have resisted to do it, again to avoid special cases.

Actually, adding "@:" to the generic rules would work... and fix this
little spew "everywhere".

--Ricky


2003-09-10 22:14:35

by Russell King

[permalink] [raw]
Subject: Re: [BK PATCHES] kbuild/kconfig

On Wed, Sep 10, 2003 at 09:48:06PM +0200, Sam Ravnborg wrote:
> As outlined in a private mail, the only thing needed for arm to do

Sigh, if only this private mail had been sent first.

--
Russell King ([email protected]) http://www.arm.linux.org.uk/personal/
Linux kernel maintainer of:
2.6 ARM Linux - http://www.arm.linux.org.uk/
2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core

2003-09-22 17:25:11

by Masanori Goto

[permalink] [raw]
Subject: Re: kbuild: Remove cscope.out during make mrproper

At Wed, 10 Sep 2003 21:18:24 +0200,
Sam Ravnborg wrote:
> # From: "Nathan T. Lynch" <[email protected]>
> #
> # The attached patch fixes the toplevel Makefile to remove cscope.out
> # during make mrproper. The default name for the database that cscope
> # creates is cscope.out, and this is what the cscope rule in the
> # makefile uses. Currently, mrproper will leave cscope.out behind,
> # which can make for interesting diffs...
> # --------------------------------------------
> #
> diff -Nru a/Makefile b/Makefile
> --- a/Makefile Wed Sep 10 21:15:47 2003
> +++ b/Makefile Wed Sep 10 21:15:47 2003
> @@ -675,7 +675,7 @@
> .menuconfig.log \
> include/asm \
> .hdepend include/linux/modversions.h \
> - tags TAGS cscope kernel.spec \
> + tags TAGS cscope.out kernel.spec \

This patch looks fine. But it's also good idea to remove
cscope.in.out, cscope.po.out (for inverted index: -q option).


--- Makefile.org 2003-09-12 10:20:18.000000000 +0900
+++ Makefile 2003-09-12 10:20:00.000000000 +0900
@@ -672,7 +672,7 @@
.menuconfig.log \
include/asm \
.hdepend include/linux/modversions.h \
- tags TAGS cscope kernel.spec \
+ tags TAGS cscope.out cscope.in.out cscope.po.out kernel.spec \
.tmp*

# Directories removed with 'make mrproper'


Regards,
-- gotom

2003-09-22 20:55:40

by Sam Ravnborg

[permalink] [raw]
Subject: Re: kbuild: Remove cscope.out during make mrproper

On Tue, Sep 23, 2003 at 02:24:52AM +0900, GOTO Masanori wrote:
> This patch looks fine. But it's also good idea to remove
> cscope.in.out, cscope.po.out (for inverted index: -q option).

Thanks, applied.