On 20/10/14 20:56, Jose Fonseca wrote: > Note that doing > > #include <cmath> > > is a bad idea too, as it can cause precisely the same error you're trying to > fix. This is because on certain implementations of C++ STL, if some other > header has '#include <math.h>, then '#include <cmath>' later on, the later > include can be a no-op and nothing is declared on std namespace. > The "sanity" of some STL implementations :\
> In short, when mixing C and C++ code, it seems one should always include the > standard C headers instead of the C++ <c*> headers. > > Its also not clear why isfinite is not on the global namespace. I suspect > that again, the problem is that some other header is including <cmath> before > u_math.h ... If so, then *please* lets stop doing it. I already brought > this issue many many times. Not sure why people still think that including > <c*> headers in Mesa is a good idea.. > Quick snippet from $ man isfinite Feature Test Macro Requirements for glibc (see feature_test_macros(7)): isfinite(): _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L; or cc -std=c99 One cannot do _POSIX_C_SOURCE (android is not really posix) or -std=c99 (we're compiling C++). Android is bionic, so maybe none of the above four apply? Will need to take a look at their local hacks for this. Cheers, Emil > Jose > > > ________________________________________ > From: mesa-dev <mesa-dev-boun...@lists.freedesktop.org> on behalf of Emil > Velikov <emil.l.veli...@gmail.com> > Sent: 19 October 2014 08:41 > To: Ilia Mirkin > Cc: mesa-dev@lists.freedesktop.org; Mauro Rossi; emil.l.veli...@gmail.com; > 10.2 10.3 > Subject: Re: [Mesa-dev] [PATCH 2/3] gallium/nouveau: use std::isfinite in c++ > sources > > On 19/10/14 16:23, Ilia Mirkin wrote: >> Can you provide more detail as to why the util/u_math.h include is >> insufficient? Perhaps it should be fixed up similarly to how >> mesa/main/imports.h does it? >> > The actual error message is quite explanatory > external/mesa/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:421:35: > *error: 'isfinite' was not declared in this scope* > > Whereas which branch of the ifdef spaghetti the compiler takes in order > to get there is a good question. I doubt that I'll get the chance to > look into it any time soon. Yet it makes sense to use C++ headers for > C++ code - don't you agree ? > > -Emil > >> -ilia >> >> On Sun, Oct 19, 2014 at 11:16 AM, Emil Velikov <emil.l.veli...@gmail.com> >> wrote: >>> From: Mauro Rossi <issor.or...@gmail.com> >>> >>> Otherwise the android build will fail. >>> >>> Cc: "10.2 10.3" <mesa-sta...@lists.freedesktop.org> >>> --- >>> src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 8 +++----- >>> 1 file changed, 3 insertions(+), 5 deletions(-) >>> >>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp >>> b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp >>> index 719f980..b9744e3 100644 >>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp >>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp >>> @@ -24,9 +24,7 @@ >>> #include "codegen/nv50_ir_target.h" >>> #include "codegen/nv50_ir_build_util.h" >>> >>> -extern "C" { >>> -#include "util/u_math.h" >>> -} >>> +#include <cmath> >>> >>> namespace nv50_ir { >>> >>> @@ -416,9 +414,9 @@ ConstantFolding::expr(Instruction *i, >>> case OP_FMA: >>> case OP_MUL: >>> if (i->dnz && i->dType == TYPE_F32) { >>> - if (!isfinite(a->data.f32)) >>> + if (!std::isfinite(a->data.f32)) >>> a->data.f32 = 0.0f; >>> - if (!isfinite(b->data.f32)) >>> + if (!std::isfinite(b->data.f32)) >>> b->data.f32 = 0.0f; >>> } >>> switch (i->dType) { >>> -- >>> 2.1.0 >>> >>> _______________________________________________ >>> mesa-dev mailing list >>> mesa-dev@lists.freedesktop.org >>> https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/mesa-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=gfofPYjf71jByJAx2C4ZN88t%2F8o679AdH%2FRt%2FdPH%2FKk%3D%0A&s=efd19554ccfca3e28195fab8f3a769caffa8d946ff5d163424d46c76fae325f6 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/mesa-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=gfofPYjf71jByJAx2C4ZN88t%2F8o679AdH%2FRt%2FdPH%2FKk%3D%0A&s=efd19554ccfca3e28195fab8f3a769caffa8d946ff5d163424d46c76fae325f6 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev