#!/usr/bin/make -f include /usr/share/dpkg/architecture.mk include /usr/share/dpkg/pkg-info.mk # uncomment for debugging # export DH_VERBOSE=1 # The version for gcc-x.y-doc, used in "Depends:" field. DOC_VER_4.4 := 4.4.7-4~ DOC_VER_4.6 := 4.6.4-3~ DOC_VER_4.7 := 4.7.4-1~ DOC_VER_4.8 := 4.8.4-1~ DOC_VER_4.9 := 4.9.2-1~ DOC_VER_5 := 5.1.0-1~ DOC_VER_6 := 6.4.0-1~ DOC_VER_7 := 7.2.0-1~ DOC_VER_8 := 8.3.0-1~ DOC_VER_9 := 9.2.0-1~ DOC_VER_10 := 10.1.0-1~ # The version for binary packages: gcc-doc-base, gcc-doc, etc. # Automatic set debian revision, adapted from gcc-defaults' rules. VDEF := $(DEB_VERSION) VMAJOR := $(shell echo $(VDEF) | sed -e 's/.*:\([0-9]*\).*/\1/g') VLOCAL := $(shell echo $(VDEF) | sed -n -e 's/[^~]*\(~.*\)/\1/;T;p') #DEBIAN_EPOCH := 5 DEBIAN_EPOCH := $(shell echo $(VDEF) | sed -e 's/:.*//g') #PKG_VER_4.4 := 4.4.7-10 #PKG_VER_4.6 := 4.6.4-9 #PKG_VER_4.7 := 4.7.4-5 #PKG_VER_4.8 := 4.8.4-1 #PKG_VER_4.9 := 4.9.2-1 #PKG_VER_5 := 5.1.0-1 #PKG_VER_6 := 6.1.0-1 PKG_VER_4.4 := 4.4.7-$(shell expr $(VMAJOR) - 5)$(VLOCAL) PKG_VER_4.6 := 4.6.4-$(shell expr $(VMAJOR) - 6)$(VLOCAL) PKG_VER_4.7 := 4.7.4-$(shell expr $(VMAJOR) - 10)$(VLOCAL) PKG_VER_4.8 := 4.8.4-$(shell expr $(VMAJOR) - 14)$(VLOCAL) PKG_VER_4.9 := 4.9.2-$(shell expr $(VMAJOR) - 14)$(VLOCAL) PKG_VER_5 := 5.1.0-$(shell expr $(VMAJOR) - 14)$(VLOCAL) PKG_VER_6 := 6.4.0-$(shell expr $(VMAJOR) - 16)$(VLOCAL) PKG_VER_7 := 7.2.0-$(shell expr $(VMAJOR) - 15)$(VLOCAL) PKG_VER_8 := 8.3.0-$(shell expr $(VMAJOR) - 17)$(VLOCAL) PKG_VER_9 := 9.2.0-$(shell expr $(VMAJOR) - 18)$(VLOCAL) PKG_VER_10 := 10.1.0-$(shell expr $(VMAJOR) - 20)$(VLOCAL) PKG_VER_BASE := $(PKG_VER_10) # Keep in sync with gcc-defaults, gccgo doesn't exist on all archs go_archs = alpha amd64 arm64 armel armhf i386 ia64 \ mips mips64 mips64el mipsel \ powerpc powerpcspe ppc64 ppc64el s390 s390x sparc sparc64 x32 no_packages := ifeq (,$(filter $(DEB_HOST_ARCH),$(go_archs))) no_packages += gccgo endif BASES_ALL := cpp gcc gfortran gnat gccgo BASES := $(filter-out $(no_packages), $(BASES_ALL)) GENFILES := $(patsubst %,debian/%-doc.links, $(BASES)) # Some stub info files, with direntry but no real content, for # info(1) to work. GENFILES += $(patsubst %,info/%.texi, $(BASES)) GENFILES_INFO := $(patsubst %,info/%-default.info, $(BASES)) # get default version by symlinks, eg. /usr/bin/gcc -> gcc-4.7 PREFIX_BIN := /usr/bin/ get_default_version = $(shell bash -c 'readlink $(PREFIX_BIN)$(1)|perl -pe "s/^.*-//"') # default versions depend on arch CPP_VER := $(call get_default_version,cpp) GCC_VER := $(call get_default_version,gcc) GFORTRAN_VER := $(call get_default_version,gfortran) GNAT_VER := $(call get_default_version,gnat) ifneq (,$(filter $(DEB_HOST_ARCH),$(go_archs))) GCCGO_VER := $(call get_default_version,gccgo) endif CPP_DEP_VER := cpp-$(CPP_VER)-doc (>= $(DOC_VER_$(CPP_VER))) GCC_DEP_VER := gcc-$(GCC_VER)-doc (>= $(DOC_VER_$(GCC_VER))) GFORTRAN_DEP_VER := gfortran-$(GFORTRAN_VER)-doc (>= $(DOC_VER_$(GFORTRAN_VER))) GNAT_DEP_VER := gnat-$(GNAT_VER)-doc (>= $(DOC_VER_$(GNAT_VER))) ifneq (,$(filter $(DEB_HOST_ARCH),$(go_archs))) GCCGO_DEP_VER := gccgo-$(GCCGO_VER)-doc (>= $(DOC_VER_$(GCCGO_VER))) endif # for substitution in control.in, *-doc.links uppercase = $(shell echo $(x) | tr a-z A-Z) sedcmd1 = s/%$(uppercase)_DEP_VER%/$($(uppercase)_DEP_VER)/g; SEDCMD1 := $(foreach x,$(BASES),$(sedcmd1)) sedcmd2 = s/%$(uppercase)_VER%/$($(uppercase)_VER)/g; SEDCMD2 := $(foreach x,$(BASES),$(sedcmd2)) SEDCMD_GO = s/%GCCGO_ARCHS%/$(go_archs)/g; # for setting binary package versions # uppercase function: uc = $(shell echo $(1)| tr a-z A-Z) # individual command: set_version = dh_gencontrol -p$(1)-doc -- -v$(DEBIAN_EPOCH):$(PKG_VER_$($(call uc, $(1))_VER)); # all commands: SETTING_VERSIONS = $(foreach base,$(BASES), $(call set_version, $(base))) # new-style dh default rule %: dh $@ debian/control: debian/control.in debian/rules dh_testdir sed '$(SEDCMD1) $(SEDCMD_GO)' < debian/control.in > debian/control $(GENFILES): % : %.in debian/rules dh_testdir sed '$(SEDCMD2)' < $< > $@ $(GENFILES_INFO): %-default.info : %.texi dh_testdir makeinfo $< -o $@ override_dh_auto_build: debian/control $(GENFILES) $(GENFILES_INFO) override_dh_clean: dh_clean $(GENFILES) $(GENFILES_INFO) override_dh_installchangelogs-arch: dh_installchangelogs -a # These packages should be treated as non-native. for packname in $(BASES); do \ mv debian/$$packname-doc/usr/share/doc/$$packname-doc/changelog debian/$$packname-doc/usr/share/doc/$$packname-doc/changelog.Debian; \ done override_dh_installchangelogs-indep: dh_installchangelogs -i mv debian/gcc-doc-base/usr/share/doc/gcc-doc-base/changelog \ debian/gcc-doc-base/usr/share/doc/gcc-doc-base/changelog.Debian override_dh_installdocs-arch: dh_installdocs -a -Ngcc-doc-base -A debian/README override_dh_installdocs-indep: dh_installdocs -pgcc-doc-base dh_installdocs -i --remaining-packages -A debian/README override_dh_gencontrol-arch: # call dh_gencontrol one at a time for *-doc packages $(SETTING_VERSIONS) dh_gencontrol -a --remaining-packages override_dh_gencontrol-indep: dh_gencontrol -pgcc-doc-base -- -v$(PKG_VER_BASE) dh_gencontrol -i --remaining-packages # debug helper show-versions: # VDEF <$(VDEF)> # EPOCH <$(DEBIAN_EPOCH)> # VMAJOR <$(VMAJOR)> # VLOCAL <$(VLOCAL)> # cpp $(CPP_VER) # gcc $(GCC_VER) # gfortran $(GFORTRAN_VER) # gnat $(GNAT_VER) # gccgo $(GCCGO_VER) # pkg-ver $(PKG_VER_4.4) # pkg-ver $(PKG_VER_4.6) # pkg-ver $(PKG_VER_4.7) # pkg-ver $(PKG_VER_4.8) # pkg-ver $(PKG_VER_4.9) # pkg-ver $(PKG_VER_5) # pkg-ver $(PKG_VER_6) # pkg-ver $(PKG_VER_7) # pkg-ver $(PKG_VER_8) # pkg-ver $(PKG_VER_9) # pkg-ver $(PKG_VER_10) .PHONY: show-versions