155714Skris#!/usr/local/bin/perl
255714Skris#
355714Skris# linux.pl - the standard unix makefile stuff.
455714Skris#
555714Skris
655714Skris$o='/';
755714Skris$cp='/bin/cp';
855714Skris$rm='/bin/rm -f';
955714Skris
1055714Skris# C compiler stuff
1155714Skris
1255714Skris$cc='gcc';
1355714Skrisif ($debug)
1455714Skris	{ $cflags="-g2 -ggdb -DREF_CHECK -DCRYPTO_MDEBUG"; }
1568651Skriselsif ($profile)
1668651Skris	{ $cflags="-pg -O3"; }
1755714Skriselse
1855714Skris	{ $cflags="-O3 -fomit-frame-pointer"; }
1955714Skris
2055714Skrisif (!$no_asm)
2155714Skris	{
2255714Skris	$bn_asm_obj='$(OBJ_D)/bn86-elf.o';
2355714Skris	$bn_asm_src='crypto/bn/asm/bn86unix.cpp';
2468651Skris	$bnco_asm_obj='$(OBJ_D)/co86-elf.o';
2568651Skris	$bnco_asm_src='crypto/bn/asm/co86unix.cpp';
2655714Skris	$des_enc_obj='$(OBJ_D)/dx86-elf.o $(OBJ_D)/yx86-elf.o';
2755714Skris	$des_enc_src='crypto/des/asm/dx86unix.cpp crypto/des/asm/yx86unix.cpp';
2855714Skris	$bf_enc_obj='$(OBJ_D)/bx86-elf.o';
2955714Skris	$bf_enc_src='crypto/bf/asm/bx86unix.cpp';
3055714Skris	$cast_enc_obj='$(OBJ_D)/cx86-elf.o';
3155714Skris	$cast_enc_src='crypto/cast/asm/cx86unix.cpp';
3255714Skris	$rc4_enc_obj='$(OBJ_D)/rx86-elf.o';
3355714Skris	$rc4_enc_src='crypto/rc4/asm/rx86unix.cpp';
3455714Skris	$rc5_enc_obj='$(OBJ_D)/r586-elf.o';
3555714Skris	$rc5_enc_src='crypto/rc5/asm/r586unix.cpp';
3655714Skris	$md5_asm_obj='$(OBJ_D)/mx86-elf.o';
3755714Skris	$md5_asm_src='crypto/md5/asm/mx86unix.cpp';
3855714Skris	$rmd160_asm_obj='$(OBJ_D)/rm86-elf.o';
3955714Skris	$rmd160_asm_src='crypto/ripemd/asm/rm86unix.cpp';
4055714Skris	$sha1_asm_obj='$(OBJ_D)/sx86-elf.o';
4155714Skris	$sha1_asm_src='crypto/sha/asm/sx86unix.cpp';
42160814Ssimon	$cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS";
4355714Skris	}
4455714Skris
4555714Skris$cflags.=" -DTERMIO -DL_ENDIAN -m486 -Wall";
4655714Skris
4755714Skrisif ($shlib)
4855714Skris	{
4955714Skris	$shl_cflag=" -DPIC -fpic";
5055714Skris	$shlibp=".so.$ssl_version";
5155714Skris	$so_shlibp=".so";
5255714Skris	}
5355714Skris
5455714Skrissub do_shlib_rule
5555714Skris	{
5655714Skris	local($obj,$target,$name,$shlib,$so_name)=@_;
5755714Skris	local($ret,$_,$Name);
5855714Skris
5955714Skris	$target =~ s/\//$o/g if $o ne '/';
6055714Skris	($Name=$name) =~ tr/a-z/A-Z/;
6155714Skris
6255714Skris	$ret.="$target: \$(${Name}OBJ)\n";
6355714Skris	$ret.="\t\$(RM) target\n";
6455714Skris	$ret.="\tgcc \${CFLAGS} -shared -Wl,-soname,$target -o $target \$(${Name}OBJ)\n";
6555714Skris	($t=$target) =~ s/(^.*)\/[^\/]*$/$1/;
6655714Skris	if ($so_name ne "")
6755714Skris		{
6855714Skris		$ret.="\t\$(RM) \$(LIB_D)$o$so_name\n";
6955714Skris		$ret.="\tln -s $target \$(LIB_D)$o$so_name\n\n";
7055714Skris		}
7155714Skris	}
7255714Skris
7355714Skrissub do_link_rule
7455714Skris	{
75160814Ssimon	local($target,$files,$dep_libs,$libs)=@_;
7655714Skris	local($ret,$_);
7755714Skris
7855714Skris	$file =~ s/\//$o/g if $o ne '/';
7955714Skris	$n=&bname($target);
8055714Skris	$ret.="$target: $files $dep_libs\n";
81296279Sjkim	$ret.="\t\$(LINK_CMD) ${efile}$target \$(LFLAGS) $files $libs\n\n";
8255714Skris	return($ret);
8355714Skris	}
8455714Skris
8555714Skrissub do_asm_rule
8655714Skris	{
8755714Skris	local($target,$src)=@_;
8855714Skris	local($ret,@s,@t,$i);
8955714Skris
9055714Skris	$target =~ s/\//$o/g if $o ne "/";
9155714Skris	$src =~ s/\//$o/g if $o ne "/";
9255714Skris
9355714Skris	@s=split(/\s+/,$src);
9455714Skris	@t=split(/\s+/,$target);
9555714Skris
9655714Skris	for ($i=0; $i<=$#s; $i++)
9755714Skris		{
9855714Skris		$ret.="$t[$i]: $s[$i]\n";
9955714Skris		$ret.="\tgcc -E -DELF \$(SRC_D)$o$s[$i]|\$(AS) $afile$t[$i]\n\n";
10055714Skris		}
10155714Skris	return($ret);
10255714Skris	}
10355714Skris
10455714Skris1;
105