#!/usr/bin/make -f #export DH_VERBOSE=1 include /usr/share/dpkg/architecture.mk CFLAGS := $(shell env DEB_CFLAGS_MAINT_APPEND=-pipe dpkg-buildflags --get CFLAGS; dpkg-buildflags --get CPPFLAGS) CXXFLAGS := $(shell env DEB_CXXFLAGS_MAINT_APPEND=-pipe dpkg-buildflags --get CXXFLAGS; dpkg-buildflags --get CPPFLAGS) LDFLAGS := $(shell env DEB_LDFLAGS_MAINT_APPEND='-Wl,--as-needed -Wl,-z,now' dpkg-buildflags --get LDFLAGS) # support for Ubuntu development ifeq ($(DEB_HOST_ARCH),ppc64el) CFLAGS := $(subst -O3,-O2,$(CFLAGS)) CXXFLAGS := $(subst -O3,-O2,$(CXXFLAGS)) endif # fixing floating-point rounding errors on i386 CPUs, see #820429 ifneq (,$(filter $(DEB_HOST_ARCH_CPU), i386)) CFLAGS += -ffloat-store CXXFLAGS += -ffloat-store endif # build with Boost.Thread on armel, see #814606 ifeq ($(DEB_HOST_ARCH),armel) CMAKE_EXTRAS := -DWITH_BOOST_THREAD=1 CXXFLAGS += -std=c++11 # not set by VigraDetectThreading.cmake endif ifneq (,$(filter $(DEB_BUILD_ARCH),mips mipsel)) CXXFLAGS += --param ggc-min-expand=20 endif ifneq ($(wildcard /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial/libhdf5.so),) export CMAKE_INCLUDE_PATH=/usr/include/hdf5/serial export CMAKE_LIBRARY_PATH=/usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial endif cmake_options = \ -DCMAKE_INSTALL_PREFIX=/usr \ -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)/" \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DWITH_OPENEXR=ON \ -DCMAKE_C_FLAGS_RELEASE="$(CFLAGS)" \ -DCMAKE_CXX_FLAGS_RELEASE="$(CXXFLAGS)" \ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$(LDFLAGS)" \ $(CMAKE_EXTRAS) cmake_python_options = \ -DPYTHON_EXECUTABLE=/usr/bin/python$(1) \ -DPYTHON_INCLUDE_DIR=/usr/include/python$(1)/ \ -DPYTHON_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(1).so \ -DBoost_PYTHON_LIBRARY_RELEASE=/usr/lib/$(DEB_HOST_MULTIARCH)/libboost_python-py$(subst .,,$(1)).so # build and build-* targets # ========================= .PHONY: build build: build-arch build-indep .PHONY: build-indep build-indep: .PHONY: build-arch build-arch: dh_testdir @echo DEBUGMEMSIZE ; if which free ; then free ; fi $(MAKE) -f debian/rules obj/CMakeCache.txt $(MAKE) -f debian/rules $(patsubst %,obj.%/CMakeCache.txt,$(shell pyversions -r)) $(MAKE) -f debian/rules obj/build-stamp $(MAKE) -f debian/rules $(patsubst %,obj.%/build-stamp,$(shell pyversions -r)) ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),) $(MAKE) -f debian/rules obj/test-stamp $(MAKE) -f debian/rules $(patsubst %,obj.%/test-stamp,$(shell pyversions -r)) endif obj/CMakeCache.txt: mkdir -p $(dir $(@)) cd $(dir $(@)) && cmake .. $(cmake_options) -DPYTHON_EXECUTABLE=/usr/bin/python -DWITH_VIGRANUMPY=0 obj.python%/CMakeCache.txt: mkdir -p $(dir $(@)) cd $(dir $(@)) && CXXFLAGS=-fno-strict-aliasing cmake .. $(cmake_options) $(call cmake_python_options,$(*)) find $(dir $(@))/vigranumpy/ -name 'link.txt' -exec sed -i \ -e 's/ -lpython[0-9.]\+ / /g' -e '/-Wl,-soname,vigranumpycore/b' -e 's/ -Wl,-soname,[^ ]\+ / /' {} + obj/build-stamp: obj/CMakeCache.txt $(MAKE) -C $(dir $(@)) touch $(@) obj.python%/build-stamp: obj.python%/CMakeCache.txt obj/build-stamp cd obj && find . -name '*.o' -o -name '*.so' -o -name '*.so.*' | xargs cp -v --preserve=links --parents -t ../$(dir $(@)) $(MAKE) -C $(dir $(@)) touch $(@) obj/test-stamp: obj/build-stamp sed -i 's/exit\ 1/exit\ 0/' obj/test/multiarray/run_test_multiarray_chunked.sh #812852 sed -i 's/-O2/-O0/' obj/test/math/CMakeFiles/test_math.dir/flags.make #817840 sed -i 's/-O2/-O1/' obj/test/blockwisealgorithms/CMakeFiles/test_blockwiselabeling.dir/flags.make # https://github.com/ukoethe/vigra/issues/409 sed -i 's/-O2/-O1/' obj/test/blockwisealgorithms/CMakeFiles/test_blockwisewatersheds.dir/flags.make # https://github.com/ukoethe/vigra/issues/409, #853513 sed -i 's/-O2/-O1/' obj/test/gridgraph/CMakeFiles/test_gridgraph.dir/flags.make #871556 sed -i 's/-O2/-O0/' obj/test/multiarray/CMakeFiles/test_multiarray.dir/flags.make #872037 $(MAKE) check -C $(dir $(@)) touch $(@) obj.python%/test-stamp:: obj.python%/build-stamp $(MAKE) vigranumpytest -C $(dir $(@)) touch $(@) # binary and binary-* targets # =========================== .PHONY: binary binary: binary-arch binary-indep .PHONY: binary-arch binary-arch: build-arch dh_testdir dh_testroot $(MAKE) -f debian/rules obj/install-stamp $(MAKE) -f debian/rules $(patsubst %,obj.%/install-stamp,$(shell pyversions -r)) dh_install -a dh_installdocs -a sh debian/convert-changelog.sh < docsrc/credits_changelog.dxx > doc/changelog dh_installchangelogs -a dh_installexamples -a dh_lintian -a dh_python2 -a dh_link -a dh_compress -a dh_fixperms -a dh_strip -a dh_makeshlibs -a -V 'libvigraimpex6 (>= 1.10.0+git20160211.167be93)' dh_shlibdeps -a dh_numpy -p python-vigra dh_installdeb -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a %/install-stamp: %/build-stamp $(MAKE) -C $(dir $(@)) install DESTDIR=$(CURDIR)/debian/tmp/ touch $(@) .PHONY: binary-indep binary-indep: build-indep dh_testdir dh_testroot $(MAKE) -f debian/rules doc/vigra/build-stamp $(MAKE) -f debian/rules doc/vigranumpy/build-stamp dh_installdocs -i -XLICENSE.txt -Xobjects.inv -Xdoctrees -X.buildinfo -Xbuild-stamp cd debian/libvigraimpex-doc/usr/share/doc/libvigraimpex-doc/ && rm -rf html && mv vigra html && rm -f html/jquery.js && \ sed -r -i -e 's!()!\1/usr/share/doc/libvigraimpex-doc/copyright\2!g' html/index.html cd debian/python-vigra-doc/usr/share/doc/python-vigra-doc/ && rm -rf html && mv vigranumpy html dh_installchangelogs -i dh_lintian -i dh_link -i dh_sphinxdoc -p python-vigra-doc dh_compress -i -X.js -X_sources dh_fixperms -i dh_installdeb -i dh_gencontrol -i dh_md5sums -i dh_builddeb -i doc/vigra/build-stamp: obj/build-stamp $(MAKE) doc_cpp -C obj/ touch $(@) doc/vigranumpy/build-stamp: obj.$(shell pyversions -d)/build-stamp doc/vigra/build-stamp ln -sf $(CURDIR)/vigranumpy/docsrc/c_api_replaces.txt obj.$(shell pyversions -d)/vigranumpy/docsrc/ $(MAKE) doc_python -C obj.$(shell pyversions -d)/ touch $(@) # clean target # ============ .PHONY: clean clean: dh_testdir dh_clean rm -rf obj*/ rm -rf doc/ .NOTPARALLEL: