#!/usr/bin/make -f # -*- makefile -*- # debian/rules file for the Debian/GNU Linux gsl package # Copyright (C) 1999 - 2017 Dirk Eddelbuettel source := $(shell head -1 debian/changelog | awk '{print $$1}') sonum := 23 #libpack := libgsl$(sonum)ldbl libpack := libgsl$(sonum) libcblas := libgslcblas0 #devpack := $(libpack)-dev #devpack := libgsl$(sonum)-dev #dbgpack := libgsl$(sonum)-dbg devpack := libgsl-dev dbgpack := libgsl-dbg binpack := $(source)-bin #profpack := libgsl$(sonum)-prof profpack := libgsl-prof #docpack := $(source)-doc-pdf #debtmp := $(CURDIR)/debian/$(libpack) debtmp := $(CURDIR)/debian/tmp #debdoc := $(CURDIR)/debian/$(docpack) debprof := $(CURDIR)/debian/$(profpack) arch := $(shell dpkg-architecture -qDEB_HOST_ARCH) #export DH_VERBOSE=1 ## needed for texi2pdf / tetex as document has larger-than-normal indices export pool_size=250000 export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) # FOR AUTOCONF 2.52 AND NEWER ONLY CONFFLAGS = ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) CONFFLAGS += --build $(DEB_HOST_GNU_TYPE) else CONFFLAGS += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) endif export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEBUGFLAGS=-g ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) DEBUGFLAGS += -O0 else DEBUGFLAGS += -O3 ifeq ($(arch),m68k) DEBUGFLAGS += -O0 endif endif # edd 12 Sep 2007 alpha fails with -O3 ifeq ($(arch),alpha) DEBUGFLAGS += -O2 endif # edd 18 Nov 2006: add -fexceptions, but don't use -O3 as # 'make check' as gcc hangs in cblas/ after test_ger.c # edd 05 Jul 2014: add dpkg-buildflags call CFLAGS :=-Wall -pipe -fexceptions -D_REENTRANT $(DEBUGFLAGS) $(shell dpkg-buildflags --get CFLAGS) CFLAGSnog :=-Wall -pipe -fexceptions -D_REENTRANT $(shell dpkg-buildflags --get CFLAGS | sed -e 's/-g//') # edd 29 Sep 2005 alpha needs -mieee with gcc 4.0 ifeq ($(arch),alpha) CFLAGS += -mieee endif # edd 05 Jul 2014: add dpkg-buildflags call LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS) #setting DEB_BUILD_OPTIONS=buildprof means we build a package #consisting of static libraries (renamed to libfoo_p.a) with #profiling information in. ifneq (,$(findstring buildprof,$(DEB_BUILD_OPTIONS))) CONFIGTARGET = configure-prof-stamp INSTALLTARGET = install-prof-stamp BINARYTARGET = binary-prof CFLAGS += -pg export DH_OPTIONS =-N$(libpack) -N$(libcblas) -N$(devpack) -N$(binpack) -N$(dbgpack) -p$(profpack) else CONFIGTARGET = configure-stamp INSTALLTARGET = install-stamp BINARYTARGET = binary-arch binary-indep export DH_OPTIONS =-N$(profpack) endif upstream: get-orig-source get-orig-source: #lynx ftp://sources.redhat.com/pub/gsl #lynx http://mirrors.rcn.net/pub/sourceware/gsl lynx http://www.network-theory.co.uk/download/gsl configure: $(CONFIGTARGET) configure-stamp: dh_testdir dh_testdir rm -f config.cache #[ -d doc ] || mkdir doc #cp -vax debian/Makefile.in.doc doc/Makefile.in AUTOMAKE=automake ACLOCAL=aclocal dh_autoreconf ./configure CFLAGS="$(CFLAGS)" \ LDFLAGS="$(LDFLAGS)" \ --prefix=/usr \ --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ --enable-shared \ --enable-static \ --with-gnu-ld \ --enable-maintainer-mode \ $(CONFFLAGS) # patch libtool re rpath (see lintian docu) sed < libtool > libtool-2 \ -e 's/^hardcode_libdir_flag_spec.*$$/hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/' \ -e '/^archive_cmds="/s/"$$/ \\$$deplibs"/' mv libtool-2 libtool chmod 755 libtool # end libtool rpath patch touch configure-stamp configure-prof-stamp: dh_testdir rm -f config.cache #[ -d doc ] || mkdir doc #cp -vax debian/Makefile.in.doc doc/Makefile.in AUTOMAKE=automake ACLOCAL=aclocal dh_autoreconf ./configure CFLAGS="$(CFLAGS)" \ --prefix=/usr \ --disable-shared \ --enable-static \ --with-gnu-ld \ $(CONFFLAGS) touch configure-prof-stamp build: build-arch build-indep build-arch: build-stamp build-indep: build-stamp build-stamp: configure-stamp dh_testdir $(MAKE) touch build-stamp build-doc: build-doc-stamp build-doc-stamp: configure-stamp dh_testdir touch build-doc-stamp deprecated-non-free-doc: # make ps files -- skip as we ship the upstream one in gsl-ref-psdoc #cd doc && $(MAKE) ps # make pdf ## edd 10 Apr 2005 added patch by Guiseppe Bonacci for #303757 cd doc && \ cp -p randist.texi randist.texi.orig && \ sed 's/^.*\\input \(rand.*\)\.tex.*$$/@end tex\n@center @image{\1}\n@tex/' \ randist.texi.orig > randist.texi && \ for i in rand-*.tex random-walk.tex ; do \ echo Converting $$i to eps; \ j=`basename $$i .tex`; \ tex "\batchmode\nopagenumbers\input $$j\bye"; \ dvips $$j; \ ps2eps -f $$j.ps; \ done && \ for i in *.eps; do \ echo Converting $$i to pdf... && epstopdf $$i ; \ done && $(MAKE) ps && ps2pdf gsl-ref.ps # edd 23 Mar 2006 'make pdf' is now inactive upstream touch build-doc-stamp test: build test-stamp test-stamp: -$(MAKE) check CFLAGS="$(CFLAGSnog)" | grep -C5 -v '^PASS:' touch test-stamp clean: dh_testdir dh_testroot [ ! -f Makefile ] || $(MAKE) distclean rm -f build-stamp install-stamp test-stamp build-doc-stamp \ configure-stamp install-doc-stamp configure-prof-stamp \ install-prof-stamp rm -rf debian/static/ -rm -f doc/*.pdf doc/*.dvi doc/*.log doc/*.ps dh_clean lib/*so* build/*.so* #dh_autoreconf_clean #rm -rf doc/ rm -rf $(debtmp) $(debprof) install: test $(INSTALLTARGET) install-stamp: $(MAKE) -f debian/rules DH_OPTIONS= install-work install-work: dh_testdir dh_testroot dh_prep dh_installdirs $(MAKE) prefix=$(debtmp)/usr \ libdir=$(debtmp)/usr/lib/$(DEB_HOST_MULTIARCH) \ infodir=$(debtmp)/usr/share/info \ includedir=$(debtmp)/usr/include \ mandir=$(debtmp)/usr/share/man install # deal with automake / install-info issue #215538 rm -vf $(debtmp)/usr/share/info/dir \ $(debtmp)/usr/share/info/dir.old # purify for DFSG compliance and delete (!!) documentation rm -rvf $(debtmp)/usr/share/info # deal with libtool leftover .la files (#245556) rm -vf $(debtmp)/usr/lib/$(DEB_HOST_MULTIARCH)/libgsl*.la # dh_installdirs -p$(binpack) usr/share/man/man1 #dh_installman -p$(binpack) debian/gsl-histogram.1 \ # debian/gsl-randist.1 # move static libs into dev-package and binaries into bin package dh_install --sourcedir=debian/tmp -p$(libpack) dh_install --sourcedir=debian/tmp -p$(libcblas) dh_install --sourcedir=debian/tmp -p$(devpack) dh_install --sourcedir=debian/tmp -p$(binpack) # lintian silencer for the 'ldbl' transition package dh_installdirs -p$(libpack) usr/share/lintian/overrides install -m0644 debian/$(libpack).overrides \ $(CURDIR)/debian/$(libpack)/usr/share/lintian/overrides/$(libpack) touch install-stamp install-prof-stamp: test-stamp dh_testdir dh_testroot dh_prep $(MAKE) prefix=$(debtmp)/usr \ libdir=$(debtmp)/usr/lib/$(DEB_HOST_MULTIARCH) \ infodir=$(debtmp)/usr/share/info \ includedir=$(debtmp)/usr/include \ mandir=$(debtmp)/usr/share/man install #rename the profiling libraries for lib in $(debtmp)/usr/lib/$(DEB_HOST_MULTIARCH)/*.a ;\ do mv "$$lib" "$${lib%%.a}_p.a"; done dh_install --sourcedir=$(debtmp) touch install-prof-stamp install-doc: install-doc-stamp install-doc-stamp: build-doc dh_testdir dh_testroot touch install-doc-stamp deprecated-non-free-doc: mkdir -p -m 0755 $(debdoc)/usr/share/doc/$(docpack) install -m 0644 doc/gsl-ref.pdf $(debdoc)/usr/share/doc/$(docpack) # This single target is used to build all the packages, all at once, or # one at a time. So keep in mind: any options passed to commands here will # affect _all_ packages. Anything you want to only affect one package # should be put in another target, such as the install target. binary-common: build test install #dh_testversion 2.0 dh_testdir dh_testroot #dh_installdebconf dh_link dh_installdocs #dh_installexamples #dh_installmenu #dh_installemacsen #dh_installpam #dh_installinit #dh_installcron #dh_installinfo -p$(devpack) #dh_undocumented -p$(binpack) gsl-histogram.1 gsl-randist.1 dh_installchangelogs ChangeLog dh_compress dh_fixperms # dh_strip -N$(devpack) dh_strip -X_p.a --dbg-package=$(dbgpack) #dh_suidregister dh_makeshlibs dh_installdeb #dh_perl dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb # Build architecture independant packages using the common target. binary-indep: build-doc install-doc $(MAKE) -f debian/rules DH_OPTIONS="-i -N$(profpack)" binary-common # Build architecture dependant packages using the common target. binary-arch: build install $(MAKE) -f debian/rules DH_OPTIONS="-a -N$(profpack)" binary-common binary-prof: binary-common # Any other binary targets build just one binary package at a time. #binary-%: build install # make -f debian/rules binary-common DH_OPTIONS=-p$* binary: $(BINARYTARGET) .PHONY: build build-doc clean binary-indep binary-arch binary install install-doc