Makefile.in 15.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# Nettle Makefile

@SET_MAKE@

srcdir = @srcdir@
VPATH = @srcdir@

LIBOBJS = @LIBOBJS@

INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = $(INSTALL_PROGRAM) -s
MKDIR_P = @MKDIR_P@

SUBDIRS = tools testsuite examples

include config.make

PRE_CPPFLAGS = -I.
22
# FIXME: Add configuration of LIBEXT?
23 24
LIBTARGETS = libnettle.a @IF_HOGWEED@ libhogweed.a
SHLIBTARGETS = $(LIBNETTLE_FORLINK) @IF_HOGWEED@ $(LIBHOGWEED_FORLINK)
25

Niels Möller's avatar
Niels Möller committed
26
TARGETS = aesdata$(EXEEXT) desdata$(EXEEXT) shadata$(EXEEXT) gcmdata$(EXEEXT)\
27
	  $(LIBTARGETS) @IF_SHARED@ $(SHLIBTARGETS)
28
IMPLICIT_TARGETS = @IF_DLL@ $(LIBNETTLE_FILE) $(LIBHOGWEED_FILE)
29 30 31

DOCTARGETS = nettle.info nettle.html nettle.pdf

32 33 34
PKGCONFIG_FILES = nettle.pc @IF_HOGWEED@ hogweed.pc
pkgconfigdir = $(libdir)/pkgconfig

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
all check install uninstall:
	$(MAKE) $@-here
	set -e; for d in $(SUBDIRS); do \
	  echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done

clean distclean mostlyclean maintainer-clean tags:
	set -e; for d in $(SUBDIRS); do \
	  echo "Making $@ in $$d" ; (cd $$d && $(MAKE) $@); done
	$(MAKE) $@-here

check-here:
	true

# FIXME: Remove. These targets aren't supported, but they are expected by the
# automake generated Makefiles in the lsh build.
dvi installcheck uninstallcheck:
	true

all-here: $(TARGETS) $(DOCTARGETS)

nettle_SOURCES = aes-decrypt-internal.c aes-decrypt.c \
		 aes-encrypt-internal.c aes-encrypt.c aes-encrypt-table.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 \
62 63 64 65
		 camellia-crypt.c camellia-crypt-internal.c \
		 camellia-set-encrypt-key.c camellia-set-decrypt-key.c \
		 camellia-table.c camellia-meta.c \
		 cast128.c cast128-meta.c \
66
		 blowfish.c \
67
		 cbc.c ctr.c gcm.c gcm-aes.c \
68 69
		 des.c \
		 des3.c des-compat.c \
70
		 hmac.c hmac-md5.c hmac-ripemd160.c hmac-sha1.c \
71
		 hmac-sha224.c hmac-sha256.c hmac-sha384.c hmac-sha512.c \
72 73 74
		 knuth-lfib.c \
		 md2.c md2-meta.c md4.c md4-meta.c \
		 md5.c md5-compress.c md5-compat.c md5-meta.c \
75
		 ripemd160.c ripemd160-compress.c ripemd160-meta.c \
76 77
		 sha1.c sha1-compress.c sha1-meta.c \
		 sha256.c sha256-compress.c sha224-meta.c sha256-meta.c \
78
		 sha512.c sha512-compress.c sha384-meta.c sha512-meta.c \
79 80
		 serpent-set-key.c serpent-encrypt.c serpent-decrypt.c \
		 serpent-meta.c \
81 82 83
		 twofish.c twofish-meta.c \
		 yarrow256.c yarrow_key_event.c \
		 buffer.c buffer-init.c realloc.c \
84 85
		 nettle-meta-hashes.c nettle-meta-ciphers.c \
		 nettle-meta-armors.c \
86
		 nettle-internal.c write-be32.c write-le32.c
87

88 89
hogweed_SOURCES = sexp.c sexp-format.c \
		  sexp-transport.c sexp-transport-format.c \
90 91 92
		  bignum.c bignum-next-prime.c \
		  bignum-random.c bignum-random-prime.c \
		  sexp2bignum.c \
93 94
		  pkcs1.c pkcs1-rsa-md5.c pkcs1-rsa-sha1.c \
		  pkcs1-rsa-sha256.c pkcs1-rsa-sha512.c \
