]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Contrib: Add a script to compile clang-format
authorMatthias Maier <tamiko@43-1.org>
Wed, 16 May 2018 22:58:04 +0000 (17:58 -0500)
committerMatthias Maier <tamiko@43-1.org>
Sat, 19 May 2018 14:18:35 +0000 (09:18 -0500)
contrib/utilities/compile_clang_format [new file with mode: 0755]

diff --git a/contrib/utilities/compile_clang_format b/contrib/utilities/compile_clang_format
new file mode 100755 (executable)
index 0000000..c538d11
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/bash
+## ---------------------------------------------------------------------
+##
+## Copyright (C) 2018 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# This script downloads, compiles and installs the clang-format binary. The
+# destination directory is
+#   [contrib/utilities]/programs/clang-<VERSION>/bin.
+#
+# Compiling clang-format and all necessary parts of LLVM/CLANG might
+# require a significant amount of resources. Alternatively, you can use
+# download_clang_format to install a statically-linked binary.
+#
+
+set -e
+set -u
+
+PRG="$(cd "$(dirname "$0")" && pwd)/programs"
+
+CLANG_PATH="${PRG}/clang-6"
+
+RELEASE_DATE="2018-04-06"
+RELEASE_BRANCH="release_60"
+LLVM_REPOSITORY="https://github.com/llvm-mirror/llvm"
+CLANG_REPOSITORY="https://github.com/llvm-mirror/clang"
+LLVM_COMMIT="1a0dddf879aadfcfea409b3c0a9aa3c9da306945"
+CLANG_COMMIT="d5f48a217f404c3462537527f4169bb45eed3904"
+
+if [ ! -d "${PRG}" ]
+then
+    echo "create folder ${PRG}"
+    mkdir "${PRG}"
+fi
+
+if [ -d "${CLANG_PATH}" ]
+then
+    echo "${CLANG_PATH}  exists. Exiting."
+    exit 1
+fi
+
+echo "Downloading and compiling clang-format-6."
+mkdir -p "${CLANG_PATH}/bin"
+
+tmpdir="${TMPDIR:-/tmp}/dealiiclang${RANDOM}${RANDOM}"
+mkdir -p "${tmpdir}"
+cd "${tmpdir}"
+
+git init
+git remote add origin "${LLVM_REPOSITORY}"
+git fetch --shallow-since="${RELEASE_DATE}" origin "${RELEASE_BRANCH}"
+git reset --hard "${LLVM_COMMIT}"
+
+git init tools/clang
+cd tools/clang
+git remote add origin "${CLANG_REPOSITORY}"
+git fetch --shallow-since="${RELEASE_DATE}" origin "${RELEASE_BRANCH}"
+git reset --hard "${CLANG_COMMIT}"
+
+cd ../../
+mkdir build
+cd build
+cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_BUILD_STATIC=true ..
+make -j4 clang-format
+cp bin/clang-format "${CLANG_PATH}"/bin
+cp ../{CODE_OWNERS,CREDITS,LICENSE}.TXT "${CLANG_PATH}"
+rm -rf "${tmpdir}"
+
+echo "All done. clang-format succesfully installed into"
+echo "    ${CLANG_PATH}/clang-6/bin"

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.