comparison Makefile.in @ 144:7ed585a2c53b libtomcrypt

propagate of 3f8f752126017cbe7d93c4086c27a91550df745f and 747ebf284d40a15b338e5a5c7730ecec6eade3d7 from branch 'au.asn.ucc.matt.ltc-orig' to 'au.asn.ucc.matt.ltc-db'
author Matt Johnston <matt@ucc.asn.au>
date Sun, 19 Dec 2004 11:47:33 +0000
parents b1edc9158f6c
children c2b93763dac9
comparison
equal deleted inserted replaced
143:5d99163f7e32 144:7ed585a2c53b
1 # MAKEFILE for linux GCC
2 #
3 # Tom St Denis
4 # Modified by Clay Culver
5
6 # The version
7 VERSION=0.99
8
9 # Compiler and Linker Names
10 #CC=gcc
11 #LD=ld
12
13 # Archiver [makes .a files]
14 #AR=ar
15 #ARFLAGS=r
16
17 # Compilation flags. Note the += does not write over the user's CFLAGS!
18 # The rest of the flags come from the parent Dropbear makefile
19 CFLAGS += -c -I$(srcdir)
20 # -Werror
21
22 # optimize for SPEED
23 #CFLAGS += -O3 -funroll-all-loops
24
25 #add -fomit-frame-pointer. hinders debugging!
26 #CFLAGS += -fomit-frame-pointer
27
28 # optimize for SIZE
29 #CFLAGS += -Os -DSMALL_CODE
30
31 # compile for DEBUGING (required for ccmalloc checking!!!)
32 #CFLAGS += -g3
33
34 #These flags control how the library gets built.
35
36 #Output filenames for various targets.
37 LIBNAME=libtomcrypt.a
38 HASH=hashsum
39 CRYPT=encrypt
40 SMALL=small
41 PROF=x86_prof
42 TV=tv_gen
43
44 #LIBPATH-The directory for libtomcrypt to be installed to.
45 #INCPATH-The directory to install the header files for libtomcrypt.
46 #DATAPATH-The directory to install the pdf docs.
47 DESTDIR=
48 LIBPATH=/usr/lib
49 INCPATH=/usr/include
50 DATAPATH=/usr/share/doc/libtomcrypt/pdf
51
52 #List of objects to compile.
53
54 #Leave MPI built-in or force developer to link against libtommath?
55 #MPIOBJECT=mpi.o
56 #Dropbear uses libtommath
57 MPIOBJECT=
58
59 OBJECTS=error_to_string.o mpi_to_ltc_error.o base64_encode.o base64_decode.o \
60 \
61 crypt.o crypt_find_cipher.o crypt_find_hash_any.o \
62 crypt_hash_is_valid.o crypt_register_hash.o crypt_unregister_prng.o \
63 crypt_argchk.o crypt_find_cipher_any.o crypt_find_hash_id.o \
64 crypt_prng_descriptor.o crypt_register_prng.o crypt_cipher_descriptor.o \
65 crypt_find_cipher_id.o crypt_find_prng.o crypt_prng_is_valid.o \
66 crypt_unregister_cipher.o crypt_cipher_is_valid.o crypt_find_hash.o \
67 crypt_hash_descriptor.o crypt_register_cipher.o crypt_unregister_hash.o \
68 \
69 sober128.o fortuna.o sprng.o yarrow.o rc4.o rng_get_bytes.o rng_make_prng.o \
70 \
71 rand_prime.o is_prime.o \
72 \
73 ecc.o dh.o \
74 \
75 rsa_decrypt_key.o rsa_encrypt_key.o rsa_exptmod.o rsa_free.o rsa_make_key.o \
76 rsa_sign_hash.o rsa_verify_hash.o rsa_export.o rsa_import.o tim_exptmod.o \
77 rsa_v15_encrypt_key.o rsa_v15_decrypt_key.o rsa_v15_sign_hash.o rsa_v15_verify_hash.o \
78 \
79 dsa_export.o dsa_free.o dsa_import.o dsa_make_key.o dsa_sign_hash.o \
80 dsa_verify_hash.o dsa_verify_key.o \
81 \
82 aes.o aes_enc.o \
83 \
84 blowfish.o des.o safer_tab.o safer.o saferp.o rc2.o xtea.o \
85 rc6.o rc5.o cast5.o noekeon.o twofish.o skipjack.o \
86 \
87 md2.o md4.o md5.o sha1.o sha256.o sha512.o tiger.o whirl.o \
88 rmd128.o rmd160.o chc.o \
89 \
90 packet_store_header.o packet_valid_header.o \
91 \
92 eax_addheader.o eax_decrypt.o eax_decrypt_verify_memory.o eax_done.o eax_encrypt.o \
93 eax_encrypt_authenticate_memory.o eax_init.o eax_test.o \
94 \
95 ocb_decrypt.o ocb_decrypt_verify_memory.o ocb_done_decrypt.o ocb_done_encrypt.o \
96 ocb_encrypt.o ocb_encrypt_authenticate_memory.o ocb_init.o ocb_ntz.o \
97 ocb_shift_xor.o ocb_test.o s_ocb_done.o \
98 \
99 omac_done.o omac_file.o omac_init.o omac_memory.o omac_process.o omac_test.o \
100 \
101 pmac_done.o pmac_file.o pmac_init.o pmac_memory.o pmac_ntz.o pmac_process.o \
102 pmac_shift_xor.o pmac_test.o \
103 \
104 cbc_start.o cbc_encrypt.o cbc_decrypt.o cbc_getiv.o cbc_setiv.o \
105 cfb_start.o cfb_encrypt.o cfb_decrypt.o cfb_getiv.o cfb_setiv.o \
106 ofb_start.o ofb_encrypt.o ofb_decrypt.o ofb_getiv.o ofb_setiv.o \
107 ctr_start.o ctr_encrypt.o ctr_decrypt.o ctr_getiv.o ctr_setiv.o \
108 ecb_start.o ecb_encrypt.o ecb_decrypt.o \
109 \
110 hash_file.o hash_filehandle.o hash_memory.o \
111 \
112 hmac_done.o hmac_file.o hmac_init.o hmac_memory.o hmac_process.o hmac_test.o \
113 \
114 pkcs_1_mgf1.o pkcs_1_oaep_encode.o pkcs_1_oaep_decode.o \
115 pkcs_1_pss_encode.o pkcs_1_pss_decode.o pkcs_1_i2osp.o pkcs_1_os2ip.o \
116 pkcs_1_v15_es_encode.o pkcs_1_v15_es_decode.o pkcs_1_v15_sa_encode.o pkcs_1_v15_sa_decode.o \
117 \
118 pkcs_5_1.o pkcs_5_2.o \
119 \
120 der_encode_integer.o der_decode_integer.o der_length_integer.o \
121 der_put_multi_integer.o der_get_multi_integer.o \
122 \
123 burn_stack.o zeromem.o \
124 \
125 $(MPIOBJECT)
126
127 TESTOBJECTS=demos/test.o
128 HASHOBJECTS=demos/hashsum.o
129 CRYPTOBJECTS=demos/encrypt.o
130 SMALLOBJECTS=demos/small.o
131 PROFS=demos/x86_prof.o
132 TVS=demos/tv_gen.o
133
134 #Files left over from making the crypt.pdf.
135 LEFTOVERS=*.dvi *.log *.aux *.toc *.idx *.ilg *.ind *.out
136
137 #Compressed filenames
138 COMPRESSED=crypt-$(VERSION).tar.bz2 crypt-$(VERSION).zip
139
140 #Header files used by libtomcrypt.
141 HEADERS=ltc_tommath.h mycrypt_cfg.h \
142 mycrypt_misc.h mycrypt_prng.h mycrypt_cipher.h mycrypt_hash.h \
143 mycrypt_macros.h mycrypt_pk.h mycrypt.h mycrypt_argchk.h \
144 mycrypt_custom.h mycrypt_pkcs.h
145
146 #The default rule for make builds the libtomcrypt library.
147 default:library
148
149 #ciphers come in two flavours... enc+dec and enc
150 aes_enc.o: aes.c aes_tab.c
151 $(CC) $(CFLAGS) -DENCRYPT_ONLY -c $(srcdir)/aes.c -o aes_enc.o
152
153 #These are the rules to make certain object files.
154 aes.o: aes.c aes_tab.c
155 twofish.o: twofish.c twofish_tab.c
156 whirl.o: whirl.c whirltab.c
157 ecc.o: ecc.c ecc_sys.c
158 dh.o: dh.c dh_sys.c
159 sha512.o: sha512.c sha384.c
160 sha256.o: sha256.c sha224.c
161
162 #This rule makes the libtomcrypt library.
163 library: $(LIBNAME)
164
165 $(LIBNAME): $(OBJECTS)
166 $(AR) $(ARFLAGS) $@ $(OBJECTS)
167 $(RANLIB) $@
168
169 #This rule makes the hash program included with libtomcrypt
170 hashsum: library $(HASHOBJECTS)
171 $(CC) $(HASHOBJECTS) $(LIBNAME) -o $(HASH) $(WARN)
172
173 #makes the crypt program
174 crypt: library $(CRYPTOBJECTS)
175 $(CC) $(CRYPTOBJECTS) $(LIBNAME) -o $(CRYPT) $(WARN)
176
177 #makes the small program
178 small: library $(SMALLOBJECTS)
179 $(CC) $(SMALLOBJECTS) $(LIBNAME) -o $(SMALL) $(WARN)
180
181 x86_prof: library $(PROFS)
182 $(CC) $(PROFS) $(LIBNAME) $(EXTRALIBS) -o $(PROF)
183
184 tv_gen: library $(TVS)
185 $(CC) $(TVS) $(LIBNAME) $(EXTRALIBS) -o $(TV)
186
187 #This rule installs the library and the header files. This must be run
188 #as root in order to have a high enough permission to write to the correct
189 #directories and to set the owner and group to root.
190 install: library docs
191 install -d -g root -o root $(DESTDIR)$(LIBPATH)
192 install -d -g root -o root $(DESTDIR)$(INCPATH)
193 install -d -g root -o root $(DESTDIR)$(DATAPATH)
194 install -g root -o root $(LIBNAME) $(DESTDIR)$(LIBPATH)
195 install -g root -o root $(HEADERS) $(DESTDIR)$(INCPATH)
196 install -g root -o root doc/crypt.pdf $(DESTDIR)$(DATAPATH)
197
198 install_lib: library
199 install -d -g root -o root $(DESTDIR)$(LIBPATH)
200 install -d -g root -o root $(DESTDIR)$(INCPATH)
201 install -g root -o root $(LIBNAME) $(DESTDIR)$(LIBPATH)
202 install -g root -o root $(HEADERS) $(DESTDIR)$(INCPATH)
203
204 #This rule cleans the source tree of all compiled code, not including the pdf
205 #documentation.
206 clean:
207 -rm -f $(OBJECTS) $(TESTOBJECTS) $(HASHOBJECTS) $(CRYPTOBJECTS) $(SMALLOBJECTS) $(LEFTOVERS) $(LIBNAME)
208 -rm -f $(TEST) $(HASH) $(COMPRESSED) $(PROFS) $(PROF) $(TVS) $(TV)
209 -rm -f *.la *.lo *.o *.a *.dll *stackdump *.lib *.exe *.obj demos/*.obj demos/*.o *.bat *.txt *.il *.da demos/*.il demos/*.da *.dyn *.dpi \
210 *.gcda *.gcno demos/*.gcno demos/*.gcda *~ doc/*
211 -cd demos/test && make clean
212 -rm -rf .libs demos/.libs demos/test/.libs
213
214 #This builds the crypt.pdf file. Note that the rm -f *.pdf has been removed
215 #from the clean command! This is because most people would like to keep the
216 #nice pre-compiled crypt.pdf that comes with libtomcrypt! We only need to
217 #delete it if we are rebuilding it.
218 docs: crypt.tex
219 -rm -f doc/crypt.pdf $(LEFTOVERS)
220 echo "hello" > crypt.ind
221 latex crypt > /dev/null
222 latex crypt > /dev/null
223 makeindex crypt.idx > /dev/null
224 latex crypt > /dev/null
225 dvipdf crypt
226 mv -ivf crypt.pdf doc/crypt.pdf
227 -rm -f $(LEFTOVERS)
228
229 docdvi: crypt.tex
230 echo hello > crypt.ind
231 latex crypt > /dev/null
232 latex crypt > /dev/null
233 makeindex crypt.idx
234 latex crypt > /dev/null
235
236 #pretty build
237 pretty:
238 perl pretty.build
239
240 #for GCC 3.4+
241 profiled:
242 make clean
243 make CFLAGS="$(CFLAGS) -fprofile-generate" EXTRALIBS=-lgcov x86_prof
244 ./x86_prof
245 rm *.o *.a x86_prof
246 make CFLAGS="$(CFLAGS) -fprofile-use" EXTRALIBS=-lgcov x86_prof
247
248 #zipup the project (take that!)
249 zipup: clean docs
250 cd .. ; rm -rf crypt* libtomcrypt-$(VERSION) ; mkdir libtomcrypt-$(VERSION) ; \
251 cp -R ./libtomcrypt/* ./libtomcrypt-$(VERSION)/ ; tar -c libtomcrypt-$(VERSION)/* > crypt-$(VERSION).tar ; \
252 bzip2 -9vv crypt-$(VERSION).tar ; zip -9 -r crypt-$(VERSION).zip libtomcrypt-$(VERSION)/* ; \
253 gpg -b -a crypt-$(VERSION).tar.bz2 ; gpg -b -a crypt-$(VERSION).zip