From aa408bf17c1cb790274e99818177a8f30d5ea7df Mon Sep 17 00:00:00 2001
From: John Vogel <jvogel4@stny.rr.com>
Date: Fri, 13 May 2016 22:44:24 -0400
Subject: [PATCH] Add Makefile

Originally based on Makefile for raspberrypi.
---
 Makefile | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 148 insertions(+)
 create mode 100644 Makefile

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..84a3ced
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,148 @@
+#
+# src/kernel/Makefile
+#
+
+TARGET = arm-crux-linux-gnueabihf
+
+PWD = $(shell pwd)
+WORK = $(PWD)/work
+CROSSTOOLS = /devel/crux-arm/toolchain/crosstools
+
+KERNEL_BRANCH = 4.5.y
+KERNEL_VERSION = 4.5.4
+PATCH_VERSION = 20160513
+
+CONFIG_FILE = config-$(KERNEL_VERSION)-raspberrypi2_$(PATCH_VERSION)
+PATCH_FILE = linux-$(KERNEL_BRANCH)-rpi-$(PATCH_VERSION).patch
+KERNEL_TARBALL = linux-$(KERNEL_VERSION).tar.xz
+
+
+.PHONY: all clean config files image map menuconfig modules
+
+all: image modules map dtb
+
+clean: image-clean modules-clean map-clean dtb-clean
+
+distclean: clean image-distclean modules-distclean dtb-distclean map-distclean
+
+$(PWD)/$(KERNEL_TARBALL):
+	wget -P $(PWD) https://www.kernel.org/pub/linux/kernel/v4.x/$(KERNEL_TARBALL)
+	touch $@
+
+$(PWD)/$(PATCH_FILE):
+	wget -P $(PWD) http://stygian.me/crux-arm/distfiles/$(PATCH_FILE)
+	touch $@
+
+$(PWD)/$(CONFIG_FILE):
+	wget -P $(PWD) http://stygian.me/crux-arm/distfiles/$(CONFIG_FILE)
+	touch $@
+
+files: $(PWD)/$(KERNEL_TARBALL) $(PWD)/$(PATCH_FILE) $(PWD)/$(CONFIG_FILE)
+
+$(WORK)/linux-$(KERNEL_VERSION):
+	bsdtar -C $(WORK) -xf $(PWD)/$(KERNEL_TARBALL)
+	patch -d $(WORK)/linux-$(KERNEL_VERSION) -p1 -i $(PWD)/$(PATCH_FILE)
+	sed -e 's|LINUX_COMPILE_BY=.*|LINUX_COMPILE_BY=devel|' \
+	    -e 's|LINUX_COMPILE_HOST=.*|LINUX_COMPILE_HOST=crux-arm.nu|' \
+	    -i $(WORK)/linux-$(KERNEL_VERSION)/scripts/mkcompile_h
+	touch $@
+
+$(WORK)/linux-$(KERNEL_VERSION)/.config: $(WORK)/linux-$(KERNEL_VERSION)
+	cp -v $(PWD)/$(CONFIG_FILE) $@
+	touch $@
+
+config: files $(WORK)/linux-$(KERNEL_VERSION)/.config
+
+$(WORK)/zImage-$(KERNEL_VERSION): config
+	cd $(WORK)/linux-$(KERNEL_VERSION) && \
+		export PATH=$(CROSSTOOLS)/bin:$$PATH && \
+		export LD_LIBRARY_PATH=$(CROSSTOOLS)/lib:$$LD_LIBRARY_PATH && \
+		make ARCH=arm CROSS_COMPILE=$(TARGET)- zImage
+	cp -v $(WORK)/linux-$(KERNEL_VERSION)/arch/arm/boot/zImage $@
+	touch $@
+
+$(WORK)/kernel7-$(KERNEL_VERSION).img: $(WORK)/zImage-$(KERNEL_VERSION)
+	chmod +x $(WORK)/linux-$(KERNEL_VERSION)/scripts/mkknlimg
+	cd $(WORK)/linux-$(KERNEL_VERSION) && \
+		./scripts/mkknlimg $(WORK)/zImage-$(KERNEL_VERSION) $@
+	touch $@
+
+image: $(WORK)/kernel7-$(KERNEL_VERSION).img
+
+image-clean:
+	rm -vf $(WORK)/zImage-$(KERNEL_VERSION)
+	rm -vf $(WORK)/kernel7-$(KERNEL_VERSION).img
+	if [ -d $(WORK)/linux-$(KERNEL_VERSION)/.config ]; then \
+		cd $(WORK)/linux-$(KERNEL_VERSION) && \
+			export PATH=$(CROSSTOOLS)/bin:$$PATH && \
+			export LD_LIBRARY_PATH=$(CROSSTOOLS)/lib:$$LD_LIBRARY_PATH && \
+			make ARCH=arm CROSS_COMPILE=$(TARGET)- clean ; \
+	fi
+
+image-distclean: image-clean
+	rm -vrf $(WORK)/linux-$(KERNEL_VERSION)
+
+$(WORK)/dtb-$(KERNEL_VERSION): $(WORK)/linux-$(KERNEL_VERSION)
+	cd $(WORK)/linux-$(KERNEL_VERSION) && \
+		export PATH=$(CROSSTOOLS)/bin:$$PATH && \
+		export LD_LIBRARY_PATH=$(CROSSTOOLS):$$LD_LIBRARY_PATH && \
+		make ARCH=arm CROSS_COMPILE=$(TARGET)- dtbs
+	rm -rf $(WORK)/dtb
+	mkdir -p $(WORK)/dtb/overlays
+	cp $(WORK)/linux-$(KERNEL_VERSION)/arch/arm/boot/dts/*.dtb $(WORK)/dtb
+	cp $(WORK)/linux-$(KERNEL_VERSION)/arch/arm/boot/dts/overlays/*.dtb* $(WORK)/dtb/overlays
+	mv $(WORK)/dtb $(WORK)/dtb-$(KERNEL_VERSION)
+
+$(WORK)/dtb-$(KERNEL_VERSION).tar.xz: $(WORK)/dtb-$(KERNEL_VERSION)
+	cd $(WORK)/dtb-$(KERNEL_VERSION) && \
+		bsdtar --uid 0 --gid 0 -cvJf $(WORK)/dtb-$(KERNEL_VERSION).tar.xz *
+
+dtb: $(WORK)/dtb-$(KERNEL_VERSION).tar.xz
+
+dtb-clean:
+	rm -vf $(WORK)/dtb-$(KERNEL_VERSION).tar.xz
+	rm -vrf $(WORK)/dtb-$(KERNEL_VERSION)
+
+dtb-distclean: dtb-clean
+
+$(WORK)/modules-$(KERNEL_VERSION): $(WORK)/linux-$(KERNEL_VERSION)
+	cd $(WORK)/linux-$(KERNEL_VERSION) && \
+		export PATH=$(CROSSTOOLS)/bin:$$PATH && \
+		export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)/lib:$$LD_LIBRARY_PATH && \
+		make ARCH=arm CROSS_COMPILE=$(TARGET)- modules && \
+		make ARCH=arm CROSS_COMPILE=$(TARGET)- INSTALL_MOD_PATH=$(WORK)/modules-$(KERNEL_VERSION) modules_install
+	rm -f $(WORK)/modules-$(KERNEL_VERSION)/lib/modules/$(KERNEL_VERSION)/{source,build}
+	touch $(WORK)/modules-$(KERNEL_VERSION)
+
+$(WORK)/modules-$(KERNEL_VERSION).tar.xz: $(WORK)/modules-$(KERNEL_VERSION)
+	cd $(WORK)/modules-$(KERNEL_VERSION) && \
+		bsdtar --uid 0 --gid 0 -cvJf $(WORK)/modules-$(KERNEL_VERSION).tar.xz *
+	touch $(WORK)/modules-$(KERNEL_VERSION).tar.xz
+
+modules: $(WORK)/modules-$(KERNEL_VERSION).tar.xz
+
+modules-clean:
+	rm -vf $(WORK)/modules-$(KERNEL_VERSION).tar.xz
+	rm -vrf $(WORK)/modules-$(KERNEL_VERSION)
+
+modules-distclean: modules-clean
+
+$(WORK)/System.map-$(KERNEL_VERSION): $(WORK)/zImage-$(KERNEL_VERSION)
+	cp $(WORK)/linux-$(KERNEL_VERSION)/System.map $(WORK)/System.map-$(KERNEL_VERSION)
+	touch $(WORK)/System.map-$(KERNEL_VERSION)
+
+map: $(WORK)/System.map-$(KERNEL_VERSION)
+
+map-clean:
+	rm -vf $(WORK)/System.map-$(KERNEL_VERSION)
+
+map-distclean: map-clean
+
+menuconfig: $(WORK)/linux-$(KERNEL_VERSION)
+	cd $(WORK)/linux-$(KERNEL_VERSION) && \
+		export PATH=$(CROSSTOOLS)/bin:$$PATH && \
+		export LD_LIBRARY_PATH=$(CROSSTOOLS)/lib:$$LD_LIBRARY_PATH && \
+		make ARCH=arm CROSS_COMPILE=$(TARGET)- menuconfig
+	touch $(WORK)/linux-$(KERNEL_VERSION)
+
+# End of file
-- 
2.45.2