From 814efef67f2ee0245efce0cbfa52e70ca8498ba6 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Wed, 25 Feb 2015 20:42:19 +0000 Subject: [PATCH] [CMake] Fix the clang-cl self host build. This allows clang-cl to self-host cleanly with no magic setup steps required. After this patch, all you have to do is set CC=CXX=clang-cl and run cmake -G Ninja. These changes only exist to support C++ features which are unsupported in clang-cl, so regardless of whether the user specifies they want to use them, we still have to disable them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230539 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/AddLLVM.cmake | 6 +++++- cmake/modules/HandleLLVMOptions.cmake | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 780839d5c4f..7f6364428ca 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -10,7 +10,7 @@ function(llvm_update_compile_flags name) # LLVM_REQUIRES_EH is an internal flag that individual # targets can use to force EH - if(LLVM_REQUIRES_EH OR LLVM_ENABLE_EH) + if((LLVM_REQUIRES_EH OR LLVM_ENABLE_EH) AND NOT CLANG_CL) if(NOT (LLVM_REQUIRES_RTTI OR LLVM_ENABLE_RTTI)) message(AUTHOR_WARNING "Exception handling requires RTTI. Enabling RTTI for ${name}") set(LLVM_REQUIRES_RTTI ON) @@ -22,6 +22,10 @@ function(llvm_update_compile_flags name) list(APPEND LLVM_COMPILE_DEFINITIONS _HAS_EXCEPTIONS=0) list(APPEND LLVM_COMPILE_FLAGS "/EHs-c-") endif() + if (CLANG_CL) + # FIXME: Remove this once clang-cl supports SEH + list(APPEND LLVM_COMPILE_DEFINITIONS "GTEST_HAS_SEH=0") + endif() endif() # LLVM_REQUIRES_RTTI is an internal flag that individual diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index 14fda9284c9..fdc4ea0b4ac 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -25,6 +25,7 @@ if(NOT LLVM_FORCE_USE_OLD_TOOLCHAIN) if (CMAKE_CXX_SIMULATE_VERSION VERSION_LESS 18.0) message(FATAL_ERROR "Host Clang must have at least -fms-compatibility-version=18.0") endif() + set(CLANG_CL 1) elseif(NOT LLVM_ENABLE_LIBCXX) # Otherwise, test that we aren't using too old of a version of libstdc++ # with the Clang compiler. This is tricky as there is no real way to -- 2.34.1