Commit Graph

231 Commits

Author SHA1 Message Date
Robert P. J. Day 1ef9885690 kbuild: correct and clarify versioning info in Makefile
The attached patch clarifies the creation of KERNELRELEASE and
corrects an error regarding the use of $(LOCALVERSION).

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 10:50:14 +02:00
Aron Griffis da7c04083c kbuild: Extend kbuild/defconfig tags support to exuberant ctags
The following patch extends kbuild/defconfig tags support to exuberant
ctags.  The previous support is only for emacs ctags/etags programs.

This patch also corrects the kconfig regex for the emacs invocation.
Previously it would miss some instances because it assumed /^config
instead of /^[ \t]*config

Signed-off-by: Aron Griffis <aron@hp.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 10:24:20 +02:00
Robert P. J. Day 1c7bafe720 kbuild: clarify "make C=" build option
Clarify the use of "make C=" in the top-level Makefile, and fix a
typo in the Documentation file.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 10:10:56 +02:00
Robert P. J. Day b32c826847 kbuild: update help in top level Makefile
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 10:02:52 +02:00
Sam Ravnborg 4635281c8e kbuild: preperly align SYSMAP output
Align filenames for SYSMAP with other filenames

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 09:01:49 +02:00
Sam Ravnborg b805aa0e79 kbuild: make -rR is now default
Do not specify -rR anymore - it is default.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 09:01:49 +02:00
Sam Ravnborg 45d506bd65 kbuild: make V=2 tell why a target is rebuild
tell why a a target got build
   enabled by make V=2
      Output (listed in the order they are checked):
         (1) - due to target is PHONY
         (2) - due to target missing
         (3) - due to: file1.h file2.h
         (4) - due to command line change
         (5) - due to missing .cmd file
         (6) - due to target not in $(targets)
(1) We always build PHONY targets
(2) No target, so we better build it
(3) Prerequisite is newer than target
(4) The command line stored in the file named dir/.target.cmd
    differed from actual command line. This happens when compiler
    options changes
(5) No dir/.target.cmd file (used to store command line)
(6) No dir/.target.cmd file and target not listed in $(targets)
    This is a good hint that there is a bug in the kbuild file

This patch is inspired by a patch from: Milton Miller <miltonm@bga.com>

Cc: Milton Miller <miltonm@bga.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 09:01:49 +02:00
Sam Ravnborg 12715d20af kbuild: modpost on vmlinux regardless of CONFIG_MODULES
Based on patch from: Magnus Damm <magnus@valinux.co.jp>
This has the advantage that all section mismatch checks are run regardless
of modules being enabled or not.

When running modpost on vmlinux output:
MODPOST vmlinux

