Generic file changes for MYMALLOC
[p5sagit/p5-mst-13.2.git] / win32 / makedef.pl
CommitLineData
0a753a76 1#!../miniperl
2
3# Written: 10 April 1996 Gary Ng (71564.1743@compuserve.com)
4
5# Create the export list for perl.
6# Needed by WIN32 for creating perl.dll
7# based on perl_exp.SH in the main perl distribution directory
8
9# This simple program relys on 'global.sym' being up to date
10# with all of the global symbols that a dynamicly link library
11# might want to access.
12
13# There is some symbol defined in global.sym and interp.sym
14# that does not present in the WIN32 port but there is no easy
84902520 15# way to find them so I just put a exception list here
0a753a76 16
d55594ae 17while (@ARGV && $ARGV[0] =~ /^-/)
18 {
19 my $flag = shift;
20 $define{$1} = 1 if ($flag =~ /^-D(\w+)$/);
21 }
22
bbc8f9de 23open(CFG,'config.h') || die "Cannot open config.h:$!";
24while (<CFG>)
25 {
26 $define{$1} = 1 if /^\s*#\s*define\s+(MYMALLOC)\b/;
27 }
28close(CFG);
29
d55594ae 30warn join(' ',keys %define)."\n";
31
3e3baf6d 32my $CCTYPE = shift || "MSVC";
33
bbc8f9de 34print "LIBRARY Perl\n";
35print "DESCRIPTION 'Perl interpreter, export autogenerated'\n";
36print "CODE LOADONCALL\n";
37print "DATA LOADONCALL NONSHARED MULTIPLE\n";
38print "EXPORTS\n";
39
0a753a76 40$skip_sym=<<'!END!OF!SKIP!';
0a753a76 41Perl_block_type
0a753a76 42Perl_additem
43Perl_cast_ulong
44Perl_check_uni
45Perl_checkcomma
46Perl_chsize
47Perl_ck_aelem
48Perl_cryptseen
49Perl_cx_dump
50Perl_deb
51Perl_deb_growlevel
52Perl_debop
53Perl_debprofdump
54Perl_debstack
55Perl_debstackptrs
56Perl_do_ipcctl
57Perl_do_ipcget
58Perl_do_msgrcv
59Perl_do_msgsnd
60Perl_do_semop
61Perl_do_shmio
62Perl_doeval
63Perl_dofindlabel
64Perl_dopoptoeval
65Perl_dump_eval
66Perl_dump_fds
67Perl_dump_form
68Perl_dump_gv
69Perl_dump_mstats
70Perl_dump_op
71Perl_dump_packsubs
72Perl_dump_pm
73Perl_dump_sub
74Perl_expectterm
75Perl_fetch_gv
76Perl_fetch_io
77Perl_force_ident
78Perl_force_next
79Perl_force_word
80Perl_hv_stashpv
81Perl_intuit_more
d55594ae 82Perl_init_thread_intern
0a753a76 83Perl_know_next
84Perl_modkids
85Perl_mstats
86Perl_my_bzero
87Perl_my_htonl
88Perl_my_ntohl
89Perl_my_swap
90Perl_my_chsize
91Perl_newXSUB
92Perl_no_fh_allowed
93Perl_no_op
94Perl_nointrp
95Perl_nomem
96Perl_pp_cswitch
97Perl_pp_entersubr
98Perl_pp_evalonce
99Perl_pp_interp
100Perl_pp_map
101Perl_pp_nswitch
102Perl_q
d55594ae 103Perl_rcsid
0a753a76 104Perl_reall_srchlen
105Perl_regdump
106Perl_regfold
107Perl_regmyendp
108Perl_regmyp_size
109Perl_regmystartp
110Perl_regnarrate
111Perl_regprop
112Perl_same_dirent
113Perl_saw_return
114Perl_scan_const
115Perl_scan_formline
116Perl_scan_heredoc
117Perl_scan_ident
118Perl_scan_inputsymbol
119Perl_scan_pat
120Perl_scan_prefix
121Perl_scan_str
122Perl_scan_subst
123Perl_scan_trans
124Perl_scan_word
68dc0745 125Perl_setenv_getix
0a753a76 126Perl_skipspace
127Perl_sublex_done
128Perl_sublex_start
0a753a76 129Perl_sv_ref
130Perl_sv_setptrobj
131Perl_timesbuf
132Perl_too_few_arguments
133Perl_too_many_arguments
134Perl_unlnk
135Perl_wait4pid
136Perl_watch
137Perl_yyname
138Perl_yyrule
139allgvs
140curblock
0a753a76 141curcsv
0a753a76 142lastretstr
143mystack_mark
144perl_init_ext
145perl_requirepv
0a753a76 146stack
ff0cee69 147statusvalue_vms
0a753a76 148Perl_safexcalloc
149Perl_safexmalloc
150Perl_safexfree
151Perl_safexrealloc
68dc0745 152Perl_my_memcmp
8b10511d 153Perl_my_memset
68dc0745 154Perl_cshlen
155Perl_cshname
0da3735a 156Perl_opsave
0a753a76 157!END!OF!SKIP!
158
bbc8f9de 159if ($define{'MYMALLOC'})
160 {
161 $skip_sym .= <<'!END!OF!SKIP!';
162Perl_safefree
163Perl_safemalloc
164Perl_saferealloc
165Perl_safecalloc
166!END!OF!SKIP!
167 emit_symbol('Perl_malloc');
168 emit_symbol('Perl_free');
169 emit_symbol('Perl_realloc');
170 emit_symbol('Perl_calloc');
171 }
172
d55594ae 173unless ($define{'USE_THREADS'})
174 {
175 $skip_sym .= <<'!END!OF!SKIP!';
176Perl_condpair_magic
177Perl_thr_key
178Perl_sv_mutex
179Perl_malloc_mutex
180Perl_eval_mutex
181Perl_eval_cond
182Perl_eval_owner
183Perl_threads_mutex
32f822de 184Perl_new_struct_thread
185Perl_nthreads
d55594ae 186Perl_nthreads_cond
32f822de 187Perl_per_thread_magicals
188Perl_thrsv
d55594ae 189Perl_unlock_condpair
190Perl_vtbl_mutex
191Perl_magic_mutexfree
192Perl_sv_iv
193Perl_sv_nv
194Perl_sv_true
195Perl_sv_uv
196Perl_sv_pvn
197Perl_newRV_noinc
198!END!OF!SKIP!
199 }
200
201if ($define{'USE_THISPTR'} || $define{'USE_THREADS'})
202 {
203 open(THREAD,"<../thread.sym") || die "Cannot open thread.sym:$!";
204 while (<THREAD>)
205 {
206 next if (!/^[A-Za-z]/);
207 next if (/_amg[ \t]*$/);
208 $skip_sym .= "Perl_".$_;
209 }
210 close(THREAD);
211 $skip_sym .= "Perl_op\n";
212 }
213
214unless ($define{'USE_THREADS'})
215 {
216 $skip_sym .= "Perl_thread_create\n";
217 }
218
0a753a76 219# All symbols have a Perl_ prefix because that's what embed.h
220# sticks in front of them.
221
222
0a753a76 223open (GLOBAL, "<../global.sym") || die "failed to open global.sym" . $!;
224while (<GLOBAL>) {
225 my $symbol;
226 next if (!/^[A-Za-z]/);
227 next if (/_amg[ \t]*$/);
228 $symbol = "Perl_$_";
229 next if ($skip_sym =~ m/$symbol/m);
3e3baf6d 230 emit_symbol($symbol);
231}
0a753a76 232close(GLOBAL);
233
234# also add symbols from interp.sym
235# They are only needed if -DMULTIPLICITY is not set but it
236# doesn't hurt to include them anyway.
237# these don't have Perl prefix
238
239open (INTERP, "<../interp.sym") || die "failed to open interp.sym" . $!;
240while (<INTERP>) {
241 my $symbol;
242 next if (!/^[A-Za-z]/);
243 next if (/_amg[ \t]*$/);
244 $symbol = $_;
245 next if ($skip_sym =~ m/$symbol/m);
246 #print "\t$symbol";
3e3baf6d 247 emit_symbol("Perl_" . $symbol);
248}
0a753a76 249
250#close(INTERP);
251
252while (<DATA>) {
253 my $symbol;
254 next if (!/^[A-Za-z]/);
255 next if (/^#/);
256 $symbol = $_;
257 next if ($skip_sym =~ m/^$symbol/m);
d55594ae 258 $symbol = "Perl_".$symbol if ($define{'USE_THISPTR'}
259 && $symbol =~ /^perl/);
3e3baf6d 260 emit_symbol($symbol);
261}
262
263sub emit_symbol {
264 my $symbol = shift;
265 chomp $symbol;
266 if ($CCTYPE eq "BORLAND") {
267 # workaround Borland quirk by exporting both the straight
84902520 268 # name and a name with leading underscore. Note the
269 # alias *must* come after the symbol itself, if both
270 # are to be exported. (Linker bug?)
3e3baf6d 271 print "\t_$symbol\n";
84902520 272 print "\t$symbol = _$symbol\n";
3e3baf6d 273 }
274 else {
84902520 275 # for binary coexistence, export both the symbol and
276 # alias with leading underscore
3e3baf6d 277 print "\t$symbol\n";
84902520 278 print "\t_$symbol = $symbol\n";
3e3baf6d 279 }
280}
0a753a76 281
2821;
283__DATA__
284# extra globals not included above.
285perl_init_i18nl10n
286perl_init_ext
287perl_alloc
288perl_construct
289perl_destruct
290perl_free
291perl_parse
292perl_run
293perl_get_sv
294perl_get_av
295perl_get_hv
296perl_get_cv
297perl_call_argv
298perl_call_pv
299perl_call_method
300perl_call_sv
10dd38fc 301perl_require_pv
302perl_eval_pv
303perl_eval_sv
d28b3ca3 304boot_DynaLoader
d55594ae 305Perl_thread_create
68dc0745 306win32_errno
96e4d5b1 307win32_environ
68dc0745 308win32_stdin
309win32_stdout
96e4d5b1 310win32_stderr
68dc0745 311win32_ferror
312win32_feof
313win32_strerror
314win32_fprintf
315win32_printf
316win32_vfprintf
96e4d5b1 317win32_vprintf
68dc0745 318win32_fread
319win32_fwrite
320win32_fopen
321win32_fdopen
322win32_freopen
323win32_fclose
324win32_fputs
325win32_fputc
326win32_ungetc
327win32_getc
328win32_fileno
329win32_clearerr
330win32_fflush
331win32_ftell
332win32_fseek
333win32_fgetpos
334win32_fsetpos
335win32_rewind
336win32_tmpfile
337win32_abort
338win32_fstat
96e4d5b1 339win32_stat
68dc0745 340win32_pipe
341win32_popen
342win32_pclose
343win32_setmode
96e4d5b1 344win32_lseek
345win32_tell
68dc0745 346win32_dup
347win32_dup2
96e4d5b1 348win32_open
349win32_close
350win32_eof
68dc0745 351win32_read
352win32_write
3e3baf6d 353win32_spawnvp
5aabfad6 354win32_mkdir
355win32_rmdir
356win32_chdir
c90c0ff4 357win32_flock
6890e559 358win32_execvp
54310121 359win32_htons
360win32_ntohs
361win32_htonl
362win32_ntohl
363win32_inet_addr
364win32_inet_ntoa
365win32_socket
366win32_bind
367win32_listen
368win32_accept
369win32_connect
370win32_send
371win32_sendto
372win32_recv
373win32_recvfrom
374win32_shutdown
3a25acb4 375win32_closesocket
54310121 376win32_ioctlsocket
377win32_setsockopt
378win32_getsockopt
379win32_getpeername
380win32_getsockname
381win32_gethostname
382win32_gethostbyname
383win32_gethostbyaddr
384win32_getprotobyname
385win32_getprotobynumber
386win32_getservbyname
387win32_getservbyport
388win32_select
389win32_endhostent
390win32_endnetent
391win32_endprotoent
392win32_endservent
393win32_getnetent
394win32_getnetbyname
395win32_getnetbyaddr
396win32_getprotoent
397win32_getservent
398win32_sethostent
399win32_setnetent
400win32_setprotoent
401win32_setservent
ad2e33dc 402win32_getenv
84902520 403win32_perror
404win32_setbuf
405win32_setvbuf
406win32_flushall
407win32_fcloseall
408win32_fgets
409win32_gets
410win32_fgetc
411win32_putc
412win32_puts
413win32_getchar
414win32_putchar
415win32_malloc
416win32_calloc
417win32_realloc
418win32_free
f3986ebb 419win32_sleep
420win32_times
421win32_alarm
65e48ea9 422win32_open_osfhandle
423win32_get_osfhandle
ad2e33dc 424Perl_win32_init
f3986ebb 425Perl_init_os_extras
9811a7d7 426Perl_getTHR
0fefa03b 427Perl_setTHR
84902520 428RunPerl