Blame view

buildroot/buildroot-2016.08.1/boot/uboot/uboot.mk 10.4 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
  ################################################################################
  #
  # uboot
  #
  ################################################################################
  
  UBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION))
  UBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME))
  
  UBOOT_LICENSE = GPLv2+
  UBOOT_LICENSE_FILES = Licenses/gpl-2.0.txt
  
  UBOOT_INSTALL_IMAGES = YES
  
  ifeq ($(UBOOT_VERSION),custom)
  # Handle custom U-Boot tarballs as specified by the configuration
  UBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION))
  UBOOT_SITE = $(patsubst %/,%,$(dir $(UBOOT_TARBALL)))
  UBOOT_SOURCE = $(notdir $(UBOOT_TARBALL))
  BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE)
  else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT),y)
  UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL))
  UBOOT_SITE_METHOD = git
  else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_HG),y)
  UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL))
  UBOOT_SITE_METHOD = hg
  else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_SVN),y)
  UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL))
  UBOOT_SITE_METHOD = svn
  else
  # Handle stable official U-Boot versions
  UBOOT_SITE = ftp://ftp.denx.de/pub/u-boot
  UBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2
  ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y)
  BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE)
  endif
  endif
  
  ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y)
  UBOOT_BIN = u-boot
  # To make elf usable for debuging on ARC use special target
  ifeq ($(BR2_arc),y)
  UBOOT_MAKE_TARGET = mdbtrick
  endif
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
  UBOOT_BIN = u-boot.kwb
  UBOOT_MAKE_TARGET = $(UBOOT_BIN)
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y)
  UBOOT_BIN = u-boot.ais
  UBOOT_MAKE_TARGET = $(UBOOT_BIN)
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
  UBOOT_BIN = u-boot.ldr
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y)
  UBOOT_BIN = u-boot-nand.bin
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y)
  UBOOT_BIN = u-boot-dtb.img
  UBOOT_MAKE_TARGET = all $(UBOOT_BIN)
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y)
  UBOOT_BIN = u-boot.img
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y)
  UBOOT_BIN = u-boot.imx
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)
  UBOOT_BIN = u-boot.sb
  UBOOT_MAKE_TARGET = $(UBOOT_BIN)
  # mxsimage needs OpenSSL
  UBOOT_DEPENDENCIES += host-elftosb host-openssl
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)
  # BootStream (.sb) is generated by U-Boot, we convert it to SD format
  UBOOT_BIN = u-boot.sd
  UBOOT_MAKE_TARGET = u-boot.sb
  UBOOT_DEPENDENCIES += host-elftosb host-openssl
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
  UBOOT_BIN = u-boot.nand
  UBOOT_MAKE_TARGET = u-boot.sb
  UBOOT_DEPENDENCIES += host-elftosb host-openssl
  else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
  UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
  else
  UBOOT_BIN = u-boot.bin
  UBOOT_BIN_IFT = $(UBOOT_BIN).ift
  endif
  
  # The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so
  # we have to special case it. Similar for i386/x86_64 -> x86
  ifeq ($(KERNEL_ARCH),arm64)
  UBOOT_ARCH = arm
  else ifneq ($(filter $(KERNEL_ARCH),i386 x86_64),)
  UBOOT_ARCH = x86
  else
  UBOOT_ARCH = $(KERNEL_ARCH)
  endif
  
  UBOOT_MAKE_OPTS += \
  	CROSS_COMPILE="$(TARGET_CROSS)" \
  	ARCH=$(UBOOT_ARCH) \
  	HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
  	HOSTLDFLAGS="$(HOST_LDFLAGS)"
  
  ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y)
  UBOOT_DEPENDENCIES += host-dtc
  endif
  
  # prior to u-boot 2013.10 the license info was in COPYING. Copy it so
  # legal-info finds it
  define UBOOT_COPY_OLD_LICENSE_FILE
  	if [ -f $(@D)/COPYING ]; then \
  		$(INSTALL) -m 0644 -D $(@D)/COPYING $(@D)/Licenses/gpl-2.0.txt; \
  	fi
  endef
  
  UBOOT_POST_EXTRACT_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE
  UBOOT_POST_RSYNC_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE
  
  # Analogous code exists in linux/linux.mk. Basically, the generic
  # package infrastructure handles downloading and applying remote
  # patches. Local patches are handled depending on whether they are
  # directories or files.
  UBOOT_PATCHES = $(call qstrip,$(BR2_TARGET_UBOOT_PATCH))
  UBOOT_PATCH = $(filter ftp://% http://% https://%,$(UBOOT_PATCHES))
  
  define UBOOT_APPLY_LOCAL_PATCHES
  	for p in $(filter-out ftp://% http://% https://%,$(UBOOT_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
  UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_LOCAL_PATCHES
  
  ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)
  define UBOOT_CONFIGURE_CMDS
  	$(TARGET_CONFIGURE_OPTS) 	\
  		$(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS)		\
  		$(UBOOT_BOARD_NAME)_config
  endef
  else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)
  ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y)
  UBOOT_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG))_defconfig
  else ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y)
  UBOOT_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE))
  endif # BR2_TARGET_UBOOT_USE_DEFCONFIG
  
  UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
  UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS)
  endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
  
  define UBOOT_BUILD_CMDS
  	$(TARGET_CONFIGURE_OPTS) 	\
  		$(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) 		\
  		$(UBOOT_MAKE_TARGET)
  	$(if $(BR2_TARGET_UBOOT_FORMAT_SD),
  		$(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd)
  	$(if $(BR2_TARGET_UBOOT_FORMAT_NAND),
  		$(@D)/tools/mxsboot \
  			-w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE)	\
  			-o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE)	\
  			-e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE)	\
  			nand $(@D)/u-boot.sb $(@D)/u-boot.nand)
  endef
  
  define UBOOT_BUILD_OMAP_IFT
  	$(HOST_DIR)/usr/bin/gpsign -f $(@D)/u-boot.bin \
  		-c $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))
  endef
  
  define UBOOT_INSTALL_IMAGES_CMDS
  	cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/
  	$(if $(BR2_TARGET_UBOOT_FORMAT_NAND),
  		cp -dpf $(@D)/$(UBOOT_MAKE_TARGET) $(BINARIES_DIR))
  	$(if $(BR2_TARGET_UBOOT_SPL),
  		$(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \
  			cp -dpf $(@D)/$(f) $(BINARIES_DIR)/
  		)
  	)
  	$(if $(BR2_TARGET_UBOOT_ENVIMAGE),
  		cat $(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)) | \
  			$(HOST_DIR)/usr/bin/mkenvimage -s $(BR2_TARGET_UBOOT_ENVIMAGE_SIZE) \
  			$(if $(BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT),-r) \
  			-o $(BINARIES_DIR)/uboot-env.bin -)
  endef
  
  define UBOOT_INSTALL_OMAP_IFT_IMAGE
  	cp -dpf $(@D)/$(UBOOT_BIN_IFT) $(BINARIES_DIR)/
  endef
  
  ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y)
  ifeq ($(BR_BUILDING),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)),)
  $(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting)
  endif
  ifeq ($(wildcard $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))),)
  $(error gpsign config file $(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG) not found. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting)
  endif
  endif
  UBOOT_DEPENDENCIES += host-omap-u-boot-utils
  UBOOT_POST_BUILD_HOOKS += UBOOT_BUILD_OMAP_IFT
  UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_OMAP_IFT_IMAGE
  endif
  
  ifeq ($(BR2_TARGET_UBOOT_ZYNQ_IMAGE),y)
  define UBOOT_GENERATE_ZYNQ_IMAGE
  	$(HOST_DIR)/usr/bin/python2 \
  		$(HOST_DIR)/usr/bin/zynq-boot-bin.py \
  		-u $(@D)/$(firstword $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME))) \
  		-o $(BINARIES_DIR)/BOOT.BIN
  endef
  UBOOT_DEPENDENCIES += host-zynq-boot-bin
  UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_GENERATE_ZYNQ_IMAGE
  endif
  
  ifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC),y)
  define UBOOT_CRC_ALTERA_SOCFPGA_IMAGE
  	$(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \
  		$(HOST_DIR)/usr/bin/mkpimage \
  			-o $(BINARIES_DIR)/$(notdir $(call qstrip,$(f))).crc \
  			$(@D)/$(call qstrip,$(f))
  	)
  endef
  UBOOT_DEPENDENCIES += host-mkpimage
  UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_CRC_ALTERA_SOCFPGA_IMAGE
  endif
  
  ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE),y)
  ifeq ($(BR_BUILDING),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)),)
  $(error Please define a source file for Uboot environment (BR2_TARGET_UBOOT_ENVIMAGE_SOURCE setting))
  endif
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SIZE)),)
  $(error Please provide Uboot environment size (BR2_TARGET_UBOOT_ENVIMAGE_SIZE setting))
  endif
  endif
  UBOOT_DEPENDENCIES += host-uboot-tools
  endif
  
  ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy)
  
  #
  # Check U-Boot board name (for legacy) or the defconfig/custom config
  # file options (for kconfig)
  #
  ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)
  ifeq ($(UBOOT_BOARD_NAME),)
  $(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)
  endif # UBOOT_BOARD_NAME
  else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)
  ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG)),)
  $(error No board defconfig name specified, check your BR2_TARGET_UBOOT_DEFCONFIG setting)
  endif # qstrip BR2_TARGET_UBOOT_BOARD_DEFCONFIG
  endif # BR2_TARGET_UBOOT_USE_DEFCONFIG
  ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)),)
  $(error No board configuration file specified, check your BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE setting)
  endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
  endif # BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
  endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
  
  #
  # Check custom version option
  #
  ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE)),)
  $(error No custom U-Boot version specified. Check your BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE setting)
  endif # qstrip BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE
  endif # BR2_TARGET_UBOOT_CUSTOM_VERSION
  
  #
  # Check custom tarball option
  #
  ifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)),)
  $(error No custom U-Boot tarball specified. Check your BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION setting)
  endif # qstrip BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
  endif # BR2_TARGET_UBOOT_CUSTOM_TARBALL
  
  #
  # Check Git/Mercurial repo options
  #
  ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT)$(BR2_TARGET_UBOOT_CUSTOM_HG),y)
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)),)
  $(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_URL setting)
  endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_URL
  ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION)),)
  $(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION setting)
  endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION
  endif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG
  
  endif # BR2_TARGET_UBOOT && BR_BUILDING
  
  ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)
  $(eval $(generic-package))
  else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)
  $(eval $(kconfig-package))
  endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY