#! /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;