#!/usr/bin/make -f # debian/rules file - for binutils (2.15) # Based on sample debian/rules file - for GNU Hello (1.3). # Copyright 1994,1995 by Ian Jackson. # Copyright 1998-2004 James Troup # I hereby give you perpetual unlimited permission to copy, # modify and relicense this file, provided that you do not remove # my name from the file itself. (I assert my moral right of # paternity under the Copyright, Designs and Patents Act 1988.) # This file may have to be extensively modified ################################################################################ include /usr/share/dpatch/dpatch.make ################################################################################ p_bin = binutils p_dev = $(p_bin)-dev p_mul = $(p_bin)-multiarch p_doc = $(p_bin)-doc p_hppa64 = $(p_bin)-hppa64 pwd := $(shell pwd) d = debian/tmp d_bin = $(d) d_dev = debian/$(p_dev) d_mul = debian/$(p_mul) d_doc = debian/$(p_doc) d_hppa64 = debian/$(p_hppa64) install_dir = install -d -m 755 install_file = install -m 644 install_script = install -m 755 install_binary = install -m 755 -s DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) CC = gcc CFLAGS = -g -O2 ifeq ($(DEB_HOST_ARCH),powerpc) CFLAGS += -I$(shell pwd)/debian/include endif STRIP = strip --remove-section=.comment --remove-section=.note VERSION = $(shell sed -n 's/^ *VERSION=\(.*\)/\1/p' bfd/configure) MULTI_VERSION = $(VERSION)-multiarch MULTI_ARGS = MAKEOVERRIDES="VERSION=$(MULTI_VERSION)" HPPA64_VERSION= $(VERSION)-hppa64 HPPA64_ARGS = MAKEOVERRIDES="VERSION=$(HPPA64_VERSION)" ######################################## CONFARGS = --enable-shared --prefix=/usr --build=$(DEB_BUILD_GNU_TYPE) \ --host=$(DEB_HOST_GNU_TYPE) CONFLICTS = -VmainConflicts="gas, elf-binutils, modutils (<< 2.4.19-1)" ifeq ($(DEB_HOST_ARCH),sparc) CONFARGS += --enable-targets=sparc64-linux-gnu CONFLICTS = -VmainConflicts="gas, elf-binutils, modutils (<< 2.4.19-1), libc6-dev-sparc64 (<< 2.2.5-7)" endif ifeq ($(DEB_HOST_ARCH),sparc64) CONFARGS += --enable-targets=sparc-linux-gnu CONFLICTS = -VmainConflicts="gas, elf-binutils, libc6-dev-sparc64 (<< 2.2.5-7)" endif ifeq ($(DEB_HOST_ARCH),powerpc) CONFARGS += --enable-targets=powerpc64-linux-gnu endif ifeq ($(DEB_HOST_ARCH),s390) CONFARGS += --enable-targets=s390x-linux-gnu endif ifeq ($(DEB_HOST_ARCH),i386) CONFARGS += --enable-targets=x86_64-linux-gnu endif ifeq ($(DEB_HOST_ARCH),mips) CONFARGS += --enable-targets=mips64-linux-gnu endif ifeq ($(DEB_HOST_ARCH),mipsel) CONFARGS += --enable-targets=mips64el-linux-gnu endif ################################################################################ ################ # clean target # ################ clean: unpatch $(checkdir) -rm -fr builddir-multi builddir-single builddir-hppa64 -find . -name \*.gmo -o -name \*~ | xargs rm -f -rm -f $(pwd)/test-summary -rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(d_hppa64) -rm -rf debian/patched debian/tmp debian/files debian/substvars for i in $$(find -name debian -prune -o -name '*.info*.saved' -print); \ do \ echo restore $$i; \ mv $$i $${i%*.saved}; \ done ################################################################################ ####################### # single-arch targets # ####################### configure-single-stamp: patch-stamp $(checkdir) rm -rf configure-single-stamp \ builddir-single mkdir builddir-single cd builddir-single && env CC="$(CC)" \ ../configure $(CONFARGS) $(MAKE) -C builddir-single configure-host touch configure-single-stamp build-single-stamp: configure-single-stamp $(checkdir) $(MAKE) -C builddir-single/bfd headers $(MAKE) -C builddir-single \ CFLAGS="$(CFLAGS)" -$(MAKE) -C builddir-single -k \ CFLAGS="$(CFLAGS)" check cat builddir-single/binutils/binutils.sum \ builddir-single/gas/testsuite/gas.sum \ builddir-single/ld/ld.sum >> $(pwd)/test-summary touch build-single-stamp ################################################################################ ##################### # multiarch targets # ##################### configure-multi-stamp: patch-stamp $(checkdir) rm -rf configure-multi-stamp \ builddir-multi mkdir builddir-multi cd builddir-multi \ && env CC="$(CC)" ../configure $(CONFARGS) \ --enable-targets=alpha-linux-gnu,arm-linux-gnu,hppa-linux-gnu,i486-gnu,i486-linux-gnu,ia64-linux-gnu,m68k-linux-gnu,m68k-rtems,mips-linux-gnu,mipsel-linux-gnu,mips64-linux-gnu,mips64el-linux-gnu,powerpc-linux-gnu,powerpc64-linux-gnu,s390-linux-gnu,s390x-linux-gnu,sh-linux-gnu,sparc-linux-gnu,sparc64-linux-gnu,x86_64-linux-gnu $(MAKE) -C builddir-multi configure-host touch configure-multi-stamp build-multi-stamp: configure-multi-stamp $(checkdir) $(MAKE) -C builddir-multi/bfd headers $(MAKE) -C builddir-multi \ CFLAGS="$(CFLAGS)" $(MULTI_ARGS) touch build-multi-stamp ################################################################################ ################# # hppa64 target # ################# configure-hppa64-stamp: patch-stamp $(checkdir) rm -rf configure-hppa64-stamp \ builddir-hppa64 mkdir builddir-hppa64 cd builddir-hppa64 \ && env CC="$(CC)" ../configure \ --enable-shared \ --prefix=/usr \ --build=$(DEB_BUILD_GNU_TYPE) \ --host=$(DEB_BUILD_GNU_TYPE) \ --target=hppa64-linux-gnu $(MAKE) -C builddir-hppa64 configure-host touch configure-hppa64-stamp build-hppa64-stamp: configure-hppa64-stamp $(checkdir) $(MAKE) -C builddir-hppa64/bfd headers $(MAKE) -C builddir-hppa64 \ CFLAGS="$(CFLAGS)" $(HPPA64_ARGS) touch build-hppa64-stamp build_stamps = pre-build build-single-stamp build-multi-stamp ifeq ($(DEB_HOST_ARCH),hppa) build_stamps += build-hppa64-stamp endif build: build-stamp build-stamp: $(build_stamps) touch build-stamp pre-build: for i in $$(find -name debian -prune -o ! -name '*.saved' -name '*.info*' -print); do \ if [ ! -f $$i.saved ]; then \ echo "save $$i"; \ cp -p $$i $$i.saved; \ fi; \ done ################################################################################ ################## # install target # ################## install_stamps = install-stamp ifeq ($(DEB_HOST_ARCH),hppa) install_stamps += install-hppa64-stamp endif install: $(install_stamps) install-stamp: checkroot build-stamp $(checkdir) rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(install_dir) $(d_bin) $(d_dev) $(d_mul) $(d_doc) : # install binutils and -dev stuff $(MAKE) -C builddir-single \ CFLAGS="$(CFLAGS)" prefix=$(pwd)/$(d_bin)/usr \ mandir=$(pwd)/$(d_bin)/usr/share/man \ infodir=$(pwd)/$(d_doc)/usr/share/info install : # now install binutils-multiarch stuff $(MAKE) -C builddir-multi \ CFLAGS="$(CFLAGS)" $(MULTI_ARGS) \ prefix=$(pwd)/$(d_mul)/usr \ mandir=$(pwd)/$(d_mul)/usr/share/man \ infodir=$(pwd)/$(d_doc)/usr/share/info install : # copy libiberty.h ... not too keen on this, but it was requested cp -f include/libiberty.h $(d_bin)/usr/include : # We don't need to distribute everything in binutils and -dev rm -rf $(d_bin)/usr/include/obstack.h rm -f $(d_bin)/usr/man/man1/configure.1 rm -f $(d_doc)/usr/share/info/configure.* $(d_doc)/usr/share/info/standards.* : # *sigh*, bugs.debian.org/213524 rm -f $(d_doc)/usr/share/info/dir* : # Now get rid of just about everything in binutils-multiarch rm -rf $(d_mul)/usr/man $(d_mul)/usr/info $(d_mul)/usr/include rm -rf $(d_mul)/usr/share/man $(d_mul)/usr/share/info $(d_mul)/usr/share/locale : # Get rid of ld for the time being since it's suddenly unhappy when : # linking kernels. Also get rid of the ldscripts for good measure. rm -f $(d_mul)/usr/bin/as $(d_mul)/usr/bin/gasp $(d_mul)/usr/bin/c++filt \ $(d_mul)/usr/bin/ld rm -rf $(d_mul)/usr/lib/ldscripts $(install_dir) $(d_dev)/usr/include/ $(d_dev)/usr/lib/ mv $(d_bin)/usr/include/* $(d_dev)/usr/include/ mv $(d_bin)/usr/lib/*.a $(d_bin)/usr/lib/libbfd.so $(d_bin)/usr/lib/libopcodes.so \ $(d_dev)/usr/lib/ rm -f $(d_mul)/usr/lib/libbfd.so $(d_mul)/usr/lib/libopcodes.so rm -f $(d_mul)/usr/lib/*.la rm -f $(d_mul)/usr/lib/libiberty* : # Get rid of .la files since libtool obviously has no idea about transient paths rm -f $(d_bin)/usr/lib/*.la : # Strip shared libraries $(STRIP) --strip-unneeded $(d_bin)/usr/lib/libbfd-*so $(STRIP) --strip-unneeded $(d_bin)/usr/lib/libopcodes-*so $(STRIP) --strip-unneeded $(d_mul)/usr/lib/libbfd-*so $(STRIP) --strip-unneeded $(d_mul)/usr/lib/libopcodes-*so chmod ugo-x $(d_bin)/usr/lib/*.so $(d_mul)/usr/lib/*.so $(STRIP) $(d_bin)/usr/bin/* $(d_mul)/usr/bin/* : # Don't want /usr/-linux to exist in any package rm -rf $(d_bin)/usr/$(DEB_HOST_GNU_TYPE) rm -rf $(d_mul)/usr/$(DEB_HOST_GNU_TYPE) : # Remove windres manpages rm -f $(d_bin)/usr/share/man/man1/windres.1 rm -f $(d_mul)/usr/share/man/man1/windres.1 : # Remove empty directory rmdir $(d_bin)/usr/include/ touch install-stamp install-hppa64-stamp: checkroot build-hppa64-stamp $(checkdir) rm -fr $(d_hppa64) $(install_dir) $(d_hppa64) $(install_dir) $(d_hppa64)/usr/lib : # install binutils-hppa64 stuff $(MAKE) -C builddir-hppa64 \ CFLAGS="$(CFLAGS)" $(HPPA64_ARGS) \ prefix=$(pwd)/$(d_hppa64)/usr/ \ mandir=$(pwd)/$(d_hppa64)/usr/share/man \ infodir=$(pwd)/$(d_hppa64)/usr/share/info install : # move shared libs to the standard path mv $(d_hppa64)/usr/hppa-linux-gnu/hppa64-linux-gnu/lib/lib*-*.so \ $(d_hppa64)/usr/lib/. : # Now get rid of just about everything in binutils-hppa64 rm -rf $(d_hppa64)/usr/man rm -rf $(d_hppa64)/usr/info rm -rf $(d_hppa64)/usr/include rm -rf $(d_hppa64)/usr/share rm -rf $(d_hppa64)/usr/hppa-linux-gnu rm -rf $(d_hppa64)/usr/lib/libiberty.a : # Strip shared libraries $(STRIP) --strip-unneeded $(d_hppa64)/usr/lib/libbfd-*so $(STRIP) --strip-unneeded $(d_hppa64)/usr/lib/libopcodes-*so chmod ugo-x $(d_hppa64)/usr/lib/*.so $(STRIP) $(d_hppa64)/usr/bin/* : # Don't want /usr/-linux to exist in any package rm -rf $(d_hppa64)/usr/hppa64-linux-gnu touch install-hppa64-stamp ################################################################################ ####################### # binary-indep target # ####################### binary-indep: checkroot build install $(checkdir) rm -f debian/files debian/substvars $(install_dir) $(d_doc)/DEBIAN $(install_script) debian/binutils-doc.postinst $(d_doc)/DEBIAN/postinst $(install_script) debian/binutils-doc.prerm $(d_doc)/DEBIAN/prerm $(install_dir) $(d_doc)/usr/share/doc/$(p_doc)/ $(install_file) debian/changelog $(d_doc)/usr/share/doc/$(p_doc)/changelog.Debian $(install_file) debian/copyright $(d_doc)/usr/share/doc/$(p_doc)/ for i in bfd gas gprof ld; do \ ln -sf ../$(p_bin)/$$i $(d_doc)/usr/share/doc/$(p_doc)/$$i; \ done find $(d_doc)/usr/share/doc/$(p_doc) -type f -maxdepth 1 ! -name copyright | xargs gzip -9 gzip -9 $(d_doc)/usr/share/info/* dpkg-gencontrol -isp -P$(d_doc) -p$(p_doc) chown -R root:root $(d_doc) chmod -R go=rX $(d_doc) [ -x /usr/bin/pkgstriptranslations ] && /usr/bin/pkgstriptranslations || true dpkg --build $(d_doc) .. ################################################################################ ####################### # binary-arch target # ####################### binary-arch: checkroot build install $(checkdir) : # install maintainer scrtips $(install_dir) $(d_bin)/DEBIAN $(install_script) debian/binutils.postinst $(d_bin)/DEBIAN/postinst $(install_script) debian/binutils.postrm $(d_bin)/DEBIAN/postrm $(install_file) debian/binutils.shlibs $(d_bin)/DEBIAN/shlibs $(install_dir) $(d_dev)/DEBIAN $(install_dir) $(d_mul)/DEBIAN $(install_script) debian/binutils-multiarch.postinst $(d_mul)/DEBIAN/postinst $(install_script) debian/binutils-multiarch.postrm $(d_mul)/DEBIAN/postrm $(install_script) debian/binutils-multiarch.preinst $(d_mul)/DEBIAN/preinst $(install_file) debian/binutils-multiarch.shlibs $(d_mul)/DEBIAN/shlibs ifeq ($(DEB_HOST_ARCH),hppa) $(install_dir) $(d_hppa64)/DEBIAN $(install_script) debian/binutils-hppa64.postinst $(d_hppa64)/DEBIAN/postinst $(install_script) debian/binutils-hppa64.postrm $(d_hppa64)/DEBIAN/postrm $(install_file) debian/binutils-hppa64.shlibs $(d_hppa64)/DEBIAN/shlibs endif : # install docs $(install_dir) $(d_bin)/usr/share/doc/$(p_bin)/ $(install_file) debian/changelog $(d_bin)/usr/share/doc/$(p_bin)/changelog.Debian $(install_file) debian/copyright $(d_bin)/usr/share/doc/$(p_bin)/ $(install_dir) $(d_dev)/usr/share/doc/ $(d_mul)/usr/share/doc/ ln -sf $(p_bin) $(d_dev)/usr/share/doc/$(p_dev) ln -sf $(p_bin) $(d_mul)/usr/share/doc/$(p_mul) ifeq ($(DEB_HOST_ARCH),hppa) $(install_dir) $(d_hppa64)/usr/share/doc/ ln -sf $(p_bin) $(d_hppa64)/usr/share/doc/$(p_hppa64) endif $(install_file) $(pwd)/test-summary binutils/NEWS \ debian/README.Debian $(d_bin)/usr/share/doc/$(p_bin)/ $(install_file) binutils/ChangeLog $(d_bin)/usr/share/doc/$(p_bin)/changelog for pkg in bfd gas gprof ld; do \ $(install_dir) $(d_bin)/usr/share/doc/$(p_bin)/$$pkg; \ done $(install_file) bfd/ChangeLog bfd/PORTING bfd/TODO \ $(d_bin)/usr/share/doc/$(p_bin)/bfd/ $(install_file) gas/ChangeLog gas/NEWS $(d_bin)/usr/share/doc/$(p_bin)/gas/ $(install_file) gprof/ChangeLog gprof/TODO gprof/TEST \ $(d_bin)/usr/share/doc/$(p_bin)/gprof/ $(install_file) ld/ChangeLog ld/TODO ld/NEWS \ $(d_bin)/usr/share/doc/$(p_bin)/ld/ : # These only exist in H. J. Lu releases not GNU ones. for dir in binutils bfd gas gprof ld; do \ if [ -f $$dir/ChangeLog.linux ]; then \ $(install_file) $(d_bin)/usr/share/doc/$(p_bin)/$$dir/; \ fi; \ done : # Copy bbconv.pl to the doc dir for use by interested people $(install_file) gprof/bbconv.pl $(d_bin)/usr/share/doc/$(p_bin)/gprof/. : # Compress stuff that needs it gzip -9 $(d_bin)/usr/share/man/man1/* find $(d_bin)/usr/share/doc/$(p_bin)/ -type f ! -name copyright -a ! -name bbconv.pl | xargs gzip -9 : # Finish it all up find $(d_bin) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps dpkg-gencontrol -isp -P$(d_bin) -p$(p_bin) $(CONFLICTS) rm -f debian/substvars dpkg-gencontrol -isp -P$(d_dev) -p$(p_dev) rm -f debian/substvars find $(d_mul) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps dpkg-gencontrol -isp -P$(d_mul) -p$(p_mul) ifeq ($(DEB_HOST_ARCH),hppa) rm -f debian/substvars find $(d_hppa64) -type f | xargs file | grep ELF | cut -d: -f 1 | xargs dpkg-shlibdeps dpkg-gencontrol -isp -P$(d_hppa64) -p$(p_hppa64) endif chown -R root:root $(d_bin) $(d_dev) $(d_mul) chmod -R go=rX $(d_bin) $(d_dev) $(d_mul) [ -x /usr/bin/pkgstriptranslations ] && /usr/bin/pkgstriptranslations || true dpkg --build $(d_bin) .. dpkg --build $(d_dev) .. dpkg --build $(d_mul) .. ifeq ($(DEB_HOST_ARCH),hppa) chown -R root:root $(d_hppa64) chmod -R go=rX $(d_hppa64) dpkg --build $(d_hppa64) .. endif ################################################################################ define checkdir test -f bfd/elf32.c -a -f debian/rules endef # Below here is fairly generic really binary: binary-indep binary-arch checkroot: $(checkdir) test root = "`whoami`" .PHONY: binary binary-arch binary-indep clean checkroot