#!/usr/bin/make -f include /usr/share/dpkg/architecture.mk include /usr/share/dpkg/pkg-info.mk export DEBIAN_REVISION ?= $(shell echo $(DEB_VERSION) | sed -e 's,.*+dfsg,+dfsg,') ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) export CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)- cross_build_tools ?= y endif # Enable verbose build by default, disable when terse is specified. ifneq (,$(filter terse,$(DEB_BUILD_OPTIONS))) VERBOSE=0 else VERBOSE=1 endif # the upstream build passes LDFLAGS directly to ld instead of calling gcc for # linking; so instead of passing -Wl,foo in LDFLAGS as in automake builds, one # should set LDFLAGS to foo directly comma := , LDFLAGS := $(patsubst -Wl$(comma)%,%,$(LDFLAGS)) notools := $(filter pkg.uboot.notools,$(DEB_BUILD_PROFILES)) # limit builds to only certain subarchitectures # e.g. pkg.uboot.subarch.rockchip will only build rockchip targets. ifeq (,$(filter pkg.uboot.subarch.%,$(DEB_BUILD_PROFILES))) TARGETSUBARCH = . else TARGETSUBARCH = $(patsubst pkg.uboot.subarch.%,%,$(filter pkg.uboot.subarch.%,$(DEB_BUILD_PROFILES))) endif # Enable debugging symbols and remove build paths export HOSTCFLAGS = -g -ffile-prefix-map=$(CURDIR)=. %: dh $@ configs/novena-rawsd_defconfig: configs/novena_defconfig sed -e 's,CONFIG_SPL_FS_FAT=y,# CONFIG_SPL_FS_FAT is not set,' \ configs/novena_defconfig > configs/novena-rawsd_defconfig configs/am335x_boneblack_defconfig: configs/am335x_evm_defconfig sed -e 's,CONFIG_OF_LIST=.*,CONFIG_OF_LIST="am335x-evm am335x-boneblack",g' \ configs/am335x_evm_defconfig > configs/am335x_boneblack_defconfig override_dh_auto_build-arch: TARGETARCH := $(DEB_HOST_ARCH) override_dh_auto_build-arch: build-targets ifeq ($(notools),) override_dh_auto_build-arch: build-tools endif override_dh_auto_build-indep: TARGETARCH := all override_dh_auto_build-indep: build-targets build-targets: configs/novena-rawsd_defconfig configs/am335x_boneblack_defconfig echo run build-targets for $(TARGETARCH) set -e; grep ^$(TARGETARCH)[^a-z0-9] debian/targets \ | grep $(TARGETSUBARCH) \ | while read arch subarch platform bl31 targets; do \ builddir=debian/build/$$platform; \ case $$bl31 in \ /usr/lib/arm-trusted-firmware/*) export BL31=$$bl31 ;; \ *) targets="$$bl31 $$targets" ;\ unset BL31 ;; \ esac; \ case $$platform in \ novena-rawsd) targets="$$targets" ;\ ;; \ *) targets="$$targets uboot.elf" ;\ ;; \ esac;\ case $$subarch in \ -) subpackage="u-boot" ;\ ;; \ *) subpackage="u-boot-$$subarch" ;\ ;; \ esac;\ case $$arch in \ all:armhf) export CROSS_COMPILE=arm-linux-gnueabihf- ;;\ all:arm64) export CROSS_COMPILE=aarch64-linux-gnu- ;;\ all:mips) export CROSS_COMPILE=mips-linux-gnu- ;;\ all:mipsel) export CROSS_COMPILE=mipsel-linux-gnu- ;;\ all:mips64el) export CROSS_COMPILE=mips64el-linux-gnuabi64- ;;\ all:powerpc) export CROSS_COMPILE=powerpc-linux-gnu- ;;\ all:riscv64) export CROSS_COMPILE=riscv64-linux-gnu- ;;\ all:i386) export CROSS_COMPILE=i686-linux-gnu- ;;\ all:amd64) export CROSS_COMPILE=x86_64-linux-gnu- ;;\ *) ;; \ esac;\ case $$subarch in \ sunxi) export SCP=/dev/null ;;\ *) unset SCP ;;\ esac;\ mkdir -p $$builddir; \ dh_auto_build -- V=$(VERBOSE) O=$$builddir $${platform}_defconfig; \ sed -i -e 's,CONFIG_FIT_SIGNATURE=y,# CONFIG_FIT_SIGNATURE is not set,g' $$builddir/.config; \ dh_auto_build -- V=$(VERBOSE) O=$$builddir; \ case "$$targets" in \ *uboot.elf*) \ install -m 644 $$builddir/u-boot $$builddir/uboot.elf; \ $${CROSS_COMPILE}strip --remove-section=.comment \ --remove-section=.note \ $$builddir/uboot.elf; \ ;; \ esac; \ for target in $$targets; do \ chmod -x $$builddir/$$target; \ echo $$builddir/$$target /usr/lib/u-boot/$$platform/ \ >> debian/build/targets.$$subarch; \ echo $$platform >> debian/build/platforms.$$subarch; \ done ; \ cp $$builddir/.config $$builddir/config.$$platform; \ echo $$builddir/config.$$platform /usr/share/doc/$$subpackage/configs/ \ >> debian/build/targets.$$subarch; \ done TOOLSDIR := debian/build/tools build-tools: dh_auto_build -- V=$(VERBOSE) O=$(TOOLSDIR) CROSS_COMPILE=$(CROSS_COMPILE) tools-only_defconfig cp $(TOOLSDIR)/.config $(TOOLSDIR)/config # board-independent tools dh_auto_build -- V=$(VERBOSE) O=$(TOOLSDIR) \ CROSS_COMPILE=$(CROSS_COMPILE) \ CROSS_BUILD_TOOLS=$(cross_build_tools) \ NO_SDL=1 \ tools-only # Only test when tools are built and native. override_dh_auto_test-arch: ifeq ($(notools)$(cross_build_tools),) BASEDIR=$(TOOLSDIR) test/image/test-imagetools.sh endif override_dh_auto_test-indep: # Do not spend time searching for an install target in Makefile. override_dh_auto_install: override_dh_clean: rm -rf debian/build/ rm -f configs/novena-rawsd_defconfig rm -f configs/am335x_boneblack_defconfig rm -f linux.itb linux.its dh_clean find . -type d -name __pycache__ -delete override_dh_gencontrol: debian/bin/update-substvars dh_gencontrol