mirror of
https://github.com/github/codeql.git
synced 2026-02-11 20:51:06 +01:00
Merge pull request #21119 from github/redsun82/cmake
Cmake: fix bazel not generating files for the cmake generator
This commit is contained in:
@@ -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\
|
||||
|
||||
Reference in New Issue
Block a user