[U-Boot] [PATCH 2/2] Makefile: Select objects by CONFIG_ rather than $(ARCH) or $(CPU)

Masahiro Yamada yamada.m at jp.panasonic.com
Thu Nov 28 04:09:59 CET 2013


Convert like follows:

 CPU mpc83xx  -> CONFIG_MPC83xx
 CPU mpc85xx  -> CONFIG_MPC85xx
 CPU mpc86xx  -> CONFIG_MPC86xx
 CPU mpc5xxx  -> CONFIG_MPC5xxx
 CPU mpc8xx   -> CONFIG_8xx
 CPU mpc8260  -> CONFIG_8260
 CPU ppc4xx   -> CONFIG_4xx
 CPU x86      -> CONFIG_X86
 ARCH x86     -> CONFIG_X86
 ARCH powerpc -> CONFIG_PPC

Signed-off-by: Masahiro Yamada <yamada.m at jp.panasonic.com>
---

I built all target boards and checked md5sum.
I confirmed this change has no impact.

This patch may look trivial
but it has an important meaning.

Before importing build scripts from Linux Kernel,
we definitely must fix arch/powerpc/cpu/Makefile:
  ifneq ($(filter mpc83xx mpc85xx mpc86xx,$(CPU)),)
  obj-y += mpc8xxx/
  endif

In above code,
  obj-y += mpc8xxx/
is not evaluated for CPUs other than mpc83xx, mpc85xx, mpc86xx.

In such a case, Linux build scripts would not generate
arch/powerpc/cpu/built-in.o, which results in an error
at the final link stage.

Please see around line 137 of scripts/Makefile.build
of Linux Kernel (I want to import this file in my upcoming patch):

ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(subdir-m) $(lib-target)),)
builtin-target := $(obj)/built-in.o
endif

Note that if $(obj-) and $(obj-y) are both emply,
built-in.o is not generated.

FYI:

CONFIG_MPC83xx is defined in config headers and arch/powerpc/cpu/mpc83xx/config.mk
CONFIG_MPC85xx is defined in config headers
CONFIG_MPC86xx is defined in config headers
CONFIG_MPC5xxx is defined in config headers and arch/powerpc/cpu/mpc5xxx/config.mk
CONFIG_8xx     is defined in arch/powerpc/cpu/mpc8xx/config.mk
CONFIG_8260    is defined in arch/powerpc/cpu/mpc8260/config.mk
CONFIG_4xx     is defined in config headers and arch/powerpc/cpu/ppc4xx/config.mk
CONFIG_X86     is defined in arch/x86/config.mk
CONFIG_PPC     is defined in arch/powerpc/config.mk


 Makefile                          | 12 ++++--------
 arch/powerpc/cpu/Makefile         |  6 +++---
 arch/powerpc/cpu/mpc8xxx/Makefile |  6 ++----
 examples/standalone/Makefile      | 26 +++++++++++++-------------
 post/Makefile                     |  6 +++---
 spl/Makefile                      | 17 +++++------------
 6 files changed, 30 insertions(+), 43 deletions(-)

diff --git a/Makefile b/Makefile
index 5d9d32d..4db925d 100644
--- a/Makefile
+++ b/Makefile
@@ -218,15 +218,11 @@ endif
 #########################################################################
 # U-Boot objects....order is important (i.e. start must be first)
 
-OBJS  = $(CPUDIR)/start.o
-ifeq ($(CPU),ppc4xx)
-OBJS += $(CPUDIR)/resetvec.o
-endif
-ifeq ($(CPU),mpc85xx)
-OBJS += $(CPUDIR)/resetvec.o
-endif
+head-y := $(CPUDIR)/start.o
+head-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o
+head-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o
 
-OBJS := $(addprefix $(obj),$(OBJS))
+OBJS := $(addprefix $(obj),$(head-y))
 
 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard board/$(VENDOR)/common/Makefile),y,n)
 
diff --git a/arch/powerpc/cpu/Makefile b/arch/powerpc/cpu/Makefile
index d630abe..88b5298 100644
--- a/arch/powerpc/cpu/Makefile
+++ b/arch/powerpc/cpu/Makefile
@@ -1,3 +1,3 @@
-ifneq ($(filter mpc83xx mpc85xx mpc86xx,$(CPU)),)
-obj-y += mpc8xxx/
-endif
+obj-$(CONFIG_MPC83xx) += mpc8xxx/
+obj-$(CONFIG_MPC85xx) += mpc8xxx/
+obj-$(CONFIG_MPC86xx) += mpc8xxx/
diff --git a/arch/powerpc/cpu/mpc8xxx/Makefile b/arch/powerpc/cpu/mpc8xxx/Makefile
index 1d083bf..cf75612 100644
--- a/arch/powerpc/cpu/mpc8xxx/Makefile
+++ b/arch/powerpc/cpu/mpc8xxx/Makefile
@@ -19,10 +19,8 @@ ifdef MINIMAL
 obj-$(CONFIG_FSL_LAW) += law.o
 
 else
