155714Skris#!/usr/local/bin/perl
255714Skris# Borland C++ builder 3 and 4 -- Janez Jere <jj@void.si>
355714Skris#
455714Skris
555714Skris$ssl=	"ssleay32";
655714Skris$crypto="libeay32";
755714Skris
855714Skris$o='\\';
955714Skris$cp='copy';
1055714Skris$rm='del';
1155714Skris
1255714Skris# C compiler stuff
1355714Skris$cc='bcc32';
1455714Skris$lflags="-ap -Tpe -x -Gn ";
1555714Skris$mlflags='';
1655714Skris
1755714Skris$out_def="out32";
1855714Skris$tmp_def="tmp32";
1955714Skris$inc_def="inc32";
2055714Skris#enable max error messages, disable most common warnings
21290207Sjkim$cflags="-DWIN32_LEAN_AND_MEAN -q -w-ccc -w-rch -w-pia -w-aus -w-par -w-inl  -c -tWC -tWM -DOPENSSL_SYSNAME_WIN32 -DL_ENDIAN -DDSO_WIN32 -D_stricmp=stricmp -D_strnicmp=strnicmp ";
2255714Skrisif ($debug)
2355714Skris{
2455714Skris    $cflags.="-Od -y -v -vi- -D_DEBUG";
2555714Skris    $mlflags.=' ';
2655714Skris}
2755714Skriselse
2855714Skris{
2955714Skris    $cflags.="-O2 -ff -fp";
3055714Skris}
3155714Skris
3255714Skris$obj='.obj';
3355714Skris$ofile="-o";
3455714Skris
3555714Skris# EXE linking stuff
3655714Skris$link="ilink32";
3755714Skris$efile="";
3855714Skris$exep='.exe';
3955714Skrisif ($no_sock)
4055714Skris	{ $ex_libs=""; }
41264278Sjkimelse	{ $ex_libs="cw32mt.lib import32.lib crypt32.lib ws2_32.lib"; }
4255714Skris
4355714Skris# static library stuff
4455714Skris$mklib='tlib /P64';
4555714Skris$ranlib='';
4655714Skris$plib="";
4755714Skris$libp=".lib";
4855714Skris$shlibp=($shlib)?".dll":".lib";
4955714Skris$lfile='';
5055714Skris
5155714Skris$shlib_ex_obj="";
5255714Skris$app_ex_obj="c0x32.obj";
5355714Skris
54264278Sjkim$asm=(`nasm -v 2>NUL` ge `nasmw -v 2>NUL`?"nasm":"nasmw")." -f obj -d__omf__";
55264278Sjkim$asm.=" -g" if $debug;
56109998Smarkm$afile='-o';
5755714Skris
5855714Skris$bn_mulw_obj='';
5955714Skris$bn_mulw_src='';
6055714Skris$des_enc_obj='';
6155714Skris$des_enc_src='';
6255714Skris$bf_enc_obj='';
6355714Skris$bf_enc_src='';
6455714Skris
65160814Ssimonif (!$no_asm)
6655714Skris	{
67100936Snectar	$bn_mulw_obj='crypto\bn\asm\bn_win32.obj';
68100936Snectar	$bn_mulw_src='crypto\bn\asm\bn_win32.asm';
69100936Snectar	$des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj';
70100936Snectar	$des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm';
71100936Snectar	$bf_enc_obj='crypto\bf\asm\b_win32.obj';
72100936Snectar	$bf_enc_src='crypto\bf\asm\b_win32.asm';
73100936Snectar	$cast_enc_obj='crypto\cast\asm\c_win32.obj';
74100936Snectar	$cast_enc_src='crypto\cast\asm\c_win32.asm';
75100936Snectar	$rc4_enc_obj='crypto\rc4\asm\r4_win32.obj';
76100936Snectar	$rc4_enc_src='crypto\rc4\asm\r4_win32.asm';
77100936Snectar	$rc5_enc_obj='crypto\rc5\asm\r5_win32.obj';
78100936Snectar	$rc5_enc_src='crypto\rc5\asm\r5_win32.asm';
79100936Snectar	$md5_asm_obj='crypto\md5\asm\m5_win32.obj';
80100936Snectar	$md5_asm_src='crypto\md5\asm\m5_win32.asm';
81100936Snectar	$sha1_asm_obj='crypto\sha\asm\s1_win32.obj';
82100936Snectar	$sha1_asm_src='crypto\sha\asm\s1_win32.asm';
83100936Snectar	$rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj';
84100936Snectar	$rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm';
8555714Skris	$cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
8655714Skris	}
8755714Skris
8855714Skrisif ($shlib)
8955714Skris	{
9055714Skris	$mlflags.=" $lflags /dll";
9155714Skris#	$cflags =~ s| /MD| /MT|;
9255714Skris	$lib_cflag=" /GD -D_WINDLL -D_DLL";
9355714Skris	$out_def="out32dll";
9455714Skris	$tmp_def="tmp32dll";
9555714Skris	}
9655714Skris
9755714Skrissub do_lib_rule
9855714Skris	{
9955714Skris	local($objs,$target,$name,$shlib)=@_;
10055714Skris	local($ret,$Name);
10155714Skris
10255714Skris	$taget =~ s/\//$o/g if $o ne '/';
10355714Skris	($Name=$name) =~ tr/a-z/A-Z/;
10455714Skris
10555714Skris#	$target="\$(LIB_D)$o$target";
10655714Skris	$ret.="$target: $objs\n";
10755714Skris	if (!$shlib)
10855714Skris		{
109160814Ssimon		$ret.=<<___;
110160814Ssimon	-\$(RM) $lfile$target
111160814Ssimon	\$(MKLIB) $lfile$target \@&&!
112160814Ssimon+\$(**: = &^
113160814Ssimon+)
114160814Ssimon!
115160814Ssimon___
11655714Skris		}
11755714Skris	else
11855714Skris		{
11955714Skris		local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
120238405Sjkim		$ex.=' ws2_32.lib gdi32.lib';
121296279Sjkim		$ret.="\t\$(LINK_CMD) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n  \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
12255714Skris		}
12355714Skris	$ret.="\n";
12455714Skris	return($ret);
12555714Skris	}
12655714Skris
12755714Skrissub do_link_rule
12855714Skris	{
129160814Ssimon	local($target,$files,$dep_libs,$libs)=@_;
13055714Skris	local($ret,$_);
131160814Ssimon
13255714Skris	$file =~ s/\//$o/g if $o ne '/';
133284283Sjkim	$n=&bname($target);
13455714Skris	$ret.="$target: $files $dep_libs\n";
135296279Sjkim	$ret.="\t\$(LINK_CMD) \$(LFLAGS) $files \$(APP_EX_OBJ), $target,, $libs\n\n";
13655714Skris	return($ret);
13755714Skris	}
13855714Skris
13955714Skris1;
140