diff options
Diffstat (limited to 'src/lib/libcrypto/util')
-rw-r--r-- | src/lib/libcrypto/util/copy.pl | 59 | ||||
-rw-r--r-- | src/lib/libcrypto/util/extract-section.pl | 12 | ||||
-rw-r--r-- | src/lib/libcrypto/util/pl/netware.pl | 526 |
3 files changed, 597 insertions, 0 deletions
diff --git a/src/lib/libcrypto/util/copy.pl b/src/lib/libcrypto/util/copy.pl new file mode 100644 index 0000000000..e20b45530a --- /dev/null +++ b/src/lib/libcrypto/util/copy.pl | |||
@@ -0,0 +1,59 @@ | |||
1 | #!/usr/local/bin/perl | ||
2 | |||
3 | use Fcntl; | ||
4 | |||
5 | |||
6 | # copy.pl | ||
7 | |||
8 | # Perl script 'copy' comment. On Windows the built in "copy" command also | ||
9 | # copies timestamps: this messes up Makefile dependencies. | ||
10 | |||
11 | my $arg; | ||
12 | |||
13 | foreach $arg (@ARGV) { | ||
14 | $arg =~ s|\\|/|g; # compensate for bug/feature in cygwin glob... | ||
15 | foreach (glob $arg) | ||
16 | { | ||
17 | push @filelist, $_; | ||
18 | } | ||
19 | } | ||
20 | |||
21 | $fnum = @filelist; | ||
22 | |||
23 | if ($fnum <= 1) | ||
24 | { | ||
25 | die "Need at least two filenames"; | ||
26 | } | ||
27 | |||
28 | $dest = pop @filelist; | ||
29 | |||
30 | if ($fnum > 2 && ! -d $dest) | ||
31 | { | ||
32 | die "Destination must be a directory"; | ||
33 | } | ||
34 | |||
35 | foreach (@filelist) | ||
36 | { | ||
37 | if (-d $dest) | ||
38 | { | ||
39 | $dfile = $_; | ||
40 | $dfile =~ s|^.*[/\\]([^/\\]*)$|$1|; | ||
41 | $dfile = "$dest/$dfile"; | ||
42 | } | ||
43 | else | ||
44 | { | ||
45 | $dfile = $dest; | ||
46 | } | ||
47 | sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_"; | ||
48 | sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY) | ||
49 | || die "Can't Open $dfile"; | ||
50 | while (sysread IN, $buf, 10240) | ||
51 | { | ||
52 | syswrite(OUT, $buf, length($buf)); | ||
53 | } | ||
54 | close(IN); | ||
55 | close(OUT); | ||
56 | print "Copying: $_ to $dfile\n"; | ||
57 | } | ||
58 | |||
59 | |||
diff --git a/src/lib/libcrypto/util/extract-section.pl b/src/lib/libcrypto/util/extract-section.pl new file mode 100644 index 0000000000..7a0ba4f69a --- /dev/null +++ b/src/lib/libcrypto/util/extract-section.pl | |||
@@ -0,0 +1,12 @@ | |||
1 | #!/usr/bin/perl | ||
2 | |||
3 | while(<STDIN>) { | ||
4 | if (/=for\s+comment\s+openssl_manual_section:(\S+)/) | ||
5 | { | ||
6 | print "$1\n"; | ||
7 | exit 0; | ||
8 | } | ||
9 | } | ||
10 | |||
11 | print "$ARGV[0]\n"; | ||
12 | |||
diff --git a/src/lib/libcrypto/util/pl/netware.pl b/src/lib/libcrypto/util/pl/netware.pl new file mode 100644 index 0000000000..173c9919f2 --- /dev/null +++ b/src/lib/libcrypto/util/pl/netware.pl | |||
@@ -0,0 +1,526 @@ | |||
1 | # Metrowerks Codewarrior or gcc / nlmconv for NetWare | ||
2 | # | ||
3 | |||
4 | $version_header = "crypto/opensslv.h"; | ||
5 | open(IN, "$version_header") or die "Couldn't open $version_header: $!"; | ||
6 | while (<IN>) { | ||
7 | if (/^#define[\s\t]+OPENSSL_VERSION_NUMBER[\s\t]+0x(\d)(\d{2})(\d{2})(\d{2})/) | ||
8 | { | ||
9 | # die "OpenSSL version detected: $1.$2.$3.$4\n"; | ||
10 | #$nlmvernum = "$1,$2,$3"; | ||
11 | $nlmvernum = "$1,".($2*10+$3).",".($4*1); | ||
12 | #$nlmverstr = "$1.".($2*1).".".($3*1).($4?(chr(96+$4)):""); | ||
13 | break; | ||
14 | } | ||
15 | } | ||
16 | close(IN) or die "Couldn't close $version_header: $!"; | ||
17 | |||
18 | $readme_file = "README"; | ||
19 | open(IN, $readme_file) or die "Couldn't open $readme_file: $!"; | ||
20 | while (<IN>) { | ||
21 | if (/^[\s\t]+OpenSSL[\s\t]+(\d)\.(\d{1,2})\.(\d{1,2})([a-z])(.*)/) | ||
22 | { | ||
23 | #$nlmvernum = "$1,$2,$3"; | ||
24 | #$nlmvernum = "$1,".($2*10+$3).",".($4*1); | ||
25 | $nlmverstr = "$1.$2.$3$4$5"; | ||
26 | } | ||
27 | elsif (/^[\s\t]+(Copyright \(c\) \d{4}\-\d{4} The OpenSSL Project)$/) | ||
28 | { | ||
29 | $nlmcpystr = $1; | ||
30 | } | ||
31 | break if ($nlmvernum && $nlmcpystr); | ||
32 | } | ||
33 | close(IN) or die "Couldn't close $readme_file: $!"; | ||
34 | |||
35 | # Define stacksize here | ||
36 | $nlmstack = "32768"; | ||
37 | |||
38 | # some default settings here in case we failed to find them in README | ||
39 | $nlmvernum = "1,0,0" if (!$nlmvernum); | ||
40 | $nlmverstr = "OpenSSL" if (!$nlmverstr); | ||
41 | $nlmcpystr = "Copyright (c) 1998-now The OpenSSL Project" if (!$nlmcpystr); | ||
42 | |||
43 | # die "OpenSSL copyright: $nlmcpystr\nOpenSSL verstring: $nlmverstr\nOpenSSL vernumber: $nlmvernum\n"; | ||
44 | |||
45 | # The import files and other misc imports needed to link | ||
46 | @misc_imports = ("GetProcessSwitchCount", "RunningProcess", | ||
47 | "GetSuperHighResolutionTimer"); | ||
48 | if ($LIBC) | ||
49 | { | ||
50 | @import_files = ("libc.imp"); | ||
51 | @module_files = ("libc"); | ||
52 | $libarch = "LIBC"; | ||
53 | } | ||
54 | else | ||
55 | { | ||
56 | # clib build | ||
57 | @import_files = ("clib.imp"); | ||
58 | push(@import_files, "socklib.imp") if ($BSDSOCK); | ||
59 | @module_files = ("clib"); | ||
60 | # push(@misc_imports, "_rt_modu64%16", "_rt_divu64%16"); | ||
61 | $libarch = "CLIB"; | ||
62 | } | ||
63 | if ($BSDSOCK) | ||
64 | { | ||
65 | $libarch .= "-BSD"; | ||
66 | } | ||
67 | else | ||
68 | { | ||
69 | $libarch .= "-WS2"; | ||
70 | push(@import_files, "ws2nlm.imp"); | ||
71 | } | ||
72 | |||
73 | # The "IMPORTS" environment variable must be set and point to the location | ||
74 | # where import files (*.imp) can be found. | ||
75 | # Example: set IMPORTS=c:\ndk\nwsdk\imports | ||
76 | $import_path = $ENV{"IMPORTS"} || die ("IMPORTS environment variable not set\n"); | ||
77 | |||
78 | |||
79 | # The "PRELUDE" environment variable must be set and point to the location | ||
80 | # and name of the prelude source to link with ( nwpre.obj is recommended ). | ||
81 | # Example: set PRELUDE=c:\codewar\novell support\metrowerks support\libraries\runtime\nwpre.obj | ||
82 | $prelude = $ENV{"PRELUDE"} || die ("PRELUDE environment variable not set\n"); | ||
83 | |||
84 | # The "INCLUDES" environment variable must be set and point to the location | ||
85 | # where import files (*.imp) can be found. | ||
86 | $include_path = $ENV{"INCLUDE"} || die ("INCLUDES environment variable not set\n"); | ||
87 | $include_path =~ s/\\/\//g; | ||
88 | $include_path = join(" -I", split(/;/, $include_path)); | ||
89 | |||
90 | # check for gcc compiler | ||
91 | $gnuc = $ENV{"GNUC"}; | ||
92 | |||
93 | #$ssl= "ssleay32"; | ||
94 | #$crypto="libeay32"; | ||
95 | |||
96 | if ($gnuc) | ||
97 | { | ||
98 | # C compiler | ||
99 | $cc='gcc'; | ||
100 | # Linker | ||
101 | $link='nlmconv'; | ||
102 | # librarian | ||
103 | $mklib='ar'; | ||
104 | $o='/'; | ||
105 | # cp command | ||
106 | $cp='cp -af'; | ||
107 | # rm command | ||
108 | $rm='rm -f'; | ||
109 | # mv command | ||
110 | $mv='mv -f'; | ||
111 | # mkdir command | ||
112 | $mkdir='gmkdir'; | ||
113 | #$ranlib='ranlib'; | ||
114 | } | ||
115 | else | ||
116 | { | ||
117 | # C compiler | ||
118 | $cc='mwccnlm'; | ||
119 | # Linker | ||
120 | $link='mwldnlm'; | ||
121 | # librarian | ||
122 | $mklib='mwldnlm'; | ||
123 | # Path separator | ||
124 | $o='\\'; | ||
125 | # cp command | ||
126 | $cp='copy >nul:'; | ||
127 | # rm command | ||
128 | $rm='del /f /q'; | ||
129 | } | ||
130 | |||
131 | # assembler | ||
132 | if ($nw_nasm) | ||
133 | { | ||
134 | if ($gnuc) | ||
135 | { | ||
136 | $asm="nasmw -s -f elf"; | ||
137 | } | ||
138 | else | ||
139 | { | ||
140 | $asm="nasmw -s -f coff"; | ||
141 | } | ||
142 | $afile="-o "; | ||
143 | $asm.=" -g" if $debug; | ||
144 | } | ||
145 | elsif ($nw_mwasm) | ||
146 | { | ||
147 | $asm="mwasmnlm -maxerrors 20"; | ||
148 | $afile="-o "; | ||
149 | $asm.=" -g" if $debug; | ||
150 | } | ||
151 | elsif ($nw_masm) | ||
152 | { | ||
153 | # masm assembly settings - it should be possible to use masm but haven't | ||
154 | # got it working. | ||
155 | # $asm='ml /Cp /coff /c /Cx'; | ||
156 | # $asm.=" /Zi" if $debug; | ||
157 | # $afile='/Fo'; | ||
158 | die("Support for masm assembler not yet functional\n"); | ||
159 | } | ||
160 | else | ||
161 | { | ||
162 | $asm=""; | ||
163 | $afile=""; | ||
164 | } | ||
165 | |||
166 | |||
167 | |||
168 | if ($gnuc) | ||
169 | { | ||
170 | # compile flags for GNUC | ||
171 | # additional flags based upon debug | non-debug | ||
172 | if ($debug) | ||
173 | { | ||
174 | $cflags="-g -DDEBUG"; | ||
175 | } | ||
176 | else | ||
177 | { | ||
178 | $cflags="-O2"; | ||
179 | } | ||
180 | $cflags.=" -nostdinc -I$include_path \\ | ||
181 | -fno-builtin -fpcc-struct-return -fno-strict-aliasing \\ | ||
182 | -funsigned-char -Wall -Wno-unused -Wno-uninitialized"; | ||
183 | |||
184 | # link flags | ||
185 | $lflags="-T"; | ||
186 | } | ||
187 | else | ||
188 | { | ||
189 | # compile flags for CodeWarrior | ||
190 | # additional flags based upon debug | non-debug | ||
191 | if ($debug) | ||
192 | { | ||
193 | $cflags="-opt off -g -sym internal -DDEBUG"; | ||
194 | } | ||
195 | else | ||
196 | { | ||
197 | # CodeWarrior compiler has a problem with optimizations for floating | ||
198 | # points - no optimizations until further investigation | ||
199 | # $cflags="-opt all"; | ||
200 | } | ||
201 | |||
202 | # NOTES: Several c files in the crypto subdirectory include headers from | ||
203 | # their local directories. Metrowerks wouldn't find these h files | ||
204 | # without adding individual include directives as compile flags | ||
205 | # or modifying the c files. Instead of adding individual include | ||
206 | # paths for each subdirectory a recursive include directive | ||
207 | # is used ( -ir crypto ). | ||
208 | # | ||
209 | # A similar issue exists for the engines and apps subdirectories. | ||
210 | # | ||
211 | # Turned off the "possible" warnings ( -w nopossible ). Metrowerks | ||
212 | # complained a lot about various stuff. May want to turn back | ||
213 | # on for further development. | ||
214 | $cflags.=" -nostdinc -ir crypto -ir engines -ir apps -I$include_path \\ | ||
215 | -msgstyle gcc -align 4 -processor pentium -char unsigned \\ | ||
216 | -w on -w nolargeargs -w nopossible -w nounusedarg -w nounusedexpr \\ | ||
217 | -w noimplicitconv -relax_pointers -nosyspath -maxerrors 20"; | ||
218 | |||
219 | # link flags | ||
220 | $lflags="-msgstyle gcc -zerobss -nostdlib -sym internal -commandfile"; | ||
221 | } | ||
222 | |||
223 | # common defines | ||
224 | $cflags.=" -DL_ENDIAN -DOPENSSL_SYSNAME_NETWARE -U_WIN32"; | ||
225 | |||
226 | # If LibC build add in NKS_LIBC define and set the entry/exit | ||
227 | # routines - The default entry/exit routines are for CLib and don't exist | ||
228 | # in LibC | ||
229 | if ($LIBC) | ||
230 | { | ||
231 | $cflags.=" -DNETWARE_LIBC"; | ||
232 | $nlmstart = "_LibCPrelude"; | ||
233 | $nlmexit = "_LibCPostlude"; | ||
234 | @nlm_flags = ("pseudopreemption", "flag_on 64"); | ||
235 | } | ||
236 | else | ||
237 | { | ||
238 | $cflags.=" -DNETWARE_CLIB"; | ||
239 | $nlmstart = "_Prelude"; | ||
240 | $nlmexit = "_Stop"; | ||
241 | } | ||
242 | |||
243 | # If BSD Socket support is requested, set a define for the compiler | ||
244 | if ($BSDSOCK) | ||
245 | { | ||
246 | $cflags.=" -DNETWARE_BSDSOCK"; | ||
247 | if (!$LIBC) | ||
248 | { | ||
249 | $cflags.=" -DNETDB_USE_INTERNET"; | ||
250 | } | ||
251 | } | ||
252 | |||
253 | |||
254 | # linking stuff | ||
255 | # for the output directories use the mk1mf.pl values with "_nw" appended | ||
256 | if ($shlib) | ||
257 | { | ||
258 | if ($LIBC) | ||
259 | { | ||
260 | $out_def.="_nw_libc_nlm"; | ||
261 | $tmp_def.="_nw_libc_nlm"; | ||
262 | $inc_def.="_nw_libc_nlm"; | ||
263 | } | ||
264 | else # NETWARE_CLIB | ||
265 | { | ||
266 | $out_def.="_nw_clib_nlm"; | ||
267 | $tmp_def.="_nw_clib_nlm"; | ||
268 | $inc_def.="_nw_clib_nlm"; | ||
269 | } | ||
270 | } | ||
271 | else | ||
272 | { | ||
273 | if ($gnuc) # GNUC Tools | ||
274 | { | ||
275 | $libp=".a"; | ||
276 | $shlibp=".a"; | ||
277 | $lib_flags="-cr"; | ||
278 | } | ||
279 | else # CodeWarrior | ||
280 | { | ||
281 | $libp=".lib"; | ||
282 | $shlibp=".lib"; | ||
283 | $lib_flags="-nodefaults -type library -o"; | ||
284 | } | ||
285 | if ($LIBC) | ||
286 | { | ||
287 | $out_def.="_nw_libc"; | ||
288 | $tmp_def.="_nw_libc"; | ||
289 | $inc_def.="_nw_libc"; | ||
290 | } | ||
291 | else # NETWARE_CLIB | ||
292 | { | ||
293 | $out_def.="_nw_clib"; | ||
294 | $tmp_def.="_nw_clib"; | ||
295 | $inc_def.="_nw_clib"; | ||
296 | } | ||
297 | } | ||
298 | |||
299 | # used by mk1mf.pl | ||
300 | $obj='.o'; | ||
301 | $ofile='-o '; | ||
302 | $efile=''; | ||
303 | $exep='.nlm'; | ||
304 | $ex_libs=''; | ||
305 | |||
306 | if (!$no_asm) | ||
307 | { | ||
308 | $bn_asm_obj="\$(OBJ_D)${o}bn-nw${obj}"; | ||
309 | $bn_asm_src="crypto${o}bn${o}asm${o}bn-nw.asm"; | ||
310 | $bnco_asm_obj="\$(OBJ_D)${o}co-nw${obj}"; | ||
311 | $bnco_asm_src="crypto${o}bn${o}asm${o}co-nw.asm"; | ||
312 | $aes_asm_obj="\$(OBJ_D)${o}a-nw${obj}"; | ||
313 | $aes_asm_src="crypto${o}aes${o}asm${o}a-nw.asm"; | ||
314 | $des_enc_obj="\$(OBJ_D)${o}d-nw${obj} \$(OBJ_D)${o}y-nw${obj}"; | ||
315 | $des_enc_src="crypto${o}des${o}asm${o}d-nw.asm crypto${o}des${o}asm${o}y-nw.asm"; | ||
316 | $bf_enc_obj="\$(OBJ_D)${o}b-nw${obj}"; | ||
317 | $bf_enc_src="crypto${o}bf${o}asm${o}b-nw.asm"; | ||
318 | $cast_enc_obj="\$(OBJ_D)${o}c-nw${obj}"; | ||
319 | $cast_enc_src="crypto${o}cast${o}asm${o}c-nw.asm"; | ||
320 | $rc4_enc_obj="\$(OBJ_D)${o}r4-nw${obj}"; | ||
321 | $rc4_enc_src="crypto${o}rc4${o}asm${o}r4-nw.asm"; | ||
322 | $rc5_enc_obj="\$(OBJ_D)${o}r5-nw${obj}"; | ||
323 | $rc5_enc_src="crypto${o}rc5${o}asm${o}r5-nw.asm"; | ||
324 | $md5_asm_obj="\$(OBJ_D)${o}m5-nw${obj}"; | ||
325 | $md5_asm_src="crypto${o}md5${o}asm${o}m5-nw.asm"; | ||
326 | $sha1_asm_obj="\$(OBJ_D)${o}s1-nw${obj}"; | ||
327 | $sha1_asm_src="crypto${o}sha${o}asm${o}s1-nw.asm"; | ||
328 | $rmd160_asm_obj="\$(OBJ_D)${o}rm-nw${obj}"; | ||
329 | $rmd160_asm_src="crypto${o}ripemd${o}asm${o}rm-nw.asm"; | ||
330 | $cpuid_asm_obj="\$(OBJ_D)${o}x86cpuid-nw${obj}"; | ||
331 | $cpuid_asm_src="crypto${o}x86cpuid-nw.asm"; | ||
332 | $cflags.=" -DOPENSSL_CPUID_OBJ -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DMD5_ASM -DSHA1_ASM"; | ||
333 | $cflags.=" -DAES_ASM -DRMD160_ASM"; | ||
334 | } | ||
335 | else | ||
336 | { | ||
337 | $bn_asm_obj=''; | ||
338 | $bn_asm_src=''; | ||
339 | $bnco_asm_obj=''; | ||
340 | $bnco_asm_src=''; | ||
341 | $aes_asm_obj=''; | ||
342 | $aes_asm_src=''; | ||
343 | $des_enc_obj=''; | ||
344 | $des_enc_src=''; | ||
345 | $bf_enc_obj=''; | ||
346 | $bf_enc_src=''; | ||
347 | $cast_enc_obj=''; | ||
348 | $cast_enc_src=''; | ||
349 | $rc4_enc_obj=''; | ||
350 | $rc4_enc_src=''; | ||
351 | $rc5_enc_obj=''; | ||
352 | $rc5_enc_src=''; | ||
353 | $md5_asm_obj=''; | ||
354 | $md5_asm_src=''; | ||
355 | $sha1_asm_obj=''; | ||
356 | $sha1_asm_src=''; | ||
357 | $rmd160_asm_obj=''; | ||
358 | $rmd160_asm_src=''; | ||
359 | $cpuid_asm_obj=''; | ||
360 | $cpuid_asm_src=''; | ||
361 | } | ||
362 | |||
363 | # create the *.def linker command files in \openssl\netware\ directory | ||
364 | sub do_def_file | ||
365 | { | ||
366 | # strip off the leading path | ||
367 | my($target) = bname(shift); | ||
368 | my($i); | ||
369 | |||
370 | if ($target =~ /(.*).nlm/) | ||
371 | { | ||
372 | $target = $1; | ||
373 | } | ||
374 | |||
375 | # special case for openssl - the mk1mf.pl defines E_EXE = openssl | ||
376 | if ($target =~ /E_EXE/) | ||
377 | { | ||
378 | $target =~ s/\$\(E_EXE\)/openssl/; | ||
379 | } | ||
380 | |||
381 | # Note: originally tried to use full path ( \openssl\netware\$target.def ) | ||
382 | # Metrowerks linker choked on this with an assertion failure. bug??? | ||
383 | # | ||
384 | my($def_file) = "netware${o}$target.def"; | ||
385 | |||
386 | open(DEF_OUT, ">$def_file") || die("unable to open file $def_file\n"); | ||
387 | |||
388 | print( DEF_OUT "# command file generated by netware.pl for NLM target.\n" ); | ||
389 | print( DEF_OUT "# do not edit this file - all your changes will be lost!!\n" ); | ||
390 | print( DEF_OUT "#\n"); | ||
391 | print( DEF_OUT "DESCRIPTION \"$target ($libarch) - OpenSSL $nlmverstr\"\n"); | ||
392 | print( DEF_OUT "COPYRIGHT \"$nlmcpystr\"\n"); | ||
393 | print( DEF_OUT "VERSION $nlmvernum\n"); | ||
394 | print( DEF_OUT "STACK $nlmstack\n"); | ||
395 | print( DEF_OUT "START $nlmstart\n"); | ||
396 | print( DEF_OUT "EXIT $nlmexit\n"); | ||
397 | |||
398 | # special case for openssl | ||
399 | if ($target eq "openssl") | ||
400 | { | ||
401 | print( DEF_OUT "SCREENNAME \"OpenSSL $nlmverstr\"\n"); | ||
402 | } | ||
403 | else | ||
404 | { | ||
405 | print( DEF_OUT "SCREENNAME \"DEFAULT\"\n"); | ||
406 | } | ||
407 | |||
408 | foreach $i (@misc_imports) | ||
409 | { | ||
410 | print( DEF_OUT "IMPORT $i\n"); | ||
411 | } | ||
412 | |||
413 | foreach $i (@import_files) | ||
414 | { | ||
415 | print( DEF_OUT "IMPORT \@$import_path${o}$i\n"); | ||
416 | } | ||
417 | |||
418 | foreach $i (@module_files) | ||
419 | { | ||
420 | print( DEF_OUT "MODULE $i\n"); | ||
421 | } | ||
422 | |||
423 | foreach $i (@nlm_flags) | ||
424 | { | ||
425 | print( DEF_OUT "$i\n"); | ||
426 | } | ||
427 | |||
428 | if ($gnuc) | ||
429 | { | ||
430 | if ($target =~ /openssl/) | ||
431 | { | ||
432 | print( DEF_OUT "INPUT ${tmp_def}${o}openssl${obj}\n"); | ||
433 | print( DEF_OUT "INPUT ${tmp_def}${o}openssl${libp}\n"); | ||
434 | } | ||
435 | else | ||
436 | { | ||
437 | print( DEF_OUT "INPUT ${tmp_def}${o}${target}${obj}\n"); | ||
438 | } | ||
439 | print( DEF_OUT "INPUT $prelude\n"); | ||
440 | print( DEF_OUT "INPUT ${out_def}${o}${ssl}${libp} ${out_def}${o}${crypto}${libp}\n"); | ||
441 | print( DEF_OUT "OUTPUT $target.nlm\n"); | ||
442 | } | ||
443 | |||
444 | close(DEF_OUT); | ||
445 | return($def_file); | ||
446 | } | ||
447 | |||
448 | sub do_lib_rule | ||
449 | { | ||
450 | my($objs,$target,$name,$shlib)=@_; | ||
451 | my($ret); | ||
452 | |||
453 | $ret.="$target: $objs\n"; | ||
454 | if (!$shlib) | ||
455 | { | ||
456 | $ret.="\t\@echo Building Lib: $name\n"; | ||
457 | $ret.="\t\$(MKLIB) $lib_flags $target $objs\n"; | ||
458 | $ret.="\t\@echo .\n" | ||
459 | } | ||
460 | else | ||
461 | { | ||
462 | die( "Building as NLM not currently supported!" ); | ||
463 | } | ||
464 | |||
465 | $ret.="\n"; | ||
466 | return($ret); | ||
467 | } | ||
468 | |||
469 | sub do_link_rule | ||
470 | { | ||
471 | my($target,$files,$dep_libs,$libs)=@_; | ||
472 | my($ret); | ||
473 | my($def_file) = do_def_file($target); | ||
474 | |||
475 | $ret.="$target: $files $dep_libs\n"; | ||
476 | |||
477 | # NOTE: When building the test nlms no screen name is given | ||
478 | # which causes the console screen to be used. By using the console | ||
479 | # screen there is no "<press any key to continue>" message which | ||
480 | # requires user interaction. The test script ( do_tests.pl ) needs | ||
481 | # to be able to run the tests without requiring user interaction. | ||
482 | # | ||
483 | # However, the sample program "openssl.nlm" is used by the tests and is | ||
484 | # a interactive sample so a screen is desired when not be run by the | ||
485 | # tests. To solve the problem, two versions of the program are built: | ||
486 | # openssl2 - no screen used by tests | ||
487 | # openssl - default screen - use for normal interactive modes | ||
488 | # | ||
489 | |||
490 | # special case for openssl - the mk1mf.pl defines E_EXE = openssl | ||
491 | if ($target =~ /E_EXE/) | ||
492 | { | ||
493 | my($target2) = $target; | ||
494 | |||
495 | $target2 =~ s/\(E_EXE\)/\(E_EXE\)2/; | ||
496 | |||
497 | # openssl2 | ||
498 | my($def_file2) = do_def_file($target2); | ||
499 | |||
500 | if ($gnuc) | ||
501 | { | ||
502 | $ret.="\t\$(MKLIB) $lib_flags \$(TMP_D)${o}\$(E_EXE).a \$(filter-out \$(TMP_D)${o}\$(E_EXE)${obj},$files)\n"; | ||
503 | $ret.="\t\$(LINK) \$(LFLAGS) $def_file2\n"; | ||
504 | $ret.="\t\@$mv \$(E_EXE)2.nlm \$(TEST_D)\n"; | ||
505 | } | ||
506 | else | ||
507 | { | ||
508 | $ret.="\t\$(LINK) \$(LFLAGS) $def_file2 $files \"$prelude\" $libs -o $target2\n"; | ||
509 | } | ||
510 | } | ||
511 | if ($gnuc) | ||
512 | { | ||
513 | $ret.="\t\$(LINK) \$(LFLAGS) $def_file\n"; | ||
514 | $ret.="\t\@$mv \$(\@F) \$(TEST_D)\n"; | ||
515 | } | ||
516 | else | ||
517 | { | ||
518 | $ret.="\t\$(LINK) \$(LFLAGS) $def_file $files \"$prelude\" $libs -o $target\n"; | ||
519 | } | ||
520 | |||
521 | $ret.="\n"; | ||
522 | return($ret); | ||
523 | |||
524 | } | ||
525 | |||
526 | 1; | ||