diff options
author | Alexander Richardson <arichardson.kde@gmail.com> | 2019-07-27 12:30:15 +0000 |
---|---|---|
committer | Alexander Richardson <arichardson.kde@gmail.com> | 2019-07-27 12:30:15 +0000 |
commit | 33ed658ca8e891f2b8f753429e7257630e09afb2 (patch) | |
tree | 3be8a46088b8c0eed510d22193b224e5dc1f66da /cmake | |
parent | 214bcf1296cc2d1b81c45e1c0b938be8174fc7dd (diff) | |
download | compiler-rt-33ed658ca8e891f2b8f753429e7257630e09afb2.tar.gz |
[compiler-rt] Fix running tests on macOS when XCode is not installed
Summary:
If XCode is not installed, `xcodebuild -version -sdk macosx Path` will give
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
In this case the variable OSX_SYSROOT will be empty and
OSX_SYSROOT_FLAG is set to "-isysroot" (without a path).
This then causes the CompilerRTUnitTestCheckCxx target failed to for me
because "${COMPILER_RT_TEST_COMPILER} ${OSX_SYSROOT_FLAG} -E" expanded to
"clang -isysroot -E". This results in a warning "sysroot -E does not exist"
and the target fails to run because the C++ headers cannot be found.
Reviewers: beanz, kubamracek
Reviewed By: beanz
Subscribers: dberris, mgorny, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D65323
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@367170 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/base-config-ix.cmake | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake index cef0e0d73..b85720ead 100644 --- a/cmake/base-config-ix.cmake +++ b/cmake/base-config-ix.cmake @@ -91,15 +91,22 @@ else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR) endif() if(APPLE) - # On Darwin if /usr/include doesn't exist, the user probably has Xcode but not - # the command line tools. If this is the case, we need to find the OS X - # sysroot to pass to clang. - if(NOT EXISTS /usr/include) - execute_process(COMMAND xcodebuild -version -sdk macosx Path + # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but + # not the command line tools (or is using macOS 10.14 or newer). If this is + # the case, we need to find the OS X sysroot to pass to clang. + if(NOT EXISTS /usr/include/c++) + execute_process(COMMAND xcrun -sdk macosx --show-sdk-path OUTPUT_VARIABLE OSX_SYSROOT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}") + if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT}) + message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist") + else() + message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}") + set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}") + endif() + else() + set(OSX_SYSROOT_FLAG "") endif() option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" On) |