Mercurial > dropbear
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 # @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.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 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 ifndef IGNORE_SPEED | 66 CC=@CC@ |
17 | 67 AR=@AR@ |
18 #for speed | 68 RANLIB=@RANLIB@ |
19 #CFLAGS += -O3 -funroll-all-loops | 69 STRIP=@STRIP@ |
20 | 70 INSTALL=@INSTALL@ |
21 #for size | 71 CPPFLAGS=@CPPFLAGS@ |
22 #CFLAGS += -Os | 72 CFLAGS=-I. -I$(srcdir) -I$(srcdir)/libtomcrypt/src/headers/ $(CPPFLAGS) @CFLAGS@ |
23 | 73 LIBS=$(LTC) $(LTM) @LIBS@ |
24 #x86 optimizations [should be valid for any GCC install though] | 74 LDFLAGS=@LDFLAGS@ |
25 #CFLAGS += -fomit-frame-pointer | 75 |
26 | 76 EXEEXT=@EXEEXT@ |
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 $($@objs) 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) $@ $(OBJECTS) | 156 dropbear dbclient dropbearkey dropbearconvert: $(HEADERS) $(LTC) $(LTM) \ |
90 $(RANLIB) $@ | 157 Makefile |
91 | 158 $(CC) $(LDFLAGS) -o $@$(EXEEXT) $($@objs) $(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 $@$(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) |