configure: Further fixes to Clang support.
* Actually locate the clang executable, and allow user overrides * Properly preserve arguments in get_build_tool_path * Fix get_build_tool_path for commands with dashes (e.g. "clang-5.0")
This commit is contained in:
@@ -34,6 +34,10 @@ rule ArchitectureSetup architecture
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $(HAIKU_CC_IS_CLANG_$(architecture)) = 1 {
|
||||||
|
gccBaseFlags += -fno-builtin-vfork ;
|
||||||
|
}
|
||||||
|
|
||||||
# disable array bounds warnings on gcc 4.6 or newer since they trigger
|
# disable array bounds warnings on gcc 4.6 or newer since they trigger
|
||||||
# too many false positives. Coverity does a better job of this kind of
|
# too many false positives. Coverity does a better job of this kind of
|
||||||
# analysis anyways.
|
# analysis anyways.
|
||||||
@@ -132,6 +136,10 @@ rule ArchitectureSetup architecture
|
|||||||
HAIKU_WERROR_FLAGS_$(architecture) += -Wno-unused-but-set-variable ;
|
HAIKU_WERROR_FLAGS_$(architecture) += -Wno-unused-but-set-variable ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $(HAIKU_CC_IS_CLANG_$(architecture)) = 1 {
|
||||||
|
gccBaseFlags += -Wno-address-of-packed-member -Wno-unused-private-field ;
|
||||||
|
}
|
||||||
|
|
||||||
# debug flags
|
# debug flags
|
||||||
local debugFlags = -ggdb ;
|
local debugFlags = -ggdb ;
|
||||||
|
|
||||||
|
|||||||
@@ -106,15 +106,15 @@ options:
|
|||||||
|
|
||||||
environment variables:
|
environment variables:
|
||||||
CC The host compiler. Defaults to "gcc".
|
CC The host compiler. Defaults to "gcc".
|
||||||
HAIKU_AR_x86_gcc2 The static library archiver for x86_gcc2.
|
HAIKU_AR_<arch> The static library archiver for <arch>.
|
||||||
Defaults to "ar".
|
Defaults to "ar".
|
||||||
HAIKU_CC_x86_gcc2 The x86_gcc2 compiler. Defaults to "gcc".
|
HAIKU_CC_<arch> The compiler for <arch>. Defaults to "gcc".
|
||||||
HAIKU_LD_x86_gcc2 The x86_gcc2 linker. Defaults to "ld".
|
HAIKU_LD_<arch> The <arch> linker. Defaults to "ld".
|
||||||
HAIKU_OBJCOPY_x86_gcc2 The x86_gcc2 objcopy to be used. Defaults to
|
HAIKU_OBJCOPY_<arch> The <arch> objcopy to be used. Defaults to
|
||||||
"objcopy".
|
"objcopy".
|
||||||
HAIKU_RANLIB_x86_gcc2 The static library indexer for x86_gcc2. Defaults
|
HAIKU_RANLIB_<arch> The static library indexer for <arch>. Defaults
|
||||||
to "ranlib".
|
to "ranlib".
|
||||||
HAIKU_STRIP_x86_gcc2 The x86_gcc2 strip command. Defaults to "strip".
|
HAIKU_STRIP_<arch> The <arch> strip command. Defaults to "strip".
|
||||||
HAIKU_NASM The nasm assembler (x86 and x86_64 only).
|
HAIKU_NASM The nasm assembler (x86 and x86_64 only).
|
||||||
HAIKU_CPPFLAGS_<arch> The preprocessor flags for target architecture
|
HAIKU_CPPFLAGS_<arch> The preprocessor flags for target architecture
|
||||||
<arch>. Defaults to "".
|
<arch>. Defaults to "".
|
||||||
@@ -224,7 +224,7 @@ real_path()
|
|||||||
#
|
#
|
||||||
standard_gcc_settings()
|
standard_gcc_settings()
|
||||||
{
|
{
|
||||||
local gcc=$1
|
local gcc="$1"
|
||||||
|
|
||||||
if which greadlink > /dev/null 2>&1; then
|
if which greadlink > /dev/null 2>&1; then
|
||||||
readlink="greadlink -e"
|
readlink="greadlink -e"
|
||||||
@@ -353,8 +353,8 @@ set_default_value()
|
|||||||
get_build_tool_path()
|
get_build_tool_path()
|
||||||
{
|
{
|
||||||
local var="HAIKU_$1"
|
local var="HAIKU_$1"
|
||||||
local varval=`get_variable $var`
|
local varval="`get_variable $var`"
|
||||||
local cmd=$2
|
local cmd="$2"
|
||||||
|
|
||||||
if [ ! -z "$varval" ]; then
|
if [ ! -z "$varval" ]; then
|
||||||
# this variable is already set (probably by user) so grab its contents
|
# this variable is already set (probably by user) so grab its contents
|
||||||
@@ -364,7 +364,7 @@ get_build_tool_path()
|
|||||||
local path=${cmd%% *}
|
local path=${cmd%% *}
|
||||||
|
|
||||||
if [ -f "$path" ]; then
|
if [ -f "$path" ]; then
|
||||||
# get absolute path
|
# get absolute path from relative path
|
||||||
local oldPwd="`pwd`"
|
local oldPwd="`pwd`"
|
||||||
cd "`dirname "$path"`"
|
cd "`dirname "$path"`"
|
||||||
path="`pwd`/`basename "$path"`"
|
path="`pwd`/`basename "$path"`"
|
||||||
@@ -376,7 +376,14 @@ get_build_tool_path()
|
|||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
eval "$var=\"$path ${cmd#${2%% *}}\""
|
if test "${cmd#* }" != "$cmd"; then
|
||||||
|
# $cmd contains arguments, so preserve them (and only them)
|
||||||
|
cmd=${cmd#* }
|
||||||
|
else
|
||||||
|
# $cmd does not contain arguments, so unset it
|
||||||
|
cmd=
|
||||||
|
fi
|
||||||
|
eval "$var=\"$path $cmd\""
|
||||||
}
|
}
|
||||||
|
|
||||||
is_in_list()
|
is_in_list()
|
||||||
@@ -618,6 +625,10 @@ while [ $# -gt 0 ] ; do
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
get_build_tool_path clang clang
|
||||||
|
if [ -n "crossToolsPrefix_$targetArch" ]; then
|
||||||
|
set_variable crossToolsPrefix_$targetArch llvm-
|
||||||
|
fi
|
||||||
targetArchs="$targetArchs $targetArch"
|
targetArchs="$targetArchs $targetArch"
|
||||||
HAIKU_PACKAGING_ARCHS=
|
HAIKU_PACKAGING_ARCHS=
|
||||||
shift 2
|
shift 2
|
||||||
@@ -796,7 +807,7 @@ else
|
|||||||
|
|
||||||
# prepare gcc settings and get the actual target architecture
|
# prepare gcc settings and get the actual target architecture
|
||||||
if [ $useClang = 1 ]; then
|
if [ $useClang = 1 ]; then
|
||||||
gcc="clang -target ${targetMachine} -no-integrated-as"
|
gcc="$HAIKU_clang -target ${targetMachine} -no-integrated-as"
|
||||||
elif [ -z "${crossToolsPrefix}" ]; then
|
elif [ -z "${crossToolsPrefix}" ]; then
|
||||||
gcc=`get_variable HAIKU_CC_$targetArch`
|
gcc=`get_variable HAIKU_CC_$targetArch`
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user