Porting/expand-macro.pl needs to avoid "macro redefined" errors.
authorNicholas Clark <nick@ccl4.org>
Wed, 7 Dec 2011 10:26:29 +0000 (11:26 +0100)
committerNicholas Clark <nick@ccl4.org>
Wed, 7 Dec 2011 10:26:29 +0000 (11:26 +0100)
In the C code that Porting/expand-macro.pl generates, it #includes the
header containing the macro, to ensure that the macro definition is seen.
This was skipped for perl.h and EXTERN.h, which it always automatically
includes. However, perl.h includes embed.h and embedvar.h and then undefines
and redefines macros in them. Hence if either header is included (again) the
compiler warns about macro redefinitions. Hence ensure that neither is
included a second time.

Porting/expand-macro.pl

index 6b33f74..f422a44 100755 (executable)
@@ -62,7 +62,9 @@ open my $out, '>', $trysource or die "Can't open $trysource: $!";
 
 my $sentinel = "$macro expands to";
 
-my %done_header;
+# These two are included from perl.h, and perl.h sometimes redefines their
+# macros. So no need to include them.
+my %done_header = ('embed.h' => 1, 'embedvar.h' => 1);
 
 sub do_header {
     my $header = shift;