build: Copy and use Clang's vector intrinsics headers.

When compiling with GCC, these headers get pulled in from the
gcc_syslibs_devel package, but we cannot do something similar
for Clang as Clang adds/removes internal builtins used by
the headers nearly every version. So instead we just copy
all the intrinsics headers from current Clang into generated,
and make sure this directory is included before any others.
This commit is contained in:
Augustin Cavalier 2017-12-01 21:16:13 -05:00
parent 30c9d3c0cc
commit 1f6fe0559b
2 changed files with 10 additions and 0 deletions

View File

@ -456,6 +456,10 @@ rule FStandardHeaders architecture
local headers = ;
if $(HAIKU_CC_IS_CLANG_$(architecture)) = 1 {
headers += [ FDirName $(HAIKU_OUTPUT_DIR) clang_headers ] ;
}
# The c++ headers.
headers += [ C++HeaderDirectories $(architecture) ] ;

6
configure vendored
View File

@ -808,6 +808,12 @@ else
# prepare gcc settings and get the actual target architecture
if [ $useClang = 1 ]; then
gcc="$HAIKU_clang -target ${targetMachine} -no-integrated-as"
# Clang's compiler intrinsics are not compatible with GCC's or even
# across versions of Clang, so we must collect them for use in the build.
mkdir -p "$outputDir/clang_headers" || exit 1
clangHeadersDir=`$gcc -print-resource-dir`/include/
cp $clangHeadersDir/*intrin* $clangHeadersDir/mm3* "$outputDir/clang_headers" || exit 1
elif [ -z "${crossToolsPrefix}" ]; then
gcc=`get_variable HAIKU_CC_$targetArch`
else