summaryrefslogtreecommitdiff
path: root/debian/rules
blob: 386611bb36d13e0394adebaa04062b66ae49fbb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)

TMPBIN:=debian/tmp/usr/bin

HERA_FLAGS:=-DHERA_BOTTLENECK_INCLUDE_DIR=/usr/include/hera/bottleneck -DHERA_WASSERSTEIN_INCLUDE_DIR=/usr/include/hera/wasserstein

PY3VERS:=$(shell py3versions -vs)
DEFAULT_PY3VER=$(shell py3versions -vd)
REMAINING_PY3VERS:=$(filter-out $(DEFAULT_PY3VER), $(PY3VERS))

DHFLAGS+=--buildsystem=cmake

# To fix #945226, we turn off parallel builds everywhere, except if
# someone explicitly wants them enabled by setting the environment
# variable ALLOW_PARALLEL.
ifeq (, $(ALLOW_PARALLEL))
	DHFLAGS+=--no-parallel
endif

# The buildds run out of memory on some architectures. On those, we
# force non-parallel building.
ifneq (, $(filter $(shell dpkg-architecture --query DEB_BUILD_ARCH),i386 mips mipsel m68k powerpcspe x32))
	export DEB_CXXFLAGS_MAINT_APPEND = --param ggc-min-expand=5
# We have disabled parallel builds in general now. Consider disabling
# for certain architectures if it's reenabled globally.
#	DHFLAGS+=--no-parallel
endif

# Disable tests on i386 due to rounding problem in some. See upstream GitHub issue #118.
ifneq (, $(filter $(shell dpkg-architecture --query DEB_BUILD_ARCH),i386 x32))
	export DEB_BUILD_MAINT_OPTIONS := $(DEB_BUILD_MAINT_OPTIONS) nocheck
endif

%:
# The --buildirectory=build is there so that we can easily get a hold
# of documentation and examples, which are not installed by upstream.
	dh $@ $(DHFLAGS) --with=python3 --builddirectory=build/userversion
	for py3ver in $(REMAINING_PY3VERS) ; do \
		dh $@ $(DHFLAGS) --with=python3 --builddirectory=build-py$$py3ver/userversion ; \
	done

execute_before_dh_auto_configure:
	dh_auto_configure $(DHFLAGS) --builddirectory=build -- -DWITH_GUDHI_BENCHMARK=true -DWITH_GUDHI_EXAMPLE=true -DWITH_GUDHI_PYTHON=true -DWITH_GUDHI_TEST=true -DWITH_GUDHI_UTILITIES=true -DPython_ADDITIONAL_VERSIONS=$(DEFAULT_PY3VER) -DUSER_VERSION_DIR=userversion -DWITH_GUDHI_PYTHON_RUNTIME_LIBRARY_DIRS=false $(HERA_FLAGS)
	make -C build user_version
	for py3ver in $(REMAINING_PY3VERS) ; do \
		dh_auto_configure $(DHFLAGS) --builddirectory=build-py$$py3ver -- -DWITH_GUDHI_BENCHMARK=false -DWITH_GUDHI_EXAMPLE=false -DWITH_GUDHI_PYTHON=true -DWITH_GUDHI_TEST=true -DWITH_GUDHI_UTILITIES=false -DPython_ADDITIONAL_VERSIONS=$$py3ver -DUSER_VERSION_DIR=userversion -DWITH_GUDHI_PYTHON_RUNTIME_LIBRARY_DIRS=false $(HERA_FLAGS) ; \
		make -C build-py$$py3ver user_version ; \
	done

override_dh_auto_configure:
	dh_auto_configure $(DHFLAGS) --builddirectory=build/userversion -- -DWITH_GUDHI_BENCHMARK=true -DWITH_GUDHI_EXAMPLE=true -DWITH_GUDHI_PYTHON=true -DWITH_GUDHI_TEST=true -DWITH_GUDHI_UTILITIES=true -DPython_ADDITIONAL_VERSIONS=$(DEFAULT_PY3VER) -DWITH_GUDHI_PYTHON_RUNTIME_LIBRARY_DIRS=false $(HERA_FLAGS)
	for py3ver in $(REMAINING_PY3VERS) ; do \
		dh_auto_configure $(DHFLAGS) --builddirectory=build-py$$py3ver -- -DWITH_GUDHI_BENCHMARK=false -DWITH_GUDHI_EXAMPLE=false -DWITH_GUDHI_PYTHON=true -DWITH_GUDHI_TEST=true -DWITH_GUDHI_UTILITIES=false -DPython_ADDITIONAL_VERSIONS=$$py3ver -DWITH_GUDHI_PYTHON_RUNTIME_LIBRARY_DIRS=false $(HERA_FLAGS) ; \
	done