95 96 97 98
		  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-sha256-sign.c rsa-sha256-verify.c \
99
		  rsa-sha512-sign.c rsa-sha512-verify.c \
100 101 102 103
		  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 \
104 105
		  dsa-sha1-sign.c dsa-sha1-verify.c \
		  dsa-sha256-sign.c dsa-sha256-verify.c  \
106
		  dsa2sexp.c sexp2dsa.c \
107
		  pgp-encode.c rsa2openpgp.c \
108
		  der-iterator.c der2rsa.c der2dsa.c
109

110
HEADERS = aes.h arcfour.h arctwo.h asn1.h bignum.h blowfish.h \
111
	  base16.h base64.h buffer.h camellia.h cast128.h \
112
	  cbc.h ctr.h gcm.h \
113 114 115 116 117 118 119 120
	  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 nettle-types.h \
121
	  pgp.h pkcs1.h realloc.h ripemd160.h rsa.h rsa-compat.h \
122 123 124 125 126 127
	  sexp.h \
	  serpent.h sha.h twofish.h \
	  yarrow.h

INSTALL_HEADERS = $(HEADERS) nettle-stdint.h

Niels Möller's avatar
Niels Möller committed
128
SOURCES = $(nettle_SOURCES) $(hogweed_SOURCES) aesdata.c desdata.c shadata.c gcmdata.c
129 130 131 132 133

DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac \
	configure stamp-h.in \
	config.guess config.sub install-sh texinfo.tex \
	config.h.in config.m4.in config.make.in	Makefile.in \
134
	README AUTHORS COPYING.LIB INSTALL NEWS TODO ChangeLog \
135
	nettle.pc.in hogweed.pc.in \
136
	memxor.c $(des_headers) descore.README \
137 138
	aes-internal.h camellia-internal.h serpent-internal.h \
	cast128_sboxes.h desinfo.h desCode.h \
Simon Josefsson's avatar
Simon Josefsson committed
139
	nettle-internal.h nettle-write.h prime-list.h \
140 141 142
	asm.m4 \
	nettle.texinfo nettle.info nettle.html nettle.pdf sha-example.c

143
# Rules building static libraries
144 145 146
nettle_OBJS = $(nettle_SOURCES:.c=.$(OBJEXT)) $(LIBOBJS)
nettle_PURE_OBJS = $(nettle_OBJS:.$(OBJEXT)=.p$(OBJEXT))

147
hogweed_OBJS = $(hogweed_SOURCES:.c=.$(OBJEXT))
148 149
hogweed_PURE_OBJS = $(hogweed_OBJS:.$(OBJEXT)=.p$(OBJEXT))

150 151 152 153 154
libnettle.a: $(nettle_OBJS)
	-rm -f $@
	$(AR) $(ARFLAGS) $@ $(nettle_OBJS)
	$(RANLIB) $@

155 156 157 158 159
libhogweed.a: $(hogweed_OBJS)
	-rm -f $@
	$(AR) $(ARFLAGS) $@ $(hogweed_OBJS)
	$(RANLIB) $@

160 161 162 163
.c.$(OBJEXT):
	$(COMPILE) $(CCPIC_MAYBE) -c $< \
	&& $(DEP_PROCESS)

164
# Rules building shared libraries.
165
$(LIBNETTLE_FORLINK): $(nettle_PURE_OBJS)
166
	$(LIBNETTLE_LINK) $(nettle_PURE_OBJS) -o $@ $(LIBNETTLE_LIBS)
167
	-mkdir .lib 2>/dev/null
168 169 170 171 172 173
	(cd .lib \
          && rm -f $(LIBNETTLE_FORLINK) \
	  && $(LN_S) ../$(LIBNETTLE_FORLINK) $(LIBNETTLE_FORLINK) \
	  && [ -n "$(LIBNETTLE_SONAME)"] \
	  || { rm -f $(LIBNETTLE_SONAME) \
	       && $(LN_S) $(LIBNETTLE_FORLINK) $(LIBNETTLE_SONAME) ; } )
174

175
$(LIBHOGWEED_FORLINK): $(hogweed_PURE_OBJS) $(LIBNETTLE_FORLINK)
176
	$(LIBHOGWEED_LINK) $(hogweed_PURE_OBJS) -o $@ $(LIBHOGWEED_LIBS)
177
	-mkdir .lib 2>/dev/null
178 179 180 181 182 183
	(cd .lib \
          && rm -f $(LIBHOGWEED_FORLINK) \
	  && $(LN_S) ../$(LIBHOGWEED_FORLINK) $(LIBHOGWEED_FORLINK) \
	  && [ -n "$(LIBHOGWEED_SONAME)"] \
	  || { rm -f $(LIBHOGWEED_SONAME) \
	       && $(LN_S) $(LIBHOGWEED_FORLINK) $(LIBHOGWEED_SONAME) ; } )
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198

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

# For Solaris and BSD make, we have to use an explicit rule for each executable
aesdata$(EXEEXT): aesdata.$(OBJEXT)
	$(LINK) aesdata.$(OBJEXT) $(LIBS) -o aesdata$(EXEEXT)

desdata$(EXEEXT): desdata.$(OBJEXT)
	$(LINK) desdata.$(OBJEXT) $(LIBS) -o desdata$(EXEEXT)

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

Niels Möller's avatar
Niels Möller committed
199 200 201
gcmdata$(EXEEXT): gcmdata.$(OBJEXT)
	$(LINK) gcmdata.$(OBJEXT) $(LIBS) -o gcmdata$(EXEEXT)

202 203 204 205 206
# .$(OBJEXT)$(EXEEXT):
# 	$(LINK) $< $(LIBS) -o $@

# desCore rules
# It seems using $(srcdir)/ doesn't work with GNU make 3.79.1
207 208
# des_headers = $(srcdir)/rotors.h $(srcdir)/keymap.h 
des_headers = rotors.h keymap.h 
209 210 211 212

# Generate DES headers.
$(des_headers): desdata.c
	$(MAKE) desdata$(EXEEXT)
213 214 215
	f="$(srcdir)/`basename $@`"; \
	  ./desdata$(EXEEXT) $(@F) > $${f}T; \
	  test -s $${f}T && mv -f $${f}T $$f
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232

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

.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 

# Texinfo rules
.texinfo.info:
233
	cd $(srcdir) && $(MAKEINFO) --output $@ `basename "$<"`
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260

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

.texinfo.dvi:
	cd $(srcdir) && texi2dvi `basename "$<"`

.dvi.ps:
	cd $(srcdir) && dvips -Ppdf -G0 -o `basename "$<" .dvi`.ps `basename "$<"`

# Avoid rebuilding .dvi and .ps files when the .texinfo source is unchanged.
PS2PDFFLAGS=-dCompatibilityLevel=1.3 -dMAxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true
.texinfo.pdf:
	$(MAKE) `basename "$<" .texinfo`.ps
	cd $(srcdir) && ps2pdf $(PS2PDFFLAGS) `basename "$<" .texinfo`.ps

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

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

# 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
261
	cd $(srcdir) && $(AUTOHEADER)
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280
	echo timestamp > $(srcdir)/stamp-h.in

config.status: configure
	./config.status --recheck

config.h: stamp-h
stamp-h: config.h.in config.status
	./config.status config.h
	echo timestamp > stamp-h

Makefile: Makefile.in config.status
	./config.status $@

config.make: config.make.in config.status
	./config.status $@

config.m4: config.m4.in config.status
	./config.status $@

281 282 283 284 285 286
nettle.pc: nettle.pc.in config.status
	./config.status $@

hogweed.pc: hogweed.pc.in config.status
	./config.status $@

287
# Installation
288
install-here: install-info install-headers install-static install-pkgconfig \
289
	@IF_SHARED@ install-shared-nettle @IF_HOGWEED@ install-shared-hogweed
290 291

install-static: $(LIBTARGETS)
292
	$(MKDIR_P) $(DESTDIR)$(libdir)
293 294 295 296
	for f in $(LIBTARGETS); do \
	  $(INSTALL_DATA) $$f $(DESTDIR)$(libdir) ; \
	done

297 298 299 300 301
install-dll-nettle:
	$(MKDIR_P) $(DESTDIR)$(bindir)
	$(INSTALL_DATA) $(LIBNETTLE_FORLINK) $(DESTDIR)$(bindir)/$(LIBNETTLE_FORLINK)

