Makefile.in 9.89 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 22 23
	$(MAKE) $@-here
	set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done

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

28 29 30
check-here:
	true

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

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

98 99
DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac \
	configure stamp-h.in \
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 \
Niels Möller's avatar
Niels Möller committed
106
	asm.m4 \
107
	nettle.texinfo nettle.info nettle.html sha-example.c
108 109 110

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

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

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

# Rules building libnettle.so
124 125
$(SHLIBFORLINK): $(nettle_PURE_OBJS)
	$(SHLIBLINK) $(nettle_PURE_OBJS) -o $@ $(SHLIBLIBS)
126 127 128 129 130 131 132 133
	-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
134
.$(OBJEXT)$(EXEEXT):
135
	$(LINK) $< $(LIBS) -o $@
136

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

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

146 147 148 149 150 151 152 153 154 155 156 157 158
# 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)

159 160 161 162 163 164 165 166 167 168 169
.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 
170

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

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

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

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

187 188 189 190 191
# 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
192

193 194
config.status: configure
	./config.status --recheck
195

196 197 198 199
config.h: stamp-h
stamp-h: config.h.in config.status
	./config.status config.h
	echo timestamp > stamp-h
200

201 202
Makefile: Makefile.in config.status
	./config.status $@
203

204 205
config.make: config.make.in config.status
	./config.status $@
206

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

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

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

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

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

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

257 258 259 260
# Distribution
distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
top_distdir = $(distdir)

261 262 263 264 265
# 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.
266
distdir: $(DISTFILES)
267 268 269
	rm -rf "$(distdir)"
	mkdir "$(distdir)"
	cp $? "$(distdir)"
270
	set -e; for d in sparc x86 ; do \
271 272
	  mkdir "$(distdir)/$$d" ; \
	  cp $(srcdir)/$$d/*.asm $(srcdir)/$$d/*.m4 "$(distdir)/$$d" ; \
273
	done
274
	set -e; for d in $(SUBDIRS); do \
275 276
	  sd="$(distdir)/$$d" ; \
	  mkdir "$$sd" && $(MAKE) -C $$d distdir="`cd $$sd && pwd`" $@ ; \
277 278 279 280 281 282 283 284
	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 {} ';' \
285
                 && rm -fr distcheck-tmp; }; 
286 287 288 289

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

clean-here:
326
	-rm -f $(TARGETS) *.$(OBJEXT) *.p$(OBJEXT) *.s
327

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

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