Files
foc/kernel/fiasco/tool/split_config
2013-01-11 17:00:47 +01:00

69 lines
1.4 KiB
Perl
Executable File

#! /usr/bin/perl
use strict;
my $cfg_prefix = "CONFIG";
my @arch_opts = ("IA32", "ARM", "UX" ,"XARCH");
my @abi_opts = ("V2", "X0", "V4", "ABI");
my @base_opts = ("INLINE", "NDEBUG", "NO_FRAME_PTR", "FINE_GRAINED_CPUTIME",
"FFUN");
my @debug_opts = ("KDB","JDB","VMEM_ALLOC_TEST","SERIAL", "PERF_CNT");
my @compile_opts = ("VERBOSE", "MAINTAINER_MODE");
my %cfg_files = ("arch_config.cfg" => \@arch_opts,
"abi_config.cfg" => \@abi_opts,
"base_config.cfg" => \@base_opts,
"debug_config.cfg" => \@debug_opts,
"compile_config.cfg" => \@compile_opts);
my $other_opts = "other_config.cfg";
my %cfg_files_2;
my $outfile = shift;
my $outhdl;
my $other = 0;
open($outhdl,">$outfile") || die "$outfile: $!";
foreach my $cfg (keys %cfg_files)
{
my $cfgs = $cfg_files{$cfg};
for (my $i = 0; $i <= $#$cfgs; $i++)
{
$cfgs->[$i] = $cfg_prefix."_".$cfgs->[$i];
}
}
my $expr;
if ($outfile eq $other_opts)
{
$other = 1;
foreach my $cfg (keys %cfg_files)
{
my $cfgs = $cfg_files{$cfg};
if ($expr ne "")
{
$expr = join("|", ($expr, @$cfgs));
} else {
$expr = join("|", @$cfgs);
}
}
} else {
my $cfgs = $cfg_files{$outfile};
exit 0 if (!defined $cfgs) ;
$expr= join("|", @$cfgs);
}
while(<>)
{
my $written = 0;
if (/^($expr)/ xor $other)
{
print $outhdl $_;
}
}
close $outhdl;