• Masahiro Yamada's avatar
    asm-generic: make more kernel-space headers mandatory · 630f289b
    Masahiro Yamada authored
    Change a header to mandatory-y if both of the following are met:
    
    [1] At least one architecture (except um) specifies it as generic-y in
        arch/*/include/asm/Kbuild
    
    [2] Every architecture (except um) either has its own implementation
        (arch/*/include/asm/*.h) or specifies it as generic-y in
        arch/*/include/asm/Kbuild
    
    This commit was generated by the following shell script.
    
    ----------------------------------->8-----------------------------------
    
    arches=$(cd arch; ls -1 | sed -e '/Kconfig/d' -e '/um/d')
    
    tmpfile=$(mktemp)
    
    grep "^mandatory-y +=" include/asm-generic/Kbuild > $tmpfile
    
    find arch -path 'arch/*/include/asm/Kbuild' |
    	xargs sed -n 's/^generic-y += \(.*\)/\1/p' | sort -u |
    while read header
    do
    	mandatory=yes
    
    	for arch in $arches
    	do
    		if ! grep -q "generic-y += $header" arch/$arch/include/asm/Kbuild &&
    			! [ -f arch/$arch/include/asm/$header ]; then
    			mandatory=no
    			break
    		fi
    	done
    
    	if [ "$mandatory" = yes ]; then
    		echo "mandatory-y += $header" >> $tmpfile
    
    		for arch in $arches
    		do
    			sed -i "/generic-y += $header/d" arch/$arch/include/asm/Kbuild
    		done
    	fi
    
    done
    
    sed -i '/^mandatory-y +=/d' include/asm-generic/Kbuild
    
    LANG=C sort $tmpfile >> include/asm-generic/Kbuild
    
    ----------------------------------->8-----------------------------------
    
    One obvious benefit is the diff stat:
    
     25 files changed, 52 insertions(+), 557 deletions(-)
    
    It is tedious to list generic-y for each arch that needs it.
    
    So, mandatory-y works like a fallback default (by just wrapping
    asm-generic one) when arch does not have a specific header
    implementation.
    
    See the following commits:
    
    def3f7ce
    a1b39bae
    
    It is tedious to convert headers one by one, so I processed by a shell
    script.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Michal Simek <michal.simek@xilinx.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Link: http://lkml.kernel.org/r/20200210175452.5030-1-masahiroy@kernel.orgSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    630f289b
Kbuild 172 Bytes