[PATCH] sandbox: fix build failure with musl and SDL

Simon Glass sjg at chromium.org
Thu Jan 27 22:35:17 CET 2022


Hi,

On Fri, 21 Jan 2022 at 13:11, Milan P. Stanić <mps at arvanta.net> wrote:
>
> Hi,
>
> it works and build pass without error or warning.
> Tested on alpine edge aarch64 bare metal.
>
> Thank you
>
> On Fri, 2022-01-21 at 18:00, Heinrich Schuchardt wrote:
> > sdl.c is compiled against the SDL library.
> >
> > Trying to redefine wchar_t with -fshort-wchar is not necessary
> > and leads to build failures when compiling against musl.
> >
> > Cc: Milan P. Stanić <mps at arvanta.net>
> > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>
> Tested-by: Milan P. Stanić <mps at arvanta.net>
>
> > ---
> >  arch/sandbox/Makefile     |  7 +++++++
> >  arch/sandbox/cpu/Makefile | 11 ++++++++---
> >  2 files changed, 15 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/sandbox/Makefile b/arch/sandbox/Makefile
> > index f6cf859f24..0bdd322f12 100644
> > --- a/arch/sandbox/Makefile
> > +++ b/arch/sandbox/Makefile
> > @@ -4,3 +4,10 @@ head-y := arch/sandbox/cpu/start.o arch/sandbox/cpu/os.o
> >  head-$(CONFIG_SANDBOX_SDL) += arch/sandbox/cpu/sdl.o
> >  libs-y += arch/sandbox/cpu/
> >  libs-y += arch/sandbox/lib/
> > +
> > +# sdl.c fails to compile with -fshort-wchar using musl.
> > +cmd_cc_sdl.o = $(CC) $(filter-out -nostdinc -fshort-wchar, \
> > +     $(patsubst -I%,-idirafter%,$(c_flags))) -c -o $@ $<
> > +
> > +$(obj)/sdl.o: $(src)/sdl.c FORCE
> > +     $(call if_changed_dep,cc_sdl.o)
> > diff --git a/arch/sandbox/cpu/Makefile b/arch/sandbox/cpu/Makefile
> > index de7fe7f391..b74c866e56 100644
> > --- a/arch/sandbox/cpu/Makefile
> > +++ b/arch/sandbox/cpu/Makefile
> > @@ -7,7 +7,7 @@
> >
> >  obj-y        := cache.o cpu.o state.o
> >  extra-y      := start.o os.o
> > -extra-$(CONFIG_SANDBOX_SDL)  += sdl.o
> > +extra-$(CONFIG_SANDBOX_SDL)    += sdl.o
> >  obj-$(CONFIG_SPL_BUILD)      += spl.o
> >  obj-$(CONFIG_ETH_SANDBOX_RAW)        += eth-raw-os.o
> >
> > @@ -19,8 +19,6 @@ cmd_cc_os.o = $(CC) $(filter-out -nostdinc, \
> >
> >  $(obj)/os.o: $(src)/os.c FORCE
> >       $(call if_changed_dep,cc_os.o)
> > -$(obj)/sdl.o: $(src)/sdl.c FORCE
> > -     $(call if_changed_dep,cc_os.o)
> >
> >  # eth-raw-os.c is built in the system env, so needs standard includes
> >  # CFLAGS_REMOVE_eth-raw-os.o cannot be used to drop header include path
> > @@ -30,3 +28,10 @@ cmd_cc_eth-raw-os.o = $(CC) $(filter-out -nostdinc, \
> >
> >  $(obj)/eth-raw-os.o: $(src)/eth-raw-os.c FORCE
> >       $(call if_changed_dep,cc_eth-raw-os.o)
> > +
> > +# sdl.c fails to build with -fshort-wchar using musl
> > +cmd_cc_sdl.o = $(CC) $(filter-out -nostdinc -fshort-wchar, \
> > +     $(patsubst -I%,-idirafter%,$(c_flags))) -c -o $@ $<
> > +
> > +$(obj)/sdl.o: $(src)/sdl.c FORCE
> > +     $(call if_changed_dep,cc_sdl.o)
> > --
> > 2.33.1
> >

This fails on gitlab.

https://source.denx.de/u-boot/custodians/u-boot-dm/-/jobs/382812

$ tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
--board ${TEST_PY_BD} ${OVERRIDE}
Building current source for 1 boards (1 thread, 40 jobs per thread)
   sandbox:  +   sandbox
+/usr/bin/ld: error: LLVM gold plugin: linking module flags
'wchar_size': IDs have conflicting values in 'arch/sandbox/cpu/sdl.o'
and 'ld-temp.o'
+clang: error: linker command failed with exit code 1 (use -v to see invocation)
+make[1]: *** [Makefile:1799: u-boot] Error 1
+make: *** [Makefile:177: sub-make] Error 2
    0    0    1 /1              sandbox
Completed: 1 total built, duration 0:00:22, rate 0.05
Running after_script


Please can you take a look?

Regards,
Simon


More information about the U-Boot mailing list