changeset 5748:399c7b225e13

libbiosig: Update build rule (patch #10058) * src/libbiosig.mk: Overhaul build rule. * src/libbiosig-1-mingw-install.patch: Add patch for Makefile to allow installation for mingw targets. * dist-files.mk: Add new file to build system
author Markus Mützel <markus.muetzel@gmx.de>
date Thu, 22 Apr 2021 18:57:15 +0200
parents 52da5d311d13
children 3960e6022e88
files dist-files.mk src/libbiosig-1-mingw-install.patch src/libbiosig.mk
diffstat 3 files changed, 83 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Thu Apr 22 18:47:16 2021 +0200
+++ b/dist-files.mk	Thu Apr 22 18:57:15 2021 +0200
@@ -225,6 +225,7 @@
   libass-test.c \
   libass.mk \
   libb64.mk \
+  libbiosig-1-mingw-install.patch \
   libbiosig.mk \
   libcdio.mk \
   libcroco.mk \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/libbiosig-1-mingw-install.patch	Thu Apr 22 18:57:15 2021 +0200
@@ -0,0 +1,48 @@
+diff --git "a/biosig4c++/Makefile.in" "b/biosig4c++/Makefile.in"
+index c05e4d1..5da0565 100644
+--- "a/biosig4c++/Makefile.in"
++++ "b/biosig4c++/Makefile.in"	
+@@ -139,6 +139,7 @@ endif
+ SONAMEVERSION ?= 3
+ 
+ ### TODO: DLEXT does not work correctly on MXE/MINGW
++DLDIR = $(libdir)
+ ifneq (,$(findstring Darwin, $(shell uname)))
+ 	## Homebrew:
+ 	##	brew install gawk
+@@ -183,11 +184,17 @@ else ifneq (,$(findstring MINGW, $(shell uname)))
+ 	LDLIBS  += -liconv -lws2_32
+ 	LDFLAGS += -Wl,-subsystem,windows
+ 	LDFLAGS += -L$(prefix)/lib/
++  DLDIR = $(bindir)
+ 
+ else
+ 	TAR	       = tar
+ 	LD	       = $(CXX)
+-	FULLDLEXT      = .so.${SONAMEVERSION}
++  ifneq (,$(findstring mingw,$(TARGET)))
++    FULLDLEXT      = ${SONAMEVERSION}.dll
++    DLDIR = $(bindir)
++  else
++    FULLDLEXT      = .so.${SONAMEVERSION}
++  endif
+ 	SONAME_PREFIX  = -Wl,-soname=
+ endif
+ 
+@@ -937,12 +944,11 @@ install_libbiosig.a: libbiosig.a libphysicalunits.a libbiosig.pc
+ 	install libphysicalunits.a 	$(DESTDIR)$(libdir)
+ 	install libbiosig.pc		$(DESTDIR)$(libdir)/pkgconfig/
+ 
+-install_libbiosig.$(DLEXT): libbiosig$(FULLDLEXT) libbiosig.$(DLEXT)
+-	install -d 			$(DESTDIR)$(libdir)/pkgconfig/
+-	install libbiosig$(FULLDLEXT)  $(DESTDIR)$(libdir)
+-	(cd $(DESTDIR)$(libdir) && ln -sf libbiosig$(FULLDLEXT) libbiosig${SONAMEVERSION}.$(DLEXT))
++install_libbiosig.$(DLEXT): libbiosig.$(DLEXT)
++	install -d 			$(DESTDIR)$(DLDIR)/pkgconfig/
++	install libbiosig.$(DLEXT)  $(DESTDIR)$(DLDIR)
+ ifneq (Darwin,$(shell uname))
+-	cd $(DESTDIR)$(libdir) && ln -sf libbiosig$(FULLDLEXT) libbiosig.$(DLEXT)
++	cd $(DESTDIR)$(DLDIR) && ln -sf libbiosig.$(DLEXT) libbiosig$(FULLDLEXT)
+ endif
+ 	-ldconfig
+ 
--- a/src/libbiosig.mk	Thu Apr 22 18:47:16 2021 +0200
+++ b/src/libbiosig.mk	Thu Apr 22 18:57:15 2021 +0200
@@ -17,52 +17,44 @@
         head -1
 endef
 
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+  $(PKG)_MAKE_FLAGS := TARGET=$(TARGET) CROSS=$(TARGET)
+  $(PKG)_AUTOCONF_CROSS_FLAGS := \
+    ac_cv_func_malloc_0_nonnull=yes \
+    ac_cv_func_realloc_0_nonnull=yes
+else
+  $(PKG)_MAKE_FLAGS := LDLIBS='-liconv -lm -ltinyxml'
+endif
+
 
 define $(PKG)_BUILD
-    cd '$(1)' && ./configure \
-        ac_cv_func_malloc_0_nonnull=yes \
-        ac_cv_func_realloc_0_nonnull=yes \
-        --prefix=$(HOST_PREFIX) \
-        $(HOST_AND_BUILD_CONFIGURE_OPTIONS)
-
-    # make sure NDEBUG is defined
-    $(SED) -i '/NDEBUG/ s|#||g' '$(1)'/biosig4c++/Makefile
-
-    TARGET=$(TARGET) CROSS=$(TARGET) $(MAKE) -C '$(1)' lib tools
-
-    # build mexbiosig package (does not install package)
-    # TARGET='$(TARGET)' $(MAKE) -C '$(1)'/biosig4c++ mexbiosig
-
-    # install library files
-    $(INSTALL) -m644 '$(1)/biosig4c++/biosig.h'             '$(HOST_INCDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/biosig2.h'            '$(HOST_INCDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/gdftime.h'            '$(HOST_INCDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/biosig-dev.h'         '$(HOST_INCDIR)/'
+  cd '$(1)' && ./configure \
+    $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
+    $($(PKG)_AUTOCONF_CROSS_FLAGS) \
+    --prefix=$(HOST_PREFIX) \
+    CC='$(MXE_CC)' \
+    CXX='$(MXE_CXX)' \
+    RANLIB='$(MXE_RANLIB)' \
+    AR='$(MXE_AR)' \
+    ARFLAGS=rcs \
+    LIBTOOL=$(LIBTOOL) \
+    PKG_CONFIG='$(MXE_PKG_CONFIG)' \
+    PKG_CONFIG_PATH='$(HOST_LIBDIR)/pkgconfig'
 
-    $(INSTALL) -m644 '$(1)/biosig4c++/libbiosig.a'          '$(HOST_LIBDIR)/'
-    #$(INSTALL) -m644 '$(1)/biosig4c++/libbiosig.def'        '$(HOST_LIBDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libbiosig.dll.a'      '$(HOST_LIBDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libbiosig.dll'        '$(HOST_BINDIR)/'
+  # make sure NDEBUG is defined
+  $(SED) -i '/NDEBUG/ s|#||g' '$(1)'/biosig4c++/Makefile
 
-    $(INSTALL) -m644 '$(1)/biosig4c++/libgdf.a'             '$(HOST_LIBDIR)/'
-    #$(INSTALL) -m644 '$(1)/biosig4c++/libgdf.def'           '$(HOST_LIBDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libgdf.dll.a'         '$(HOST_LIBDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libgdf.dll'           '$(HOST_BINDIR)/'
-
+  $($(PKG)_MAKE_FLAGS) $(MAKE) -C '$(1)' lib tools
+  $($(PKG)_MAKE_FLAGS) $(MAKE) -C '$(1)/biosig4c++' install DESTDIR='$(3)'
 
-    $(INSTALL) -m644 '$(1)/biosig4c++/physicalunits.h'      '$(HOST_INCDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libphysicalunits.a'   '$(HOST_LIBDIR)/'
-    #$(INSTALL) -m644 '$(1)/biosig4c++/libphysicalunits.def' '$(HOST_LIBDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libphysicalunits.dll.a' '$(HOST_LIBDIR)/'
-    $(INSTALL) -m644 '$(1)/biosig4c++/libphysicalunits.dll' '$(HOST_BINDIR)/'
-
-    if [ "$(MXE_WINDOWS_BUILD)" == "yes" ]; then \
-        $(SED) -i '/^Libs:/ s/$$/ -liconv -lws2_32/' $(1)/biosig4c++/libbiosig.pc; \
-    fi
-    $(INSTALL) -m644 '$(1)/biosig4c++/libbiosig.pc'         '$(HOST_LIBDIR)/pkgconfig/'
-
-    # install biosig4matlab
-    # $(INSTALL) -d $(HOST_PREFIX)/share/biosig/matlab
-    # cp -r '$(1)'/biosig4matlab/* $(HOST_PREFIX)/share/biosig/matlab/
+  # FIXME: These files aren't installed by the Makefile rule.
+  # Do we really need them?
+  if [ "x$(MXE_SYSTEM)" == "xmingw" ]; then \
+    $(INSTALL) '$(1)/biosig4c++/libbiosig.dll.a' '$(3)$(HOST_LIBDIR)'; \
+    $(INSTALL) '$(1)/biosig4c++/libgdf.dll' '$(3)$(HOST_BINDIR)'; \
+    $(INSTALL) '$(1)/biosig4c++/libgdf.dll.a' '$(3)$(HOST_LIBDIR)'; \
+    $(INSTALL) '$(1)/biosig4c++/libphysicalunits.dll' '$(3)$(HOST_BINDIR)'; \
+    $(INSTALL) '$(1)/biosig4c++/libphysicalunits.dll.a' '$(3)$(HOST_LIBDIR)'; \
+  fi
 endef