2016-10-06 14:56:49 +02:00
|
|
|
#!/usr/bin/perl
|
|
|
|
#
|
2017-07-12 09:23:23 -04:00
|
|
|
# Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
|
2016-10-06 14:56:49 +02:00
|
|
|
#
|
2017-07-12 09:23:23 -04:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2016-10-06 14:56:49 +02:00
|
|
|
#
|
|
|
|
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
|
|
|
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
|
|
# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
|
|
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
|
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
|
|
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
|
# PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
|
|
|
|
# build configure.am with or without libtool stuff
|
|
|
|
|
|
|
|
require 5.000;
|
|
|
|
use strict;
|
|
|
|
|
|
|
|
# general arguments
|
|
|
|
|
|
|
|
my @optionlist = ("with", "without", "verbose");
|
|
|
|
|
|
|
|
# usage
|
|
|
|
|
|
|
|
my $usage = ("Usage: perl lt.pl [with|without] [verbose]\n");
|
|
|
|
|
|
|
|
# Parse arguments
|
|
|
|
|
|
|
|
my $with = 0;
|
|
|
|
my $verbose = 0;
|
|
|
|
|
|
|
|
foreach (@ARGV) {
|
|
|
|
if (/^with$/i) {
|
|
|
|
$with = 1;
|
|
|
|
} elsif (/^without$/i) {
|
|
|
|
$with = 0;
|
|
|
|
} elsif (/^verbose$/i) {
|
|
|
|
$verbose = 1;
|
|
|
|
} else {
|
|
|
|
die $usage;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($verbose) {
|
|
|
|
if ($with) {
|
|
|
|
print STDERR "building the with libtool version\n";
|
|
|
|
} else {
|
|
|
|
print STDERR "building the without libtool version\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Perform
|
|
|
|
|
|
|
|
my $line;
|
|
|
|
my $state = "top";
|
|
|
|
my $directives = 0;
|
|
|
|
my $included = 0;
|
|
|
|
my $escaped = 0;
|
|
|
|
|
|
|
|
foreach $line (<STDIN>) {
|
|
|
|
chomp $line;
|
|
|
|
if ($line =~ /^\@BEGIN WITH LIBTOOL$/) {
|
|
|
|
if ($state eq "top") {
|
|
|
|
$state = "with";
|
|
|
|
} elsif ($state eq "with") {
|
|
|
|
die "got WITH begin in WITH context\n";
|
|
|
|
} elsif ($state eq "without") {
|
|
|
|
die "got WITH begin in WITHOUT context\n";
|
|
|
|
}
|
|
|
|
$directives += 1;
|
|
|
|
next;
|
|
|
|
} elsif ($line =~ /^\@BEGIN WITHOUT LIBTOOL$/) {
|
|
|
|
if ($state eq "top") {
|
|
|
|
$state = "without";
|
|
|
|
} elsif ($state eq "with") {
|
|
|
|
die "got WITHOUT begin in WITH context\n";
|
|
|
|
} elsif ($state eq "without") {
|
|
|
|
die "got WITHOUT begin in WITHOUT context\n";
|
|
|
|
}
|
|
|
|
$directives += 1;
|
|
|
|
next;
|
|
|
|
} elsif ($line =~ /^\@END WITH LIBTOOL$/) {
|
|
|
|
if ($state eq "with") {
|
|
|
|
$state = "top";
|
|
|
|
} elsif ($state eq "top") {
|
|
|
|
die "got WITH end outside context\n";
|
|
|
|
} elsif ($state eq "without") {
|
|
|
|
die "got WITH end in WITHOUT context\n";
|
|
|
|
}
|
|
|
|
$directives += 1;
|
|
|
|
next;
|
|
|
|
} elsif ($line =~ /^\@END WITHOUT LIBTOOL$/) {
|
|
|
|
if ($state eq "without") {
|
|
|
|
$state = "top";
|
|
|
|
} elsif ($state eq "top") {
|
|
|
|
die "got WITHOUT end outside context\n";
|
|
|
|
} elsif ($state eq "with") {
|
|
|
|
die "got WITHOUT end in WITH context\n";
|
|
|
|
}
|
|
|
|
$directives += 1;
|
|
|
|
next;
|
|
|
|
} elsif ($line =~ /^@/) {
|
|
|
|
die "git unknown directive '$line'\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($state eq "with") {
|
|
|
|
if ($with) {
|
|
|
|
$included += 1;
|
|
|
|
} else {
|
|
|
|
$escaped += 1;
|
|
|
|
next;
|
|
|
|
}
|
|
|
|
} elsif ($state eq "without") {
|
|
|
|
if ($with) {
|
|
|
|
$escaped += 1;
|
|
|
|
next;
|
|
|
|
} else {
|
|
|
|
$included += 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
print $line. "\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($verbose) {
|
|
|
|
print STDERR "directives: $directives\n";
|
|
|
|
print STDERR "included: $included\n";
|
|
|
|
print STDERR "escaped: $escaped\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
exit 0;
|