comparison Makefile.in @ 389:5ff8218bcee9

propagate from branch 'au.asn.ucc.matt.ltm.dropbear' (head 2af95f00ebd5bb7a28b3817db1218442c935388e) to branch 'au.asn.ucc.matt.dropbear' (head ecd779509ef23a8cdf64888904fc9b31d78aa933)
author Matt Johnston <matt@ucc.asn.au>
date Thu, 11 Jan 2007 03:14:55 +0000
parents fb54020f78e1 0cbe8f6dbf9e
children 52a644e7b8e1
comparison
equal deleted inserted replaced
388:fb54020f78e1 389:5ff8218bcee9
1 #Makefile for GCC 1 # This Makefile is for Dropbear SSH Server and Client
2 # @[email protected]
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.40 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 [email protected]@ 58 [email protected]@
9 [email protected]@ 59 [email protected]@
10 60
11 # Dropbear takes flags from the toplevel makefile 61 [email protected]@
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 ifndef IGNORE_SPEED 66 [email protected]@
17 67 [email protected]@
18 #for speed 68 [email protected]@
19 #CFLAGS += -O3 -funroll-all-loops 69 [email protected]@
20 70 [email protected][email protected]
21 #for size 71 [email protected]@
22 #CFLAGS += -Os 72 CFLAGS=-I. -I$(srcdir) -I$(srcdir)/libtomcrypt/src/headers/ $(CPPFLAGS) @[email protected]
23 73 LIBS=$(LTC) $(LTM) @[email protected]
24 #x86 optimizations [should be valid for any GCC install though] 74 [email protected]@
25 #CFLAGS += -fomit-frame-pointer 75
26 76 [email protected]@
27 #debug 77
28 #CFLAGS += -g3 78 # whether we're building client, server, or both for the common objects.
29 79 # evilness so we detect 'dropbear' by itself as a word
30 #install as this user 80 space:= $(empty) $(empty)
31 ifndef INSTALL_GROUP 81 ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdropbearZ, Z$(prog)Z))))
32 GROUP=wheel 82 CFLAGS+= -DDROPBEAR_SERVER
83 endif
84 ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdbclientZ, Z$(prog)Z))))
85 CFLAGS+= -DDROPBEAR_CLIENT
86 endif
87
88
89 # these are exported so that libtomcrypt's makefile will use them
90 export CC
91 export CFLAGS
92 export RANLIB AR STRIP
93
94 ifeq ($(STATIC), 1)
95 LDFLAGS+=-static
96 endif
97
98 ifeq ($(MULTI), 1)
99 TARGETS=dropbearmulti
33 else 100 else
34 GROUP=$(INSTALL_GROUP) 101 TARGETS=$(PROGRAMS)
35 endif 102 endif
36 103
37 ifndef INSTALL_USER 104 # for the scp progress meter. The -D doesn't affect anything else.
38 USER=root 105 ifeq ($(SCPPROGRESS), 1)
39 else 106 CFLAGS+=-DPROGRESS_METER
40 USER=$(INSTALL_USER) 107 endif
41 endif 108
42 109 #%: $(HEADERS)
43 #default files to install 110 #%: $(HEADERS) Makefile
44 ifndef LIBNAME 111 # TODO
45 LIBNAME=libtommath.a 112
46 endif 113 all: $(TARGETS)
47 114
48 default: ${LIBNAME} 115 strip: $(TARGETS)
49 116 $(STRIP) $(addsuffix $(EXEEXT), $(TARGETS))
50 HEADERS=tommath.h tommath_class.h tommath_superclass.h 117
51 118 install: $(addprefix inst_, $(TARGETS))
52 #LIBPATH-The directory for libtommath to be installed to. 119
53 #INCPATH-The directory to install the header files for libtommath. 120 installdropbearmulti: insdbmulti $(addprefix insmulti, $(PROGRAMS))
54 #DATAPATH-The directory to install the pdf docs. 121
55 DESTDIR= 122 insdbmulti: dropbearmulti
56 LIBPATH=/usr/lib 123 $(INSTALL) -d -m 755 $(DESTDIR)$(bindir)
57 INCPATH=/usr/include 124 $(INSTALL) -m 755 dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir)
58 DATAPATH=/usr/share/doc/libtommath/pdf 125 -chown root $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT)
59 126 -chgrp 0 $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT)
60 OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ 127
61 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 \ 128 insmultidropbear: dropbearmulti
62 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 \ 129 -rm -f $(DESTDIR)$(sbindir)/dropbear$(EXEEXT)
63 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 \ 130 -ln -s $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(sbindir)/dropbear$(EXEEXT)
64 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 \ 131
65 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 \ 132 insmulti%: dropbearmulti
66 bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ 133 -rm -f $(DESTDIR)$(bindir)/$*$(EXEEXT)
67 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 \ 134 -ln -s $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir)/$*$(EXEEXT)
68 bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ 135
69 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 \ 136 # dropbear should go in sbin, so it needs a seperate rule
70 bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ 137 inst_dropbear: dropbear
71 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 \ 138 $(INSTALL) -d -m 755 $(DESTDIR)$(sbindir)
72 bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ 139 $(INSTALL) -m 755 dropbear$(EXEEXT) $(DESTDIR)$(sbindir)
73 bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ 140 -chown root $(DESTDIR)$(sbindir)/dropbear$(EXEEXT)
74 bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ 141 -chgrp 0 $(DESTDIR)$(sbindir)/dropbear$(EXEEXT)
75 bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ 142
76 bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ 143 inst_%: $*
77 bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ 144 $(INSTALL) -d -m 755 $(DESTDIR)$(bindir)
78 bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ 145 $(INSTALL) -m 755 $*$(EXEEXT) $(DESTDIR)$(bindir)
79 bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ 146 -chown root $(DESTDIR)$(bindir)/$*$(EXEEXT)
80 bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ 147 -chgrp 0 $(DESTDIR)$(bindir)/$*$(EXEEXT)
81 bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ 148
82 bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ 149
83 bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ 150 # for some reason the rule further down doesn't like $([email protected]) as a prereq.
84 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 \ 151 dropbear: $(dropbearobjs)
85 bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ 152 dbclient: $(dbclientobjs)
86 bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o 153 dropbearkey: $(dropbearkeyobjs)
87 154 dropbearconvert: $(dropbearconvertobjs)
88 $(LIBNAME): $(OBJECTS) 155
89 $(AR) $(ARFLAGS) [email protected] $(OBJECTS) 156 dropbear dbclient dropbearkey dropbearconvert: $(HEADERS) $(LTC) $(LTM) \
90 $(RANLIB) [email protected] 157 Makefile
91 158 $(CC) $(LDFLAGS) -o [email protected]$(EXEEXT) $([email protected]) $(LIBS)
92 #make a profiled library (takes a while!!!) 159
93 # 160 # scp doesn't use the libs so is special.
94 # This will build the library with profile generation 161 scp: $(SCPOBJS) $(HEADERS) Makefile
95 # then run the test demo and rebuild the library. 162 $(CC) $(LDFLAGS) -o [email protected]$(EXEEXT) $(SCPOBJS)
96 # 163
97 # So far I've seen improvements in the MP math 164
98 profiled: 165 # multi-binary compilation.
99 make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing 166 MULTIOBJS=
100 ./ltmtest 167 ifeq ($(MULTI),1)
101 rm -f *.a *.o ltmtest 168 MULTIOBJS=dbmulti.o $(sort $(foreach prog, $(PROGRAMS), $($(prog)objs)))
102 make CFLAGS="$(CFLAGS) -fbranch-probabilities" 169 CFLAGS+=$(addprefix -DDBMULTI_, $(PROGRAMS)) -DDROPBEAR_MULTI
103 170 endif
104 #make a single object profiled library 171
105 profiled_single: 172 dropbearmulti: multilink
106 perl gen.pl 173
107 $(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o 174 multibinary: $(HEADERS) $(MULTIOBJS) $(LTC) $(LTM) Makefile
108 $(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -o ltmtest 175 $(CC) $(LDFLAGS) -o dropbearmulti$(EXEEXT) $(MULTIOBJS) $(LIBS)
109 ./ltmtest 176
110 rm -f *.o ltmtest 177 multilink: multibinary $(addprefix link, $(PROGRAMS))
111 $(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o 178
112 $(AR) $(ARFLAGS) $(LIBNAME) mpi.o 179 link%:
113 $(RANLIB) $(LIBNAME) 180 -rm -f $*$(EXEEXT)
114 181 -ln -s dropbearmulti$(EXEEXT) $*$(EXEEXT)
115 install: $(LIBNAME) 182
116 install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) 183 $(LTC): options.h
117 install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) 184 cd libtomcrypt && $(MAKE) clean && $(MAKE)
118 install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) 185
119 install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) 186 $(LTM): options.h
120 187 cd libtommath && $(MAKE)
121 test: $(LIBNAME) demo/demo.o 188
122 $(CC) $(CFLAGS) demo/demo.o $(LIBNAME) -o test 189 .PHONY : clean sizes thisclean distclean tidy ltc-clean ltm-clean
123 190
124 mtest: test 191 ltc-clean:
125 cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest 192 cd libtomcrypt && $(MAKE) clean
126 193
127 timing: $(LIBNAME) 194 ltm-clean:
128 $(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o ltmtest 195 cd libtommath && $(MAKE) clean
129 196
130 # makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think] 197 sizes: dropbear
131 docdvi: tommath.src 198 objdump -t dropbear|grep ".text"|cut -d "." -f 2|sort -rn
132 cd pics ; MAKE=${MAKE} ${MAKE} 199
133 echo "hello" > tommath.ind 200 clean: ltc-clean ltm-clean thisclean
134 perl booker.pl 201
135 latex tommath > /dev/null 202 thisclean:
136 latex tommath > /dev/null 203 -rm -f dropbear dbclient dropbearkey dropbearconvert scp scp-progress \
137 makeindex tommath 204 dropbearmulti *.o *.da *.bb *.bbg *.prof
138 latex tommath > /dev/null 205
139 206 distclean: clean tidy
140 # poster, makes the single page PDF poster 207 -rm -f config.h
141 poster: poster.tex 208 -rm -f Makefile
142 pdflatex poster 209
143 rm -f poster.aux poster.log 210 tidy:
144 211 -rm -f *~ *.gcov */*~
145 # makes the LTM book PDF file, requires tetex, cleans up the LaTeX temp files
146 docs: docdvi
147 dvipdf tommath
148 rm -f tommath.log tommath.aux tommath.dvi tommath.idx tommath.toc tommath.lof tommath.ind tommath.ilg
149 cd pics ; MAKE=${MAKE} ${MAKE} clean
150
151 #LTM user manual
152 mandvi: bn.tex
153 echo "hello" > bn.ind
154 latex bn > /dev/null
155 latex bn > /dev/null
156 makeindex bn
157 latex bn > /dev/null
158
159 #LTM user manual [pdf]
160 manual: mandvi
161 pdflatex bn >/dev/null
162 rm -f bn.aux bn.dvi bn.log bn.idx bn.lof bn.out bn.toc
163
164 pretty:
165 perl pretty.build
166
167 clean:
168 rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \
169 *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la
170 rm -rf .libs
171 cd etc ; MAKE=${MAKE} ${MAKE} clean
172 cd pics ; MAKE=${MAKE} ${MAKE} clean
173
174 #zipup the project (take that!)
175 no_oops: clean
176 cd .. ; cvs commit
177 echo Scanning for scratch/dirty files
178 find . -type f | grep -v CVS | xargs -n 1 bash mess.sh
179
180 zipup: clean manual poster docs
181 perl gen.pl ; mv mpi.c pre_gen/ ; \
182 cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \
183 cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; \
184 tar -c libtommath-$(VERSION)/* | bzip2 -9vvc > ltm-$(VERSION).tar.bz2 ; \
185 zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* ; \
186 mv -f ltm* ~ ; rm -rf libtommath-$(VERSION)