From c349964887901848fb4cd5db53a5bcb6dae27aaa Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sun, 23 Nov 2014 10:16:33 +0100 Subject: [PATCH] Add minimal support for --{enable,disable}-{shared,static} mpdecimal uses autoconf, but not automake or libtool, so this commit adds some basic handling of --{enable,disable}-{shared,static}, so that building the shared library can be disabled in pure static library contexts. Signed-off-by: Thomas Petazzoni [Fabrice: update for 2.5.0 (add libmpdec++)] Signed-off-by: Fabrice Fontaine --- Makefile.in | 6 ++++++ configure.ac | 13 +++++++++++++ libmpdec/Makefile.in | 11 ++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index 2c91891..0c44f36 100644 --- a/Makefile.in +++ b/Makefile.in @@ -9,6 +9,8 @@ LIBSTATIC = @LIBSTATIC@ LIBSONAME = @LIBSONAME@ LIBSHARED = @LIBSHARED@ INSTALL = @INSTALL@ +BUILD_SHARED = @BUILD_SHARED@ +BUILD_STATIC = @BUILD_STATIC@ prefix = @prefix@ exec_prefix = @exec_prefix@ @@ -32,9 +34,13 @@ install: FORCE $(INSTALL) -d -m 755 $(DESTDIR)$(includedir) $(INSTALL) -m 644 libmpdec/mpdecimal.h $(DESTDIR)$(includedir) $(INSTALL) -d -m 755 $(DESTDIR)$(libdir) +ifeq ($(BUILD_STATIC),yes) $(INSTALL) -m 644 libmpdec/$(LIBSTATIC) $(DESTDIR)$(libdir) +endif +ifeq ($(BUILD_SHARED),yes) $(INSTALL) -m 755 libmpdec/$(LIBSHARED) $(DESTDIR)$(libdir) cd $(DESTDIR)$(libdir) && ln -sf $(LIBSHARED) $(LIBSONAME) && ln -sf $(LIBSHARED) $(LIBNAME) +endif $(INSTALL) -d -m 755 $(DESTDIR)$(docdir) cp -R doc/* $(DESTDIR)$(docdir) @@ -74,9 +80,13 @@ install_libcxx: install_lib $(INSTALL) -d -m 755 $(DESTDIR)$(includedir) $(INSTALL) -m 644 libmpdec++/decimal.hh $(DESTDIR)$(includedir) $(INSTALL) -d -m 755 $(DESTDIR)$(libdir) +ifeq ($(BUILD_STATIC),yes) $(INSTALL) -m 644 libmpdec++/$(LIBSTATIC_CXX) $(DESTDIR)$(libdir) +endif +ifeq ($(BUILD_SHARED),yes) $(INSTALL) -m 755 libmpdec++/$(LIBSHARED_CXX) $(DESTDIR)$(libdir) cd $(DESTDIR)$(libdir) && ln -sf $(LIBSHARED_CXX) $(LIBSONAME_CXX) && ln -sf $(LIBSHARED_CXX) $(LIBNAME_CXX) +endif cp -R doc/libmpdec++ $(DESTDIR)$(docdir) diff --git a/configure.ac b/configure.ac index 7ee8f86..2b3e505 100644 --- a/configure.ac +++ b/configure.ac @@ -88,6 +88,19 @@ CFLAGS="$saved_cflags" AC_PROG_INSTALL AC_SUBST(INSTALL) +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared], [build shared library])], + [BUILD_SHARED=$enableval], + [BUILD_SHARED=yes]) + +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static], [build static library])], + [BUILD_STATIC=$enableval], + [BUILD_STATIC=yes]) + +AC_SUBST(BUILD_SHARED) +AC_SUBST(BUILD_STATIC) + # _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: # http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug) diff --git a/libmpdec/Makefile.in b/libmpdec/Makefile.in index d9619a3..985c73c 100644 --- a/libmpdec/Makefile.in +++ b/libmpdec/Makefile.in @@ -7,6 +7,8 @@ LIBSTATIC = @LIBSTATIC@ LIBSONAME = @LIBSONAME@ LIBSHARED = @LIBSHARED@ +BUILD_SHARED = @BUILD_SHARED@ +BUILD_STATIC = @BUILD_STATIC@ CC = @CC@ LD = @LD@ @@ -32,8 +34,15 @@ ifeq ($(MAKECMDGOALS), profile_use) MPD_LDFLAGS += $(MPD_PUSE) endif +ifeq ($(BUILD_SHARED),yes) +TARGETS += $(LIBSHARED) +endif + +ifeq ($(BUILD_STATIC),yes) +TARGETS += $(LIBSTATIC) +endif -default: $(LIBSTATIC) $(LIBSHARED) +default: $(TARGETS) OBJS := basearith.o context.o constants.o convolute.o crt.o mpdecimal.o \ diff --git a/libmpdec/Makefile.in b/libmpdec/Makefile.in index d9619a3..985c73c 100644 --- a/libmpdec++/Makefile.in +++ b/libmpdec++/Makefile.in @@ -13,6 +13,8 @@ LIBSTATIC_CXX = @LIBSTATIC_CXX@ LIBNAME_CXX = @LIBNAME_CXX@ LIBSONAME_CXX = @LIBSONAME_CXX@ LIBSHARED_CXX = @LIBSHARED_CXX@ +BUILD_SHARED = @BUILD_SHARED@ +BUILD_STATIC = @BUILD_STATIC@ CXX = @CXX@ LDXX = @LDXX@ @@ -39,8 +41,15 @@ ifeq ($(MAKECMDGOALS), profile_use) MPD_LDXXFLAGS += $(MPD_PUSE) endif +ifeq ($(BUILD_SHARED),yes) +TARGETS += $(LIBSHARED_CXX) +endif + +ifeq ($(BUILD_STATIC),yes) +TARGETS += $(LIBSTATIC_CXX) +endif -default: $(LIBSTATIC_CXX) $(LIBSHARED_CXX) +default: $(TARGETS) OBJS := decimal.o -- 2.1.0