]>
Commit | Line | Data |
---|---|---|
d02b48c6 | 1 | #!/usr/local/bin/perl |
b3836ed3 AP |
2 | # VC-32.pl - unified script for Microsoft Visual C++, covering Win32, |
3 | # Win64 and WinCE [follow $FLAVOR variable to trace the differences]. | |
d02b48c6 RE |
4 | # |
5 | ||
6 | $ssl= "ssleay32"; | |
7 | $crypto="libeay32"; | |
d02b48c6 | 8 | |
174b26c4 DSH |
9 | if ($fips && !$shlib) |
10 | { | |
11 | $crypto="libeayfips32"; | |
12 | $crypto_compat = "libeaycompat32.lib"; | |
13 | } | |
14 | else | |
15 | { | |
16 | $crypto="libeay32"; | |
17 | } | |
18 | ||
d02b48c6 | 19 | $o='\\'; |
2e9f1bf0 DSH |
20 | $cp='$(PERL) util/copy.pl'; |
21 | $mkdir='$(PERL) util/mkdir-p.pl'; | |
4664eb52 | 22 | $rm='del /Q'; |
d02b48c6 | 23 | |
ad2695b1 DSH |
24 | $zlib_lib="zlib1.lib"; |
25 | ||
9359fc5f DSH |
26 | # Santize -L options for ms link |
27 | $l_flags =~ s/-L("\[^"]+")/\/libpath:$1/g; | |
28 | $l_flags =~ s/-L(\S+)/\/libpath:$1/g; | |
29 | ||
c55fef76 DSH |
30 | my $ff = ""; |
31 | ||
d02b48c6 RE |
32 | # C compiler stuff |
33 | $cc='cl'; | |
1875e6db AP |
34 | if ($FLAVOR =~ /WIN64/) |
35 | { | |
36 | # Note that we currently don't have /WX on Win64! There is a lot of | |
37 | # warnings, but only of two types: | |
38 | # | |
39 | # C4344: conversion from '__int64' to 'int/long', possible loss of data | |
40 | # C4267: conversion from 'size_t' to 'int/long', possible loss of data | |
41 | # | |
42 | # Amount of latter type is minimized by aliasing strlen to function of | |
43 | # own desing and limiting its return value to 2GB-1 (see e_os.h). As | |
b3836ed3 | 44 | # per 0.9.8 release remaining warnings were explicitly examined and |
1875e6db AP |
45 | # considered safe to ignore. |
46 | # | |
f63e4be3 | 47 | $base_cflags= " $mf_cflag"; |
ab03ead0 | 48 | my $f = $shlib || $fips ?' /MD':' /MT'; |
e1b81fed AP |
49 | $opt_cflags=$f.' /Ox'; |
50 | $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; | |
1875e6db | 51 | $lflags="/nologo /subsystem:console /opt:ref"; |
f63e4be3 AP |
52 | |
53 | *::perlasm_compile_target = sub { | |
54 | my ($target,$source,$bname)=@_; | |
55 | my $ret; | |
56 | ||
57 | $bname =~ s/(.*)\.[^\.]$/$1/; | |
58 | $ret=<<___; | |
59 | \$(TMP_D)$o$bname.asm: $source | |
a23e3dbe | 60 | set ASM=\$(ASM) |
f63e4be3 AP |
61 | \$(PERL) $source \$\@ |
62 | ||
63 | $target: \$(TMP_D)$o$bname.asm | |
64 | \$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm | |
65 | ||
66 | ___ | |
67 | } | |
1875e6db | 68 | } |
b3836ed3 AP |
69 | elsif ($FLAVOR =~ /CE/) |
70 | { | |
1e1c5047 AP |
71 | # sanity check |
72 | die '%OSVERSION% is not defined' if (!defined($ENV{'OSVERSION'})); | |
73 | die '%PLATFORM% is not defined' if (!defined($ENV{'PLATFORM'})); | |
74 | die '%TARGETCPU% is not defined' if (!defined($ENV{'TARGETCPU'})); | |
75 | ||
270512ab AP |
76 | # |
77 | # Idea behind this is to mimic flags set by eVC++ IDE... | |
78 | # | |
1e1c5047 AP |
79 | $wcevers = $ENV{'OSVERSION'}; # WCENNN |
80 | die '%OSVERSION% value is insane' if ($wcevers !~ /^WCE([1-9])([0-9]{2})$/); | |
34be0bb1 AP |
81 | $wcecdefs = "-D_WIN32_WCE=$1$2 -DUNDER_CE=$1$2"; # -D_WIN32_WCE=NNN |
82 | $wcelflag = "/subsystem:windowsce,$1.$2"; # ...,N.NN | |
270512ab | 83 | |
1e1c5047 AP |
84 | $wceplatf = $ENV{'PLATFORM'}; |
85 | $wceplatf =~ tr/a-z0-9 /A-Z0-9_/d; | |
11a4e58f | 86 | $wcecdefs .= " -DWCE_PLATFORM_$wceplatf"; |
270512ab | 87 | |
34be0bb1 AP |
88 | $wcetgt = $ENV{'TARGETCPU'}; # just shorter name... |
89 | SWITCH: for($wcetgt) { | |
270512ab | 90 | /^X86/ && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_"; |
130c15ef | 91 | $wcelflag.=" /machine:X86"; last; }; |
5147c3c9 | 92 | /^ARMV4[IT]/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt"; |
270512ab AP |
93 | $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/); |
94 | $wcecdefs.=" -QRarch4T -QRinterwork-return"; | |
95 | $wcelflag.=" /machine:THUMB"; last; }; | |
96 | /^ARM/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt"; | |
0491e058 | 97 | $wcelflag.=" /machine:ARM"; last; }; |
270512ab AP |
98 | /^MIPSIV/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt"; |
99 | $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32"; | |
100 | $wcelflag.=" /machine:MIPSFPU"; last; }; | |
101 | /^MIPS16/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt"; | |
102 | $wcecdefs.=" -DMIPSII -QMmips16"; | |
103 | $wcelflag.=" /machine:MIPS16"; last; }; | |
104 | /^MIPSII/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt"; | |
105 | $wcecdefs.=" -QMmips2"; | |
106 | $wcelflag.=" /machine:MIPS"; last; }; | |
107 | /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000"; | |
19bd66fe | 108 | $wcelflag.=" /machine:MIPS"; last; }; |
34be0bb1 | 109 | /^SH[0-9]/ && do { $wcecdefs.=" -D$wcetgt -D_$wcetgt_ -DSHx"; |
270512ab | 110 | $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/); |
19bd66fe | 111 | $wcelflag.=" /machine:$wcetgt"; last; }; |
34be0bb1 | 112 | { $wcecdefs.=" -D$wcetgt -D_$wcetgt_"; |
19bd66fe | 113 | $wcelflag.=" /machine:$wcetgt"; last; }; |
34be0bb1 | 114 | } |
1e1c5047 | 115 | |
130c15ef | 116 | $cc=($ENV{CC} or "cl"); |
176a6148 | 117 | $base_cflags=' /W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -DOPENSSL_SMALL_FOOTPRINT'; |
1e1c5047 | 118 | $base_cflags.=" $wcecdefs"; |
63d3a9c5 AP |
119 | $base_cflags.=' -I$(WCECOMPAT)/include' if (defined($ENV{'WCECOMPAT'})); |
120 | $base_cflags.=' -I$(PORTSDK_LIBPATH)/../../include' if (defined($ENV{'PORTSDK_LIBPATH'})); | |
2cc5142f | 121 | if (`$cc 2>&1` =~ /Version ([0-9]+)\./ && $1>=14) { |
c3006e0f | 122 | $base_cflags.=$shlib?' /MD':' /MT'; |
02620cfc AP |
123 | } else { |
124 | $base_cflags.=' /MC'; | |
125 | } | |
126 | $opt_cflags=' /O1i'; # optimize for space, but with intrinsics... | |
f8cab37b | 127 | $dbg_cflags=' /Od -DDEBUG -D_DEBUG'; |
1e1c5047 | 128 | $lflags="/nologo /opt:ref $wcelflag"; |
b3836ed3 AP |
129 | } |
130 | else # Win32 | |
1875e6db | 131 | { |
73980531 | 132 | $base_cflags= " $mf_cflag"; |
c3006e0f | 133 | my $f = $shlib || $fips ?' /MD':' /MT'; |
c55fef76 | 134 | $ff = "/fixed"; |
e1b81fed AP |
135 | $opt_cflags=$f.' /Ox /O2 /Ob2'; |
136 | $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; | |
963ba100 | 137 | $lflags="/nologo /subsystem:console /opt:ref"; |
1875e6db | 138 | } |
c3006e0f | 139 | $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib |
d02b48c6 | 140 | $mlflags=''; |
58964a49 | 141 | |
9728978b AP |
142 | $out_def ="out32"; $out_def.="dll" if ($shlib); |
143 | $out_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); | |
144 | $tmp_def ="tmp32"; $tmp_def.="dll" if ($shlib); | |
145 | $tmp_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); | |
58964a49 RE |
146 | $inc_def="inc32"; |
147 | ||
d02b48c6 RE |
148 | if ($debug) |
149 | { | |
b3836ed3 | 150 | $cflags=$dbg_cflags.$base_cflags; |
d02b48c6 | 151 | } |
b3836ed3 AP |
152 | else |
153 | { | |
154 | $cflags=$opt_cflags.$base_cflags; | |
155 | } | |
58964a49 | 156 | |
9728978b | 157 | # generate symbols.pdb unconditionally |
e011160f AP |
158 | $app_cflag.=" /Zi /Fd\$(TMP_D)/app"; |
159 | $lib_cflag.=" /Zi /Fd\$(TMP_D)/lib"; | |
9728978b AP |
160 | $lflags.=" /debug"; |
161 | ||
d02b48c6 | 162 | $obj='.obj'; |
73980531 | 163 | $asm_suffix='.asm'; |
d02b48c6 RE |
164 | $ofile="/Fo"; |
165 | ||
166 | # EXE linking stuff | |
167 | $link="link"; | |
fc6a6a10 | 168 | $rsc="rc"; |
d02b48c6 RE |
169 | $efile="/out:"; |
170 | $exep='.exe'; | |
b3836ed3 | 171 | if ($no_sock) { $ex_libs=''; } |
130c15ef | 172 | elsif ($FLAVOR =~ /CE/) { $ex_libs='ws2.lib'; } |
3189772e | 173 | else { $ex_libs='ws2_32.lib'; } |
b3836ed3 AP |
174 | |
175 | if ($FLAVOR =~ /CE/) | |
1e1c5047 | 176 | { |
130c15ef AP |
177 | $ex_libs.=' crypt32.lib'; # for e_capi.c |
178 | if (defined($ENV{WCECOMPAT})) | |
179 | { | |
180 | $ex_libs.= ' $(WCECOMPAT)/lib'; | |
181 | if (-f "$ENV{WCECOMPAT}/lib/$ENV{TARGETCPU}/wcecompatex.lib") | |
182 | { | |
41235f30 | 183 | $ex_libs.='/$(TARGETCPU)/wcecompatex.lib'; |
130c15ef AP |
184 | } |
185 | else | |
186 | { | |
187 | $ex_libs.='/wcecompatex.lib'; | |
188 | } | |
189 | } | |
176a6148 | 190 | $ex_libs.=' $(PORTSDK_LIBPATH)/portlib.lib' if (defined($ENV{'PORTSDK_LIBPATH'})); |
130c15ef | 191 | $ex_libs.=' /nodefaultlib coredll.lib corelibc.lib' if ($ENV{'TARGETCPU'} eq "X86"); |
1e1c5047 | 192 | } |
b3836ed3 AP |
193 | else |
194 | { | |
a4792168 | 195 | $ex_libs.=' gdi32.lib advapi32.lib crypt32.lib user32.lib'; |
87827be0 | 196 | $ex_libs.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/ and `cl 2>&1` =~ /14\.00\.4[0-9]{4}\./); |
f63e4be3 AP |
197 | # WIN32 UNICODE build gets linked with unicows.lib for |
198 | # backward compatibility with Win9x. | |
199 | $ex_libs="unicows.lib $ex_libs" if ($FLAVOR =~ /WIN32/ and $cflags =~ /\-DUNICODE/); | |
b3836ed3 AP |
200 | } |
201 | ||
d02b48c6 | 202 | # static library stuff |
c836f8ef | 203 | $mklib='lib /nologo'; |
d02b48c6 RE |
204 | $ranlib=''; |
205 | $plib=""; | |
206 | $libp=".lib"; | |
207 | $shlibp=($shlib)?".dll":".lib"; | |
208 | $lfile='/out:'; | |
209 | ||
210 | $shlib_ex_obj=""; | |
b3836ed3 | 211 | $app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/); |
f63e4be3 | 212 | if ($FLAVOR =~ /WIN64A/) { |
9728978b AP |
213 | if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) { |
214 | $asm='nasm -f win64 -DNEAR -Ox -g'; | |
a23e3dbe AP |
215 | $afile='-o '; |
216 | } else { | |
9728978b | 217 | $asm='ml64 /c /Cp /Cx /Zi'; |
a23e3dbe AP |
218 | $afile='/Fo'; |
219 | } | |
f63e4be3 | 220 | } elsif ($FLAVOR =~ /WIN64I/) { |
9728978b | 221 | $asm='ias -d debug'; |
f63e4be3 AP |
222 | $afile="-o "; |
223 | } elsif ($nasm) { | |
4664eb52 DSH |
224 | my $ver=`nasm -v 2>NUL`; |
225 | my $vew=`nasmw -v 2>NUL`; | |
82a24313 | 226 | # pick newest version |
e011160f | 227 | $asm=($ver ge $vew?"nasm":"nasmw")." -f win32"; |
73980531 | 228 | $asmtype="win32n"; |
bbdb5438 DSH |
229 | $afile='-o '; |
230 | } else { | |
9728978b | 231 | $asm='ml /nologo /Cp /coff /c /Cx /Zi'; |
bbdb5438 | 232 | $afile='/Fo'; |
73980531 | 233 | $asmtype="win32"; |
bbdb5438 | 234 | } |
d02b48c6 | 235 | |
dfeab068 RE |
236 | $bn_asm_obj=''; |
237 | $bn_asm_src=''; | |
d02b48c6 RE |
238 | $des_enc_obj=''; |
239 | $des_enc_src=''; | |
240 | $bf_enc_obj=''; | |
241 | $bf_enc_src=''; | |
242 | ||
243 | if (!$no_asm) | |
244 | { | |
73980531 DSH |
245 | win32_import_asm($mf_bn_asm, "bn", \$bn_asm_obj, \$bn_asm_src); |
246 | win32_import_asm($mf_aes_asm, "aes", \$aes_asm_obj, \$aes_asm_src); | |
247 | win32_import_asm($mf_des_asm, "des", \$des_enc_obj, \$des_enc_src); | |
248 | win32_import_asm($mf_bf_asm, "bf", \$bf_enc_obj, \$bf_enc_src); | |
249 | win32_import_asm($mf_cast_asm, "cast", \$cast_enc_obj, \$cast_enc_src); | |
250 | win32_import_asm($mf_rc4_asm, "rc4", \$rc4_enc_obj, \$rc4_enc_src); | |
251 | win32_import_asm($mf_rc5_asm, "rc5", \$rc5_enc_obj, \$rc5_enc_src); | |
252 | win32_import_asm($mf_md5_asm, "md5", \$md5_asm_obj, \$md5_asm_src); | |
253 | win32_import_asm($mf_sha_asm, "sha", \$sha1_asm_obj, \$sha1_asm_src); | |
254 | win32_import_asm($mf_rmd_asm, "ripemd", \$rmd160_asm_obj, \$rmd160_asm_src); | |
255 | win32_import_asm($mf_wp_asm, "whrlpool", \$whirlpool_asm_obj, \$whirlpool_asm_src); | |
256 | win32_import_asm($mf_cpuid_asm, "", \$cpuid_asm_obj, \$cpuid_asm_src); | |
257 | $perl_asm = 1; | |
d02b48c6 RE |
258 | } |
259 | ||
b3836ed3 | 260 | if ($shlib && $FLAVOR !~ /CE/) |
d02b48c6 RE |
261 | { |
262 | $mlflags.=" $lflags /dll"; | |
9728978b | 263 | $lib_cflag.=" -D_WINDLL"; |
53d89967 AP |
264 | # |
265 | # Engage Applink... | |
266 | # | |
267 | $app_ex_obj.=" \$(OBJ_D)\\applink.obj /implib:\$(TMP_D)\\junk.lib"; | |
51ff6bde | 268 | $cflags.=" -DOPENSSL_USE_APPLINK -I."; |
53d89967 AP |
269 | # I'm open for better suggestions than overriding $banner... |
270 | $banner=<<'___'; | |
271 | @echo Building OpenSSL | |
272 | ||
273 | $(OBJ_D)\applink.obj: ms\applink.c | |
274 | $(CC) /Fo$(OBJ_D)\applink.obj $(APP_CFLAGS) -c ms\applink.c | |
51ff6bde | 275 | $(OBJ_D)\uplink.obj: ms\uplink.c ms\applink.c |
53d89967 | 276 | $(CC) /Fo$(OBJ_D)\uplink.obj $(SHLIB_CFLAGS) -c ms\uplink.c |
53d89967 AP |
277 | $(INCO_D)\applink.c: ms\applink.c |
278 | $(CP) ms\applink.c $(INCO_D)\applink.c | |
53d89967 | 279 | |
53d89967 AP |
280 | EXHEADER= $(EXHEADER) $(INCO_D)\applink.c |
281 | ||
282 | LIBS_DEP=$(LIBS_DEP) $(OBJ_D)\applink.obj | |
283 | CRYPTOOBJ=$(OBJ_D)\uplink.obj $(CRYPTOOBJ) | |
1875e6db AP |
284 | ___ |
285 | $banner.=<<'___' if ($FLAVOR =~ /WIN64/); | |
286 | CRYPTOOBJ=ms\uptable.obj $(CRYPTOOBJ) | |
53d89967 | 287 | ___ |
d02b48c6 | 288 | } |
b3836ed3 AP |
289 | elsif ($shlib && $FLAVOR =~ /CE/) |
290 | { | |
291 | $mlflags.=" $lflags /dll"; | |
176a6148 | 292 | $lflags.=' /entry:mainCRTstartup' if(defined($ENV{'PORTSDK_LIBPATH'})); |
9728978b | 293 | $lib_cflag.=" -D_WINDLL -D_DLL"; |
b3836ed3 | 294 | } |
d02b48c6 RE |
295 | |
296 | sub do_lib_rule | |
297 | { | |
174b26c4 | 298 | my($objs,$target,$name,$shlib,$ign,$base_addr) = @_; |
fbf002bb | 299 | local($ret); |
d02b48c6 RE |
300 | |
301 | $taget =~ s/\//$o/g if $o ne '/'; | |
174b26c4 DSH |
302 | my $base_arg; |
303 | if ($base_addr ne "") | |
304 | { | |
305 | $base_arg= " /base:$base_addr"; | |
306 | } | |
307 | else | |
308 | { | |
309 | $base_arg = ""; | |
310 | } | |
fbf002bb DSH |
311 | if ($name ne "") |
312 | { | |
313 | $name =~ tr/a-z/A-Z/; | |
314 | $name = "/def:ms/${name}.def"; | |
315 | } | |
d02b48c6 | 316 | |
58964a49 | 317 | # $target="\$(LIB_D)$o$target"; |
174b26c4 | 318 | # $ret.="$target: $objs\n"; |
d02b48c6 RE |
319 | if (!$shlib) |
320 | { | |
321 | # $ret.="\t\$(RM) \$(O_$Name)\n"; | |
174b26c4 | 322 | $ret.="$target: $objs\n"; |
87827be0 | 323 | $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs\n<<\n"; |
d02b48c6 RE |
324 | } |
325 | else | |
326 | { | |
fbf002bb | 327 | local($ex)=($target =~ /O_CRYPTO/)?'':' $(L_CRYPTO)'; |
ad2695b1 | 328 | $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/; |
174b26c4 DSH |
329 | |
330 | if ($fips && $target =~ /O_CRYPTO/) | |
331 | { | |
332 | $ret.="$target: $objs \$(PREMAIN_DSO_EXE)"; | |
333 | $ret.="\n\tSET FIPS_LINK=\$(LINK)\n"; | |
334 | $ret.="\tSET FIPS_CC=\$(CC)\n"; | |
335 | $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n"; | |
336 | $ret.="\tSET PREMAIN_DSO_EXE=\$(PREMAIN_DSO_EXE)\n"; | |
337 | $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n"; | |
338 | $ret.="\tSET FIPS_TARGET=$target\n"; | |
339 | $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n"; | |
c55fef76 | 340 | $ret.="\t\$(FIPSLINK) \$(MLFLAGS) $ff /map $base_arg $efile$target "; |
174b26c4 DSH |
341 | $ret.="$name @<<\n \$(SHLIB_EX_OBJ) $objs \$(EX_LIBS) "; |
342 | $ret.="\$(OBJ_D)${o}fips_premain.obj $ex\n<<\n"; | |
343 | } | |
344 | else | |
345 | { | |
346 | $ret.="$target: $objs"; | |
347 | $ret.="\n\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex \$(EX_LIBS)\n<<\n"; | |
348 | } | |
87827be0 | 349 | $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;2\n\n"; |
d02b48c6 RE |
350 | } |
351 | $ret.="\n"; | |
352 | return($ret); | |
353 | } | |
354 | ||
355 | sub do_link_rule | |
356 | { | |
174b26c4 | 357 | my($target,$files,$dep_libs,$libs,$standalone)=@_; |
d02b48c6 | 358 | local($ret,$_); |
d02b48c6 RE |
359 | $file =~ s/\//$o/g if $o ne '/'; |
360 | $n=&bname($targer); | |
361 | $ret.="$target: $files $dep_libs\n"; | |
174b26c4 DSH |
362 | if ($standalone == 1) |
363 | { | |
364 | $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t"; | |
365 | $ret.= "\$(EX_LIBS) " if ($files =~ /O_FIPSCANISTER/ && !$fipscanisterbuild); | |
366 | $ret.="$files $libs\n<<\n"; | |
367 | } | |
368 | elsif ($standalone == 2) | |
369 | { | |
370 | $ret.="\tSET FIPS_LINK=\$(LINK)\n"; | |
371 | $ret.="\tSET FIPS_CC=\$(CC)\n"; | |
372 | $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n"; | |
373 | $ret.="\tSET PREMAIN_DSO_EXE=\n"; | |
374 | $ret.="\tSET FIPS_TARGET=$target\n"; | |
375 | $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n"; | |
376 | $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n"; | |
c55fef76 | 377 | $ret.="\t\$(FIPSLINK) \$(LFLAGS) $ff /map $efile$target @<<\n"; |
174b26c4 DSH |
378 | $ret.="\t\$(APP_EX_OBJ) $files \$(OBJ_D)${o}fips_premain.obj $libs\n<<\n"; |
379 | } | |
380 | else | |
381 | { | |
382 | $ret.="\t\$(LINK) \$(LFLAGS) $efile$target @<<\n"; | |
383 | $ret.="\t\$(APP_EX_OBJ) $files $libs\n<<\n"; | |
384 | } | |
385 | $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;1\n\n"; | |
d02b48c6 RE |
386 | return($ret); |
387 | } | |
388 | ||
73980531 DSH |
389 | sub win32_import_asm |
390 | { | |
391 | my ($mf_var, $asm_name, $oref, $sref) = @_; | |
392 | my $asm_dir; | |
393 | if ($asm_name eq "") | |
394 | { | |
395 | $asm_dir = "crypto\\"; | |
396 | } | |
397 | else | |
398 | { | |
399 | $asm_dir = "crypto\\$asm_name\\asm\\"; | |
400 | } | |
401 | ||
402 | $$oref = ""; | |
4287ade5 | 403 | $mf_var =~ s/\.o$/.obj/g; |
73980531 DSH |
404 | |
405 | foreach (split(/ /, $mf_var)) | |
406 | { | |
407 | $$oref .= $asm_dir . $_ . " "; | |
408 | } | |
409 | $$oref =~ s/ $//; | |
410 | $$sref = $$oref; | |
411 | $$sref =~ s/\.obj/.asm/g; | |
412 | ||
413 | } | |
414 | ||
415 | ||
d02b48c6 | 416 | 1; |