X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/e9bc6d6b34afc0063cc5181b59f77eeb81b1182d..5b92b8a735f45e8d1f52c81559a0bd984b5500a7:/makedef.pl diff --git a/makedef.pl b/makedef.pl index 06c647f..6b97ad0 100644 --- a/makedef.pl +++ b/makedef.pl @@ -125,10 +125,36 @@ $define{PERL_IMPLICIT_CONTEXT} ||= $define{USE_ITHREADS} || $define{MULTIPLICITY} ; -if ($define{USE_ITHREADS} && $ARGS{PLATFORM} ne 'win32' && $^O ne 'darwin') { +if ($define{USE_ITHREADS} && $ARGS{PLATFORM} ne 'win32' && $ARGS{PLATFORM} ne 'netware') { $define{USE_REENTRANT_API} = 1; } +if ( $define{USE_ITHREADS} + && $define{HAS_SETLOCALE} + && ! $define{NO_LOCALE} + && ! $define{NO_POSIX_2008_LOCALE}) +{ + $define{HAS_POSIX_2008_LOCALE} = 1 if $define{HAS_NEWLOCALE} + && $define{HAS_FREELOCALE} + && $define{HAS_USELOCALE}; + my $cctype = $ARGS{CCTYPE} =~ s/MSVC//r; + if ( ! $define{NO_THREAD_SAFE_LOCALE} + && ( $define{HAS_POSIX_2008_LOCALE} + || ($ARGS{PLATFORM} eq 'win32' && ( $cctype !~ /\D/ + && $cctype >= 80)))) + { + $define{USE_THREAD_SAFE_LOCALE} = 1; + $define{USE_POSIX_2008_LOCALE} = 1 if $define{HAS_POSIX_2008_LOCALE}; + } + + if ( $ARGS{PLATFORM} eq 'win32' + && $define{USE_THREAD_SAFE_LOCALE} + && $cctype < 140) + { + $define{TS_W32_BROKEN_LOCALECONV} = 1; + } +} + # perl.h logic duplication ends print STDERR "Defines: (" . join(' ', sort keys %define) . ")\n" @@ -368,6 +394,7 @@ unless ($define{'USE_ITHREADS'}) { PL_hints_mutex PL_locale_mutex PL_lc_numeric_mutex + PL_lc_numeric_mutex_depth PL_my_ctx_mutex PL_perlio_mutex PL_stashpad @@ -398,6 +425,7 @@ unless ($define{'USE_ITHREADS'}) { Perl_stashpv_hvname_match Perl_regdupe_internal Perl_newPADOP + PL_C_locale_obj ); } @@ -436,6 +464,14 @@ unless ($define{'PERL_IMPLICIT_CONTEXT'}) { ); } +if ($define{USE_THREAD_SAFE_LOCALE}) { + ++$skip{PL_lc_numeric_mutex}; + ++$skip{PL_lc_numeric_mutex_depth}; + if (! $define{TS_W32_BROKEN_LOCALECONV}) { + ++$skip{PL_locale_mutex}; + } +} + unless ($define{'PERL_OP_PARENT'}) { ++$skip{$_} foreach qw( Perl_op_parent @@ -538,6 +574,9 @@ unless ($define{USE_LOCALE_COLLATE}) { PL_collxfrm_mult Perl_sv_collxfrm Perl_sv_collxfrm_flags + PL_strxfrm_NUL_replacement + PL_strxfrm_is_behaved + PL_strxfrm_max_cp ); } @@ -547,6 +586,9 @@ unless ($define{USE_LOCALE_NUMERIC}) { PL_numeric_name PL_numeric_radix_sv PL_numeric_standard + PL_numeric_underlying + PL_numeric_underlying_is_standard + PL_underlying_numeric_obj ); } @@ -695,12 +737,13 @@ unless ($define{'USE_QUADMATH'}) { { my %seen; my ($embed) = setup_embed($ARGS{TARG_DIR}); + my $excludedre = $define{'NO_MATHOMS'} ? qr/[xmib]/ : qr/[xmi]/; foreach (@$embed) { my ($flags, $retval, $func, @args) = @$_; next unless $func; - if ( ($flags =~ /[AX]/ && $flags !~ /[xmi]/) - || ($flags =~ /b/ && ! $define{'NO_MATHOMS'})) + if (($flags =~ /[AX]/ && $flags !~ $excludedre) + || (!$define{'NO_MATHOMS'} && $flags =~ /b/)) { # public API, so export @@ -855,6 +898,7 @@ if ($ARGS{PLATFORM} =~ /^win(?:32|ce)$/) { win32_realloc win32_free win32_sleep + win32_pause win32_times win32_access win32_alarm