Add rules_xcodeproj targets to each package BUILD plus a root m323 project, with extra_files filegroups so the full source tree shows in Xcode. Ignore Scala/Metals build dirs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
76 lines
2.5 KiB
Bash
Executable file
76 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
cd "$SRCROOT"
|
|
|
|
readonly config="${BAZEL_CONFIG}_indexbuild"
|
|
|
|
# Compiled outputs (i.e. swiftmodules) and generated inputs
|
|
output_groups=(
|
|
# Compile params
|
|
"bc $BAZEL_TARGET_ID"
|
|
# Indexstores and their filelist. Requesting indexstore directories triggers
|
|
# transitive Swift compilation (producing swiftmodules, indexstores, and
|
|
# generated headers) without linking, avoiding large product binaries. We use
|
|
# `--remote_download_regex` below to download the files we care
|
|
# about.
|
|
"bi $BAZEL_TARGET_ID"
|
|
)
|
|
|
|
indexstores_filelists=()
|
|
if [[ "$IMPORT_INDEX_BUILD_INDEXSTORES" == "YES" ]]; then
|
|
output_groups+=(
|
|
"index_import"
|
|
)
|
|
|
|
readonly targetid_regex='@{0,2}(.*)//(.*):(.*) ([^\ ]+)$'
|
|
|
|
if [[ "$BAZEL_TARGET_ID" =~ $targetid_regex ]]; then
|
|
repo="${BASH_REMATCH[1]}"
|
|
if [[ "$repo" == "@" ]]; then
|
|
repo=""
|
|
fi
|
|
|
|
package="${BASH_REMATCH[2]}"
|
|
target="${BASH_REMATCH[3]}"
|
|
configuration="${BASH_REMATCH[4]}"
|
|
filelist="$configuration/bin/${repo:+"external/$repo/"}$package/$target-bi.filelist"
|
|
|
|
indexstores_filelists+=("$filelist")
|
|
fi
|
|
|
|
readonly indexstores_regex='.*\.indexstore/.*|'
|
|
else
|
|
readonly indexstores_regex=''
|
|
fi
|
|
|
|
readonly build_pre_config_flags=(
|
|
# Include the following:
|
|
#
|
|
# - .indexstore directories to allow importing indexes
|
|
# - .swift{doc,module,sourceinfo} files for indexing
|
|
# - compilation input files (.cfg, .c, .C .cc, .cl, .cpp, .cu, .cxx, .c++,
|
|
# .def, .h, .H, .hh, .hpp, .hxx, .h++, .hmap, .ilc, .inc, .ipp, .tcc, .tlh,
|
|
# .tpp, .m, .modulemap, .mm, .pch, .swift, .yaml) for index compilation
|
|
#
|
|
# This is brittle. If different file extensions are used for compilation
|
|
# inputs, they will need to be added to this list. Ideally we can stop doing
|
|
# this once Bazel adds support for a Remote Output Service.
|
|
"--remote_download_regex=${indexstores_regex}.*\.(cfg|c|C|cc|cl|cpp|cu|cxx|c++|def|h|H|hh|hpp|hxx|h++|hmap|ilc|inc|inl|ipp|tcc|tlh|tli|tpp|m|modulemap|mm|pch|swift|swiftdoc|swiftmodule|swiftsourceinfo|yaml)$"
|
|
)
|
|
|
|
source "$BAZEL_INTEGRATION_DIR/bazel_build.sh"
|
|
|
|
# Import indexes
|
|
if [ -n "${indexstores_filelists:-}" ]; then
|
|
if [[ "${BAZEL_SEPARATE_INDEXBUILD_OUTPUT_BASE:-}" == "YES" ]]; then
|
|
"$BAZEL_INTEGRATION_DIR/import_indexstores" \
|
|
"$INDEXING_PROJECT_DIR__NO" \
|
|
"${indexstores_filelists[@]/#/$output_path/}"
|
|
else
|
|
"$BAZEL_INTEGRATION_DIR/import_indexstores" \
|
|
"$PROJECT_DIR" \
|
|
"${indexstores_filelists[@]/#/$BAZEL_OUT/}"
|
|
fi
|
|
fi
|