This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta copy-editing
[perl5.git] / makedef.pl
index 0bc3862..05252cf 100644 (file)
 #    perl.imp    NetWare
 #    makedef.lis VMS
 
-BEGIN { unshift @INC, "lib" }
-use Config;
-use strict;
-
-my %ARGS = (CCTYPE => 'MSVC', TARG_DIR => '');
-
+my $fold;
+my %ARGS;
 my %define;
 
-my $fold;
+BEGIN {
+    BEGIN { unshift @INC, "lib" }
+    use Config;
+    use strict;
 
-sub process_cc_flags {
-    foreach (map {split /\s+/, $_} @_) {
-       $define{$1} = $2 // 1 if /^-D(\w+)(?:=(.+))?/;
-    }
-}
+    %ARGS = (CCTYPE => 'MSVC', TARG_DIR => '');
 
-while (@ARGV) {
-    my $flag = shift;
-    if ($flag =~ /^(?:CC_FLAGS=)?(-D\w.*)/) {
-       process_cc_flags($1);
-    } elsif ($flag =~ /^(CCTYPE|FILETYPE|PLATFORM|TARG_DIR)=(.+)$/) {
-       $ARGS{$1} = $2;
-    } elsif ($flag eq '--sort-fold') {
-       ++$fold;
+    sub process_cc_flags {
+       foreach (map {split /\s+/, $_} @_) {
+           $define{$1} = $2 // 1 if /^-D(\w+)(?:=(.+))?/;
+       }
     }
-}
-
-require "$ARGS{TARG_DIR}regen/embed_lib.pl";
 
-{
+    while (@ARGV) {
+       my $flag = shift;
+       if ($flag =~ /^(?:CC_FLAGS=)?(-D\w.*)/) {
+           process_cc_flags($1);
+       } elsif ($flag =~ /^(CCTYPE|FILETYPE|PLATFORM|TARG_DIR)=(.+)$/) {
+           $ARGS{$1} = $2;
+       } elsif ($flag eq '--sort-fold') {
+           ++$fold;
+       }
+    }
     my @PLATFORM = qw(aix win32 wince os2 netware vms test);
     my %PLATFORM;
     @PLATFORM{@PLATFORM} = ();
@@ -71,6 +68,9 @@ require "$ARGS{TARG_DIR}regen/embed_lib.pl";
     die "PLATFORM must be one of: @PLATFORM\n"
        unless exists $PLATFORM{$ARGS{PLATFORM}};
 }
+use constant PLATFORM => $ARGS{PLATFORM};
+
+require "$ARGS{TARG_DIR}regen/embed_lib.pl";
 
 # Is the following guard strictly necessary? Added during refactoring
 # to keep the same behaviour when merging other code into here.
@@ -253,6 +253,7 @@ unless ($define{'DEBUGGING'}) {
                    Perl_debstackptrs
                    Perl_pad_sv
                    Perl_pad_setsv
+                    Perl__setlocale_debug_string
                    Perl_set_padlist
                    Perl_hv_assert
                    PL_watchaddr
@@ -285,8 +286,7 @@ else {
                         );
 }
 
-unless ($define{'PERL_OLD_COPY_ON_WRITE'}
-     || $define{'PERL_NEW_COPY_ON_WRITE'}) {
+unless ($define{'PERL_COPY_ON_WRITE'}) {
     ++$skip{Perl_sv_setsv_cow};
 }
 
@@ -421,6 +421,13 @@ unless ($define{'PERL_IMPLICIT_CONTEXT'}) {
                    Perl_my_cxt_index
                         );
 }
+
+unless ($define{'PERL_OP_PARENT'}) {
+    ++$skip{$_} foreach qw(
+                   Perl_op_parent
+                );
+}
+
 if ($define{'NO_MATHOMS'}) {
     # win32 builds happen in the win32/ subdirectory, but vms builds happen
     # at the top level, so we need to look in two candidate locations for
@@ -651,33 +658,13 @@ if ($ARGS{PLATFORM} eq 'netware') {
     push(@layer_syms,'PL_def_layerlist','PL_known_layers','PL_perlio');
 }
 
-if ($define{'USE_PERLIO'}) {
-    # Export the symbols that make up the PerlIO abstraction, regardless
-    # of its implementation - read from a file
-    push @syms, 'perlio.sym';
+# Export the symbols that make up the PerlIO abstraction, regardless
+# of its implementation - read from a file
+push @syms, 'perlio.sym';
 
-    # PerlIO with layers - export implementation
-    try_symbols(@layer_syms, 'perlsio_binmode');
-} else {
-       # -Uuseperlio
-       # Skip the PerlIO layer symbols - although
-       # nothing should have exported them anyway.
-       ++$skip{$_} foreach @layer_syms;
-       ++$skip{$_} foreach qw(
-                       perlsio_binmode
-                       PL_def_layerlist
-                       PL_known_layers
-                       PL_perlio
-                       PL_perlio_debug_fd
-                       PL_perlio_fd_refcnt
-                       PL_perlio_fd_refcnt_size
-                       PL_perlio_mutex
-                            );
+# PerlIO with layers - export implementation
+try_symbols(@layer_syms, 'perlsio_binmode');
 
-       # Also do NOT add abstraction symbols from $perlio_sym
-       # abstraction is done as #define to stdio
-       # Remaining remnants that _may_ be functions are handled below.
-}
 
 unless ($define{'USE_QUADMATH'}) {
   ++$skip{Perl_quadmath_format_needed};
@@ -948,11 +935,11 @@ elsif ($ARGS{PLATFORM} eq 'vms') {
                      Perl_my_gconvert
                      Perl_my_getenv
                      Perl_my_getenv_len
-                     Perl_my_getlogin
                      Perl_my_getpwnam
                      Perl_my_getpwuid
                      Perl_my_gmtime
                      Perl_my_kill
+                     Perl_my_killpg
                      Perl_my_localtime
                      Perl_my_mkdir
                      Perl_my_sigaction
@@ -1301,10 +1288,16 @@ elsif ($ARGS{PLATFORM} eq 'netware') {
 
 my @symbols = $fold ? sort {lc $a cmp lc $b} keys %export : sort keys %export;
 foreach my $symbol (@symbols) {
-    if ($ARGS{PLATFORM} =~ /^win(?:32|ce)$/) {
-       print "\t$symbol\n";
+    if (PLATFORM eq 'win32' || PLATFORM eq 'wince') {
+       # Remembering the origin file of each symbol is an alternative to PL_ matching
+       if (substr($symbol, 0, 3) eq 'PL_') {
+           print "\t$symbol DATA\n";
+       }
+       else {
+           print "\t$symbol\n";
+       }
     }
-    elsif ($ARGS{PLATFORM} eq 'os2') {
+    elsif (PLATFORM eq 'os2') {
        printf qq(    %-31s \@%s\n),
          qq("$symbol"), $ordinal{$symbol} || ++$sym_ord;
        printf qq(    %-31s \@%s\n),
@@ -1312,7 +1305,7 @@ foreach my $symbol (@symbols) {
          $ordinal{$exportperlmalloc{$symbol}} || ++$sym_ord
          if $exportperlmalloc and exists $exportperlmalloc{$symbol};
     }
-    elsif ($ARGS{PLATFORM} eq 'netware') {
+    elsif (PLATFORM eq 'netware') {
        print "\t$symbol,\n";
     } else {
        print "$symbol\n";