Files
carbon-lang/third_party/examples/woff2/migrate_cpp.sh
T
Jon Meow c94ff74ea2 Switch to run-clang-tidy for parallelism (#629)
Not sure why this affects include ordering, but it makes execution a _lot_ faster.
2021-07-16 10:48:20 -07:00

70 lines
2.3 KiB
Bash
Executable File

#!/bin/bash -eux
#
# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
# Runs an example migration of woff2 C++ code.
# cd to the carbon-lang root.
cd "$(dirname "$0")/../../.."
EXAMPLE="${PWD}/third_party/examples/woff2"
# Remove any previous conversion. Each time this is run, it should demonstrate
# on a fresh copy of woff2.
rm -rf "${EXAMPLE}/carbon/"
# Initialize the carbon directory with C++ code only.
mkdir -p "${EXAMPLE}/carbon/"
for x in LICENSE include src; do
cp -R "${EXAMPLE}/original/${x}" "${EXAMPLE}/carbon/${x}"
done
# Copy files into the carbon directory to simplify the setup.
cp "${EXAMPLE}/BUILD.original" \
"${EXAMPLE}/carbon/BUILD"
cp "${EXAMPLE}/WORKSPACE.original" \
"${EXAMPLE}/carbon/WORKSPACE"
# Kludge for adding LLVM include paths into the compile flags.
# TODO: Find better solution.
COMPILE_FLAGS=($(cat "${EXAMPLE}/compile_flags.carbon.txt" | sed 's/"/\\"/g'))
for x in $(
clang++ -Wp,-v -xc++ -stdlib=libc++ - -fsyntax-only < /dev/null 2>&1 |
grep /llvm/); do
COMPILE_FLAGS+=("-isystem")
COMPILE_FLAGS+=("${x}")
done
# Construct a compilation database for use by run-clang-tidy.py.
COMPDB="${EXAMPLE}/carbon/compile_commands.json"
echo "[" > "${COMPDB}"
for f in $(find "${EXAMPLE}/carbon" -regex ".*\.\(cc\|h\)"); do
echo "{ \"file\": \"$(realpath --relative-to "${EXAMPLE}/carbon" ${f})\"," >> "${COMPDB}"
echo " \"directory\": \"${EXAMPLE}/carbon\"," >> "${COMPDB}"
echo " \"arguments\": [" >> "${COMPDB}"
echo " \"clang++\"," >> "${COMPDB}"
for index in ${!COMPILE_FLAGS[@]}; do
echo " \"${COMPILE_FLAGS[$index]}\"," >> "${COMPDB}"
done
echo " \"${f}\"" >> "${COMPDB}"
echo " ]" >> "${COMPDB}"
echo "}," >> "${COMPDB}"
done
# Remove the last comma, for JSON syntax correctness.
sed -i '$ s/,$//' "${COMPDB}"
echo "]" >> "${EXAMPLE}/carbon/compile_commands.json"
# Run the migration tool.
bazel build -c opt //migrate_cpp
# Not sure why, but execution of cpp_refactoring fails while saving refactorings
# if not in the directory. Ideally shouldn't be required, passing the path to
# migrate_cpp should work.
pushd "${EXAMPLE}/carbon"
../../../../bazel-bin/migrate_cpp/migrate_cpp .
popd
# Don't save the compile flags.
rm "${EXAMPLE}/carbon/compile_commands.json"