X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/378eeda70cc27194f0f718b4c65b8ba147259910..54c04cb87882af1c2e2128858f415a5143d65a45:/makedef.pl diff --git a/makedef.pl b/makedef.pl index 1a44d1b..cd0d3fe 100644 --- a/makedef.pl +++ b/makedef.pl @@ -40,6 +40,8 @@ my %ARGS = (CCTYPE => 'MSVC', TARG_DIR => ''); my %define; +my $fold; + sub process_cc_flags { foreach (map {split /\s+/, $_} @_) { $define{$1} = $2 // 1 if /^-D(\w+)(?:=(.+))?/; @@ -52,6 +54,8 @@ while (@ARGV) { process_cc_flags($1); } elsif ($flag =~ /^(CCTYPE|FILETYPE|PLATFORM|TARG_DIR)=(.+)$/) { $ARGS{$1} = $2; + } elsif ($flag eq '--sort-fold') { + ++$fold; } } @@ -83,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 = ( @@ -97,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; @@ -196,6 +201,9 @@ if ($ARGS{PLATFORM} ne 'os2') { ); if ($ARGS{PLATFORM} eq 'vms') { ++$skip{PL_statusvalue_posix}; + # This is a wrapper if we have symlink, not a replacement + # if we don't. + ++$skip{Perl_my_symlink} unless $Config{d_symlink}; } else { ++$skip{PL_statusvalue_vms}; if ($ARGS{PLATFORM} ne 'aix') { @@ -240,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 @@ -271,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}; } @@ -340,6 +352,7 @@ unless ($define{'USE_ITHREADS'}) { unless ($define{'USE_ITHREADS'}) { ++$skip{$_} foreach qw( + PL_check_mutex PL_op_mutex PL_regex_pad PL_regex_padav @@ -347,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 @@ -397,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}; } @@ -460,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 ); } @@ -485,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 @@ -528,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); @@ -548,6 +559,7 @@ my @layer_syms = qw( PerlIOBase_eof PerlIOBase_error PerlIOBase_fileno + PerlIOBase_open PerlIOBase_noop_fail PerlIOBase_noop_ok PerlIOBase_popped @@ -619,7 +631,7 @@ 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'; @@ -739,7 +751,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 @@ -747,7 +759,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}; } } @@ -799,8 +812,6 @@ try_symbols(qw( if ($ARGS{PLATFORM} eq 'win32') { try_symbols(qw( - setgid - setuid win32_free_childdir win32_free_childenv win32_get_childdir @@ -809,6 +820,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 @@ -1344,7 +1359,8 @@ elsif ($ARGS{PLATFORM} eq 'netware') { # Then the symbols -foreach my $symbol (sort keys %export) { +my @symbols = $fold ? sort {lc $a cmp lc $b} keys %export : sort keys %export; +foreach my $symbol (@symbols) { if ($ARGS{PLATFORM} =~ /^win(?:32|ce)$/) { print "\t$symbol\n"; }