When running modpost on modules output count of modules like this:
MODPOST 5 modules

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 09:01:49 +02:00
Sam Ravnborg 07aea3a71f kbuild: use in-kernel unifdef
Let headers_install use in-kernel unifdef

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-09-25 09:00:01 +02:00
David Woodhouse 6d71627581 New 'make headers_install_all' target.
Install headers for _all_ architectures, suitable for making a tarball
release or extracting them for use in a separate package.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-09-24 22:16:03 +01:00
David Woodhouse de78912582 Use dependencies for 'make headers_install'.
Re-export header files only if either they or their controlling Kbuild
file has actually changed. Also allow for similar dependencies with
'headers_check', once we properly create the dependencies for those.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-09-24 22:15:14 +01:00
David Woodhouse f17b7bad39 Don't advertise (or allow) headers_{install,check} where inappropriate.
For architectures which don't have the include/asm-$(ARCH)/Kbuild file,
like ARM26, UM, etc.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-09-21 09:01:45 +01:00
Linus Torvalds e478bec0ba Linux v2.6.18. Arrr!
Ahoy, all land-lubbers, test me out right smartly!

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-19 20:42:06 -07:00
David Woodhouse 271fc18eea [PATCH] Add headers_check' target to output of 'make help'
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-19 07:59:59 -07:00
David Woodhouse 1ab7a1f3b4 [PATCH] headers_check: use a different default directory
`make headers_check' wants to go and write stuff in /lib/modules, which
requires root, whic is unfortunate.

In fact, there's no _particular_ reason for headers_install to put it there
either -- it can go into a subdirectory of the build tree in both cases.
It's not intended to go directly into /usr/include, which is why we didn't
put it there -- and we certainly don't want people screwing around with
symlinking to it.  It's for distributors to take away and do stuff with, so
leaving it in $(objtree) is fine, even in the headers_install case.

I picked $(objtree)/usr/include but I have no _particular_ preference
for that; it just seemed reasonable.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-16 12:54:32 -07:00
Linus Torvalds 95064a75eb Linux v2.6.18-rc7
One last time..
2006-09-12 18:41:36 -07:00
Linus Torvalds c336923b66 Linux 2.6.18-rc6 2006-09-03 19:19:48 -07:00
Linus Torvalds 60d4684068 Linux v2.6.18-rc5 2006-08-27 20:41:48 -07:00
Greg Kroah-Hartman 774bd8613d Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-2.6.18 2006-08-16 12:41:16 -07:00
Sam Ravnborg c9eca0b910 kbuild: correct assingment to CFLAGS with CROSS_COMPILE
Some architectures change $CC in arch/$(ARCH)/Makefile
mips is one example.

That have impact on what options are supported by gcc so move all
$(call cc-option, ...) after include of arch specific Makefile.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-08-16 21:14:08 +02:00
Greg Kroah-Hartman 20dbfad8e5 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-2.6.18 2006-08-07 13:39:55 -07:00
Sam Ravnborg 9ee4e3365d kbuild: external modules shall not check config consistency
external modules needs include/linux/autoconf.h and include/config/auto.conf
but skip the integrity test of these. Even with a newer Kconfig file we
shall just proceed since external modules simply uses the kernel source and
shall not attempt to modify it.
Error out if a config fiel is missing since they are mandatory.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-08-07 21:01:36 +02:00
Linus Torvalds 9f737633e6 Linux v2.6.18-rc4 2006-08-06 11:20:11 -07:00
Sam Ravnborg eb2cafa1d9 kbuild: -fno-stack-protector is not good
Ubuntu gcc has hardcoded -fstack-protector - but does not understand
-fno-stack-protector-all. So only try -fno-stack-protector.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-08-01 11:32:46 +02:00
Sam Ravnborg 667918a4cc kbuild: version.h and new headers_* targets does not require a kernel config
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-08-01 11:32:46 +02:00
Linus Torvalds b6ff50833a Linux v2.6.18-rc3 2006-07-29 23:15:36 -07:00
Linus Torvalds 82d6897fef Linux 2.6.18-rc2
Finishing up for the kernel summit. Ottawa, here I come.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-15 14:53:08 -07:00
Linus Torvalds 120bda20c6 Linux 2.6.18-rc1
It's all good.
2006-07-05 21:09:49 -07:00
Andreas Schwab e340221acd [PATCH] Makefile typo
Fix a typo in the toplevel makefile.

Signed-off-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-05 10:08:16 -07:00
Linus Torvalds 6fa0cb1141 Merge git://git.infradead.org/hdrinstall-2.6
* git://git.infradead.org/hdrinstall-2.6:
  Remove export of include/linux/isdn/tpam.h
  Remove <linux/i2c-id.h> and <linux/i2c-algo-ite.h> from userspace export
  Restrict headers exported to userspace for SPARC and SPARC64
  Add empty Kbuild files for 'make headers_install' in remaining arches.
  Add Kbuild file for Alpha 'make headers_install'
  Add Kbuild file for SPARC 'make headers_install'
  Add Kbuild file for IA64 'make headers_install'
  Add Kbuild file for S390 'make headers_install'
  Add Kbuild file for i386 'make headers_install'
  Add Kbuild file for x86_64 'make headers_install'
  Add Kbuild file for PowerPC 'make headers_install'
  Add generic Kbuild files for 'make headers_install'
  Basic implementation of 'make headers_check'
  Basic implementation of 'make headers_install'
2006-07-04 12:55:45 -07:00
Sam Ravnborg 63104eec23 kbuild: introduce utsrelease.h
include/linux/version.h contained both actual KERNEL version
and UTS_RELEASE that contains a subset from git SHA1 for when
kernel was compiled as part of a git repository.
This had the unfortunate side-effect that all files including version.h
would be recompiled when some git changes was made due to changes SHA1.
Split it out so we keep independent parts in separate files.

Also update checkversion.pl script to no longer check for UTS_RELEASE.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-07-03 23:30:54 +02:00
Sam Ravnborg 34c162f79e kbuild: explicit turn off gcc stack-protector
Ubuntu has enabled -fstack-protector per default in gcc
breaking kernel build. Explicit turn it off for now.
Later we may decide to make it configurable if the
kernel starts to support it.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-07-02 20:21:49 +02:00
Dustin Kirkland 701842e3bd kbuild: documentation change on allowing checkers besides sparse
Minor documentation change on allowing checkers besides sparse

This patch cleans up a couple of mentions of sparse in the inline
toplevel Makefile documentation such that it's clear that other checkers
besides sparse can override CHECK and CHECKFLAGS.

Signed-off-by: Dustin Kirkland <dustin.kirkland@us.ibm.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-07-01 17:08:33 +02:00
Sam Ravnborg 5e8d780d74 kbuild: fix ia64 breakage after introducing make -rR
kbuild used $¤(*F to get filename of target without extension.
This was used in several places all over kbuild, but introducing
make -rR broke his for all cases where we specified full path to
target/prerequsite. It is assumed that make -rR disables old style
suffix-rules which is why is suddenly failed.

ia64 was impacted by this change because several div* routines in
arch/ia64/lib are build using explicit paths and then kbuild failed.

Thanks to David Mosberger-Tang <David.Mosberger@acm.org> for an explanation
what was the root-cause and for testing on ia64.

This patch also fixes two uses of $(*F) in arch/um

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-07-01 09:58:02 +02:00
Linus Torvalds 2a2ed2db35 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (40 commits)
  kbuild: trivial fixes in Makefile
  kbuild: adding symbols in Kconfig and defconfig to TAGS
  kbuild: replace abort() with exit(1)
  kbuild: support for %.symtypes files
  kbuild: fix silentoldconfig recursion
  kbuild: add option for stripping modules while installing them
  kbuild: kill some false positives from modpost
  kbuild: export-symbol usage report generator
  kbuild: fix make -rR breakage
  kbuild: append -dirty for updated but uncommited changes
  kbuild: append git revision for all untagged commits
  kbuild: fix module.symvers parsing in modpost
  kbuild: ignore make's built-in rules & variables
  kbuild: bugfix with initramfs
  kbuild: modpost build fix
  kbuild: check license compatibility when building modules
  kbuild: export-type enhancement to modpost.c
  kbuild: add dependency on kernel.release to the package targets
  kbuild: `make kernelrelease' speedup
  kconfig: KCONFIG_OVERWRITECONFIG
  ...
