changeset 5432:71761e1b5e83

* src/hdf5.mk: Move from autotools to cmake also for native builds.
author Markus Mützel <markus.muetzel@gmx.de>
date Fri, 29 May 2020 08:47:31 +0200
parents 440ce30431c2
children d35dea88cc4c
files src/hdf5.mk
diffstat 1 files changed, 62 insertions(+), 78 deletions(-) [+]
line wrap: on
line diff
--- a/src/hdf5.mk	Wed May 27 21:37:40 2020 +0200
+++ b/src/hdf5.mk	Fri May 29 08:47:31 2020 +0200
@@ -15,69 +15,10 @@
     echo $(hdf5_VERSION)
 endef
 
-ifeq ($(MXE_NATIVE_BUILD),yes)
-  define $(PKG)_BUILD
-    # build GCC and support libraries using autotools
-    cd '$(1)' && aclocal && libtoolize && autoreconf
-    mkdir '$(1)/.build'
-    cd '$(1)/.build' && LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) '$(1)/configure' \
-        $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \
-        $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
-        $(ENABLE_SHARED_OR_STATIC) \
-        --prefix='$(HOST_PREFIX)' \
-        --disable-direct-vfd && $(CONFIGURE_POST_HOOK)
-
-    # libtool is somehow created to effectively disallow shared builds
-    $(SED) -i 's,allow_undefined_flag="unsupported",allow_undefined_flag="",g' '$(1)/.build/libtool'
-
-    $(MAKE) -C '$(1)/.build' -j '$(JOBS)' 
-    $(MAKE) -C '$(1)/.build' -j 1 install DESTDIR='$(3)'
-
-    if [ "$(ENABLE_DEP_DOCS)" == "no" ]; then \
-      rm -rf '$(3)$(HOST_PREFIX)/share/hdf5_examples'; \
-    fi
-  endef
-else
-  define $(PKG)_BUILD
-    # build rules for windows target using cmake
-
-    mkdir '$(1)/pregen'
-    case '$(TARGET)' in \
-      x86_64-w64-mingw32) \
-        cp '$(1)/src/H5Tinit.c.mingw64' '$(1)/pregen/H5Tinit.c' & \
-        cp '$(1)/src/H5lib_settings.c.mingw64' '$(1)/pregen/H5lib_settings.c' \
-      ;; \
-      i686-w64-mingw32) \
-        cp '$(1)/src/H5Tinit.c.mingw32' '$(1)/pregen/H5Tinit.c' & \
-        cp '$(1)/src/H5lib_settings.c.mingw32' '$(1)/pregen/H5lib_settings.c' \
-      ;; \
-      i686-pc-mingw32) \
-        cp '$(1)/src/H5Tinit.c.mingw32' '$(1)/pregen/H5Tinit.c' & \
-        cp '$(1)/src/H5lib_settings.c.mingw32' '$(1)/pregen/H5lib_settings.c' \
-      ;; \
-    esac
-
-    mkdir '$(1)/.build'
-
-    # platform specific settings using https://github.com/steven-varga/HDFGroup-mailinglist/tree/master/crosscompile-2020-mar-25
-    cd '$(1)/.build' && cmake .. -G "Unix Makefiles" \
-      -DCMAKE_INSTALL_PREFIX=${prefix} \
-       $($(PKG)_CMAKE_FLAGS) \
-      -DBUILD_SHARED_LIBS=$(if $(findstring yes,$(BUILD_SHARED)),ON,OFF) \
-      -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
-      -DHDF5_INSTALL_BIN_DIR='$(HOST_BINDIR)' \
-      -DHDF5_INSTALL_LIB_DIR='$(HOST_LIBDIR)' \
-      -DHDF5_INSTALL_INCLUDE_DIR='$(HOST_INCDIR)' \
-      -DHDF5_INSTALL_DATA_DIR='$(HOST_PREFIX)/share' \
-      -DHDF5_BUILD_CPP_LIB=OFF \
-      -DHDF5_BUILD_HL_LIB=ON \
-      -DHDF5_ENABLE_Z_LIB_SUPPORT=ON \
-      -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-      -DHDF5_ENABLE_SZIP_ENCODING=OFF \
-      -DBUILD_TESTING=OFF \
+ifeq ($(MXE_SYSTEM),mingw)
+  ifneq ($(MXE_NATIVE_BUILD),yes)
+    $(PKG)_CROSS_CONFIG_OPTIONS := \
       -DHDF5_USE_PREGEN=ON \
-      -DHDF5_USE_PREGEN_DIR='$(1)/pregen' \
-      $($(PKG)_CCACHE_OPTIONS) \
       -DHAVE_IOEO_EXITCODE=0 \
       -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN=1 \
       -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN__TRYRUN_OUTPUT="" \
@@ -94,21 +35,64 @@
       -DH5_PRINTF_LL_TEST_RUN=1 \
       -DH5_PRINTF_LL_TEST_RUN__TRYRUN_OUTPUT="" \
       -DTEST_LFS_WORKS_RUN=0
