CMake build: Support building clang tooling without static libs

Create a FindClang.cmake and move all Clang configuration there.
Find Clang and choose static libraries if available, otherwise use
clang-cpp if available.
Add option to link to clang-cpp even if static libraries are available.

Fixes: QTCREATORBUG-23172
Change-Id: If40304d174469df0c786259e724cbee8de0e2d0e
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Eike Ziller
2020-09-02 10:30:37 +02:00
parent 5b8846a4f8
commit 6cff79d377
4 changed files with 19 additions and 17 deletions

View File

@@ -43,12 +43,11 @@ find_package(Qt5
QuickWidgets Sql Widgets Xml ${QT_TEST_COMPONENT}
REQUIRED
)
find_package(Qt5 COMPONENTS LinguistTools)
find_package(Qt5 COMPONENTS Designer DesignerComponents Help SerialPort Svg QUIET)
find_package(Threads)
find_package(Qt5 COMPONENTS Designer DesignerComponents Help SerialPort Svg QUIET)
find_package(Clang QUIET)
function (set_if_target var target)
if (TARGET "${target}")
@@ -75,15 +74,6 @@ else()
endif()
install(TARGETS OptionalSvg EXPORT QtCreator)
find_package(Clang COMPONENTS libclang QUIET)
# silence a lot of warnings from building against llvm
# this would better fit inside a central libclang detection/include cmake file, but since we do not
# have one put it temporary here
if(MSVC AND TARGET libclang)
target_compile_options(libclang INTERFACE /wd4100 /wd4141 /wd4146 /wd4244 /wd4267 /wd4291)
endif()
find_package(LLVM QUIET)
if (APPLE)
find_library(FWCoreFoundation CoreFoundation)
find_library(FWCoreServices CoreServices)

14
cmake/FindClang.cmake Normal file
View File

@@ -0,0 +1,14 @@
find_package(Clang CONFIG)
# silence a lot of warnings from building against llvm
if(MSVC AND TARGET libclang)
target_compile_options(libclang INTERFACE /wd4100 /wd4141 /wd4146 /wd4244 /wd4267 /wd4291)
endif()
option(CLANGTOOLING_LINK_CLANG_DYLIB "Force linking of Clang tooling against clang-cpp" NO)
if (TARGET clangTooling AND NOT CLANGTOOLING_LINK_CLANG_DYLIB)
set(CLANG_TOOLING_LIBS libclang clangTooling clangQuery clangIndex)
elseif (TARGET clang-cpp)
set(CLANG_TOOLING_LIBS libclang clang-cpp)
endif()

View File

@@ -3,7 +3,8 @@ add_subdirectory(source)
add_qtc_executable(clangpchmanagerbackend
DEPENDS
clangrefactoringbackend_lib clangpchmanagerbackend_lib
clangTooling libclang Sqlite ClangSupport clangQuery clangIndex
Sqlite ClangSupport
${CLANG_TOOLING_LIBS}
SOURCES
clangpchmanagerbackendmain.cpp
)

View File

@@ -1,10 +1,7 @@
add_qtc_library(clangrefactoringbackend_lib STATIC
PUBLIC_DEPENDS
Threads::Threads
LLVMCore libclang
clangAST clangASTMatchers clangBasic clangDynamicASTMatchers clangFrontend
clangHandleCXX clangIndex clangLex
clangSerialization clangTooling clangQuery
${CLANG_TOOLING_LIBS}
ClangSupport
PUBLIC_DEFINES CLANGSUPPORT_BUILD_LIB
PUBLIC_INCLUDES