2 # VCw32lib.pl - the file for Visual C++ 4.[01] for windows NT, static libraries
9 $crypto="libeayfips32";
10 $crypto_compat = "libeaycompat32.lib";
18 $cp='copy nul+'; # Timestamps get stuffed otherwise
21 $zlib_lib="zlib1.lib";
25 $cflags=' /MD /W3 /WX /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32';
26 $cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8
27 $cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8
28 $lflags="/nologo /subsystem:console /machine:I386 /opt:ref";
37 $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DOPENSSL_SYSNAME_WIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32";
41 $cflags .= " -DOPENSSL_SYSNAME_WINNT" if $NT == 1;
52 else { $ex_libs="wsock32.lib user32.lib gdi32.lib"; }
54 # static library stuff
59 $shlibp=($shlib)?".dll":".lib";
63 $app_ex_obj="setargv.obj";
65 $asm='nasmw -f win32';
68 $asm='ml /Cp /coff /c /Cx';
69 $asm.=" /Zi" if $debug;
80 if (!$no_asm && !$fips)
82 $bn_asm_obj='crypto\bn\asm\bn_win32.obj';
83 $bn_asm_src='crypto\bn\asm\bn_win32.asm';
84 $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj';
85 $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm';
86 $bf_enc_obj='crypto\bf\asm\b_win32.obj';
87 $bf_enc_src='crypto\bf\asm\b_win32.asm';
88 $cast_enc_obj='crypto\cast\asm\c_win32.obj';
89 $cast_enc_src='crypto\cast\asm\c_win32.asm';
90 $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj';
91 $rc4_enc_src='crypto\rc4\asm\r4_win32.asm';
92 $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj';
93 $rc5_enc_src='crypto\rc5\asm\r5_win32.asm';
94 $md5_asm_obj='crypto\md5\asm\m5_win32.obj';
95 $md5_asm_src='crypto\md5\asm\m5_win32.asm';
96 $sha1_asm_obj='crypto\sha\asm\s1_win32.obj';
97 $sha1_asm_src='crypto\sha\asm\s1_win32.asm';
98 $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj';
99 $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm';
100 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
105 $mlflags.=" $lflags /dll";
106 # $cflags =~ s| /MD| /MT|;
107 $lib_cflag=" -D_WINDLL";
112 $cflags.=" /Fd$out_def";
116 local($objs,$target,$name,$shlib,$ign,$base_addr) = @_;
119 $taget =~ s/\//$o/g if $o ne '/';
120 ($Name=$name) =~ tr/a-z/A-Z/;
122 if ($base_addr ne "")
124 $base_arg= " /base:$base_addr";
132 # $target="\$(LIB_D)$o$target";
135 # $ret.="\t\$(RM) \$(O_$Name)\n";
136 $ret.="$target: $objs\n";
137 $ex =' advapi32.lib';
138 $ex.=" \$(FIPSLIB_d)${o}_chkstk.o" if $fips && $target =~ /O_CRYPTO/;
139 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
143 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
144 $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib';
145 $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/;
146 if ($fips && $target =~ /O_CRYPTO/)
148 $ex.=" \$(FIPSLIB_D)ms${o}_chkstk.o";
149 $ret.="$target: $objs \$(PREMAIN_DSO_EXE)\n";
150 $ret.="\tSET FIPS_LINK=\$(LINK)\n";
151 $ret.="\tSET FIPS_CC=\$(CC)\n";
152 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
153 $ret.="\tSET PREMAIN_DSO_EXE=\$(PREMAIN_DSO_EXE)\n";
154 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
155 $ret.="\tSET FIPS_TARGET=$target\n";
156 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
157 $ret.="\t\$(FIPSLINK) \$(MLFLAGS) $base_arg $efile$target ";
158 $ret.="/def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs ";
159 $ret.="\$(OBJ_D)${o}fips_premain.obj $ex\n<<\n";
163 $ret.="$target: $objs\n";
164 $ret.="\t\$(LINK) \$(MLFLAGS) $base_arg $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
173 local($target,$files,$dep_libs,$libs,$standalone)=@_;
175 $file =~ s/\//$o/g if $o ne '/';
177 $ret.="$target: $files $dep_libs\n";
180 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t";
181 $ret.="\$(FIPSLIB_D)${o}_chkstk.o " if ($files =~ /O_FIPSCANISTER/);
182 $ret.="$files $libs\n<<\n";
184 elsif ($fips && !$shlib)
186 $ret.="\tSET FIPS_LINK=\$(LINK)\n";
187 $ret.="\tSET FIPS_CC=\$(CC)\n";
188 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
189 $ret.="\tSET PREMAIN_DSO_EXE=\n";
190 $ret.="\tSET FIPS_TARGET=$target\n";
191 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
192 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
193 $ret.=" \$(FIPSLINK) \$(LFLAGS) $efile$target @<<\n";
194 $ret.=" \$(APP_EX_OBJ) $files \$(OBJ_D)${o}fips_premain.obj $libs\n<<\n";
198 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n";
199 $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n";
207 local($target,$files,$dep_libs,$libs)=@_;
210 $file =~ s/\//$o/g if $o ne '/';
212 $ret.="$target: $files $dep_libs\n";
213 $ret.=" \$(MKCANISTER) $target <<\n";
214 $ret.="INPUT($files)\n<<\n";