This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix compilation errors in win32.c with MinGW/gcc -xc++
[perl5.git] / makedef.pl
index cd0d3fe..0bc3862 100644 (file)
@@ -104,7 +104,7 @@ my %exportperlmalloc =
 
 my $exportperlmalloc = $ARGS{PLATFORM} eq 'os2';
 
-my $config_h = $ARGS{PLATFORM} eq 'wince' ? 'xconfig.h' : 'config.h';
+my $config_h = 'config.h';
 open(CFG, '<', $config_h) || die "Cannot open $config_h: $!\n";
 while (<CFG>) {
     $define{$1} = 1 if /^\s*\#\s*define\s+(MYMALLOC|MULTIPLICITY
@@ -235,6 +235,12 @@ if ($ARGS{PLATFORM} ne 'vms') {
     }
 }
 
+if ($ARGS{PLATFORM} ne 'win32') {
+    ++$skip{$_} foreach qw(
+                   Perl_my_setlocale
+                        );
+}
+
 unless ($define{UNLINK_ALL_VERSIONS}) {
     ++$skip{Perl_unlnk};
 }
@@ -247,6 +253,7 @@ unless ($define{'DEBUGGING'}) {
                    Perl_debstackptrs
                    Perl_pad_sv
                    Perl_pad_setsv
+                   Perl_set_padlist
                    Perl_hv_assert
                    PL_watchaddr
                    PL_watchok
@@ -414,6 +421,20 @@ unless ($define{'PERL_IMPLICIT_CONTEXT'}) {
                    Perl_my_cxt_index
                         );
 }
