Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | magnus | 1 | # Nettle Makefile |
2 | |||
3 | @SET_MAKE@ |
||
4 | |||
5 | srcdir = @srcdir@ |
||
6 | VPATH = @srcdir@ |
||
7 | |||
8 | LIBOBJS = @LIBOBJS@ |
||
9 | |||
10 | INSTALL = @INSTALL@ |
||
11 | INSTALL_DATA = @INSTALL_DATA@ |
||
12 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
||
13 | INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
||
14 | INSTALL_STRIP_PROGRAM = $(INSTALL_PROGRAM) -s |
||
15 | MKDIR_P = @MKDIR_P@ |
||
16 | |||
17 | SUBDIRS = tools testsuite examples |
||
18 | |||
19 | include config.make |
||
20 | |||
21 | PRE_CPPFLAGS = -I. |
||
22 | |||
23 | TARGETS = aesdata$(EXEEXT) desdata$(EXEEXT) shadata$(EXEEXT) \ |
||
24 | libnettle.a $(SHLIBTARGET) |
||
25 | |||
26 | DOCTARGETS = nettle.info nettle.html nettle.pdf |
||
27 | |||
28 | all check install uninstall: |
||
29 | $(MAKE) $@-here |
||
30 | set -e; for d in $(SUBDIRS); do \ |
||
31 | echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done |
||
32 | |||
33 | clean distclean mostlyclean maintainer-clean tags: |
||
34 | set -e; for d in $(SUBDIRS); do \ |
||
35 | echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done |
||
36 | $(MAKE) $@-here |
||
37 | |||
38 | check-here: |
||
39 | true |
||
40 | |||
41 | # These targets aren't supported, but they are expected by the |
||
42 | # automake generated Makefiles in the lsh build. |
||
43 | dvi installcheck uninstallcheck: |
||
44 | true |
||
45 | |||
46 | all-here: $(TARGETS) $(DOCTARGETS) |
||
47 | |||
48 | nettle_SOURCES = aes-decrypt-internal.c aes-decrypt.c \ |
||
49 | aes-encrypt-internal.c aes-encrypt.c aes-encrypt-table.c \ |
||
50 | aes-set-encrypt-key.c aes-set-decrypt-key.c aes-meta.c \ |
||
51 | arcfour.c arcfour-crypt.c arcfour-meta.c \ |
||
52 | arctwo.c arctwo-meta.c \ |
||
53 | base16-encode.c base16-decode.c base16-meta.c \ |
||
54 | base64-encode.c base64-decode.c base64-meta.c \ |
||
55 | cast128.c cast128-meta.c \ |
||
56 | blowfish.c \ |
||
57 | cbc.c ctr.c \ |
||
58 | des.c \ |
||
59 | des3.c des-compat.c \ |
||
60 | hmac.c hmac-md5.c hmac-sha1.c hmac-sha256.c \ |
||
61 | knuth-lfib.c \ |
||
62 | md2.c md2-meta.c md4.c md4-meta.c \ |
||
63 | md5.c md5-compress.c md5-compat.c md5-meta.c \ |
||
64 | sha1.c sha1-compress.c sha1-meta.c sha256.c sha256-meta.c \ |
||
65 | serpent.c serpent-meta.c \ |
||
66 | twofish.c twofish-meta.c \ |
||
67 | yarrow256.c yarrow_key_event.c \ |
||
68 | sexp.c sexp-format.c \ |
||
69 | sexp-transport.c sexp-transport-format.c \ |
||
70 | bignum.c bignum-random.c sexp2bignum.c \ |
||
71 | pkcs1.c pkcs1-rsa-md5.c pkcs1-rsa-sha1.c pkcs1-rsa-sha256.c \ |
||
72 | rsa.c rsa-sign.c rsa-verify.c \ |
||
73 | rsa-md5-sign.c rsa-md5-verify.c \ |
||
74 | rsa-sha1-sign.c rsa-sha1-verify.c \ |
||
75 | rsa-sha256-sign.c rsa-sha256-verify.c \ |
||
76 | rsa-encrypt.c rsa-decrypt.c \ |
||
77 | rsa-keygen.c rsa-compat.c \ |
||
78 | rsa2sexp.c sexp2rsa.c \ |
||
79 | dsa.c dsa-sign.c dsa-verify.c dsa-keygen.c \ |
||
80 | sexp2dsa.c \ |
||
81 | pgp-encode.c rsa2openpgp.c \ |
||
82 | der-iterator.c der2rsa.c \ |
||
83 | buffer.c buffer-init.c realloc.c \ |
||
84 | nettle-internal.c |
||
85 | |||
86 | HEADERS = aes.h arcfour.h arctwo.h asn1.h bignum.h blowfish.h \ |
||
87 | base16.h base64.h buffer.h cast128.h \ |
||
88 | cbc.h ctr.h \ |
||
89 | des.h des-compat.h dsa.h \ |
||
90 | hmac.h \ |
||
91 | knuth-lfib.h \ |
||
92 | macros.h \ |
||
93 | md2.h md4.h \ |
||
94 | md5.h md5-compat.h \ |
||
95 | memxor.h \ |
||
96 | nettle-meta.h nettle-types.h \ |
||
97 | pgp.h pkcs1.h realloc.h rsa.h rsa-compat.h \ |
||
98 | sexp.h \ |
||
99 | serpent.h sha.h twofish.h \ |
||
100 | yarrow.h |
||
101 | |||
102 | INSTALL_HEADERS = $(HEADERS) nettle-stdint.h |
||
103 | |||
104 | SOURCES = $(nettle_SOURCES) aesdata.c desdata.c shadata.c |
||
105 | |||
106 | DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac \ |
||
107 | configure stamp-h.in \ |
||
108 | config.guess config.sub install-sh texinfo.tex \ |
||
109 | config.h.in config.m4.in config.make.in Makefile.in \ |
||
110 | README AUTHORS COPYING COPYING.LIB INSTALL NEWS TODO ChangeLog \ |
||
111 | memxor.c $(des_headers) descore.README \ |
||
112 | aes-internal.h cast128_sboxes.h desinfo.h desCode.h \ |
||
113 | serpent_sboxes.h nettle-internal.h \ |
||
114 | asm.m4 \ |
||
115 | nettle.texinfo nettle.info nettle.html nettle.pdf sha-example.c |
||
116 | |||
117 | # Rules building libnettle.a |
||
118 | # FIXME: Do we really need to delete the archive first? |
||
119 | nettle_OBJS = $(nettle_SOURCES:.c=.$(OBJEXT)) $(LIBOBJS) |
||
120 | nettle_PURE_OBJS = $(nettle_OBJS:.$(OBJEXT)=.p$(OBJEXT)) |
||
121 | |||
122 | libnettle.a: $(nettle_OBJS) |
||
123 | -rm -f $@ |
||
124 | $(AR) $(ARFLAGS) $@ $(nettle_OBJS) |
||
125 | $(RANLIB) $@ |
||
126 | |||
127 | .c.$(OBJEXT): |
||
128 | $(COMPILE) $(CCPIC_MAYBE) -c $< \ |
||
129 | && $(DEP_PROCESS) |
||
130 | |||
131 | # Rules building libnettle.so |
||
132 | $(SHLIBFORLINK): $(nettle_PURE_OBJS) |
||
133 | $(SHLIBLINK) $(nettle_PURE_OBJS) -o $@ $(SHLIBLIBS) |
||
134 | -mkdir .lib 2>/dev/null |
||
135 | [ -z "$(SHLIBSONAME)" ] || (cd .lib \ |
||
136 | && ln -sf ../$(SHLIBFORLINK) $(SHLIBSONAME)) |
||
137 | |||
138 | .c.p$(OBJEXT): |
||
139 | $(COMPILE) $(SHLIBCFLAGS) -c $< -o $@ \ |
||
140 | && $(DEP_PROCESS) |
||
141 | |||
142 | # For Solaris and BSD make, we have to use an explicit rule for each executable |
||
143 | aesdata$(EXEEXT): aesdata.$(OBJEXT) |
||
144 | $(LINK) aesdata.$(OBJEXT) $(LIBS) -o aesdata$(EXEEXT) |
||
145 | |||
146 | desdata$(EXEEXT): desdata.$(OBJEXT) |
||
147 | $(LINK) desdata.$(OBJEXT) $(LIBS) -o desdata$(EXEEXT) |
||
148 | |||
149 | shadata$(EXEEXT): shadata.$(OBJEXT) |
||
150 | $(LINK) shadata.$(OBJEXT) $(LIBS) -lm -o shadata$(EXEEXT) |
||
151 | |||
152 | # .$(OBJEXT)$(EXEEXT): |
||
153 | # $(LINK) $< $(LIBS) -o $@ |
||
154 | |||
155 | # desCore rules |
||
156 | # It seems using $(srcdir)/ doesn't work with GNU make 3.79.1 |
||
157 | # des_headers = $(srcdir)/parity.h $(srcdir)/rotors.h $(srcdir)/keymap.h |
||
158 | des_headers = parity.h rotors.h keymap.h |
||
159 | |||
160 | # Generate DES headers. |
||
161 | $(des_headers): desdata.c |
||
162 | $(MAKE) desdata$(EXEEXT) |
||
163 | ./desdata$(EXEEXT) $(@F) > $@T |
||
164 | test -s $@T && mv -f $@T $@ |
||
165 | |||
166 | des.$(OBJEXT): des.c des.h $(des_headers) |
||
167 | |||
168 | .asm.$(OBJEXT): |
||
169 | $(M4) $(srcdir)/asm.m4 machine.m4 config.m4 \ |
||
170 | $< >$*.s |
||
171 | $(COMPILE) $(CCPIC_MAYBE) -c $*.s |
||
172 | echo "$@ : $< $(srcdir)/asm.m4 machine.m4 config.m4" >$@.d |
||
173 | |||
174 | .asm.p$(OBJEXT): |
||
175 | $(M4) $(srcdir)/asm.m4 machine.m4 config.m4 \ |
||
176 | $< >$*.s |
||
177 | $(COMPILE) $(SHLIBCFLAGS) -c $*.s -o $@ |
||
178 | echo "$@ : $< $(srcdir)/asm.m4 machine.m4 config.m4" >$@.d |
||
179 | |||
180 | # Texinfo rules |
||
181 | .texinfo.info: |
||
182 | cd $(srcdir) && $(MAKEINFO) --output $@T `basename "$<"` \ |
||
183 | && test -s $@T && mv -f $@T $@ |
||
184 | |||
185 | .texinfo.html: |
||
186 | cd $(srcdir) && $(MAKEINFO) --html --no-split \ |
||
187 | --output $@T `basename "$<"` \ |
||
188 | && test -s $@T && mv -f $@T $@ |
||
189 | |||
190 | .texinfo.dvi: |
||
191 | cd $(srcdir) && texi2dvi `basename "$<"` |
||
192 | |||
193 | .dvi.ps: |
||
194 | cd $(srcdir) && dvips -Ppdf -G0 -o `basename "$<" .dvi`.ps `basename "$<"` |
||
195 | |||
196 | # Avoid rebuilding .dvi and .ps files when the .texinfo source is unchanged. |
||
197 | PS2PDFFLAGS=-dCompatibilityLevel=1.3 -dMAxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true |
||
198 | .texinfo.pdf: |
||
199 | $(MAKE) `basename "$<" .texinfo`.ps |
||
200 | cd $(srcdir) && ps2pdf $(PS2PDFFLAGS) `basename "$<" .texinfo`.ps |
||
201 | |||
202 | # Configure-related rules, mostly copied from the autoconf manual. No |
||
203 | # $(srcdir) prefixes on the targets, though. |
||
204 | |||
205 | configure: configure.ac aclocal.m4 |
||
206 | cd $(srcdir) && $(AUTOCONF) |
||
207 | |||
208 | # autoheader might not change config.h.in, so touch a stamp file. |
||
209 | config.h.in: stamp-h.in |
||
210 | stamp-h.in: configure.ac aclocal.m4 |
||
211 | cd $(srcdir) && autoheader |
||
212 | echo timestamp > $(srcdir)/stamp-h.in |
||
213 | |||
214 | config.status: configure |
||
215 | ./config.status --recheck |
||
216 | |||
217 | config.h: stamp-h |
||
218 | stamp-h: config.h.in config.status |
||
219 | ./config.status config.h |
||
220 | echo timestamp > stamp-h |
||
221 | |||
222 | Makefile: Makefile.in config.status |
||
223 | ./config.status $@ |
||
224 | |||
225 | config.make: config.make.in config.status |
||
226 | ./config.status $@ |
||
227 | |||
228 | config.m4: config.m4.in config.status |
||
229 | ./config.status $@ |
||
230 | |||
231 | # Installation |
||
232 | # FIXME: Use mkinstalldirs. |
||
233 | install-here: install-info install-headers libnettle.a $(SHLIBINSTALL) |
||
234 | $(MKDIR_P) $(DESTDIR)$(libdir) |
||
235 | $(INSTALL_DATA) libnettle.a $(DESTDIR)$(libdir) |
||
236 | |||
237 | install-shared: $(SHLIBFORLINK) |
||
238 | $(MKDIR_P) $(DESTDIR)$(libdir) |
||
239 | $(INSTALL_PROGRAM) $(SHLIBFORLINK) $(DESTDIR)$(libdir)/$(SHLIBFILE) |
||
240 | [ -z "$(SHLIBSONAME)" ] \ |
||
241 | || (cd $(DESTDIR)$(libdir) \ |
||
242 | && ln -sf $(SHLIBFILE) $(SHLIBSONAME) \ |
||
243 | && ln -sf $(SHLIBFILE) $(SHLIBFORLINK) ) |
||
244 | |||
245 | # I'd like to use makes VPATH search to locate the files to be |
||
246 | # installed. But it seems most make programs don't set $<, $^, $? and |
||
247 | # friends for ordinary explicit rules. |
||
248 | |||
249 | install-info: nettle.info |
||
250 | $(MKDIR_P) $(DESTDIR)$(infodir) |
||
251 | f=nettle.info ; \ |
||
252 | [ -f $$f ] || f="$(srcdir)/$$f" ; \ |
||
253 | $(INSTALL_DATA) "$$f" $(DESTDIR)$(infodir) ; \ |
||
254 | if (install-info --version && \ |
||
255 | install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ |
||
256 | install-info --info-dir="$(DESTDIR)$(infodir)" "$$f" ; \ |
||
257 | else : ; fi |
||
258 | |||
259 | # NOTE: I'd like to use $^, but that's a GNU extension. $? should be |
||
260 | # more portable, and equivalent for phony targets. |
||
261 | install-headers: $(INSTALL_HEADERS) |
||
262 | $(MKDIR_P) $(DESTDIR)$(includedir)/nettle |
||
263 | for f in $(INSTALL_HEADERS) ; do \ |
||
264 | if [ -f "$$f" ] ; then \ |
||
265 | $(INSTALL_DATA) "$$f" $(DESTDIR)$(includedir)/nettle ; \ |
||
266 | else \ |
||
267 | $(INSTALL_DATA) "$(srcdir)/$$f" $(DESTDIR)$(includedir)/nettle ; \ |
||
268 | fi ; done |
||
269 | |||
270 | # Uninstall |
||
271 | uninstall-here: uninstall-info uninstall-headers uninstall-shared |
||
272 | rm -f $(DESTDIR)$(libdir)/libnettle.a |
||
273 | |||
274 | uninstall-headers: |
||
275 | for f in $(INSTALL_HEADERS) ; do \ |
||
276 | rm -f $(DESTDIR)$(includedir)/nettle/$$f ; \ |
||
277 | done |
||
278 | |||
279 | uninstall-info: |
||
280 | if (install-info --version && \ |
||
281 | install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ |
||
282 | install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)"/nettle.info ; \ |
||
283 | else : ; fi |
||
284 | -rm -f $(DESTDIR)$(infodir)/nettle.info |
||
285 | |||
286 | # FIXME: Leaves the links around |
||
287 | uninstall-shared: |
||
288 | test -z "$(SHLIBINSTALL)" || rm -f $(DESTDIR)$(libdir)/$(SHLIBFILE) |
||
289 | |||
290 | # Distribution |
||
291 | distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION) |
||
292 | top_distdir = $(distdir) |
||
293 | |||
294 | # NOTE: Depending on the automake version in the parent dir, |
||
295 | # we must handle both absolute and relative $destdir. |
||
296 | |||
297 | distdir: $(DISTFILES) |
||
298 | rm -rf "$(distdir)" |
||
299 | mkdir "$(distdir)" |
||
300 | set -e; for f in $(DISTFILES) ; do \ |
||
301 | if [ -f "$$f" ] ; then cp "$$f" "$(distdir)" ; \ |
||
302 | else cp "$(srcdir)/$$f" "$(distdir)" ; \ |
||
303 | fi ; \ |
||
304 | done |
||
305 | set -e; for d in sparc x86 ; do \ |
||
306 | mkdir "$(distdir)/$$d" ; \ |
||
307 | cp $(srcdir)/$$d/*.asm $(srcdir)/$$d/*.m4 "$(distdir)/$$d" ; \ |
||
308 | done |
||
309 | set -e; for d in $(SUBDIRS); do \ |
||
310 | sd="$(distdir)/$$d" ; \ |
||
311 | mkdir "$$sd" && $(MAKE) -C $$d distdir="`cd $$sd && pwd`" $@ ; \ |
||
312 | done |
||
313 | |||
314 | dist: distdir |
||
315 | tar cf - $(distdir) | gzip -c >$(distdir).tar.gz |
||
316 | rm -rf $(distdir) |
||
317 | |||
318 | rm_distcheck = test ! -d distcheck-tmp \ |
||
319 | || { find distcheck-tmp -type d ! -perm -200 -exec chmod u+w {} ';' \ |
||
320 | && rm -fr distcheck-tmp; }; |
||
321 | |||
322 | distcheck: dist |
||
323 | $(rm_distcheck) |
||
324 | mkdir distcheck-tmp |
||
325 | gzip -d < $(distdir).tar.gz \ |
||
326 | | { cd distcheck-tmp && tar xf - && chmod -R a-w $(distdir) ; } |
||
327 | mkdir distcheck-tmp/build |
||
328 | mkdir distcheck-tmp/install |
||
329 | cd distcheck-tmp/build && ../$(distdir)/configure --prefix="`cd ../install && pwd`" |
||
330 | cd distcheck-tmp/build && $(MAKE) |
||
331 | cd distcheck-tmp/build && $(MAKE) check |
||
332 | cd distcheck-tmp/build && $(MAKE) install |
||
333 | cd distcheck-tmp/build && $(MAKE) uninstall |
||
334 | cd distcheck-tmp && find install -type f -print > leftover-install-files |
||
335 | @test `cat distcheck-tmp/leftover-install-files | wc -l` -le 1 \ |
||
336 | || { echo "ERROR: files left after uninstall:" ; \ |
||
337 | cat distcheck-tmp/leftover-install-files ; \ |
||
338 | exit 1; } |
||
339 | chmod -R a-w distcheck-tmp/install |
||
340 | mkdir distcheck-tmp/destdir |
||
341 | destdir="`cd distcheck-tmp/destdir && pwd`" \ |
||
342 | && cd distcheck-tmp/build \ |
||
343 | && $(MAKE) install DESTDIR="$$destdir" \ |
||
344 | && $(MAKE) uninstall DESTDIR="$$destdir" |
||
345 | cd distcheck-tmp && find destdir -type f -print > leftover-destdir-files |
||
346 | @test `cat distcheck-tmp/leftover-destdir-files | wc -l` -le 1 \ |
||
347 | || { echo "ERROR: destdir files left after uninstall:" ; \ |
||
348 | cat distcheck-tmp/leftover-destdir-files ; \ |
||
349 | exit 1; } |
||
350 | cd distcheck-tmp/build && $(MAKE) dist |
||
351 | cd distcheck-tmp/build && rm *.gz |
||
352 | cd distcheck-tmp/build && $(MAKE) distclean |
||
353 | cd distcheck-tmp && find build -type f -print > leftover-build-files |
||
354 | @test `cat distcheck-tmp/leftover-build-files | wc -l` -eq 0 \ |
||
355 | || { echo "ERROR: files left in build directory after distclean:" ; \ |
||
356 | cat distcheck-tmp/leftover-build-files ; \ |
||
357 | exit 1; } |
||
358 | $(rm_distcheck) |
||
359 | |||
360 | clean-here: |
||
361 | -rm -f $(TARGETS) *.$(OBJEXT) *.p$(OBJEXT) *.s |
||
362 | -rm -rf .lib |
||
363 | |||
364 | distclean-here: clean-here |
||
365 | -rm -f config.h stamp-h config.log config.status machine.m4 \ |
||
366 | config.make config.m4 Makefile nettle-stdint.h *.asm *.d |
||
367 | |||
368 | maintainer-clean-here: |
||
369 | -rm -f $(DOCTARGETS) *.dvi *.ps |
||
370 | |||
371 | tags-here: |
||
372 | etags $(srcdir)/*.c $(srcdir)/*.h |
||
373 | |||
374 | DEP_FILES = $(SOURCES:.c=.$(OBJEXT).d) $(SOURCES:.c=.p$(OBJEXT).d) |
||
375 | @DEP_INCLUDE@ $(DEP_FILES) |