2006-06-26 11:05:15 -07:00
Sam Ravnborg 070b98bfda kbuild: trivial fixes in Makefile
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-25 00:07:55 +02:00
Masatake YAMATO e838db685f kbuild: adding symbols in Kconfig and defconfig to TAGS
I'm using TAGS generated from "make TAGS" to read the kernel source code.

When I met a ifdef block

	  #ifdef CONFIG_FOO
	  	 ...
	  #endif

in the soruce code I would like to know the meaning CONFIG_FOO
to decide whether I should read inside the ifdef block
or not. meaning CONFIG_FOO is well documented in Kconfig.
So it is nice if I can jump to CONFIG_FOO entry in Kconfig
from "#ifdef CONFIG_FOO" with the tag jump.

Here is the patch to add symbols in Kconfig and defconfig to TAGS
in "make TAGS" operation.

Signed-off-by: Masatake YAMATO <jet@gyve.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-24 23:52:05 +02:00
Andreas Gruenbacher 15fde67518 kbuild: support for %.symtypes files
Here is a patch that adds a new -T option to genksyms for generating dumps of
the type definition that makes up the symbol version hashes. This allows to
trace modversion changes back to what caused them. The dump format is the
name of the type defined, followed by its definition (which is almost C):

  s#list_head struct list_head { s#list_head * next , * prev ; }

The s#, u#, e#, and t# prefixes stand for struct, union, enum, and typedef.
The exported symbols do not define types, and thus do not have an x# prefix:

  nfs4_acl_get_whotype int nfs4_acl_get_whotype ( char * , t#u32 )

The symbol type defintion of a single file can be generated with:

  make fs/jbd/journal.symtypes

If KBUILD_SYMTYPES is defined, all the *.symtypes of all object files that
export symbols are generated.

The single *.symtypes files can be combined into a single file after a kernel
build with a script like the following:

for f in $(find -name '*.symtypes' | sort); do
    f=${f#./}
    echo "/* ${f%.symtypes}.o */"
    cat $f
    echo
done \
| sed -e '\:UNKNOWN:d' \
      -e 's:[,;] }:}:g' \
      -e 's:\([[({]\) :\1:g' \
      -e 's: \([])},;]\):\1:g' \
      -e 's: $::' \
      $f \
| awk '
/^.#/   { if (defined[$1] == $0) {
            print $1
            next
          }
          defined[$1] = $0
        }
        { print }
