make safesysmalloc() etc., always available; safemalloc() et al are
[p5sagit/p5-mst-13.2.git] / win32 / makedef.pl
index acaa64b..0d9069b 100644 (file)
@@ -1,18 +1,8 @@
 #!../miniperl
 
-# Written: 10 April 1996 Gary Ng (71564.1743@compuserve.com)
+# Create the export list for perl. Needed by WIN32 for creating perl.dll.
 
-# Create the export list for perl.
-# Needed by WIN32 for creating perl.dll
-# based on perl_exp.SH in the main perl distribution directory
-
-# This simple program relys on 'global.sym' being up to date
-# with all of the global symbols that a dynamicly link library
-# might want to access.
-
-# There is some symbol defined in global.sym and interp.sym
-# that does not present in the WIN32 port but there is no easy
-# way to find them so I just put a exception list here
+# reads global.sym, pp.sym, perlvars.h, intrpvar.h, thrdvar.h, config.h
 
 my $CCTYPE = "MSVC";   # default
 
@@ -28,6 +18,7 @@ while (<CFG>)
  {
   $define{$1} = 1 if /^\s*#\s*define\s+(MYMALLOC)\b/;
   $define{$1} = 1 if /^\s*#\s*define\s+(USE_THREADS)\b/;
+  $define{$1} = 1 if /^\s*#\s*define\s+(MULTIPLICITY)\b/;
  }
 close(CFG);
 
@@ -45,8 +36,6 @@ if ($CCTYPE ne 'GCC')
  {
   print "LIBRARY Perl\n";
   print "DESCRIPTION 'Perl interpreter, export autogenerated'\n";
-  print "CODE LOADONCALL\n";
-  print "DATA LOADONCALL NONSHARED MULTIPLE\n";
  }
 else
  {
@@ -78,21 +67,25 @@ sub emit_symbols
 }
 
 skip_symbols [qw(
-Perl_statusvalue_vms
-Perl_archpat_auto
-Perl_block_type
-Perl_bostr
+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
 Perl_additem
 Perl_cast_ulong
 Perl_check_uni
 Perl_checkcomma
 Perl_chsize
 Perl_ck_aelem
-Perl_colors
-Perl_colorset
-Perl_cryptseen
 Perl_cx_dump
-Perl_DBcv
 Perl_do_ipcctl
 Perl_do_ipcget
 Perl_do_msgrcv
@@ -112,23 +105,15 @@ Perl_dump_packsubs
 Perl_dump_pm
 Perl_dump_sub
 Perl_expectterm
-Perl_error_no
-Perl_extralen
 Perl_fetch_gv
 Perl_fetch_io
 Perl_force_ident
 Perl_force_next
 Perl_force_word
-Perl_generation
 Perl_hv_stashpv
-Perl_in_clean_all
-Perl_in_clean_objs
 Perl_intuit_more
 Perl_init_thread_intern
 Perl_know_next
-Perl_lastgotoprobe
-Perl_linestart
-Perl_modcount
 Perl_modkids
 Perl_mstats
 Perl_my_bzero
@@ -141,51 +126,13 @@ Perl_no_fh_allowed
 Perl_no_op
 Perl_nointrp
 Perl_nomem
-Perl_pending_ident
 Perl_pp_cswitch
 Perl_pp_entersubr
 Perl_pp_evalonce
 Perl_pp_interp
 Perl_pp_map
 Perl_pp_nswitch
-Perl_q
-Perl_rcsid
 Perl_reall_srchlen
-Perl_reg_eval_set
-Perl_reg_flags
-Perl_reg_start_tmp
-Perl_reg_start_tmpl
-Perl_regbol
-Perl_regcc
-Perl_regcode
-Perl_regdata
-Perl_regdummy
-Perl_regdump
-Perl_regfold
-Perl_regendp
-Perl_regeol
-Perl_regflags
-Perl_regindent
-Perl_reginput
-Perl_reglastparen
-Perl_regmyendp
-Perl_regmyp_size
-Perl_regmystartp
-Perl_regnarrate
-Perl_regnaughty
-Perl_regnpar
-Perl_regparse
-Perl_regprecomp
-Perl_regprev
-Perl_regprogram
-Perl_regprop
-Perl_regsawback
-Perl_regseen
-Perl_regsize
-Perl_regstartp
-Perl_regtill
-Perl_regxend
-Perl_rx
 Perl_same_dirent
 Perl_saw_return
 Perl_scan_const
@@ -199,17 +146,13 @@ Perl_scan_str
 Perl_scan_subst
 Perl_scan_trans
 Perl_scan_word
-Perl_seen_zerolen
 Perl_setenv_getix
 Perl_skipspace
 Perl_sort_mutex
-Perl_sortcxix
 Perl_sublex_done
-Perl_sublex_info
 Perl_sublex_start
 Perl_sv_ref
 Perl_sv_setptrobj
-Perl_timesbuf
 Perl_too_few_arguments
 Perl_too_many_arguments
 Perl_unlnk
@@ -224,70 +167,66 @@ mystack_mark
 perl_init_ext
 perl_requirepv
 stack
-statusvalue_vms
 Perl_safexcalloc
 Perl_safexmalloc
 Perl_safexfree
 Perl_safexrealloc
 Perl_my_memcmp
 Perl_my_memset
-Perl_cshlen
-Perl_cshname
-Perl_opsave
+PL_cshlen
+PL_cshname
+PL_opsave
 )];
 
 
 if ($define{'MYMALLOC'})
  {
-  skip_symbols [qw(
-    Perl_safefree
-    Perl_safemalloc
-    Perl_saferealloc
-    Perl_safecalloc)];
   emit_symbols [qw(
     Perl_malloc
-    Perl_free
+    Perl_mfree
     Perl_realloc
     Perl_calloc)];
  }
