10 Jun, 2011

1 commit


16 May, 2011

1 commit

  • Based on a patch by Rabin Vincent.

    Fix building with KBUILD_NOCMDDEP=1, which currently does not work
    because it does not build built-in.o with no dependencies:

    LD fs/notify/built-in.o
    ld: cannot find fs/notify/dnotify/built-in.o: No such file or directory
    ld: cannot find fs/notify/inotify/built-in.o: No such file or directory
    ld: cannot find fs/notify/fanotify/built-in.o: No such file or directory

    Reported-and-tested-by: Rabin Vincent
    Signed-off-by: Michal Marek

    Michal Marek
     

03 May, 2011

1 commit

  • Starting with 4.4, gcc will happily accept -Wno- in the
    cc-option test and complain later when compiling a file that has some
    other warning. This rather unexpected behavior is intentional as per
    http://gcc.gnu.org/PR28322, so work around it by testing for support of
    the opposite option (without the no-). Introduce a new Makefile function
    cc-disable-warning that does this and update two uses of cc-option in
    the toplevel Makefile.

    Reported-and-tested-by: Stephen Rothwell
    Signed-off-by: Michal Marek

    Michal Marek
     

20 Apr, 2011

1 commit


12 Dec, 2009

1 commit

  • To make it easier for module-init-tools and scripts like mkinitrd to
    distinguish builtin and missing modules, install a modules.builtin file
    listing all builtin modules. This is done by generating an additional
    config file (tristate.conf) with tristate options set to uppercase 'Y'
    or 'M'. If we source that config file, the builtin modules appear in
    obj-Y.

    Signed-off-by: Michal Marek

    Michal Marek
     

12 Oct, 2009

1 commit


20 Sep, 2009

