mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 06:06:47 +07:00
7712401ae9
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 <vegard.nossum@gmail.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
43 lines
1.2 KiB
Perl
43 lines
1.2 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
# headers_install prepare the listed header files for use in
|
|
# user space and copy the files to their destination.
|
|
#
|
|
# Usage: headers_install.pl odir installdir [files...]
|
|
# odir: dir to open files
|
|
# install: dir to install the files
|
|
# files: list of files to check
|
|
#
|
|
# Step in preparation for users space:
|
|
# 1) Drop all use of compiler.h definitions
|
|
# 2) Drop include of compiler.h
|
|
# 3) Drop all sections defined out by __KERNEL__ (using unifdef)
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
my ($readdir, $installdir, @files) = @ARGV;
|
|
|
|
my $unifdef = "scripts/unifdef -U__KERNEL__";
|
|
|
|
foreach my $file (@files) {
|
|
my $tmpfile = "$installdir/$file.tmp";
|
|
open(my $infile, '<', "$readdir/$file")
|
|
or die "$readdir/$file: $!\n";
|
|
open(my $outfile, '>', "$tmpfile") or die "$tmpfile: $!\n";
|
|
while (my $line = <$infile>) {
|
|
$line =~ s/([\s(])__user\s/$1/g;
|
|
$line =~ s/([\s(])__force\s/$1/g;
|
|
$line =~ s/([\s(])__iomem\s/$1/g;
|
|
$line =~ s/\s__attribute_const__\s/ /g;
|
|
$line =~ s/\s__attribute_const__$//g;
|
|
$line =~ s/^#include <linux\/compiler.h>//;
|
|
printf $outfile "%s", $line;
|
|
}
|
|
close $outfile;
|
|
close $infile;
|
|
system $unifdef . " $tmpfile > $installdir/$file";
|
|
unlink $tmpfile;
|
|
}
|
|
exit 0;
|