Mercurial > dropbear
comparison Makefile.in @ 284:eed26cff980b
propagate from branch 'au.asn.ucc.matt.ltm.dropbear' (head 6c790cad5a7fa866ad062cb3a0c279f7ba788583)
to branch 'au.asn.ucc.matt.dropbear' (head fff0894a0399405a9410ea1c6d118f342cf2aa64)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 08 Mar 2006 13:23:49 +0000 |
parents | bd240aa12ba7 efbaf6b03837 |
children | 1b9e69c058d2 |
comparison
equal
deleted
inserted
replaced
283:bd240aa12ba7 | 284:eed26cff980b |
---|---|
1 #Makefile for GCC | 1 # This Makefile is for Dropbear SSH Server and Client |
2 # @configure_input@ | |
3 | |
4 # invocation: | |
5 # make PROGRAMS="dropbear dbclient scp" MULTI=1 STATIC=1 SCPPROGRESS=1 | |
2 # | 6 # |
3 #Tom St Denis | 7 # to make a multiple-program statically linked binary "staticdropbearmulti". |
4 | 8 # This example will include dropbear, scp, dropbearkey, dropbearconvert, and |
5 #version of library | 9 # dbclient functionality, and includes the progress-bar functionality in scp. |
6 VERSION=0.35 | 10 # Hopefully that seems intuitive. |
11 | |
12 ifndef PROGRAMS | |
13 PROGRAMS=dropbear dbclient dropbearkey dropbearconvert | |
14 endif | |
15 | |
16 LTC=libtomcrypt/libtomcrypt.a | |
17 LTM=libtommath/libtommath.a | |
18 | |
19 COMMONOBJS=dbutil.o buffer.o \ | |
20 dss.o bignum.o \ | |
21 signkey.o rsa.o random.o \ | |
22 queue.o \ | |
23 atomicio.o compat.o fake-rfc2553.o | |
24 | |
25 SVROBJS=svr-kex.o svr-algo.o svr-auth.o sshpty.o \ | |
26 svr-authpasswd.o svr-authpubkey.o svr-session.o svr-service.o \ | |
27 svr-chansession.o svr-runopts.o svr-agentfwd.o svr-main.o svr-x11fwd.o\ | |
28 svr-tcpfwd.o svr-authpam.o | |
29 | |
30 CLIOBJS=cli-algo.o cli-main.o cli-auth.o cli-authpasswd.o cli-kex.o \ | |
31 cli-session.o cli-service.o cli-runopts.o cli-chansession.o \ | |
32 cli-authpubkey.o cli-tcpfwd.o cli-channel.o cli-authinteract.o | |
33 | |
34 CLISVROBJS=common-session.o packet.o common-algo.o common-kex.o \ | |
35 common-channel.o common-chansession.o termcodes.o loginrec.o \ | |
36 tcp-accept.o listener.o process-packet.o \ | |
37 common-runopts.o circbuffer.o | |
38 | |
39 KEYOBJS=dropbearkey.o gendss.o genrsa.o | |
40 | |
41 CONVERTOBJS=dropbearconvert.o keyimport.o | |
42 | |
43 SCPOBJS=scp.o progressmeter.o atomicio.o scpmisc.o | |
44 | |
45 HEADERS=options.h dbutil.h session.h packet.h algo.h ssh.h buffer.h kex.h \ | |
46 dss.h bignum.h signkey.h rsa.h random.h service.h auth.h \ | |
47 debug.h channel.h chansession.h config.h queue.h sshpty.h \ | |
48 termcodes.h gendss.h genrsa.h runopts.h includes.h \ | |
49 loginrec.h atomicio.h x11fwd.h agentfwd.h tcpfwd.h compat.h \ | |
50 listener.h fake-rfc2553.h | |
51 | |
52 dropbearobjs=$(COMMONOBJS) $(CLISVROBJS) $(SVROBJS) | |
53 dbclientobjs=$(COMMONOBJS) $(CLISVROBJS) $(CLIOBJS) | |
54 dropbearkeyobjs=$(COMMONOBJS) $(KEYOBJS) | |
55 dropbearconvertobjs=$(COMMONOBJS) $(CONVERTOBJS) | |
56 scpobjs=$(SCPOBJS) | |
7 | 57 |
8 VPATH=@srcdir@ | 58 VPATH=@srcdir@ |
9 srcdir=@srcdir@ | 59 srcdir=@srcdir@ |
10 | 60 |
11 # Dropbear takes flags from the toplevel makefile | 61 prefix=@prefix@ |
12 CFLAGS += -I$(srcdir) | 62 exec_prefix=${prefix} |
13 | 63 bindir=${exec_prefix}/bin |
14 #CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare | 64 sbindir=${exec_prefix}/sbin |
15 | 65 |
16 #for speed | 66 CC=@CC@ |
17 #CFLAGS += -O3 -funroll-all-loops | 67 LD=@LD@ |
18 | 68 AR=@AR@ |
19 #for size | 69 RANLIB=@RANLIB@ |
20 #CFLAGS += -Os | 70 STRIP=@STRIP@ |
21 | 71 INSTALL=@INSTALL@ |
22 #x86 optimizations [should be valid for any GCC install though] | 72 CFLAGS=-I. -I$(srcdir)/libtomcrypt/src/headers/ @CFLAGS@ |
23 #CFLAGS += -fomit-frame-pointer | 73 LIBS=$(LTC) $(LTM) @LIBS@ |
24 | 74 LDFLAGS=@LDFLAGS@ |
25 #debug | 75 |
26 #CFLAGS += -g3 | 76 EXEEXT=@EXEEXT@ |
27 | 77 |
28 #install as this user | 78 # whether we're building client, server, or both for the common objects. |
29 USER=root | 79 # evilness so we detect 'dropbear' by itself as a word |
30 GROUP=root | 80 space:= $(empty) $(empty) |
31 | 81 ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdropbearZ, Z$(prog)Z)))) |
32 default: libtommath.a | 82 CFLAGS+= -DDROPBEAR_SERVER |
33 | 83 endif |
34 #default files to install | 84 ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdbclientZ, Z$(prog)Z)))) |
35 LIBNAME=libtommath.a | 85 CFLAGS+= -DDROPBEAR_CLIENT |
36 HEADERS=tommath.h tommath_class.h tommath_superclass.h | 86 endif |
37 | 87 |
38 #LIBPATH-The directory for libtommath to be installed to. | 88 |
39 #INCPATH-The directory to install the header files for libtommath. | 89 # these are exported so that libtomcrypt's makefile will use them |
40 #DATAPATH-The directory to install the pdf docs. | 90 export CC |
41 DESTDIR= | 91 export CFLAGS |
42 LIBPATH=/usr/lib | 92 export RANLIB AR STRIP |
43 INCPATH=/usr/include | 93 |
44 DATAPATH=/usr/share/doc/libtommath/pdf | 94 ifeq ($(STATIC), 1) |
45 | 95 LDFLAGS+=-static |
46 OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ | 96 endif |
47 bn_mp_clamp.o bn_mp_zero.o bn_mp_set.o bn_mp_set_int.o bn_mp_init_size.o bn_mp_copy.o \ | 97 |
48 bn_mp_init_copy.o bn_mp_abs.o bn_mp_neg.o bn_mp_cmp_mag.o bn_mp_cmp.o bn_mp_cmp_d.o \ | 98 ifeq ($(MULTI), 1) |
49 bn_mp_rshd.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_div_2d.o bn_mp_mul_2d.o bn_mp_div_2.o \ | 99 TARGETS=dropbearmulti |
50 bn_mp_mul_2.o bn_s_mp_add.o bn_s_mp_sub.o bn_fast_s_mp_mul_digs.o bn_s_mp_mul_digs.o \ | 100 else |
51 bn_fast_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_s_mp_sqr.o \ | 101 TARGETS=$(PROGRAMS) |
52 bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ | 102 endif |
53 bn_mp_sqr.o bn_mp_div.o bn_mp_mod.o bn_mp_add_d.o bn_mp_sub_d.o bn_mp_mul_d.o \ | 103 |
54 bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ | 104 # for the scp progress meter. The -D doesn't affect anything else. |
55 bn_mp_mulmod.o bn_mp_sqrmod.o bn_mp_gcd.o bn_mp_lcm.o bn_fast_mp_invmod.o bn_mp_invmod.o \ | 105 ifeq ($(SCPPROGRESS), 1) |
56 bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ | 106 CFLAGS+=-DPROGRESS_METER |
57 bn_mp_exptmod_fast.o bn_mp_exptmod.o bn_mp_2expt.o bn_mp_n_root.o bn_mp_jacobi.o bn_reverse.o \ | 107 endif |
58 bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ | 108 |
59 bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ | 109 #%: $(HEADERS) |
60 bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ | 110 #%: $(HEADERS) Makefile |
61 bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ | 111 # TODO |
62 bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ | 112 |
63 bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ | 113 all: $(TARGETS) |
64 bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ | 114 |
65 bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ | 115 strip: $(TARGETS) |
66 bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ | 116 $(STRIP) $(addsuffix $(EXEEXT), $(TARGETS)) |
67 bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ | 117 |
68 bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ | 118 install: $(addprefix inst_, $(TARGETS)) |
69 bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ | 119 |
70 bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ | 120 installdropbearmulti: insdbmulti $(addprefix insmulti, $(PROGRAMS)) |
71 bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ | 121 |
72 bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o | 122 insdbmulti: dropbearmulti |
73 | 123 $(INSTALL) -d -m 755 $(DESTDIR)$(bindir) |
74 libtommath.a: $(OBJECTS) | 124 $(INSTALL) -m 755 dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir) |
75 $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) | 125 -chown root $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) |
76 $(RANLIB) libtommath.a | 126 -chgrp 0 $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) |
77 | 127 |
78 #make a profiled library (takes a while!!!) | 128 insmultidropbear: dropbearmulti |
79 # | 129 -rm -f $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) |
80 # This will build the library with profile generation | 130 -ln -s $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) |
81 # then run the test demo and rebuild the library. | 131 |
82 # | 132 insmulti%: dropbearmulti |
83 # So far I've seen improvements in the MP math | 133 -rm -f $(DESTDIR)$(bindir)/$*$(EXEEXT) |
84 profiled: | 134 -ln -s $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir)/$*$(EXEEXT) |
85 make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing | 135 |
86 ./ltmtest | 136 # dropbear should go in sbin, so it needs a seperate rule |
87 rm -f *.a *.o ltmtest | 137 inst_dropbear: dropbear |
88 make CFLAGS="$(CFLAGS) -fbranch-probabilities" | 138 $(INSTALL) -d -m 755 $(DESTDIR)$(sbindir) |
89 | 139 $(INSTALL) -m 755 dropbear$(EXEEXT) $(DESTDIR)$(sbindir) |
90 #make a single object profiled library | 140 -chown root $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) |
91 profiled_single: | 141 -chgrp 0 $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) |
92 perl gen.pl | 142 |
93 $(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o | 143 inst_%: $* |
94 $(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -o ltmtest | 144 $(INSTALL) -d -m 755 $(DESTDIR)$(bindir) |
95 ./ltmtest | 145 $(INSTALL) -m 755 $*$(EXEEXT) $(DESTDIR)$(bindir) |
96 rm -f *.o ltmtest | 146 -chown root $(DESTDIR)$(bindir)/$*$(EXEEXT) |
97 $(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o | 147 -chgrp 0 $(DESTDIR)$(bindir)/$*$(EXEEXT) |
98 $(AR) $(ARFLAGS) libtommath.a mpi.o | 148 |
99 ranlib libtommath.a | 149 |
100 | 150 # for some reason the rule further down doesn't like $($@objs) as a prereq. |
101 install: libtommath.a | 151 dropbear: $(dropbearobjs) |
102 install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) | 152 dbclient: $(dbclientobjs) |
103 install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) | 153 dropbearkey: $(dropbearkeyobjs) |
104 install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) | 154 dropbearconvert: $(dropbearconvertobjs) |
105 install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) | 155 |
106 | 156 dropbear dbclient dropbearkey dropbearconvert: $(HEADERS) $(LTC) $(LTM) \ |
107 test: libtommath.a demo/demo.o | 157 Makefile |
108 $(CC) $(CFLAGS) demo/demo.o libtommath.a -o test | 158 $(LD) $(LDFLAGS) -o $@$(EXEEXT) $($@objs) $(LIBS) |
109 | 159 |
110 mtest: test | 160 # scp doesn't use the libs so is special. |
111 cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest | 161 scp: $(SCPOBJS) $(HEADERS) Makefile |
112 | 162 $(LD) $(LDFLAGS) -o $@$(EXEEXT) $(SCPOBJS) |
113 timing: libtommath.a | 163 |
114 $(CC) $(CFLAGS) -DTIMER demo/timing.c libtommath.a -o ltmtest | 164 |
115 | 165 # multi-binary compilation. |
116 # makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think] | 166 MULTIOBJS= |
117 docdvi: tommath.src | 167 ifeq ($(MULTI),1) |
118 cd pics ; make | 168 MULTIOBJS=dbmulti.o $(sort $(foreach prog, $(PROGRAMS), $($(prog)objs))) |
119 echo "hello" > tommath.ind | 169 CFLAGS+=$(addprefix -DDBMULTI_, $(PROGRAMS)) -DDROPBEAR_MULTI |
120 perl booker.pl | 170 endif |
121 latex tommath > /dev/null | 171 |
122 latex tommath > /dev/null | 172 dropbearmulti: multilink |
123 makeindex tommath | 173 |
124 latex tommath > /dev/null | 174 multibinary: $(HEADERS) $(MULTIOBJS) $(LTC) $(LTM) Makefile |
125 | 175 $(LD) $(LDFLAGS) -o dropbearmulti$(EXEEXT) $(MULTIOBJS) $(LIBS) |
126 # poster, makes the single page PDF poster | 176 |
127 poster: poster.tex | 177 multilink: multibinary $(addprefix link, $(PROGRAMS)) |
128 pdflatex poster | 178 |
129 rm -f poster.aux poster.log | 179 link%: |
130 | 180 -rm -f $*$(EXEEXT) |
131 # makes the LTM book PDF file, requires tetex, cleans up the LaTeX temp files | 181 -ln -s dropbearmulti$(EXEEXT) $*$(EXEEXT) |
132 docs: docdvi | 182 |
133 dvipdf tommath | 183 $(LTC): options.h |
134 rm -f tommath.log tommath.aux tommath.dvi tommath.idx tommath.toc tommath.lof tommath.ind tommath.ilg | 184 cd libtomcrypt && $(MAKE) clean && $(MAKE) |
135 cd pics ; make clean | 185 |
136 | 186 $(LTM): options.h |
137 #LTM user manual | 187 cd libtommath && $(MAKE) |
138 mandvi: bn.tex | 188 |
139 echo "hello" > bn.ind | 189 ltc-clean: |
140 latex bn > /dev/null | 190 cd libtomcrypt && $(MAKE) clean |
141 latex bn > /dev/null | 191 |
142 makeindex bn | 192 ltm-clean: |
143 latex bn > /dev/null | 193 cd libtommath && $(MAKE) clean |
144 | 194 |
145 #LTM user manual [pdf] | 195 sizes: dropbear |
146 manual: mandvi | 196 objdump -t dropbear|grep ".text"|cut -d "." -f 2|sort -rn |
147 pdflatex bn >/dev/null | 197 |
148 rm -f bn.aux bn.dvi bn.log bn.idx bn.lof bn.out bn.toc | 198 clean: ltc-clean ltm-clean thisclean |
149 | 199 |
150 pretty: | 200 thisclean: |
151 perl pretty.build | 201 -rm -f dropbear dbclient dropbearkey dropbearconvert scp scp-progress \ |
152 | 202 dropbearmulti *.o *.da *.bb *.bbg *.prof |
153 clean: | 203 |
154 rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \ | 204 distclean: clean tidy |
155 *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex *.lo *.la | 205 -rm -f config.h |
156 rm -rf .libs | 206 -rm -f Makefile |
157 cd etc && make clean | 207 |
158 cd pics && make clean | 208 tidy: |
159 | 209 -rm -f *~ *.gcov */*~ |
160 zipup: clean manual poster docs | |
161 perl gen.pl ; mv mpi.c pre_gen/ ; \ | |
162 cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \ | |
163 cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; \ | |
164 tar -c libtommath-$(VERSION)/* | bzip2 -9vvc > ltm-$(VERSION).tar.bz2 ; \ | |
165 zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* |