[llvm] [opt-viewer] Allow users to set LLVM_HAVE_OPT_VIEWER_MODULES manually… (PR #151845)

Khem Raj via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 5 09:06:00 PDT 2025


https://github.com/kraj updated https://github.com/llvm/llvm-project/pull/151845

>From 431d4ea926d82171843cbccd11bcbef2fcd82964 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem at gmail.com>
Date: Sat, 2 Aug 2025 17:58:20 -0700
Subject: [PATCH] llvm: Allow users to set LLVM_HAVE_OPT_VIEWER_MODULES
 manually from the CMake

Check right before setting LLVM_HAVE_OPT_VIEWER_MODULES
so that if the user specifies the variable on the commandline
it takes precedence. If not, fall back to the old logic

Do not install opt-viewer of the modules are not found. Since the python
scripts have dependencies on these modules, it makes not much point to
have them installed.
---
 llvm/CMakeLists.txt                  |  2 ++
 llvm/cmake/config-ix.cmake           | 13 ++++++++++---
 llvm/tools/opt-viewer/CMakeLists.txt | 24 +++++++++++++-----------
 3 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 4c70b98a32f92..60b786ca39c2e 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -7,6 +7,8 @@ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
 include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
   NO_POLICY_SCOPE)
 
+option(LLVM_HAVE_OPT_VIEWER_MODULES "Enable opt-viewer modules support" ON)
+
 # Builds with custom install names and installation rpath setups may not work
 # in the build tree. Allow these cases to use CMake's default build tree
 # behavior by setting `LLVM_NO_INSTALL_NAME_DIR_FOR_BUILD_TREE` to do this.
diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake
index a8e4e5a63244d..17af3dc1e93f4 100644
--- a/llvm/cmake/config-ix.cmake
+++ b/llvm/cmake/config-ix.cmake
@@ -805,10 +805,17 @@ foreach(module ${PYTHON_MODULES})
   find_python_module(${module})
 endforeach()
 
-if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND)
-  set (LLVM_HAVE_OPT_VIEWER_MODULES 1)
+if(NOT DEFINED LLVM_HAVE_OPT_VIEWER_MODULES)
+  if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND)
+    set (LLVM_HAVE_OPT_VIEWER_MODULES 1)
+  else()
+    set (LLVM_HAVE_OPT_VIEWER_MODULES 0)
+  endif()
+elseif(LLVM_HAVE_OPT_VIEWER_MODULES)
+  # Use the user-provided value
+  set(LLVM_HAVE_OPT_VIEWER_MODULES 1)
 else()
-  set (LLVM_HAVE_OPT_VIEWER_MODULES 0)
+  set(LLVM_HAVE_OPT_VIEWER_MODULES 0)
 endif()
 
 function(llvm_get_host_prefixes_and_suffixes)
diff --git a/llvm/tools/opt-viewer/CMakeLists.txt b/llvm/tools/opt-viewer/CMakeLists.txt
index 4bcf6932ee773..d231c39bcc5d8 100644
--- a/llvm/tools/opt-viewer/CMakeLists.txt
+++ b/llvm/tools/opt-viewer/CMakeLists.txt
@@ -6,16 +6,18 @@ set (files
   "optrecord.py"
   "style.css")
 
-foreach (file ${files})
-  install(PROGRAMS ${file}
-    DESTINATION "${CMAKE_INSTALL_DATADIR}/opt-viewer"
-    COMPONENT opt-viewer)
-endforeach (file)
+if(LLVM_HAVE_OPT_VIEWER_MODULES)
+  foreach (file ${files})
+    install(PROGRAMS ${file}
+      DESTINATION "${CMAKE_INSTALL_DATADIR}/opt-viewer"
+      COMPONENT opt-viewer)
+  endforeach (file)
 
-add_custom_target(opt-viewer DEPENDS ${files})
-set_target_properties(opt-viewer PROPERTIES FOLDER "LLVM/Tools")
-if(NOT LLVM_ENABLE_IDE)
-  add_llvm_install_targets("install-opt-viewer"
-                           DEPENDS opt-viewer
-                           COMPONENT opt-viewer)
+  add_custom_target(opt-viewer DEPENDS ${files})
+  set_target_properties(opt-viewer PROPERTIES FOLDER "LLVM/Tools")
+  if(NOT LLVM_ENABLE_IDE)
+    add_llvm_install_targets("install-opt-viewer"
+                             DEPENDS opt-viewer
+                             COMPONENT opt-viewer)
+  endif()
 endif()



More information about the llvm-commits mailing list