[U-Boot] U-Boot Makefile question

Michael Lawnick nospam_lawnick at gmx.de
Tue Feb 17 16:03:03 CET 2009


Steven Zedeck said the following:
> For example, I'm having problems understanding what this means in a
> Makefile:
> 
> COBJS-$(CONFIG_HAS_DATAFLASH) += at45.o
> COBJS-$(CONFIG_FLASH_CFI_DRIVER) += cfi_flash.o
> COBJS-$(CONFIG_HAS_DATAFLASH) += dataflash.o
> COBJS-$(CONFIG_FLASH_CFI_LEGACY) += jedec_flash.o
> COBJS-$(CONFIG_MW_EEPROM) += mw_eeprom.o
> 
> COBJS	:= $(COBJS-y)
> SRCS	:= $(COBJS:.o=.c)
> OBJS	:= $(addprefix $(obj),$(COBJS))
> 
> This is from drivers/mtd/Makefile.
> 
> How does COBJS get initially defined upon entry into the Makefile?
> 
> Does at45.o get added to the list of objects to be built only if the
> CONFIG_HAS_DATAFLASH flag is set?
> 
> What does the "-" sign mean before the "$" ?
> 
On start of compile, the file autoconf.mk is generated along your board
configuration #defines in board/<board>/<board-name>.h
It looks like this:
CONFIG_PPC=y
CONFIG_BOARD_EARLY_INIT_F=y
CONFIG_BOARD_EARLY_INIT_R=y
CONFIG_SYS_CLK_FREQ=100000000
CONFIG_CMD_ITEST=y
...

autoconf.mk is then used as a predefinition file for the rules of your
Makefile. So
COBJS-$(CONFIG_HAS_DATAFLASH) += at45.o
evaluates to either
COBJS-y += at45.o
or
COBJS- += at45.o
or
COBJS-n += at45.o
> What does this mean?  COBJS	:= $(COBJS-y)

This is the assignment of the dynamically built string to the variable
that is then used for the gcc command.

HTH
-- 

Michael



More information about the U-Boot mailing list