Makefile.in 9.96 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
# Nettle Makefile

@SET_MAKE@

srcdir = @srcdir@
VPATH = @srcdir@

LIBOBJS = @LIBOBJS@

SUBDIRS = tools testsuite examples

include config.make

14
PRE_CPPFLAGS = -I.
15

16
17
18
TARGETS = aesdata$(EXEEXT) desdata$(EXEEXT) shadata$(EXEEXT) \
	  libnettle.a $(SHLIBTARGET) \
	  nettle.info nettle.html
19

20
all check install uninstall:
21
	$(MAKE) $@-here
Niels Möller's avatar
Niels Möller committed
22
23
	set -e; for d in $(SUBDIRS); do \
	  echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done
24

25
clean distclean mostlyclean maintainer-clean:
Niels Möller's avatar
Niels Möller committed
26
27
	set -e; for d in $(SUBDIRS); do \
	  echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done
28
29
	$(MAKE) $@-here

30
31
32
check-here:
	true

33
34
35
36
37
# These targets aren't supported, but they are expected by the
# automake generated Makefiles in the lsh build.
dvi installcheck uninstallcheck:
	true

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
.SUFFIXES:
.SUFFIXES: .asm .html .c .dvi .info .$(OBJEXT) .p$(OBJEXT) .exe .pdf .ps .texinfo

all-here: $(TARGETS)

nettle_SOURCES = aes.c \
	         aes-decrypt-table.c aes-decrypt.c \
		 aes-encrypt-table.c aes-encrypt.c \
		 aes-set-encrypt-key.c aes-set-decrypt-key.c aes-meta.c \
		 arcfour.c arcfour-crypt.c arcfour-meta.c \
		 arctwo.c arctwo-meta.c \
		 base16-encode.c base16-decode.c base16-meta.c \
                 base64-encode.c base64-decode.c base64-meta.c \
		 cast128.c cast128-meta.c \
		 blowfish.c \
		 cbc.c \
		 des.c \
		 des3.c des-compat.c \
		 hmac.c hmac-md5.c hmac-sha1.c hmac-sha256.c \
		 knuth-lfib.c \
		 md2.c md2-meta.c md4.c md4-meta.c \
		 md5.c md5-compat.c md5-meta.c \
		 sha1.c sha1-compress.c sha1-meta.c sha256.c sha256-meta.c \
		 serpent.c serpent-meta.c \
		 twofish.c twofish-meta.c \
		 yarrow256.c yarrow_key_event.c \
		 sexp.c sexp-format.c \
		 sexp-transport.c sexp-transport-format.c \
		 bignum.c bignum-random.c sexp2bignum.c \
		 pkcs1.c pkcs1-rsa-md5.c pkcs1-rsa-sha1.c \
		 rsa.c rsa-sign.c rsa-verify.c \
		 rsa-md5-sign.c rsa-md5-verify.c \
		 rsa-sha1-sign.c rsa-sha1-verify.c \
		 rsa-encrypt.c rsa-decrypt.c \
		 rsa-keygen.c rsa-compat.c \
		 rsa2sexp.c sexp2rsa.c \
		 dsa.c dsa-sign.c dsa-verify.c dsa-keygen.c \
		 sexp2dsa.c \
		 pgp-encode.c rsa2openpgp.c \
		 buffer.c buffer-init.c realloc.c \
		 nettle-internal.c

HEADERS = aes.h arcfour.h arctwo.h bignum.h blowfish.h \
	  base16.h base64.h buffer.h cast128.h \
	  cbc.h \
	  des.h des-compat.h dsa.h \
	  hmac.h \
	  knuth-lfib.h \
	  macros.h \
	  md2.h md4.h \
	  md5.h md5-compat.h \
	  memxor.h \
	  nettle-meta.h \
	  pgp.h pkcs1.h realloc.h rsa.h rsa-compat.h \
	  sexp.h \
	  serpent.h sha.h twofish.h \
	  yarrow.h

