[U-Boot] [PATCH 2/9] Fix bug when both DFU & ETHER are defined

Pantelis Antoniou panto at antoniou-consulting.com
Wed Nov 28 09:24:13 CET 2012


Hi Marek,

On Nov 28, 2012, at 4:43 AM, Marek Vasut wrote:

> Dear Pantelis Antoniou,
> 
>> When both CONFIG_USB_GADGET & CONFIG_USB_ETHER are defined
>> the makefile links objects twice.
>> 
>> Detect this and fix it with a not very elegant way in the
>> makefile. Revisit and clean it later.
>> 
>> Signed-off-by: Pantelis Antoniou <panto at antoniou-consulting.com>
>> ---
>> drivers/usb/gadget/Makefile | 13 +++++++++++--
>> 1 file changed, 11 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
>> index 040eaba..15206cd 100644
>> --- a/drivers/usb/gadget/Makefile
>> +++ b/drivers/usb/gadget/Makefile
>> @@ -26,14 +26,23 @@ include $(TOPDIR)/config.mk
>> LIB	:= $(obj)libusb_gadget.o
>> 
>> # new USB gadget layer dependencies
>> +
>> +# ugh; ugh; ugh common objects included twice
>> +ifdef CONFIG_USB_GADGET
>> +   COBJS-y += epautoconf.o config.o usbstring.o
>> +else
>> +  ifdef CONFIG_USB_ETHER
>> +     COBJS-y += epautoconf.o config.o usbstring.o
>> +  endif
>> +endif
> 
> COBJS-$(CONFIG_ST) += st.o
> COBJS-$(CONFIG_ST_ELSE) += st_else.o
> 
> if (both selected)
> scream and die.
> 

I fail to see how that would work for the problem at hand, namely
that if both CONFIG_USB_GADGET & CONFIG_USB_ETHER are defined
epautoconf.o config.o usbstring.o are linked twice.

The proper thing to do would be to have a config symbol enabled
when either CONFIG_USB_GADGET & CONFIG_USB_ETHER are defined.

Something like 

#if defined(CONFIG_USB_GADGET) || defined(CONFIG_USB_ETHER)
#define CONFIG_USB_GADGET_PLUMPING
#endif

in a header file someplace and do

COBJS-$(CONFIG_USB_GADGET_PLUMPING) += epautoconf.o config.o usbstring.o

etc.

This would require putting it either in every board file, or in a core
usb header.

The patch was the least intrusive method.

Regards

-- Pantelis


>> +
>> ifdef CONFIG_USB_GADGET
>> -COBJS-y += epautoconf.o config.o usbstring.o
>> COBJS-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += s3c_udc_otg.o
>> COBJS-$(CONFIG_USBDOWNLOAD_GADGET) += g_dnl.o
>> COBJS-$(CONFIG_DFU_FUNCTION) += f_dfu.o
>> endif
>> ifdef CONFIG_USB_ETHER
>> -COBJS-y += ether.o epautoconf.o config.o usbstring.o
>> +COBJS-y += ether.o
>> COBJS-$(CONFIG_USB_ETH_RNDIS) += rndis.o
>> COBJS-$(CONFIG_MV_UDC)	+= mv_udc.o
>> COBJS-$(CONFIG_CPU_PXA25X) += pxa25x_udc.o
> 
> Best regards,
> Marek Vasut



More information about the U-Boot mailing list