-
-ifneq ($(CPU),mpc83xx)
-obj-y	+= cpu.o
-endif
+obj-$(CONFIG_MPC85xx) += cpu.o
+obj-$(CONFIG_MPC86xx) += cpu.o
 
 obj-$(CONFIG_OF_LIBFDT) += fdt.o
 obj-$(CONFIG_FSL_IFC) += fsl_ifc.o
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile
index f4f102b..6e7500d 100644
--- a/examples/standalone/Makefile
+++ b/examples/standalone/Makefile
@@ -7,25 +7,27 @@
 
 include $(TOPDIR)/config.mk
 
-ELF-$(ARCH)  :=
-ELF-$(CPU)   :=
 ELF-y        := hello_world
 
 ELF-$(CONFIG_SMC91111)           += smc91111_eeprom
 ELF-$(CONFIG_SMC911X)            += smc911x_eeprom
 ELF-$(CONFIG_SPI_FLASH_ATMEL)    += atmel_df_pow2
-ELF-i386                         += 82559_eeprom
-ELF-mpc5xxx                      += interrupt
-ELF-mpc8xx                       += test_burst timer
-ELF-mpc8260                      += mem_to_mem_idma2intr
-ELF-ppc                          += sched
+# TODO:
+#   - Fix the warning of 82559_eeprom.c and uncomment the following
+# or
+#   - Delete 82559_eeprom.c and the following line
+#ELF-$(CONFIG_X86)                += 82559_eeprom
+ELF-$(CONFIG_MPC5xxx)            += interrupt
+ELF-$(CONFIG_8xx)                += test_burst timer
+ELF-$(CONFIG_8260)               += mem_to_mem_idma2intr
+ELF-$(CONFIG_PPC)                += sched
 
 #
 # Some versions of make do not handle trailing white spaces properly;
 # leading to build failures. The problem was found with GNU Make 3.80.
 # Using 'strip' as a workaround for the problem.
 #
-ELF := $(strip $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(CPU)))
+ELF := $(strip $(ELF-y))
 
 SREC := $(addsuffix .srec,$(ELF))
 BIN  := $(addsuffix .bin,$(ELF))
@@ -34,11 +36,9 @@ COBJS	:= $(ELF:=.o)
 
 LIB	= $(obj)libstubs.o
 
-LIBAOBJS-$(ARCH)     :=
-LIBAOBJS-$(CPU)      :=
-LIBAOBJS-ppc         += $(ARCH)_longjmp.o $(ARCH)_setjmp.o
-LIBAOBJS-mpc8xx      += test_burst_lib.o
-LIBAOBJS := $(LIBAOBJS-$(ARCH)) $(LIBAOBJS-$(CPU))
+LIBAOBJS-$(CONFIG_PPC) += ppc_longjmp.o ppc_setjmp.o
+LIBAOBJS-$(CONFIG_8xx) += test_burst_lib.o
+LIBAOBJS := $(LIBAOBJS-y)
 
 LIBCOBJS = stubs.o
 
diff --git a/post/Makefile b/post/Makefile
index 20a463a..2fa6f8a 100644
--- a/post/Makefile
+++ b/post/Makefile
@@ -10,9 +10,9 @@ obj-$(CONFIG_POST_STD_LIST)	+= tests.o
 
 obj-y += drivers/
 obj-$(CONFIG_PPC) += lib_powerpc/
-ifneq ($(filter mpc83xx mpc8xx ppc4xx,$(CPU)),)
-obj-y += cpu/$(CPU)/
-endif
+obj-$(CONFIG_MPC83xx) += cpu/mpc83xx/
+obj-$(CONFIG_8xx) += cpu/mpc8xx/
+obj-$(CONFIG_4xx) += cpu/ppc4xx/
 ifneq ($(filter lwmon lwmon5 netta pdm360ng,$(BOARD)),)
 obj-y += board/$(BOARD)/
 endif
diff --git a/spl/Makefile b/spl/Makefile
index 29d7818..7a0400b 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -42,17 +42,10 @@ else
 START_PATH := $(CPUDIR)
 endif
 
-START := $(START_PATH)/start.o
-ifeq ($(CPU),x86)
-START += $(START_PATH)/start16.o
-START += $(START_PATH)/resetvec.o
-endif
-ifeq ($(CPU),ppc4xx)
-START += $(START_PATH)/resetvec.o
-endif
-ifeq ($(CPU),mpc85xx)
-START += $(START_PATH)/resetvec.o
-endif
+head-y := $(START_PATH)/start.o
+head-$(CONFIG_X86) += $(START_PATH)/start16.o $(START_PATH)/resetvec.o
+head-$(CONFIG_4xx) += $(START_PATH)/resetvec.o
+head-$(CONFIG_MPC85xx) += $(START_PATH)/resetvec.o
 
 LIBS-y += arch/$(ARCH)/lib/
 
@@ -108,7 +101,7 @@ PLATFORM_LIBGCC = $(SPLTREE)/arch/$(ARCH)/lib/libgcc.o
 PLATFORM_LIBS := $(filter-out %/libgcc.o, $(filter-out -lgcc, $(PLATFORM_LIBS))) $(PLATFORM_LIBGCC)
 endif
 
-START := $(addprefix $(SPLTREE)/,$(START))
+START := $(addprefix $(SPLTREE)/,$(head-y))
 LIBS := $(addprefix $(SPLTREE)/,$(sort $(LIBS-y)))
 
 __START := $(subst $(obj),,$(START))
-- 
1.8.3.2



More information about the U-Boot mailing list