Makefile.in 6.22 KB
Newer Older
1
#Makefile for GCC
Matt Johnston's avatar
Matt Johnston committed
2
3
4
#
#Tom St Denis

5
#version of library 
6
VERSION=0.40
Matt Johnston's avatar
Matt Johnston committed
7

8
9
10
VPATH=@[email protected]
srcdir=@[email protected]

11
# So that libtommath can include Dropbear headers for options and m_burn()
12
CFLAGS += -I. -I$(srcdir) -I../libtomcrypt/src/headers/ -I$(srcdir)/../libtomcrypt/src/headers/ -I../ -I$(srcdir)/../
13

14
15
ifndef IGNORE_SPEED

16
17
18
19
20
21
22
23
24
25
26
#for speed 
#CFLAGS += -O3 -funroll-all-loops

#for size 
#CFLAGS += -Os

#x86 optimizations [should be valid for any GCC install though]
#CFLAGS  += -fomit-frame-pointer

#debug
#CFLAGS += -g3
Matt Johnston's avatar
Matt Johnston committed
27

Matt Johnston's avatar
Matt Johnston committed
28
29
endif

Matt Johnston's avatar
Matt Johnston committed
30
#install as this user
31
32
33
34
35
ifndef INSTALL_GROUP
   GROUP=wheel
else
   GROUP=$(INSTALL_GROUP)
endif
Matt Johnston's avatar
Matt Johnston committed
36

37
38
39
40
41
ifndef INSTALL_USER
   USER=root
else
   USER=$(INSTALL_USER)
endif
Matt Johnston's avatar
Matt Johnston committed
42
43

#default files to install
44
45
46
ifndef LIBNAME
   LIBNAME=libtommath.a
endif
Matt Johnston's avatar
Matt Johnston committed
47

48
49
default: ${LIBNAME}

50
HEADERS=tommath.h tommath_class.h tommath_superclass.h
Matt Johnston's avatar
Matt Johnston committed
51

52
#LIBPATH-The directory for libtommath to be installed to.
Matt Johnston's avatar
Matt Johnston committed
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#INCPATH-The directory to install the header files for libtommath.
#DATAPATH-The directory to install the pdf docs.
DESTDIR=
LIBPATH=/usr/lib
INCPATH=/usr/include
DATAPATH=/usr/share/doc/libtommath/pdf

OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \
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 \
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 \
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 \
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 \
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 \
bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \
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 \
bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \
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 \
bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \
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 \
bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \
bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o  \
bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \
bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \
bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \
bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \
bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \
bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \
bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \
bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \
bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \
bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \
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 \
bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \
bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o

88
89
90
$(LIBNAME):  $(OBJECTS)
	$(AR) $(ARFLAGS) [email protected] $(OBJECTS)
	$(RANLIB) [email protected]
Matt Johnston's avatar
Matt Johnston committed
91
92
93
94
95
96
97
98

#make a profiled library (takes a while!!!)
#
# This will build the library with profile generation
# then run the test demo and rebuild the library.
# 
# So far I've seen improvements in the MP math
profiled:
99
	make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing
Matt Johnston's avatar
Matt Johnston committed
100
101
	./ltmtest
	rm -f *.a *.o ltmtest
102
	make CFLAGS="$(CFLAGS) -fbranch-probabilities"
Matt Johnston's avatar
Matt Johnston committed
103
104
105
106

#make a single object profiled library 
profiled_single:
	perl gen.pl
107
108
	$(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o
	$(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -o ltmtest
Matt Johnston's avatar
Matt Johnston committed
109
110
	./ltmtest
	rm -f *.o ltmtest
111
	$(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o
112
113
	$(AR) $(ARFLAGS) $(LIBNAME) mpi.o
	$(RANLIB) $(LIBNAME)	
Matt Johnston's avatar
Matt Johnston committed
114

115
install: $(LIBNAME)
Matt Johnston's avatar
Matt Johnston committed
116
117
118
119
120
	install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH)
	install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH)
	install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH)
	install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH)

121
122
test: $(LIBNAME) demo/demo.o
	$(CC) $(CFLAGS) demo/demo.o $(LIBNAME) -o test
Matt Johnston's avatar
Matt Johnston committed
123
124
125
126
	
mtest: test	
	cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest
        
127
128
timing: $(LIBNAME)
	$(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o ltmtest
Matt Johnston's avatar
Matt Johnston committed
129

130
131
# makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think]
docdvi: tommath.src
132
	cd pics ; MAKE=${MAKE} ${MAKE} 
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
	echo "hello" > tommath.ind
	perl booker.pl
	latex tommath > /dev/null
	latex tommath > /dev/null
	makeindex tommath
	latex tommath > /dev/null

# poster, makes the single page PDF poster
poster: poster.tex
	pdflatex poster
	rm -f poster.aux poster.log 

# makes the LTM book PDF file, requires tetex, cleans up the LaTeX temp files
docs:   docdvi
	dvipdf tommath
	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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
	
#LTM user manual
mandvi: bn.tex
	echo "hello" > bn.ind
	latex bn > /dev/null
	latex bn > /dev/null
	makeindex bn
	latex bn > /dev/null

#LTM user manual [pdf]
manual:	mandvi
	pdflatex bn >/dev/null
	rm -f bn.aux bn.dvi bn.log bn.idx bn.lof bn.out bn.toc

pretty: 
	perl pretty.build
Matt Johnston's avatar
Matt Johnston committed
166
167
168

clean:
	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
Mike Frysinger's avatar
Mike Frysinger committed
171
172
	-cd etc && MAKE=${MAKE} ${MAKE} clean
	-cd pics && MAKE=${MAKE} ${MAKE} clean
173
174
175
176
177
178

#zipup the project (take that!)
no_oops: clean
	cd .. ; cvs commit 
	echo Scanning for scratch/dirty files
	find . -type f | grep -v CVS | xargs -n 1 bash mess.sh
179
180
181
182
183
184

zipup: clean manual poster docs
	perl gen.pl ; mv mpi.c pre_gen/ ; \
	cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \
	cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; \
	tar -c libtommath-$(VERSION)/* | bzip2 -9vvc > ltm-$(VERSION).tar.bz2 ; \
185
186
	zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* ; \
	mv -f ltm* ~ ; rm -rf libtommath-$(VERSION)