https://github.com/ken-matsui created 
https://github.com/llvm/llvm-project/pull/172727

None

>From e17311a5779db97024009b84f3cdf76c6af0686e Mon Sep 17 00:00:00 2001
From: Ken Matsui <[email protected]>
Date: Wed, 17 Dec 2025 15:06:27 -0500
Subject: [PATCH] [clang][cmake] Add option to control scan-build-py
 installation

---
 clang/tools/scan-build-py/CMakeLists.txt | 186 ++++++++++++-----------
 1 file changed, 95 insertions(+), 91 deletions(-)

diff --git a/clang/tools/scan-build-py/CMakeLists.txt 
b/clang/tools/scan-build-py/CMakeLists.txt
index 9273eb5ed977e..84087a9fd8d2e 100644
--- a/clang/tools/scan-build-py/CMakeLists.txt
+++ b/clang/tools/scan-build-py/CMakeLists.txt
@@ -1,3 +1,5 @@
+option(CLANG_INSTALL_SCANBUILDPY "Install the scan-build-py tools" ON)
+
 set (BinFiles
      "analyze-build"
      "intercept-build"
@@ -31,102 +33,104 @@ set (LibEar
      "config.h.in"
      "ear.c")
 
-foreach(BinFile ${BinFiles})
-  if ("${BinFile}" STREQUAL "scan-build")
-    # Need to rename scan-build to scan-build-py to prevent overwriting
-    # scan-build Perl implementation.
-    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/scan-build-py
+if(CLANG_INSTALL_SCANBUILDPY)
+  foreach(BinFile ${BinFiles})
+    if ("${BinFile}" STREQUAL "scan-build")
+      # Need to rename scan-build to scan-build-py to prevent overwriting
+      # scan-build Perl implementation.
+      add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/scan-build-py
+                         COMMAND ${CMAKE_COMMAND} -E make_directory
+                           ${CMAKE_BINARY_DIR}/bin
+                         COMMAND ${CMAKE_COMMAND} -E copy
+                           ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build
+                           ${CMAKE_BINARY_DIR}/bin/scan-build-py
+                         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build)
+      install (PROGRAMS "bin/scan-build"
+               DESTINATION "${CMAKE_INSTALL_BINDIR}"
+               RENAME scan-build-py
+               COMPONENT scan-build-py)
+      list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/scan-build-py)
+    else()
+      add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
+                         COMMAND ${CMAKE_COMMAND} -E make_directory
+                           ${CMAKE_BINARY_DIR}/bin
+                         COMMAND ${CMAKE_COMMAND} -E copy
+                           ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
+                           ${CMAKE_BINARY_DIR}/bin/
+                         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
+      install(PROGRAMS bin/${BinFile}
+              DESTINATION "${CMAKE_INSTALL_BINDIR}"
+              COMPONENT scan-build-py)
+      list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
+    endif()
+  endforeach()
+
+  foreach(lib ${LibExecs})
+    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${lib}
                        COMMAND ${CMAKE_COMMAND} -E make_directory
-                         ${CMAKE_BINARY_DIR}/bin
+                         ${CMAKE_BINARY_DIR}/libexec
                        COMMAND ${CMAKE_COMMAND} -E copy
-                         ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build
-                         ${CMAKE_BINARY_DIR}/bin/scan-build-py
-                       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build)
-    install (PROGRAMS "bin/scan-build"
-             DESTINATION "${CMAKE_INSTALL_BINDIR}"
-             RENAME scan-build-py
-             COMPONENT scan-build-py)
-    list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/scan-build-py)
-  else()
-    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
+                         ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib}
+                         ${CMAKE_BINARY_DIR}/libexec/
+                       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib})
+    list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${lib})
+    install(PROGRAMS libexec/${lib}
+            DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}"
+            COMPONENT scan-build-py)
+  endforeach()
+
+  foreach(lib ${LibScanbuild})
+    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}
                        COMMAND ${CMAKE_COMMAND} -E make_directory
-                         ${CMAKE_BINARY_DIR}/bin
+                         ${CMAKE_BINARY_DIR}/lib
+                       COMMAND ${CMAKE_COMMAND} -E make_directory
+                         ${CMAKE_BINARY_DIR}/lib/libscanbuild
                        COMMAND ${CMAKE_COMMAND} -E copy
