I am currently trying to build libcxx but well I am having trouble.
The current problem is that I am getting the following compile error:

In file included from 
/home/user/dev/emscripten_dev/emscripten/system/lib/libcxx/exception.cpp:12:
In file included from 
/home/user/dev/emscripten_dev/emscripten/system/include/libcxx/exception:81:
/home/user/dev/emscripten_dev/emscripten/system/include/libcxx/cstddef:43:15: 
fatal error: 'stddef.h' file not
      found
#include_next <stddef.h>
              ^
1 error generated.

#include_next is probably used to modify the system included stddef.h 
header as the new version of libcxx provides their own 
stddef.h/stdio.h/stdlib.h...
But clang couldn't find the header so I looked at the command line and 
noticed that libcxx and libc include dirs should be swapped because 
otherwise clang can't find the header, it's just how #include_next works I 
guess.

The old command line (obtained by EMCC_DEBUG=1):

/home/user/dev/emscripten_dev/emscripten-fastcomp/build/bin/clang++ \
    -target asmjs-unknown-emscripten \
    -D__EMSCRIPTEN_major__=1 \
    -D__EMSCRIPTEN_minor__=36 \
    -D__EMSCRIPTEN_tiny__=3 \
    -Werror=implicit-function-declaration \
    -nostdinc \
    -Xclang \
    -nobuiltininc \
    -Xclang \
    -nostdsysteminc \
    -Xclang \
    -isystem/home/user/dev/emscripten_dev/emscripten/system/local/include \
    -Xclang \
    -isystem/home/user/dev/emscripten_dev/emscripten/system/include/compat \
    -Xclang \
    -isystem/home/user/dev/emscripten_dev/emscripten/system/include \
    -Xclang \
    
-isystem/home/user/dev/emscripten_dev/emscripten/system/include/emscripten \
    -Xclang \
    -isystem/home/user/dev/emscripten_dev/emscripten/system/include/libc \
    -Xclang \
    
-isystem/home/user/dev/emscripten_dev/emscripten/system/lib/libc/musl/arch/emscripten
 
\
    -Xclang \
    -isystem/home/user/dev/emscripten_dev/emscripten/system/include/libcxx \
    -Xclang \
    
-isystem/home/user/dev/emscripten_dev/emscripten/system/lib/libcxxabi/include 
\
    -std=c++11 \
    -Oz \
    -mllvm \
    -disable-llvm-optzns \
    
/home/user/dev/emscripten_dev/emscripten/system/lib/libcxx/exception.cpp \
    -Xclang \
    -isystem/home/user/dev/emscripten_dev/emscripten/system/include/SDL \
    -emit-llvm \
    -c \
    -o /tmp/tmprVBuXXXX

I got this working by inserting 
"-isystem/home/user/dev/emscripten_dev/emscripten/system/include/libcxx" 
before the libc include dir.

So the current workaround is to reorder the include dirs (libcxx before 
libc becuase of libc header modified using libcxx headers) but I am not 
exactly sure how I could implement a proper fix for this as emcc somehow 
automatically adds these default compiler flags. Is there any way to change 
this?

Am Montag, 2. Mai 2016 02:17:18 UTC+2 schrieb Alon Zakai:
>
> We used to need some hacks due to limitations of our libc, but there have 
> been fewer each time we update libc. I'm actually not sure if we need any 
> more. It would be great it you checked if plain recent libcxx works, and if 
> so, opened a PR with that update.
>
> On Sun, May 1, 2016 at 12:17 PM, <[email protected] <javascript:>> wrote:
>
>> Oh, I have just checked out the source of libcxx included in emscripten 
>> and it seems that it has not been modified for emscripten. Am I wrong with 
>> that? Does libcxx need modification to work with emscripten? In the case 
>> that it doesn't any modification, it seems that I will give it a try using 
>> a newer version of libcxx.
>>
>> Am Sonntag, 1. Mai 2016 20:59:09 UTC+2 schrieb [email protected]:
>>>
>>> Hey,
>>>
>>> I noticed that emscripten is using a pretty old version of libcxx and 
>>> isn't fully C++14 compliant as for example there should be a constexpr 
>>> version of operator[] in std::array but the constexpr version doesn't exist 
>>> and so it means that that old version of libcxx may not fully support 
>>> C++14. Is there any option to get an updated version of libcxx into 
>>> emscripten?
>>>
>>> ~ Paul
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to