#!/usr/bin/make -f # Enable hardening build flags, except: # pie: causes build failure export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH) INCDIR:=/usr/include UPSTREAM_VERSION = $(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\+.*//') SO_VERSION:=18 PNETCDF_ARCHS:= amd64 arm64 mips64el ppc64el s390x alpha ia64 sparc64 kfreebsd-amd64 ppc64 riscv64 include /usr/share/mpi-default-dev/debian_defaults MPI:=$(ARCH_DEFAULT_MPI_IMPL) include /usr/share/dpkg/pkg-info.mk # Verbose test output export VERBOSE=1 export DH_VERBOSE=1 CFLAGS:= $(shell dpkg-buildflags --get CFLAGS) %: dh $@ --buildsystem=cmake CMAKE_FLAGS:= -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SKIP_RPATH:BOOL=ON \ -DENABLE_TESTS:BOOL=ON \ -DENABLE_DOXYGEN:BOOL=ON \ -DENABLE_MMAP=ON \ -DUSE_SZIP=ON override_dh_auto_configure: ifneq ($(filter $(PNETCDF_ARCHS),$(DEB_HOST_ARCH)),) dh_auto_configure --builddirectory=build-pnetcdf -- \ $(CMAKE_FLAGS) \ -DHDF5_INCLUDE_PATH=$(INCDIR)/hdf5/$(MPI) \ -DHDF5_LIBRARY_PATH=$(LIBDIR)//hdf5/$(MPI) \ -DENABLE_PNETCDF=ON \ -DPNETCDF_INCLUDE_DIR=/usr/include \ -DLIBLIB_VERSION_SCRIPT=-Wl,--version-script,$(CURDIR)/debian/netcdf-pnetcdf.ver \ -DCMAKE_C_COMPILER=mpicc \ -DNETCDF_LIB_NAME=netcdf_pnetcdf endif dh_auto_configure --builddirectory=build-mpi -- \ $(CMAKE_FLAGS) \ -DENABLE_PARALLEL_TESTS:BOOL=OFF \ -DUSE_HDF5=ON \ -DENABLE_PARALLEL4=ON \ -DHDF5_INCLUDE_PATH=$(INCDIR)/hdf5/$(MPI) \ -DHDF5_LIBRARY_PATH=$(LIBDIR)/hdf5/$(MPI) \ -DHDF5_C_LIBRARIES=$(LIBDIR)/hdf5/$(MPI)/libhdf5.so \ -DHDF5_HL_LIBRARIES=$(LIBDIR)/hdf5/$(MPI)/libhdf5_hl.so \ -DCMAKE_C_FLAGS="${CFLAGS} -DHDF5_PARALLEL" \ -DLIBLIB_VERSION_SCRIPT=-Wl,--version-script,$(CURDIR)/debian/netcdf-mpi.ver \ -DCMAKE_C_COMPILER=mpicc \ -DNETCDF_LIB_NAME=netcdf_mpi override_dh_auto_build: ifneq ($(filter $(PNETCDF_ARCHS),$(DEB_HOST_ARCH)),) $(MAKE) -C build-pnetcdf endif $(MAKE) -C build-mpi override_dh_auto_clean: rm -rf build-* debian/tmp* debian/*.postinst override_dh_auto_install: $(MAKE) -C build-mpi install DESTDIR=$(CURDIR)/debian/tmp-mpi mkdir -p debian/tmp/$(LIBDIR)/netcdf/mpi/cmake debian/tmp/$(LIBDIR)/cmake debian/tmp/$(LIBDIR)/pkgconfig cp debian/tmp-mpi/$(LIBDIR)/libnetcdf.settings debian/tmp/$(LIBDIR)/netcdf/mpi/libnetcdf.settings mkdir -p debian/tmp/$(LIBDIR)/netcdf/mpi/include cp debian/tmp-mpi/usr/include/* debian/tmp/$(LIBDIR)/netcdf/mpi/include cp -a debian/tmp-mpi/$(LIBDIR)/cmake/netCDF debian/tmp/$(LIBDIR)/cmake/netCDF_mpi cp -a debian/tmp-mpi/$(LIBDIR)/libnetcdf_*.so* debian/tmp/$(LIBDIR) dh_link -p libnetcdf-mpi-dev $(LIBDIR)/cmake/netCDF_mpi $(LIBDIR)/netcdf/mpi/cmake/netCDF cp debian/tmp-mpi/$(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) debian/tmp/$(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) # sed -e 's%@MULTIARCH@%$(DEB_HOST_MULTIARCH)%g' < debian/libnetcdf-mpi-dev.postinst.in \ # > debian/libnetcdf-mpi-dev.postinst echo "prefix=$(LIBDIR)/netcdf/mpi" > debian/tmp/$(LIBDIR)/pkgconfig/netcdf-mpi.pc sed -e 's/-lnetcdf/-lnetcdf_mpi/' < debian/tmp-mpi/$(LIBDIR)/pkgconfig/netcdf.pc \ | grep -v "prefix=" \ >> debian/tmp/$(LIBDIR)/pkgconfig/netcdf-mpi.pc dh_link -p libnetcdf-mpi-dev $(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) $(LIBDIR)/netcdf/mpi/libnetcdf.so dh_link -p libnetcdf-mpi-dev $(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) $(LIBDIR)/libnetcdf_mpi.so dh_link -p libnetcdf-mpi-dev $(LIBDIR)/netcdf/mpi $(LIBDIR)/netcdf/mpi/lib dh_link -p libnetcdf-mpi-dev $(LIBDIR)/pkgconfig/netcdf-mpi.pc $(LIBDIR)/netcdf/mpi/pkgconfig/netcdf.pc ifneq ($(filter $(PNETCDF_ARCHS),$(DEB_HOST_ARCH)),) $(MAKE) -C build-pnetcdf install DESTDIR=$(CURDIR)/debian/tmp-pnetcdf mkdir -p debian/tmp/$(LIBDIR)/netcdf/pnetcdf/cmake debian/tmp/$(LIBDIR)/cmake debian/tmp/$(LIBDIR)/pkgconfig cp debian/tmp-pnetcdf/$(LIBDIR)/libnetcdf.settings debian/tmp/$(LIBDIR)/netcdf/pnetcdf/libnetcdf.settings mkdir -p debian/tmp/$(LIBDIR)/netcdf/pnetcdf/include cp debian/tmp-pnetcdf/usr/include/* debian/tmp/$(LIBDIR)/netcdf/pnetcdf/include cp -a debian/tmp-pnetcdf/$(LIBDIR)/cmake/netCDF debian/tmp/$(LIBDIR)/cmake/netCDF_pnetcdf cp -a debian/tmp-pnetcdf/$(LIBDIR)/libnetcdf_*.so* debian/tmp/$(LIBDIR) dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/cmake/netCDF_pnetcdf $(LIBDIR)/netcdf/pnetcdf/cmake/netCDF cp debian/tmp-pnetcdf/$(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) debian/tmp/$(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) # sed -e 's%@MULTIARCH@%$(DEB_HOST_MULTIARCH)%g' < debian/libnetcdf-pnetcdf-dev.postinst.in \ # > debian/libnetcdf-pnetcdf-dev.postinst echo "prefix=$(LIBDIR)/netcdf/pnetcdf" > debian/tmp/$(LIBDIR)/pkgconfig/netcdf-pnetcdf.pc sed -e 's/-lnetcdf/-lnetcdf_pnetcdf/' < debian/tmp-pnetcdf/$(LIBDIR)/pkgconfig/netcdf.pc \ | grep -v "prefix=" \ >> debian/tmp/$(LIBDIR)/pkgconfig/netcdf-pnetcdf.pc dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) $(LIBDIR)/netcdf/pnetcdf/libnetcdf.so dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) $(LIBDIR)/libnetcdf_pnetcdf.so dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/netcdf/pnetcdf $(LIBDIR)/netcdf/pnetcdf/lib dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/pkgconfig/netcdf-pnetcdf.pc $(LIBDIR)/netcdf/pnetcdf/pkgconfig/netcdf.pc endif # Strip RPATH -find $(CURDIR)/debian/tmp/usr/bin -type f -not -name nc-config -exec chrpath --delete {} \; -find $(CURDIR)/debian/tmp/usr/lib -type f -name "*.so*" -exec chrpath --delete {} \; cp include/netcdf_par.h debian/tmp/$(LIBDIR)/netcdf/mpi/include find $(CURDIR)/debian/tmp/usr/lib -type f \( -name "*.settings" -or -name "*.cmake" \) -print0 | \ xargs -0r sed -i -e 's@ [^ ]*-f\(file\|debug\)-prefix-map=[^ ]*@@g' override_dh_auto_test: ARGS="--output-on-failure" dh_auto_test --max-parallel=1 || echo "Ignoring test failures" # Disable tests for pnetcdf. Multiple failures in nc_test where char conversions give: # test_put.c: NetCDF: Numeric conversion not representablea # This for 1.7.0pre1 # LD_LIBRARY_PATH=$(CURDIR)/build-pnetcdf/liblib $(MAKE) -C build-pnetcdf test override_dh_installchangelogs: dh_installchangelogs RELEASE_NOTES.md override_dh_strip: dh_strip --dbgsym-migration='netcdf-dbg (<< 1:4.5.0-2~)' override_dh_makeshlibs: dh_makeshlibs -- -v$(UPSTREAM_VERSION)