INSTALL_HEADERS = $(HEADERS) nettle-types.h

SOURCES = $(nettle_SOURCES) aesdata.c desdata.c shadata.c

100
101
DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac \
	configure stamp-h.in \
102
	config.guess config.sub install-sh texinfo.tex \
103
	config.h.in config.m4.in config.make.in	Makefile.in \
104
	README AUTHORS COPYING INSTALL NEWS TODO ChangeLog \
105
106
107
	memxor.c $(des_headers) descore.README \
	aes-internal.h cast128_sboxes.h desinfo.h desCode.h \
	serpent_sboxes.h nettle-internal.h \
Niels Möller's avatar
Niels Möller committed
108
	asm.m4 \
109
	nettle.texinfo nettle.info nettle.html sha-example.c
110
111
112

# Rules building libnettle.a
# FIXME: Do we really need to delete the archive first?
113
114
115
116
nettle_OBJS = $(nettle_SOURCES:.c=.$(OBJEXT)) $(LIBOBJS)
nettle_PURE_OBJS = $(nettle_OBJS:.$(OBJEXT)=.p$(OBJEXT))

libnettle.a: $(nettle_OBJS)
117
	-rm -f $@
118
	$(AR) $(ARFLAGS) $@ $(nettle_OBJS)
119
120
121
122
123
124
125
	$(RANLIB) $@

.c.$(OBJEXT):
	$(COMPILE) $(CCPIC_MAYBE) -c $< \
	&& $(DEP_PROCESS)

# Rules building libnettle.so
126
127
$(SHLIBFORLINK): $(nettle_PURE_OBJS)
	$(SHLIBLINK) $(nettle_PURE_OBJS) -o $@ $(SHLIBLIBS)
128
129
130
131
132
133
134
135
	-mkdir .lib 2>/dev/null
	[ -z "$(SHLIBSONAME)" ] || (cd .lib \
          && ln -sf ../$(SHLIBFORLINK) $(SHLIBSONAME))

.c.p$(OBJEXT):
	$(COMPILE) $(SHLIBCFLAGS) -c $< -o $@ \
	&& $(DEP_PROCESS)

Niels Möller's avatar
Niels Möller committed
136
.$(OBJEXT)$(EXEEXT):
137
	$(LINK) $< $(LIBS) -o $@
138

139
140
141
142
143
# aesdata$(EXEEXT): aesdata.$(OBJEXT)
# 	$(LINK) $< $(LIBS) -o $@
# 
# desdata$(EXEEXT): desdata.$(OBJEXT)
# 	$(LINK) $< $(LIBS) -o $@
144
145

shadata$(EXEEXT): shadata.$(OBJEXT)
146
	$(LINK) shadata.$(OBJEXT) $(LIBS) -lm -o $@
147

148
149
150
151
152
153
154
155
156
157
158
159
160
# desCore rules
# It seems using $(srcdir)/ doesn't work with GNU make 3.79.1
# des_headers = $(srcdir)/parity.h $(srcdir)/rotors.h $(srcdir)/keymap.h 
des_headers = parity.h rotors.h keymap.h 

# Generate DES headers.
$(des_headers): desdata.c
	$(MAKE) desdata$(EXEEXT)
	./desdata$(EXEEXT) $(@F) > $@T
	test -s $@T && mv -f $@T $@

des.o: des.c des.h $(des_headers)

161
162
163
164
165
166
167
168
169
170
171
.asm.$(OBJEXT):
	$(M4) $(srcdir)/asm.m4 machine.m4 config.m4 \
		$< >$*.s
	$(COMPILE) $(CCPIC_MAYBE) -c $*.s
	echo "$@ : $< $(srcdir)/asm.m4 machine.m4 config.m4" >$@.d 

.asm.p$(OBJEXT):
	$(M4) $(srcdir)/asm.m4 machine.m4 config.m4 \
		$< >$*.s
	$(COMPILE) $(SHLIBCFLAGS) -c $*.s -o $@
	echo "$@ : $< $(srcdir)/asm.m4 machine.m4 config.m4" >$@.d 
