@@ -9,6 +9,10 @@ if (NOT DEFINED BAZEL_BIN)
99 set (BAZEL_BIN "bazelisk" )
1010endif ()
1111
12+ if (NOT DEFINED CODEQL_BAZEL_WORKSPACE)
13+ set (CODEQL_BAZEL_WORKSPACE "codeql" )
14+ endif ()
15+
1216macro (bazel)
1317 execute_process (COMMAND ${BAZEL_BIN} ${ARGN}
1418 COMMAND_ERROR_IS_FATAL ANY
@@ -23,13 +27,38 @@ string(REPLACE "-" "_" BAZEL_EXEC_ROOT ${PROJECT_NAME})
2327set (BAZEL_EXEC_ROOT ${BAZEL_OUTPUT_BASE} /execroot/${BAZEL_EXEC_ROOT} )
2428
2529macro (include_generated BAZEL_TARGET)
26- bazel(build ${BAZEL_TARGET} )
30+ bazel(build ${BAZEL_TARGET} --nocheck_visibility )
2731 string (REPLACE "@" "/external/" BAZEL_TARGET_PATH ${BAZEL_TARGET} )
2832 string (REPLACE "//" "/" BAZEL_TARGET_PATH ${BAZEL_TARGET_PATH} )
2933 string (REPLACE ":" "/" BAZEL_TARGET_PATH ${BAZEL_TARGET_PATH} )
3034 include (${BAZEL_WORKSPACE} /bazel-bin${BAZEL_TARGET_PATH} .cmake)
3135endmacro ()
3236
37+ macro (generate_and_include)
38+ file (REMOVE "${BAZEL_WORKSPACE} /.bazel-cmake/BUILD.bazel" )
39+ # use aquery to only get targets compatible with the current platform
40+ bazel(aquery "kind(\" cc_test|cc_binary\" , ${ARGN} )" --nocheck_visibility --output =jsonproto OUTPUT_VARIABLE BAZEL_AQUERY_RESULT)
41+ string (JSON BAZEL_JSON_TARGETS GET "${BAZEL_AQUERY_RESULT} " targets)
42+ string (JSON LAST_IDX LENGTH "${BAZEL_JSON_TARGETS} " )
43+ math (EXPR LAST_IDX "${LAST_IDX} - 1" )
44+ foreach (IDX RANGE ${LAST_IDX} )
45+ string (JSON CUR_BAZEL_TARGET GET "${BAZEL_JSON_TARGETS} " ${IDX} label)
46+ string (APPEND BAZEL_TARGETS " '${CUR_BAZEL_TARGET} ',\n " )
47+ endforeach ()
48+ file (WRITE "${BAZEL_WORKSPACE} /.bazel-cmake/BUILD.bazel" "\
49+ # this file was generated by cmake
50+ load('@${CODEQL_BAZEL_WORKSPACE} //misc/bazel/cmake:cmake.bzl', 'generate_cmake')\n\
51+
52+ generate_cmake(\n\
53+ name = 'cmake',\n\
54+ testonly = True,\n\
55+ targets = [\n\
56+ ${BAZEL_TARGETS} \
57+ ],\n\
58+ )\n " )
59+ include_generated(//.bazel-cmake:cmake)
60+ endmacro ()
61+
3362if (CREATE_COMPILATION_DATABASE_LINK)
3463 file (CREATE_LINK ${PROJECT_BINARY_DIR} /compile_commands.json ${PROJECT_SOURCE_DIR} /compile_commands.json SYMBOLIC )
3564endif ()
0 commit comments