X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedef.pl;h=4e4f73a833312f0fd51510e9f1f714a34b9fc289;hb=d1ca9ea32e7b8d5812a70687974b0e642057ff99;hp=d14b50374af55670506561debaef2ee0cfff212f;hpb=77304e8591c15cb2d1b3ddf232411b6eeff78dce;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedef.pl b/makedef.pl index d14b503..4e4f73a 100644 --- a/makedef.pl +++ b/makedef.pl @@ -36,6 +36,24 @@ my %PLATFORM; defined $PLATFORM || die "PLATFORM undefined, must be one of: @PLATFORM\n"; exists $PLATFORM{$PLATFORM} || die "PLATFORM must be one of: @PLATFORM\n"; +if ($PLATFORM eq 'win32' or $PLATFORM eq "aix") { + # Add the compile-time options that miniperl was built with to %define. + # On Win32 these are not the same options as perl itself will be built + # with since miniperl is built with a canned config (one of the win32/ + # config_H.*) and none of the BUILDOPT's that are set in the makefiles, + # but they do include some #define's that are hard-coded in various + # source files and header files and don't include any BUILDOPT's that + # the user might have chosen to disable because the canned configs are + # minimal configs that don't include any of those options. + my $config = `$^X -Ilib -V`; + my($options) = $config =~ /^ Compile-time options: (.*?)\n^ \S/ms; + $options =~ s/\s+/ /g; + print STDERR "Options: ($options)\n"; + foreach (split /\s+/, $options) { + $define{$_} = 1; + } +} + my %exportperlmalloc = ( Perl_malloc => "malloc", @@ -63,13 +81,13 @@ if ($PLATFORM eq 'aix') { elsif ($PLATFORM =~ /^win(?:32|ce)$/ || $PLATFORM eq 'netware') { $CCTYPE = "MSVC" unless defined $CCTYPE; foreach ($thrdvar_h, $intrpvar_h, $perlvars_h, $global_sym, - $pp_sym, $globvar_sym, $perlio_sym) { + $pp_sym, $globvar_sym, $perlio_sym) { s!^!..\\!; } } elsif ($PLATFORM eq 'MacOS') { foreach ($thrdvar_h, $intrpvar_h, $perlvars_h, $global_sym, - $pp_sym, $globvar_sym, $perlio_sym) { + $pp_sym, $globvar_sym, $perlio_sym) { s!^!::!; } } @@ -81,6 +99,9 @@ unless ($PLATFORM eq 'win32' || $PLATFORM eq 'wince' || $PLATFORM eq 'MacOS' || $_ = $1; $define{$1} = 1 while /-D(\w+)/g; } + if (/^(d_(?:mmap|sigaction))='(.+)'$/) { + $define{$1} = $2; + } if ($PLATFORM eq 'os2') { $CONFIG_ARGS = $1 if /^config_args='(.+)'$/; $ARCHNAME = $1 if /^archname='(.+)'$/; @@ -130,8 +151,9 @@ if ($define{USE_ITHREADS} && $PLATFORM ne 'win32' && $^O ne 'darwin') { my $sym_ord = 0; +print STDERR "Defines: (" . join(' ', sort keys %define) . ")\n"; + if ($PLATFORM =~ /^win(?:32|ce)$/) { - warn join(' ',keys %define)."\n"; ($dll = ($define{PERL_DLL} || "perl59")) =~ s/\.dll$//i; print "LIBRARY $dll\n"; print "DESCRIPTION 'Perl interpreter'\n"; @@ -233,6 +255,7 @@ if ($PLATFORM eq 'win32') { PL_timesbuf main Perl_ErrorNo + Perl_GetVars Perl_do_exec3 Perl_do_ipcctl Perl_do_ipcget @@ -309,6 +332,7 @@ if ($PLATFORM eq 'wince') { win32_spawnvp main Perl_ErrorNo + Perl_GetVars Perl_do_exec3 Perl_do_ipcctl Perl_do_ipcget @@ -347,6 +371,7 @@ elsif ($PLATFORM eq 'aix') { skip_symbols([qw( Perl_dump_fds Perl_ErrorNo + Perl_GetVars Perl_my_bcopy Perl_my_bzero Perl_my_chsize @@ -447,6 +472,7 @@ elsif ($PLATFORM eq 'os2') { } elsif ($PLATFORM eq 'MacOS') { skip_symbols [qw( + Perl_GetVars PL_cryptseen PL_cshlen PL_cshname @@ -488,6 +514,7 @@ elsif ($PLATFORM eq 'netware') { PL_timesbuf main Perl_ErrorNo + Perl_GetVars Perl_do_exec3 Perl_do_ipcctl Perl_do_ipcget @@ -564,6 +591,12 @@ unless ($define{'DEBUGGING'}) { )]; } +if ($define{'PERL_IMPLICIT_CONTEXT'}) { + skip_symbols [qw( + PL_sig_sv + )]; +} + if ($define{'PERL_IMPLICIT_SYS'}) { skip_symbols [qw( Perl_getenv_len @@ -585,7 +618,7 @@ else { )]; } -unless ($define{'PERL_COPY_ON_WRITE'}) { +unless ($define{'PERL_OLD_COPY_ON_WRITE'}) { skip_symbols [qw( Perl_sv_setsv_cow Perl_sv_release_IVX @@ -629,27 +662,9 @@ else { )]; } -if ($define{'PERL_MALLOC_WRAP'}) { - emit_symbols [qw( - PL_memory_wrap - )]; -} - -unless ($define{'HAS_MMAP'}) { +unless ($define{'PERL_MALLOC_WRAP'}) { skip_symbols [qw( - PL_mmap_page_size - )]; -} - -unless ($define{'HAS_TIMES'} || $define{'PERL_NEED_TIMESBASE'}) { - skip_symbols [qw( - PL_timesbase - )]; -} - -unless ($define{'PERL_NEED_APPCTX'}) { - skip_symbols [qw( - PL_appctx + PL_memory_wrap )]; } @@ -690,6 +705,8 @@ unless ($define{'USE_ITHREADS'}) { unless ($define{'USE_ITHREADS'}) { skip_symbols [qw( PL_ptr_table + PL_pte_root + PL_pte_arenaroot PL_op_mutex PL_regex_pad PL_regex_padav @@ -708,6 +725,7 @@ unless ($define{'USE_ITHREADS'}) { Perl_re_dup Perl_sv_dup Perl_rvpv_dup + Perl_hek_dup Perl_sys_intern_dup Perl_ptr_table_clear Perl_ptr_table_fetch @@ -726,6 +744,7 @@ unless ($define{'USE_ITHREADS'}) { Perl_sharedsv_thrcnt_dec Perl_sharedsv_thrcnt_inc Perl_sharedsv_unlock + Perl_stashpv_hvname_match )]; } @@ -747,12 +766,6 @@ unless ($define{'PERL_IMPLICIT_CONTEXT'}) { )]; } -if ($define{'PERL_IMPLICIT_CONTEXT'}) { - skip_symbols [qw( - PL_sig_sv - )]; -} - unless ($define{'PERL_IMPLICIT_SYS'}) { skip_symbols [qw( perl_alloc_using @@ -764,40 +777,62 @@ unless ($define{'FAKE_THREADS'}) { skip_symbols [qw(PL_curthr)]; } -unless ($define{'FAKE_DEFAULT_SIGNAL_HANDLERS'}) { +unless ($define{'PL_OP_SLAB_ALLOC'}) { + skip_symbols [qw( + PL_OpPtr + PL_OpSlab + PL_OpSpace + Perl_Slab_Alloc + Perl_Slab_Free + )]; +} + +unless ($define{'THREADS_HAVE_PIDS'}) { + skip_symbols [qw(PL_ppid)]; +} + +unless ($define{'PERL_NEED_APPCTX'}) { skip_symbols [qw( - PL_sig_defaulting + PL_appctx )]; } -unless ($define{'FAKE_PERSISTENT_SIGNAL_HANDLERS'}) { +unless ($define{'PERL_NEED_TIMESBASE'}) { skip_symbols [qw( - PL_sig_ignoring + PL_timesbase )]; } -unless ($define{'FAKE_DEFAULT_SIGNAL_HANDLERS'} || - $define{'FAKE_PERSISTENT_SIGNAL_HANDLERS'}) -{ +unless ($define{'DEBUG_LEAKING_SCALARS_FORK_DUMP'}) { skip_symbols [qw( - PL_sig_handlers_initted + PL_dumper_fd + )]; +} +unless ($define{'PERL_DONT_CREATE_GVSV'}) { + skip_symbols [qw( + Perl_gv_SVadd )]; } -unless ($define{'PL_OP_SLAB_ALLOC'}) { +unless ($define{'d_mmap'}) { skip_symbols [qw( - PL_OpPtr - PL_OpSlab - PL_OpSpace - Perl_Slab_Alloc - Perl_Slab_Free - )]; + PL_mmap_page_size + )]; } -unless ($define{'THREADS_HAVE_PIDS'}) { - skip_symbols [qw(PL_ppid)]; +if ($define{'d_sigaction'}) { + skip_symbols [qw( + PL_sig_trapped + )]; } +if ($^O ne 'vms') { + # VMS does its own thing for these symbols. + skip_symbols [qw(PL_sig_handlers_initted + PL_sig_ignoring + PL_sig_defaulting)]; +} + sub readvar { my $file = shift; my $proc = shift || sub { "PL_$_[2]" }; @@ -805,26 +840,21 @@ sub readvar { my @syms; while () { # All symbols have a Perl_ prefix because that's what embed.h - # sticks in front of them. - push(@syms, &$proc($1,$2,$3)) if (/\bPERLVAR(A?I?C?)\(([IGT])(\w+)/); + # sticks in front of them. The A?I?S?C? is strictly speaking + # wrong. + push(@syms, &$proc($1,$2,$3)) if (/\bPERLVAR(A?I?S?C?)\(([IGT])(\w+)/); } close(VARS); return \@syms; } -unless ($define{'PERL_GLOBAL_STRUCT'}) { - skip_symbols [qw( - Perl_GetVars - Perl_free_global_struct - Perl_init_global_struct - )]; -} - if ($define{'PERL_GLOBAL_STRUCT'}) { my $global = readvar($perlvars_h); skip_symbols $global; emit_symbol('Perl_GetVars'); emit_symbols [qw(PL_Vars PL_VarsPtr)] unless $CCTYPE eq 'GCC'; +} else { + skip_symbols [qw(Perl_init_global_struct Perl_free_global_struct)]; } # functions from *.sym files @@ -918,6 +948,7 @@ if ($define{'USE_PERLIO'}) { if ($define{'USE_SFIO'}) { # Old legacy non-stdio "PerlIO" skip_symbols \@layer_syms; + skip_symbols [qw(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 @@ -995,12 +1026,14 @@ if ($define{'USE_PERLIO'}) { else { # PerlIO with layers - export implementation emit_symbols \@layer_syms; + emit_symbols [qw(perlsio_binmode)]; } } else { # -Uuseperlio # Skip the PerlIO layer symbols - although - # nothing should have exported them any way + # nothing should have exported them anyway. skip_symbols \@layer_syms; + skip_symbols [qw(perlsio_binmode)]; skip_symbols [qw(PL_def_layerlist PL_known_layers PL_perlio)]; # Also do NOT add abstraction symbols from $perlio_sym @@ -1231,6 +1264,9 @@ if ($PLATFORM =~ /^win(?:32|ce)$/) { { try_symbol($symbol); } + if ($CCTYPE eq "BORLAND") { + try_symbol('_matherr'); + } } elsif ($PLATFORM eq 'os2') { open MAP, 'miniperl.map' or die 'Cannot read miniperl.map'; @@ -1492,4 +1528,3 @@ PerlIO_sprintf PerlIO_sv_dup PerlIO_tmpfile PerlIO_vsprintf -perlsio_binmode