| 1 | #!perl -w |
| 2 | use strict; |
| 3 | |
| 4 | # creates perllibst.h file for inclusion from perllib.c |
| 5 | |
| 6 | use Config; |
| 7 | |
| 8 | my @statics = split /\s+/, $Config{static_ext}; |
| 9 | open my $fh, '>', 'perllibst.h' or die "Failed to write to perllibst.h:$!"; |
| 10 | |
| 11 | my @statics1 = map {local $_=$_;s/\//__/g;$_} @statics; |
| 12 | my @statics2 = map {local $_=$_;s/\//::/g;$_} @statics; |
| 13 | print $fh "/*DO NOT EDIT\n this file is included from perllib.c to init static extensions */\n"; |
| 14 | print $fh "#ifdef STATIC1\n",(map {" \"$_\",\n"} @statics),"#undef STATIC1\n#endif\n"; |
| 15 | print $fh "#ifdef STATIC2\n",(map {" EXTERN_C void boot_$_ (pTHX_ CV* cv);\n"} @statics1),"#undef STATIC2\n#endif\n"; |
| 16 | print $fh "#ifdef STATIC3\n",(map {" newXS(\"$statics2[$_]::bootstrap\", boot_$statics1[$_], file);\n"} 0 .. $#statics),"#undef STATIC3\n#endif\n"; |
| 17 | close $fh; |