'

When the kernel ABI changes, diffing individual *.symtype files, or the
combined files, against each other will show which symbol changes caused the
ABI changes. This can save a tremendous amount of time.

Dump the types that make up modversions

Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-24 23:42:46 +02:00
Roman Zippel 3041e47e8b kbuild: fix silentoldconfig recursion
kconfig-fix-config-dependencies causes this:

make CC=cc  KBUILD_VERBOSE=1 -C /usr/src/25 SUBDIRS=/home/akpm/NVIDIA-Linux-x86_64-1.0-8762-pkg2/usr/src/nv modules
make -f /usr/src/devel/Makefile silentoldconfig
make -f /usr/src/devel/Makefile silentoldconfig
make -f /usr/src/devel/Makefile silentoldconfig

The basic problem is if we compile external modules, config-targets isn't
set which can cause recursive calls to silentoldconfig to update the
kernel configuration.

Bail out and ask the user to update manually.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-24 23:32:37 +02:00
Theodore Ts'o ac031f26e8 kbuild: add option for stripping modules while installing them
Add option for stripping modules while installing them.

This function adds support for stripping modules while they are being
installed.  CONFIG_DEBUG_KERNEL (which will probably become more
popular as developers use kdump) causes the size of the installed
modules to grow by a factor of 9 or so.

Some kernel package systems solve this problem by stripping the debug
information from /lib/modules after running "make modules_install",
but that may not work for people who are installing directly into
/lib/modules --- root partitions that were sized to handle 16 megs
worth of modules may not be quite so happy with 145 megs of modules,
so the "make modules_install" never succeeds.

This patch allows such users to request modules_install to strip the
modules as they are installed.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-24 23:16:45 +02:00
David Woodhouse 684753599a Basic implementation of 'make headers_check'
Based on the 'headers_install' target, this performs a basic sanity check
on the exported headers -- so far only checking that they do not include
any other headers which aren't selected for import, but easily extendable.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-06-18 12:02:10 +01:00
David Woodhouse 8d730cfb50 Basic implementation of 'make headers_install'
This adds a make target which exports a subset of headers which contain
definitions which are useful for system libraries and tools. It uses the
BSD 'unifdef' tool to remove instances of #ifdef __KERNEL__, and uses
sed to remove markers like __user.

Based on an original implementation by Arnd Bergmann <arnd@arndb.de>
Hacked about by David Woodhouse <dwmw2@infradead.org>
Reviewed and cleaned up by Sam Ravnborg <sam@ravnborg.org>

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-06-18 11:58:39 +01:00
Linus Torvalds 427abfa28a Linux v2.6.17
Being named "Crazed Snow-Weasel" instills a lot of confidence in this
release, so I'm sure this will be one of the better ones.
2006-06-17 18:49:35 -07:00
Sam Ravnborg 566f81ca59 kbuild: ignore make's built-in rules & variables
kbuild does explicitly specify what to do in all cases, and each
time make's built-in rules & variables has been used it has been a bug.
So to speed up things and to avoid the hard-to-debug error situations
ignore the built-in definitions.
If any part of the kernel uses the built-in definitions the build will
just stop there and it should be trivial to fix.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-10 09:15:27 +02:00
Zach Brown 031ecc6de7 kbuild: add dependency on kernel.release to the package targets
The binrpm-pkg target uses KERNELRELEASE when generated its .spec file.
When binrpm-pkg was the first build target run in a tree it generated the
.spec before kernel.release so the Version: tag in the .spec was empty.

I don't know if this is the best fix, but binrpm-pkg works when we
explicitly build kernel.release before descending into package-dir.

