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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
.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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
.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>
---
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>
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>
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>
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>
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>
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>
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>
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>
If the file .kconfig.d is missing then make sure to run
'make silentoldconfig', since we have no way to detect if
a Kconfig file has been updated.
-kconfig.d is created by kconfig and is removed as part
of 'make clean' so the situation is likely to occur in reality.
Jan Beulich <JBeulich@novell.com> reported this bug.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Here is a fixup for tags file generation, for proper tags of
__releases/__acquires functions.
Signed-off-by: samuel.thibault@ens-lyon.org
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>