Linux debugging

Check our new training course

Linux debugging, tracing, profiling & perf. analysis

Check our new training course
with Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

#!/usr/bin/make -f

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

# This is the debhelper compatibility version to use.
export DH_COMPAT=3

DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

VERSION = $(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	CONFIG_DEBUG = true
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
endif

PACKAGE_PREFIX = busybox-cvs

PACKAGES_DEB = $(PACKAGE_PREFIX) $(PACKAGE_PREFIX)-static
PACKAGES_UDEB = $(PACKAGE_PREFIX)-udeb
ifneq ($(wildcard ./debian/config-net-udeb-$(DEB_HOST_ARCH)),)
PACKAGES_UDEB += $(PACKAGE_PREFIX)-net-udeb
endif
PACKAGES = $(PACKAGES_DEB) $(PACKAGES_UDEB)
DEBHELPER_PACKAGES_DEB = $(patsubst %,-p%,$(PACKAGES_DEB))

build-arch: build-arch-deb build-arch-static build-arch-udeb build-arch-net-udeb build-arch-doc

build-arch-deb: build-arch-deb-stamp
build-arch-deb-stamp:
	$(MAKE) clean

ifeq ($(wildcard ./debian/config-deb-$(DEB_HOST_ARCH)),)
	cp ./debian/config-deb .config
else
	cp ./debian/config-deb-$(DEB_HOST_ARCH) .config
endif

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	install -d install-$(PACKAGE_PREFIX)/bin
	install busybox install-$(PACKAGE_PREFIX)/bin/busybox

	touch $@

build-arch-static: build-arch-static-stamp
build-arch-static-stamp:
	$(MAKE) clean

ifeq ($(wildcard ./debian/config-static-$(DEB_HOST_ARCH)),)
	cp ./debian/config-static .config
else
	cp ./debian/config-static-$(DEB_HOST_ARCH) .config
endif

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	install -d install-$(PACKAGE_PREFIX)-static/bin
	install busybox install-$(PACKAGE_PREFIX)-static/bin/busybox

	touch $@

build-arch-udeb: build-arch-udeb-stamp
build-arch-udeb-stamp:
	$(MAKE) clean

ifeq ($(wildcard ./debian/config-udeb-$(DEB_HOST_ARCH)),)
	cp ./debian/config-udeb .config
else
	cp ./debian/config-udeb-$(DEB_HOST_ARCH) .config
endif

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	$(MAKE) PREFIX=$(CURDIR)/install-$(PACKAGE_PREFIX)-udeb install

	touch $@

build-arch-net-udeb: build-arch-net-udeb-stamp
build-arch-net-udeb-stamp:
ifneq ($(wildcard ./debian/config-net-udeb-$(DEB_HOST_ARCH)),)
	$(MAKE) clean

	cp ./debian/config-net-udeb-$(DEB_HOST_ARCH) .config

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	$(MAKE) PREFIX=$(CURDIR)/install-$(PACKAGE_PREFIX)-net-udeb install
endif

	touch $@

build-arch-doc: build-arch-doc-stamp
build-arch-doc-stamp:
	$(MAKE) docs/BusyBox.1

	cp docs/BusyBox.1 busybox.1

	touch $@

build: build-arch

clean:
	dh_testdir
	dh_testroot
	rm -f build-*-stamp debian/files~

	$(MAKE) distclean
	-rm -rf busybox-deb busybox-static install* busybox.1

	dh_clean

install: build-arch
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	for i in $(PACKAGES); do \
	( \
		cd install-$$i; \
		find -type d -exec install -d $(CURDIR)/debian/$$i/{} \;; \
		find \( -type f -o -type l \) -exec cp -a {} $(CURDIR)/debian/$$i/{} \;; \
	); \
	done

	install -m644 debian/$(PACKAGE_PREFIX)-static.override \
		debian/$(PACKAGE_PREFIX)-static/usr/share/lintian/overrides/$(PACKAGE_PREFIX)-static

# Build architecture-dependent files here.
binary-arch: build-arch install
	dh_testdir -a
	dh_testroot -a
#	dh_installdebconf -a
	dh_installdocs $(DEBHELPER_PACKAGES_DEB)
#	dh_installexamples -a
#	dh_installmenu -a
#	dh_installlogrotate -a
#	dh_installemacsen -a
#	dh_installpam -a
#	dh_installmime -a
#	dh_installinit -a
#	dh_installcron -a
	dh_installman $(DEBHELPER_PACKAGES_DEB)
#	dh_installinfo -a
#	dh_undocumented -a
	dh_installchangelogs Changelog $(DEBHELPER_PACKAGES_DEB)
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a
#	dh_makeshlibs -a
	dh_installdeb -a
#	dh_perl -a
	dh_shlibdeps -a
	dh_gencontrol $(DEBHELPER_PACKAGES_DEB)
	dh_md5sums $(DEBHELPER_PACKAGES_DEB)
	dh_builddeb $(DEBHELPER_PACKAGES_DEB)

	$(foreach PACKAGE, $(PACKAGES_UDEB), \
	dh_gencontrol -p$(PACKAGE) -- -fdebian/files~; \
	dpkg-distaddfile $(PACKAGE)_$(VERSION)_$(DEB_HOST_ARCH).udeb debian-installer extra; \
	dh_builddeb -p$(PACKAGE) --filename=$(PACKAGE)_$(VERSION)_$(DEB_HOST_ARCH).udeb; \
	)

binary: binary-arch
.PHONY: build clean binary-indep binary-arch binary install