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)/*