Blame view

Giac_maj/libtommath-0.39/Makefile.iphone 6.36 KB
6663b6c9   adorian   projet complet av...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
  #Makefile for GCC
  #
  #Tom St Denis
  
  #version of library 
  VERSION=0.39
  CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2
  CFLAGS  +=  -I./ -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include  -Wall -W -Wshadow -Wsign-compare -arch armv7
  AR = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar
  RANLIB = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib
  
  ifndef MAKE
     MAKE=make
  endif
  
  ifndef IGNORE_SPEED
  
  #for speed 
  CFLAGS += -O3 -funroll-loops
  
  #for size 
  #CFLAGS += -Os
  
  #x86 optimizations [should be valid for any GCC install though]
  CFLAGS  += -fomit-frame-pointer
  
  #debug
  #CFLAGS += -g3
  
  endif
  
  #install as this user
  ifndef INSTALL_GROUP
     GROUP=wheel
  else
     GROUP=$(INSTALL_GROUP)
  endif
  
  ifndef INSTALL_USER
     USER=root
  else
     USER=$(INSTALL_USER)
  endif
  
  default: libtommath.a
  
  #default files to install
  ifndef LIBNAME
     LIBNAME=libtommath.a
  endif
  HEADERS=tommath.h tommath_class.h tommath_superclass.h
  
  #LIBPATH-The directory for libtommath to be installed to.
  #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
  
  $(LIBNAME):  $(OBJECTS)
  	$(AR) $(ARFLAGS) $@ $(OBJECTS)
  	$(RANLIB) $@
  
  #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:
  	make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing
  	./ltmtest
  	rm -f *.a *.o ltmtest
  	make CFLAGS="$(CFLAGS) -fbranch-probabilities"
  
  #make a single object profiled library 
  profiled_single:
  	perl gen.pl
  	$(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o
  	$(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -o ltmtest
  	./ltmtest
  	rm -f *.o ltmtest
  	$(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o
  	$(AR) $(ARFLAGS) $(LIBNAME) mpi.o
  	ranlib $(LIBNAME)	
  
  install: $(LIBNAME)
  	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)
  
  test: $(LIBNAME) demo/demo.o
  	$(CC) $(CFLAGS) demo/demo.o $(LIBNAME) -o test
  	
  mtest: test	
  	cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest
          
  timing: $(LIBNAME)
  	$(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o ltmtest
  
  # makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think]
  docdvi: tommath.src
  	cd pics ; MAKE=${MAKE} ${MAKE} 
  	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
  	cd pics ; MAKE=${MAKE} ${MAKE} clean
  	
  #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
  
  clean:
  	rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \
          *.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
  	rm -rf .libs
  	cd etc ; MAKE=${MAKE} ${MAKE} clean
  	cd pics ; MAKE=${MAKE} ${MAKE} clean
  
  #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
  
  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 ; \
  	zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* ; \
  	mv -f ltm* ~ ; rm -rf libtommath-$(VERSION)