VC-32.pl revision 109998
19313Ssos#!/usr/local/bin/perl 29313Ssos# VCw32lib.pl - the file for Visual C++ 4.[01] for windows NT, static libraries 39313Ssos# 49313Ssos 59313Ssos$ssl= "ssleay32"; 69313Ssos$crypto="libeay32"; 79313Ssos 89313Ssos$o='\\'; 99313Ssos$cp='copy nul+'; # Timestamps get stuffed otherwise 109313Ssos$rm='del'; 119313Ssos 129313Ssos# C compiler stuff 139313Ssos$cc='cl'; 149313Ssos$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; 159313Ssos$lflags="/nologo /subsystem:console /machine:I386 /opt:ref"; 169313Ssos$mlflags=''; 179313Ssos 189313Ssos$out_def="out32"; 199313Ssos$tmp_def="tmp32"; 209313Ssos$inc_def="inc32"; 219313Ssos 229313Ssosif ($debug) 239313Ssos { 249313Ssos $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DOPENSSL_SYSNAME_WIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32"; 259313Ssos $lflags.=" /debug"; 269313Ssos $mlflags.=' /debug'; 279313Ssos } 2812458Sbde$cflags .= " -DOPENSSL_SYSNAME_WINNT" if $NT == 1; 299313Ssos 309313Ssos$obj='.obj'; 319313Ssos$ofile="/Fo"; 329313Ssos 3312458Sbde# EXE linking stuff 349313Ssos$link="link"; 359313Ssos$efile="/out:"; 369313Ssos$exep='.exe'; 379313Ssosif ($no_sock) 389313Ssos { $ex_libs=""; } 399313Ssoselse { $ex_libs="wsock32.lib user32.lib gdi32.lib"; } 4012458Sbde 419313Ssos# static library stuff 429313Ssos$mklib='lib'; 439313Ssos$ranlib=''; 449313Ssos$plib=""; 459313Ssos$libp=".lib"; 469313Ssos$shlibp=($shlib)?".dll":".lib"; 479313Ssos$lfile='/out:'; 489313Ssos 499313Ssos$shlib_ex_obj=""; 509313Ssos$app_ex_obj="setargv.obj"; 519313Ssosif ($nasm) { 529313Ssos $asm='nasmw -f win32'; 539313Ssos $afile='-o '; 549313Ssos} else { 559313Ssos $asm='ml /Cp /coff /c /Cx'; 569313Ssos $asm.=" /Zi" if $debug; 579313Ssos $afile='/Fo'; 589313Ssos} 599313Ssos 609313Ssos$bn_asm_obj=''; 619313Ssos$bn_asm_src=''; 629313Ssos$des_enc_obj=''; 639313Ssos$des_enc_src=''; 649313Ssos$bf_enc_obj=''; 659313Ssos$bf_enc_src=''; 669313Ssos 679313Ssosif (!$no_asm) 689313Ssos { 699313Ssos $bn_asm_obj='crypto\bn\asm\bn_win32.obj'; 709313Ssos $bn_asm_src='crypto\bn\asm\bn_win32.asm'; 719313Ssos $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj'; 729313Ssos $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm'; 739313Ssos $bf_enc_obj='crypto\bf\asm\b_win32.obj'; 749313Ssos $bf_enc_src='crypto\bf\asm\b_win32.asm'; 759313Ssos $cast_enc_obj='crypto\cast\asm\c_win32.obj'; 769313Ssos $cast_enc_src='crypto\cast\asm\c_win32.asm'; 779313Ssos $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj'; 789313Ssos $rc4_enc_src='crypto\rc4\asm\r4_win32.asm'; 799313Ssos $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj'; 809313Ssos $rc5_enc_src='crypto\rc5\asm\r5_win32.asm'; 819313Ssos $md5_asm_obj='crypto\md5\asm\m5_win32.obj'; 829313Ssos $md5_asm_src='crypto\md5\asm\m5_win32.asm'; 839313Ssos $sha1_asm_obj='crypto\sha\asm\s1_win32.obj'; 849313Ssos $sha1_asm_src='crypto\sha\asm\s1_win32.asm'; 859313Ssos $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj'; 869313Ssos $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm'; 879313Ssos $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; 889313Ssos } 899313Ssos 909313Ssosif ($shlib) 919313Ssos { 929313Ssos $mlflags.=" $lflags /dll"; 939313Ssos# $cflags =~ s| /MD| /MT|; 949313Ssos $lib_cflag=" -D_WINDLL"; 959313Ssos $out_def="out32dll"; 969313Ssos $tmp_def="tmp32dll"; 979313Ssos } 989313Ssos 999313Ssos$cflags.=" /Fd$out_def"; 1009313Ssos 1019313Ssossub do_lib_rule 1029313Ssos { 1039313Ssos local($objs,$target,$name,$shlib)=@_; 1049313Ssos local($ret,$Name); 1059313Ssos 1069313Ssos $taget =~ s/\//$o/g if $o ne '/'; 1079313Ssos ($Name=$name) =~ tr/a-z/A-Z/; 1089313Ssos 1099313Ssos# $target="\$(LIB_D)$o$target"; 1109313Ssos $ret.="$target: $objs\n"; 1119313Ssos if (!$shlib) 1129313Ssos { 1139313Ssos# $ret.="\t\$(RM) \$(O_$Name)\n"; 1149313Ssos $ex =' advapi32.lib'; 1159313Ssos $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n"; 1169313Ssos } 1179313Ssos else 1189313Ssos { 1199313Ssos local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; 1209313Ssos $ex.=' wsock32.lib gdi32.lib advapi32.lib'; 1219313Ssos $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; 1229313Ssos } 1239313Ssos $ret.="\n"; 1249313Ssos return($ret); 1259313Ssos } 1269313Ssos 1279313Ssossub do_link_rule 1289313Ssos { 1299313Ssos local($target,$files,$dep_libs,$libs)=@_; 1309313Ssos local($ret,$_); 1319313Ssos 1329313Ssos $file =~ s/\//$o/g if $o ne '/'; 1339313Ssos $n=&bname($targer); 1349313Ssos $ret.="$target: $files $dep_libs\n"; 1359313Ssos $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n"; 1369313Ssos $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n\n"; 1379313Ssos return($ret); 1389313Ssos } 1399313Ssos 1409313Ssos1; 1419313Ssos