-
-    $(MAKE) -C '$(1)/.build' -j '$(JOBS)' 
-    $(MAKE) -C '$(1)/.build' -j 1 install DESTDIR=$(3)
-    
-    # FIXME: Change the build rule to create the shared libs with the prefix
-    mv '$(3)/$(HOST_LIBDIR)/hdf5.lib' '$(3)/$(HOST_LIBDIR)/libhdf5.lib'
-    mv '$(3)/$(HOST_LIBDIR)/hdf5_tools.lib' '$(3)/$(HOST_LIBDIR)/libhdf5_tools.lib'
-    mv '$(3)/$(HOST_LIBDIR)/hdf5_hl.lib' '$(3)/$(HOST_LIBDIR)/libhdf5_hl.lib'
-    # Remove version suffix from pkg-config files
-    mv '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5-$($(PKG)_VERSION).pc' '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5.pc'
-    mv '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5_hl-$($(PKG)_VERSION).pc' '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5_hl.pc'
-
-    if [ "$(ENABLE_DEP_DOCS)" == "no" ]; then \
-      rm -rf '$(HOST_PREFIX)/share/hdf5_examples'; \
-    fi
-  endef
+  endif
 endif
 
+define $(PKG)_BUILD
+  if test x$(MXE_SYSTEM) = xmingw; then \
+    mkdir '$(1)/pregen'; \
+    case '$(TARGET)' in \
+      x86_64-w64-mingw32) \
+        cp '$(1)/src/H5Tinit.c.mingw64' '$(1)/pregen/H5Tinit.c' & \
+        cp '$(1)/src/H5lib_settings.c.mingw64' '$(1)/pregen/H5lib_settings.c' \
+      ;; \
+      i686-w64-mingw32) \
+        cp '$(1)/src/H5Tinit.c.mingw32' '$(1)/pregen/H5Tinit.c' & \
+        cp '$(1)/src/H5lib_settings.c.mingw32' '$(1)/pregen/H5lib_settings.c' \
+      ;; \
+      i686-pc-mingw32) \
+        cp '$(1)/src/H5Tinit.c.mingw32' '$(1)/pregen/H5Tinit.c' & \
+        cp '$(1)/src/H5lib_settings.c.mingw32' '$(1)/pregen/H5lib_settings.c' \
+      ;; \
+    esac; \
+  fi
+
+  mkdir '$(1)/.build'
+
+  cd '$(1)/.build' && cmake .. -G "Unix Makefiles" \
+    -DCMAKE_INSTALL_PREFIX=${prefix} \
+    $($(PKG)_CMAKE_FLAGS) \
+    -DBUILD_SHARED_LIBS=$(if $(findstring yes,$(BUILD_SHARED)),ON,OFF) \
+    -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
+    -DHDF5_INSTALL_BIN_DIR='$(HOST_BINDIR)' \
+    -DHDF5_INSTALL_LIB_DIR='$(HOST_LIBDIR)' \
+    -DHDF5_INSTALL_INCLUDE_DIR='$(HOST_INCDIR)' \
+    -DHDF5_INSTALL_DATA_DIR='$(HOST_PREFIX)/share' \
+    -DHDF5_BUILD_CPP_LIB=OFF \
+    -DHDF5_BUILD_HL_LIB=ON \
+    -DHDF5_ENABLE_Z_LIB_SUPPORT=ON \
+    -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
+    -DHDF5_ENABLE_SZIP_ENCODING=OFF \
+    -DBUILD_TESTING=OFF \
+    $($(PKG)_CROSS_CONFIG_OPTIONS) \
+    -DHDF5_USE_PREGEN_DIR='$(1)/pregen'
+
+  $(MAKE) -C '$(1)/.build' -j '$(JOBS)' 
+  $(MAKE) -C '$(1)/.build' -j 1 install DESTDIR='$(3)'
+
+  # FIXME: Change the build rule to create the shared libs with the prefix
+  if test x$(MXE_SYSTEM) = xmingw; then \
+    mv '$(3)/$(HOST_LIBDIR)/hdf5.lib' '$(3)/$(HOST_LIBDIR)/libhdf5.lib'; \
+    mv '$(3)/$(HOST_LIBDIR)/hdf5_tools.lib' '$(3)/$(HOST_LIBDIR)/libhdf5_tools.lib'; \
+    mv '$(3)/$(HOST_LIBDIR)/hdf5_hl.lib' '$(3)/$(HOST_LIBDIR)/libhdf5_hl.lib'; \
+  fi
+  
+  # Remove version suffix from pkg-config files
+  mv '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5-$($(PKG)_VERSION).pc' '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5.pc'
+  mv '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5_hl-$($(PKG)_VERSION).pc' '$(3)/$(HOST_LIBDIR)/pkgconfig/hdf5_hl.pc'
+
+  if [ "$(ENABLE_DEP_DOCS)" == "no" ]; then \
+    rm -rf '$(3)$(HOST_PREFIX)/share/hdf5_examples'; \
+  fi
+endef
+