From 719dfd40889aa50d39d27b3264388768f42b2984 Mon Sep 17 00:00:00 2001 From: Ankit Meel Date: Fri, 4 Dec 2020 21:11:19 +0530 Subject: macOS deps: Support building clang tidy This patch builds clang-extra-tools on macOS for the clang-tidy binary. The script "run-clang-tidy.py" is also harvested because using the `CMAKE_C[XX]_CLANG_TIDY` option can miss out some files (like makesrna), and using the script is faster as it does not compile the files. Thanks to `@LazyDodo` for the base patch D8502. Reviewed By: LazyDodo, sebbas, #platform_macos Differential Revision: https://developer.blender.org/D9450 --- build_files/build_environment/cmake/clang.cmake | 34 ++++++++++++++++++++-- build_files/build_environment/cmake/harvest.cmake | 4 +++ build_files/build_environment/cmake/versions.cmake | 3 ++ 3 files changed, 39 insertions(+), 2 deletions(-) (limited to 'build_files') diff --git a/build_files/build_environment/cmake/clang.cmake b/build_files/build_environment/cmake/clang.cmake index 9de0ec1b182..d8d83619e1a 100644 --- a/build_files/build_environment/cmake/clang.cmake +++ b/build_files/build_environment/cmake/clang.cmake @@ -17,13 +17,14 @@ # ***** END GPL LICENSE BLOCK ***** set(CLANG_EXTRA_ARGS - -DCLANG_PATH_TO_LLVM_SOURCE=${BUILD_DIR}/ll/src/ll - -DCLANG_PATH_TO_LLVM_BUILD=${LIBDIR}/llvm + -DLLVM_DIR="${LIBDIR}/llvm/lib/cmake/llvm/" -DLLVM_USE_CRT_RELEASE=MD -DLLVM_USE_CRT_DEBUG=MDd -DLLVM_CONFIG=${LIBDIR}/llvm/bin/llvm-config ) +set(BUILD_CLANG_TOOLS OFF) + if(WIN32) set(CLANG_GENERATOR "Ninja") else() @@ -31,11 +32,32 @@ else() endif() if(APPLE) + set(BUILD_CLANG_TOOLS ON) set(CLANG_EXTRA_ARGS ${CLANG_EXTRA_ARGS} -DLIBXML2_LIBRARY=${LIBDIR}/xml2/lib/libxml2.a ) endif() +if(BUILD_CLANG_TOOLS) + # ExternalProject_Add does not allow multiple tarballs to be + # downloaded. Work around this by having an empty build action + # for the extra tools, and referring the clang build to the location + # of the clang-tools-extra source. + ExternalProject_Add(external_clang_tools + URL ${CLANG_TOOLS_URI} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH MD5=${CLANG_TOOLS_HASH} + INSTALL_DIR ${LIBDIR}/clang_tools + PREFIX ${BUILD_DIR}/clang_tools + CONFIGURE_COMMAND echo "." + BUILD_COMMAND echo "." + INSTALL_COMMAND echo "." + ) + list(APPEND CLANG_EXTRA_ARGS + -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=${BUILD_DIR}/clang_tools/src/external_clang_tools/ + ) +endif() + ExternalProject_Add(external_clang URL ${CLANG_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} @@ -65,6 +87,14 @@ add_dependencies( ll ) +if(BUILD_CLANG_TOOLS) + # `external_clang_tools` is for downloading the source, not compiling it. + add_dependencies( + external_clang + external_clang_tools + ) +endif() + # We currently do not build libxml2 on Windows. if(NOT WIN32) add_dependencies( diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 0f9b67a3d44..536907f563d 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -98,6 +98,10 @@ harvest(jpg/include jpeg/include "*.h") harvest(jpg/lib jpeg/lib "libjpeg.a") harvest(lame/lib ffmpeg/lib "*.a") harvest(clang/bin llvm/bin "clang-format") +if(BUILD_CLANG_TOOLS) + harvest(clang/bin llvm/bin "clang-tidy") + harvest(clang/share/clang llvm/share "run-clang-tidy.py") +endif() harvest(clang/include llvm/include "*") harvest(llvm/include llvm/include "*") harvest(llvm/bin llvm/bin "llvm-config") diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index 653db9f740c..d4a2c715ecc 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -120,6 +120,9 @@ set(LLVM_HASH 31eb9ce73dd2a0f8dcab8319fb03f8fc) set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz) set(CLANG_HASH 13468e4a44940efef1b75e8641752f90) +set(CLANG_TOOLS_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-tools-extra-${LLVM_VERSION}.src.tar.xz) +set(CLANG_TOOLS_HASH c76293870b564c6a7968622b475b7646) + set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz) set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf) -- cgit v1.2.3