Before this commit, most of compiler flags were defined in config.mk. But it is redundant because config.mk is included from all recursive make. This commit moves many complier flags to the top Makefile and export them. And we use new vaiarables to store them: KBUILD_CPPFLAGS, KBUILD_CFLAGS, KBUILD_AFLAGS. This will allow us to switch more smoothly to Kbuild. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
163 lines
4.1 KiB
Makefile
163 lines
4.1 KiB
Makefile
#
|
|
# (C) Copyright 2000-2013
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
#########################################################################
|
|
|
|
ifeq ($(CURDIR),$(SRCTREE))
|
|
dir :=
|
|
else
|
|
dir := $(subst $(SRCTREE)/,,$(CURDIR))
|
|
endif
|
|
|
|
ifneq ($(OBJTREE),$(SRCTREE))
|
|
# Create object files for SPL in a separate directory
|
|
ifeq ($(CONFIG_SPL_BUILD),y)
|
|
ifeq ($(CONFIG_TPL_BUILD),y)
|
|
obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
|
|
else
|
|
obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
|
|
endif
|
|
else
|
|
obj := $(if $(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
|
|
endif
|
|
src := $(if $(dir),$(SRCTREE)/$(dir)/,$(SRCTREE)/)
|
|
|
|
$(shell mkdir -p $(obj))
|
|
else
|
|
# Create object files for SPL in a separate directory
|
|
ifeq ($(CONFIG_SPL_BUILD),y)
|
|
ifeq ($(CONFIG_TPL_BUILD),y)
|
|
obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
|
|
else
|
|
obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
|
|
|
|
endif
|
|
$(shell mkdir -p $(obj))
|
|
else
|
|
obj :=
|
|
endif
|
|
src :=
|
|
endif
|
|
|
|
# clean the slate ...
|
|
PLATFORM_RELFLAGS =
|
|
PLATFORM_CPPFLAGS =
|
|
PLATFORM_LDFLAGS =
|
|
|
|
#########################################################################
|
|
|
|
# Load generated board configuration
|
|
ifeq ($(CONFIG_TPL_BUILD),y)
|
|
# Include TPL autoconf
|
|
sinclude $(OBJTREE)/include/tpl-autoconf.mk
|
|
else
|
|
ifeq ($(CONFIG_SPL_BUILD),y)
|
|
# Include SPL autoconf
|
|
sinclude $(OBJTREE)/include/spl-autoconf.mk
|
|
else
|
|
# Include normal autoconf
|
|
sinclude $(OBJTREE)/include/autoconf.mk
|
|
endif
|
|
endif
|
|
sinclude $(OBJTREE)/include/config.mk
|
|
|
|
# Some architecture config.mk files need to know what CPUDIR is set to,
|
|
# so calculate CPUDIR before including ARCH/SOC/CPU config.mk files.
|
|
# Check if arch/$ARCH/cpu/$CPU exists, otherwise assume arch/$ARCH/cpu contains
|
|
# CPU-specific code.
|
|
CPUDIR=arch/$(ARCH)/cpu/$(CPU)
|
|
ifneq ($(SRCTREE)/$(CPUDIR),$(wildcard $(SRCTREE)/$(CPUDIR)))
|
|
CPUDIR=arch/$(ARCH)/cpu
|
|
endif
|
|
|
|
sinclude $(TOPDIR)/arch/$(ARCH)/config.mk # include architecture dependend rules
|
|
sinclude $(TOPDIR)/$(CPUDIR)/config.mk # include CPU specific rules
|
|
|
|
ifdef SOC
|
|
sinclude $(TOPDIR)/$(CPUDIR)/$(SOC)/config.mk # include SoC specific rules
|
|
endif
|
|
ifdef VENDOR
|
|
BOARDDIR = $(VENDOR)/$(BOARD)
|
|
else
|
|
BOARDDIR = $(BOARD)
|
|
endif
|
|
ifdef BOARD
|
|
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific rules
|
|
endif
|
|
|
|
#########################################################################
|
|
|
|
RELFLAGS= $(PLATFORM_RELFLAGS)
|
|
|
|
OBJCFLAGS += --gap-fill=0xff
|
|
|
|
gccincdir := $(shell $(CC) -print-file-name=include)
|
|
|
|
CPPFLAGS = $(KBUILD_CPPFLAGS) $(RELFLAGS)
|
|
|
|
# Enable garbage collection of un-used sections for SPL
|
|
ifeq ($(CONFIG_SPL_BUILD),y)
|
|
CPPFLAGS += -ffunction-sections -fdata-sections
|
|
LDFLAGS_FINAL += --gc-sections
|
|
endif
|
|
|
|
ifneq ($(CONFIG_SYS_TEXT_BASE),)
|
|
CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
|
|
endif
|
|
|
|
ifeq ($(CONFIG_SPL_BUILD),y)
|
|
CPPFLAGS += -DCONFIG_SPL_BUILD
|
|
ifeq ($(CONFIG_TPL_BUILD),y)
|
|
CPPFLAGS += -DCONFIG_TPL_BUILD
|
|
endif
|
|
endif
|
|
|
|
# Does this architecture support generic board init?
|
|
ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
|
|
ifneq ($(CONFIG_SYS_GENERIC_BOARD),)
|
|
CHECK_GENERIC_BOARD = $(error Your architecture does not support generic board. \
|
|
Please undefined CONFIG_SYS_GENERIC_BOARD in your board config file)
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(OBJTREE),$(SRCTREE))
|
|
CPPFLAGS += -I$(OBJTREE)/include
|
|
endif
|
|
|
|
CPPFLAGS += -I$(TOPDIR)/include -I$(SRCTREE)/arch/$(ARCH)/include
|
|
CPPFLAGS += -nostdinc \
|
|
-isystem $(gccincdir) -pipe $(PLATFORM_CPPFLAGS)
|
|
|
|
CFLAGS := $(KBUILD_CFLAGS) $(CPPFLAGS)
|
|
|
|
BCURDIR = $(subst $(SRCTREE)/,,$(CURDIR:$(obj)%=%))
|
|
|
|
ifeq ($(findstring examples/,$(BCURDIR)),)
|
|
ifeq ($(CONFIG_SPL_BUILD),)
|
|
ifdef FTRACE
|
|
CFLAGS += -finstrument-functions -DFTRACE
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
AFLAGS := $(KBUILD_AFLAGS) $(CPPFLAGS)
|
|
|
|
LDFLAGS += $(PLATFORM_LDFLAGS)
|
|
LDFLAGS_FINAL += -Bstatic
|
|
|
|
LDFLAGS_u-boot += -T $(obj)u-boot.lds $(LDFLAGS_FINAL)
|
|
ifneq ($(CONFIG_SYS_TEXT_BASE),)
|
|
LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
|
|
endif
|
|
|
|
LDFLAGS_$(SPL_BIN) += -T $(obj)u-boot-spl.lds $(LDFLAGS_FINAL)
|
|
ifneq ($(CONFIG_SPL_TEXT_BASE),)
|
|
LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
|
|
endif
|
|
|
|
#########################################################################
|
|
|
|
export CONFIG_SYS_TEXT_BASE PLATFORM_CPPFLAGS PLATFORM_RELFLAGS CPPFLAGS CFLAGS AFLAGS
|