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