mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-28 21:07:43 +00:00
134 lines
3.1 KiB
Perl
134 lines
3.1 KiB
Perl
|
#!/usr/bin/perl
|
||
|
#
|
||
|
# Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC")
|
||
|
#
|
||
|
# Permission to use, copy, modify, and/or distribute this software for any
|
||
|
# purpose with or without fee is hereby granted, provided that the above
|
||
|
# copyright notice and this permission notice appear in all copies.
|
||
|
#
|
||
|
# 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;
|