X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/bb0d02ab7b92c63044b4ee5631217dc06cb2e2ca..9c213c250ec5aeaa30aa3d4c8ff3a1ccb02330a9:/makedef.pl diff --git a/makedef.pl b/makedef.pl index 002272b..c97fdc4 100644 --- a/makedef.pl +++ b/makedef.pl @@ -87,9 +87,12 @@ process_cc_flags(@Config{qw(ccflags optimize)}) # the user might have chosen to disable because the canned configs are # minimal configs that don't include any of those options. -my @options = sort(Config::bincompat_options(), Config::non_bincompat_options()); -print STDERR "Options: (@options)\n" unless $ARGS{PLATFORM} eq 'test'; -$define{$_} = 1 foreach @options; +#don't use the host Perl's -V defines for the WinCE Perl +if($ARGS{PLATFORM} ne 'wince') { + my @options = sort(Config::bincompat_options(), Config::non_bincompat_options()); + print STDERR "Options: (@options)\n" unless $ARGS{PLATFORM} eq 'test'; + $define{$_} = 1 foreach @options; +} my %exportperlmalloc = ( @@ -101,20 +104,18 @@ my %exportperlmalloc = my $exportperlmalloc = $ARGS{PLATFORM} eq 'os2'; -open(CFG, '<', 'config.h') || die "Cannot open config.h: $!\n"; +my $config_h = $ARGS{PLATFORM} eq 'wince' ? 'xconfig.h' : 'config.h'; +open(CFG, '<', $config_h) || die "Cannot open $config_h: $!\n"; while () { $define{$1} = 1 if /^\s*\#\s*define\s+(MYMALLOC|MULTIPLICITY |SPRINTF_RETURNS_STRLEN + |KILL_BY_SIGPRC |(?:PERL|USE|HAS)_\w+)\b/x; } close(CFG); # perl.h logic duplication begins -if ($define{PERL_IMPLICIT_SYS}) { - $define{PL_OP_SLAB_ALLOC} = 1; -} - if ($define{USE_ITHREADS}) { if (!$define{MULTIPLICITY}) { $define{MULTIPLICITY} = 1; @@ -247,7 +248,6 @@ unless ($define{'DEBUGGING'}) { Perl_pad_sv Perl_pad_setsv Perl_hv_assert - PL_block_type PL_watchaddr PL_watchok PL_watch_pvx @@ -278,10 +278,15 @@ else { ); } -unless ($define{'PERL_OLD_COPY_ON_WRITE'}) { +unless ($define{'PERL_OLD_COPY_ON_WRITE'} + || $define{'PERL_NEW_COPY_ON_WRITE'}) { ++$skip{Perl_sv_setsv_cow}; } +unless ($define{PERL_SAWAMPERSAND}) { + ++$skip{PL_sawampersand}; +} + unless ($define{'USE_REENTRANT_API'}) { ++$skip{PL_reentrant_buffer}; } @@ -355,6 +360,11 @@ unless ($define{'USE_ITHREADS'}) { PL_hints_mutex PL_my_ctx_mutex PL_perlio_mutex + PL_stashpad + PL_stashpadix + PL_stashpadmax + Perl_alloccopstash + Perl_allocfilegv Perl_clone_params_del Perl_clone_params_new Perl_parser_dup @@ -405,27 +415,6 @@ unless ($define{'PERL_IMPLICIT_CONTEXT'}) { ); } -unless ($define{'PL_OP_SLAB_ALLOC'}) { - ++$skip{$_} foreach qw( - PL_OpPtr - PL_OpSlab - PL_OpSpace - Perl_Slab_Alloc - Perl_Slab_Free - ); -} - -unless ($define{'PERL_DEBUG_READONLY_OPS'}) { - ++$skip{$_} foreach qw( - PL_slab_count - PL_slabs - ); -} - -unless ($define{'THREADS_HAVE_PIDS'}) { - ++$skip{PL_ppid}; -} - unless ($define{'PERL_NEED_APPCTX'}) { ++$skip{PL_appctx}; } @@ -468,7 +457,7 @@ unless ($define{PERL_MAD}) { unless ($define{'MULTIPLICITY'}) { ++$skip{$_} foreach qw( PL_interp_size - PL_interp_size_5_16_0 + PL_interp_size_5_18_0 ); } @@ -493,9 +482,19 @@ if ($define{HAS_SIGACTION}) { if ($ARGS{PLATFORM} eq 'vms') { # FAKE_PERSISTENT_SIGNAL_HANDLERS defined as !defined(HAS_SIGACTION) ++$skip{PL_sig_ignoring}; + ++$skip{PL_sig_handlers_initted} unless $define{KILL_BY_SIGPRC}; } } +if ($ARGS{PLATFORM} eq 'vms' && !$define{KILL_BY_SIGPRC}) { + # FAKE_DEFAULT_SIGNAL_HANDLERS defined as KILL_BY_SIGPRC + ++$skip{Perl_csighandler_init}; + ++$skip{Perl_my_kill}; + ++$skip{Perl_sig_to_vmscondition}; + ++$skip{PL_sig_defaulting}; + ++$skip{PL_sig_handlers_initted} unless !$define{HAS_SIGACTION}; +} + unless ($define{USE_LOCALE_COLLATE}) { ++$skip{$_} foreach qw( PL_collation_ix @@ -536,11 +535,15 @@ if ($define{'PERL_GLOBAL_STRUCT'}) { # is mentioned in perlvar.h and globvar.sym, and always exported. delete $skip{PL_sh_path}; ++$export{Perl_GetVars}; - try_symbols(qw(PL_Vars PL_VarsPtr)) unless $ARGS{CCTYPE} eq 'GCC'; + try_symbols(qw(PL_Vars PL_VarsPtr)) + unless $ARGS{CCTYPE} eq 'GCC' || $define{PERL_GLOBAL_STRUCT_PRIVATE}; } else { ++$skip{$_} foreach qw(Perl_init_global_struct Perl_free_global_struct); } +++$skip{PL_op_exec_cnt} + unless $define{PERL_TRACE_OPS}; + # functions from *.sym files my @syms = qw(globvar.sym); @@ -628,93 +631,12 @@ if ($ARGS{PLATFORM} eq 'netware') { } if ($define{'USE_PERLIO'}) { - # Export the symols that make up the PerlIO abstraction, regardless + # Export the symbols that make up the PerlIO abstraction, regardless # 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 @@ -748,7 +670,7 @@ if ($define{'USE_PERLIO'}) { foreach (@$embed) { my ($flags, $retval, $func, @args) = @$_; next unless $func; - if ($flags =~ /[AX]/ && $flags !~ /[xm]/ || $flags =~ /b/) { + if ($flags =~ /[AX]/ && $flags !~ /[xmi]/ || $flags =~ /b/) { # public API, so export # If a function is defined twice, for example before and after @@ -756,7 +678,8 @@ if ($define{'USE_PERLIO'}) { # within the block, as the *first* definition may have flags which # mean "don't export" next if $seen{$func}++; - $func = "Perl_$func" if $flags =~ /[pbX]/; + # Should we also skip adding the Perl_ prefix if $flags =~ /o/ ? + $func = "Perl_$func" if ($flags =~ /[pbX]/ && $func !~ /^Perl_/); ++$export{$func} unless exists $skip{$func}; } } @@ -801,15 +724,11 @@ try_symbols(qw( PerlIO_getpos PerlIO_init PerlIO_setpos - PerlIO_sprintf PerlIO_tmpfile - PerlIO_vsprintf )); if ($ARGS{PLATFORM} eq 'win32') { try_symbols(qw( - setgid - setuid win32_free_childdir win32_free_childenv win32_get_childdir @@ -818,6 +737,10 @@ if ($ARGS{PLATFORM} eq 'win32') { )); } +if ($ARGS{PLATFORM} eq 'wince') { + ++$skip{'win32_isatty'}; # commit 4342f4d6df is win32-only +} + if ($ARGS{PLATFORM} =~ /^win(?:32|ce)$/) { try_symbols(qw( Perl_init_os_extras