Cmake: fix bazel not generating files for the cmake generator

This commit is contained in:
Paolo Tranquilli
2026-01-07 16:36:27 +01:00
parent 6a3c74c989
commit e3503be1d1

View File

@@ -14,6 +14,9 @@ if (NOT DEFINED CODEQL_BAZEL_WORKSPACE)
endif ()
macro(bazel)
message(STATUS "================================================================================")
message(STATUS "Running: ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}")
message(STATUS "================================================================================")
execute_process(COMMAND ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}
COMMAND_ERROR_IS_FATAL ANY
OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -21,6 +24,9 @@ macro(bazel)
endmacro()
macro(bazel_even_if_failing)
message(STATUS "================================================================================")
message(STATUS "Running: ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}")
message(STATUS "================================================================================")
execute_process(COMMAND ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
@@ -46,10 +52,24 @@ macro(generate_and_include)
string(JSON BAZEL_JSON_TARGETS GET "${BAZEL_AQUERY_RESULT}" targets)
string(JSON LAST_IDX LENGTH "${BAZEL_JSON_TARGETS}")
math(EXPR LAST_IDX "${LAST_IDX} - 1")
set(BAZEL_TARGETS_LIST "")
foreach(IDX RANGE ${LAST_IDX})
string(JSON CUR_BAZEL_TARGET GET "${BAZEL_JSON_TARGETS}" ${IDX} label)
string(APPEND BAZEL_TARGETS " '${CUR_BAZEL_TARGET}',\n")
list(APPEND BAZEL_TARGETS_LIST ${CUR_BAZEL_TARGET})
endforeach ()
# Find and build targets that generate source files
if(NOT "${BAZEL_TARGETS_LIST}" STREQUAL "")
string(REPLACE ";" " " BAZEL_TARGETS_QUERY "${BAZEL_TARGETS_LIST}")
bazel_even_if_failing(cquery "filter(\"\\\\.\\(h\\|c\\|cpp\\|hpp\\)$\", kind(\"generated file\", deps(set(${BAZEL_TARGETS_QUERY}))))" --output=label OUTPUT_VARIABLE GENERATED_SOURCE_TARGETS)
# Build only the generator targets (strip configuration hashes)
if(NOT "${GENERATED_SOURCE_TARGETS}" STREQUAL "")
string(REGEX REPLACE " \\([^)]+\\)" "" GENERATED_SOURCE_TARGETS "${GENERATED_SOURCE_TARGETS}")
string(REPLACE "\n" ";" GENERATED_SOURCE_TARGETS_LIST "${GENERATED_SOURCE_TARGETS}")
list(REMOVE_DUPLICATES GENERATED_SOURCE_TARGETS_LIST)
bazel(build ${GENERATED_SOURCE_TARGETS_LIST} ${BAZEL_BUILD_OPTIONS})
endif()
endif()
file(WRITE "${BAZEL_WORKSPACE}/.bazel-cmake/BUILD.bazel" "\
# this file was generated by cmake
load('@${CODEQL_BAZEL_WORKSPACE}//misc/bazel/cmake:cmake.bzl', 'generate_cmake')\n\