This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix building with -Accflags=-DDL_UNLOAD_ALL_AT_EXIT
[perl5.git] / djgpp / fixpmain
... / ...
CommitLineData
1#!perl -w
2# Fix perlmain.c under DOS (short & case insensitive filenames).
3# Called from Makefile.aperl when needed.
4# You don't need this when LFN=y.
5
6use Config;
7
8open (PERLM, '<', 'perlmain.c') or die "Can't load perlmain.c: $!";
9open (MAKEFILE, '<', 'makefile.pl') or die "Can't load makefile.pl: $!";
10undef $/;
11$perlmain=<PERLM>;
12$makefile=<MAKEFILE>;
13
14($_) = $makefile =~ /\bNAME\b.*=>\W*([\w\:]+)/; # extract module name
15$badname=join ("__",map {lc substr ($_,0,8)} split /:+/); # DOSify
16$perlmain =~ s/^.*boot_$badname.*$//gm if $badname; # delete bad lines
17
18@exts=('DynaLoader',split (" ",$Config{known_extensions}));
19for $realname (@exts)
20{
21 $dosname=join ("__",map {lc substr ($_,0,8)} split /\//,$realname);
22 $realname =~ s!/!__!g;
23 $perlmain =~ s/\bboot_$dosname\b/boot_$realname/gm;
24 $dosname =~ s/__/::/;
25 $realname =~ s/__/::/;
26 $perlmain =~ s/\b$dosname(::bootstrap)/$realname$1/gm;
27}
28
29#DynaLoader is special
30$perlmain =~ s/(DynaLoader:\:boot)strap/$1_DynaLoader/gm;
31
32open (PERLM, '>', 'perlmain.c') or die "Can't write perlmain.c: $!";
33print PERLM $perlmain;