29 Apr, 2011

1 commit

  • There is an increasing amount of header files
    shared between individual architectures in asm-generic.
    To avoid a lot of dummy wrapper files that just
    include the corresponding file in asm-generic provide
    some basic support in kbuild for this.

    With the following patch an architecture can maintain
    a list of files in the file arch/$(ARCH)/include/asm/Kbuild

    To use a generic file just add:

    generic-y +=

    For each file listed kbuild will generate the necessary
    wrapper in arch/$(ARCH)/include/generated/asm.

    When installing userspace headers a wrapper is likewise created.

    The original inspiration for this came from the unicore32
    patchset - although a different method is used.

    The patch includes several improvements from Arnd Bergmann.
    Michael Marek contributed Makefile.asm-generic.

    Remis Baima did an intial implementation along to achive
    the same - see https://patchwork.kernel.org/patch/13352/

    Signed-off-by: Sam Ravnborg
    Acked-by: Guan Xuetao
    Tested-by: Guan Xuetao
    Acked-by: Arnd Bergmann
    Cc: Remis Lima Baima
    Signed-off-by: Michal Marek

    Sam Ravnborg
     

15 Aug, 2010

1 commit


10 Jun, 2009

1 commit

  • I'm trying to install kernel headers to build a cross-toolchain, but got
    the following:

    make ARCH=arm
    INSTALL_HDR_PATH=/work/psl/eldk-builds/arm-2009-04-21/work/var/tmp/crosstool-0.43-3-root/usr/crosstool/gcc-4.2.2-glibc-20070515T2025-eldk/
    +arm-linux-gnueabi/arm-linux-gnueabi/
    headers_check
    ...
    CHECK include/linux/raid (2 files)
    CHECK include/linux/spi (1 files)
    CHECK include/linux/sunrpc (1 files)
    CHECK include/linux/tc_act (6 files)
    CHECK include/linux/tc_ematch (4 files)
    CHECK include/linux/usb (8 files)
    make[2]: execvp: /bin/sh: Argument list too long
    make[2]: ***
    [/work/psl/eldk-builds/arm-2009-04-21/work/var/tmp/crosstool-0.43-3-root/usr/crosstool/gcc-4.2.2-glibc-20070515T2025-eldk/arm-linux-gnueab
    +i/arm-linux-gnueabi//include/linux/.check]
    Error 127
    make[1]: *** [linux] Error 2
    make: *** [headers_check] Error 2
    ->

    Introduce use of xargs to fix this.

    Signed-off-by: Sergei Poselenov
    Cc: Wolfgang Denk
    Signed-off-by: Sam Ravnborg

    Sergei Poselenov
     

11 Apr, 2009

1 commit

  • xtensa and arm have asked for a possibility to export headers
    and locate them in a specific directory when exported.
    Introduce destiantion-y to support this.

    This patch in additiona adds some limited
    documentation for the variables used for exported headers.

    Signed-off-by: Sam Ravnborg
    Cc: Oskar Schirmer
    Cc: Mikael Starvik

    Sam Ravnborg
     

26 Jul, 2008

6 commits

  • We see some header files that are selected dependent on
    the actual architecture so force a reinstallation
    of all header files when the arch changes.
    This slows down "make headers_check_all" but then
    we better reflect reality.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Move the core functionality of headers_install
    and headers_check to two small perl scripts.
    The makefile is adapted to use the perl scrip and
    changed to operate on all files in a directory.
    So if one file is changed then all files in the
    directory is processed.

    perl were chosen for the helper scripts because this
    is pure text processing which perl is good at and
    especially the headers_check.pl script are expected to
    see changes / new checks implmented.

    The speed is ~300% faster on this box.
    And the output generated to the screen is now down to
    two lines per directory (one for install, one for check)
    so it is easier to scroll back after a kernel build.

    The perl scripts has been brought to sanity by patient
    feedback from: Vegard Nossum

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Move it to the top-level file to decide if we install/check
    the generic headers or the arch specific headers.

    This revealed a long standing bug where "make headers_check_all"
    relied on the files in asm/ for the current architecture.
    So make headers_check_all is now broken by this commit.

    In addition:

    o add a simpler way to detect if an arch support
    exporting header files.

    o add 'set -e;' so we error out early if
    make headers_check_all fails.

    o add sparc64 and cris to arch we do not process
    in make headers_*_all because:

    sparc64 - use sparc to export headers
    cris - is know seriously broken

    Includes suggestions from: David Woodhouse
    .

    Signed-off-by: Sam Ravnborg
    Cc: David Woodhouse

    Sam Ravnborg
     
  • No functional changes just improved readability

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • ALTARCH is no longer used by any arch(*) so drop
    support for this from Makefile.headerinst

    Dropping ALTARCH support simplifies Makefile.headerinst

    (*) sparc64 uses it but work is ongoing to drop it
    and no furter usage is planned.

    Signed-off-by: Sam Ravnborg
    Cc: David Woodhouse
    Cc: David Miller

    Sam Ravnborg
     
  • unifdef utility is fast enough to warrant that we always
    run the scripts through unifdef.

    This patch runs all headers listed with header-y and unifdef-y
    through unifdef.
    Next step is to drop unifdef-y in all Kbuild files and
    that can now be done in smaller steps.

    Signed-off-by: Sam Ravnborg
    Cc: David Woodhouse
    Cc: Adrian Bunk

    Sam Ravnborg
     

17 Jul, 2007

1 commit

  • The sed expression used at the moment in scripts/Makefile.headersinst
    relies on the (handy) GNU extension where you can escape ERE's in an
    otherwise BRE without using the GNU -r option. The following patch
    replaces this "\+" usage with a functionally equivalent POSIX BRE compliant
    "\{1,\}". Tested with `make headers_install` against blackfin/x86_64/i386
    targets.

    Stupid whiny OS X users and their crappy sed ;)

    Signed-off-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Mike Frysinger
     

