[U-Boot] Understanding uboot child makefiles

Simon Glass sjg at chromium.org
Thu Sep 19 04:28:12 CEST 2013


Hi MJ,

On Mon, Sep 16, 2013 at 8:23 PM, MJ embd <mj.embd at gmail.com> wrote:

> PS: Last message was sent without body, please ignore
>
>  0 down vote favorite
>
>
> I am trying to understand a second level makefile of uboot (this
> makefile was in a sub directory)
>
> a) What is the difference between $(COBJS:.o=.c) and  COBJS   :=
> test_main.o
>

 $(COBJS:.o=.c) means to evaluate $(COBJS) but replace every .o with .c

COBJS   := test_main.o    means that COBJS is assigned the value test_main.o



> b) What is the meaning of $(call cmd_link_o_target, $(OBJS)). What is
> the cmd_link_o_target and what is the call statement doing
>

This is linking the object files together with a partial link (ld -r). See
config.mk for the definition.


> c) Does this line creating 2 targets ?
>
> ALL     :=       $(obj).depend $(LIB)
>

It defines variable ALL to be those two things (the depend file and the
library). So that

all:    $(ALL)

means that we need to build the depend file and the library.


> ===================================Makefile===================
>
> include $(TOPDIR)/config.mk
>
> LIB     = $(obj)libtest.o
>
> SOBJS   := test.o
>
> COBJS   := test_main.o
> COBJS   += diagnostic.o
>
>
> SRCS    := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> OBJS    := $(addprefix $(obj),$(COBJS) $(SOBJS))
>
> ALL     :=       $(obj).depend $(LIB)
>
> all:    $(ALL)
>
> $(LIB): $(OBJS)
>         $(call cmd_link_o_target, $(OBJS))
>
> #########################################################################
>
> # defines $(obj).depend target
> include $(SRCTREE)/rules.mk
>
> sinclude $(obj).depend
>
> #########################################################################
>
>
This might help a bit:

http://www.gnu.org/software/make/manual/make.html

Regards,
Simon


More information about the U-Boot mailing list