# # 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 -f $(WORK)/zImage-$(KERNEL_VERSION) rm -f $(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 -rf $(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 -f $(WORK)/dtb-$(KERNEL_VERSION).tar.xz rm -rf $(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 -f $(WORK)/modules-$(KERNEL_VERSION).tar.xz rm -rf $(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 -f $(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