Makefile.in 10.2 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 15
# FIXME: Really need -I$(srcdir) ???
INCLUDES = -I. -I$(srcdir)
16

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

21
all check install uninstall:
22 23 24
	$(MAKE) $@-here
	set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done

25 26 27 28
clean distclean mostlyclean maintainer-clean:
	set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done
	$(MAKE) $@-here

29 30 31
check-here:
	true

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

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
.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

DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac configure \
100
	config.guess config.sub install-sh texinfo.tex \
101
	config.h.in config.m4.in config.make.in	Makefile.in \
102
	README AUTHORS COPYING INSTALL NEWS TODO ChangeLog \
103 104 105
	memxor.c $(des_headers) descore.README \
	aes-internal.h cast128_sboxes.h desinfo.h desCode.h \
	serpent_sboxes.h nettle-internal.h \
106
	nettle.texinfo nettle.info nettle.html sha-example.c
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

# Rules building libnettle.a
# FIXME: Do we really need to delete the archive first?
libnettle.a: $(nettle_SOURCES:.c=.o) $(LIBOBJS)
	-rm -f $@
	$(AR) $(ARFLAGS) $@ $^
	$(RANLIB) $@

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

# Rules building libnettle.so
$(SHLIBFORLINK): $(nettle_SOURCES:.c=.p$(OBJEXT)) $(LIBOBJS:.$(OBJEXT)=.p$(OBJEXT))
	$(SHLIBLINK) $^ -o $@ $(SHLIBLIBS)
	-mkdir .lib 2>/dev/null
	[ -z "$(SHLIBSONAME)" ] || (cd .lib \
          && ln -sf ../$(SHLIBFORLINK) $(SHLIBSONAME))

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

.o$(EXEEXT):
	$(LINK) $^ $(LIBS) -o $@

# aesdata.$(OBJEXT) : aesdata.c
# 	$(COMPILE) -c $< && $(DEP_PROCESS)
aesdata$(EXEEXT): aesdata.$(OBJEXT)
	$(LINK) $^ $(LIBS) -o $@

# desdata.$(OBJEXT) : desdata.c
# 	$(COMPILE)  -c $< && $(DEP_PROCESS)
desdata$(EXEEXT): desdata.$(OBJEXT)
	$(LINK) $^ $(LIBS) -o $@

# shadata.$(OBJEXT) : shadata.c
# 	$(COMPILE)  -c $< && $(DEP_PROCESS)
shadata$(EXEEXT): shadata.$(OBJEXT)
	$(LINK) $^ $(LIBS) -lm -o $@

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
# FIXME: For some reason, this rule breaks builds on Tru64 5.1B (on
# alpha), with the system make. It fails with "Don't know how to make
# aes.asm", which is very strange, since the make program on this
# system is not supposed to know about %-style pattern rules, and
# "aes.asm" doesn't occur explicitly in any target or dependency.

@IF_ENABLE_ASM@%.$(OBJEXT): %.asm asm.m4 machine.m4 config.m4
@IF_ENABLE_ASM@	$(M4) $(srcdir)/asm.m4 machine.m4 config.m4 \
169
@IF_ENABLE_ASM@		$< >$*.s
170 171 172 173 174 175
@IF_ENABLE_ASM@	$(CC) $(CFLAGS) $(CCPIC_MAYBE) -c $*.s -o $@
@IF_ENABLE_ASM@	echo >$*.d 

# All assembler files should use pic-code only.
@IF_ENABLE_ASM@%.p$(OBJEXT): %.asm asm.m4 machine.m4 config.m4
@IF_ENABLE_ASM@	$(M4) $(srcdir)/asm.m4 machine.m4 config.m4 \
176
@IF_ENABLE_ASM@		$< >$*.s
177 178 179
@IF_ENABLE_ASM@	$(CC) $(CFLAGS) $(CCPIC) -c $*.s -o $@
@IF_ENABLE_ASM@	echo >$*.d 

