static/shared: use available libraries when linking our tools/examples/testsuite

For a shared-only build, static libraries do not exist, so the build fails as
soon as we try to link either of our tools, examples or testsuite utils.

Use whatever libraries are available, with a preference toward using shared
libraries.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

diff -durN nettle-2.7.1.orig/config.make.in nettle-2.7.1/config.make.in
--- nettle-2.7.1.orig/config.make.in	2013-05-28 16:21:53.000000000 +0200
+++ nettle-2.7.1/config.make.in	2014-12-12 19:56:07.031292752 +0100
@@ -30,6 +30,8 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 
 SHLIBCFLAGS = @SHLIBCFLAGS@
+@IF_STATIC@LIBS_EXT = .a
+@IF_SHARED@LIBS_EXT = .so
 
 LIBNETTLE_MAJOR = @LIBNETTLE_MAJOR@
 LIBNETTLE_MINOR = @LIBNETTLE_MINOR@
diff -durN nettle-2.7.1.orig/tools/Makefile.in nettle-2.7.1/tools/Makefile.in
--- nettle-2.7.1.orig/tools/Makefile.in	2013-05-28 16:21:54.000000000 +0200
+++ nettle-2.7.1/tools/Makefile.in	2014-12-12 19:57:12.499805574 +0100
@@ -34,19 +34,19 @@
 DISTFILES = $(SOURCES) Makefile.in input.h misc.h output.h parse.h
 
 sexp_conv_OBJS = $(sexp_conv_SOURCES:.c=.$(OBJEXT)) $(getopt_OBJS)
-sexp-conv$(EXEEXT): $(sexp_conv_OBJS) ../libnettle.a
+sexp-conv$(EXEEXT): $(sexp_conv_OBJS) ../libnettle$(LIBS_EXT)
 	$(LINK) $(sexp_conv_OBJS) -lnettle $(LIBS) -o $@
 
-nettle-lfib-stream$(EXEEXT): nettle-lfib-stream.$(OBJEXT) ../libnettle.a
+nettle-lfib-stream$(EXEEXT): nettle-lfib-stream.$(OBJEXT) ../libnettle$(LIBS_EXT)
 	$(LINK) nettle-lfib-stream.$(OBJEXT) -lnettle $(LIBS) -o $@
 
 pkcs1_conv_OBJS = $(pkcs1_conv_SOURCES:.c=.$(OBJEXT)) $(getopt_OBJS)
-pkcs1-conv$(EXEEXT): $(pkcs1_conv_OBJS) ../libnettle.a ../libhogweed.a
+pkcs1-conv$(EXEEXT): $(pkcs1_conv_OBJS) ../libnettle$(LIBS_EXT) ../libhogweed$(LIBS_EXT)
 	$(LINK) $(pkcs1_conv_OBJS) -lhogweed -lnettle $(LIBS) -o $@
 
 # FIXME: Avoid linking with gmp
 nettle_hash_OBJS = $(nettle_hash_SOURCES:.c=.$(OBJEXT)) $(getopt_OBJS)
-nettle-hash$(EXEEXT): $(nettle_hash_OBJS) ../libnettle.a
+nettle-hash$(EXEEXT): $(nettle_hash_OBJS) ../libnettle$(LIBS_EXT)
 	$(LINK) $(nettle_hash_OBJS) -lnettle $(LIBS) -o $@
 
 
diff -durN nettle-2.7.1.orig/examples/Makefile.in nettle-2.7.1/examples/Makefile.in
--- nettle-2.7.1.orig/examples/Makefile.in	2013-05-28 16:21:54.000000000 +0200
+++ nettle-2.7.1/examples/Makefile.in	2014-12-12 21:54:48.286251022 +0100
@@ -117,8 +117,8 @@
 	-lhogweed -lnettle $(BENCH_LIBS) $(LIBS) $(OPENSSL_LIBFLAGS) \
 	-o hogweed-benchmark$(EXEEXT)
 
-$(TARGETS) : io.$(OBJEXT) ../libnettle.a
-$(HOGWEED_TARGETS): ../libhogweed.a
+$(TARGETS) : io.$(OBJEXT) ../libnettle$(LIBS_EXT)
+$(HOGWEED_TARGETS): ../libhogweed$(LIBS_EXT)
 
 check: $(TS_ALL)
 	LD_LIBRARY_PATH=../.lib PATH="../.lib:$$PATH" srcdir="$(srcdir)" \
diff -durN nettle-2.7.1.orig/testsuite/Makefile.in nettle-2.7.1/testsuite/Makefile.in
--- nettle-2.7.1.orig/testsuite/Makefile.in	2013-05-28 16:21:54.000000000 +0200
+++ nettle-2.7.1/testsuite/Makefile.in	2014-12-12 21:55:30.414814549 +0100
@@ -96,7 +96,7 @@
 include $(srcdir)/.test-rules.make
 
 $(TARGETS) $(EXTRA_TARGETS): testutils.$(OBJEXT) ../nettle-internal.$(OBJEXT) \
-	../libnettle.a @IF_HOGWEED@ ../libhogweed.a
+	../libnettle$(LIBS_EXT) @IF_HOGWEED@ ../libhogweed$(LIBS_EXT)
 
 # For use as, e.g.,
 #