install-shared-nettle: $(LIBNETTLE_FORLINK) @IF_DLL@ install-dll-nettle
302
	$(MKDIR_P) $(DESTDIR)$(libdir)
303
	$(INSTALL_DATA) $(LIBNETTLE_FILE_SRC) $(DESTDIR)$(libdir)/$(LIBNETTLE_FILE)
304 305
	[ -z "$(LIBNETTLE_SONAME)" ] \
                || (cd $(DESTDIR)$(libdir) \
306 307 308
		&& rm -f $(LIBNETTLE_SONAME) $(LIBNETTLE_FORLINK) \
		&& $(LN_S) $(LIBNETTLE_FILE) $(LIBNETTLE_SONAME) \
		&& $(LN_S) $(LIBNETTLE_FILE) $(LIBNETTLE_FORLINK))
309

310 311 312 313 314
install-dll-hogweed:
	$(MKDIR_P) $(DESTDIR)$(bindir)
	$(INSTALL_DATA) $(LIBHOGWEED_FORLINK) $(DESTDIR)$(bindir)/$(LIBHOGWEED_FORLINK)

install-shared-hogweed: $(LIBHOGWEED_FORLINK) @IF_DLL@ install-dll-hogweed
315
	$(MKDIR_P) $(DESTDIR)$(libdir)
316
	$(INSTALL_DATA) $(LIBHOGWEED_FILE_SRC) $(DESTDIR)$(libdir)/$(LIBHOGWEED_FILE)
317
	[ -z "$(LIBHOGWEED_SONAME)" ] \
318
                || (cd $(DESTDIR)$(libdir) \
319 320 321
		&& rm -f $(LIBHOGWEED_SONAME) $(LIBHOGWEED_FORLINK) \
		&& $(LN_S) $(LIBHOGWEED_FILE) $(LIBHOGWEED_SONAME) \
		&& $(LN_S) $(LIBHOGWEED_FILE) $(LIBHOGWEED_FORLINK))
322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347

# I'd like to use makes VPATH search to locate the files to be
# installed. But it seems most make programs don't set $<, $^, $? and
# friends for ordinary explicit rules.

install-info: nettle.info
	$(MKDIR_P) $(DESTDIR)$(infodir)
	f=nettle.info ; \
	[ -f $$f ] || f="$(srcdir)/$$f" ; \
	$(INSTALL_DATA) "$$f" $(DESTDIR)$(infodir) ; \
	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)" "$$f" ; \
	else : ; fi

# NOTE: I'd like to use $^, but that's a GNU extension. $? should be
# more portable, and equivalent for phony targets.
install-headers: $(INSTALL_HEADERS)
	$(MKDIR_P) $(DESTDIR)$(includedir)/nettle
	for f in $(INSTALL_HEADERS) ; do \
	  if [ -f "$$f" ] ; then \
	    $(INSTALL_DATA) "$$f" $(DESTDIR)$(includedir)/nettle ; \
	  else \
	    $(INSTALL_DATA) "$(srcdir)/$$f" $(DESTDIR)$(includedir)/nettle ; \
	  fi ; done

348 349 350 351 352 353
install-pkgconfig: $(PKGCONFIG_FILES)
	$(MKDIR_P) $(DESTDIR)$(pkgconfigdir)
	for f in $(PKGCONFIG_FILES) ; do \
	  $(INSTALL_DATA) "$$f" $(DESTDIR)$(pkgconfigdir) ; \
	done

354
# Uninstall
355
uninstall-here: uninstall-info uninstall-headers uninstall-static \
356
		uninstall-pkgconfig @IF_SHARED@ uninstall-shared
357 358

uninstall-static:
359
	for f in $(LIBTARGETS) ; do \
360 361
	  rm -f $(DESTDIR)$(libdir)/$$f ; \
	done
362 363 364 365 366 367 368 369 370 371 372 373 374 375

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
376 377
uninstall-shared: uninstall-shared-nettle @IF_HOGWEED@ uninstall-shared-hogweed

378 379 380 381
uninstall-dll-nettle:
	rm -f $(DESTDIR)$(bindir)/$(LIBNETTLE_FORLINK)

