Message ID | 1400222167-22402-1-git-send-email-abrodkin@synopsys.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Hi Alexey, Wolfgang, > --- a/examples/standalone/Makefile > +++ b/examples/standalone/Makefile > @@ -38,7 +38,17 @@ targets += $(patsubst $(obj)/%,%,$(LIB)) $(COBJS) $(LIBOBJS-y) > LIBOBJS := $(addprefix $(obj)/,$(LIBOBJS-y)) > ELF := $(addprefix $(obj)/,$(ELF)) > > -gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`) > +# Add GCC lib > +ifdef CONFIG_USE_PRIVATE_LIBGCC > +ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) > +PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a > +else > +PLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc > +endif > +else > +PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(PLATFORM_CPPFLAGS) \ > + -print-libgcc-file-name`) -lgcc > +endif This is duplicating the code. I think you should export PLATFORM_LIBGCC from the top Makefile and use it. Best Regards Masahiro Yamada
Dear Masahiro, In message <20140516160556.E1A8.AA925319@jp.panasonic.com> you wrote: > > > +# Add GCC lib > > +ifdef CONFIG_USE_PRIVATE_LIBGCC > > +ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) > > +PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a > > +else > > +PLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc > > +endif > > +else > > +PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(PLATFORM_CPPFLAGS) \ > > + -print-libgcc-file-name`) -lgcc > > +endif > > This is duplicating the code. > > I think you should export PLATFORM_LIBGCC from the top Makefile > and use it. Yes, this is what I head in mind, too. we already have this setting, so there should be no need to redo it. Best regards, Wolfgang Denk
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index 9ab5446..2c13c07 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -38,7 +38,17 @@ targets += $(patsubst $(obj)/%,%,$(LIB)) $(COBJS) $(LIBOBJS-y) LIBOBJS := $(addprefix $(obj)/,$(LIBOBJS-y)) ELF := $(addprefix $(obj)/,$(ELF)) -gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`) +# Add GCC lib +ifdef CONFIG_USE_PRIVATE_LIBGCC +ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) +PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a +else +PLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc +endif +else +PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(PLATFORM_CPPFLAGS) \ + -print-libgcc-file-name`) -lgcc +endif # For PowerPC there's no need to compile standalone applications as a # relocatable executable. The relocation data is not needed, and @@ -63,7 +73,7 @@ $(LIB): $(LIBOBJS) FORCE quiet_cmd_link_elf = LD $@ cmd_link_elf = $(LD) $(LDFLAGS) -g -Ttext $(CONFIG_STANDALONE_LOAD_ADDR) \ - -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) -L$(gcclibdir) -lgcc + -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) $(PLATFORM_LIBGCC) $(ELF): $(obj)/%: $(obj)/%.o $(LIB) FORCE $(call if_changed,link_elf)
In case of multilib-enabled toolchains if default architecture differ from the one examples are being built for linker will fail to link example object files with libgcc of another (non-compatible) architecture. Interesting enough for years in main Makefile we used CFLAGS/c_flags for this but not for examples. So fixing it now. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Masahiro Yamada <yamada.m@jp.panasonic.com> Cc: Tom Rini <trini@ti.com> Cc: Wolfgang Denx <wd@denx.de> --- v2 copies functoinality for libgcc selection from main Makefile. This takes care of CONFIG_USE_PRIVATE_LIBGCC if one is used. examples/standalone/Makefile | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)