spot/debian/rules
Alexandre Duret-Lutz 5cb94a1a3f Merge the core and python tests in the tests/ directory
* tests/: Rename as...
* tests/core/: ... this.
* python/tests/: Rename as...
* tests/python/: ... this.
* python/tests/run.in: Move as...
* tests/run.in: This, and adjust.
* tests/Makefile.am: Adjust to run both core and python tests.
* configure.ac, README, debian/python3-spot.examples, debian/rules,
doc/org/tut.org, python/Makefile.am, spot/ltsmin/Makefile.am,
spot/ltsmin/kripke.test, spot/sanity/ipynb.test: Adjust.
2016-01-04 16:02:30 +01:00

91 lines
3.3 KiB
Makefile
Executable file

#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
DH_VERBOSE = 1
# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
# main packaging script based on dh7 syntax
%:
dh $@ --parallel --with=python3
# Find the LTO plugin, which we need to pass to ar, nm, and ranlib.
LTOPLUG := $(shell gcc -v 2>&1 | \
sed -n 's:COLLECT_LTO_WRAPPER=\(/.*/\)[^/]*:\1:p')liblto_plugin.so
# ARFLAGS is for Automake
# AR_FLAGS is for Libtool
LTOSETUP = \
LDFLAGS='-fuse-linker-plugin' \
NM='nm --plugin $(LTOPLUG)' \
ARFLAGS='cru --plugin $(LTOPLUG)' \
AR_FLAGS='cru --plugin $(LTOPLUG)' \
RANLIB='ranlib --plugin $(LTOPLUG)'
PRO1SETUP = \
CFLAGS='-flto -fprofile-generate' \
CXXFLAGS='-flto -fprofile-generate'
PRO2SETUP = \
CFLAGS='-flto -fprofile-use' \
CXXFLAGS='-flto -fprofile-use'
PYDEFAULT=$(shell py3versions --default)
PYOTHERS=$(filter-out $(PYDEFAULT), $(shell py3versions --supported))
# There seem to be a problem with unwinding of exception handling when
# the binaries are compiled with -flto. For instance in autfilt,
# argp_parse() calls the locally defined parse_opt() that calls
# remove_ap::add_ap() (in libspot). The latter may throw an
# exception, which should be caught in main(). However If autfilt is
# compiled with -flto, the exception never traverses argp. Moving
# the try/catch block inside parse_opt() also fixes this praticular
# problem, but who knows about other exceptions? So as a workaround,
# we simply disable -flto in bin/.
FLTOWORKAROUND = perl -pi -e s/-flto// bin/Makefile
# We want to build Spot twice: once to get profile data, and a second
# time to use it.
override_dh_auto_configure:
dh_auto_configure -- $(PRO1SETUP) $(LTOSETUP) \
--disable-devel --enable-optimizations \
--disable-static PYTHON=/usr/bin/$(PYDEFAULT)
$(FLTOWORKAROUND)
dh_auto_build
dh_auto_test
make clean
dh_auto_configure -- $(PRO2SETUP) $(LTOSETUP) \
--disable-devel --enable-optimizations \
--disable-static PYTHON=/usr/bin/$(PYDEFAULT)
$(FLTOWORKAROUND)
override_dh_auto_install: fix-mathjax
dh_auto_install --destdir=$(CURDIR)/debian/tmp
# Reconfigure for every other supported Python3 version,
# and build/install only the python code.
for pyv in $(PYOTHERS); do \
dh_auto_configure -- $(LTOSETUP) \
--disable-devel --enable-optimizations \
--disable-static PYTHON=/usr/bin/$$pyv; \
dh_auto_build -- -C python clean; \
dh_auto_build -- -C python all; \
dh_auto_install -- -C python; \
done
find debian/tmp -name '*.la' -exec rm -rv {} ';'
override_dh_python3:
dh_python3 -p python3-spot
override_dh_auto_build:
dh_auto_build
$(MAKE) -C tests/python nb-html
fix-mathjax:
perl -pi -e 's|http://orgmode.org/mathjax/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|' doc/userdoc/*.html
perl -pi -e 's|https://cdn.mathjax.org/mathjax/latest/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|' tests/python/*.html