X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedef.pl;h=e3b6fd638fd40d1073d682d84a5f2cbcbf68a496;hb=d2a0188286383355aaa13e586da8618f82242215;hp=eb927198e5e1a49528be4e210c7e6547b4d94f4e;hpb=8a85dc4e6fdf7b2ed7c6cd4124c74094397d931d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedef.pl b/makedef.pl index eb92719..e3b6fd6 100644 --- a/makedef.pl +++ b/makedef.pl @@ -95,24 +95,47 @@ while () { $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} || $define{MULTIPLICITY}) { - print "LIBRARY Perl56\n"; - print "DESCRIPTION 'Perl interpreter'\n"; - print "EXPORTS\n"; + 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"); } - else { - print "LIBRARY Perl56\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/; @@ -231,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 @@ -317,9 +341,18 @@ 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 @@ -335,6 +368,7 @@ else { skip_symbols [qw( PL_malloc_mutex Perl_dump_mstats + Perl_get_mstats Perl_malloc Perl_mfree Perl_realloc @@ -452,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; @@ -479,6 +513,11 @@ if ($define{'PERL_OBJECT'} || $define{'MULTIPLICITY'}) { 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'}) {