Signed-off-by: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-09 16:31:44 +02:00
Roman Zippel c30a02e022 kbuild: `make kernelrelease' speedup
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-09 16:31:44 +02:00
Roman Zippel 14cdd3c402 kconfig: KCONFIG_OVERWRITECONFIG
If you set KCONFIG_OVERWRITECONFIG in environment, Kconfig will not break
symlinks when .config is a symlink to somewhere else.

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-09 16:28:07 +02:00
Roman Zippel f1d28fb043 kconfig: move .kernelrelease
This moves the .kernelrelease file into include/config directory.  Remove its
generation from the config step, if the config step doesn't leave a proper
.config behind, it triggers a call to silentoldconfig.  Instead its generation
can be done via proper dependencies.

Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-09 07:31:30 +02:00
Roman Zippel 2e3646e51b kconfig: integrate split config into silentoldconfig
Now that kconfig can load multiple configurations, it becomes simple to
integrate the split config step, by simply comparing the new .config file with
the old auto.conf (and then saving the new auto.conf).  A nice side effect is
that this saves a bit of disk space and cache, as no data needs to be read
from or saved into the splitted config files anymore (e.g.  include/config is
now 648KB instead of 5.2MB).

Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-09 07:31:30 +02:00
Roman Zippel c955ccafc3 kconfig: fix .config dependencies
This fixes one of the worst kbuild warts left - the broken dependencies used
to check and regenerate the .config file.  This was done via an indirect
dependency and the .config itself had an empty command, which can cause make
not to reread the changed .config file.

Instead of this we generate now a new file include/config/auto.conf from
.config, which is used for kbuild and has the proper dependencies.  It's also
the main make target now for all files generated during this step (and thus
replaces include/linux/autoconf.h).

This also means we can now relax the syntax requirements for the .config file
and we don't have to rewrite it all the time, i.e.  silentoldconfig only
writes .config now when it's necessary to keep it in sync with the Kconfig
files and even this can be suppressed by setting the environment variable
KCONFIG_NOSILENTUPDATE, so the update can (and must) be done manually.

Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-06-09 07:31:30 +02:00
Linus Torvalds 1def630a6a Linux 2.6.17-rc6 2006-06-05 17:57:02 -07:00
Linus Torvalds a8bd60705a Linux 2.6.17-rc5 2006-05-24 18:50:17 -07:00
Linus Torvalds d8c3291c73 Linux v2.6.17-rc4 2006-05-11 16:31:53 -07:00
Jan Beulich fd5f0cd6b0 kbuild: Do not overwrite makefile as anohter user
Change the conditional of the outputmakefile rule to be evaluated entirely
in make, and add a conditional to not touch the generated makefile when e.g.
running 'make install' as root while the build was done as non-root. Also
adjust the comment describing this, and move the message printing and
redirection to mkmakefile.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-05-08 06:55:32 +02:00
Pavel Roskin fca1dff218 kbuild: removing .tmp_versions considered harmful
Remove *.mod files but not .tmp_versions for external builds

When "make install" is run as root, .tmp_versions is re-created and
becomes owned by root.  Subsequent "make" run by user fails because
.tmp_versions cannot be removed.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-04-30 23:48:03 +02:00
Linus Torvalds 2be4d50295 Linux v2.6.17-rc3 2006-04-26 19:19:25 -07:00
Linus Torvalds 8bbde0e6d5 Linux v2.6.17-rc2 2006-04-18 20:00:49 -07:00
Andreas Gruenbacher 7d2d8fe0cb kbuild: modules_install for external modules must not remove existing modules
When installing external modules with `make modules_install', the
first thing that happens is a rm -rf of the target directory. This
works only once, and breaks when installing more than one (set of)
external module(s).
With following fix we have the functionality:
- for a in-kernel modules_install the $(MODLIB)/kernel directory will be
  deleted before module installation
- for external modules the existing modules will be left as is assuming
  one may be building and installign several external modules

Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-04-06 08:42:17 +02:00
Sam Ravnborg aa360879ed kbuild: fix make dir/
kbuild added an extra '/' after the directory - resulting in all
files being rebuild in a subdirectory.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-04-06 08:25:31 +02:00
Sam Ravnborg bc2546a679 kbuild: fix building single targets with make O=.. single-target
This fixes single targets build so it now works relaiably in
following cases:
- build with mixed kernel source and output files (make single-target)
- build with separate output directory (make O=.. single-target)
- external module with mixed kernel source and output files
  (make M='pwd' single-target)
- external module with separate kernel source and output files
  (make O=.. M='pwd' single-target)

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-04-05 12:57:21 +02:00
Linus Torvalds 6246b6128b Linux v2.6.17-rc1
Close of the merge window..
2006-04-02 20:22:10 -07:00
Andi Kleen 6edfba1b33 [PATCH] x86_64: Don't define string functions to builtin
gcc should handle this anyways, and it causes problems when
sprintf is turned into strcpy by gcc behind our backs and
the C fallback version of strcpy is actually defining __builtin_strcpy

