VC-32.pl revision 109998
19313Ssos#!/usr/local/bin/perl
29313Ssos# VCw32lib.pl - the file for Visual C++ 4.[01] for windows NT, static libraries
39313Ssos#
49313Ssos
59313Ssos$ssl=	"ssleay32";
69313Ssos$crypto="libeay32";
79313Ssos
89313Ssos$o='\\';
99313Ssos$cp='copy nul+';	# Timestamps get stuffed otherwise
109313Ssos$rm='del';
119313Ssos
129313Ssos# C compiler stuff
139313Ssos$cc='cl';
149313Ssos$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32';
159313Ssos$lflags="/nologo /subsystem:console /machine:I386 /opt:ref";
169313Ssos$mlflags='';
179313Ssos
189313Ssos$out_def="out32";
199313Ssos$tmp_def="tmp32";
209313Ssos$inc_def="inc32";
219313Ssos
229313Ssosif ($debug)
239313Ssos	{
249313Ssos	$cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DOPENSSL_SYSNAME_WIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32";
259313Ssos	$lflags.=" /debug";
269313Ssos	$mlflags.=' /debug';
279313Ssos	}
2812458Sbde$cflags .= " -DOPENSSL_SYSNAME_WINNT" if $NT == 1;
299313Ssos
309313Ssos$obj='.obj';
319313Ssos$ofile="/Fo";
329313Ssos
3312458Sbde# EXE linking stuff
349313Ssos$link="link";
359313Ssos$efile="/out:";
369313Ssos$exep='.exe';
379313Ssosif ($no_sock)
389313Ssos	{ $ex_libs=""; }
399313Ssoselse	{ $ex_libs="wsock32.lib user32.lib gdi32.lib"; }
4012458Sbde
419313Ssos# static library stuff
429313Ssos$mklib='lib';
439313Ssos$ranlib='';
449313Ssos$plib="";
459313Ssos$libp=".lib";
469313Ssos$shlibp=($shlib)?".dll":".lib";
479313Ssos$lfile='/out:';
489313Ssos
499313Ssos$shlib_ex_obj="";
509313Ssos$app_ex_obj="setargv.obj";
519313Ssosif ($nasm) {
529313Ssos	$asm='nasmw -f win32';
539313Ssos	$afile='-o ';
549313Ssos} else {
559313Ssos	$asm='ml /Cp /coff /c /Cx';
569313Ssos	$asm.=" /Zi" if $debug;
579313Ssos	$afile='/Fo';
589313Ssos}
599313Ssos
609313Ssos$bn_asm_obj='';
619313Ssos$bn_asm_src='';
629313Ssos$des_enc_obj='';
639313Ssos$des_enc_src='';
649313Ssos$bf_enc_obj='';
659313Ssos$bf_enc_src='';
669313Ssos
679313Ssosif (!$no_asm)
689313Ssos	{
699313Ssos	$bn_asm_obj='crypto\bn\asm\bn_win32.obj';
709313Ssos	$bn_asm_src='crypto\bn\asm\bn_win32.asm';
719313Ssos	$des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj';
729313Ssos	$des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm';
739313Ssos	$bf_enc_obj='crypto\bf\asm\b_win32.obj';
749313Ssos	$bf_enc_src='crypto\bf\asm\b_win32.asm';
759313Ssos	$cast_enc_obj='crypto\cast\asm\c_win32.obj';
769313Ssos	$cast_enc_src='crypto\cast\asm\c_win32.asm';
779313Ssos	$rc4_enc_obj='crypto\rc4\asm\r4_win32.obj';
789313Ssos	$rc4_enc_src='crypto\rc4\asm\r4_win32.asm';
799313Ssos	$rc5_enc_obj='crypto\rc5\asm\r5_win32.obj';
809313Ssos	$rc5_enc_src='crypto\rc5\asm\r5_win32.asm';
819313Ssos	$md5_asm_obj='crypto\md5\asm\m5_win32.obj';
829313Ssos	$md5_asm_src='crypto\md5\asm\m5_win32.asm';
839313Ssos	$sha1_asm_obj='crypto\sha\asm\s1_win32.obj';
849313Ssos	$sha1_asm_src='crypto\sha\asm\s1_win32.asm';
859313Ssos	$rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj';
869313Ssos	$rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm';
879313Ssos	$cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
889313Ssos	}
899313Ssos
909313Ssosif ($shlib)
919313Ssos	{
929313Ssos	$mlflags.=" $lflags /dll";
939313Ssos#	$cflags =~ s| /MD| /MT|;
949313Ssos	$lib_cflag=" -D_WINDLL";
959313Ssos	$out_def="out32dll";
969313Ssos	$tmp_def="tmp32dll";
979313Ssos	}
989313Ssos
999313Ssos$cflags.=" /Fd$out_def";
1009313Ssos
1019313Ssossub do_lib_rule
1029313Ssos	{
1039313Ssos	local($objs,$target,$name,$shlib)=@_;
1049313Ssos	local($ret,$Name);
1059313Ssos
1069313Ssos	$taget =~ s/\//$o/g if $o ne '/';
1079313Ssos	($Name=$name) =~ tr/a-z/A-Z/;
1089313Ssos
1099313Ssos#	$target="\$(LIB_D)$o$target";
1109313Ssos	$ret.="$target: $objs\n";
1119313Ssos	if (!$shlib)
1129313Ssos		{
1139313Ssos#		$ret.="\t\$(RM) \$(O_$Name)\n";
1149313Ssos		$ex =' advapi32.lib';
1159313Ssos		$ret.="\t\$(MKLIB) $lfile$target @<<\n  $objs $ex\n<<\n";
1169313Ssos		}
1179313Ssos	else
1189313Ssos		{
1199313Ssos		local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
1209313Ssos		$ex.=' wsock32.lib gdi32.lib advapi32.lib';
1219313Ssos		$ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n  \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
1229313Ssos		}
1239313Ssos	$ret.="\n";
1249313Ssos	return($ret);
1259313Ssos	}
1269313Ssos
1279313Ssossub do_link_rule
1289313Ssos	{
1299313Ssos	local($target,$files,$dep_libs,$libs)=@_;
1309313Ssos	local($ret,$_);
1319313Ssos
1329313Ssos	$file =~ s/\//$o/g if $o ne '/';
1339313Ssos	$n=&bname($targer);
1349313Ssos	$ret.="$target: $files $dep_libs\n";
1359313Ssos	$ret.="  \$(LINK) \$(LFLAGS) $efile$target @<<\n";
1369313Ssos	$ret.="  \$(APP_EX_OBJ) $files $libs\n<<\n\n";
1379313Ssos	return($ret);
1389313Ssos	}
1399313Ssos
1409313Ssos1;
1419313Ssos