summaryrefslogtreecommitdiffstats
path: root/rules/pre/kernel.make
blob: de8cd8a13ad0190dfadbee06ac740bc8866dcd64 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# -*-makefile-*-
#
# Copyright (C) 2003, 2009, 2010 by Marc Kleine-Budde <mkl@pengutronix.de>
#           (C) 2008 by Wolfram Sang <w.sang@pengutronix.de>
#
# For further information about the PTXdist project and license conditions
# see the README file.
#

kernel-version-split = $(subst -, ,$(subst ., ,$($(strip $(1))_VERSION)))
kernel-major = $(word 1,$(call kernel-version-split, $(1)))
kernel-minor = $(word 2,$(call kernel-version-split, $(1)))
kernel-micro = $(word 3,$(call kernel-version-split, $(1)))

KERNEL_VERSION		:= $(call remove_quotes,$(PTXCONF_KERNEL_VERSION))
KERNEL_VERSION_MAJOR	:= $(call kernel-major,KERNEL)
KERNEL_VERSION_MINOR	:= $(call kernel-minor,KERNEL)
KERNEL_VERSION_MICRO	:= $(call kernel-micro,KERNEL)

KERNEL_HEADER_VERSION		:= $(call remove_quotes,$(PTXCONF_KERNEL_HEADER_VERSION))
KERNEL_HEADER_VERSION_MAJOR	:= $(call kernel-major,KERNEL_HEADER)
KERNEL_HEADER_VERSION_MINOR	:= $(call kernel-minor,KERNEL_HEADER)
KERNEL_HEADER_VERSION_MICRO	:= $(call kernel-micro,KERNEL_HEADER)

GENERIC_KERNEL_ARCH := $(PTXCONF_ARCH_STRING)
ifdef PTXCONF_ARCH_X86
GENERIC_KERNEL_ARCH := "x86"
endif
ifdef PTXCONF_ARCH_PPC
GENERIC_KERNEL_ARCH := "powerpc"
endif

#
# Starting with 4.12-rc1, Linus no longer provides signed tarballs for
# pre-release ("-rc") kernels. Download the version automatically generated
# by cgit.
#
ifneq ($(findstring -rc,$(KERNEL_VERSION)),)
KERNEL_NEEDS_GIT_URL := $(call ptx/force-sh, test $(KERNEL_VERSION_MAJOR) -ge 5 -o \( $(KERNEL_VERSION_MAJOR) -eq 4 -a $(KERNEL_VERSION_MINOR) -ge 12 \) && echo y)
endif
ifneq ($(findstring -rc,$(KERNEL_HEADER_VERSION)),)
KERNEL_HEADER_NEEDS_GIT_URL := $(call ptx/force-sh, test $(KERNEL_HEADER_VERSION_MAJOR) -ge 5 -o \( $(KERNEL_HEADER_VERSION_MAJOR) -eq 4 -a $(KERNEL_HEADER_VERSION_MINOR) -ge 12 \) && echo y)
endif

KERNEL_HEADERS_DIR	:= $(PTXDIST_SYSROOT_TARGET)/kernel-headers
KERNEL_HEADERS_INCLUDE_DIR := $(KERNEL_HEADERS_DIR)/include

kernel/url = \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).x/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).x/testing/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).x/testing/v$(call kernel-major,$(1)).$(call kernel-minor,$(1))/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).x/longterm/v$(call kernel-major,$(1)).$(call kernel-minor,$(1))/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	\
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).$(call kernel-minor,$(1))/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).$(call kernel-minor,$(1))/testing/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).$(call kernel-minor,$(1))/testing/v$(call kernel-major,$(1)).$(call kernel-minor,$(1)).$(call kernel-micro,$(1))/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \
	$(call ptx/mirror, KERNEL, kernel/v$(call kernel-major,$(1)).$(call kernel-minor,$(1))/longterm/v$(call kernel-major,$(1)).$(call kernel-minor,$(1)).$(call kernel-micro,$(1))/linux-$($(1)_VERSION).$($(1)_SUFFIX)) \

kernel-url = \
	$(call kernel/url,$(strip $(1)))

kernel/opts = \
	$(PARALLELMFLAGS) \
	V=$(PTXDIST_VERBOSE) \
	HOSTCC=$(HOSTCC) \
	ARCH=$(GENERIC_KERNEL_ARCH) \
	CROSS_COMPILE=$(COMPILER_PREFIX) \
	DEPMOD=$(PTXDIST_SYSROOT_HOST)/sbin/depmod \
	\
	INSTALL_MOD_PATH=$($(1)_PKGDIR) \
	PTX_KERNEL_DIR=$($(1)_DIR)

kernel-opts = \
	$(call kernel/opts,$(strip $(1)))

#
# Blacklist for all low-level code, e.g. kernel and bootloaders
#
PTXDIST_LOWLEVEL_WRAPPER_BLACKLIST := \
	TARGET_HARDEN_STACK \
	TARGET_HARDEN_STACKCLASH \
	TARGET_HARDEN_FORTIFY \
	TARGET_HARDEN_RELRO \
	TARGET_HARDEN_BINDNOW \
	TARGET_HARDEN_PIE \
	TARGET_DEBUG \
	TARGET_BUILD_ID

#
# handle special compiler
#
ifdef PTXCONF_KERNEL
    ifneq ($(PTXCONF_COMPILER_PREFIX),$(PTXCONF_COMPILER_PREFIX_KERNEL))
        ifeq ($(wildcard selected_toolchain_kernel/$(PTXCONF_COMPILER_PREFIX_KERNEL)gcc),)
            $(warning *** no 'selected_toolchain_kernel' link found. Please create a link)
            $(warning *** 'selected_toolchain_kernel' to the bin directory of your)
            $(warning '$(PTXCONF_COMPILER_PREFIX_KERNEL)' toolchain)
            $(error )
        endif
        KERNEL_TOOLCHAIN_LINK := $(PTXDIST_WORKSPACE)/selected_toolchain_kernel/
    endif
endif

KERNEL_CROSS_COMPILE := $(KERNEL_TOOLCHAIN_LINK)$(PTXCONF_COMPILER_PREFIX_KERNEL)

# vim: syntax=make