Message ID | alpine.DEB.2.02.1407071618410.27641@kaball.uk.xensource.com |
---|---|
State | Accepted |
Commit | 834fb1b269f4c9eb0ffc058fd6ab5a018c3bce1f |
Headers | show |
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
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?
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
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!
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 --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)
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> ---