123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/usr/bin/env bash
- #===- libcxx/utils/docker/scripts/build_install_llvm_version_default.sh -----------------------===//
- #
- # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- # See https://llvm.org/LICENSE.txt for license information.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- #
- #===-------------------------------------------------------------------------------------------===//
- set -e
- function show_usage() {
- cat << EOF
- Usage: build_install_llvm.sh [options] -- [cmake-args]
- Run cmake with the specified arguments. Used inside docker container.
- Passes additional -DCMAKE_INSTALL_PREFIX and puts the build results into
- the directory specified by --to option.
- Available options:
- -h|--help show this help message
- --install destination directory where to install the targets.
- --branch the branch or tag of LLVM to build
- Required options: --install, and --version.
- All options after '--' are passed to CMake invocation.
- EOF
- }
- LLVM_BRANCH=""
- CMAKE_ARGS=""
- LLVM_INSTALL_DIR=""
- while [[ $# -gt 0 ]]; do
- case "$1" in
- --install)
- shift
- LLVM_INSTALL_DIR="$1"
- shift
- ;;
- --branch)
- shift
- LLVM_BRANCH="$1"
- shift
- ;;
- --)
- shift
- CMAKE_ARGS="$*"
- shift $#
- ;;
- -h|--help)
- show_usage
- exit 0
- ;;
- *)
- echo "Unknown option: $1"
- exit 1
- esac
- done
- if [ "$LLVM_INSTALL_DIR" == "" ]; then
- echo "No install directory. Please specify the --install argument."
- exit 1
- fi
- if [ "$LLVM_BRANCH" == "" ]; then
- echo "No install directory. Please specify the --branch argument."
- exit 1
- fi
- if [ "$CMAKE_ARGS" == "" ]; then
- CMAKE_ARGS="-DCMAKE_BUILD_TYPE=RELEASE '-DCMAKE_C_FLAGS=-gline-tables-only' '-DCMAKE_CXX_FLAGS=-gline-tables-only' -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
- fi
- set -x
- TMP_ROOT="$(mktemp -d -p /tmp)"
- LLVM_SOURCE_DIR="$TMP_ROOT/llvm-project"
- LLVM_BUILD_DIR="$TMP_ROOT/build"
- LLVM="$LLVM_SOURCE_DIR/llvm"
- git clone --branch $LLVM_BRANCH --single-branch --depth=1 https://github.com/llvm/llvm-project.git $LLVM_SOURCE_DIR
- pushd "$LLVM_SOURCE_DIR"
- # Setup the source-tree using the old style layout
- ln -s $LLVM_SOURCE_DIR/libcxx $LLVM/projects/libcxx
- ln -s $LLVM_SOURCE_DIR/libcxxabi $LLVM/projects/libcxxabi
- ln -s $LLVM_SOURCE_DIR/compiler-rt $LLVM/projects/compiler-rt
- ln -s $LLVM_SOURCE_DIR/clang $LLVM/tools/clang
- ln -s $LLVM_SOURCE_DIR/clang-tools-extra $LLVM/tools/clang/tools/extra
- popd
- # Configure and build
- mkdir "$LLVM_BUILD_DIR"
- pushd "$LLVM_BUILD_DIR"
- cmake -GNinja "-DCMAKE_INSTALL_PREFIX=$LLVM_INSTALL_DIR" $CMAKE_ARGS $LLVM
- ninja install
- popd
- # Cleanup
- rm -rf "$TMP_ROOT/"
- echo "Done"
|