diff options
Diffstat (limited to 'debian/clean_config_vars')
-rwxr-xr-x | debian/clean_config_vars | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/debian/clean_config_vars b/debian/clean_config_vars new file mode 100755 index 0000000..f88ab3c --- /dev/null +++ b/debian/clean_config_vars @@ -0,0 +1,60 @@ +#! /usr/bin/perl + +use strict; + +my %FLAGS = { + 'CFLAGS' => $ARGV[0], + 'CPPFLAGS' => $ARGV[1], + 'LDDFLAGS' => $ARGV[2], +}; + + +sub clean_and_deduplicate +{ + my $arg = shift; + my $return_flags = ""; + my @flags = split(/\s+/, $arg); + my %seen = (); + my @flags = grep { ! $seen{ $_ }++ } @flags; + foreach my $flag (@flags) + { + #print("FLAG: $flag\n"); + $return_flags .= "$flag " unless + $flag =~ m/PLATFORM/ || + $flag =~ m/-DBUILD_DATETIME/ || + $flag =~ m/-fdebug-prefix-map/; + } + return $return_flags; +} + +chdir("debian/tmp/usr/share/apache2/build/") || die("$1"); + +open(CONFIG_VARS, "<", "config_vars.mk") || die("config_vars.mk: $!"); +open(TMP_CONFIG_VARS, ">", "tmp_config_vars.mk") || die("tmp_config_vars.mk: $1"); + + +while(my $line = <CONFIG_VARS>) +{ + chomp $line; + unless ($line =~ m/(^|_)(LD|CPP|C)FLAGS/) + { + print TMP_CONFIG_VARS "$line\n"; + } + else + { + my ($flag, $value) = split(/\s*=\s*/, $line, 2); + if (exists $FLAGS{$flag}) + { + $value .= ' ' . $FLAGS{$flag}; + } + my $mangled = clean_and_deduplicate($value); + print "mangle: $flag: '$value' => '$mangled'\n"; + printf TMP_CONFIG_VARS "%s = %s\n", $flag, $mangled; + } +} + +close(CONFIG_VARS); +close(TMP_CONFIG_VARS); + +unlink("config_vars.mk") || die("unlink: config_vars.mk: $1"); +rename("tmp_config_vars.mk", "config_vars.mk") || die("rename: tmp_config_vars.mk: $1"); |