|
@@ -1,195 +0,0 @@
|
|
|
-Add roken-h-process.pl from:
|
|
|
-https://raw.github.com/heimdal/heimdal/master/cf/roken-h-process.pl
|
|
|
-It's required for cross-compiling and missing from release tarballs:
|
|
|
-http://kerberos.996246.n3.nabble.com/Missing-roken-h-process-pl-when-cross-compiling-v1-5-2-td38806.html
|
|
|
-
|
|
|
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
|
-
|
|
|
-diff -Nura heimdal-1.5.3.orig/cf/roken-h-process.pl heimdal-1.5.3/cf/roken-h-process.pl
|
|
|
---- heimdal-1.5.3.orig/cf/roken-h-process.pl 1969-12-31 21:00:00.000000000 -0300
|
|
|
-+++ heimdal-1.5.3/cf/roken-h-process.pl 2013-12-18 11:32:38.157625167 -0300
|
|
|
-@@ -0,0 +1,184 @@
|
|
|
-+#!/usr/bin/perl
|
|
|
-+
|
|
|
-+require 'getopts.pl';
|
|
|
-+
|
|
|
-+my $debug = 0;
|
|
|
-+
|
|
|
-+Getopts('dc:p:o:') || die "foo";
|
|
|
-+
|
|
|
-+if ($opt_d) {
|
|
|
-+ $debug = 1;
|
|
|
-+}
|
|
|
-+
|
|
|
-+die "missing arg" if (!defined $opt_c || !defined $opt_p || !defined $opt_o);
|
|
|
-+
|
|
|
-+my %defines;
|
|
|
-+my $IN;
|
|
|
-+my $OUT;
|
|
|
-+
|
|
|
-+print "parse config.h\n" if ($debug);
|
|
|
-+
|
|
|
-+open IN, $opt_c || die "failed open ${opt_c}";
|
|
|
-+
|
|
|
-+my @nesting;
|
|
|
-+
|
|
|
-+push @nesting, 1;
|
|
|
-+
|
|
|
-+while (<IN>) {
|
|
|
-+ if (m/\s*#ifdef\s+(.*)/) {
|
|
|
-+ my $var = $1;
|
|
|
-+ if (defined $defines{$var}) {
|
|
|
-+ push @nesting, 1;
|
|
|
-+ } else {
|
|
|
-+ push @nesting, 0;
|
|
|
-+ }
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#ifndef\s+(.*)/) {
|
|
|
-+ my $var = $1;
|
|
|
-+ if (defined $defines{$var}) {
|
|
|
-+ push @nesting, 0;
|
|
|
-+ } else {
|
|
|
-+ push @nesting, 1;
|
|
|
-+ }
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#else/) {
|
|
|
-+ my $var = pop @nesting;
|
|
|
-+ $var = !$var;
|
|
|
-+ push @nesting, $var;
|
|
|
-+ next;
|
|
|
-+ } elsif ($nesting[$#nesting] and m/\s*#define\s+(\w+)\s+(\S+)/) {
|
|
|
-+ my $res = $2;
|
|
|
-+ $res = 1 if (!defined $res);
|
|
|
-+ $defines{$1} = $res;
|
|
|
-+ }
|
|
|
-+}
|
|
|
-+
|
|
|
-+close IN;
|
|
|
-+
|
|
|
-+if ($debug) {
|
|
|
-+ foreach my $i (keys %defines) {
|
|
|
-+ print "k: $i v: $defines{$i}\n";
|
|
|
-+ }
|
|
|
-+}
|
|
|
-+
|
|
|
-+open IN, "$opt_p" || die "failed open ${opt_p}";
|
|
|
-+open OUT, ">$opt_o" || die "failed open ${opt_o}";
|
|
|
-+
|
|
|
-+print "parse roken.h.in\n" if ($debug);
|
|
|
-+
|
|
|
-+print OUT "/* This is an OS dependent, generated file */\n";
|
|
|
-+print OUT "\n";
|
|
|
-+print OUT "\n";
|
|
|
-+print OUT "#ifndef __ROKEN_H__\n";
|
|
|
-+print OUT "#define __ROKEN_H__\n";
|
|
|
-+print OUT "\n";
|
|
|
-+
|
|
|
-+@nesting = (1);
|
|
|
-+
|
|
|
-+while (<IN>) {
|
|
|
-+ if (m/\s*#ifdef\s+(.*)/) {
|
|
|
-+ my $var = $1;
|
|
|
-+ if (defined $defines{$var}) {
|
|
|
-+ push @nesting, 1;
|
|
|
-+ } else {
|
|
|
-+ push @nesting, 0;
|
|
|
-+ }
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#ifndef\s+(.*)/) {
|
|
|
-+ my $var = $1;
|
|
|
-+ if (defined $defines{$var}) {
|
|
|
-+ push @nesting, 0;
|
|
|
-+ } else {
|
|
|
-+ push @nesting, 1;
|
|
|
-+ }
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#if\s+(.*)/) {
|
|
|
-+ my $res = parse_if($1);
|
|
|
-+ print "line = $res: $1\n" if ($debug);
|
|
|
-+ push @nesting, $res;
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#elif\s+(.*)/) {
|
|
|
-+ my $res = pop @nesting;
|
|
|
-+ if ($res gt 0) {
|
|
|
-+ $res = -1;
|
|
|
-+ } else {
|
|
|
-+ my $res = parse_if($1);
|
|
|
-+ }
|
|
|
-+ push @nesting, $res;
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#else/) {
|
|
|
-+ my $var = pop @nesting;
|
|
|
-+ $var = !$var;
|
|
|
-+ push @nesting, $var;
|
|
|
-+ next;
|
|
|
-+ } elsif (m/\s*#endif/) {
|
|
|
-+ pop @nesting;
|
|
|
-+ next;
|
|
|
-+ }
|
|
|
-+ print "line: $_\n" if ($debug);
|
|
|
-+ print "nesting dep $#{nesting}\n" if ($debug);
|
|
|
-+ my $i = 0, $t = 1;
|
|
|
-+ while ($i le $#nesting) {
|
|
|
-+ $t = 0 if ($nesting[$i] le 0);
|
|
|
-+ print "nesting $i val $nesting[$i] -> $t\n" if ($debug);
|
|
|
-+ $i++;
|
|
|
-+ }
|
|
|
-+ if ($t) {
|
|
|
-+ print OUT;
|
|
|
-+ }
|
|
|
-+}
|
|
|
-+
|
|
|
-+print OUT "\n";
|
|
|
-+print OUT "#endif /* __ROKEN_H__ */\n";
|
|
|
-+
|
|
|
-+
|
|
|
-+close IN;
|
|
|
-+
|
|
|
-+exit 0;
|
|
|
-+
|
|
|
-+sub parse_if
|
|
|
-+{
|
|
|
-+ my ($neg, $var);
|
|
|
-+
|
|
|
-+ $_ = shift;
|
|
|
-+
|
|
|
-+ if (m/^\s*$/) {
|
|
|
-+ print "end $_\n" if ($debug);
|
|
|
-+ return 1;
|
|
|
-+ } elsif (m/^([^&]+)\&\&(.*)$/) {
|
|
|
-+ print "$1 and $2\n" if ($debug);
|
|
|
-+ return parse_if($1) and parse_if($2);
|
|
|
-+ } elsif (m/^\(([^&]+)\&\&(.*)$/) {
|
|
|
-+ print "$1 and $2\n" if ($debug);
|
|
|
-+ return parse_if($1) and parse_if($2);
|
|
|
-+ } elsif (m/^([^\|]+)\|\|(.*)$/) {
|
|
|
-+ print "$1 or $2\n" if ($debug);
|
|
|
-+ return parse_if($1) or parse_if($2);
|
|
|
-+ } elsif (m/^\s*(\!)?\s*defined\((\w+)\)/) {
|
|
|
-+ ($neg, $var) = ($1, $2);
|
|
|
-+ print "def: ${neg}-defined(${var})\n" if ($debug);
|
|
|
-+ my $res = defined $defines{$var};
|
|
|
-+ if ($neg eq "!") {
|
|
|
-+ if ($res) {
|
|
|
-+ $res = 0;
|
|
|
-+ } else {
|
|
|
-+ $res = 1;
|
|
|
-+ }
|
|
|
-+ }
|
|
|
-+ print "res: $res\n" if ($debug);
|
|
|
-+ return $res;
|
|
|
-+ } elsif (m/^\s*(\!)?(\w+)/) {
|
|
|
-+ ($neg, $var) = ($1, $2);
|
|
|
-+ print "var: $neg $var\n" if ($debug);
|
|
|
-+ my $res;
|
|
|
-+ if (defined $defines{$var}) {
|
|
|
-+ $res = $defines{$var};
|
|
|
-+ } else {
|
|
|
-+ $res = 0;
|
|
|
-+ }
|
|
|
-+ $res = ! $res if ($neg =~ m/!/);
|
|
|
-+ print "res: $res\n" if ($debug);
|
|
|
-+ return $res;
|
|
|
-+ }
|
|
|
-+ die "failed parse: $_\n";
|
|
|
-+}
|