+else
+ {
+  skip_symbols [qw(
+    Perl_malloced_size)];
+ }
 
 unless ($define{'USE_THREADS'})
  {
   skip_symbols [qw(
+PL_thr_key
+PL_sv_mutex
+PL_strtab_mutex
+PL_svref_mutex
+PL_malloc_mutex
+PL_cred_mutex
+PL_eval_mutex
+PL_eval_cond
+PL_eval_owner
+PL_threads_mutex
+PL_nthreads
+PL_nthreads_cond
+PL_threadnum
+PL_threadsv_names
+PL_thrsv
+PL_vtbl_mutex
 Perl_getTHR
 Perl_setTHR
 Perl_condpair_magic
-Perl_thr_key
-Perl_sv_mutex
-Perl_svref_mutex
-Perl_malloc_mutex
-Perl_eval_mutex
-Perl_eval_cond
-Perl_eval_owner
-Perl_threads_mutex
 Perl_new_struct_thread
-Perl_nthreads
-Perl_nthreads_cond
 Perl_per_thread_magicals
 Perl_thread_create
-Perl_threadnum
 Perl_find_threadsv
-Perl_threadsv_names
-Perl_thrsv
 Perl_unlock_condpair
-Perl_vtbl_mutex
 Perl_magic_mutexfree
-Perl_sv_iv
-Perl_sv_nv
-Perl_sv_true
-Perl_sv_uv
-Perl_sv_pvn
-Perl_newRV_noinc)];
+)];
  }
 
 unless ($define{'FAKE_THREADS'})
  {
-  skip_symbols [qw(Perl_curthr)];
+  skip_symbols [qw(PL_curthr)];
  }
 
 sub readvar
@@ -299,7 +238,7 @@ sub readvar
   {
    # All symbols have a Perl_ prefix because that's what embed.h
    # sticks in front of them.
-   push(@syms,"Perl_".$1) if (/\bPERLVARI?C?\([IGT](\w+)/);
+   push(@syms,"PL_".$1) if (/\bPERLVARI?C?\([IGT](\w+)/);
   } 
  close(VARS); 
  return \@syms;
@@ -321,6 +260,8 @@ if ($define{'PERL_GLOBAL_STRUCT'})
  {
   my $global = readvar("../perlvars.h");
   skip_symbols $global;
+  emit_symbols [qw(Perl_GetVars)];
+  emit_symbols [qw(PL_Vars PL_VarsPtr)] unless $CCTYPE eq 'GCC';
  } 
 
 unless ($define{'DEBUGGING'})
@@ -334,8 +275,9 @@ unless ($define{'DEBUGGING'})
     Perl_debstackptrs
     Perl_runops_debug
     Perl_sv_peek
-    Perl_watchaddr
-    Perl_watchok)];
+    PL_block_type
+    PL_watchaddr
+    PL_watchok)];
  }
 
 if ($define{'HAVE_DES_FCRYPT'})
@@ -343,29 +285,27 @@ if ($define{'HAVE_DES_FCRYPT'})
   emit_symbols [qw(win32_crypt)];
  }
 
-open (GLOBAL, "<../global.sym") || die "failed to open global.sym" . $!;
-while (<GLOBAL>) 
+# functions from *.sym files
+
+for my $syms ('../global.sym','../pp.sym', '../globvar.sym')
  {
-  next if (!/^[A-Za-z]/);
-  next if (/_amg[ \t]*$/);
-  # All symbols have a Perl_ prefix because that's what embed.h
-  # sticks in front of them.
-  chomp($_);
-  my $symbol = "Perl_$_";
-  emit_symbol($symbol) unless exists $skip{$symbol};
+  open (GLOBAL, "<$syms") || die "failed to open $syms" . $!;
+  while (<GLOBAL>) 
+   {
+    next if (!/^[A-Za-z]/);
+    # Functions have a Perl_ prefix
+    # Variables have a PL_ prefix
+    chomp($_);
+    my $symbol = ($syms =~ /var\.sym$/i ? "PL_" : "Perl_");
+    $symbol .= $_;
+    emit_symbol($symbol) unless exists $skip{$symbol};
+   }
+  close(GLOBAL);
  }
-close(GLOBAL);
 
-# also add symbols from interp.sym
-# They are only needed if -DMULTIPLICITY is not set but it
-# doesn't hurt to include them anyway.
-# these don't have Perl prefix
+# variables
 
-if ($define{'PERL_GLOBAL_STRUCT'})
- {
-  emit_symbol( ($CCTYPE eq 'GCC') ? 'Perl_GetVars' : 'Perl_VarsPtr')
- }
-else
+unless ($define{'PERL_GLOBAL_STRUCT'})
  {
   my $glob = readvar("../perlvars.h");
   emit_symbols $glob;
@@ -495,6 +435,7 @@ win32_stat
 win32_pipe
 win32_popen
 win32_pclose
+win32_rename
 win32_setmode
 win32_lseek
 win32_tell
@@ -510,6 +451,7 @@ win32_mkdir
 win32_rmdir
 win32_chdir
 win32_flock
+win32_execv
 win32_execvp
 win32_htons
 win32_ntohs
@@ -579,7 +521,15 @@ win32_get_osfhandle
 win32_ioctl
 win32_utime
 win32_wait
+win32_waitpid
+win32_kill
 win32_str_os_error
+win32_opendir
+win32_readdir
+win32_telldir
+win32_seekdir
+win32_rewinddir
+win32_closedir
 Perl_win32_init
 Perl_init_os_extras
 Perl_getTHR