github.com/stackdocker/rkt@v0.10.1-0.20151109095037-1aa827478248/stage1/usr_from_kvm/kernel.mk (about) 1 # custom kernel compilation 2 KERNEL_VERSION := 4.1.3 3 KERNEL_TMPDIR := $(UFK_TMPDIR)/kernel 4 KERNEL_NAME := linux-$(KERNEL_VERSION) 5 KERNEL_TARBALL := $(KERNEL_NAME).tar.xz 6 KERNEL_TARGET_FILE := $(KERNEL_TMPDIR)/$(KERNEL_TARBALL) 7 KERNEL_SRCDIR := $(KERNEL_TMPDIR)/$(KERNEL_NAME) 8 KERNEL_BUILDDIR := $(abspath $(KERNEL_TMPDIR)/build-$(KERNEL_VERSION)) 9 KERNEL_URL := https://www.kernel.org/pub/linux/kernel/v4.x/$(KERNEL_TARBALL) 10 KERNEL_MAKEFILE := $(KERNEL_SRCDIR)/Makefile 11 KERNEL_STUFFDIR := $(MK_SRCDIR)/kernel 12 KERNEL_SRC_CONFIG := $(KERNEL_STUFFDIR)/cutdown-config 13 KERNEL_PATCHESDIR := $(KERNEL_STUFFDIR)/patches 14 KERNEL_PATCHES := $(abspath $(KERNEL_PATCHESDIR)/*.patch) 15 KERNEL_BUILD_CONFIG := $(KERNEL_BUILDDIR)/.config 16 KERNEL_BZIMAGE := $(KERNEL_BUILDDIR)/arch/x86/boot/bzImage 17 KERNEL_ACI_BZIMAGE := $(S1_RF_ACIROOTFSDIR)/bzImage 18 19 $(call setup-stamp-file,KERNEL_STAMP,/build_kernel) 20 $(call setup-stamp-file,KERNEL_BZIMAGE_STAMP,/bzimage) 21 $(call setup-stamp-file,KERNEL_PATCH_STAMP,/patch_kernel) 22 $(call setup-stamp-file,KERNEL_DEPS_STAMP,/deps) 23 $(call setup-dep-file,KERNEL_PATCHES_DEPMK) 24 $(call setup-clean-file,KERNEL_SRC_CLEANMK,/src) 25 $(call setup-clean-file,KERNEL_BUILD_CLEANMK,/build) 26 $(call setup-filelist-file,KERNEL_PATCHES_FILELIST,/patches) 27 $(call setup-filelist-file,KERNEL_BUILD_FILELIST,/build) 28 $(call setup-filelist-file,KERNEL_SRC_FILELIST,/src) 29 $(call setup-stamp-file,KERNEL_SRC_CLEAN_STAMP,/src-clean) 30 $(call setup-stamp-file,KERNEL_BUILD_CLEAN_STAMP,/build-clean) 31 32 CREATE_DIRS += $(KERNEL_TMPDIR) $(KERNEL_BUILDDIR) 33 CLEAN_DIRS += $(KERNEL_SRCDIR) 34 INSTALL_FILES += $(KERNEL_SRC_CONFIG):$(KERNEL_BUILD_CONFIG):- 35 S1_RF_INSTALL_FILES += $(KERNEL_BZIMAGE):$(KERNEL_ACI_BZIMAGE):- 36 S1_RF_SECONDARY_STAMPS += $(KERNEL_STAMP) 37 CLEAN_FILES += $(KERNEL_TARGET_FILE) 38 39 $(call generate-stamp-rule,$(KERNEL_STAMP),$(KERNEL_ACI_BZIMAGE) $(KERNEL_DEPS_STAMP) $(KERNEL_BUILD_CLEAN_STAMP) $(KERNEL_SRC_CLEAN_STAMP)) 40 41 # $(KERNEL_ACI_BZIMAGE) has a dependency on $(KERNEL_BZIMAGE), which 42 # is actually provided by $(KERNEL_BZIMAGE_STAMP) 43 $(KERNEL_BZIMAGE): $(KERNEL_BZIMAGE_STAMP) 44 45 # This stamp is to make sure that building linux kernel has finished. 46 $(call generate-stamp-rule,$(KERNEL_BZIMAGE_STAMP),$(KERNEL_BUILD_CONFIG) $(KERNEL_PATCH_STAMP),, \ 47 $(call vb,vt,BUILD EXT,bzImage) \ 48 $$(MAKE) $(call vl2,--silent) -C "$(KERNEL_SRCDIR)" O="$(KERNEL_BUILDDIR)" V=0 bzImage $(call vl2,>/dev/null)) 49 50 # Generate filelist of a builddir. Can happen only after the building 51 # finished. 52 $(KERNEL_BUILD_FILELIST): $(KERNEL_BZIMAGE_STAMP) 53 $(call generate-deep-filelist,$(KERNEL_BUILD_FILELIST),$(KERNEL_BUILDDIR)) 54 55 # Generate clean.mk cleaning builddir. 56 $(call generate-clean-mk,$(KERNEL_BUILD_CLEAN_STAMP),$(KERNEL_BUILD_CLEANMK),$(KERNEL_BUILD_FILELIST),$(KERNEL_BUILDDIR)) 57 58 $(call generate-stamp-rule,$(KERNEL_PATCH_STAMP),$(KERNEL_MAKEFILE),, \ 59 shopt -s nullglob; \ 60 for p in $(KERNEL_PATCHES); do \ 61 $(call vb,v2,PATCH,$$$${p#$(MK_TOPLEVEL_ABS_SRCDIR)/}) \ 62 patch $(call vl3,--silent )--directory="$(KERNEL_SRCDIR)" --strip=1 --forward <"$$$${p}"; \ 63 done) 64 65 # Generate a filelist of srcdir. Can happen after the sources were 66 # patched. 67 $(KERNEL_SRC_FILELIST): $(KERNEL_PATCH_STAMP) 68 $(call generate-deep-filelist,$(KERNEL_SRC_FILELIST),$(KERNEL_SRCDIR)) 69 70 # Generate clean.mk cleaning the sources. 71 $(call generate-clean-mk,$(KERNEL_SRC_CLEAN_STAMP),$(KERNEL_SRC_CLEANMK),$(KERNEL_SRC_FILELIST),$(KERNEL_SRCDIR)) 72 73 # Generate a filelist of patches. Can happen anytime. 74 $(call generate-patches-filelist,$(KERNEL_PATCHES_FILELIST),$(KERNEL_PATCHESDIR)) 75 76 # Generate a dep.mk on those patches, so if patches change, sources 77 # are removed, extracted again and repatched. 78 $(call generate-glob-deps,$(KERNEL_DEPS_STAMP),$(KERNEL_MAKEFILE),$(KERNEL_PATCHES_DEPMK),.patch,$(KERNEL_PATCHES_FILELIST),$(KERNEL_PATCHESDIR),normal) 79 80 $(call forward-vars,$(KERNEL_MAKEFILE), \ 81 KERNEL_SRCDIR KERNEL_TMPDIR) 82 $(KERNEL_MAKEFILE): $(KERNEL_TARGET_FILE) 83 $(VQ) \ 84 set -e; \ 85 rm -rf "$(KERNEL_SRCDIR)"; \ 86 $(call vb,vt,UNTAR,$(call vsp,$<) => $(call vsp,$(KERNEL_TMPDIR))) \ 87 tar --extract --xz --touch --file="$<" --directory="$(KERNEL_TMPDIR)" 88 89 $(call forward-vars,$(KERNEL_TARGET_FILE), \ 90 KERNEL_URL) 91 $(KERNEL_TARGET_FILE): | $(KERNEL_TMPDIR) 92 $(VQ) \ 93 $(call vb,vt,WGET,$(KERNEL_URL) => $(call vsp,$@)) \ 94 wget $(call vl3,--quiet) --tries=20 --output-document="$@" "$(KERNEL_URL)" 95 96 $(call undefine-namespaces,KERNEL)