# Makefile for building a crosstool-NG cross-toolchain Debian package file # Copyright (C)2025, Philip Munts dba Munts Technologies. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. MUNTSOS ?= ../.. include $(MUNTSOS)/include/$(BOARDNAME).mk INSTALLDIR := gcc-$(CONFIGURE_NAME) GCC_VERN := $(shell $(INSTALLDIR)/bin/$(CONFIGURE_NAME)-gcc --version | awk '/gcc/ { print $$4 }') GCC_VERS := $(shell $(INSTALLDIR)/bin/$(CONFIGURE_NAME)-gcc --version | awk '/gcc/ { print $$0 }') BUILDNUM ?= 1 OSNAME ?= unknown PKGNAME := gcc-$(TOOLCHAIN_NAME) PKGVER := $(GCC_VERN)-$(shell date +%Y.%j).$(BUILDNUM) PKGARCH := $(shell dpkg --print-architecture) PKGSUFFIX := $(PKGVER)-$(OSNAME)-$(PKGARCH) PKGDIR := $(PKGNAME)-$(PKGSUFFIX) PKGFILE := $(PKGNAME)-$(PKGSUFFIX).deb GPRBUILDVER := 25.0.1 ifeq ($(PKGARCH), amd64) GPRBUILDDIST := $(HOME)/.local/share/alire/toolchains/gprbuild_25.0.1_9a2e6cfb endif ifeq ($(PKGARCH), arm64) GPRBUILDDIST := $(HOME)/.local/share/alire/toolchains/gprbuild_25.0.1_5e58c08e endif GPRBUILDDIR := libexec/gprbuild-alire$(GPRBUILDVER) GPRBUILDDEST := $(PKGDIR)$(TOOLCHAIN_DIR)/$(GPRBUILDDIR) default: package.deb ################################################################################ # Create Debian package package.deb: build.done mkdir -p $(PKGDIR)/DEBIAN install -cm 0644 control $(PKGDIR)/DEBIAN sed -i s/@@NAME@@/$(PKGNAME)/g $(PKGDIR)/DEBIAN/control sed -i s/@@ARCH@@/$(PKGARCH)/g $(PKGDIR)/DEBIAN/control sed -i s/@@VERSION@@/$(PKGVER)/g $(PKGDIR)/DEBIAN/control sed -i s/@@BOARDNAME@@/$(BOARDNAME)/g $(PKGDIR)/DEBIAN/control mkdir -p $(PKGDIR)/usr/local cp -R -P -p $(INSTALLDIR) $(PKGDIR)$(TOOLCHAIN_DIR) mkdir -p $(GPRBUILDDEST) cp -R -P -p $(GPRBUILDDIST)/* $(GPRBUILDDEST) rm -rf $(GPRBUILDDEST)/alire* rm -rf $(GPRBUILDDEST)/doinstall rm -rf $(GPRBUILDDEST)/share cd $(GPRBUILDDEST)/bin && for P in * ; do ln -s ../$(GPRBUILDDIR)/bin/$$P ../../../bin/$$P ; done mkdir -p $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr install -cm 0644 template.cgpr $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr sed -i 's/@@CONFIGURE_NAME@@/$(CONFIGURE_NAME)/g' $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr sed -i 's:@@GPRBUILD_DIR@@:$(GPRBUILDDIR):g' $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr sed -i 's/@@TARGET_NAME@@/$(CONFIGURE_NAME)/g' $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr sed -i 's:@@TOOLCHAIN_DIR@@:$(TOOLCHAIN_DIR):g' $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr sed -i 's/@@TOOLCHAIN_VERN@@/$(GCC_VERN)/g' $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr sed -i 's/@@TOOLCHAIN_VERS@@/$(GCC_VERS)/g' $(PKGDIR)$(TOOLCHAIN_DIR)/share/gpr/$(CONFIGURE_NAME).cgpr chmod -R ugo-w $(PKGDIR)/usr fakeroot dpkg-deb --build $(PKGDIR) chmod -R u+w $(PKGDIR)/usr ################################################################################ # Remove working files clean: -chmod -R u+w $(PKGDIR) rm -rf $(PKGDIR) $(PKGFILE) reallyclean: clean -chmod -R u+w gcc* rm -rf .config* build* config* *.done gcc* include distclean: reallyclean rm -rf distfiles