Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save stolyarchuk/aebf7c6529fb48ed58546081cf9917ff to your computer and use it in GitHub Desktop.
Save stolyarchuk/aebf7c6529fb48ed58546081cf9917ff to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
function register_clang_version {
local version=$1
local priority=$2
update-alternatives \
--install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-"${version}" "${priority}" \
--slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-"${version}" \
--slave /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-"${version}" \
--slave /usr/bin/llvm-bcanalyzer llvm-bcanalyzer /usr/bin/llvm-bcanalyzer-"${version}" \
--slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-"${version}" \
--slave /usr/bin/llvm-diff llvm-diff /usr/bin/llvm-diff-"${version}" \
--slave /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-"${version}" \
--slave /usr/bin/llvm-dwarfdump llvm-dwarfdump /usr/bin/llvm-dwarfdump-"${version}" \
--slave /usr/bin/llvm-extract llvm-extract /usr/bin/llvm-extract-"${version}" \
--slave /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-"${version}" \
--slave /usr/bin/llvm-mc llvm-mc /usr/bin/llvm-mc-"${version}" \
--slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-"${version}" \
--slave /usr/bin/llvm-objdump llvm-objdump /usr/bin/llvm-objdump-"${version}" \
--slave /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-"${version}" \
--slave /usr/bin/llvm-readobj llvm-readobj /usr/bin/llvm-readobj-"${version}" \
--slave /usr/bin/llvm-rtdyld llvm-rtdyld /usr/bin/llvm-rtdyld-"${version}" \
--slave /usr/bin/llvm-size llvm-size /usr/bin/llvm-size-"${version}" \
--slave /usr/bin/llvm-stress llvm-stress /usr/bin/llvm-stress-"${version}" \
--slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-"${version}" \
--slave /usr/bin/llvm-tblgen llvm-tblgen /usr/bin/llvm-tblgen-"${version}"
update-alternatives \
--install /usr/bin/clang clang /usr/bin/clang-"${version}" "${priority}" \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-"${version}" \
--slave /usr/bin/clangd clangd /usr/bin/clangd-"${version}" \
--slave /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-"${version}" \
--slave /usr/bin/c-index-test c-index-test /usr/bin/c-index-test-"${version}" \
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-"${version}" \
--slave /usr/bin/clang-cl clang-cl /usr/bin/clang-cl-"${version}" \
--slave /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-"${version}" \
--slave /usr/bin/clang-format clang-format /usr/bin/clang-format-"${version}" \
--slave /usr/bin/clang-format-diff clang-format-diff /usr/bin/clang-format-diff-"${version}" \
--slave /usr/bin/clang-include-fixer clang-include-fixer /usr/bin/clang-include-fixer-"${version}" \
--slave /usr/bin/clang-offload-bundler clang-offload-bundler /usr/bin/clang-offload-bundler-"${version}" \
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-"${version}" \
--slave /usr/bin/clang-rename clang-rename /usr/bin/clang-rename-"${version}" \
--slave /usr/bin/clang-reorder-fields clang-reorder-fields /usr/bin/clang-reorder-fields-"${version}" \
--slave /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-"${version}" \
--slave /usr/bin/clang-change-namespace clang-change-namespace /usr/bin/clang-change-namespace-"${version}" \
--slave /usr/bin/clang-apply-replacements clang-apply-replacements /usr/bin/clang-apply-replacements-"${version}" \
--slave /usr/bin/clang-doc clang-doc /usr/bin/clang-doc-"${version}" \
--slave /usr/bin/clang-extdef-mapping clang-extdef-mapping /usr/bin/clang-extdef-mapping-"${version}" \
--slave /usr/bin/clang-include-cleaner clang-include-cleaner /usr/bin/clang-include-cleaner-"${version}" \
--slave /usr/bin/clang-linker-wrapper clang-linker-wrapper /usr/bin/clang-linker-wrapper-"${version}" \
--slave /usr/bin/clang-move clang-move /usr/bin/clang-move-"${version}" \
--slave /usr/bin/clang-offload-packager clang-offload-packager /usr/bin/clang-offload-packager-"${version}" \
--slave /usr/bin/clang-pseudo clang-pseudo /usr/bin/clang-pseudo-"${version}" \
--slave /usr/bin/clang-refactor clang-refactor /usr/bin/clang-refactor-"${version}" \
--slave /usr/bin/clang-repl clang-repl /usr/bin/clang-repl-"${version}" \
--slave /usr/bin/clang-scan-deps clang-scan-deps /usr/bin/clang-scan-deps-"${version}" \
--slave /usr/bin/clang-tblgen clang-tblgen /usr/bin/clang-tblgen-"${version}" \
--slave /usr/bin/find-all-symbols find-all-symbols /usr/bin/find-all-symbols-"${version}" \
--slave /usr/bin/lldb lldb /usr/bin/lldb-"${version}" \
--slave /usr/bin/lldb-server lldb-server /usr/bin/lldb-server-"${version}" \
--slave /usr/bin/lldb-argdumper lldb-argdumper /usr/bin/lldb-argdumper-"${version}" \
--slave /usr/bin/lldb-instr lldb-instr /usr/bin/lldb-instr-"${version}" \
--slave /usr/bin/lld llb /usr/bin/lld-"${version}" \
--slave /usr/bin/lld-link lld-link /usr/bin/lld-link-"${version}" \
--slave /usr/bin/FileCheck FileCheck /usr/bin/FileCheck-"${version}"
}
register_clang_version "$1" "$2"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment