X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedef.pl;h=e3b6fd638fd40d1073d682d84a5f2cbcbf68a496;hb=843b3b0e3322db41698c3099017d3975ad483daa;hp=94242fff35a608193458d40dc7bbd4d6fb164f44;hpb=5db1039675bdeda8d9e4e8a1462abefb8ede0419;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedef.pl b/makedef.pl index 94242ff..e3b6fd6 100644 --- a/makedef.pl +++ b/makedef.pl @@ -91,35 +91,51 @@ unless ($PLATFORM eq 'win32') { open(CFG,$config_h) || die "Cannot open $config_h: $!\n"; while () { $define{$1} = 1 if /^\s*#\s*define\s+(MYMALLOC)\b/; - $define{$1} = 1 if /^\s*#\s*define\s+(USE_THREADS)\b/; + $define{$1} = 1 if /^\s*#\s*define\s+(USE_5005THREADS)\b/; + $define{$1} = 1 if /^\s*#\s*define\s+(USE_ITHREADS)\b/; $define{$1} = 1 if /^\s*#\s*define\s+(USE_PERLIO)\b/; $define{$1} = 1 if /^\s*#\s*define\s+(MULTIPLICITY)\b/; + $define{$1} = 1 if /^\s*#\s*define\s+(PERL_IMPLICIT_SYS)\b/; $define{$1} = 1 if /^\s*#\s*define\s+(PERL_BINCOMPAT_5005)\b/; } close(CFG); +# perl.h logic duplication begins + +if ($define{USE_ITHREADS}) { + if (!$define{MULTIPLICITY} && !defined{PERL_OBJECT}) { + $define{MULTIPLICITY} = 1; + } +} + +$define{PERL_IMPLICIT_CONTEXT} ||= + $define{USE_ITHREADS} || + $define{USE_THREADS} || + $define{MULTIPLICITY} ; + +if ($define{PERL_CAPI}) { + delete $define{PERL_OBJECT}; + $define{MULTIPLICITY} = 1; + $define{PERL_IMPLICIT_CONTEXT} = 1; + $define{PERL_IMPLICIT_SYS} = 1; +} + +if ($define{PERL_OBJECT}) { + $define{PERL_IMPLICIT_CONTEXT} = 1; + $define{PERL_IMPLICIT_SYS} = 1; +} + +# perl.h logic duplication ends + if ($PLATFORM eq 'win32') { warn join(' ',keys %define)."\n"; - if ($define{PERL_OBJECT}) { - print "LIBRARY Perl56\n"; - print "DESCRIPTION 'Perl interpreter'\n"; - print "EXPORTS\n"; -# output_symbol("perl_alloc"); + print "LIBRARY Perl56\n"; + print "DESCRIPTION 'Perl interpreter'\n"; + print "EXPORTS\n"; + if ($define{PERL_IMPLICIT_SYS}) { output_symbol("perl_get_host_info"); output_symbol("perl_alloc_override"); -# output_symbol("perl_construct"); -# output_symbol("perl_destruct"); -# output_symbol("perl_free"); -# output_symbol("perl_parse"); -# output_symbol("perl_run"); -# output_symbol("RunPerl"); -# exit(0); } - else { - print "LIBRARY Perl\n"; - print "DESCRIPTION 'Perl interpreter, export autogenerated'\n"; - print "EXPORTS\n"; - } } elsif ($PLATFORM eq 'os2') { ($v = $]) =~ s/(\d\.\d\d\d)(\d\d)$/$1_$2/; @@ -162,7 +178,7 @@ sub emit_symbols { foreach my $symbol (@$list) { my $skipsym = $symbol; # XXX hack - if ($define{PERL_OBJECT}) { + if ($define{PERL_OBJECT} || $define{MULTIPLICITY}) { $skipsym =~ s/^Perl_[GIT](\w+)_ptr$/PL_$1/; } emit_symbol($symbol) unless exists $skip{$skipsym}; @@ -238,6 +254,7 @@ elsif ($PLATFORM eq 'aix') { Perl_safexrealloc Perl_same_dirent Perl_unlnk + Perl_sys_intern_dup PL_cryptseen PL_opsave PL_statusvalue_vms @@ -324,15 +341,24 @@ else { )]; } +unless ($define{'PERL_FLEXIBLE_EXCEPTIONS'}) { + skip_symbols [qw( + PL_protect + Perl_default_protect + Perl_vdefault_protect + )]; +} + if ($define{'MYMALLOC'}) { emit_symbols [qw( Perl_dump_mstats + Perl_get_mstats Perl_malloc Perl_mfree Perl_realloc Perl_calloc )]; - if ($define{'USE_THREADS'} || $define{'USE_ITHREADS'}) { + if ($define{'USE_5005THREADS'} || $define{'USE_ITHREADS'}) { emit_symbols [qw( PL_malloc_mutex )]; @@ -342,6 +368,7 @@ else { skip_symbols [qw( PL_malloc_mutex Perl_dump_mstats + Perl_get_mstats Perl_malloc Perl_mfree Perl_realloc @@ -350,7 +377,7 @@ else { )]; } -unless ($define{'USE_THREADS'}) { +unless ($define{'USE_5005THREADS'}) { skip_symbols [qw( PL_thr_key PL_sv_mutex @@ -445,16 +472,11 @@ sub readvar { return \@syms; } -if ($define{'USE_THREADS'} || $define{'MULTIPLICITY'}) { +if ($define{'USE_5005THREADS'}) { my $thrd = readvar($thrdvar_h); skip_symbols $thrd; } -if ($define{'MULTIPLICITY'}) { - my $interp = readvar($intrpvar_h); - skip_symbols $interp; -} - if ($define{'PERL_GLOBAL_STRUCT'}) { my $global = readvar($perlvars_h); skip_symbols $global; @@ -464,7 +486,7 @@ if ($define{'PERL_GLOBAL_STRUCT'}) { # functions from *.sym files -my @syms = ($global_sym, $pp_sym, $globvar_sym); +my @syms = ($global_sym, $globvar_sym); # $pp_sym is not part of the API if ($define{'USE_PERLIO'}) { push @syms, $perlio_sym; @@ -486,11 +508,16 @@ for my $syms (@syms) { # variables -if ($define{'PERL_OBJECT'}) { +if ($define{'PERL_OBJECT'} || $define{'MULTIPLICITY'}) { for my $f ($perlvars_h, $intrpvar_h, $thrdvar_h) { my $glob = readvar($f, sub { "Perl_" . $_[1] . $_[2] . "_ptr" }); emit_symbols $glob; } + # XXX AIX seems to want the perlvars.h symbols, for some reason + if ($PLATFORM eq 'aix') { + my $glob = readvar($perlvars_h); + emit_symbols $glob; + } } else { unless ($define{'PERL_GLOBAL_STRUCT'}) { @@ -501,7 +528,7 @@ else { my $glob = readvar($intrpvar_h); emit_symbols $glob; } - unless ($define{'MULTIPLICITY'} || $define{'USE_THREADS'}) { + unless ($define{'MULTIPLICITY'} || $define{'USE_5005THREADS'}) { my $glob = readvar($thrdvar_h); emit_symbols $glob; }