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)