#!/usr/bin/env perl
#
-# Copyright © 2011-2012 Nick Bowler
+# Copyright © 2011-2014 Nick Bowler
#
# Prepare the Gnulib tree for inclusion into a non-recursive automake build.
# While the output of gnulib-tool is "include"-able if the --makefile-name
# There is NO WARRANTY, to the extent permitted by law.
use strict;
-use List::Compare;
use Getopt::Long;
my $output = undef;
open STDIN, "<", $input or die "$input: $!\n" if (defined $input);
my $printed_header = 0;
-my (%allvars, %sourcevars);
my @cleanfiles;
+# Hashes to record make variables used in the automake source. The allvars
+# hash contains variables actually assigned in the Makefile, sourcevars
+# contains variables used as filenames. Keys are the variable name, and
+# the value is always set to 1.
+my (%allvars, %sourcevars);
+
sub drop {
undef $_;
next;
.PHONY: # Automake code follows
# This trick should define gnulib_orderonly to | iff we're using GNU make.
-gnulib_have_orderonly = $(findstring order-only,$(.FEATURES))
+gnulib_make_features = $(.FEATURES)
+gnulib_have_orderonly = $(findstring order-only,$(gnulib_make_features))
gnulib_orderonly = $(gnulib_have_orderonly:order-only=|)
gnulib_core_headers =
gnulib_raw_headers = $(gnulib_core_headers)
EOF
print @cleanfiles;
-# Some filenames are AC_SUBSTed by the Gnulib macros, and thus we need to
-# prepend lib/ if and only if they're not empty. Unfortunately, make is not
-# powerful to do this, so we need to put this transformation into configure
-# itself by defining a new autoconf macro.
-
-my $lc = List::Compare->new('-u', '-a', \%sourcevars, \%allvars);
-my @vars = $lc->get_unique;
-
print <<'EOF';
if FALSE
], [dnl M4 code follows
])
EOF
-foreach (@vars) {
- print "$_=\${$_:+lib/\$$_}\n";
+# Some filenames are AC_SUBSTed by the Gnulib macros, and thus we need to
+# prepend lib/ if and only if they're not empty. Unfortunately, make is not
+# powerful to do this, so we need to put this transformation into configure
+# itself by defining a new autoconf macro.
+
+foreach (keys %sourcevars) {
+ print "$_=\${$_:+lib/\$$_}\n" unless $allvars{$_};
}
print <<'EOF';