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)