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