X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedef.pl;h=e864f68229634008e5265ac432dd870aa613d3b7;hb=912ec6395ccd8f957980c6c263fd9cff9e9bb2fa;hp=103a1ca2b236b38b6c233782c2a03a7d9719e779;hpb=ad6971c848a6c9ababdb3d314df9138e0a0f49d9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedef.pl b/makedef.pl index 103a1ca..e864f68 100644 --- a/makedef.pl +++ b/makedef.pl @@ -17,12 +17,12 @@ while (@ARGV) { $define{$1} = $2 if ($flag =~ /^-D(\w+)=(.+)$/); $CCTYPE = $1 if ($flag =~ /^CCTYPE=(\w+)$/); $PLATFORM = $1 if ($flag =~ /^PLATFORM=(\w+)$/); - if ($PLATFORM eq 'netware') { - $FILETYPE = $1 if ($flag =~ /^FILETYPE=(\w+)$/); - } + if ($PLATFORM eq 'netware') { + $FILETYPE = $1 if ($flag =~ /^FILETYPE=(\w+)$/); + } } -my @PLATFORM = qw(aix win32 os2 MacOS netware); +my @PLATFORM = qw(aix win32 wince os2 MacOS netware); my %PLATFORM; @PLATFORM{@PLATFORM} = (); @@ -42,7 +42,7 @@ my $perlio_sym = "perlio.sym"; if ($PLATFORM eq 'aix') { # Nothing for now. } -elsif ($PLATFORM eq 'win32' || $PLATFORM eq 'netware') { +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) { @@ -56,7 +56,7 @@ elsif ($PLATFORM eq 'MacOS') { } } -unless ($PLATFORM eq 'win32' || $PLATFORM eq 'MacOS' || $PLATFORM eq 'netware') { +unless ($PLATFORM eq 'win32' || $PLATFORM eq 'wince' || $PLATFORM eq 'MacOS' || $PLATFORM eq 'netware') { open(CFG,$config_sh) || die "Cannot open $config_sh: $!\n"; while () { if (/^(?:ccflags|optimize)='(.+)'$/) { @@ -106,14 +106,17 @@ if ($define{USE_ITHREADS} && $PLATFORM ne 'win32' && $^O ne 'darwin') { my $sym_ord = 0; -if ($PLATFORM eq 'win32') { +if ($PLATFORM =~ /^win(?:32|ce)$/) { warn join(' ',keys %define)."\n"; - print "LIBRARY perl58\n"; + ($dll = ($define{PERL_DLL} || "perl58")) =~ s/\.dll$//i; + print "LIBRARY $dll\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"); + } + if ($define{USE_ITHREADS} and $define{PERL_IMPLICIT_SYS}) { output_symbol("perl_clone_host"); } } @@ -241,6 +244,77 @@ if ($PLATFORM eq 'win32') { Perl_my_popen )]; } +elsif ($PLATFORM eq 'wince') { + skip_symbols [qw( + PL_statusvalue_vms + PL_archpat_auto + PL_cryptseen + PL_DBcv + PL_generation + PL_lastgotoprobe + PL_linestart + PL_modcount + PL_pending_ident + PL_sortcxix + PL_sublex_info + PL_timesbuf + PL_collation_ix + PL_collation_name + PL_collation_standard + PL_collxfrm_base + PL_collxfrm_mult + PL_numeric_compat1 + PL_numeric_local + PL_numeric_name + PL_numeric_radix_sv + PL_numeric_standard + PL_vtbl_collxfrm + Perl_sv_collxfrm + setgid + setuid + win32_async_check + win32_free_childdir + win32_free_childenv + win32_get_childdir + win32_get_childenv + win32_spawnvp + main + Perl_ErrorNo + Perl_GetVars + Perl_do_exec3 + Perl_do_ipcctl + Perl_do_ipcget + Perl_do_msgrcv + Perl_do_msgsnd + Perl_do_semop + Perl_do_shmio + Perl_dump_fds + Perl_init_thread_intern + Perl_my_bzero + Perl_my_bcopy + Perl_my_htonl + Perl_my_ntohl + Perl_my_swap + Perl_my_chsize + Perl_same_dirent + Perl_setenv_getix + Perl_unlnk + Perl_watch + Perl_safexcalloc + Perl_safexmalloc + Perl_safexfree + Perl_safexrealloc + Perl_my_memcmp + Perl_my_memset + PL_cshlen + PL_cshname + PL_opsave + Perl_do_exec + Perl_getenv_len + Perl_my_pclose + Perl_my_popen + )]; +} elsif ($PLATFORM eq 'aix') { skip_symbols([qw( Perl_dump_fds @@ -664,16 +738,19 @@ my @layer_syms = qw( PerlIOBase_error PerlIOBase_fileno PerlIOBase_pushed + PerlIOBase_popped PerlIOBase_read PerlIOBase_setlinebuf PerlIOBase_unread PerlIOBuf_bufsiz PerlIOBuf_fill PerlIOBuf_flush + PerlIOBuf_get_base PerlIOBuf_get_cnt PerlIOBuf_get_ptr PerlIOBuf_open PerlIOBuf_pushed + PerlIOBuf_popped PerlIOBuf_read PerlIOBuf_seek PerlIOBuf_set_ptrcnt @@ -695,8 +772,34 @@ my @layer_syms = qw( PerlIO_push PerlIO_sv_dup 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 + +); +if ($PLATFORM eq 'netware') { + push(@layer_syms,'PL_def_layerlist','PL_known_layers','PL_perlio'); +} if ($define{'USE_PERLIO'}) { # Export the symols that make up the PerlIO abstraction, regardless @@ -776,6 +879,9 @@ if ($define{'USE_PERLIO'}) { Perl_PerlIO_tell Perl_PerlIO_unread Perl_PerlIO_write + PL_def_layerlist + PL_known_layers + PL_perlio )]; } else { @@ -787,6 +893,8 @@ if ($define{'USE_PERLIO'}) { # Skip the PerlIO layer symbols - although # nothing should have exported them any way skip_symbols \@layer_syms; + skip_symbols [qw(PL_def_layerlist PL_known_layers PL_perlio)]; + # Also do NOT add abstraction symbols from $perlio_sym # abstraction is done as #define to stdio # Remaining remnants that _may_ be functions @@ -850,7 +958,7 @@ while () { try_symbol($_); } -if ($PLATFORM eq 'win32') { +if ($PLATFORM =~ /^win(?:32|ce)$/) { foreach my $symbol (qw( setuid setgid @@ -947,6 +1055,7 @@ if ($PLATFORM eq 'win32') { win32_link win32_unlink win32_utime + win32_gettimeofday win32_uname win32_wait win32_waitpid @@ -1166,6 +1275,8 @@ foreach my $symbol (qw( Perl_sv_catsv Perl_sv_catpvn Perl_sv_2pv + nw_freeenviron + Remove_Thread_Ctx )) { try_symbol($symbol); @@ -1191,7 +1302,7 @@ sub emit_symbol { sub output_symbol { my $symbol = shift; - if ($PLATFORM eq 'win32') { + if ($PLATFORM =~ /^win(?:32|ce)$/) { $symbol = "_$symbol" if $CCTYPE eq 'BORLAND'; print "\t$symbol\n"; # XXX: binary compatibility between compilers is an exercise @@ -1241,11 +1352,10 @@ perl_destruct perl_free perl_parse perl_run -# Oddities +# Oddities from PerlIO PerlIO_binmode PerlIO_getpos PerlIO_init -PerlIO_perlio PerlIO_setpos PerlIO_sprintf PerlIO_sv_dup