@@ -9,26 +9,61 @@ 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)
13- execute_process (COMMAND ${BAZEL_BIN} ${ARGN}
17+ execute_process (COMMAND ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ ARGN}
1418 COMMAND_ERROR_IS_FATAL ANY
1519 OUTPUT_STRIP_TRAILING_WHITESPACE
1620 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
1721endmacro ()
1822
19- bazel(info workspace OUTPUT_VARIABLE BAZEL_WORKSPACE)
23+ macro (bazel_even_if_failing)
24+ execute_process (COMMAND ${BAZEL_BIN} ${BAZEL_STARTUP_OPTIONS} ${ARGN}
25+ OUTPUT_STRIP_TRAILING_WHITESPACE
26+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
27+ endmacro ()
2028
29+ bazel(info workspace OUTPUT_VARIABLE BAZEL_WORKSPACE)
2130bazel(info output_base OUTPUT_VARIABLE BAZEL_OUTPUT_BASE)
2231set (BAZEL_EXEC_ROOT ${BAZEL_OUTPUT_BASE} /execroot/_main)
32+ set (BAZEL_BUILD_OPTIONS --nocheck_visibility --keep_going)
2333
2434macro (include_generated BAZEL_TARGET)
25- bazel(build ${BAZEL_TARGET} )
35+ bazel(build ${BAZEL_TARGET} ${BAZEL_BUILD_OPTIONS} )
2636 string (REPLACE "@" "/external/" BAZEL_TARGET_PATH ${BAZEL_TARGET} )
2737 string (REPLACE "//" "/" BAZEL_TARGET_PATH ${BAZEL_TARGET_PATH} )
2838 string (REPLACE ":" "/" BAZEL_TARGET_PATH ${BAZEL_TARGET_PATH} )
2939 include (${BAZEL_WORKSPACE} /bazel-bin${BAZEL_TARGET_PATH} .cmake)
3040endmacro ()
3141
42+ macro (generate_and_include)
43+ file (REMOVE "${BAZEL_WORKSPACE} /.bazel-cmake/BUILD.bazel" )
44+ # use aquery to only get targets compatible with the current platform
45+ bazel_even_if_failing(aquery "kind(\" cc_test|cc_binary\" , ${ARGN} )" ${BAZEL_BUILD_OPTIONS} --output =jsonproto OUTPUT_VARIABLE BAZEL_AQUERY_RESULT)
46+ string (JSON BAZEL_JSON_TARGETS GET "${BAZEL_AQUERY_RESULT} " targets)
47+ string (JSON LAST_IDX LENGTH "${BAZEL_JSON_TARGETS} " )
48+ math (EXPR LAST_IDX "${LAST_IDX} - 1" )
49+ foreach (IDX RANGE ${LAST_IDX} )
50+ string (JSON CUR_BAZEL_TARGET GET "${BAZEL_JSON_TARGETS} " ${IDX} label)
51+ string (APPEND BAZEL_TARGETS " '${CUR_BAZEL_TARGET} ',\n " )
52+ endforeach ()
53+ file (WRITE "${BAZEL_WORKSPACE} /.bazel-cmake/BUILD.bazel" "\
54+ # this file was generated by cmake
55+ load('@${CODEQL_BAZEL_WORKSPACE} //misc/bazel/cmake:cmake.bzl', 'generate_cmake')\n\
56+ \n\
57+ generate_cmake(\n\
58+ name = 'cmake',\n\
59+ testonly = True,\n\
60+ targets = [\n\
61+ ${BAZEL_TARGETS} \
62+ ],\n\
63+ )\n " )
64+ include_generated(//.bazel-cmake:cmake)
65+ endmacro ()
66+
3267if (CREATE_COMPILATION_DATABASE_LINK)
3368 file (CREATE_LINK ${PROJECT_BINARY_DIR} /compile_commands.json ${PROJECT_SOURCE_DIR} /compile_commands.json SYMBOLIC )
3469endif ()
0 commit comments