[Bf-blender-cvs] [719dfd40889] master: macOS deps: Support building clang tidy

Ankit Meel noreply at git.blender.org
Fri Dec 4 16:45:04 CET 2020


Commit: 719dfd40889aa50d39d27b3264388768f42b2984
Author: Ankit Meel
Date:   Fri Dec 4 21:11:19 2020 +0530
Branches: master
https://developer.blender.org/rB719dfd40889aa50d39d27b3264388768f42b2984

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

===================================================================

M	build_files/build_environment/cmake/clang.cmake
M	build_files/build_environment/cmake/harvest.cmake
M	build_files/build_environment/cmake/versions.cmake

===================================================================

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)



More information about the Bf-blender-cvs mailing list