3 commits

  • The arch/*/boot/Makefile use cc-options to check for GCC command options
    and cc-options use the hardened specs when checking for GCC command
    options. When -fPIE is pass to cc1 it can't use -ffreestanding or
    -fno-toplevel-reorder. Then it fail to build stuff with -ffreestanding
    and -fno-toplevel-reorder.

    Thanks to Fredric Johansson for finding the main problem behind a failed
    build using a hardened toolchain.

    Signed-off-by: Magnus Granberg
    Signed-off-by: Jory A. Pratt
    Cc: Fredric Johansson
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Cc:
    Signed-off-by: Sam Ravnborg

    Jory A. Pratt
     
  • ld-option is used to check if $(LD) supports a specific option.

    Based on patch from Andi Kleen.

    Cc: Andi Kleen
    Signed-off-by: Sam Ravnborg
    First use is to check if option -X is supported (upcoming patch).
    Theis is ne

    Sam Ravnborg
     
  • ld-option is misnamed as it test options to gcc, not to ld.
    Renamed it to reflect this.

    Cc: Andi Kleen
    Cc: Roland McGrath
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

04 Dec, 2008

3 commits

  • Convert a few echos in the build system to new $(kecho) so we get correct
    output according to build verbosity.

    Signed-off-by: Mike Frysinger
    [sam: added kecho in a few more places for O=... builds]
    Signed-off-by: Sam Ravnborg

    Mike Frysinger
     
  • There is a bunch of places in the build system where we do 'echo' to show
    some nice status lines. This means we still get output when running in
    silent mode. So declare a new KECHO variable that only does 'echo' when we
    are in a suitable verbose build mode.

    Signed-off-by: Mike Frysinger
    [sam: added Documentation]
    Signed-off-by: Sam Ravnborg

    Mike Frysinger
     
  • When adding extra -I options with O=... we could
    end up in a situation where there were no parameters to -I.
    So we had a commandline that looked like this:

    ... -I -Wall ...

    This had the undesired side effect that gcc assumed "-Wall"
    was a path to look for include files so this options was
    effectively ignored.

    This happens only when we build the generated module.mod.c files
    as part of the final modules builds and is as such harmless
    with current kbuild.
    This bug was exposed when we rearranged the options to gcc.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

10 Sep, 2008

1 commit

  • David Sanders wrote:

    > I'm getting this error:
    > as: unrecognized option `-mtune=generic32'
    > I have binutils 2.17.

    Use -c instead of -S in cc-option and cc-option-yn, so we can probe
    options related to the assembler.

    Signed-off-by: H. Peter Anvin
    Cc: Sam Ravnborg
    Cc: kbuild devel
    Signed-off-by: Ingo Molnar

    H. Peter Anvin
     

12 Feb, 2008

1 commit

  • When make -s support were added to filechk to
    combination created with make V=1 were not
    covered.
    Fix it by explicitly cover this case too.

    Signed-off-by: Sam Ravnborg
    Cc: Mike Frysinger

    Sam Ravnborg
     

09 Feb, 2008

1 commit


20 Oct, 2007

1 commit

  • cc-cross-prefix is useful for the architecture that like
    to provide a default CROSS_COMPILE value,
    but may have several to select between.

    Sample usage:

    ifneq ($(SUBARCH),$(ARCH))
    ifeq ($(CROSS_COMPILE),)
    CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-)
    endif
    endif

    Actual usage by the different archs will taken care of later.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

16 Oct, 2007

1 commit

  • The variable AFLAGS is a wellknown variable and the usage by
    kbuild may result in unexpected behaviour.
    On top of that several people over time has asked for a way to
    pass in additional flags to gcc.

    This patch replace use of AFLAGS with KBUILD_AFLAGS all over
    the tree.

    Patch was tested on following architectures:
    alpha, arm, i386, x86_64, mips, sparc, sparc64, ia64, m68k, s390

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

15 Oct, 2007

1 commit

  • The variable CFLAGS is a wellknown variable and the usage by
    kbuild may result in unexpected behaviour.
    On top of that several people over time has asked for a way to
    pass in additional flags to gcc.

    This patch replace use of CFLAGS with KBUILD_CFLAGS all over the
    tree and enabling one to use:
    make CFLAGS=...
    to specify additional gcc commandline options.

    One usecase is when trying to find gcc bugs but other
    use cases has been requested too.

    Patch was tested on following architectures:
    alpha, arm, i386, x86_64, mips, sparc, sparc64, ia64, m68k

    Test was simple to do a defconfig build, apply the patch and check
    that nothing got rebuild.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

17 Jul, 2007

1 commit


10 Feb, 2007

1 commit

  • This adds the remaining changes which should have been part of the
    review process.

    - the define command is inappropriate (it's primarily for rule
    definitions)
    - execute commands in the current dir as all other commands
    - .*.tmp (but not .*.null) files are also removed up by "make clean"
    - printf has other side effects, just use "echo -e"
    - proper quoting
    - proper indentation

    Signed-off-by: Roman Zippel
    Signed-off-by: Linus Torvalds

    Roman Zippel
     

09 Feb, 2007

1 commit

  • Michal Ostrowski points out what the real problem was: the spaces at the
    start of the definition of the 'checker-shell' make function.

    Cc: Michal Ostrowski
    Acked-by: David Miller
    Acked-by: Geert Uytterhoeven
    Acked-by: Oleg Verych
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

08 Feb, 2007

2 commits


07 Feb, 2007

1 commit


11 Dec, 2006

1 commit

  • The as-instr/ld-option need to create temporary files, but create them in the
    output directory, when compiling external modules. Reformat them a bit and
    use $(CC) instead of $(AS) as the former is used by kbuild to assemble files.

    Signed-off-by: Roman Zippel
    Cc: Andi Kleen
    Cc: Jan Beulich
    Cc: Sam Ravnborg
    Cc:
    Cc: Horst Schirmeier
    Cc: Daniel Drake
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roman Zippel
     

26 Sep, 2006

2 commits

  • Current gcc generates calls not jumps to noreturn functions. When that happens the
    return address can point to the next function, which confuses the unwinder.

    This patch works around it by marking asynchronous exception
    frames in contrast normal call frames in the unwind information. Then teach
    the unwinder to decode this.

    For normal call frames the unwinder now subtracts one from the address which avoids
    this problem. The standard libgcc unwinder uses the same trick.

    It doesn't include adjustment of the printed address (i.e. for the original
    example, it'd still be kernel_math_error+0 that gets displayed, but the
    unwinder wouldn't get confused anymore.

    This only works with binutils 2.6.17+ and some versions of H.J.Lu's 2.6.16
    unfortunately because earlier binutils don't support .cfi_signal_frame

    [AK: added automatic detection of the new binutils and wrote description]

    Signed-off-by: Jan Beulich
    Signed-off-by: Andi Kleen

    Jan Beulich
     
  • ... instead of using a CONFIG option. The config option still controls
    if the resulting executable actually has unwind information.

    This is useful to prevent compilation errors when users select
    CONFIG_STACK_UNWIND on old binutils and also allows to use
    CFI in the future for non kernel debugging applications.

    Cc: jbeulich@novell.com
    Cc: sam@ravnborg.org

    Signed-off-by: Andi Kleen

    Andi Kleen
     

25 Sep, 2006

2 commits

  • 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

    Cc: Milton Miller
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Consistently decide when to rebuild a target across all of
    if_changed, if_changed_dep, if_changed_rule.
    PHONY targets are now treated alike (ignored) for all targets

    While add it make Kbuild.include almost readable by factoring out a few
    bits to some common variables and reuse this in Makefile.build.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

01 Aug, 2006

2 commits

  • The possibility to specify an optional parameter did not work out as
    expected and it was not used - so remove the possibility.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • The latest toolchains can produce a new ELF section in DSOs and
    dynamically-linked executables. The new section ".gnu.hash" replaces
    ".hash", and allows for more efficient runtime symbol lookups by the
    dynamic linker. The new ld option --hash-style={sysv|gnu|both} controls
    whether to produce the old ".hash", the new ".gnu.hash", or both. In some
    new systems such as Fedora Core 6, gcc by default passes --hash-style=gnu
    to the linker, so that a standard invocation of "gcc -shared" results in
    producing a DSO with only ".gnu.hash". The new ".gnu.hash" sections need
    to be dealt with the same way as ".hash" sections in all respects; only the
    dynamic linker cares about their contents. To work with older dynamic
    linkers (i.e. preexisting releases of glibc), a binary must have the old
    ".hash" section. The --hash-style=both option produces binaries that a new
    dynamic linker can use more efficiently, but an old dynamic linker can
    still handle.

    The new section runs afoul of the custom linker scripts used to build vDSO
    images for the kernel. On ia64, the failure mode for this is a boot-time
    panic because the vDSO's PT_IA_64_UNWIND segment winds up ill-formed.

    This patch addresses the problem in two ways.

    First, it mentions ".gnu.hash" in all the linker scripts alongside ".hash".
    This produces correct vDSO images with --hash-style=sysv (or old tools),
    with --hash-style=gnu, or with --hash-style=both.

    Second, it passes the --hash-style=sysv option when building the vDSO
    images, so that ".gnu.hash" is not actually produced. This is the most
    conservative choice for compatibility with any old userland. There is some
    concern that some ancient glibc builds (though not any known old production
    system) might choke on --hash-style=both binaries. The optimizations
    provided by the new style of hash section do not really matter for a DSO
    with a tiny number of symbols, as the vDSO has. If someone wants to use
    =gnu or =both for their vDSO builds and worry less about that
    compatibility, just change the option and the linker script changes will
    make any choice work fine.

    Signed-off-by: Roland McGrath
    Cc: "Luck, Tony"
    Cc: Kyle McMartin
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Jeff Dike
    Cc: Andi Kleen
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roland McGrath
     

01 Jul, 2006

1 commit

  • 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 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
     

27 Jun, 2006

1 commit

  • This reverts commit e5c44fd88c146755da6941d047de4d97651404a9.

    Thanks to Daniel Ritz and Michal Piotrowski for noticing the problem.

    Daniel says:

    "[The] reason is a recent change that made modules always shows as
    module.mod. it breaks modprobe and probably many scripts..besides
    lsmod looking horrible

    stuff like this in modprobe.conf:
    install pcmcia_core /sbin/modprobe --ignore-install pcmcia_core; /sbin/modprobe pcmcia
    makes modprobe fork/exec endlessly calling itself...until oom
    interrupts it"

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

25 Jun, 2006

1 commit

  • make failed to supply the filename when using make -rR and using $(*F)
    to get target filename without extension.
    This bug was not reproduceable in small scale but using:
    $(basename $(notdir $@)) fixes it with same functionality.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

07 Apr, 2006

1 commit

  • This fix a longstanding bug where proper options was not
    passed to hostcc in case of a make O=.. build.
    This bug showed up in (not yet merged) klibc, and is not known
    to have any counterpart in-kernel.
    Fixed by moving the flags macro to Kbuild.include so it can be used
    by both Makefile.lib and Makefile.host.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

06 Mar, 2006

1 commit

  • 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
    Signed-off-by: Sam Ravnborg

    Paul Smith
     

19 Feb, 2006

3 commits

  • Noted by Olaf Hering

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • While the recent change to also escape # symbols when storing C-file
    compilation command lines was helpful, it should be in effect for all
    command lines, as much as the dollar escaping should be in effect for
    C-source compilation commands. Additionally, for better readability and
    maintenance, consolidating all the escaping (single quotes, dollars,
    and now sharps) was also desirable.

    Signed-Off-By: Jan Beulich
    Signed-off-by: Sam Ravnborg

    Jan Beulich
     
  • 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
     

07 Jan, 2006

1 commit