Makefile.in 9.73 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
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

97 98
DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac \
	configure stamp-h.in \
99
	config.guess config.sub install-sh texinfo.tex \
100
	config.h.in config.m4.in config.make.in	Makefile.in \
101
	README AUTHORS COPYING INSTALL NEWS TODO ChangeLog \
102 103 104
	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
105
	asm.m4 \
106
	nettle.texinfo nettle.info nettle.html sha-example.c
107 108 109

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

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

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

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

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

139 140 141 142 143 144 145 146 147 148 149 150 151
# 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)

152 153 154 155 156 157 158 159 160 161 162
.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 
163

164 165 166 167 168 169
# Texinfo rules
.texinfo.info:
	cd $(srcdir) && $(MAKEINFO) --output $@T `basename $<` \
	&& test -s $@T && mv -f $@T $@

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

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

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

180 181 182 183 184
# 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
185

186 187
config.status: configure
	./config.status --recheck
188

189 190 191 192
config.h: stamp-h
stamp-h: config.h.in config.status
	./config.status config.h
	echo timestamp > stamp-h
193

194 195
Makefile: Makefile.in config.status
	./config.status $@
196

197 198
config.make: config.make.in config.status
	./config.status $@
199

Niels Möller's avatar
Niels Möller committed
200 201 202
config.m4: config.m4.in config.status
	./config.status $@

203
# Installation
204 205 206
install-here: install-info install-headers libnettle.a $(SHLIBINSTALL)
	$(INSTALL) -d $(DESTDIR)$(libdir)
	$(INSTALL_DATA) libnettle.a $(DESTDIR)$(libdir)
207 208

install-shared: $(SHLIBFORLINK)
209
	$(INSTALL) -d $(DESTDIR)$(libdir)
210
	$(INSTALL_PROGRAM) $(SHLIBFORLINK) $(DESTDIR)$(libdir)/$(SHLIBFILE)
211
	[ -z "$(SHLIBSONAME)" ] \
212
                || (cd $(DESTDIR)$(libdir) \
213 214 215 216
		&& ln -sf $(SHLIBFILE) $(SHLIBSONAME) \
		&& ln -sf $(SHLIBFILE) $(SHLIBFORLINK) )

install-info: nettle.info
217 218
	$(INSTALL) -d $(DESTDIR)$(infodir)
	$(INSTALL_DATA) $< $(DESTDIR)$(infodir)
219 220
	if (install-info --version && \
	    install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
221
	  install-info --info-dir="$(DESTDIR)$(infodir)" $< ; \
222 223
	else : ; fi

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

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

250 251 252 253
# Distribution
distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
top_distdir = $(distdir)

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

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

clean-here:
319
	-rm -f $(TARGETS) *.$(OBJEXT) *.p$(OBJEXT) *.s
320

321
distclean-here: clean-here
322
	-rm -f config.h stamp-h config.log config.status \
323
	config.make config.m4 Makefile nettle-types.h *.d
324

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