diff options
Diffstat (limited to 'debian/clean_config_vars')
-rwxr-xr-x | debian/clean_config_vars | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/debian/clean_config_vars b/debian/clean_config_vars new file mode 100755 index 0000000..9611f9a --- /dev/null +++ b/debian/clean_config_vars @@ -0,0 +1,57 @@ +#! /usr/bin/perl + +use strict; + +my %FLAGS = { + 'CFLAGS' => $ARGV[0], + 'CPPFLAGS' => $ARGV[1], + 'LDDFLAGS' => $ARGV[2], + 'CXXFLAGS' => $ARGV[3], +}; + +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/ + || $flag =~ m/-ffile-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|CXX)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"); |