BC-32.pl revision 55714
1129198Scognet#!/usr/local/bin/perl
2129198Scognet# Borland C++ builder 3 and 4 -- Janez Jere <jj@void.si>
3129198Scognet#
4129198Scognet
5129198Scognet$ssl=	"ssleay32";
6129198Scognet$crypto="libeay32";
7129198Scognet$RSAref="RSAref32";
8129198Scognet
9129198Scognet$o='\\';
10129198Scognet$cp='copy';
11129198Scognet$rm='del';
12129198Scognet
13129198Scognet# C compiler stuff
14129198Scognet$cc='bcc32';
15129198Scognet$lflags="-ap -Tpe -x -Gn ";
16129198Scognet$mlflags='';
17129198Scognet
18129198Scognet$out_def="out32";
19129198Scognet$tmp_def="tmp32";
20129198Scognet$inc_def="inc32";
21129198Scognet#enable max error messages, disable most common warnings
22129198Scognet$cflags="-DWIN32_LEAN_AND_MEAN -j255 -w-aus -w-par -w-inl  -c -tWC -tWM -DWINDOWS -DWIN32 -DL_ENDIAN ";
23129198Scognetif ($debug)
24129198Scognet{
25129198Scognet    $cflags.="-Od -y -v -vi- -D_DEBUG";
26129198Scognet    $mlflags.=' ';
27129198Scognet}
28129198Scognetelse
29129198Scognet{
30129198Scognet    $cflags.="-O2 -ff -fp";
31129198Scognet}
32129198Scognet
33129198Scognet$obj='.obj';
34129198Scognet$ofile="-o";
35129198Scognet
36129198Scognet# EXE linking stuff
37129198Scognet$link="ilink32";
38129198Scognet$efile="";
39129198Scognet$exep='.exe';
40129198Scognetif ($no_sock)
41129198Scognet	{ $ex_libs=""; }
42129198Scognetelse	{ $ex_libs="cw32mt.lib import32.lib"; }
43129198Scognet
44129198Scognet# static library stuff
45129198Scognet$mklib='tlib /P64';
46129198Scognet$ranlib='';
47129198Scognet$plib="";
48129198Scognet$libp=".lib";
49129198Scognet$shlibp=($shlib)?".dll":".lib";
50129198Scognet$lfile='';
51129198Scognet
52129198Scognet$shlib_ex_obj="";
53129198Scognet$app_ex_obj="c0x32.obj";
54129198Scognet
55129198Scognet$asm='n_o_T_a_s_m';
56129198Scognet$asm.=" /Zi" if $debug;
57129198Scognet$afile='/Fo';
58129198Scognet
59129198Scognet$bn_mulw_obj='';
60129198Scognet$bn_mulw_src='';
61129198Scognet$des_enc_obj='';
62129198Scognet$des_enc_src='';
63129198Scognet$bf_enc_obj='';
64129198Scognet$bf_enc_src='';
65129198Scognet
66129198Scognetif (!$no_asm)
67129198Scognet	{
68129198Scognet	$bn_mulw_obj='crypto\bn\asm\bn-win32.obj';
69129198Scognet	$bn_mulw_src='crypto\bn\asm\bn-win32.asm';
70129198Scognet	$des_enc_obj='crypto\des\asm\d-win32.obj crypto\des\asm\y-win32.obj';
71129198Scognet	$des_enc_src='crypto\des\asm\d-win32.asm crypto\des\asm\y-win32.asm';
72129198Scognet	$bf_enc_obj='crypto\bf\asm\b-win32.obj';
73129198Scognet	$bf_enc_src='crypto\bf\asm\b-win32.asm';
74129198Scognet	$cast_enc_obj='crypto\cast\asm\c-win32.obj';
75129198Scognet	$cast_enc_src='crypto\cast\asm\c-win32.asm';
76129198Scognet	$rc4_enc_obj='crypto\rc4\asm\r4-win32.obj';
77129198Scognet	$rc4_enc_src='crypto\rc4\asm\r4-win32.asm';
78129198Scognet	$rc5_enc_obj='crypto\rc5\asm\r5-win32.obj';
79129198Scognet	$rc5_enc_src='crypto\rc5\asm\r5-win32.asm';
80129198Scognet	$md5_asm_obj='crypto\md5\asm\m5-win32.obj';
81129198Scognet	$md5_asm_src='crypto\md5\asm\m5-win32.asm';
82129198Scognet	$sha1_asm_obj='crypto\sha\asm\s1-win32.obj';
83129198Scognet	$sha1_asm_src='crypto\sha\asm\s1-win32.asm';
84129198Scognet	$rmd160_asm_obj='crypto\ripemd\asm\rm-win32.obj';
85129198Scognet	$rmd160_asm_src='crypto\ripemd\asm\rm-win32.asm';
86129198Scognet	$cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
87129198Scognet	}
88129198Scognet
89129198Scognetif ($shlib)
90129198Scognet	{
91129198Scognet	$mlflags.=" $lflags /dll";
92129198Scognet#	$cflags =~ s| /MD| /MT|;
93129198Scognet	$lib_cflag=" /GD -D_WINDLL -D_DLL";
94129198Scognet	$out_def="out32dll";
95129198Scognet	$tmp_def="tmp32dll";
96129198Scognet	}
97129198Scognet
98129198Scognetsub do_lib_rule
99129198Scognet	{
100129198Scognet	local($objs,$target,$name,$shlib)=@_;
101129198Scognet	local($ret,$Name);
102129198Scognet
103129198Scognet	$taget =~ s/\//$o/g if $o ne '/';
104129198Scognet	($Name=$name) =~ tr/a-z/A-Z/;
105129198Scognet
106129198Scognet#	$target="\$(LIB_D)$o$target";
107129198Scognet	$ret.="$target: $objs\n";
108129198Scognet	if (!$shlib)
109129198Scognet		{
110129198Scognet		#		$ret.="\t\$(RM) \$(O_$Name)\n";
111129198Scognet		$ret.="\techo LIB $<\n";
112129198Scognet		$ret.="\t\$(MKLIB) $lfile$target  \$(addprefix +, $objs)\n";
113129198Scognet		}
114129198Scognet	else
115129198Scognet		{
116129198Scognet		local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
117129198Scognet		$ex.=' wsock32.lib gdi32.lib';
118129198Scognet		$ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n  \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
119129198Scognet		}
120129198Scognet	$ret.="\n";
121129198Scognet	return($ret);
122129198Scognet	}
123129198Scognet
124129198Scognetsub do_link_rule
125129198Scognet	{
126129198Scognet	local($target,$files,$dep_libs,$libs)=@_;
127129198Scognet	local($ret,$_);
128129198Scognet
129129198Scognet	$file =~ s/\//$o/g if $o ne '/';
130129198Scognet	$n=&bname($targer);
131129198Scognet	$ret.="$target: $files $dep_libs\n";
132129198Scognet	$ret.="\t\$(LINK) \$(LFLAGS) $files \$(APP_EX_OBJ), $target,, $libs\n\n";
133129198Scognet	return($ret);
134129198Scognet	}
135129198Scognet
136129198Scognet1;
137129198Scognet