<p dir="ltr"><br>
On May 13, 2015 8:01 AM, "kallisti5" <<a href="mailto:kallisti5@unixzen.com">kallisti5@unixzen.com</a>> wrote:<br>
><br>
> On 2014-12-11 16:14, Jose Fonseca wrote:<br>
>><br>
>> From: José Fonseca <<a href="mailto:jfonseca@vmware.com">jfonseca@vmware.com</a>><br>
>><br>
>> This is just to help repro and fixing these issues with any C++ compiler --<br>
>><br>
>> commiting this will of course wait until all issues are addressed.<br>
>><br>
>><br>
>> $ scons src/glsl/<br>
>> scons: Reading SConscript files ...<br>
>> Checking for GCC ...  yes<br>
>> Checking for Clang ...  no<br>
>> Checking for X11 (x11 xext xdamage xfixes glproto >= 1.4.13)... yes<br>
>> Checking for XCB (x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8)... yes<br>
>> Checking for XF86VIDMODE (xxf86vm)... yes<br>
>> Checking for DRM (libdrm >= 2.4.38)... yes<br>
>> Checking for UDEV (libudev >= 151)... yes<br>
>> warning: LLVM disabled: not building llvmpipe<br>
>> scons: done reading SConscript files.<br>
>> scons: Building targets ...<br>
>> scons: building associated VariantDir targets: build/linux-x86_64-debug/glsl<br>
>>   Compiling src/glsl/ast_array_index.cpp ...<br>
>>   Compiling src/glsl/ast_expr.cpp ...<br>
>>   Compiling src/glsl/ast_function.cpp ...<br>
>>   Compiling src/glsl/ast_to_hir.cpp ...<br>
>>   Compiling src/glsl/ast_type.cpp ...<br>
>>   Compiling src/glsl/builtin_functions.cpp ...<br>
>> In file included from include/c99_compat.h:28:0,<br>
>>                  from src/mapi/u_compiler.h:4,<br>
>>                  from src/mapi/u_thread.h:47,<br>
>>                  from src/mapi/glapi/glapi.h:47,<br>
>>                  from src/mesa/main/mtypes.h:42,<br>
>>                  from src/mesa/main/errors.h:47,<br>
>>                  from src/mesa/main/imports.h:41,<br>
>>                  from src/mesa/main/core.h:44,<br>
>>                  from src/glsl/builtin_functions.cpp:58:<br>
>> include/no_extern_c.h:48:1: error: template with C linkage<br>
>>  template<class T> class _IncludeInsideExternCNotPortable;<br>
>>  ^<br>
><br>
><br>
> Good morning,<br>
><br>
> This change breaks all of the Haiku code as we use a *lot* of C++ code inside<br>
> of Mesa (well, all the OS interfaces are C++ that wrap the Mesa C)<br>
><br>
> /Builds/mesa> find . -name "*.cpp" | grep haiku<br>
> ./src/egl/drivers/haiku/egl_haiku.cpp<br>
> ./src/gallium/targets/haiku-softpipe/GalliumContext.cpp<br>
> ./src/gallium/targets/haiku-softpipe/SoftwareRenderer.cpp<br>
> ./src/mesa/drivers/haiku/swrast/SoftwareRast.cpp<br>
><br>
><br>
> Example:<br>
>   Compiling src/util/u_atomic_test.c ...<br>
><br>
> In file included from include/c99_compat.h:28:0,<br>
>                  from include/c11/threads.h:38,<br>
>                  from src/mesa/main/mtypes.h:39,<br>
>                  from src/mesa/main/errors.h:42,<br>
>                  from src/mesa/main/imports.h:44,<br>
>                  from src/mesa/main/context.h:52,<br>
>                  from src/mesa/drivers/haiku/swrast/SoftwareRast.h:20,<br>
>                  from src/mesa/drivers/haiku/swrast/SoftwareRast.cpp:14:<br>
> include/no_extern_c.h:47:1: error: template with C linkage<br>
><br>
>  template<class T> class _IncludeInsideExternCNotPortable;<br>
>  ^<br>
> In file included from include/c99_compat.h:28:0,<br>
>                  from src/gallium/include/pipe/p_compiler.h:32,<br>
>                  from src/gallium/auxiliary/util/u_math.h:42,<br>
>                  from src/mesa/main/macros.h:35,<br>
>                  from src/mesa/main/colormac.h:37,<br>
>                  from src/mesa/drivers/haiku/swrast/SoftwareRast.cpp:28:<br>
> include/no_extern_c.h:47:1: error: template with C linkage<br>
><br>
>  template<class T> class _IncludeInsideExternCNotPortable;<br>
><br>
> Any alternative fix ideas besides me adding a if !defined(__HAIKU__) to include/no_extern_c.h?</p>
<p dir="ltr">Please do not do that!  The whole point of this patch is to catch places where headers are included inside an extern "C" block.  This patch makes them a compile error instead of being silently wrong.</p>
<p dir="ltr">The correct solution is to fix the haiku platform integration so it doesn't do this.</p>
<p dir="ltr">--Jason</p>
<p dir="ltr">>  -- Alex<br>
><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</p>