#!/usr/bin/make -f export DH_VERBOSE=1 # The magic debhelper rule %: dh $@ TOPDIR:=$(shell pwd) DESTDIR:=$(TOPDIR)/debian/tmp/ DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH) # For the config file. Done this way to pull in stuff from hardening, etc. CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) # LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) LDFLAGS:= FFLAGS:=$(shell dpkg-buildflags --get FFLAGS) CC ?= cc FC := gfortran VERSION := 6.4.0 ifneq ($(wildcard /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial/libhdf5.so),) CFLAGS += -I/usr/include/hdf5/serial export HDF5_LDFLAGS := -Wl,-L/usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial endif export LD_LIBRARY_PATH=$(TOPDIR)/shared:$(LIBDIR)/libfakeroot # We built it twice: first shared, to get the shared libraries (with -fpic -fPIC) # then static, for execution speed. LIBS:= \ libNGcgm.so libNGctrans.so libNGgksPDF.so libNGgksX.so libNGlluC.so libNGmisc2.so libNGncl.so \ libNGcn.so libNGff.so libNGgksPS.so libNGhlu.so libNGllu.so libNGmisc.so libNGnfp.so \ libNGc.so libNGgksCTXT.so libNGgks.so libNGictrans.so libNGmath.so libNGmp.so libNGras.so \ libfftpack5_dp.so libsphere3.1_dp.so libNGnfpfort.so # Add extra libs to ensure all shared libs link EXTRA_LIBS:= -lpng -lz -lX11 -lcairo # This done here to avoid subsitution bug on broken ymake buildsystem INCS="-I/usr/include/freetype2 -I/usr/include/gdal -I/usr/include/hdf-eos5 -I/usr/include/hdf -I/usr/include/${DEB_HOST_MULTIARCH}/hdf -I/usr/include/mpi" override_dh_auto_configure: sed -e 's,@LIBDIR@,$(LIBDIR),' \ -e 's/@PREFIX@/\/usr/' \ -e 's/@VERSION@/$(VERSION)/' \ < debian/ncarg.pc.in > ncarg.pc sed -e 's%@CC@%${CC}%' \ -e 's%@FC@%${FC}%' \ -e 's%@LD@%${CC}%' \ -e 's%@CFLAGS@%${CFLAGS}%' \ -e 's%@FFLAGS@%${FFLAGS}%' \ -e 's%@CPPFLAGS@%${CPPFLAGS}%' \ -e 's%@LDFLAGS@%${LDFLAGS}%' \ -e 's%@DESTDIR@%${DESTDIR}%' \ < debian/Site.local.shared.in > config/Site.local.shared sed -e 's%@CC@%${CC}%' \ -e 's%@FC@%${FC}%' \ -e 's%@LD@%${CC}%' \ -e 's%@CFLAGS@%${CFLAGS}%' \ -e 's%@FFLAGS@%${FFLAGS}%' \ -e 's%@CPPFLAGS@%${CPPFLAGS}%' \ -e 's%@LDFLAGS@%${LDFLAGS}%' \ -e 's%@DESTDIR@%${DESTDIR}%' \ < debian/Site.local.static.in > config/Site.local.static sed -e 's%@ARCH@%${DEB_HOST_MULTIARCH}%' \ < config/Project > config/Project.post mv config/Project.post config/Project override_dh_auto_build: # First do spherepack. (Later replace this with external spherepack) cp config/Site.local.shared config/Site.local cp debian/LINUX.DEBIAN config/LINUX ln -sf LINUX config/DEBIAN echo 'n' | ./Configure -v $(MAKE) Makefiles includes depend $(MAKE) -C external/sphere3.1_dp install INCSEARCH=${INCS} INC_SEARCH=${INCS} # Static libraries need to be built first # Add symlink for non-Linux archs cp config/Site.local.static config/Site.local echo 'n' | ./Configure -v $(MAKE) Makefiles includes depend for d in common external ngmath/src/lib ncarg2d/src/libncarg_gks ncarg2d/src/libncarg ncarg2d/src/liboptional ncarview ni/src/lib ; do \ $(MAKE) -C $$d install INCSEARCH=${INCS} INC_SEARCH=${INCS} ; done $(MAKE) install INCSEARCH=${INCS} INC_SEARCH=${INCS} # Install them safely in $(DESTDIR) as originals will be removed making shared libs mkdir -p $(DESTDIR)/staticlibs mv $(DESTDIR)/lib/*.a $(DESTDIR)/staticlibs $(MAKE) clean find . -name '*.[o]' -delete # Shared libraries next, in the right order. cp config/Site.local.shared config/Site.local echo 'n' | ./Configure -v $(MAKE) Makefiles includes depend for d in common external ngmath/src/lib ncarg2d/src/libncarg_gks ncarg2d/src/libncarg ncarg2d/src/liboptional ncarview ni/src/lib ; do \ LD_LIBRARY_PATH=$(TOPDIR)/debian/tmp/lib:$(TOPDIR)/shared $(MAKE) -C $$d install \ DEV_SYS_LIBS=$(EXTRA_LIBS) INCSEARCH=${INCS} INC_SEARCH=${INCS}; done # Then build all the rest LD_LIBRARY_PATH=$(TOPDIR)/debian/tmp/lib:$(TOPDIR)/shared $(MAKE) Everything \ DEV_SYS_LIBS=$(EXTRA_LIBS) INCSEARCH=${INCS} INC_SEARCH=${INCS} mv $(DESTDIR)/staticlibs/* $(DESTDIR)/lib override_dh_auto_install: dh_auto_install mkdir -p debian/libncarg-dev/$(LIBDIR)/ncarg # rm debian/tmp/lib/libblas_ncl.a debian/tmp/lib/liblapack_ncl.a # TODO: These may not be present on mips64el. mkdir -p debian/libncarg-data/usr/share/ncarg/nug [ -d debian/tmp/lib/ncarg/fontcaps ] && cp -a debian/tmp/lib/ncarg/fontcaps debian/libncarg-data/usr/share/ncarg || true [ -d debian/tmp/lib/ncarg/nclex/nug ] && cp -a debian/tmp/lib/ncarg/nclex/nug debian/libncarg-data/usr/share/ncarg/nug || true cp debian/tmp/lib/*.a debian/libncarg-dev/$(LIBDIR)/ncarg mkdir -p debian/libncarg0/$(LIBDIR) cp shared/*.so.1 debian/libncarg0/$(LIBDIR) mkdir -p debian/libncarg-dev/$(LIBDIR)/pkgconfig cp ncarg.pc debian/libncarg-dev/$(LIBDIR)/pkgconfig for d in $(LIBS) ; do \ dh_link -p libncarg-dev $(LIBDIR)/$$d.1 $(LIBDIR)/$$d ; done mkdir -p debian/libncarg0/$(LIBDIR) mkdir -p debian/libncarg-dev/$(LIBDIR)/ncarg for d in $(LIBS) ; do \ cp shared/$$d debian/libncarg0/$(LIBDIR)/$$d.1 ; \ dh_link -p libncarg-dev $(LIBDIR)/$$d.1 $(LIBDIR)/$$d ; done cp -a debian/tmp/lib/ncarg/robj debian/libncarg-dev/$(LIBDIR)/ncarg find debian -name '*.ksh' -exec chmod +x {} \; # Sanitise paths for bit reproducibility for f in ./debian/tmp/usr/bin/ncargcc \ ./debian/tmp/usr/bin/ncargf77 \ ./debian/tmp/usr/bin/ncargf90 \ ./debian/tmp/usr/bin/nhlcc \ ./debian/tmp/usr/bin/nhlf77 \ ./debian/tmp/usr/bin/nhlf90 \ ./debian/tmp/usr/bin/nclf77 \ ./debian/tmp/usr/bin/nclf90 ; do cat $$f | \ sed -e 's%${CURDIR}%/build/ncl-ncarg%g' \ > debian/tmpff ; \ mv debian/tmpff $$f ; \ done override_dh_auto_clean: find . -name '*.so.1' -delete find . -type l -delete find . -name '*.o' -delete rm -f ncarg.pc config/Site.local.* config/DEBIAN ifneq ($(wildcard config/LINUX.ORIG),) mv config/LINUX.ORIG config/LINUX endif