# 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)
+DEB_HOST_GNU_CPU ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
+DEB_HOST_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
VERSION = $(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)
-ARCH = $(shell dpkg --print-architecture)
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
- DODEBUG = true
+ CONFIG_DEBUG = true
endif
-ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
- DODEBUG = true
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
endif
-build-arch: build-arch-stamp
-build-arch-stamp:
+PACKAGE_PREFIX = busybox-cvs
+
+ARCH_FLOPPY_UDEB = $(shell sh debian/control-extract Architecture $(PACKAGE_PREFIX)-floppy-udeb)
+
+PACKAGES_DEB = $(PACKAGE_PREFIX) $(PACKAGE_PREFIX)-static
+PACKAGES_UDEB = $(PACKAGE_PREFIX)-udeb
+ifneq ($(filter $(DEB_HOST_ARCH),$(ARCH_FLOPPY_UDEB)),)
+PACKAGES_UDEB += $(PACKAGE_PREFIX)-floppy-udeb
+endif
+PACKAGES = $(PACKAGES_DEB) $(PACKAGES_UDEB)
+
+DEBHELPER_PACKAGES_DEB = $(patsubst %,-p%,$(PACKAGES_DEB))
+DEBHELPER_PACKAGES_UDEB = $(patsubst %,-p%,$(PACKAGES_UDEB))
+
+CONFIG = $(firstword $(wildcard ./debian/config-$(1)-$(DEB_HOST_GNU_SYSTEM)-$(DEB_HOST_GNU_CPU) ./debian/config-$(1)-$(DEB_HOST_GNU_SYSTEM) ./debian/config-$(1)))
+CONFIG_DEB = $(call CONFIG,deb)
+CONFIG_STATIC = $(call CONFIG,static)
+CONFIG_UDEB = $(call CONFIG,udeb)
+CONFIG_FLOPPY_UDEB = $(call CONFIG,floppy-udeb)
+
+configure: configure-stamp
+configure-stamp:
+ sh ./configure
+
+ touch $@
+
+build-arch: build-arch-deb-all build-arch-udeb-all
+build-arch-deb-all: build-arch-deb build-arch-static build-arch-doc
+build-arch-udeb-all: build-arch-udeb build-arch-floppy-udeb
+
+build-arch-deb: build-arch-deb-stamp
+build-arch-deb-stamp: configure-stamp
$(MAKE) clean
- cp ./debian/config-deb .config
+
+ cp $(CONFIG_DEB) .config
+
$(MAKE) dep
- $(MAKE) DODEBUG=$(DODEBUG)
- install busybox busybox-deb
+ $(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: configure-stamp
+ $(MAKE) clean
+
+ cp $(CONFIG_STATIC) .config
+
+ $(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: configure-stamp
$(MAKE) clean
- cp ./debian/config-static .config
+
+ cp $(CONFIG_UDEB) .config
+
$(MAKE) dep
- $(MAKE) DOSTATIC=true DODEBUG=$(DODEBUG)
- install busybox busybox-static
+ $(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)
+
+ $(MAKE) PREFIX=$(CURDIR)/install-$(PACKAGE_PREFIX)-udeb install
+ # Remove init link, but init support is still compiled in to be
+ # used.
+ rm -f $(CURDIR)/install-$(PACKAGE_PREFIX)-udeb/sbin/init
+
+ touch $@
+build-arch-floppy-udeb: build-arch-floppy-udeb-stamp
+build-arch-floppy-udeb-stamp: configure-stamp
+ifneq ($(filter $(DEB_HOST_ARCH),$(ARCH_FLOPPY_UDEB)),)
$(MAKE) clean
- cp ./debian/config-udeb .config
+
+ cp $(CONFIG_FLOPPY_UDEB) .config
+
$(MAKE) dep
- $(MAKE) DODEBUG=$(DODEBUG)
+ $(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)
- touch build-arch-stamp
+ $(MAKE) PREFIX=$(CURDIR)/install-$(PACKAGE_PREFIX)-floppy-udeb install
+endif
-build-indep: build-indep-stamp
-build-indep-stamp:
- $(MAKE) newdoc
+ touch $@
- touch build-indep-stamp
+build-arch-doc: build-arch-doc-stamp
+build-arch-doc-stamp: configure-stamp
+ $(MAKE) docs/BusyBox.1
-build: build-arch build-indep
+ cp docs/BusyBox.1 busybox.1
+
+ touch $@
+
+build: build-arch
clean:
dh_testdir
dh_testroot
- rm -f build-arch-stamp build-indep-stamp
+ rm -f build-*-stamp configure-stamp debian/files~
- $(MAKE) distclean
- -rm -f busybox-deb busybox-static
+ -$(MAKE) distclean
+ -rm -rf busybox-deb busybox-static install* busybox.1
dh_clean
-install: build-arch
+install-deb: build-arch-deb-all
dh_testdir
dh_testroot
- dh_clean -k
- dh_installdirs
-
- install busybox-deb $(CURDIR)/debian/busybox-cvs/bin/busybox
- install busybox-static $(CURDIR)/debian/busybox-cvs-static/bin/busybox
- $(MAKE) PREFIX=$(CURDIR)/debian/busybox-cvs-udeb install
-
-# Build architecture-independent files here.
-# Pass -i to all debhelper commands in this target to reduce clutter.
-binary-indep: build
- dh_testdir -i
- dh_testroot -i
-# dh_installdebconf -i
- dh_installdocs -i
-# dh_installexamples -i
-# dh_installmenu -i
-# dh_installlogrotate -i
-# dh_installemacsen -i
-# dh_installpam -i
-# dh_installmime -i
-# dh_installinit -i
-# dh_installcron -i
-# dh_installman -i
-# dh_installinfo -i
-# dh_undocumented -i
- dh_installchangelogs Changelog -i
- dh_link -i
- dh_compress -i
- dh_fixperms -i
- dh_installdeb -i
-# dh_perl -i
- dh_gencontrol -i
- dh_md5sums -i
- dh_builddeb -i
+ dh_clean -k $(DEBHELPER_PACKAGES_DEB)
+ dh_installdirs $(DEBHELPER_PACKAGES_DEB)
+
+ for i in $(PACKAGES_DEB); 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
+
+install-udeb: build-arch-udeb-all
+ dh_testdir
+ dh_testroot
+ dh_clean -k $(DEBHELPER_PACKAGES_UDEB)
+ dh_installdirs $(DEBHELPER_PACKAGES_UDEB)
+
+ for i in $(PACKAGES_UDEB); 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
+
+binary-arch: binary-arch-deb binary-arch-udeb
+
+# Build architecture-dependent files here.
+binary-arch-deb: build-arch-deb-all install-deb
+ dh_testdir
+ dh_testroot
+ dh_installdocs $(DEBHELPER_PACKAGES_DEB)
+ dh_installman $(DEBHELPER_PACKAGES_DEB)
+ dh_installchangelogs Changelog $(DEBHELPER_PACKAGES_DEB)
+ dh_strip $(DEBHELPER_PACKAGES_DEB)
+ dh_link $(DEBHELPER_PACKAGES_DEB)
+ dh_compress $(DEBHELPER_PACKAGES_DEB)
+ dh_fixperms $(DEBHELPER_PACKAGES_DEB)
+ dh_installdeb $(DEBHELPER_PACKAGES_DEB)
+ dh_shlibdeps $(DEBHELPER_PACKAGES_DEB)
+ dh_gencontrol $(DEBHELPER_PACKAGES_DEB)
+ dh_md5sums $(DEBHELPER_PACKAGES_DEB)
+ dh_builddeb $(DEBHELPER_PACKAGES_DEB)
# Build architecture-dependent files here.
-binary-arch: build-arch install
- dh_testdir -a
- dh_testroot -a
-# dh_installdebconf -a
- dh_installdocs -a -Nbusybox-cvs-udeb
-# 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 -a
-# dh_installinfo -a
-# dh_undocumented -a
- dh_installchangelogs Changelog -a -Nbusybox-cvs-udeb
- 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 -a
- dh_md5sums -a -Nbusybox-cvs-udeb
- dh_builddeb -a -Nbusybox-cvs-udeb
- dpkg-distaddfile busybox-cvs-udeb-$(VERSION)_$(ARCH).udeb debian-installer optional
- dh_builddeb -pbusybox-cvs-udeb --filename=busybox-cvs-udeb-$(VERSION)_$(ARCH).udeb
-
-binary: binary-indep binary-arch
+binary-arch-udeb: build-arch-udeb-all install-udeb
+ dh_testdir
+ dh_testroot
+ dh_strip $(DEBHELPER_PACKAGES_UDEB)
+ dh_link $(DEBHELPER_PACKAGES_UDEB)
+ dh_compress $(DEBHELPER_PACKAGES_UDEB)
+ dh_fixperms $(DEBHELPER_PACKAGES_UDEB)
+ dh_installdeb $(DEBHELPER_PACKAGES_UDEB)
+ dh_shlibdeps $(DEBHELPER_PACKAGES_UDEB)
+ dh_gencontrol $(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