From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Lawnick Date: Tue, 17 Feb 2009 16:03:03 +0100 Subject: [U-Boot] U-Boot Makefile question In-Reply-To: <22057574.post@talk.nabble.com> References: <22057574.post@talk.nabble.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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//.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