| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/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"
|