Then drop -ffreestanding from the main Makefile because it isn't
needed anymore and implies -fno-builtin, which is wrong now.
(it was only added for x86-64, so dropping it should be safe)

Noticed by Roman Zippel

Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-25 09:10:53 -08:00
Linus Torvalds 2e1ca21d46 Merge master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild
* master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild: (46 commits)
  kbuild: remove obsoleted scripts/reference_* files
  kbuild: fix make help & make *pkg
  kconfig: fix time ordering of writes to .kconfig.d and include/linux/autoconf.h
  Kconfig: remove the CONFIG_CC_ALIGN_* options
  kbuild: add -fverbose-asm to i386 Makefile
  kbuild: clean-up genksyms
  kbuild: Lindent genksyms.c
  kbuild: fix genksyms build error
  kbuild: in makefile.txt note that Makefile is preferred name for kbuild files
  kbuild: replace PHONY with FORCE
  kbuild: Fix bug in crc symbol generating of kernel and modules
  kbuild: change kbuild to not rely on incorrect GNU make behavior
  kbuild: when warning symbols exported twice now tell user this is the problem
  kbuild: fix make dir/file.xx when asm symlink is missing
  kbuild: in the section mismatch check try harder to find symbols
  kbuild: fix section mismatch check for unwind on IA64
  kbuild: kill false positives from section mismatch warnings for powerpc
  kbuild: kill trailing whitespace in modpost & friends
  kbuild: small update of allnoconfig description
  kbuild: make namespace.pl CROSS_COMPILE happy
  ...

Trivial conflict in arch/ppc/boot/Makefile manually fixed up
2006-03-25 08:48:48 -08:00
Jan Beulich 604bf5a216 [PATCH] CONFIG_UNWIND_INFO
As a foundation for reliable stack unwinding, this adds a config option
(available to all architectures except IA64 and those where the module
loader might have problems with the resulting relocations) to enable the
generation of frame unwind information.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Paul Mundt <lethal@linux-sh.org>,
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:25 -08:00
Sam Ravnborg eae0f536f6 kbuild: remove obsoleted scripts/reference_* files
The checks performed by scripts/reference_* has been moved to modpost.
Remove the files and their reference in top-level Makefile.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-03-21 07:28:24 +01:00
Sam Ravnborg 6c2133e11b kbuild: fix make help & make *pkg
FORCE was not defined => error.
Use kbuild infrastructure to call down to the relevant
Makefile. This enables us to use the FORCE definition from kbuild.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-03-21 07:22:35 +01:00
Linus Torvalds 7705a8792b Linux 2.6.16 2006-03-19 21:53:29 -08:00
Adrian Bunk 8cab77a2f8 Kconfig: remove the CONFIG_CC_ALIGN_* options
I don't see any use case for the CONFIG_CC_ALIGN_* options:
- they are only available if EMBEDDED
- people using EMBEDDED will most likely also enable
  CC_OPTIMIZE_FOR_SIZE
- the default for -Os is to disable alignment

In case someone is doing performance comparisons and discovers that the
default settings gcc chooses aren't good, the only sane thing is to discuss
whether it makes sense to change this, not through offering options to change
this locally.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-03-12 23:35:17 +01:00
Linus Torvalds 535744878e Linux 2.6.16-rc6
Gaah. Delayed. But all the better for it!
2006-03-11 14:12:55 -08:00
Jan Beulich 44f329ab69 [PATCH] kbuild: version.h should depend on .kernelrelease
Rebuilding a previously built tree while using make's -j option from
time to time results in the version.h check running at the same time as
the updating of .kernelrelease, resulting in UTS_RELEASE remaining an
empty string (and as a side effect causing the entire kernel to be
rebuilt).

Signed-Off-By: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-10 15:59:34 -08:00
Sam Ravnborg 0131705d58 kbuild: replace PHONY with FORCE
.PHONY: does not take patterns so use FORCE to achive same effect.
Thanks to "Paul D. Smith" <psmith@gnu.org> for noticing this.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-03-08 18:39:05 +01:00
Paul Smith 4f1933620f kbuild: change kbuild to not rely on incorrect GNU make behavior
The kbuild system takes advantage of an incorrect behavior in GNU make.
Once this behavior is fixed, all files in the kernel rebuild every time,
even if nothing has changed.  This patch ensures kbuild works with both
the incorrect and correct behaviors of GNU make.

