File: rules

package info (click to toggle)
ns3 3.46-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 105,864 kB
  • sloc: cpp: 624,863; python: 14,863; ansic: 6,772; makefile: 1,950; sh: 987; javascript: 167; perl: 102
file content (142 lines) | stat: -rwxr-xr-x 5,692 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
#!/usr/bin/make -f
export DH_VERBOSE=1

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/buildopts.mk
include /usr/share/dpkg/pkg-info.mk

ifeq ($(DEB_HOST_GNU_CPU),mipsel)
  # Drop the debug symbols all together on mipsel to avoid OOM causing FTBFS
  export DEB_CFLAGS_MAINT_STRIP=-g
  export DEB_CXXFLAGS_MAINT_STRIP=-g
endif

# Define CFLAGS and friends to harden the build -- must come any addtion to these variables
DPKG_EXPORT_BUILDFLAGS = 1


ifeq ($(DEB_HOST_GNU_CPU),mipsel)
  # Further reduce the memory consumption on mipsel
  LDFLAGS += -Wl,--reduce-memory-overheads -Wl,--no-keep-memory
endif

TOPDIR=$(CURDIR)
PYBINDGENV_DIR=$(shell ls -d pybindgen-*)

# Build in parallel, unless there is less than 3GiB
MEMORY=$(shell awk '/MemTotal:/{print $$2}' /proc/meminfo)
BUILD_OPTION=$(shell if [ $(MEMORY) -lt 3090252 ]; then echo "-j1"; else echo "$(DEB_BUILD_OPTION_PARALLEL:%=-j%)"; fi)

# Reproducible Build wants us to use always the same date when building the documentation
SPHINXOPTS := -D today=\"$(SOURCE_DATE_EPOCH)\"
SPHINXOPTS += -D html_last_updated_fmt=\"$(SOURCE_DATE_EPOCH)\"

# Include version information
VERSION=$(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\+dfsg.*//' | sed -e 's/\+ds.*//')
MAJOR_VERSION=$(word 1,$(subst ., ,$(VERSION)))
MINOR_VERSION=$(word 2,$(subst ., ,$(VERSION)))
PATCH_VERSION=$(word 3,$(subst ., ,$(VERSION).0)) # Add an extra .0 just in case there is no patch level

BUILD_PROFILE=release

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

# Set up version cache to allow generating version module. The double 0 is due to a CMake peculiarity.

execute_before_dh_auto_configure:
	sed -e "s/@NS3_VERSION_CLOSEST_TAG@/NONEXISTENT_TAG__PACKAGE_BUILT_FROM_DEBIAN_SOURCE/" \
	    -e "s/@NS3_VERSION_COMMIT_HASH@//" \
	    -e "s/@NS3_VERSION_DIRTY_FLAG@/1/" \
	    -e "s/@NS3_VERSION_MAJOR@/$(MAJOR_VERSION)/" \
	    -e "s/@NS3_VERSION_MINOR@/$(MINOR_VERSION)/" \
	    -e "s/@NS3_VERSION_PATCH@/$(PATCH_VERSION)/" \
	    -e "s/@NS3_VERSION_RELEASE_CANDIDATE@//" \
	    -e "s/@NS3_VERSION_TAG@/NONEXISTENT_TAG__PACKAGE_BUILT_FROM_DEBIAN_SOURCE/" \
	    -e "s/@NS3_VERSION_TAG_DISTANCE@/00/" \
	    -e "s/@NS3_VERSION_BUILD_PROFILE@/$(BUILD_PROFILE)/" \
	    build-support/version.cache.in > src/core/model/version.cache

# Use the ns3 wrapper over cmake because I fail to get it work otherwise,
# but pass the parameters that cmake needs to build a proper Debian package (copied from the simgrid build logs)

override_dh_auto_configure:
	./ns3 configure --verbose \
		--build-profile=$(BUILD_PROFILE) --enable-python-bindings --enable-logs --enable-examples --enable-tests --disable-mpi --enable-build-version \
                --prefix=/usr -- \
		-DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON \
		-DCMAKE_INSTALL_RUNSTATEDIR=/run -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) -DCMAKE_INSTALL_PREFIX=/usr

override_dh_auto_build-arch:
	./ns3 build --verbose

# override_dh_auto_build-indep:
# ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
#	echo "XXXX run: SPHINXOPTS='$(SPHINXOPTS)' ./ns3 docs -v sphinx"
#	export SPHINXOPTS="$(SPHINXOPTS)"; ./ns3 docs -v sphinx
#	echo "XXXX done: ./ns3 docs sphinx"
# 	echo "XXXX run: SPHINXOPTS='$(SPHINXOPTS)' ./ns3 docs -v html"
# 	export SPHINXOPTS="$(SPHINXOPTS)"; ./ns3 docs -v html
# 	echo "XXXX done: ./ns3 docs -v html"
# 	rm -f doc/*/build/*/_static/jquery.js
# 	rm -f doc/*/build/*/_static/underscore.js
# else
# 	for d in manual models tutorial ; do mkdir -p doc/$$d/build/html ; touch doc/$$d/build/html/index.html ; done
# endif
# 	touch $@

override_dh_auto_install:
	DESTDIR=$$(pwd)/debian/tmp AM_UPDATE_INFO_DIR=no INSTALL="install --strip-program=true"   ./ns3 install
	
	mkdir -p debian/tmp/usr/bin
	# cp netanim-*/NetAnim debian/tmp/usr/bin
	# Install my own little script as a compiler
	set -e ;\
	all_libs=$$(find debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/ -name 'libns3*.so' | sed -e "s|debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/||" -e 's/.so$$//' | sort) ;\
	sed -e "s/@ALL_LIBS@/$$(echo $$all_libs)/g" debian/ns3++.in > debian/tmp/usr/bin/ns3++
	chmod +x debian/tmp/usr/bin/ns3++
	# Install the upstream changelog as NEWS, as requested by the policy
	cp RELEASE_NOTES.md NEWS.md
	
override_dh_auto_test:
	-./test.py -v

override_dh_installchangelogs:
	dh_installchangelogs CHANGES.md

# override_dh_link:
# 	dh_link
# 	if test -e debian/ns3-doc/usr/share/doc; then \
# 		jdupes -rl debian/ns3-doc/usr/share/doc; \
# 	fi
# 
# override_dh_install:
# 	dh_install
# 	
# ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
# 	# The doc is not built when building only for a given arch (it's built in 'arch:all')
# 	if [ -e debian/ns3-doc/usr/share/doc/ns3/manual/html/_static ] ; then \
# 	  for where in manual models tutorial ; do \
# 	    for what in doctools.js language_data.js searchtools.js ; do \
# 	      rm debian/ns3-doc/usr/share/doc/ns3/$${where}/html/_static/$${what}; \
# 	      ln -s /usr/share/javascript/sphinxdoc/1.0/$${what} debian/ns3-doc/usr/share/doc/ns3/$${where}/html/_static/$${what}; \
# 	    done ; \
# 	  done ; \
# 	fi
# endif

override_dh_auto_clean:
	#-sh ./debian/clean-tree.sh
	rm -f src/core/model/version.cache
	dh_auto_clean

# ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
# override_dh_compress:
# 	dh_compress -Xusr/share/doc/ns3/examples/  -Xusr/share/doc/ns3/manual/  -Xusr/share/doc/ns3/models/  -Xusr/share/doc/ns3/tutorial/
# endif

# Note to self: Download the new version by using 'uscan'