aboutsummaryrefslogtreecommitdiff
path: root/rcc/utils/CMakeLists.txt
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-10-20 01:30:20 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-10-20 01:30:20 +0800
commit3e8d7d1270ace353cce0080a80021dcc7532f2be (patch)
treea8bf9d52c4ce609c5d4d1e9c7249d148e4cb6271 /rcc/utils/CMakeLists.txt
parenta59ba0e3eda5381623a4929486b2f673a883d8d8 (diff)
downloadrcc-project-3e8d7d1270ace353cce0080a80021dcc7532f2be.tar.gz
rcc-project-3e8d7d1270ace353cce0080a80021dcc7532f2be.tar.xz
[CMake] Establish RCC and CFront builds and package exports
Diffstat (limited to 'rcc/utils/CMakeLists.txt')
-rw-r--r--rcc/utils/CMakeLists.txt43
1 files changed, 43 insertions, 0 deletions
diff --git a/rcc/utils/CMakeLists.txt b/rcc/utils/CMakeLists.txt
new file mode 100644
index 0000000..bb13e46
--- /dev/null
+++ b/rcc/utils/CMakeLists.txt
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+# Resolve developer tools only when the corresponding target is invoked.
+set(RCC_PYTHON_EXECUTABLE python3 CACHE STRING "Python interpreter for developer tools")
+set(RCC_CLANG_FORMAT_EXECUTABLE clang-format CACHE STRING "clang-format executable")
+set(RCC_CLANG_TIDY_EXECUTABLE clang-tidy CACHE STRING "clang-tidy executable")
+set(RCC_ANALYZER_EXECUTABLE clang++ CACHE STRING "Clang static analyzer executable")
+set(RCC_CLANG_FORMAT_VERSION "" CACHE STRING "Required clang-format version, if specified")
+set(RCC_CLANG_TIDY_VERSION "" CACHE STRING "Required clang-tidy version, if specified")
+set(RCC_ANALYZER_VERSION "" CACHE STRING "Required Clang analyzer version, if specified")
+set(RCC_DEV_BASE HEAD CACHE STRING "Git revision used for changed-file checks")
+
+set(rccDevScript "${CMAKE_CURRENT_SOURCE_DIR}/dev.py")
+add_custom_target(format-check
+ COMMAND "${RCC_PYTHON_EXECUTABLE}" "${rccDevScript}" format
+ --build-dir "${CMAKE_BINARY_DIR}"
+ --base "${RCC_DEV_BASE}"
+ --tool "${RCC_CLANG_FORMAT_EXECUTABLE}"
+ --tool-version "${RCC_CLANG_FORMAT_VERSION}"
+ WORKING_DIRECTORY "${RCC_SOURCE_DIR}/.."
+ USES_TERMINAL VERBATIM)
+add_custom_target(format
+ COMMAND "${RCC_PYTHON_EXECUTABLE}" "${rccDevScript}" format --fix
+ --build-dir "${CMAKE_BINARY_DIR}"
+ --base "${RCC_DEV_BASE}"
+ --tool "${RCC_CLANG_FORMAT_EXECUTABLE}"
+ --tool-version "${RCC_CLANG_FORMAT_VERSION}"
+ WORKING_DIRECTORY "${RCC_SOURCE_DIR}/.."
+ USES_TERMINAL VERBATIM)
+add_custom_target(tidy
+ COMMAND "${RCC_PYTHON_EXECUTABLE}" "${rccDevScript}" tidy
+ --build-dir "${CMAKE_BINARY_DIR}" --base "${RCC_DEV_BASE}"
+ --tool "${RCC_CLANG_TIDY_EXECUTABLE}"
+ --tool-version "${RCC_CLANG_TIDY_VERSION}"
+ WORKING_DIRECTORY "${RCC_SOURCE_DIR}/.."
+ USES_TERMINAL VERBATIM)
+add_custom_target(analyze
+ COMMAND "${RCC_PYTHON_EXECUTABLE}" "${rccDevScript}" analyze
+ --build-dir "${CMAKE_BINARY_DIR}" --base "${RCC_DEV_BASE}"
+ --tool "${RCC_ANALYZER_EXECUTABLE}"
+ --tool-version "${RCC_ANALYZER_VERSION}"
+ WORKING_DIRECTORY "${RCC_SOURCE_DIR}/.."
+ USES_TERMINAL VERBATIM)