172

173
174
175
176
177
178
# Texinfo rules
.texinfo.info:
	cd $(srcdir) && $(MAKEINFO) --output $@T `basename $<` \
	&& test -s $@T && mv -f $@T $@

.texinfo.html:
179
180
181
	cd $(srcdir) && $(MAKEINFO) --html --no-split \
	  --output $@T `basename $<` \
	  && test -s $@T && mv -f $@T $@
182

183
184
# Configure-related rules, mostly copied from the autoconf manual. No
# $(srcdir) prefixes on the targets, though.
185

186
187
configure: configure.ac aclocal.m4
	cd $(srcdir) && $(AUTOCONF)
188

189
190
191
192
193
# autoheader might not change config.h.in, so touch a stamp file.
config.h.in: stamp-h.in
stamp-h.in: configure.ac aclocal.m4
	cd $(srcdir) && autoheader
	echo timestamp > $(srcdir)/stamp-h.in
194

195
196
config.status: configure
	./config.status --recheck
197

198
199
200
201
config.h: stamp-h
stamp-h: config.h.in config.status
	./config.status config.h
	echo timestamp > stamp-h
202

203
204
Makefile: Makefile.in config.status
	./config.status $@
205

206
207
config.make: config.make.in config.status
	./config.status $@
208

Niels Möller's avatar
Niels Möller committed
209
210
211
config.m4: config.m4.in config.status
	./config.status $@

212
# Installation
213
214
215
install-here: install-info install-headers libnettle.a $(SHLIBINSTALL)
	$(INSTALL) -d $(DESTDIR)$(libdir)
	$(INSTALL_DATA) libnettle.a $(DESTDIR)$(libdir)
216
217

install-shared: $(SHLIBFORLINK)
218
	$(INSTALL) -d $(DESTDIR)$(libdir)
219
	$(INSTALL_PROGRAM) $(SHLIBFORLINK) $(DESTDIR)$(libdir)/$(SHLIBFILE)
220
	[ -z "$(SHLIBSONAME)" ] \
221
                || (cd $(DESTDIR)$(libdir) \
222
223
224
225
		&& ln -sf $(SHLIBFILE) $(SHLIBSONAME) \
		&& ln -sf $(SHLIBFILE) $(SHLIBFORLINK) )

install-info: nettle.info
226
227
	$(INSTALL) -d $(DESTDIR)$(infodir)
	$(INSTALL_DATA) $< $(DESTDIR)$(infodir)
