File: rules

package info (click to toggle)
gtsam 4.2.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 46,096 kB
  • sloc: cpp: 127,191; python: 14,312; xml: 8,442; makefile: 250; sh: 119; ansic: 101
file content (143 lines) | stat: -rwxr-xr-x 5,229 bytes parent folder | download
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
142
143
#!/usr/bin/make -f
# -*- makefile -*-

include /usr/share/dpkg/architecture.mk

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# Build workaround to allow this to build on 32-bit arches.
#   https://lists.debian.org/debian-devel/2023/08/msg00156.html
# This makes the build much slower, but is needed for most arches. I needed to
# ALSO disable debug symbols and optimization for the python wrapper (-O0 -g0;
# set in the no-optimization-or-debug-flags-in-python-bindings.patch).
export DEB_CXXFLAGS_MAINT_APPEND += --param ggc-min-expand=5

# When building with gcc-13 (possibly with older ones as well) I get lots of
# these warnings. They are maybe helpful for upstream, but not at all helpful
# for Debian builds, so I disable these
export DEB_CXXFLAGS_MAINT_APPEND += -Wno-deprecated-declarations -Wno-overloaded-virtual

# Without this I get lots of warnings like this:
# note: parameter passing for argument of type 'std::_Rb_tree_const_iterator<long long unsigned int>' changed in GCC 7.1
export DEB_CXXFLAGS_MAINT_APPEND += -Wno-psabi

# On some arches ld says:
#   /usr/bin/ld: CMakeFiles/SolverComparer.dir/SolverComparer.cpp.o: undefined reference to symbol '__atomic_load_8@@LIBATOMIC_1.0'
ifneq (,$(filter $(DEB_HOST_ARCH), armel powerpc sh4))
export DEB_LDFLAGS_MAINT_APPEND += -latomic
endif

# On some arches there's simply too much debugging info. I turn it off. The
# build log says:
#   /usr/bin/ld: error: libgtsam.so.4.2.0(.debug_info) is too large (0x10e67cac bytes)
ifneq (,$(filter $(DEB_HOST_ARCH), mipsel))
export DEB_CXXFLAGS_MAINT_APPEND += -g0
endif



ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    NUMJOBS   := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    MAKEFLAGS += -j$(NUMJOBS)
endif

%:
	dh $@ --with python3 --buildsystem=cmake

# I'm buliding without gtsam_unstable:
# https://github.com/borglab/gtsam/issues/1457
#
# I also building without examples. I don't ship the build products, and this
# build is REALLY slow, so I want to avoid building stuff that doesn't need to
# be built. It's good to build them as a test, but I'll just rely on the test
# suite for that
override_dh_auto_configure:
	dh_auto_configure --					\
		-DCMAKE_BUILD_TYPE=RelWithDebInfo		\
		-DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF		\
		-DGTSAM_BUILD_TYPE_POSTFIXES=OFF		\
		-DGTSAM_BUILD_UNSTABLE=OFF			\
		-DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF		\
		-DGTSAM_UNSTABLE_BUILD_PYTHON=OFF		\
		-DGTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX=OFF	\
		-DBUILD_SHARED_LIBS=ON				\
		-DGTSAM_WITH_TBB=ON				\
		-DGTSAM_WITH_EIGEN_MKL=OFF			\
		-DGTSAM_WITH_EIGEN_MKL_OPENMP=OFF		\
		-DGTSAM_BUILD_PYTHON=ON				\
		-DGTSAM_INSTALL_MATLAB_TOOLBOX=OFF		\
		-DGTSAM_ALLOW_DEPRECATED_SINCE_V42=ON		\
		-DGTSAM_BUILD_WITH_CCACHE=OFF			\
		-DGTSAM_USE_SYSTEM_EIGEN=ON			\
		-DGTSAM_USE_SYSTEM_METIS=ON

ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))

# I build the lyx and doxygen docs. And I use the local packaged mathjax instead
# of the internet one
override_dh_auto_build-indep:
	lyx -userdir /tmp -e pdf $(filter-out %/macros.lyx,$(wildcard doc/*.lyx))
	$(MAKE) -C obj-$(DEB_HOST_GNU_TYPE) doc
	perl -p -i -e 's{http.*?/MathJax\.js}{file:///usr/share/javascript/mathjax/MathJax.js?config=TeX-MML-AM_CHTML}g' doc/html/*.html

override_dh_compress:
	dh_compress -O--buildsystem=cmake -X.pdf

else

override_dh_auto_build-indep:
	true

endif



ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))

override_dh_auto_test:
	$(MAKE) -C obj-$(DEB_HOST_GNU_TYPE)        check
	$(MAKE) -C obj-$(DEB_HOST_GNU_TYPE)/python python-test
else

override_dh_auto_test:
	true

endif


# /usr/include/gtwap just has matlab stuff today so I get rid of it
#
# We're supposed to "make python-install" to install this stuff: https://github.com/borglab/gtsam/issues/1513
# But it doesn't work: it uses pip, and is hard-coded to install into the
# system, not to a subdirectory
#
# I can use setup.py instead:
#
#   python3 obj-$(DEB_HOST_GNU_TYPE)/python/setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb
#
# But this doesn't work either: setup.py isn't defined properly, or something,
# and it installs the metadata only, but not any of the actual library. So I
# just copy the needed files myself
override_dh_auto_install:
	dh_auto_install -O--buildsystem=cmake

	mkdir -p $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages/gtsam
	cp    obj-$(DEB_HOST_GNU_TYPE)/python/gtsam/*.so  $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages/gtsam
	cp    obj-$(DEB_HOST_GNU_TYPE)/python/gtsam/*.py  $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages/gtsam
	cp -r obj-$(DEB_HOST_GNU_TYPE)/python/gtsam/utils $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages/gtsam

	rm -rf debian/tmp/usr/include/CppUnitLite
	rm -rf debian/tmp/usr/lib/*/libCppUnitLite.a
	rm -rf debian/tmp/usr/include/gtwrap

	chrpath -d debian/tmp/usr/lib/python3/dist-packages/*/*.so

# remove bogus executable bits, remove files I shouldn't ship
override_dh_installexamples-indep:
	dh_installexamples -O--buildsystem=cmake
	find debian/libgtsam-doc/usr/share/doc/libgtsam-dev/examples/Data/ -type f | xargs chmod a-x
	rm debian/libgtsam-doc/usr/share/doc/libgtsam-dev/examples/Data/.gitignore