|
|
|
#
|
|
|
|
# (C) Copyright 2000-2006
|
|
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
#
|
|
|
|
|
|
|
|
# Enable all the config-independent tools
|
|
|
|
ifneq ($(HOST_TOOLS_ALL),)
|
|
|
|
CONFIG_LCD_LOGO = y
|
|
|
|
CONFIG_CMD_LOADS = y
|
|
|
|
CONFIG_CMD_NET = y
|
|
|
|
CONFIG_XWAY_SWAP_BYTES = y
|
|
|
|
CONFIG_NETCONSOLE = y
|
|
|
|
CONFIG_SHA1_CHECK_UB_IMG = y
|
|
|
|
endif
|
|
|
|
|
|
|
|
subdir-$(HOST_TOOLS_ALL) += easylogo
|
|
|
|
subdir-$(HOST_TOOLS_ALL) += gdb
|
|
|
|
|
|
|
|
# Merge all the different vars for envcrc into one
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_EMBEDDED) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_DATAFLASH) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y
|
|
|
|
ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y
|
|
|
|
CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params
|
|
|
|
|
|
|
|
# TODO: CONFIG_CMD_LICENSE does not work
|
|
|
|
hostprogs-$(CONFIG_CMD_LICENSE) += bin2header
|
|
|
|
hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo
|
|
|
|
hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo
|
|
|
|
HOSTCFLAGS_bmp_logo.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_BUILD_ENVCRC) += envcrc
|
|
|
|
envcrc-objs := envcrc.o lib/crc32.o common/env_embedded.o lib/sha1.o
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr
|
|
|
|
HOSTCFLAGS_gen_eth_addr.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_CMD_LOADS) += img2srec
|
|
|
|
HOSTCFLAGS_img2srec.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes
|
|
|
|
HOSTCFLAGS_xway-swap-bytes.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-y += mkenvimage
|
|
|
|
mkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o
|
|
|
|
|
|
|
|
hostprogs-y += dumpimage mkimage
|
|
|
|
hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info fit_check_sign
|
|
|
|
|
|
|
|
FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o
|
|
|
|
# Flattened device tree objects
|
|
|
|
LIBFDT_OBJS := $(addprefix lib/libfdt/, \
|
|
|
|
fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_wip.o)
|
|
|
|
RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \
|
|
|
|
rsa-sign.o rsa-verify.o rsa-checksum.o)
|
|
|
|
|
|
|
|
# common objs for dumpimage and mkimage
|
|
|
|
dumpimage-mkimage-objs := aisimage.o \
|
|
|
|
atmelimage.o \
|
|
|
|
$(FIT_SIG_OBJS-y) \
|
|
|
|
common/bootm.o \
|
|
|
|
lib/crc32.o \
|
|
|
|
default_image.o \
|
|
|
|
lib/fdtdec_common.o \
|
|
|
|
lib/fdtdec.o \
|
|
|
|
fit_common.o \
|
|
|
|
fit_image.o \
|
|
|
|
gpimage.o \
|
|
|
|
gpimage-common.o \
|
|
|
|
common/image-fit.o \
|
|
|
|
image-host.o \
|
|
|
|
common/image.o \
|
|
|
|
imagetool.o \
|
|
|
|
imximage.o \
|
|
|
|
kwbimage.o \
|
|
|
|
lib/md5.o \
|
|
|
|
mxsimage.o \
|
|
|
|
omapimage.o \
|
|
|
|
os_support.o \
|
|
|
|
pblimage.o \
|
|
|
|
pbl_crc32.o \
|
|
|
|
lib/sha1.o \
|
|
|
|
lib/sha256.o \
|
|
|
|
ublimage.o \
|
|
|
|
$(LIBFDT_OBJS) \
|
|
|
|
$(RSA_OBJS-y)
|
|
|
|
|
|
|
|
dumpimage-objs := $(dumpimage-mkimage-objs) dumpimage.o
|
|
|
|
mkimage-objs := $(dumpimage-mkimage-objs) mkimage.o
|
|
|
|
fit_info-objs := $(dumpimage-mkimage-objs) fit_info.o
|
|
|
|
fit_check_sign-objs := $(dumpimage-mkimage-objs) fit_check_sign.o
|
|
|
|
|
|
|
|
# TODO(sjg@chromium.org): Is this correct on Mac OS?
|
|
|
|
|
|
|
|
ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
|
|
|
|
# Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
|
|
|
|
# the mxsimage support within tools/mxsimage.c .
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
11 years ago
|
|
|
HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef CONFIG_FIT_SIGNATURE
|
|
|
|
# This affects include/image.h, but including the board config file
|
|
|
|
# is tricky, so manually define this options here.
|
|
|
|
HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE
|
|
|
|
endif
|
|
|
|
|
|
|
|
# MXSImage needs LibSSL
|
|
|
|
ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),)
|
|
|
|
HOSTLOADLIBES_mkimage += -lssl -lcrypto
|
|
|
|
endif
|
|
|
|
|
|
|
|
HOSTLOADLIBES_dumpimage := $(HOSTLOADLIBES_mkimage)
|
|
|
|
HOSTLOADLIBES_fit_info := $(HOSTLOADLIBES_mkimage)
|
|
|
|
HOSTLOADLIBES_fit_check_sign := $(HOSTLOADLIBES_mkimage)
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_EXYNOS5250) += mkexynosspl
|
|
|
|
hostprogs-$(CONFIG_EXYNOS5420) += mkexynosspl
|
|
|
|
HOSTCFLAGS_mkexynosspl.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_MX23) += mxsboot
|
|
|
|
hostprogs-$(CONFIG_MX28) += mxsboot
|
|
|
|
HOSTCFLAGS_mxsboot.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_SUNXI) += mksunxiboot
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_NETCONSOLE) += ncb
|
|
|
|
hostprogs-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1
|
|
|
|
|
|
|
|
ubsha1-objs := os_support.o ubsha1.o lib/sha1.o
|
|
|
|
|
|
|
|
HOSTCFLAGS_ubsha1.o := -pedantic
|
|
|
|
|
|
|
|
hostprogs-$(CONFIG_KIRKWOOD) += kwboot
|
|
|
|
hostprogs-y += proftool
|
|
|
|
hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela
|
|
|
|
|
|
|
|
# We build some files with extra pedantic flags to try to minimize things
|
|
|
|
# that won't build on some weird host compiler -- though there are lots of
|
|
|
|
# exceptions for files that aren't complaint.
|
|
|
|
HOSTCFLAGS_crc32.o := -pedantic
|
|
|
|
HOSTCFLAGS_md5.o := -pedantic
|
|
|
|
HOSTCFLAGS_sha1.o := -pedantic
|
|
|
|
HOSTCFLAGS_sha256.o := -pedantic
|
|
|
|
|
|
|
|
# Don't build by default
|
|
|
|
#hostprogs-$(CONFIG_PPC) += mpc86x_clk
|
|
|
|
#HOSTCFLAGS_mpc86x_clk.o := -pedantic
|
|
|
|
|
|
|
|
quiet_cmd_wrap = WRAP $@
|
|
|
|
cmd_wrap = echo "\#include <$(srctree)/$(patsubst $(obj)/%,%,$@)>" >$@
|
|
|
|
|
|
|
|
$(obj)/lib/%.c $(obj)/common/%.c:
|
|
|
|
$(call cmd,wrap)
|
|
|
|
|
|
|
|
clean-dirs := lib common
|
|
|
|
|
|
|
|
always := $(hostprogs-y)
|
|
|
|
|
|
|
|
# Generated LCD/video logo
|
|
|
|
LOGO_H = $(objtree)/include/bmp_logo.h
|
|
|
|
LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
|
|
|
|
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
|
|
|
|
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H)
|
|
|
|
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
|
|
|
|
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)
|
|
|
|
|
|
|
|
# Generic logo
|
|
|
|
ifeq ($(LOGO_BMP),)
|
|
|
|
LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
|
|
|
|
|
|
|
|
# Use board logo and fallback to vendor
|
|
|
|
ifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)
|
|
|
|
LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
|
|
|
|
else
|
|
|
|
ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),)
|
|
|
|
LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
endif # !LOGO_BMP
|
|
|
|
|
|
|
|
#
|
|
|
|
# Use native tools and options
|
|
|
|
# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps
|
|
|
|
# Define _GNU_SOURCE to obtain the getline prototype from stdio.h
|
|
|
|
#
|
|
|
|
HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \
|
kconfig: switch to Kconfig
This commit enables Kconfig.
Going forward, we use Kconfig for the board configuration.
mkconfig will never be used. Nor will include/config.mk be generated.
Kconfig must be adjusted for U-Boot because our situation is
a little more complicated than Linux Kernel.
We have to generate multiple boot images (Normal, SPL, TPL)
from one source tree.
Each image needs its own configuration input.
Usage:
Run "make <board>_defconfig" to do the board configuration.
It will create the .config file and additionally spl/.config, tpl/.config
if SPL, TPL is enabled, respectively.
You can use "make config", "make menuconfig" etc. to create
a new .config or modify the existing one.
Use "make spl/config", "make spl/menuconfig" etc. for spl/.config
and do likewise for tpl/.config file.
The generic syntax of configuration targets for SPL, TPL is:
<target_image>/<config_command>
Here, <target_image> is either 'spl' or 'tpl'
<config_command> is 'config', 'menuconfig', 'xconfig', etc.
When the configuration is done, run "make".
(Or "make <board>_defconfig all" will do the configuration and build
in one time.)
For futher information of how Kconfig works in U-Boot,
please read the comment block of scripts/multiconfig.py.
By the way, there is another item worth remarking here:
coexistence of Kconfig and board herder files.
Prior to Kconfig, we used C headers to define a set of configs.
We expect a very long term to migrate from C headers to Kconfig.
Two different infractructure must coexist in the interim.
In our former configuration scheme, include/autoconf.mk was generated
for use in makefiles.
It is still generated under include/, spl/include/, tpl/include/ directory
for the Normal, SPL, TPL image, respectively.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: Simon Glass <sjg@chromium.org>
11 years ago
|
|
|
$(patsubst -I%,-idirafter%, $(filter -I%, $(UBOOTINCLUDE))) \
|
|
|
|
-I$(srctree)/lib/libfdt \
|
|
|
|
-I$(srctree)/tools \
|
|
|
|
-DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) \
|
|
|
|
-DUSE_HOSTCC \
|
|
|
|
-D__KERNEL_STRICT_NAMES \
|
|
|
|
-D_GNU_SOURCE
|
|
|
|
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
11 years ago
|
|
|
__build: $(LOGO-y)
|
|
|
|
|
|
|
|
$(LOGO_H): $(obj)/bmp_logo $(LOGO_BMP)
|
|
|
|
$(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@
|
|
|
|
|
|
|
|
$(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP)
|
|
|
|
$(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@
|
|
|
|
|
|
|
|
# Let clean descend into subdirs
|
|
|
|
subdir- += env
|
|
|
|
|
|
|
|
ifneq ($(CROSS_BUILD_TOOLS),)
|
|
|
|
HOSTCC = $(CC)
|
|
|
|
|
|
|
|
quiet_cmd_crosstools_strip = STRIP $^
|
|
|
|
cmd_crosstools_strip = $(STRIP) $^; touch $@
|
|
|
|
$(obj)/.strip: $(call objectify,$(filter $(always),$(hostprogs-y)))
|
|
|
|
$(call cmd,crosstools_strip)
|
|
|
|
|
|
|
|
always += .strip
|
|
|
|
endif
|
|
|
|
clean-files += .strip
|