#!/usr/bin/make -f

ifeq ($(findstring parallel=,$(DEB_BUILD_OPTIONS)),)
	export DEB_BUILD_OPTIONS+=parallel=$(shell getconf _NPROCESSORS_ONLN)
endif
$(info DEB_BUILD_OPTIONS:$(origin DEB_BUILD_OPTIONS)=$(DEB_BUILD_OPTIONS))

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	test_makeflags = -j$(NUMJOBS)
endif

cflags := $(shell dpkg-buildflags --get CFLAGS)
cxxflags := $(shell dpkg-buildflags --get CXXFLAGS)
fflags := $(shell dpkg-buildflags --get FFLAGS)
ldflags := $(shell dpkg-buildflags --get LDFLAGS)
ldflags += -Wl,--as-needed

ifeq ($(shell dpkg --print-architecture),armel)
    cflags := $(subst -O2,-O1,$(cflags))
    cxxflags := $(subst -O2,-O1,$(cxxflags))
    fflags := $(subst -O2,-O1,$(fflags))
endif
ifeq ($(shell dpkg --print-architecture),armhf)
    cflags := $(subst -O2,-O1,$(cflags))
    cxxflags := $(subst -O2,-O1,$(cxxflags))
    fflags := $(subst -O2,-O1,$(fflags))
endif
ifneq (,$(findstring $(shell dpkg-architecture -qDEB_HOST_ARCH), i386 kfreebsd-i386 hurd-i386))
    cflags += -fno-cse-follow-jumps
endif
ifneq (,$(findstring $(shell dpkg-architecture -qDEB_HOST_ARCH), i386 amd64 ia64))
    with_tbb := -DUSE_TBB:BOOL=ON
else
    with_tbb := -DUSE_TBB:BOOL=OFF
endif

# On those architectures, all tests pass with 1.0-3
arches_with_validated_tests := i386 amd64 kfreebsd-i386 kfreebsd-amd64
# Should be fixed after applying debian/patches/test-output.patch:
#  alpha armel armhf ia64 powerpc ppc64
# Failed tests need investigations; several failures may get fixed by fix-bigendian.patch
#  mips sparc
ifeq (,$(findstring $(shell dpkg-architecture -qDEB_HOST_ARCH), $(arches_with_validated_tests)))
    disable_runtime_tests := || true
endif

# Explicitly set builddir directory
builddir := obj-$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)

debRlib := $(CURDIR)/debian/tmp/usr/lib/R/site-library
export R_LIBS=$(debRlib)
PYVER = $(shell pyversions -dv)

%:
	dh $@ --buildsystem=cmake --builddirectory=$(builddir) --with python2 --with quilt --parallel

debian/tmp/usr/lib/R/site-library/rotRPackage:
	-mkdir -p $(debRlib)
	R CMD INSTALL --library=$(debRlib) utils/rotRPackage_1.4.4.tar.gz

override_dh_auto_configure: debian/tmp/usr/lib/R/site-library/rotRPackage
	dh_auto_configure -- \
            $(with_tbb) \
            -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++-4.6 \
            -DCMAKE_Fortran_COMPILER:FILEPATH=/usr/bin/gfortran-4.6 \
            -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc-4.6 \
            -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
            -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING='$(cflags)' \
            -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING='$(cxxflags)' \
            -DCMAKE_Fortran_FLAGS_RELWITHDEBINFO:STRING='$(fflags)' \
            -DCMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING='$(ldflags)' \
            -DCMAKE_INSTALL_PREFIX:PATH=/usr \
            -DOPENTURNS_LIBRARY_PATH:PATH=lib \
            -DOPENTURNS_SYSCONFIG_PATH:PATH=/etc/openturns-1.0 \
            -DOPENTURNS_WRAPPER_PATH:PATH=lib/openturns-1.0/wrappers \
            -DOPENTURNS_SYSTEM_INSTALL:BOOL=ON \
            -DINSTALL_DESTDIR:PATH=$(CURDIR)/debian/tmp \
            -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python \
            -DPYTHON_INCLUDE_DIR:PATH=/usr/include/python$(PYVER) \
            -DPYTHON_LIBRARY:PATH=/usr/lib/python$(PYVERS)/config/libpython$(PYVER).so

ifeq ($(shell dpkg --print-architecture),mipsel)
override_dh_auto_build:
	$(MAKE) $(test_makeflags) -C $(builddir)/lib
	$(MAKE) -j1 -C $(builddir)/python
	$(MAKE) $(test_makeflags) -C $(builddir)
endif

override_dh_auto_install: debian/tmp/usr/lib/R/site-library/rotRPackage
	dh_auto_install
	-mkdir -p debian/tmp/usr/share/openturns/m4
	cp lib/m4/*.m4 debian/tmp/usr/share/openturns/m4
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	CTEST_OUTPUT_ON_FAILURE=1 $(MAKE) $(test_makeflags) -C $(builddir) installcheck $(disable_runtime_tests)
endif
	#  Fix script permissions
	chmod a+x debian/tmp/usr/share/openturns/WrapperTemplates/wrapper_*/customize debian/tmp/usr/share/openturns/WrapperTemplates/wrapper_*/bootstrap

override_dh_makeshlibs:
	dh_makeshlibs -Xpyshared

override_dh_strip:
	dh_strip -plibopenturns0.1 --dbg-package=libopenturns-dbg
	dh_strip

override_dh_python2:
	dh_python2 --no-guessing-versions

override_dh_compress:
	dh_compress -X.pdf -X.svn -X.py

override_dh_auto_test:
	# Call 'make check' explicitly, 'make test' does not build binary tests
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	CTEST_OUTPUT_ON_FAILURE=1 $(MAKE) $(test_makeflags) -C $(builddir) check $(disable_runtime_tests)
endif

override_dh_auto_clean:
	dh_auto_clean
	-rm -f python/test/PyNMF.pyc python/test/PyNMF.pyo

get-orig-source:
	uscan --force-download --verbose
	mv ../openturn*.tar.[gzbz2]* ../tarballs
