aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Raad <Marcel.Raad@teamviewer.com>2017-06-23 01:28:17 +0200
committerMarcel Raad <Marcel.Raad@teamviewer.com>2017-06-24 11:10:38 +0200
commite5d6aa8d613e892b513fa8224aa96d2a5008274f (patch)
tree62b1fd5286f58f5be3354d6fc6e2ecd59af51e70
parent64ed44a815e4ee158ea1c0a57a714f0d501ad109 (diff)
curl-compilers.m4: fix unknown-warning-option on Apple clang
Since 5598b0bd63f690c151074494ce47ef872f004ab4, clang -v is used to detect the clang version. The version number was expected to come after the word "version". For Apple clang, this doesn't work as it has its own versioning scheme. The version number is now first searched after the string "based on LLVM". This works for Apple clang before version 7, and also for e.g. Ubuntu's clang up to version 3.7. If it's not found and the version string contains "Apple LLVM version", clang version 3.7 is assumed, which is the version that comes with Xcode 7. Otherwise, the version number is still expected after the word "version", which works for very old Apple clang versions. Ref: https://trac.macports.org/wiki/XcodeVersionInfo Fixes https://github.com/curl/curl/issues/1606 Closes https://github.com/curl/curl/pull/1607
-rw-r--r--m4/curl-compilers.m411
1 files changed, 10 insertions, 1 deletions
diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4
index a1801df97..dcd96ed54 100644
--- a/m4/curl-compilers.m4
+++ b/m4/curl-compilers.m4
@@ -84,7 +84,16 @@ AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [
if test "$curl_cv_have_def___clang__" = "yes"; then
AC_MSG_RESULT([yes])
compiler_id="CLANG"
- clangver=`$CC -v 2>&1 | grep version | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'`
+ fullclangver=`$CC -v 2>&1 | grep version`
+ clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*)/\1/'`
+ if test -z "$clangver"; then
+ if echo $fullclangver | grep "Apple LLVM version " >/dev/null; then
+ dnl Starting with XCode 7 / clang 3.7, Apple clang won't tell its upstream version
+ clangver=`3.7`
+ else
+ clangver=`echo $fullclangver | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'`
+ fi
+ fi
clangvhi=`echo $clangver | cut -d . -f1`
clangvlo=`echo $clangver | cut -d . -f2`
compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`