blob: f564dc14e02f42fbf8638c1d9da07120fbd1a8d6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
LINUX_SRC?=$(BUILDSYS_SOURCES)/linux
LINUX_BUILD?=$(BUILDSYS_BUILD)/$(ARCH)/$(TARGET)/linux
LINUX_GIT_REPO ?= git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
LINUX_DEFAULT_TARGET?=zImage
.PHONY: linux
linux: $(LINUX_BUILD)/.config $(LINUX_DEFAULT_TARGET)
## Obtain the sources:
$(LINUX_SRC):
git clone $(LINUX_GIT_REPO) $(LINUX_SRC)
J?=8
LINUX_CMD := \
$(MAKE) -C $(LINUX_SRC) \
O=$(LINUX_BUILD) \
ARCH=$(ARCH) \
CROSS_COMPILE=$(CROSS_COMPILE) \
INSTALL_MOD_PATH=$(TARGET_MOD_DIR) \
-j$(J)
.PHONY: vmlinux zImage
uImage vmlinux bzImage zImage dtbs modules modules_install: $(LINUX_BUILD)/.config
$(LINUX_CMD) $@
# Linux knows how to make DTB's
%.dtb: $(LINUX_SRC)
$(LINUX_CMD) $@
# Target Configurations should define their expected DTB
dtb: $(DTB)
linux_help: $(LINUX_SRC)
$(LINUX_CMD) help
linux_kernel: zImage
## External Module support
module:
$(LINUX_CMD) modules M=$(M)
$(LINUX_CMD) modules_install M=$(M)
## Configuration and Build Preparation
$(LINUX_BUILD):
@mkdir -p $@
menuconfig: $(LINUX_SRC) $(LINUX_BUILD)
$(LINUX_CMD) $@
@echo "Copying $(LINUX_BUILD)/.config -> $(BUILDSYS_TARGET_CONF)"
@cp $(LINUX_BUILD)/.config $(BUILDSYS_TARGET_CONF)/kernel.config
%_defconfig: $(LINUX_SRC) $(LINUX_BUILD)
@echo " [CONFIG] Configuring from $@"
$(LINUX_CMD) $@
defconfig $(LINUX_BUILD)/.config: | $(LINUX_SRC) $(LINUX_BUILD)
@echo "Making DEFCONFIG to create $(LINUX_BUILD)/.config from $(DEFCONFIG)"
$(MAKE) $(DEFCONFIG)
@echo "Copying $(LINUX_BUILD)/.config -> $(BUILDSYS_TARGET_CONF)"
@cp $(LINUX_BUILD)/.config $(BUILDSYS_TARGET_CONF)/kernel.config
# Local store of the config file for tracking
kernel.config $(BUILDSYS_TARGET_CONF)/kernel.config: $(LINUX_BUILD)/.config
@echo "Copying $(LINUX_BUILD)/.config -> $(BUILDSYS_TARGET_CONF)"
@cp $(LINUX_BUILD)/.config $(BUILDSYS_TARGET_CONF)/kernel.config
# Update .config with the kernel.config in the target configuration
linux_restore_config:
@echo "Copying $(BUILDSYS_TARGET_CONF)/kernel.config -> $(LINUX_BUILD)/.config"
@cp $(BUILDSYS_TARGET_CONF)/kernel.config $(LINUX_BUILD)/.config
# Exported Defines for external packages to utilise
LINUX_DTBS:=$(LINUX_BUILD)/arch/arm/boot/dts/
LINUX_VMLINUX:=$(LINUX_BUILD)/vmlinux
linux-distclean:
rm -r $(LINUX_BUILD)
|