Makefile.in 9.93 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
install-here: install-info install-headers libnettle.a $(SHLIBINSTALL)
205
	[ -d $(DESTDIR)$(libdir) ] || $(INSTALL) -d $(DESTDIR)$(libdir)
206
	$(INSTALL_DATA) libnettle.a $(DESTDIR)$(libdir)
207 208

install-shared: $(SHLIBFORLINK)
209
	[ -d $(DESTDIR)$(libdir) ] || $(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
	[ -d $(DESTDIR)$(infodir) ] || $(INSTALL) -d $(DESTDIR)$(infodir)
218
	$(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 228
	[ -d $(DESTDIR)$(includedir) ] || $(INSTALL) -d $(DESTDIR)$(includedir)
	[ -d $(DESTDIR)$(includedir)/nettle ] || $(INSTALL) -d $(DESTDIR)$(includedir)/nettle
229
	$(INSTALL_DATA) $? $(DESTDIR)$(includedir)/nettle
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249

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

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

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

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

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

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

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