uninstall-shared-nettle: @IF_DLL@ uninstall-dll-nettle
382 383 384 385
	rm -f $(DESTDIR)$(libdir)/$(LIBNETTLE_FILE)
	[ -z "$(LIBNETTLE_SONAME)" ] \
		|| rm -f $(LIBNETTLE_SONAME) $(LIBNETTLE_FORLINK)

386 387 388 389
uninstall-dll-hogweed:
	rm -f $(DESTDIR)$(bindir)/$(LIBHOGWEED_FORLINK)

uninstall-shared-hogweed: @IF_DLL@ uninstall-dll-hogweed
390 391 392
	rm -f $(DESTDIR)$(libdir)/$(LIBHOGWEED_FILE)
	[ -z "$(LIBHOGWEED_SONAME)" ] \
		|| rm -f $(LIBHOGWEED_SONAME) $(LIBHOGWEED_FORLINK)
393

394 395 396 397 398
uninstall-pkgconfig:
	for f in $(PKGCONFIG_FILES) ; do \
	  rm -f $(DESTDIR)$(pkgconfigdir)/$$f ; \
	done

399 400 401 402
# Distribution
distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
top_distdir = $(distdir)

Niels Möller's avatar
Niels Möller committed
403
# NOTE: We should handle both absolute and relative $destdir.
404 405 406 407 408 409 410 411 412

distdir: $(DISTFILES)
	rm -rf "$(distdir)"
	mkdir "$(distdir)"
	set -e; for f in $(DISTFILES) ; do \
	  if [ -f "$$f" ] ; then cp "$$f" "$(distdir)" ; \
	  else cp "$(srcdir)/$$f" "$(distdir)" ; \
	  fi ; \
	done
413
	set -e; for d in sparc32 sparc64 x86 x86_64; do \
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
	  mkdir "$(distdir)/$$d" ; \
	  cp $(srcdir)/$$d/*.asm $(srcdir)/$$d/*.m4 "$(distdir)/$$d" ; \
	done
	set -e; for d in $(SUBDIRS); do \
	  sd="$(distdir)/$$d" ; \
	  mkdir "$$sd" && $(MAKE) -C $$d distdir="`cd $$sd && pwd`" $@ ; \
	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 {} ';' \
                 && rm -fr distcheck-tmp; }; 

distcheck: dist
	$(rm_distcheck)
	mkdir distcheck-tmp
	gzip -d < $(distdir).tar.gz \
	  | { cd distcheck-tmp && tar xf - && chmod -R a-w $(distdir) ; }
	mkdir distcheck-tmp/build
	mkdir distcheck-tmp/install
	cd distcheck-tmp/build && ../$(distdir)/configure --prefix="`cd ../install && pwd`"
	cd distcheck-tmp/build && $(MAKE)
	cd distcheck-tmp/build && $(MAKE) check
	cd distcheck-tmp/build && $(MAKE) install
	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; }	
	cd distcheck-tmp/build && $(MAKE) dist
	cd distcheck-tmp/build && rm *.gz
	cd distcheck-tmp/build && $(MAKE) distclean
	cd distcheck-tmp && find build -type f -print > leftover-build-files
	@test `cat distcheck-tmp/leftover-build-files | wc -l` -eq 0  \
	  || { echo "ERROR: files left in build directory after distclean:" ; \
	       cat distcheck-tmp/leftover-build-files ; \
	       exit 1; }
	$(rm_distcheck)

clean-here:
469
	-rm -f $(TARGETS) $(IMPLICIT_TARGETS) *.$(OBJEXT) *.p$(OBJEXT) *.s
470 471 472 473
	-rm -rf .lib

distclean-here: clean-here
	-rm -f config.h stamp-h config.log config.status machine.m4 \
474 475 476
	config.make config.m4 Makefile nettle-stdint.h \
	nettle.pc hogweed.pc \
	*.asm *.d
477 478 479 480 481

maintainer-clean-here:
	-rm -f $(DOCTARGETS) *.dvi *.ps

tags-here:	
482
	etags -o $(srcdir)/TAGS $(srcdir)/*.c $(srcdir)/*.h
483 484 485

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