• Al Viro's avatar
    [kbuild] handle exports in lib-y objects reliably · 7f2084fa
    Al Viro authored
    Collect the symbols exported by anything that goes into lib.a and
    add an empty object (lib-exports.o) with explicit undefs for each
    of those to obj-y.
    
    That allows to relax the rules regarding the use of exports in
    lib-* objects - right now an object with export can be in lib-*
    only if we are guaranteed that there always will be users in
    built-in parts of the tree, otherwise it needs to be in obj-*.
    As the result, we have an unholy mix of lib- and obj- in lib/Makefile
    and (especially) in arch/*/lib/Makefile.  Moreover, a change in
    generic part of the kernel can lead to mysteriously missing exports
    on some configs.  With this change we don't have to worry about
    that anymore.
    
    One side effect is that built-in.o now pulls everything with exports
    from the corresponding lib.a (if such exists).  That's exactly what
    we want for linking vmlinux and fortunately it's almost the only thing
    built-in.o is used in.  arch/ia64/hp/sim/boot/bootloader is the only
    exception and it's easy to get rid of now - just turn everything in
    arch/ia64/lib into lib-* and don't bother with arch/ia64/lib/built-in.o
    anymore.
    
    [AV: stylistic fix from Michal folded in]
    Acked-by: default avatarMichal Marek <mmarek@suse.cz>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    7f2084fa
Makefile 1.31 KB