#
# Needed by WIN32 and OS/2 for creating perl.dll,
# and by AIX for creating libperl.a when -Dusershrplib is in effect,
-# and by MacOS Classic.
+# and by VMS for creating perlshr.exe.
#
# Reads from information stored in
#
# global.sym
# globvar.sym
# intrpvar.h
-# macperl.sym (on MacOS)
# miniperl.map (on OS/2)
# perl5.def (on OS/2; this is the old version of the file being made)
# perlio.sym
# perldll.def Windows
# perl.exp AIX
# perl.imp NetWare
-
+# makedef.lis VMS
BEGIN { unshift @INC, "lib" }
use Config;
}
}
-my @PLATFORM = qw(aix win32 wince os2 MacOS netware);
+my @PLATFORM = qw(aix win32 wince os2 netware vms);
my %PLATFORM;
@PLATFORM{@PLATFORM} = ();
my $intrpvar_h = "intrpvar.h";
my $perlvars_h = "perlvars.h";
my $global_sym = "global.sym";
-my $pp_sym = "pp.sym";
my $globvar_sym = "globvar.sym";
my $perlio_sym = "perlio.sym";
my $static_ext = "";
}
elsif ($PLATFORM =~ /^win(?:32|ce)$/ || $PLATFORM eq 'netware') {
$CCTYPE = "MSVC" unless defined $CCTYPE;
- foreach ($intrpvar_h, $perlvars_h, $global_sym,
- $pp_sym, $globvar_sym, $perlio_sym) {
+ foreach ($intrpvar_h, $perlvars_h, $global_sym, $globvar_sym, $perlio_sym) {
s!^!..\\!;
}
}
-elsif ($PLATFORM eq 'MacOS') {
- foreach ($intrpvar_h, $perlvars_h, $global_sym,
- $pp_sym, $globvar_sym, $perlio_sym) {
- s!^!::!;
- }
-}
-unless ($PLATFORM eq 'win32' || $PLATFORM eq 'wince' || $PLATFORM eq 'MacOS' || $PLATFORM eq 'netware') {
+unless ($PLATFORM eq 'win32' || $PLATFORM eq 'wince' || $PLATFORM eq 'netware') {
open(CFG,$config_sh) || die "Cannot open $config_sh: $!\n";
while (<CFG>) {
if (/^(?:ccflags|optimize)='(.+)'$/) {
$ARCHNAME = $1 if /^archname='(.+)'$/;
$PATCHLEVEL = $1 if /^perl_patchlevel='(.+)'$/;
}
+ if ($PLATFORM eq 'vms') {
+ $define{DEBUGGING} = 1 if /^usedebugging_perl='Y'$/;
+ $define{UNLINK_ALL_VERSIONS} = 1 if /^d_unlink_all_versions='define'$/;
+ }
}
close(CFG);
}
print STDERR "Defines: (" . join(' ', sort keys %define) . ")\n";
if ($PLATFORM =~ /^win(?:32|ce)$/) {
- (my $dll = ($define{PERL_DLL} || "perl512")) =~ s/\.dll$//i;
+ (my $dll = ($define{PERL_DLL} || "perl515")) =~ s/\.dll$//i;
print "LIBRARY $dll\n";
# The DESCRIPTION module definition file statement is not supported
# by VC7 onwards.
- if ($CCTYPE !~ /^MSVC7/ && $CCTYPE !~ /^MSVC8/ && $CCTYPE !~ /^MSVC9/) {
+ if ($CCTYPE =~ /^(?:MSVC60|GCC|BORLAND)$/) {
print "DESCRIPTION 'Perl interpreter'\n";
}
print "EXPORTS\n";
}
elsif ($PLATFORM eq 'netware') {
if ($FILETYPE eq 'def') {
- print "LIBRARY perl512\n";
+ print "LIBRARY perl515\n";
print "DESCRIPTION 'Perl interpreter for NetWare'\n";
print "EXPORTS\n";
}
Perl_my_sprintf
)];
}
-else {
+elsif ($PLATFORM ne 'vms') {
skip_symbols [qw(
Perl_do_spawn
Perl_do_spawn_nowait
PL_numeric_name
PL_numeric_radix_sv
PL_numeric_standard
- PL_vtbl_collxfrm
Perl_sv_collxfrm
setgid
setuid
)])
if $define{'USE_5005THREADS'} or $define{'USE_ITHREADS'};
}
-elsif ($PLATFORM eq 'MacOS') {
- skip_symbols [qw(
- Perl_GetVars
- PL_cryptseen
- PL_cshlen
- PL_cshname
- PL_statusvalue_vms
- PL_sys_intern
- PL_opsave
- PL_timesbuf
- Perl_dump_fds
- Perl_my_bcopy
- Perl_my_bzero
- Perl_my_chsize
- Perl_my_htonl
- Perl_my_memcmp
- Perl_my_memset
- Perl_my_ntohl
- Perl_my_swap
- Perl_safexcalloc
- Perl_safexfree
- Perl_safexmalloc
- Perl_safexrealloc
- Perl_unlnk
- Perl_sys_intern_clear
- Perl_sys_intern_init
- )];
-}
elsif ($PLATFORM eq 'netware') {
skip_symbols [qw(
PL_statusvalue_vms
PerlIO_perlio
)];
}
+elsif ($PLATFORM eq 'vms') {
+ emit_symbols([qw(
+ boot_DynaLoader
+ Perl_cando
+ Perl_cando_by_name
+ Perl_closedir
+ Perl_csighandler_init
+ Perl_do_rmdir
+ Perl_fileify_dirspec
+ Perl_fileify_dirspec_ts
+ Perl_fileify_dirspec_utf8
+ Perl_fileify_dirspec_utf8_ts
+ Perl_flex_fstat
+ Perl_flex_lstat
+ Perl_flex_stat
+ Perl_kill_file
+ Perl_my_chdir
+ Perl_my_chmod
+ Perl_my_crypt
+ Perl_my_endpwent
+ Perl_my_fclose
+ Perl_my_fdopen
+ Perl_my_fgetname
+ Perl_my_flush
+ Perl_my_fwrite
+ Perl_my_gconvert
+ Perl_my_getenv
+ Perl_my_getenv_len
+ Perl_my_getlogin
+ Perl_my_getpwnam
+ Perl_my_getpwuid
+ Perl_my_gmtime
+ Perl_my_kill
+ Perl_my_localtime
+ Perl_my_mkdir
+ Perl_my_sigaction
+ Perl_my_symlink
+ Perl_my_time
+ Perl_my_tmpfile
+ Perl_my_trnlnm
+ Perl_my_utime
+ Perl_my_waitpid
+ Perl_opendir
+ Perl_pathify_dirspec
+ Perl_pathify_dirspec_ts
+ Perl_pathify_dirspec_utf8
+ Perl_pathify_dirspec_utf8_ts
+ Perl_readdir
+ Perl_readdir_r
+ Perl_rename
+ Perl_rmscopy
+ Perl_rmsexpand
+ Perl_rmsexpand_ts
+ Perl_rmsexpand_utf8
+ Perl_rmsexpand_utf8_ts
+ Perl_seekdir
+ Perl_sig_to_vmscondition
+ Perl_telldir
+ Perl_tounixpath
+ Perl_tounixpath_ts
+ Perl_tounixpath_utf8
+ Perl_tounixpath_utf8_ts
+ Perl_tounixspec
+ Perl_tounixspec_ts
+ Perl_tounixspec_utf8
+ Perl_tounixspec_utf8_ts
+ Perl_tovmspath
+ Perl_tovmspath_ts
+ Perl_tovmspath_utf8
+ Perl_tovmspath_utf8_ts
+ Perl_tovmsspec
+ Perl_tovmsspec_ts
+ Perl_tovmsspec_utf8
+ Perl_tovmsspec_utf8_ts
+ Perl_trim_unixpath
+ Perl_vms_case_tolerant
+ Perl_vms_do_aexec
+ Perl_vms_do_exec
+ Perl_vms_image_init
+ Perl_vms_realpath
+ Perl_vmssetenv
+ Perl_vmssetuserlnm
+ Perl_vmstrnenv
+ PerlIO_openn
+ )]);
+ skip_symbols([qw(
+ PL_statusvalue_posix
+ PL_cryptseen
+ PL_opsave
+ Perl_GetVars
+ Perl_dump_fds
+ Perl_my_bzero
+ Perl_my_bcopy
+ Perl_my_chsize
+ Perl_my_htonl
+ Perl_my_memcmp
+ Perl_my_memset
+ Perl_my_ntohl
+ Perl_my_sprintf
+ Perl_my_swap
+ )]);
+ skip_symbols([qw(
+ Perl_signbit
+ )])
+ if $define{'HAS_SIGNBIT'};
+ skip_symbols([qw(
+ Perl_unlnk
+ )])
+ unless $define{'UNLINK_ALL_VERSIONS'};
+}
unless ($define{'DEBUGGING'}) {
skip_symbols [qw(
PL_my_ctx_mutex
PL_perlio_mutex
PL_regdupe
+ Perl_clone_params_del
+ Perl_clone_params_new
Perl_parser_dup
Perl_dirp_dup
Perl_cx_dup
Perl_mro_meta_dup
Perl_re_dup_guts
Perl_sv_dup
+ Perl_sv_dup_inc
Perl_rvpv_dup
Perl_hek_dup
Perl_sys_intern_dup
unless ($define{'MULTIPLICITY'}) {
skip_symbols [qw(
PL_interp_size
- PL_interp_size_5_10_0
+ PL_interp_size_5_16_0
)];
}
# functions from *.sym files
-my @syms = ($global_sym, $globvar_sym); # $pp_sym is not part of the API
+my @syms = ($global_sym, $globvar_sym);
# Symbols that are the public face of the PerlIO layers implementation
# These are in _addition to_ the public face of the abstraction
# variables
-if ($define{'MULTIPLICITY'}) {
- for my $f ($perlvars_h, $intrpvar_h) {
+if ($define{'MULTIPLICITY'} && $define{PERL_GLOBAL_STRUCT}) {
+ for my $f ($perlvars_h) {
my $glob = readvar($f, sub { "Perl_" . $_[1] . $_[2] . "_ptr" });
emit_symbols $glob;
}
- unless ($define{'USE_ITHREADS'}) {
- # XXX needed for XS extensions that define PERL_CORE
- emit_symbol("PL_curinterp");
- }
# XXX AIX seems to want the perlvars.h symbols, for some reason
if ($PLATFORM eq 'aix' or $PLATFORM eq 'os2') { # OS/2 needs PL_thr_key
my $glob = readvar($perlvars_h);
my $glob = readvar($perlvars_h);
emit_symbols $glob;
}
- unless ($define{'MULTIPLICITY'}) {
+ unless ($define{MULTIPLICITY}) {
my $glob = readvar($intrpvar_h);
emit_symbols $glob;
}
@missing = grep { !exists $exportperlmalloc{$_} } @missing;
delete $export{$_} foreach @missing;
}
-elsif ($PLATFORM eq 'MacOS') {
- open MACSYMS, 'macperl.sym' or die 'Cannot read macperl.sym';
-
- while (<MACSYMS>) {
- try_symbol($_);
- }
-
- close MACSYMS;
-}
elsif ($PLATFORM eq 'netware') {
foreach my $symbol (qw(
boot_DynaLoader
$ordinal{$exportperlmalloc{$symbol}} || ++$sym_ord
if $exportperlmalloc and exists $exportperlmalloc{$symbol};
}
- elsif ($PLATFORM eq 'aix' || $PLATFORM eq 'MacOS') {
+ elsif ($PLATFORM eq 'aix' || $PLATFORM eq 'vms') {
print "$symbol\n";
}
elsif ($PLATFORM eq 'netware') {