77 lines
2.6 KiB
Makefile
77 lines
2.6 KiB
Makefile
# Makefile - hhl - /usr/src/world/linux-mainline
|
|
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
|
|
#
|
|
distname = linux
|
|
default_goal = installkernel
|
|
include world.mk
|
|
srcdir = $(basedir)/build/src-world-$(arch)/linux-$(linux_version)
|
|
objdir = $(basedir)/build/obj-world-$(arch)/linux-$(linux_version)
|
|
|
|
config ?= $(wkgdir)/config-$(arch)-$(linux_version).config
|
|
|
|
ifeq ($(filter x86_64 i486 i586 i686 i786, $(arch)), $(arch))
|
|
_arch = x86
|
|
image = bzImage
|
|
else ifeq ($(arch), armv7l)
|
|
_arch = arm
|
|
image = zImage
|
|
else
|
|
image = Image.gz
|
|
endif
|
|
ifeq ($(arch), aarch64)
|
|
_arch = arm64
|
|
else ifeq ($(arch), riscv64)
|
|
_arch = riscv
|
|
endif
|
|
|
|
installkernel: $(objdir)/.installed
|
|
|
|
buildkernel: $(objdir)/.built
|
|
|
|
$(objdir)/.mrproper: $(srcdir)/.dirstamp | $(objdir)
|
|
$(MAKE) -C ${srcdir} mrproper
|
|
touch $@
|
|
|
|
$(objdir)/.config: $(objdir)/.mrproper
|
|
$(info $(grn)=== Applying default kernel config ===$(reset))
|
|
cat ${config} > $(objdir)/.config
|
|
KBUILD_OUTPUT=$(objdir) $(MAKE) -C $(srcdir) ARCH=$(_arch) CROSS_COMPILE=$(tgt)- olddefconfig
|
|
|
|
menuconfig: $(objdir)/.mrproper
|
|
$(info $(grn)=== Applying default kernel config ===$(reset))
|
|
cat ${config} > $(objdir)/.config
|
|
KBUILD_OUTPUT=$(objdir) $(MAKE) -C $(srcdir) ARCH=$(_arch) CROSS_COMPILE=$(tgt)- olddefconfig
|
|
KBUILD_OUTPUT=$(objdir) $(MAKE) -C $(srcdir) ARCH=$(_arch) CROSS_COMPILE=$(tgt)- menuconfig
|
|
|
|
$(objdir)/.built: $(objdir)/.config
|
|
$(info $(grn)=== Building Linux kernel ===$(reset))
|
|
KBUILD_OUTPUT=$(objdir) $(MAKE) $(makeflags) ARCH=$(_arch) CROSS_COMPILE=$(tgt)- -C $(srcdir)
|
|
touch $@
|
|
|
|
$(objdir)/.modules_installed: $(objdir)/.built
|
|
$(info $(grn)=== Installing kernel modules ===$(reset))
|
|
KBUILD_OUTPUT=$(objdir) INSTALL_MOD_PATH=$(DESTDIR) $(MAKE) -C $(srcdir) modules_install
|
|
touch $@
|
|
|
|
$(objdir)/.docs_installed: $(objdir)/.built
|
|
$(info $(grn)=== Installing kernel documentation ===$(reset))
|
|
install -d $(docdir)/linux-$(linux_version)
|
|
cp -r $(srcdir)/Documentation/* $(docdir)/linux-$(linux_version)
|
|
touch $@
|
|
|
|
$(objdir)/.installed: $(objdir)/.modules_installed $(objdir)/.docs_installed
|
|
$(info $(grn)=== Installing kernel ===$(reset))
|
|
install -m644 $(objdir)/arch/$(_arch)/boot/$(image) $(DESTDIR)/boot/vmlinuz-$(linux_version)-$(os_abbrev)-$(os_version)
|
|
install -m644 $(objdir)/System.map $(DESTDIR)/boot/System.map-$(linux_version)
|
|
install -m644 $(objdir)/.config $(DESTDIR)/boot/config-$(linux_version)
|
|
touch $@
|
|
|
|
$(objdir):
|
|
install -d $(objdir)
|
|
|
|
$(srcdir)/.dirstamp:
|
|
$(info $(grn)=== Extracting $(distlocal) ===$(reset))
|
|
tar -xf $(distlocal) -C $(basedir)/build/src-world-$(arch)
|
|
touch $@
|
|
|
|
.PHONY: buildkernel installkernel
|