[U-Boot] [PATCH] Makefile: compile and link each module just once

Several source files need to be compiled and linked when one or more config options are selected. To allow for easy selection in the Makefiles yet to avoild multiple compilation (which costs build time) and especially multiple linking (which causes errors), we use "COBJS = $(sort COBJS-y)" which eliminates duplicates.
By courtesy of Detlev Zundel who suggested this approach.
Signed-off-by: Wolfgang Denk wd@denx.de --- common/Makefile | 9 +++++---- drivers/rtc/Makefile | 6 +++--- drivers/serial/Makefile | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/common/Makefile b/common/Makefile index 0fe9c8b..d3888d6 100644 --- a/common/Makefile +++ b/common/Makefile @@ -56,7 +56,8 @@ COBJS-y += env_nowhere.o
# command COBJS-$(CONFIG_CMD_AMBAPP) += cmd_ambapp.o -COBJS-$(CONFIG_AUTOSCRIPT)$(CONFIG_CMD_AUTOSCRIPT) += cmd_autoscript.o +COBJS-$(CONFIG_AUTOSCRIPT) += cmd_autoscript.o +COBJS-$(CONFIG_CMD_AUTOSCRIPT) += cmd_autoscript.o COBJS-$(CONFIG_CMD_BDI) += cmd_bdinfo.o COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o cmd_bedbug.o COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o @@ -110,7 +111,8 @@ COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o COBJS-y += cmd_mac.o COBJS-y += cmd_mem.o COBJS-$(CONFIG_CMD_MFSL) += cmd_mfsl.o -COBJS-$(CONFIG_MII)$(CONFIG_CMD_MII) += miiphyutil.o +COBJS-$(CONFIG_MII) += miiphyutil.o +COBJS-$(CONFIG_CMD_MII) += miiphyutil.o COBJS-$(CONFIG_CMD_MII) += cmd_mii.o COBJS-$(CONFIG_CMD_MISC) += cmd_misc.o COBJS-$(CONFIG_CMD_MMC) += cmd_mmc.o @@ -151,8 +153,7 @@ COBJS-$(CONFIG_LYNXKDI) += lynxkdi.o COBJS-$(CONFIG_USB_KEYBOARD) += usb_kbd.o COBJS-$(CONFIG_DDR_SPD) += ddr_spd.o
-COBJS-y += $(COBJS-yy) -COBJS := $(COBJS-y) +COBJS := $(sort COBJS-y) SRCS := $(AOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(AOBJS) $(COBJS))
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index f41f33d..7f817dc 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile @@ -32,8 +32,8 @@ COBJS-y += date.o COBJS-$(CONFIG_RTC_DS12887) += ds12887.o COBJS-$(CONFIG_RTC_DS1302) += ds1302.o COBJS-$(CONFIG_RTC_DS1306) += ds1306.o -COBJS-$(CONFIG_RTC_DS1307)$(CONFIG_RTC_DS1338) += ds1307.o -COBJS-y += $(COBJS-yy) +COBJS-$(CONFIG_RTC_DS1307) += ds1307.o +COBJS-$(CONFIG_RTC_DS1338) += ds1307.o COBJS-$(CONFIG_RTC_DS1337) += ds1337.o COBJS-$(CONFIG_RTC_DS1374) += ds1374.o COBJS-$(CONFIG_RTC_DS1556) += ds1556.o @@ -59,7 +59,7 @@ COBJS-$(CONFIG_RTC_RX8025) += rx8025.o COBJS-$(CONFIG_RTC_S3C24X0) += s3c24x0_rtc.o COBJS-$(CONFIG_RTC_X1205) += x1205.o
-COBJS := $(COBJS-y) +COBJS := $(sort COBJS-y) SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index b370828..adb0a58 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -39,7 +39,7 @@ COBJS-$(CONFIG_XILINX_UARTLITE) += serial_xuartlite.o COBJS-$(CONFIG_SCIF_CONSOLE) += serial_sh.o COBJS-$(CONFIG_USB_TTY) += usbtty.o
-COBJS := $(COBJS-y) +COBJS := $(sort COBJS-y) SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))

Dear Andreas Engel,
In message 48C6834B.70603@ericsson.com you wrote:
Wolfgang Denk wrote:
[...] "COBJS = $(sort COBJS-y)" which eliminates duplicates. [...] +COBJS := $(sort COBJS-y) [...] +COBJS := $(sort COBJS-y) [...] +COBJS := $(sort COBJS-y)
I think you'll have more luck with $(sort $(COBJS-y)).
Argh! Of course you are right.
And I idiot pushed this out already so we have a number of un-bisectable patches on top :-( It's time to go home, it seems.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote:
Dear Andreas Engel,
In message 48C6834B.70603@ericsson.com you wrote:
Wolfgang Denk wrote:
[...] "COBJS = $(sort COBJS-y)" which eliminates duplicates. [...] +COBJS := $(sort COBJS-y) [...] +COBJS := $(sort COBJS-y) [...] +COBJS := $(sort COBJS-y)
I think you'll have more luck with $(sort $(COBJS-y)).
Argh! Of course you are right.
And I idiot pushed this out already so we have a number of un-bisectable patches on top :-( It's time to go home, it seems.
Time for that beer we all owe you. You can put the first one on my tab.
;-) gvb

On 11:10 Tue 09 Sep , JerryVanBaren wrote:
Wolfgang Denk wrote:
Dear Andreas Engel,
In message 48C6834B.70603@ericsson.com you wrote:
Wolfgang Denk wrote:
[...] "COBJS = $(sort COBJS-y)" which eliminates duplicates. [...] +COBJS := $(sort COBJS-y) [...] +COBJS := $(sort COBJS-y) [...] +COBJS := $(sort COBJS-y)
I think you'll have more luck with $(sort $(COBJS-y)).
Argh! Of course you are right.
And I idiot pushed this out already so we have a number of un-bisectable patches on top :-( It's time to go home, it seems.
Time for that beer we all owe you. You can put the first one on my tab.
We all do this kind of thing. But you can put the second one on my tab.
;-)
Best Regards, J.

Dear JerryVanBaren,
In message 48C691DB.1060204@ge.com you wrote:
Time for that beer we all owe you. You can put the first one on my tab.
Here it is.
Sorry, it's just a virtual one. Make sure to correctly initialize your TLBs...
Best regards,
Wolfgang Denk
participants (4)
-
Andreas Engel
-
Jean-Christophe PLAGNIOL-VILLARD
-
JerryVanBaren
-
Wolfgang Denk