override_dh_auto_build-arch:
	dh_auto_build $(DHFLAGS) --builddirectory=build/userversion
	for py3ver in $(REMAINING_PY3VERS) ; do \
		dh_auto_build $(DHFLAGS) --builddirectory=build-py$$py3ver/userversion ; \
	done

override_dh_auto_build-indep:
	make -C build doxygen
	dh_auto_build $(DHFLAGS) --builddirectory=build/userversion

override_dh_auto_test-indep:

override_dh_auto_test-arch:
# I believe this should be handled automatically by dh_auto_test,
# but see #901678.
ifeq (, $(filter nocheck,$(DEB_BUILD_MAINT_OPTIONS)))
	dh_auto_test $(DHFLAGS) --no-parallel --builddirectory=build/userversion
	for py3ver in $(REMAINING_PY3VERS) ; do \
		dh_auto_test $(DHFLAGS) --no-parallel --builddirectory=build-py$$py3ver/userversion ; \
	done
else
	@echo "Skipping tests due to nocheck flag."
endif

override_dh_auto_install:
	find src -type f -path '*/example/*' \( -name '*.cpp' -o \( -name '*.txt' -a ! -iname 'cmake*' \) \) -exec sh -c 'name=$$(echo $$0 | sed s/src\\/// | sed s/example\\///); install -D -m 644 $$0 debian/tmp/usr/share/doc/libgudhi-examples/$$name' {} \;

	dh_auto_install $(DHFLAGS) --builddirectory=build/userversion
	for py3ver in $(REMAINING_PY3VERS) ; do \
		dh_auto_install $(DHFLAGS) --builddirectory=build-py$$py3ver/userversion ; \
	done

	# Remove installed information about Miniball header.
	rm build/userversion/include/gudhi/Miniball.COPYRIGHT
	rm build/userversion/include/gudhi/Miniball.README

	mv $(TMPBIN)/Nerve \
	   $(TMPBIN)/gudhi-nerve
	mv $(TMPBIN)/VoronoiGIC \
	   $(TMPBIN)/gudhi-voronoi-gic
	mv $(TMPBIN)/Witness_complex_strong_witness_persistence \
	   $(TMPBIN)/gudhi-witness-complex-strong-witness-persistence
	mv $(TMPBIN)/Witness_complex_weak_witness_persistence \
	   $(TMPBIN)/gudhi-witness-complex-weak-witness-persistence
	mv $(TMPBIN)/alpha_complex_3d_persistence \
	   $(TMPBIN)/gudhi-alpha-complex-3d-persistence
	mv $(TMPBIN)/alpha_complex_persistence \
	   $(TMPBIN)/gudhi-alpha-complex-persistence
	mv $(TMPBIN)/bottleneck_distance \
	   $(TMPBIN)/gudhi-bottleneck-distance
	mv $(TMPBIN)/cech_persistence \
	   $(TMPBIN)/gudhi-cech-persistence
	mv $(TMPBIN)/cubical_complex_persistence \
	   $(TMPBIN)/gudhi-cubical-complex-persistence
	mv $(TMPBIN)/off_file_from_shape_generator \
	   $(TMPBIN)/gudhi-off-file-from-shape-generator
	mv $(TMPBIN)/periodic_cubical_complex_persistence \
	   $(TMPBIN)/gudhi-periodic-cubical-complex-persistence
	mv $(TMPBIN)/rips_correlation_matrix_persistence \
	   $(TMPBIN)/gudhi-rips-correlation-matrix-persistence
	mv $(TMPBIN)/rips_distance_matrix_persistence \
	   $(TMPBIN)/gudhi-rips-distance-matrix-persistence
	mv $(TMPBIN)/rips_persistence \
	   $(TMPBIN)/gudhi-rips-persistence
	mv $(TMPBIN)/sparse_rips_persistence \
	   $(TMPBIN)/gudhi-sparse-rips-persistence
	mv $(TMPBIN)/distance_matrix_edge_collapse_rips_persistence \
	   $(TMPBIN)/gudhi-distance-matrix-edge-collapse-rips-persistence
	mv $(TMPBIN)/point_cloud_edge_collapse_rips_persistence \
	   $(TMPBIN)/gudhi-point-cloud-edge-collapse-rips-persistence

	mv $(TMPBIN)/GudhUI $(TMPBIN)/gudhui

override_dh_compress:
	dh_compress -X.cpp

override_dh_install:
	dh_install -X__pycache__ -X.pyc -X.pyo

override_dh_missing:
	dh_missing --list-missing