For more details on the incorrect behavior, see:

http://lists.gnu.org/archive/html/bug-make/2006-03/msg00003.html

Changes in this patch:
  - Keep all targets that are to be marked .PHONY in a variable, PHONY.
  - Add .PHONY: $(PHONY) to mark them properly.
  - Remove any $(PHONY) files from the $? list when determining whether
    targets are up-to-date or not.

Signed-off-by: Paul Smith <psmith@gnu.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-03-06 00:09:51 +01:00
Sam Ravnborg f6ecebd659 kbuild: fix make dir/file.xx when asm symlink is missing
Added a dependency so we do full preparation before trying to build single
file targets. This fixes a case where Andrew Morton did:
	make kernel/sched.o
        rm include/asm
	make kernel/sched.o     -> splat

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-03-05 12:10:58 +01:00
Linus Torvalds b9a33cebac Linux v2.6.16-rc5 2006-02-26 21:09:35 -08:00
Jan Beulich c3f9da90b6 kbuild: version.h should depend on .kernelrelease
Rebuilding a previously built tree while using make's -j options from time to
time results in the version.h check running at the same time as the updating
of .kernelrelease, resulting in UTS_RELEASE remaining an empty string (and as
a side effect causing the entire kernel to be rebuilt).

Signed-Off-By: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-22 21:29:27 +01:00
Mattia Dongili 0f558c3334 kbuild: fix a cscope bug (make cscope segfaults)
Workaround a cscope bug where a trailing ':' in VPATH makes it segfault
and let it build the cross-reference succesfully.

VPATH=/home/mattia/devel/kernel/git/linux-2.6: cscope -b
[1]    17555 segmentation fault VPATH=/home/mattia/devel/kernel/git/linux-2.6: cscope -b

Signed-off-by: Mattia Dongili <malattia@linux.it>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 14:27:57 +01:00
Adrian Bunk e63046630c kbuild: remove a tab from an empty line
Emacs warns if an otherwise empty line starts with a tab.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 09:51:21 +01:00
Sam Ravnborg 20a468b513 kbuild: make cc-version available in kbuild files
Move $(CC) support functions to Kbuild.include so they are available
in the kbuild files.
In addition the following was done:
	o as-option documented in Documentation/kbuild/makefiles.txt
	o Moved documentation to new section to match
	  new scope of functions
	o added cc-ifversion used to conditionally select a text string
	  dependent on actual $(CC) version
	o documented cc-ifversion
	o change so Kbuild.include is read before the kbuild file

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 09:51:20 +01:00
Sam Ravnborg a67dc21a38 kbuild: run depmod when installing external modules
Following patch enables depmod support when installing external modules.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 09:51:20 +01:00
Sam Ravnborg fb3cbd2e57 kbuild: avoid stale modules in $(MODVERDIR) for external modules
To avoid stale modules located in $(MODVERDIR) aka .tmp_versions/
always delete the directory when building an external module.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 09:51:19 +01:00
Martin Michlmayr 8999257c29 kbuild: Accept various mips sub-types in SUBARCH
uname -m on MIPS can give a number of results, such as mips64.  We
need to add another substitution to the sed call for SUBARCH in the
main Makefile.

Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 09:51:19 +01:00
Sam Ravnborg 06300b21f4 kbuild: support building individual files for external modules
Support building individual files when dealing with separate modules.
So say you have a module named "foo" which consist of two .o files bar.o
and fun.o.

You can then do:
make -C $KERNELSRC M=`pwd` bar.o
make -C $KERNELSRC M=`pwd` bar.lst
make -C $KERNELSRC M=`pwd` bar.i
make -C $KERNELSRC M=`pwd` /            <= will build all .o files
                                           and link foo.o
make -C $KERNELSRC M=`pwd` foo.ko       <= will build the module
                                           and do the modpost step
					   to create foo.ko

The above will also work if the external module is placed in a
subdirectory using a hirachy of kbuild files.
Thanks to Andreas Gruenbacher <agruen@suse.de> for initial feature
request / bug report.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-02-19 09:51:17 +01:00
Linus Torvalds bd71c2b174 Linux v2.6.16-rc4 2006-02-17 14:23:45 -08:00
Benjamin LaHaise 36cbbe5eb9 [PATCH] kbuild: revert "fix make -jN with multiple targets with O=..."
Commit 296e0855b0f9a4ec9be17106ac541745a55b2ce1:

    "kbuild: fix make -jN with multiple targets with O=..."

causes a ~95% increase in build time for the kernel.  Before: 4m21s
after: 8m1.403s.  Can we revert this until another approach is found?

Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-15 15:32:21 -08:00
Linus Torvalds e9bb4c9929 Linux v2.6.16-rc3 2006-02-12 16:27:25 -08:00
Linus Torvalds eeb059e0a6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-bugfix 2006-02-07 10:01:43 -08:00
Linus Torvalds 826eeb53a6 Linux v2.6.16-rc2 2006-02-02 22:03:08 -08:00
Sam Ravnborg 8c7f75d325 kbuild: fix build with O=..
.kernelrelease was saved in same directory as kernel source also
with make O=...
Make sure we kick in the normal logic to shift to the output directory
when we build .kernelrelease after executing *config.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
2006-01-21 12:07:56 +01:00
Linus Torvalds 2664b25051 Linux v2.6.16-rc1 2006-01-16 23:44:47 -08:00
Paul Mundt cad8244840 [PATCH] sh: Move CPU subtype configuration to its own Kconfig
Currently the CPU subtype options are cluttering up arch/sh/Kconfig somewhat.

Given that, this moves all of that in to its own arch/sh/mm/Kconfig.  Things
like cache configuration are also moved to this new location.

This also adds support for strict CPU tuning on newer cores, which requires
the addition of as-option.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:15:28 -08:00
Linus Torvalds 9d8d5a284e Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild 2006-01-16 11:19:04 -08:00
Sam Ravnborg df9df036d3 kbuild: fix 'make all install_modules install'
The command 'make all modules_install install' would fail
in a virgin tree - pointing at a non-existing directory under
/lib/modules/xxx

KERNELRELEASE is part of MODLIB and we need to create .kernelrelease
before we can properly evaluate KERNELRELEASE,
Changing MODLIB to the recursively expanded flavor let it pick up
the correct KERNELRELEASE value.

Reported by: "Hemmann, Volker Armin" <volker.armin.hemmann@tu-clausthal.de>

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-01-16 12:46:07 +01:00
Sam Ravnborg 2244cbd8a9 kbuild: create .kernelrelease at *config step
To enable 'make kernelrelease' earlier now create .kernelrelease when
one of the *config targets are used.
Also introduce KERNELVERSION - only user is kconfig.
KERNELVERSION was needed to display kernel version in menuconfig -
KERNELRELEASE is not valid until configuration has completed.
kconfig files modified to use KERNELVERSION.
Bug reported by: Rene Rebe <rene@exactcode.de>

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-01-16 12:12:12 +01:00
Sam Ravnborg 296e0855b0 kbuild: fix make -jN with multiple targets with O=...
The way multiple targets was handled with make O=...
broke because for each high-level target make spawned
a parallel make resulting in a broken build.
Reported by Keith Owens <kaos@ocs.com.au>

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-01-15 20:02:31 +01:00
Paul Mackerras 820a8ce793 powerpc: Make ARCH=powerpc the default for 32-bit ppc
This makes ARCH=powerpc the default on 32-bit powerpc machines,
where uname -m returns ppc, as well as on 64-bit powerpc machines.
Most people who would be likely to build their own kernels on
32-bit powerpc machines would be using powermacs or CHRP machines,
both of which are supported with ARCH=powerpc now.  Embedded ppc
developers whose ports haven't been moved over to arch/powerpc
yet will have to explicitly set ARCH=ppc now.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-01-15 17:33:52 +11:00
Linus Torvalds ab396e91bf Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
Fix up some trivial conflicts in {i386|ia64}/Makefile
2006-01-10 08:21:33 -08:00
Adrian Bunk a58a414fd5 spelling: s/usefull/useful/
Signed-off-by: Adrian Bunk <bunk@stusta.de>
2006-01-10 00:08:17 +01:00
Sam Ravnborg 4f0210b9c4 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>
2006-01-09 22:48:34 +01:00
Sam Ravnborg cb58455c48 kbuild: KERNELRELEASE is only re-defined when buiding the 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>
2006-01-09 21:20:34 +01:00
Tore Anderson 50aa88e287 kbuild: ensure mrproper removes .old_version
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>
2006-01-08 18:46:49 +01:00