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