mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 10:30:10 +01:00
Not sure why this affects include ordering, but it makes execution a _lot_ faster.
70 lines
2.3 KiB
Bash
Executable File
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"
|