-                         ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
-                         ${CMAKE_BINARY_DIR}/bin/
-                       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
-    install(PROGRAMS bin/${BinFile}
-            DESTINATION "${CMAKE_INSTALL_BINDIR}"
+                         ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}
+                         ${CMAKE_BINARY_DIR}/lib/libscanbuild/
+                       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
+    list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
+    install(FILES lib/libscanbuild/${lib}
+            DESTINATION lib/libscanbuild
             COMPONENT scan-build-py)
-    list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
-  endif()
-endforeach()
-
-foreach(lib ${LibExecs})
-  add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${lib}
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/libexec
-                     COMMAND ${CMAKE_COMMAND} -E copy
-                       ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib}
-                       ${CMAKE_BINARY_DIR}/libexec/
-                     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib})
-  list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${lib})
-  install(PROGRAMS libexec/${lib}
-          DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}"
-          COMPONENT scan-build-py)
-endforeach()
+  endforeach()
 
-foreach(lib ${LibScanbuild})
-  add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib/libscanbuild
-                     COMMAND ${CMAKE_COMMAND} -E copy
-                       ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}
-                       ${CMAKE_BINARY_DIR}/lib/libscanbuild/
-                     DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
-  list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
-  install(FILES lib/libscanbuild/${lib}
-          DESTINATION lib/libscanbuild
-          COMPONENT scan-build-py)
-endforeach()
-
-foreach(resource ${LibScanbuildResources})
-  add_custom_command(OUTPUT 
${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib/libscanbuild
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
-                     COMMAND ${CMAKE_COMMAND} -E copy
-                       
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}
-                       ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
-                     DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
-  list(APPEND Depends 
${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
-  install(FILES lib/libscanbuild/resources/${resource}
-          DESTINATION lib/libscanbuild/resources
-          COMPONENT scan-build-py)
-endforeach()
+  foreach(resource ${LibScanbuildResources})
+    add_custom_command(OUTPUT 
${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}
+                       COMMAND ${CMAKE_COMMAND} -E make_directory
+                         ${CMAKE_BINARY_DIR}/lib
+                       COMMAND ${CMAKE_COMMAND} -E make_directory
+                         ${CMAKE_BINARY_DIR}/lib/libscanbuild
+                       COMMAND ${CMAKE_COMMAND} -E make_directory
+                         ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
+                       COMMAND ${CMAKE_COMMAND} -E copy
+                         
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}
+                         ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
+                       DEPENDS 
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
+    list(APPEND Depends 
${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
+    install(FILES lib/libscanbuild/resources/${resource}
+            DESTINATION lib/libscanbuild/resources
+            COMPONENT scan-build-py)
+  endforeach()
 
-foreach(lib ${LibEar})
-  add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libear/${lib}
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib
-                     COMMAND ${CMAKE_COMMAND} -E make_directory
-                       ${CMAKE_BINARY_DIR}/lib/libear
-                     COMMAND ${CMAKE_COMMAND} -E copy
-                       ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}
-                       ${CMAKE_BINARY_DIR}/lib/libear/
-                     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
-  list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
-  install(FILES lib/libear/${lib}
-          DESTINATION lib/libear
-          COMPONENT scan-build-py)
-endforeach()
+  foreach(lib ${LibEar})
+    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libear/${lib}
+                       COMMAND ${CMAKE_COMMAND} -E make_directory
+                         ${CMAKE_BINARY_DIR}/lib
+                       COMMAND ${CMAKE_COMMAND} -E make_directory
+                         ${CMAKE_BINARY_DIR}/lib/libear
+                       COMMAND ${CMAKE_COMMAND} -E copy
+                         ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}
+                         ${CMAKE_BINARY_DIR}/lib/libear/
+                       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
+    list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
+    install(FILES lib/libear/${lib}
+            DESTINATION lib/libear
+            COMPONENT scan-build-py)
+  endforeach()
 
-add_custom_target(scan-build-py ALL DEPENDS ${Depends})
-add_llvm_install_targets("install-scan-build-py"
-                         DEPENDS scan-build-py
-                         COMPONENT scan-build-py)
+  add_custom_target(scan-build-py ALL DEPENDS ${Depends})
+  add_llvm_install_targets("install-scan-build-py"
+                           DEPENDS scan-build-py
+                           COMPONENT scan-build-py)
+endif()

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to