diff mbox

prepend the include path of libvixl header files

Message ID alpine.DEB.2.02.1407071618410.27641@kaball.uk.xensource.com
State New
Headers show

Commit Message

Stefano Stabellini July 7, 2014, 3:25 p.m. UTC
Currently the Makefile of disas/libvixl appends
-I$(SRC_PATH)/disas/libvixl to QEMU_CFLAGS. As a consequence C++ files
that #include "utils.h", such as disas/libvixl/a64/instructions-a64.cc,
are going to look for utils.h on all the other include paths first.

When building QEMU as part of the Xen make system, another unrelated
utils.h file is going to be chosen for inclusion, causing a build
failure:

In file included from disas/libvixl/a64/instructions-a64.cc:27:0:
/qemu/disas/libvixl/a64/instructions-a64.h:88:64: error:
‘rawbits_to_float’ was not declared in this scope
 const float kFP32PositiveInfinity = rawbits_to_float(0x7f800000);

Fix the problem by prepending (rather than appending) the libvixl
include path to QEMU_CFLAGS.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

---

Comments

Peter Maydell July 8, 2014, 11:21 a.m. UTC | #1
On 7 July 2014 16:25, Stefano Stabellini
<stefano.stabellini@eu.citrix.com> wrote:
> Currently the Makefile of disas/libvixl appends
> -I$(SRC_PATH)/disas/libvixl to QEMU_CFLAGS. As a consequence C++ files
> that #include "utils.h", such as disas/libvixl/a64/instructions-a64.cc,
> are going to look for utils.h on all the other include paths first.
>
> When building QEMU as part of the Xen make system, another unrelated
> utils.h file is going to be chosen for inclusion, causing a build
> failure:
>
> In file included from disas/libvixl/a64/instructions-a64.cc:27:0:
> /qemu/disas/libvixl/a64/instructions-a64.h:88:64: error:
> ‘rawbits_to_float’ was not declared in this scope
>  const float kFP32PositiveInfinity = rawbits_to_float(0x7f800000);
>
> Fix the problem by prepending (rather than appending) the libvixl
> include path to QEMU_CFLAGS.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>
> ---
>
> diff --git a/disas/libvixl/Makefile.objs b/disas/libvixl/Makefile.objs
> index 0adb3ce..17e6565 100644
> --- a/disas/libvixl/Makefile.objs
> +++ b/disas/libvixl/Makefile.objs
> @@ -3,6 +3,6 @@ libvixl_OBJS = utils.o \
>                 a64/decoder-a64.o \
>                 a64/disasm-a64.o
>
> -$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS += -I$(SRC_PATH)/disas/libvixl
> +$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS := -I$(SRC_PATH)/disas/libvixl $(QEMU_CFLAGS)
>
>  common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS)

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

I spent a few moments wondering if the conversion of
QEMU_CFLAGS from recursively-expanded to simply-expanded
would be a problem, but because this is a target-specific
variable it's pretty much going to be expanded at the same
point that it would be anyhow.

thanks
-- PMM
Stefano Stabellini July 8, 2014, 11:55 a.m. UTC | #2
On Tue, 8 Jul 2014, Peter Maydell wrote:
> On 7 July 2014 16:25, Stefano Stabellini
> <stefano.stabellini@eu.citrix.com> wrote:
> > Currently the Makefile of disas/libvixl appends
> > -I$(SRC_PATH)/disas/libvixl to QEMU_CFLAGS. As a consequence C++ files
> > that #include "utils.h", such as disas/libvixl/a64/instructions-a64.cc,
> > are going to look for utils.h on all the other include paths first.
> >
> > When building QEMU as part of the Xen make system, another unrelated
> > utils.h file is going to be chosen for inclusion, causing a build
> > failure:
> >
> > In file included from disas/libvixl/a64/instructions-a64.cc:27:0:
> > /qemu/disas/libvixl/a64/instructions-a64.h:88:64: error:
> > ‘rawbits_to_float’ was not declared in this scope
> >  const float kFP32PositiveInfinity = rawbits_to_float(0x7f800000);
> >
> > Fix the problem by prepending (rather than appending) the libvixl
> > include path to QEMU_CFLAGS.
> >
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> >
> > ---
> >
> > diff --git a/disas/libvixl/Makefile.objs b/disas/libvixl/Makefile.objs
> > index 0adb3ce..17e6565 100644
> > --- a/disas/libvixl/Makefile.objs
> > +++ b/disas/libvixl/Makefile.objs
> > @@ -3,6 +3,6 @@ libvixl_OBJS = utils.o \
> >                 a64/decoder-a64.o \
> >                 a64/disasm-a64.o
> >
> > -$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS += -I$(SRC_PATH)/disas/libvixl
> > +$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS := -I$(SRC_PATH)/disas/libvixl $(QEMU_CFLAGS)
> >
> >  common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS)
> 
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> 
> I spent a few moments wondering if the conversion of
> QEMU_CFLAGS from recursively-expanded to simply-expanded
> would be a problem, but because this is a target-specific
> variable it's pretty much going to be expanded at the same
> point that it would be anyhow.
 
Thanks Peter.
Are you going to pick it up or do you want me to send a pull request?
Peter Maydell July 8, 2014, 11:57 a.m. UTC | #3
On 8 July 2014 12:55, Stefano Stabellini
<stefano.stabellini@eu.citrix.com> wrote:
> Are you going to pick it up or do you want me to send a pull request?

I'm going to put it in the target-arm pullreq I'm currently testing.

thanks
-- PMM
Stefano Stabellini July 8, 2014, 11:59 a.m. UTC | #4
On Tue, 8 Jul 2014, Peter Maydell wrote:
> On 8 July 2014 12:55, Stefano Stabellini
> <stefano.stabellini@eu.citrix.com> wrote:
> > Are you going to pick it up or do you want me to send a pull request?
> 
> I'm going to put it in the target-arm pullreq I'm currently testing.
 
Great, thanks!
Stefano Stabellini July 9, 2014, 8:16 p.m. UTC | #5
On Tue, 8 Jul 2014, Stefano Stabellini wrote:
> On Tue, 8 Jul 2014, Peter Maydell wrote:
> > On 8 July 2014 12:55, Stefano Stabellini
> > <stefano.stabellini@eu.citrix.com> wrote:
> > > Are you going to pick it up or do you want me to send a pull request?
> > 
> > I'm going to put it in the target-arm pullreq I'm currently testing.
>  
> Great, thanks!
> 

Unfortunately I found another one of these issues: disas/arm-a64.o adds
-Idisas/libvixl via arm-a64.o-cflags instead of QEMU_CFLAGS.  I don't
know how I missed it the first time. Probably I didn't properly clean
the QEMU build directory.

I'll send a separate patch for that.
diff mbox

Patch

diff --git a/disas/libvixl/Makefile.objs b/disas/libvixl/Makefile.objs
index 0adb3ce..17e6565 100644
--- a/disas/libvixl/Makefile.objs
+++ b/disas/libvixl/Makefile.objs
@@ -3,6 +3,6 @@  libvixl_OBJS = utils.o \
                a64/decoder-a64.o \
                a64/disasm-a64.o
 
-$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS += -I$(SRC_PATH)/disas/libvixl
+$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS := -I$(SRC_PATH)/disas/libvixl $(QEMU_CFLAGS)
 
 common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS)