blob: 2779b26e9154fabee34b839d8e407e468d849fe1 [file] [log] [blame]
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1
VERSION := 4.9.51-imx
ARCH := arm64
DTBS := \
freescale/fsl-imx8mq-phanbell.dtb \
freescale/fsl-imx8mq-yorktown.dtb
DTBS := $(addprefix arch/$(ARCH)/boot/dts/,$(DTBS))
KERNEL_OPTIONS := \
ARCH=arm64 \
CROSS_COMPILE=aarch64-linux-gnu- \
LOCALVERSION=-imx
LDFLAGS :=
BUILD_DIR := $(CURDIR)/debian/build
DESTDIR := $(CURDIR)/debian/linux-image-$(VERSION)
DESTDIR_HEADERS := $(CURDIR)/debian/linux-headers-$(VERSION)
DESTDIR_KBUILD := $(CURDIR)/debian/linux-kbuild-$(VERSION)
%:
dh $@
override_dh_auto_clean:
true
override_dh_auto_build:
+make $(KERNEL_OPTIONS) defconfig
cat debian/defconfig | tee -a .config
+make $(KERNEL_OPTIONS) olddefconfig
+make $(KERNEL_OPTIONS) -j$(shell nproc) Image modules dtbs
override_dh_auto_install:
+make $(KERNEL_OPTIONS) INSTALL_MOD_PATH=$(DESTDIR) modules_install
rm $(DESTDIR)/lib/modules/$(VERSION)/build
rm $(DESTDIR)/lib/modules/$(VERSION)/source
# Setup contents of /boot
install -d $(DESTDIR)/boot
cp arch/$(ARCH)/boot/Image $(DESTDIR)/boot/vmlinuz-$(VERSION)
ln -sf vmlinuz-$(VERSION) $(DESTDIR)/boot/Image
cp System.map $(DESTDIR)/boot/System.map-$(VERSION)
cp .config $(DESTDIR)/boot/config-$(VERSION)
cp $(DTBS) $(DESTDIR)/boot
# Build header directory structure
install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/arm
install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/$(ARCH)/kernel
install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/drivers/staging/android
# Copy module information, include files, and important Makefiles into the header tree
cp -a .config $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
cp -a Module.symvers $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
cp -a include $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
cp -a drivers/staging/android/uapi $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/drivers/staging/android
cp -a arch/$(ARCH)/include $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/$(ARCH)
# Sigh, arm64 headers also need arm headers...
cp -a arch/arm/include $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/arm
cp -a Makefile $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
( \
find arch/$(ARCH) -maxdepth 1 -name 'Makefile*' -print; \
find arch/$(ARCH) \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print; \
find $$(find arch/$(ARCH) \( -name include -o -name scripts \) -type d -print) -print; \
) | cpio -pdm $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
# Clean up any leftover x86 artifacts from the kernel build, and then build scripts
find $(CURDIR)/scripts -type f | xargs file | grep 'x86-' | awk '{print $$1}' | tr -d ':' | xargs rm -f
mkdir -p $(BUILD_DIR)/build-tools/scripts
$(MAKE) $(KERNEL_OPTIONS) \
CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)- \
-C $(BUILD_DIR)/build-tools/scripts -f $(CURDIR)/debian/rules.d/scripts/Makefile \
top_rulesdir=$(CURDIR)/debian/rules.d \
top_srcdir=$(CURDIR) \
OUTDIR=scripts \
install \
DESTDIR=$(DESTDIR_KBUILD) \
prefix=/usr/lib/linux-kbuild-$(VERSION)
# Setup the symlink from the modules directory to the headers
install -d $(DESTDIR_HEADERS)/lib/modules/$(VERSION)
ln -s /usr/src/linux-headers-$(VERSION) $(DESTDIR_HEADERS)/lib/modules/$(VERSION)/build
ln -s /usr/lib/linux-kbuild-$(VERSION)/scripts $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/scripts