Blame view

buildroot/buildroot-2016.08.1/boot/barebox/barebox.mk 5.11 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
  ################################################################################
  #
  # barebox
  #
  ################################################################################
  
  ################################################################################
  # inner-barebox-package -- generates the KConfig logic and make targets needed
  # to support a barebox package. All barebox packages are built from the same
  # source (origin, version and patches). The remainder of the package
  # configuration is unique to each barebox package.
  #
  #  argument 1 is the uppercase package name (used for variable name-space)
  ################################################################################
  
  define inner-barebox-package
  
  $(1)_VERSION = $$(call qstrip,$$(BR2_TARGET_BAREBOX_VERSION))
  
  ifeq ($$($(1)_VERSION),custom)
  # Handle custom Barebox tarballs as specified by the configuration
  $(1)_TARBALL = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION))
  $(1)_SITE = $$(patsubst %/,%,$$(dir $$($(1)_TARBALL)))
  $(1)_SOURCE = $$(notdir $$($(1)_TARBALL))
  BR_NO_CHECK_HASH_FOR += $$($(1)_SOURCE)
  else ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_GIT),y)
  $(1)_SITE = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL))
  $(1)_SITE_METHOD = git
  else
  # Handle stable official Barebox versions
  $(1)_SOURCE = barebox-$$($(1)_VERSION).tar.bz2
  $(1)_SITE = http://www.barebox.org/download
  ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_VERSION),y)
  BR_NO_CHECK_HASH_FOR += $$($(1)_SOURCE)
  endif
  endif
  
  $(1)_DEPENDENCIES = host-lzop
  $(1)_LICENSE = GPLv2 with exceptions
  $(1)_LICENSE_FILES = COPYING
  
  $(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH))
  
  ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),)
  define $(1)_APPLY_CUSTOM_PATCHES
  	$$(APPLY_PATCHES) $$(@D) \
  		$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \*.patch
  endef
  
  $(1)_POST_PATCH_HOOKS += $(1)_APPLY_CUSTOM_PATCHES
  endif
  
  $(1)_INSTALL_IMAGES = YES
  ifneq ($$(BR2_TARGET_$(1)_BAREBOXENV),y)
  $(1)_INSTALL_TARGET = NO
  endif
  
  ifeq ($$(KERNEL_ARCH),i386)
  $(1)_ARCH = x86
  else ifeq ($$(KERNEL_ARCH),x86_64)
  $(1)_ARCH = x86
  else ifeq ($$(KERNEL_ARCH),powerpc)
  $(1)_ARCH = ppc
  else ifeq ($$(KERNEL_ARCH),arm64)
  $(1)_ARCH = arm
  else
  $(1)_ARCH = $$(KERNEL_ARCH)
  endif
  
  $(1)_MAKE_FLAGS = ARCH=$$($(1)_ARCH) CROSS_COMPILE="$$(TARGET_CROSS)"
  $(1)_MAKE_ENV = $$(TARGET_MAKE_ENV)
  
  ifeq ($$(BR2_TARGET_$(1)_USE_DEFCONFIG),y)
  $(1)_KCONFIG_DEFCONFIG = $$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))_defconfig
  else ifeq ($$(BR2_TARGET_$(1)_USE_CUSTOM_CONFIG),y)
  $(1)_KCONFIG_FILE = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE))
  endif
  
  $(1)_KCONFIG_FRAGMENT_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_CONFIG_FRAGMENT_FILES))
  $(1)_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
  $(1)_KCONFIG_OPTS = $$($(1)_MAKE_FLAGS)
  
  ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y)
  define $(1)_BUILD_BAREBOXENV_CMDS
  	$$(TARGET_CC) $$(TARGET_CFLAGS) $$(TARGET_LDFLAGS) -o $$(@D)/bareboxenv \
  		$$(@D)/scripts/bareboxenv.c
  endef
  endif
  
  ifeq ($$(BR2_TARGET_$(1)_CUSTOM_ENV),y)
  $(1)_ENV_NAME = $$(notdir $$(call qstrip,\
  	$$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)))
  define $(1)_BUILD_CUSTOM_ENV
  	$$(@D)/scripts/bareboxenv -s \
  		$$(call qstrip, $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)) \
  		$$(@D)/$$($(1)_ENV_NAME)
  endef
  define $(1)_INSTALL_CUSTOM_ENV
  	cp $$(@D)/$$($(1)_ENV_NAME) $$(BINARIES_DIR)
  endef
  endif
  
  ifneq ($$($(1)_CUSTOM_EMBEDDED_ENV_PATH),)
  define $(1)_KCONFIG_FIXUP_CMDS
  	$$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_ENVIRONMENT,$$(@D)/.config)
  	$$(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENVIRONMENT_PATH,"$$($(1)_CUSTOM_EMBEDDED_ENV_PATH)",$$(@D)/.config)
  endef
  endif
  
  define $(1)_BUILD_CMDS
  	$$($(1)_BUILD_BAREBOXENV_CMDS)
  	$$(TARGET_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D)
  	$$($(1)_BUILD_CUSTOM_ENV)
  endef
  
  $(1)_IMAGE_FILE = $$(call qstrip,$$(BR2_TARGET_$(1)_IMAGE_FILE))
  
  define $(1)_INSTALL_IMAGES_CMDS
  	if test -n "$$($(1)_IMAGE_FILE)"; then \
  		cp -L $$(@D)/$$($(1)_IMAGE_FILE) $$(BINARIES_DIR) ; \
  	elif test -h $$(@D)/barebox-flash-image ; then \
  		cp -L $$(@D)/barebox-flash-image $$(BINARIES_DIR)/barebox.bin ; \
  	else \
  		cp $$(@D)/barebox.bin $$(BINARIES_DIR);\
  	fi
  	$$($(1)_INSTALL_CUSTOM_ENV)
  endef
  
  ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y)
  define $(1)_INSTALL_TARGET_CMDS
  	cp $$(@D)/bareboxenv $$(TARGET_DIR)/usr/bin
  endef
  endif
  
  # Checks to give errors that the user can understand
  # Must be before we call to kconfig-package
  ifeq ($$(BR2_TARGET_$(1))$$(BR_BUILDING),yy)
  # We must use the user-supplied kconfig value, because
  # $(1)_KCONFIG_DEFCONFIG will at least contain the
  # trailing _defconfig
  ifeq ($$(or $$($(1)_KCONFIG_FILE),$$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))),)
  $$(error No Barebox config. Check your BR2_TARGET_$(1)_BOARD_DEFCONFIG or BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE settings)
  endif
  endif
  
  $$(eval $$(kconfig-package))
  
  endef
  
  ################################################################################
  # barebox-package -- the target generator macro for barebox packages
  ################################################################################
  
  barebox-package=$(call inner-barebox-package,$(call UPPERCASE,$(pkgname)))
  
  include boot/barebox/barebox/barebox.mk
  include boot/barebox/barebox-aux/barebox-aux.mk