One of Win64 rules lacked bufferoverflowu.lib.
[openssl.git] / util / pl / BC-32.pl
1 #!/usr/local/bin/perl
2 # Borland C++ builder 3 and 4 -- Janez Jere <jj@void.si>
3 #
4
5 $ssl=   "ssleay32";
6 $crypto="libeay32";
7
8 $o='\\';
9 $cp='copy';
10 $rm='del';
11
12 # C compiler stuff
13 $cc='bcc32';
14 $lflags="-ap -Tpe -x -Gn ";
15 $mlflags='';
16
17 $out_def="out32";
18 $tmp_def="tmp32";
19 $inc_def="inc32";
20 #enable max error messages, disable most common warnings
21 $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 ";
22 if ($debug)
23 {
24     $cflags.="-Od -y -v -vi- -D_DEBUG";
25     $mlflags.=' ';
26 }
27 else
28 {
29     $cflags.="-O2 -ff -fp";
30 }
31
32 $obj='.obj';
33 $ofile="-o";
34
35 # EXE linking stuff
36 $link="ilink32";
37 $efile="";
38 $exep='.exe';
39 if ($no_sock)
40         { $ex_libs=""; }
41 else    { $ex_libs="cw32mt.lib import32.lib"; }
42
43 # static library stuff
44 $mklib='tlib /P64';
45 $ranlib='';
46 $plib="";
47 $libp=".lib";
48 $shlibp=($shlib)?".dll":".lib";
49 $lfile='';
50
51 $shlib_ex_obj="";
52 $app_ex_obj="c0x32.obj"; 
53
54 $asm='nasmw -f obj -d__omf__';
55 $asm.=" /Zi" if $debug;
56 $afile='-o';
57
58 $bn_mulw_obj='';
59 $bn_mulw_src='';
60 $des_enc_obj='';
61 $des_enc_src='';
62 $bf_enc_obj='';
63 $bf_enc_src='';
64
65 if (!$no_asm)
66         {
67         $bn_mulw_obj='crypto\bn\asm\bn_win32.obj';
68         $bn_mulw_src='crypto\bn\asm\bn_win32.asm';
69         $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj';
70         $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm';
71         $bf_enc_obj='crypto\bf\asm\b_win32.obj';
72         $bf_enc_src='crypto\bf\asm\b_win32.asm';
73         $cast_enc_obj='crypto\cast\asm\c_win32.obj';
74         $cast_enc_src='crypto\cast\asm\c_win32.asm';
75         $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj';
76         $rc4_enc_src='crypto\rc4\asm\r4_win32.asm';
77         $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj';
78         $rc5_enc_src='crypto\rc5\asm\r5_win32.asm';
79         $md5_asm_obj='crypto\md5\asm\m5_win32.obj';
80         $md5_asm_src='crypto\md5\asm\m5_win32.asm';
81         $sha1_asm_obj='crypto\sha\asm\s1_win32.obj';
82         $sha1_asm_src='crypto\sha\asm\s1_win32.asm';
83         $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj';
84         $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm';
85         $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
86         }
87
88 if ($shlib)
89         {
90         $mlflags.=" $lflags /dll";
91 #       $cflags =~ s| /MD| /MT|;
92         $lib_cflag=" /GD -D_WINDLL -D_DLL";
93         $out_def="out32dll";
94         $tmp_def="tmp32dll";
95         }
96
97 sub do_lib_rule
98         {
99         local($objs,$target,$name,$shlib)=@_;
100         local($ret,$Name);
101
102         $taget =~ s/\//$o/g if $o ne '/';
103         ($Name=$name) =~ tr/a-z/A-Z/;
104
105 #       $target="\$(LIB_D)$o$target";
106         $ret.="$target: $objs\n";
107         if (!$shlib)
108                 {
109                 $ret.=<<___;
110         -\$(RM) $lfile$target
111         \$(MKLIB) $lfile$target \@&&!
112 +\$(**: = &^
113 +)
114 !
115 ___
116                 }
117         else
118                 {
119                 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
120                 $ex.=' wsock32.lib gdi32.lib';
121                 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n  \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
122                 }
123         $ret.="\n";
124         return($ret);
125         }
126
127 sub do_link_rule
128         {
129         local($target,$files,$dep_libs,$libs)=@_;
130         local($ret,$_);
131         
132         $file =~ s/\//$o/g if $o ne '/';
133         $n=&bname($targer);
134         $ret.="$target: $files $dep_libs\n";
135         $ret.="\t\$(LINK) \$(LFLAGS) $files \$(APP_EX_OBJ), $target,, $libs\n\n";
136         return($ret);
137         }
138
139 1;