228
229
	if (install-info --version && \
	    install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
230
	  install-info --info-dir="$(DESTDIR)$(infodir)" $< ; \
231
232
	else : ; fi

233
234
# NOTE: I'd like to use $^, but that's a GNU extension. $? should be
# more portable, and equivalent for phony targets.
235
install-headers: $(INSTALL_HEADERS)
236
	$(INSTALL) -d $(DESTDIR)$(includedir)/nettle
237
	$(INSTALL_DATA) $? $(DESTDIR)$(includedir)/nettle
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257

# Uninstall
uninstall-here: uninstall-info uninstall-headers uninstall-shared
	rm -f $(DESTDIR)$(libdir)/libnettle.a

uninstall-headers:
	for f in $(INSTALL_HEADERS) ; do \
	  rm -f $(DESTDIR)$(includedir)/nettle/$$f ; \
	done

uninstall-info:
	if (install-info --version && \
	    install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
	  install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)"/nettle.info ; \
	else : ; fi
	-rm -f $(DESTDIR)$(infodir)/nettle.info

# FIXME: Leaves the links around
uninstall-shared:
	test -z "$(SHLIBINSTALL)" || rm -f $(DESTDIR)$(libdir)/$(SHLIBFILE)
258

259
260
261
262
# Distribution
distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
top_distdir = $(distdir)

263
264
265
266
267
# NOTE: Depending on the automake version in the parent dir,
# we must handle both absolute and relative $destdir.

# NOTE: I'd like to use $^, but that's a GNU extension. $? should be
# more portable, and equivalent for phony targets.
268
distdir: $(DISTFILES)
269
270
271
	rm -rf "$(distdir)"
	mkdir "$(distdir)"
	cp $? "$(distdir)"
272
	set -e; for d in sparc x86 ; do \
273
274
	  mkdir "$(distdir)/$$d" ; \
	  cp $(srcdir)/$$d/*.asm $(srcdir)/$$d/*.m4 "$(distdir)/$$d" ; \
275
	done
276
	set -e; for d in $(SUBDIRS); do \
277
278
	  sd="$(distdir)/$$d" ; \
	  mkdir "$$sd" && $(MAKE) -C $$d distdir="`cd $$sd && pwd`" $@ ; \
279
280
281
282
283
284
285
286
	done

dist: distdir
	tar cf - $(distdir) | gzip -c >$(distdir).tar.gz	
	rm -rf $(distdir)

rm_distcheck = test ! -d distcheck-tmp \
	    || { find distcheck-tmp -type d ! -perm -200 -exec chmod u+w {} ';' \
287
                 && rm -fr distcheck-tmp; }; 
288
289
290
291

distcheck: dist
	$(rm_distcheck)
	mkdir distcheck-tmp
292
293
	gzip -d < $(distdir).tar.gz \
	  | { cd distcheck-tmp && tar xf - && chmod -R a-w $(distdir) ; }
294
295
	mkdir distcheck-tmp/build
	mkdir distcheck-tmp/install
296
	cd distcheck-tmp/build && ../$(distdir)/configure --prefix="`cd ../install && pwd`"
297
298
299
	cd distcheck-tmp/build && $(MAKE)
	cd distcheck-tmp/build && $(MAKE) check
	cd distcheck-tmp/build && $(MAKE) install
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
	cd distcheck-tmp/build && $(MAKE) uninstall
	cd distcheck-tmp && find install -type f -print > leftover-install-files
	@test `cat distcheck-tmp/leftover-install-files | wc -l` -le 1  \
	  || { echo "ERROR: files left after uninstall:" ; \
	       cat distcheck-tmp/leftover-install-files ; \
	       exit 1; }
	chmod -R a-w distcheck-tmp/install
	mkdir distcheck-tmp/destdir
	destdir="`cd distcheck-tmp/destdir && pwd`" \
	  && cd distcheck-tmp/build \
	  && $(MAKE) install DESTDIR="$$destdir" \
	  && $(MAKE) uninstall DESTDIR="$$destdir"
	cd distcheck-tmp && find destdir -type f -print > leftover-destdir-files
	@test `cat distcheck-tmp/leftover-destdir-files | wc -l` -le 1  \
	  || { echo "ERROR: destdir files left after uninstall:" ; \
	       cat distcheck-tmp/leftover-destdir-files ; \
	       exit 1; }	
317
318
	cd distcheck-tmp/build && $(MAKE) dist
	cd distcheck-tmp/build && rm *.gz
319
	cd distcheck-tmp/build && $(MAKE) distclean
320
321
	cd distcheck-tmp && find build -type f -print > leftover-build-files
	@test `cat distcheck-tmp/leftover-build-files | wc -l` -eq 0  \
322
	  || { echo "ERROR: files left in build directory after distclean:" ; \
323
	       cat distcheck-tmp/leftover-build-files ; \
324
325
326
327
	       exit 1; }
	$(rm_distcheck)

clean-here:
328
	-rm -f $(TARGETS) *.$(OBJEXT) *.p$(OBJEXT) *.s
329

330
distclean-here: clean-here
331
	-rm -f config.h stamp-h config.log config.status \
332
	config.make config.m4 Makefile nettle-types.h *.d
333

334
DEP_FILES = $(SOURCES:.c=.$(OBJEXT).d) $(SOURCES:.c=.p$(OBJEXT).d)
335
@DEP_INCLUDE@ $(DEP_FILES)