+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
+    # the mathoms.c file.
+    my ($file) = grep { -f } qw( mathoms.c ../mathoms.c )
+        or die "No mathoms.c file found in . or ..\n";
+    open my $mathoms, '<', $file
+        or die "Cannot open $file: $!\n";
+    while (<$mathoms>) {
+        ++$skip{$1} if /\A ( NATIVE_TO_NEED
+                           | ASCII_TO_NEED
+                           | Perl_\w+ ) \s* \( /axms;
+    }
+}
 
 unless ($define{'PERL_NEED_APPCTX'}) {
     ++$skip{PL_appctx};
@@ -447,13 +468,6 @@ unless ($define{'PERL_TRACK_MEMPOOL'}) {
     ++$skip{PL_memory_debug_header};
 }
 
-unless ($define{PERL_MAD}) {
-    ++$skip{$_} foreach qw(
-                   PL_madskills
-                   PL_xmlfp
-                        );
-}
-
 unless ($define{'MULTIPLICITY'}) {
     ++$skip{$_} foreach qw(
                    PL_interp_size
@@ -516,6 +530,11 @@ unless ($define{USE_LOCALE_NUMERIC}) {
                         );
 }
 
+unless ($define{'USE_C_BACKTRACE'}) {
+    ++$skip{Perl_get_c_backtrace_dump};
+    ++$skip{Perl_dump_c_backtrace};
+}
+
 unless ($define{HAVE_INTERP_INTERN}) {
     ++$skip{$_} foreach qw(
                    Perl_sys_intern_clear
@@ -615,6 +634,8 @@ my @layer_syms = qw(
                    Perl_PerlIO_get_cnt
                    Perl_PerlIO_get_ptr
                    Perl_PerlIO_read
+                   Perl_PerlIO_restore_errno
+                   Perl_PerlIO_save_errno
                    Perl_PerlIO_seek
                    Perl_PerlIO_set_cnt
                    Perl_PerlIO_set_ptrcnt
@@ -635,89 +656,8 @@ if ($define{'USE_PERLIO'}) {
     # of its implementation - read from a file
     push @syms, 'perlio.sym';
 
-    # This part is then dependent on how the abstraction is implemented
-    if ($define{'USE_SFIO'}) {
-       # Old legacy non-stdio "PerlIO"
-       ++$skip{$_} foreach @layer_syms;
-       ++$skip{perlsio_binmode};
-       # SFIO defines most of the PerlIO routines as macros
-       # So undo most of what $perlio_sym has just done - d'oh !
-       # Perhaps it would be better to list the ones which do exist
-       # And emit them
-       ++$skip{$_} foreach qw(
-                        PerlIO_canset_cnt
-                        PerlIO_clearerr
-                        PerlIO_close
-                        PerlIO_eof
-                        PerlIO_error
-                        PerlIO_exportFILE
-                        PerlIO_fast_gets
-                        PerlIO_fdopen
-                        PerlIO_fileno
-                        PerlIO_findFILE
-                        PerlIO_flush
-                        PerlIO_get_base
-                        PerlIO_get_bufsiz
-                        PerlIO_get_cnt
-                        PerlIO_get_ptr
-                        PerlIO_getc
-                        PerlIO_getname
-                        PerlIO_has_base
-                        PerlIO_has_cntptr
-                        PerlIO_importFILE
-                        PerlIO_open
-                        PerlIO_printf
-                        PerlIO_putc
-                        PerlIO_puts
-                        PerlIO_read
-                        PerlIO_releaseFILE
-                        PerlIO_reopen
-                        PerlIO_rewind
-                        PerlIO_seek
-                        PerlIO_set_cnt
-                        PerlIO_set_ptrcnt
-                        PerlIO_setlinebuf
-                        PerlIO_sprintf
-                        PerlIO_stderr
-                        PerlIO_stdin
-                        PerlIO_stdout
-                        PerlIO_stdoutf
-                        PerlIO_tell
-                        PerlIO_ungetc
-                        PerlIO_vprintf
-                        PerlIO_write
-                        PerlIO_perlio
-                        Perl_PerlIO_clearerr
-                        Perl_PerlIO_close
-                        Perl_PerlIO_eof
-                        Perl_PerlIO_error
-                        Perl_PerlIO_fileno
-                        Perl_PerlIO_fill
-                        Perl_PerlIO_flush
-                        Perl_PerlIO_get_base
-                        Perl_PerlIO_get_bufsiz
-                        Perl_PerlIO_get_cnt
-                        Perl_PerlIO_get_ptr
-                        Perl_PerlIO_read
-                        Perl_PerlIO_seek
-                        Perl_PerlIO_set_cnt
-                        Perl_PerlIO_set_ptrcnt
-                        Perl_PerlIO_setlinebuf
-                        Perl_PerlIO_stderr
-                        Perl_PerlIO_stdin
-                        Perl_PerlIO_stdout
-                        Perl_PerlIO_tell
-                        Perl_PerlIO_unread
-                        Perl_PerlIO_write
-                         PL_def_layerlist
-                         PL_known_layers
-                         PL_perlio
-                            );
-    }
-    else {
-       # PerlIO with layers - export implementation
-       try_symbols(@layer_syms, 'perlsio_binmode');
-    }
+    # PerlIO with layers - export implementation
+    try_symbols(@layer_syms, 'perlsio_binmode');
 } else {
        # -Uuseperlio
        # Skip the PerlIO layer symbols - although
@@ -739,6 +679,11 @@ if ($define{'USE_PERLIO'}) {
        # Remaining remnants that _may_ be functions are handled below.
 }
 
+unless ($define{'USE_QUADMATH'}) {
+  ++$skip{Perl_quadmath_format_needed};
+  ++$skip{Perl_quadmath_format_single};
+}
+
 ###############################################################################
 
 # At this point all skip lists should be completed, as we are about to test
@@ -769,12 +714,9 @@ if ($define{'USE_PERLIO'}) {
 foreach (@syms) {
     my $syms = $ARGS{TARG_DIR} . $_;
     open my $global, '<', $syms or die "failed to open $syms: $!\n";
-    # Functions already have a Perl_ prefix
-    # Variables need a PL_ prefix
-    my $prefix = $syms =~ /var\.sym$/i ? 'PL_' : '';
     while (<$global>) {
        next unless /^([A-Za-z].*)/;
-       my $symbol = "$prefix$1";
+       my $symbol = "$1";
        ++$export{$symbol} unless exists $skip{$symbol};
     }
 }
@@ -805,9 +747,7 @@ try_symbols(qw(
                    PerlIO_getpos
                    PerlIO_init
                    PerlIO_setpos
-                   PerlIO_sprintf
                    PerlIO_tmpfile
-                   PerlIO_vsprintf
             ));
 
 if ($ARGS{PLATFORM} eq 'win32') {