include config.make
PRE_CPPFLAGS = -I.
+LIBTARGETS = libnettle.a @IF_HOGWEED@ libhogweed.a
+SHLIBTARGETS = $(LIBNETTLE_FORLINK) @IF_HOGWEED@ $(LIBHOGWEED_FORLINK)
TARGETS = aesdata$(EXEEXT) desdata$(EXEEXT) shadata$(EXEEXT) \
- libnettle.a $(SHLIBTARGET)
+ $(LIBTARGETS) @IF_SHARED@ $(SHLIBTARGETS)
DOCTARGETS = nettle.info nettle.html nettle.pdf
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 pkcs1-rsa-sha256.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-sha256-sign.c rsa-sha256-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 \
- der-iterator.c der2rsa.c \
buffer.c buffer-init.c realloc.c \
nettle-internal.c
+hogweed_SOURCES = 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 pkcs1-rsa-sha256.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-sha256-sign.c rsa-sha256-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 \
+ der-iterator.c der2rsa.c \
+
HEADERS = aes.h arcfour.h arctwo.h asn1.h bignum.h blowfish.h \
base16.h base64.h buffer.h cast128.h \
cbc.h ctr.h \
INSTALL_HEADERS = $(HEADERS) nettle-stdint.h
-SOURCES = $(nettle_SOURCES) aesdata.c desdata.c shadata.c
+SOURCES = $(nettle_SOURCES) $(hogweed_SOURCES) aesdata.c desdata.c shadata.c
DISTFILES = $(SOURCES) $(HEADERS) .bootstrap aclocal.m4 configure.ac \
configure stamp-h.in \
asm.m4 \
nettle.texinfo nettle.info nettle.html nettle.pdf sha-example.c
-# Rules building libnettle.a
-# FIXME: Do we really need to delete the archive first?
+# Rules building static libraries
nettle_OBJS = $(nettle_SOURCES:.c=.$(OBJEXT)) $(LIBOBJS)
nettle_PURE_OBJS = $(nettle_OBJS:.$(OBJEXT)=.p$(OBJEXT))
+hogweed_OBJS = $(hogweed_SOURCES:.c=.$(OBJEXT)) $(LIBOBJS)
+hogweed_PURE_OBJS = $(hogweed_OBJS:.$(OBJEXT)=.p$(OBJEXT))
+
+# FIXME: Do we really need to delete the archive first?
libnettle.a: $(nettle_OBJS)
-rm -f $@
$(AR) $(ARFLAGS) $@ $(nettle_OBJS)
$(RANLIB) $@
+# FIXME: Do we really need to delete the archive first?
+libhogweed.a: $(hogweed_OBJS)
+ -rm -f $@
+ $(AR) $(ARFLAGS) $@ $(hogweed_OBJS)
+ $(RANLIB) $@
+
.c.$(OBJEXT):
$(COMPILE) $(CCPIC_MAYBE) -c $< \
&& $(DEP_PROCESS)
-# Rules building libnettle.so
-$(SHLIBFORLINK): $(nettle_PURE_OBJS)
- $(SHLIBLINK) $(nettle_PURE_OBJS) -o $@ $(SHLIBLIBS)
+# Rules building shared libraries
+$(LIBNETTLE_FORLINK): $(nettle_PURE_OBJS)
+ $(SHLIBLINK) $(nettle_PURE_OBJS) -o $@ $(LIBNETTLE_LIBS)
+ -mkdir .lib 2>/dev/null
+ [ -z "$(LIBNETTLE_SONAME)" ] || (cd .lib \
+ && ln -sf ../$(LIBNETTLE_FORLINK) $(LIBNETTLE_SONAME))
+
+$(LIBHOGWEED_FORLINK): $(hogweed_PURE_OBJS)
+ $(SHLIBLINK) $(hogweed_PURE_OBJS) -o $@ $(LIBHOGWEED_LIBS)
-mkdir .lib 2>/dev/null
- [ -z "$(SHLIBSONAME)" ] || (cd .lib \
- && ln -sf ../$(SHLIBFORLINK) $(SHLIBSONAME))
+ [ -z "$(LIBHOGWEED_SONAME)" ] || (cd .lib \
+ && ln -sf ../$(LIBHOGWEED_FORLINK) $(LIBHOGWEED_SONAME))
.c.p$(OBJEXT):
$(COMPILE) $(SHLIBCFLAGS) -c $< -o $@ \
./config.status $@
# Installation
-# FIXME: Use mkinstalldirs.
-install-here: install-info install-headers libnettle.a $(SHLIBINSTALL)
+install-here: install-info install-headers install-static \
+ @IF_SHARED$ install-shared-nettle @IF_HOGWEED@ install-shared-hogweed
+
+install-static: $(LIBTARGETS)
$(MKDIR_P) $(DESTDIR)$(libdir)
- $(INSTALL_DATA) libnettle.a $(DESTDIR)$(libdir)
+ for f in $(LIBTARGETS); do \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(libdir) ; \
+ done
+
+install-shared-nettle: $(LIBNETTLE_FORLINK)
+ $(MKDIR_P) $(DESTDIR)$(libdir)
+ $(INSTALL_PROGRAM) $(LIBNETTLE_FORLINK) $(DESTDIR)$(libdir)/$(LIBNETTLE_FILE)
+ [ -z "$(LIBNETTLE_SONAME)" ] \
+ || (cd $(DESTDIR)$(libdir) \
+ && ln -sf $(LIBNETTLE_FILE) $(LIBNETTLE_SONAME) \
+ && ln -sf $(LIBNETTLE_FILE) $(LIBNETTLE_FORLINK)
-install-shared: $(SHLIBFORLINK)
+install-shared-hogweed: $(LIBHOGWEED_FORLINK)
$(MKDIR_P) $(DESTDIR)$(libdir)
- $(INSTALL_PROGRAM) $(SHLIBFORLINK) $(DESTDIR)$(libdir)/$(SHLIBFILE)
- [ -z "$(SHLIBSONAME)" ] \
+ $(INSTALL_PROGRAM) $(LIBHOGWEED_FORLINK) $(DESTDIR)$(libdir)/$(LIBHOGWEED_FILE)
+ [ -z "$(LIBHOGWEED_SONAME)" ] \
|| (cd $(DESTDIR)$(libdir) \
- && ln -sf $(SHLIBFILE) $(SHLIBSONAME) \
- && ln -sf $(SHLIBFILE) $(SHLIBFORLINK) )
+ && ln -sf $(LIBHOGWEED_FILE) $(LIBHOGWEED_SONAME) \
+ && ln -sf $(LIBHOGWEED_FILE) $(LIBHOGWEED_FORLINK)
# I'd like to use makes VPATH search to locate the files to be
# installed. But it seems most make programs don't set $<, $^, $? and
fi ; done
# Uninstall
-uninstall-here: uninstall-info uninstall-headers uninstall-shared
- rm -f $(DESTDIR)$(libdir)/libnettle.a
+uninstall-here: uninstall-info uninstall-headers uninstall-static \
+ @IF_SHARED@ uninstall-shared
+
+uninstall-static:
+ for f in $(STATIC_LIBS) ; do \
+ rm -f $(DESTDIR)$(libdir)/$$f ; \
+ done
uninstall-headers:
for f in $(INSTALL_HEADERS) ; do \
-rm -f $(DESTDIR)$(infodir)/nettle.info
# FIXME: Leaves the links around
-uninstall-shared:
- test -z "$(SHLIBINSTALL)" || rm -f $(DESTDIR)$(libdir)/$(SHLIBFILE)
+uninstall-shared: uninstall-shared-nettle @IF_HOGWEED@ uninstall-shared-hogweed
+
+uninstall-shared-nettle:
+ rm -f $(DESTDIR)$(libdir)/$(LIBNETTLE_FILE)
+ [ -z "$(LIBNETTLE_SONAME)" ] \
+ || rm -f $(LIBNETTLE_SONAME) $(LIBNETTLE_FORLINK)
+
+uninstall-shared-hogweed:
+ rm -f $(DESTDIR)$(libdir)/$(LIBHOGWEED_FILE)
+ [ -z "$(LIBHOGWEED_SONAME)" ] \
+ || rm -f $(LIBHOGWEED_SONAME) $(LIBHOGWEED_FORLINK)
# Distribution
distdir = $(PACKAGE_NAME)-$(PACKAGE_VERSION)