Skip to content

Commit 22b88ae

Browse files
authored
Merge pull request #21119 from github/redsun82/cmake
Cmake: fix bazel not generating files for the cmake generator
2 parents 2ea3c0e + e3503be commit 22b88ae

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

misc/bazel/cmake/setup.cmake

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,19 @@ if (NOT DEFINED CODEQL_BAZEL_WORKSPACE)
1414
endif ()
1515

1616
macro(bazel)
17+
message(STATUS "================================================================================")
18+
message(STATUS "Running: ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}")
19+
message(STATUS "================================================================================")
1720
execute_process(COMMAND ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}
1821
COMMAND_ERROR_IS_FATAL ANY
1922
OUTPUT_STRIP_TRAILING_WHITESPACE
2023
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
2124
endmacro()
2225

2326
macro(bazel_even_if_failing)
27+
message(STATUS "================================================================================")
28+
message(STATUS "Running: ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}")
29+
message(STATUS "================================================================================")
2430
execute_process(COMMAND ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}
2531
OUTPUT_STRIP_TRAILING_WHITESPACE
2632
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
@@ -46,10 +52,24 @@ macro(generate_and_include)
4652
string(JSON BAZEL_JSON_TARGETS GET "${BAZEL_AQUERY_RESULT}" targets)
4753
string(JSON LAST_IDX LENGTH "${BAZEL_JSON_TARGETS}")
4854
math(EXPR LAST_IDX "${LAST_IDX} - 1")
55+
set(BAZEL_TARGETS_LIST "")
4956
foreach(IDX RANGE ${LAST_IDX})
5057
string(JSON CUR_BAZEL_TARGET GET "${BAZEL_JSON_TARGETS}" ${IDX} label)
5158
string(APPEND BAZEL_TARGETS " '${CUR_BAZEL_TARGET}',\n")
59+
list(APPEND BAZEL_TARGETS_LIST ${CUR_BAZEL_TARGET})
5260
endforeach ()
61+
# Find and build targets that generate source files
62+
if(NOT "${BAZEL_TARGETS_LIST}" STREQUAL "")
63+
string(REPLACE ";" " " BAZEL_TARGETS_QUERY "${BAZEL_TARGETS_LIST}")
64+
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)
65+
# Build only the generator targets (strip configuration hashes)
66+
if(NOT "${GENERATED_SOURCE_TARGETS}" STREQUAL "")
67+
string(REGEX REPLACE " \\([^)]+\\)" "" GENERATED_SOURCE_TARGETS "${GENERATED_SOURCE_TARGETS}")
68+
string(REPLACE "\n" ";" GENERATED_SOURCE_TARGETS_LIST "${GENERATED_SOURCE_TARGETS}")
69+
list(REMOVE_DUPLICATES GENERATED_SOURCE_TARGETS_LIST)
70+
bazel(build ${GENERATED_SOURCE_TARGETS_LIST} ${BAZEL_BUILD_OPTIONS})
71+
endif()
72+
endif()
5373
file(WRITE "${BAZEL_WORKSPACE}/.bazel-cmake/BUILD.bazel" "\
5474
# this file was generated by cmake
5575
load('@${CODEQL_BAZEL_WORKSPACE}//misc/bazel/cmake:cmake.bzl', 'generate_cmake')\n\

0 commit comments

Comments
 (0)