support win32_putenv()
[p5sagit/p5-mst-13.2.git] / win32 / makedef.pl
index f860291..fa1b580 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);
 
@@ -81,8 +72,6 @@ PL_archpat_auto
 PL_cryptseen
 PL_DBcv
 PL_generation
-PL_in_clean_all
-PL_in_clean_objs
 PL_lastgotoprobe
 PL_linestart
 PL_modcount
@@ -90,7 +79,6 @@ PL_pending_ident
 PL_sortcxix
 PL_sublex_info
 PL_timesbuf
-Perl_block_type
 Perl_additem
 Perl_cast_ulong
 Perl_check_uni
@@ -144,7 +132,6 @@ Perl_pp_evalonce
 Perl_pp_interp
 Perl_pp_map
 Perl_pp_nswitch
-Perl_q
 Perl_reall_srchlen
 Perl_same_dirent
 Perl_saw_return
@@ -194,14 +181,9 @@ 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)];
  }
@@ -216,8 +198,10 @@ 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
@@ -227,7 +211,7 @@ PL_nthreads_cond
 PL_threadnum
 PL_threadsv_names
 PL_thrsv
-Perl_vtbl_mutex
+PL_vtbl_mutex
 Perl_getTHR
 Perl_setTHR
 Perl_condpair_magic
@@ -237,11 +221,6 @@ Perl_thread_create
 Perl_find_threadsv
 Perl_unlock_condpair
 Perl_magic_mutexfree
-Perl_sv_iv
-Perl_sv_nv
-Perl_sv_true
-Perl_sv_uv
-Perl_sv_pvn
 )];
  }
 
@@ -296,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'})
@@ -305,23 +285,25 @@ 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
 
 unless ($define{'PERL_GLOBAL_STRUCT'})
  {
@@ -515,6 +497,7 @@ win32_setnetent
 win32_setprotoent
 win32_setservent
 win32_getenv
+win32_putenv
 win32_perror
 win32_setbuf
 win32_setvbuf