diff options
author | Ankit Meel <ankitjmeel@gmail.com> | 2020-12-04 18:41:19 +0300 |
---|---|---|
committer | Ankit Meel <ankitjmeel@gmail.com> | 2020-12-04 18:43:15 +0300 |
commit | 719dfd40889aa50d39d27b3264388768f42b2984 (patch) | |
tree | 4481b55032c690e8d2bf98b5c22d30175f4b075b /build_files | |
parent | d07009498ac36d067fbccd61cfbcd51d4e2ba310 (diff) |
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
Diffstat (limited to 'build_files')
-rw-r--r-- | build_files/build_environment/cmake/clang.cmake | 34 | ||||
-rw-r--r-- | build_files/build_environment/cmake/harvest.cmake | 4 | ||||
-rw-r--r-- | build_files/build_environment/cmake/versions.cmake | 3 |
3 files changed, 39 insertions, 2 deletions
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) |