linux.pl revision 142425
1178828Sdfr#!/usr/local/bin/perl 2178828Sdfr# 3178828Sdfr# linux.pl - the standard unix makefile stuff. 4178828Sdfr# 5178828Sdfr 6178828Sdfr$o='/'; 7178828Sdfr$cp='/bin/cp'; 8178828Sdfr$rm='/bin/rm -f'; 9178828Sdfr 10178828Sdfr# C compiler stuff 11178828Sdfr 12178828Sdfr$cc='gcc'; 13178828Sdfrif ($debug) 14178828Sdfr { $cflags="-g2 -ggdb -DREF_CHECK -DCRYPTO_MDEBUG"; } 15178828Sdfrelsif ($profile) 16178828Sdfr { $cflags="-pg -O3"; } 17178828Sdfrelse 18178828Sdfr { $cflags="-O3 -fomit-frame-pointer"; } 19178828Sdfr 20178828Sdfrif (!$no_asm) 21178828Sdfr { 22178828Sdfr $bn_asm_obj='$(OBJ_D)/bn86-elf.o'; 23178828Sdfr $bn_asm_src='crypto/bn/asm/bn86unix.cpp'; 24178828Sdfr $bnco_asm_obj='$(OBJ_D)/co86-elf.o'; 25178828Sdfr $bnco_asm_src='crypto/bn/asm/co86unix.cpp'; 26178828Sdfr $des_enc_obj='$(OBJ_D)/dx86-elf.o $(OBJ_D)/yx86-elf.o'; 27178828Sdfr $des_enc_src='crypto/des/asm/dx86unix.cpp crypto/des/asm/yx86unix.cpp'; 28178828Sdfr $bf_enc_obj='$(OBJ_D)/bx86-elf.o'; 29178828Sdfr $bf_enc_src='crypto/bf/asm/bx86unix.cpp'; 30178828Sdfr $cast_enc_obj='$(OBJ_D)/cx86-elf.o'; 31178828Sdfr $cast_enc_src='crypto/cast/asm/cx86unix.cpp'; 32178828Sdfr $rc4_enc_obj='$(OBJ_D)/rx86-elf.o'; 33178828Sdfr $rc4_enc_src='crypto/rc4/asm/rx86unix.cpp'; 34 $rc5_enc_obj='$(OBJ_D)/r586-elf.o'; 35 $rc5_enc_src='crypto/rc5/asm/r586unix.cpp'; 36 $md5_asm_obj='$(OBJ_D)/mx86-elf.o'; 37 $md5_asm_src='crypto/md5/asm/mx86unix.cpp'; 38 $rmd160_asm_obj='$(OBJ_D)/rm86-elf.o'; 39 $rmd160_asm_src='crypto/ripemd/asm/rm86unix.cpp'; 40 $sha1_asm_obj='$(OBJ_D)/sx86-elf.o'; 41 $sha1_asm_src='crypto/sha/asm/sx86unix.cpp'; 42 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM"; 43 } 44 45$cflags.=" -DTERMIO -DL_ENDIAN -m486 -Wall"; 46 47if ($shlib) 48 { 49 $shl_cflag=" -DPIC -fpic"; 50 $shlibp=".so.$ssl_version"; 51 $so_shlibp=".so"; 52 } 53 54sub do_shlib_rule 55 { 56 local($obj,$target,$name,$shlib,$so_name)=@_; 57 local($ret,$_,$Name); 58 59 $target =~ s/\//$o/g if $o ne '/'; 60 ($Name=$name) =~ tr/a-z/A-Z/; 61 62 $ret.="$target: \$(${Name}OBJ)\n"; 63 $ret.="\t\$(RM) target\n"; 64 $ret.="\tgcc \${CFLAGS} -shared -Wl,-soname,$target -o $target \$(${Name}OBJ)\n"; 65 ($t=$target) =~ s/(^.*)\/[^\/]*$/$1/; 66 if ($so_name ne "") 67 { 68 $ret.="\t\$(RM) \$(LIB_D)$o$so_name\n"; 69 $ret.="\tln -s $target \$(LIB_D)$o$so_name\n\n"; 70 } 71 } 72 73sub do_link_rule 74 { 75 local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; 76 local($ret,$_); 77 78 $file =~ s/\//$o/g if $o ne '/'; 79 $n=&bname($target); 80 $ret.="$target: $files $dep_libs\n"; 81 $ret.="\t\$(LINK) ${efile}$target \$(LFLAGS) $files $libs\n"; 82 if (defined $sha1file) 83 { 84 $ret.="\t$openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; 85 } 86 $ret.="\n"; 87 return($ret); 88 } 89 90sub do_asm_rule 91 { 92 local($target,$src)=@_; 93 local($ret,@s,@t,$i); 94 95 $target =~ s/\//$o/g if $o ne "/"; 96 $src =~ s/\//$o/g if $o ne "/"; 97 98 @s=split(/\s+/,$src); 99 @t=split(/\s+/,$target); 100 101 for ($i=0; $i<=$#s; $i++) 102 { 103 $ret.="$t[$i]: $s[$i]\n"; 104 $ret.="\tgcc -E -DELF \$(SRC_D)$o$s[$i]|\$(AS) $afile$t[$i]\n\n"; 105 } 106 return($ret); 107 } 108 1091; 110