linux.pl revision 55714
1#!/usr/local/bin/perl
2#
3# linux.pl - the standard unix makefile stuff.
4#
5
6$o='/';
7$cp='/bin/cp';
8$rm='/bin/rm -f';
9
10# C compiler stuff
11
12$cc='gcc';
13if ($debug)
14	{ $cflags="-g2 -ggdb -DREF_CHECK -DCRYPTO_MDEBUG"; }
15else
16	{ $cflags="-O3 -fomit-frame-pointer"; }
17
18if (!$no_asm)
19	{
20	$bn_asm_obj='$(OBJ_D)/bn86-elf.o';
21	$bn_asm_src='crypto/bn/asm/bn86unix.cpp';
22	$des_enc_obj='$(OBJ_D)/dx86-elf.o $(OBJ_D)/yx86-elf.o';
23	$des_enc_src='crypto/des/asm/dx86unix.cpp crypto/des/asm/yx86unix.cpp';
24	$bf_enc_obj='$(OBJ_D)/bx86-elf.o';
25	$bf_enc_src='crypto/bf/asm/bx86unix.cpp';
26	$cast_enc_obj='$(OBJ_D)/cx86-elf.o';
27	$cast_enc_src='crypto/cast/asm/cx86unix.cpp';
28	$rc4_enc_obj='$(OBJ_D)/rx86-elf.o';
29	$rc4_enc_src='crypto/rc4/asm/rx86unix.cpp';
30	$rc5_enc_obj='$(OBJ_D)/r586-elf.o';
31	$rc5_enc_src='crypto/rc5/asm/r586unix.cpp';
32	$md5_asm_obj='$(OBJ_D)/mx86-elf.o';
33	$md5_asm_src='crypto/md5/asm/mx86unix.cpp';
34	$rmd160_asm_obj='$(OBJ_D)/rm86-elf.o';
35	$rmd160_asm_src='crypto/ripemd/asm/rm86unix.cpp';
36	$sha1_asm_obj='$(OBJ_D)/sx86-elf.o';
37	$sha1_asm_src='crypto/sha/asm/sx86unix.cpp';
38	$cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM";
39	}
40
41$cflags.=" -DTERMIO -DL_ENDIAN -m486 -Wall";
42
43if ($shlib)
44	{
45	$shl_cflag=" -DPIC -fpic";
46	$shlibp=".so.$ssl_version";
47	$so_shlibp=".so";
48	}
49
50sub do_shlib_rule
51	{
52	local($obj,$target,$name,$shlib,$so_name)=@_;
53	local($ret,$_,$Name);
54
55	$target =~ s/\//$o/g if $o ne '/';
56	($Name=$name) =~ tr/a-z/A-Z/;
57
58	$ret.="$target: \$(${Name}OBJ)\n";
59	$ret.="\t\$(RM) target\n";
60	$ret.="\tgcc \${CFLAGS} -shared -Wl,-soname,$target -o $target \$(${Name}OBJ)\n";
61	($t=$target) =~ s/(^.*)\/[^\/]*$/$1/;
62	if ($so_name ne "")
63		{
64		$ret.="\t\$(RM) \$(LIB_D)$o$so_name\n";
65		$ret.="\tln -s $target \$(LIB_D)$o$so_name\n\n";
66		}
67	}
68
69sub do_link_rule
70	{
71	local($target,$files,$dep_libs,$libs)=@_;
72	local($ret,$_);
73
74	$file =~ s/\//$o/g if $o ne '/';
75	$n=&bname($target);
76	$ret.="$target: $files $dep_libs\n";
77	$ret.="\t\$(LINK) ${efile}$target \$(LFLAGS) $files $libs\n\n";
78	return($ret);
79	}
80
81sub do_asm_rule
82	{
83	local($target,$src)=@_;
84	local($ret,@s,@t,$i);
85
86	$target =~ s/\//$o/g if $o ne "/";
87	$src =~ s/\//$o/g if $o ne "/";
88
89	@s=split(/\s+/,$src);
90	@t=split(/\s+/,$target);
91
92	for ($i=0; $i<=$#s; $i++)
93		{
94		$ret.="$t[$i]: $s[$i]\n";
95		$ret.="\tgcc -E -DELF \$(SRC_D)$o$s[$i]|\$(AS) $afile$t[$i]\n\n";
96		}
97	return($ret);
98	}
99
1001;
101