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