180 181 182 183 184 185 186 187 188
# Texinfo rules
.texinfo.info:
	cd $(srcdir) && $(MAKEINFO) --output $@T `basename $<` \
	&& test -s $@T && mv -f $@T $@

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

189 190 191 192 193 194
# Configure-related rules

.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in config.status
	$(SHELL) ./config.status $@

195
config.make: $(srcdir)/config.make.in config.status
196 197 198 199 200
	$(SHELL) ./config.status $@

config.status: $(srcdir)/configure
	$(SHELL) ./config.status --recheck

201 202 203
config.m4: config.status $(srcdir)/config.m4.in
	$(SHELL) ./config.status $@

204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
configure: $(srcdir)/configure.ac $(srcdir)/aclocal.m4
	cd $(srcdir) && $(AUTOCONF)

config.h: stamp-h1
	@if test ! -f $@; then \
	  rm -f stamp-h1; \
	  $(MAKE) stamp-h1; \
	else :; fi

stamp-h1: $(srcdir)/config.h.in config.status
	@rm -f stamp-h1
	$(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(srcdir)/configure.ac
	cd $(srcdir) && $(AUTOHEADER)
	rm -f stamp-h1
	touch $@

# Installation
222 223 224
install-here: install-info install-headers libnettle.a $(SHLIBINSTALL)
	$(INSTALL) -d $(DESTDIR)$(libdir)
	$(INSTALL_DATA) libnettle.a $(DESTDIR)$(libdir)
225 226

install-shared: $(SHLIBFORLINK)
227 228
	$(INSTALL) -d $(DESTDIR)$(libdir)
	$(INSTALL_DATA) $(SHLIBFORLINK) $(DESTDIR)$(libdir)/$(SHLIBFILE)
229
	[ -z "$(SHLIBSONAME)" ] \
230
                || (cd $(DESTDIR)$(libdir) \
231 232 233 234
		&& ln -sf $(SHLIBFILE) $(SHLIBSONAME) \
		&& ln -sf $(SHLIBFILE) $(SHLIBFORLINK) )

install-info: nettle.info
235 236
	$(INSTALL) -d $(DESTDIR)$(infodir)
	$(INSTALL_DATA) $< $(DESTDIR)$(infodir)
237 238
	if (install-info --version && \
	    install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
239
	  install-info --info-dir="$(DESTDIR)$(infodir)" $< ; \
240 241
	else : ; fi

242
install-headers: $(INSTALL_HEADERS)
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
	$(INSTALL) -d $(DESTDIR)$(includedir)/nettle
	$(INSTALL_DATA) $^ $(DESTDIR)$(includedir)/nettle

# 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)
265

266 267 268 269 270
# Distribution
distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
top_distdir = $(distdir)

# $(distdir) must always be a relative path!
271
distdir: $(DISTFILES)
272 273
	rm -rf $(distdir)
	mkdir $(distdir)
274 275 276 277 278
	cp $^ $(distdir)
	set -e; for d in sparc x86 ; do \
	  mkdir $(distdir)/$$d ; \
	  cp $(srcdir)/$$d/*.asm $(srcdir)/$$d/*.m4 $(distdir)/$$d ; \
	done
279 280 281 282 283 284 285 286 287 288 289
	set -e; for d in $(SUBDIRS); do \
	  sd=$(distdir)/$$d ; \
	  mkdir $$sd && $(MAKE) -C $$d distdir=../$$sd $@ ; \
	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 {} ';' \
290
                 && rm -fr distcheck-tmp; }; 
291 292 293 294

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

clean-here:
331
	-rm -f $(TARGETS) *.$(OBJEXT) *.p$(OBJEXT) *.d
332

333 334 335
distclean-here: clean-here
	-rm -f config.h stamp-h1 config.log config.status \
	config.make config.m4 Makefile nettle-types.h
336 337

-include $(SOURCES:.c=.$(OBJEXT).d) $(SOURCES:.c=.p$(OBJEXT).d)