Blame view

buildroot/buildroot-2016.08.1/package/linux-headers/linux-headers.mk 5.1 KB
6b13f685e   김민수   BSP 최초 추가
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
  ################################################################################
  #
  # linux-headers
  #
  ################################################################################
  
  # This package is used to provide Linux kernel headers for the
  # internal toolchain backend.
  
  ifeq ($(BR2_KERNEL_HEADERS_AS_KERNEL),y)
  
  LINUX_HEADERS_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
  
  # Compute LINUX_HEADERS_SOURCE and LINUX_HEADERS_SITE from the configuration
  ifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y)
  LINUX_HEADERS_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION))
  LINUX_HEADERS_SITE = $(patsubst %/,%,$(dir $(LINUX_HEADERS_TARBALL)))
  LINUX_HEADERS_SOURCE = $(notdir $(LINUX_HEADERS_TARBALL))
  BR_NO_CHECK_HASH_FOR += $(LINUX_HEADERS_SOURCE)
  else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_LOCAL),y)
  LINUX_HEADERS_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_LOCAL_PATH))
  LINUX_HEADERS_SITE_METHOD = local
  else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y)
  LINUX_HEADERS_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
  LINUX_HEADERS_SITE_METHOD = git
  # use same git tarball as linux kernel
  LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz
  else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y)
  LINUX_HEADERS_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
  LINUX_HEADERS_SITE_METHOD = hg
  # use same hg tarball as linux kernel
  LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz
  else
  LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz
  ifeq ($(BR2_LINUX_KERNEL_CUSTOM_VERSION),y)
  BR_NO_CHECK_HASH_FOR += $(LINUX_HEADERS_SOURCE)
  endif
  # In X.Y.Z, get X and Y. We replace dots and dashes by spaces in order
  # to use the $(word) function. We support versions such as 4.0, 3.1,
  # 2.6.32, 2.6.32-rc1, 3.0-rc6, etc.
  ifeq ($(findstring x2.6.,x$(LINUX_HEADERS_VERSION)),x2.6.)
  LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
  else ifeq ($(findstring x3.,x$(LINUX_HEADERS_VERSION)),x3.)
  LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v3.x
  else ifeq ($(findstring x4.,x$(LINUX_HEADERS_VERSION)),x4.)
  LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v4.x
  endif
  # release candidates are in testing/ subdir
  ifneq ($(findstring -rc,$(LINUX_HEADERS_VERSION)),)
  LINUX_HEADERS_SITE := $(LINUX_HEADERS_SITE)/testing
  endif # -rc
  endif
  
  LINUX_HEADERS_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
  
  # We rely on the generic package infrastructure to download and apply
  # remote patches (downloaded from ftp, http or https). For local
  # patches, we can't rely on that infrastructure, because there might
  # be directories in the patch list (unlike for other packages).
  LINUX_HEADERS_PATCH = $(filter ftp://% http://% https://%,$(LINUX_HEADERS_PATCHES))
  
  define LINUX_HEADERS_APPLY_LOCAL_PATCHES
  	for p in $(filter-out ftp://% http://% https://%,$(LINUX_HEADERS_PATCHES)) ; do \
  		if test -d $$p ; then \
  			$(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \
  		else \
  			$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \
  		fi \
  	done
  endef
  
  LINUX_HEADERS_POST_PATCH_HOOKS += LINUX_HEADERS_APPLY_LOCAL_PATCHES
  
  else # ! BR2_KERNEL_HEADERS_AS_KERNEL
  
  LINUX_HEADERS_VERSION = $(call qstrip,$(BR2_DEFAULT_KERNEL_HEADERS))
  ifeq ($(findstring x2.6.,x$(LINUX_HEADERS_VERSION)),x2.6.)
  LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
  else ifeq ($(findstring x3.,x$(LINUX_HEADERS_VERSION)),x3.)
  LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v3.x
  else ifeq ($(findstring x4.,x$(LINUX_HEADERS_VERSION)),x4.)
  LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v4.x
  endif
  LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz
  
  endif # ! BR2_KERNEL_HEADERS_AS_KERNEL
  
  LINUX_HEADERS_LICENSE = GPLv2
  LINUX_HEADERS_LICENSE_FILES = COPYING
  
  LINUX_HEADERS_INSTALL_STAGING = YES
  
  # linux-headers is part of the toolchain so disable the toolchain dependency
  LINUX_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO
  
  # For some architectures (eg. Arc, Cris, Hexagon, ia64, parisc,
  # score and xtensa), the Linux buildsystem tries to call the
  # cross-compiler, although it is not needed at all.
  # This results in seemingly errors like:
  #   [...]/scripts/gcc-version.sh: line 26: arc-linux-uclibc-gcc: command not found
  # Those can be safely ignored.
  
  # This step is required to have a separate linux headers location for
  # uClibc building. This way uClibc doesn't modify linux headers on installation
  # of "its" headers
  define LINUX_HEADERS_CONFIGURE_CMDS
  	(cd $(@D); \
  		$(TARGET_MAKE_ENV) $(MAKE) \
  			ARCH=$(KERNEL_ARCH) \
  			HOSTCC="$(HOSTCC)" \
  			HOSTCFLAGS="$(HOSTCFLAGS)" \
  			HOSTCXX="$(HOSTCXX)" \
  			INSTALL_HDR_PATH=$(@D)/usr \
  			headers_install)
  endef
  
  define LINUX_HEADERS_INSTALL_STAGING_CMDS
  	(cd $(@D); \
  		$(TARGET_MAKE_ENV) $(MAKE) \
  			ARCH=$(KERNEL_ARCH) \
  			HOSTCC="$(HOSTCC)" \
  			HOSTCFLAGS="$(HOSTCFLAGS)" \
  			HOSTCXX="$(HOSTCXX)" \
  			INSTALL_HDR_PATH=$(STAGING_DIR)/usr \
  			headers_install)
  endef
  
  ifeq ($(BR2_KERNEL_HEADERS_VERSION)$(BR2_KERNEL_HEADERS_AS_KERNEL),y)
  define LINUX_HEADERS_CHECK_VERSION
  	$(call check_kernel_headers_version,\
  		$(STAGING_DIR),\
  		$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)))
  endef
  LINUX_HEADERS_POST_INSTALL_STAGING_HOOKS += LINUX_HEADERS_CHECK_VERSION
  endif
  
  $(eval $(generic-package))