07 Jul, 2007

1 commit

  • A bug in headers_install for ARCH=x86_64 yields an asm/ directory full of
    files all of which are using the same #ifdef guard, "__ASM_STUB_" with no
    postfix. So the second and later asm files #included in the same C file
    (often through standard headers like ioctl.h) yields no symbols.

    Strangeness with the Ubuntu 'tell me if I support something that's not
    explcitly mentioned in POSIX, and I'll strip it out' shell, I believe.

    We don't need the 'export' but we do need a semicolon at the end of the
    FNAME line:

    Signed-off-by: David Woodhouse
    Signed-off-by: Rob Landley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

22 May, 2007

1 commit

  • This should make it stop immediately after printing the _helpful_ error
    message, rather than continuing to spit out many pages more of 'CHECK
    include/linux/foo.h' before eventually coming to a halt with something
    less obvious.

    Now I get this...
    CHECK include/linux/smb_fs.h
    /shiny/git/linux-2.6/usr/include/linux/smb_fs.h requires linux/jiffies.h, which does not exist in exported headers
    make[2]: *** [/shiny/git/linux-2.6/usr/include/linux/.check.smb_fs.h] Error 1
    make[1]: *** [linux] Error 2
    make: *** [headers_check] Error 2

    Signed-off-by-if-Sam-says-so: David Woodhouse
    [ Sam had better say so! This made me waste way too much time. - Linus]
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

31 Jan, 2007

1 commit

  • The current filename->define translation does not scrub dashes so when
    creating stub defines for like asm-x86_64/ptrace-abi.h, we get: #define
    __ASM_STUB_PTRACE-ABI_H

    gcc just hates that sort of thing :)

    trivial attached patch adds - to the tr list to scrub it to _

    Signed-off-by: Mike Frysinger
    Cc: David Woodhouse
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     

17 Oct, 2006

1 commit

  • Fix this:

    make[3]: *** No rule to make target
    `/mnt/md0/devel/linux-git/include/linux/version.h', needed by
    `/mnt/md0/devel/linux-git-obj/usr/include/linux/version.h'. Stop.
    make[2]: *** [linux] Error 2
    make[1]: *** [headers_install] Error 2

    Signed-off-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

04 Oct, 2006

1 commit


25 Sep, 2006

3 commits

  • * git://git.infradead.org/~dwmw2/khdrs-2.6:
    New 'make headers_install_all' target.
    Use dependencies for 'make headers_install'.
    [S390] Unexport , export in its place.
    Remove dead netfilter_logging.h from include/linux/Kbuild
    Remove offsetof() from user-visible
    Clean up exported headers on CRIS
    Fix v850 exported headers
    Don't advertise (or allow) headers_{install,check} where inappropriate.
    Remove UML header export
    Remove ARM26 header export.
    Fix H8300 exported headers.
    Fix m68knommu exported headers
    Fix exported headers for SPARC, SPARC64
    Fix 'make headers_check' on m32r
    Fix 'make headers_check' on sh64
    Fix 'make headers_check' on sh
    [HEADERS] Fix ARM 'make headers_check'

    Initial pass of manual conflict resolution in top-level Makefile over
    conflicting build rule and headers_install changes.

    Linus Torvalds
     
  • Let headers_install use in-kernel unifdef

    Signed-off-by: Sam Ravnborg

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

    David Woodhouse
     

17 Sep, 2006

1 commit

  • We generate an which includes either or
    as appropriate. But we were doing this dependent on
    whether the file in question existed in the _unexported_ tree, not the
    exported tree. So if a file was exported to userspace in one asm- directory
    but not the other, the generated file in asm/ was incorrect.

    This only changed the failure mode if it _was_ included from a nice #error to
    a less explicable #include failure -- but it also gave false errors in 'make
    headers_check' output. Fix it by looking in the right place instead.

    Signed-off-by: David Woodhouse
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

18 Jun, 2006

2 commits

  • 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

    David Woodhouse
     
  • 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
    Hacked about by David Woodhouse
    Reviewed and cleaned up by Sam Ravnborg

    Signed-off-by: David Woodhouse

    David Woodhouse