#!/usr/bin/make -f # -*- mode: makefile; coding: utf-8 -*- # Copyright © 2003 Jeff Bailey # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA. include /usr/share/dpkg/architecture.mk export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-pie DEB_DESTDIR = $(CURDIR)/debian/tmp DEB_DESTDIR_UDEB = $(CURDIR)/debian/tmp-udeb DEB_DESTDIR_PROF = $(CURDIR)/debian/tmp-prof TRANSLATORS_PROF = auth exec ext2fs pci-arbiter pfinet lwip pflocal proc procfs term CONFIGURE_ARGS = --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) ifeq (,$(filter stage1 stage2,$(DEB_BUILD_PROFILES))) CONFIGURE_ARGS += --disable-profile --enable-static-progs='ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi' else CONFIGURE_ARGS += \ --disable-ncursesw \ --without-libbz2 \ --without-libz \ --without-parted \ --without-libcrypt \ --without-acpica \ --without-rump \ --without-libtirpc # Skip some checks because they expect # a working glibc causing a circular dependency. # TODO: rather disable the corresponding features in configure.ac export ac_cv_lib_pciaccess_pci_system_init=no ifneq (,$(filter stage1,$(DEB_BUILD_PROFILES))) export ac_cv_search_clnt_create=no export ac_cv_func_file_exec_paths=no export ac_cv_func_exec_exec_paths=no export ac_cv_func__hurd_exec_paths=no export ac_cv_func__hurd_libc_proc_init=no export ac_cv_func_file_utimens=no export LEX=: export YACC=: export MIG=: endif endif CONFIGURE_ARGS += prefix=/ includedir=/usr/include libdir=/lib/$(DEB_HOST_MULTIARCH) libexecdir=/usr/libexec datarootdir=/usr/share sysconfdir=/etc localstatedir=/var CONFIGURE_ARGS_deb = CONFIGURE_ARGS_udeb = libdir=/lib --without-libdaemon --without-libbz2 SUID_PROGRAMS = /bin/ids /bin/login /bin/ps-hurd /usr/bin/w-hurd INSTALL_in := $(wildcard debian/*.install.in) INSTALL_generated := $(patsubst %.in,%,$(INSTALL_in)) BUILT_USING := $(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W libc0.3-dev libparted-dev zlib1g-dev libbz2-dev uuid-dev libblkid-dev) ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) CC=gcc else CC=$(DEB_HOST_GNU_TYPE)-gcc endif # for libdde-linux26 ARCH ifeq ($(DEB_HOST_ARCH_CPU),amd64) ARCH = amd64 else ARCH = x86 endif %: dh $@ -Bbuild-deb #UBSAN=-Wl,-as-needed -fsanitize=undefined -fsanitize-address-use-after-scope # Avoid re-running configure each time. See Bug#966707 override_dh_auto_configure: debian/configure-stamp debian/configure-stamp: dh_auto_configure -Bbuild-deb -- $(CONFIGURE_ARGS) $(CONFIGURE_ARGS_deb) $(shell DEB_CFLAGS_MAINT_APPEND="-fno-omit-frame-pointer $(UBSAN)" dpkg-buildflags --export=configure) dh_auto_configure -phurd-prof -Bbuild-prof -- $(CONFIGURE_ARGS) $(CONFIGURE_ARGS_deb) $(shell DEB_CFLAGS_MAINT_APPEND="-fno-omit-frame-pointer -pg" dpkg-buildflags --export=configure) dh_auto_configure -phurd-udeb -Bbuild-udeb -- $(CONFIGURE_ARGS) $(CONFIGURE_ARGS_udeb) $(shell dpkg-buildflags --export=configure) touch $@ override_dh_auto_build: ifneq (,$(filter stage1,$(DEB_BUILD_PROFILES))) : else dh_auto_build -Bbuild-deb ifeq (,$(filter stage2 pkg.hurd.noprof,$(DEB_BUILD_PROFILES))) dh_auto_build -phurd-prof -Bbuild-prof for i in $(TRANSLATORS_PROF) ; do \ $(MAKE) -C build-prof/$$i $$i.static ; \ done endif dh_auto_build -phurd-udeb -Bbuild-udeb cd build-deb/doc && make && makeinfo --html --split=chapter ../../doc/hurd.texi ifeq (,$(filter stage2,$(DEB_BUILD_PROFILES))) install -d $(CURDIR)/libdde-linux26/build/include/x86 -ln -s x86 $(CURDIR)/libdde-linux26/build/include/amd64 -ln -s asm-x86 $(CURDIR)/libdde-linux26/build/include/amd64/asm-x86_64 $(MAKE) -C libdde-linux26 BUILDDIR=$(CURDIR)/build-deb ARCH=$(ARCH) LDFLAGS= CC=$(CC) endif endif override_dh_auto_clean: dh_auto_clean -Bbuild-deb dh_auto_clean -phurd-prof -Bbuild-prof dh_auto_clean -phurd-udeb -Bbuild-udeb $(MAKE) -C libdde-linux26 ARCH=$(ARCH) cleanall rm -f $$(find libdde-linux26 -name \*.d) rm -fr libdde-linux26/build rm -fr libdde-linux26/lib/src/gen_crc32table libdde-linux26/lib/src/crc32table.h libdde-linux26/lib/src/timeconst.h rm -f $(INSTALL_generated) override_dh_auto_install: ifneq (,$(filter stage1,$(DEB_BUILD_PROFILES))) $(MAKE) -Cbuild-deb DESTDIR=$(DEB_DESTDIR) install-headers no_deps=t else dh_auto_install -Bbuild-deb --destdir=$(DEB_DESTDIR) ifeq (,$(filter stage2 pkg.hurd.noprof,$(DEB_BUILD_PROFILES))) install -d $(DEB_DESTDIR_PROF)/hurd for i in $(TRANSLATORS_PROF) ; do \ install -m 755 build-prof/$$i/$$i.static $(DEB_DESTDIR_PROF)/hurd/$$i.prof ; \ done endif dh_auto_install -phurd-udeb -Bbuild-udeb --destdir=$(DEB_DESTDIR_UDEB) ifeq (,$(filter stage2,$(DEB_BUILD_PROFILES))) install -d $(CURDIR)/debian/tmp/usr/share/libdde_linux26/build/include ln -s x86 $(CURDIR)/debian/tmp/usr/share/libdde_linux26/build/include/amd64 $(MAKE) -C libdde-linux26 INSTALLDIR=$(CURDIR)/debian/tmp/usr/share/libdde_linux26/build/include ARCH=$(ARCH) install ln -s asm-x86 $(CURDIR)/debian/tmp/usr/share/libdde_linux26/build/include/amd64/asm-x86_64 endif # runsystem is managed by update-alternatives mv debian/tmp/usr/libexec/runsystem debian/tmp/usr/libexec/runsystem.gnu # move away fakeroot, ps, uptime, vmstat and w to not conflict with the # ones from other packages mkdir -p debian/tmp/usr/bin mv debian/tmp/bin/fakeroot debian/tmp/usr/bin/fakeroot-hurd mv debian/tmp/bin/ps debian/tmp/bin/ps-hurd mv debian/tmp/bin/uptime debian/tmp/usr/bin/uptime-hurd mv debian/tmp/bin/vmstat debian/tmp/usr/bin/vmstat-hurd mv debian/tmp/bin/w debian/tmp/usr/bin/w-hurd # put gcore instead of gdb's mv debian/tmp/bin/gcore debian/tmp/usr/bin/gcore ifeq (,$(filter stage2 noudeb,$(DEB_BUILD_PROFILES))) mkdir -p debian/tmp-udeb/usr/bin mv debian/tmp-udeb/bin/ps debian/tmp-udeb/bin/ps-hurd mv debian/tmp-udeb/bin/uptime debian/tmp-udeb/usr/bin/uptime-hurd mv debian/tmp-udeb/bin/vmstat debian/tmp-udeb/usr/bin/vmstat-hurd mv debian/tmp-udeb/bin/w debian/tmp-udeb/usr/bin/w-hurd endif # move away halt and reboot to not conflict with sysvinit # (they will be handled as alternatives) mv debian/tmp/sbin/halt debian/tmp/sbin/halt-hurd mv debian/tmp/sbin/reboot debian/tmp/sbin/reboot-hurd # remove PIC static libraries rm -f debian/tmp/lib/$(DEB_HOST_MULTIARCH)/*_pic.a rm -f debian/tmp-udeb/lib/*_pic.a endif override_dh_install: $(INSTALL_generated) ifeq (,$(filter stage1 stage2 noudeb,$(DEB_BUILD_PROFILES))) dh_install $(addprefix -p,$(filter %-udeb,$(shell dh_listpackages))) --sourcedir=debian/tmp-udeb mkdir -p debian/hurd-udeb/usr/share/lintian/overrides install -p -m644 debian/hurd-udeb.lintian-overrides debian/hurd-udeb/usr/share/lintian/overrides/hurd-udeb sed -i -e '1s/bash/sh/' debian/hurd-udeb/sbin/MAKEDEV # We need /servers/exec and startup at boot time touch debian/hurd-udeb/servers/exec touch debian/hurd-udeb/servers/startup endif dh_install -phurd-prof --sourcedir=debian/tmp-prof dh_install --remaining-packages --sourcedir=debian/tmp override_dh_installinit: dh_installinit -phurd --name=hurd-console dh_installinit --remaining-packages override_dh_installchangelogs: dh_installchangelogs -XChangeLog override_dh_missing: dh_missing --list-missing override_dh_strip: dh_strip -Nhurd-prof -Xlibdde override_dh_fixperms-arch: dh_fixperms -a ifeq (,$(filter stage1,$(DEB_BUILD_PROFILES))) chmod u+s $(patsubst %,$(CURDIR)/debian/hurd%,$(SUID_PROGRAMS)) endif override_dh_makeshlibs: ifeq (,$(filter stage1 stage2 noudeb,$(DEB_BUILD_PROFILES))) dh_makeshlibs -phurd-libs0.3 --add-udeb=hurd-libs0.3-udeb endif dh_makeshlibs --remaining-packages -Xusr/lib/hurd/ override_dh_gencontrol: dh_gencontrol -- -V"built-using=$(BUILT_USING)" override_dh_clean: dh_clean rm -rf debian/tmp-udeb rm -rf debian/tmp-prof rm -f debian/configure-stamp debian/%.install: debian/%.install.in cat $^ | sed -e 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' > $@ [ ! -x $< ] || chmod +x $@