This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
1a555f53f3d05d9c49faf1bafbd6b7d2a6f54a7e
[perl5.git] / win32 / makedef.pl
1
2 #!../miniperl
3
4 # Written: 10 April 1996 Gary Ng (71564.1743@compuserve.com)
5
6 # Create the export list for perl.
7 # Needed by WIN32 for creating perl.dll
8 # based on perl_exp.SH in the main perl distribution directory
9
10 # This simple program relys on 'global.sym' being up to date
11 # with all of the global symbols that a dynamicly link library
12 # might want to access.
13
14 # There is some symbol defined in global.sym and interp.sym
15 # that does not present in the WIN32 port but there is no easy
16 # way to find them so I just put a exeception list here
17
18 $skip_sym=<<'!END!OF!SKIP!';
19 Perl_SvIV
20 Perl_SvNV
21 Perl_SvTRUE
22 Perl_SvUV
23 Perl_block_type
24 Perl_sv_pvn
25 Perl_additem
26 Perl_cast_ulong
27 Perl_check_uni
28 Perl_checkcomma
29 Perl_chsize
30 Perl_ck_aelem
31 Perl_cryptseen
32 Perl_cx_dump
33 Perl_deb
34 Perl_deb_growlevel
35 Perl_debop
36 Perl_debprofdump
37 Perl_debstack
38 Perl_debstackptrs
39 Perl_do_ipcctl
40 Perl_do_ipcget
41 Perl_do_msgrcv
42 Perl_do_msgsnd
43 Perl_do_semop
44 Perl_do_shmio
45 Perl_doeval
46 Perl_dofindlabel
47 Perl_dopoptoeval
48 Perl_dump_eval
49 Perl_dump_fds
50 Perl_dump_form
51 Perl_dump_gv
52 Perl_dump_mstats
53 Perl_dump_op
54 Perl_dump_packsubs
55 Perl_dump_pm
56 Perl_dump_sub
57 Perl_expectterm
58 Perl_fetch_gv
59 Perl_fetch_io
60 Perl_force_ident
61 Perl_force_next
62 Perl_force_word
63 Perl_hv_stashpv
64 Perl_intuit_more
65 Perl_know_next
66 Perl_modkids
67 Perl_mstats
68 Perl_my_bzero
69 Perl_my_htonl
70 Perl_my_ntohl
71 Perl_my_swap
72 Perl_my_chsize
73 Perl_newXSUB
74 Perl_no_fh_allowed
75 Perl_no_op
76 Perl_nointrp
77 Perl_nomem
78 Perl_pp_cswitch
79 Perl_pp_entersubr
80 Perl_pp_evalonce
81 Perl_pp_interp
82 Perl_pp_map
83 Perl_pp_nswitch
84 Perl_q
85 Perl_reall_srchlen
86 Perl_regdump
87 Perl_regfold
88 Perl_regmyendp
89 Perl_regmyp_size
90 Perl_regmystartp
91 Perl_regnarrate
92 Perl_regprop
93 Perl_same_dirent
94 Perl_saw_return
95 Perl_scan_const
96 Perl_scan_formline
97 Perl_scan_heredoc
98 Perl_scan_ident
99 Perl_scan_inputsymbol
100 Perl_scan_pat
101 Perl_scan_prefix
102 Perl_scan_str
103 Perl_scan_subst
104 Perl_scan_trans
105 Perl_scan_word
106 Perl_skipspace
107 Perl_sublex_done
108 Perl_sublex_start
109 Perl_sv_peek
110 Perl_sv_ref
111 Perl_sv_setptrobj
112 Perl_timesbuf
113 Perl_too_few_arguments
114 Perl_too_many_arguments
115 Perl_unlnk
116 Perl_wait4pid
117 Perl_watch
118 Perl_yyname
119 Perl_yyrule
120 allgvs
121 curblock
122 curcop
123 curcopdb
124 curcsv
125 envgv
126 lastretstr
127 mystack_mark
128 perl_init_ext
129 perl_requirepv
130 siggv
131 stack
132 tainting
133 Perl_safexcalloc
134 Perl_safexmalloc
135 Perl_safexfree
136 Perl_safexrealloc
137 !END!OF!SKIP!
138
139 # All symbols have a Perl_ prefix because that's what embed.h
140 # sticks in front of them.
141
142
143 print "LIBRARY Perl\n";
144 print "DESCRIPTION 'Perl interpreter, export autogenerated'\n";
145 print "CODE LOADONCALL\n";
146 print "DATA LOADONCALL NONSHARED MULTIPLE\n";
147 print "EXPORTS\n";
148
149 open (GLOBAL, "<../global.sym") || die "failed to open global.sym" . $!;
150 while (<GLOBAL>) {
151         my $symbol;
152         next if (!/^[A-Za-z]/);
153         next if (/_amg[ \t]*$/);
154         $symbol = "Perl_$_";
155         next if ($skip_sym =~ m/$symbol/m);
156         print "\t$symbol";
157         };
158 close(GLOBAL);
159
160 # also add symbols from interp.sym
161 # They are only needed if -DMULTIPLICITY is not set but it
162 # doesn't hurt to include them anyway.
163 # these don't have Perl prefix
164
165 open (INTERP, "<../interp.sym") || die "failed to open interp.sym" . $!;
166 while (<INTERP>) {
167         my $symbol;
168         next if (!/^[A-Za-z]/);
169         next if (/_amg[ \t]*$/);
170         $symbol = $_;
171         next if ($skip_sym =~ m/$symbol/m);
172         #print "\t$symbol";
173         print "\tPerl_$symbol";
174         };
175
176 #close(INTERP);
177
178 while (<DATA>) {
179         my $symbol;
180         next if (!/^[A-Za-z]/);
181         next if (/^#/);
182         $symbol = $_;
183         next if ($skip_sym =~ m/^$symbol/m);
184         print "\t$symbol";
185         };
186
187 1;
188 __DATA__
189 # extra globals not included above.
190 perl_init_i18nl10n
191 perl_init_ext
192 perl_alloc
193 perl_construct
194 perl_destruct
195 perl_free
196 perl_parse
197 perl_run
198 perl_get_sv
199 perl_get_av
200 perl_get_hv
201 perl_get_cv
202 perl_call_argv
203 perl_call_pv
204 perl_call_method
205 perl_call_sv
206 perl_requirepv
207 win32_inet_addr
208 win32_gethostbyname
209 win32_inet_ntoa
210 win32_htons
211 win32_ntohs
212 win32_htonl