1af351daeSIlya Biryukov#!/usr/bin/env bash 2af351daeSIlya Biryukov#===- llvm/utils/docker/scripts/build_install_llvm.sh ---------------------===// 3af351daeSIlya Biryukov# 4*2946cd70SChandler Carruth# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*2946cd70SChandler Carruth# See https://llvm.org/LICENSE.txt for license information. 6*2946cd70SChandler Carruth# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7af351daeSIlya Biryukov# 8af351daeSIlya Biryukov#===-----------------------------------------------------------------------===// 9af351daeSIlya Biryukov 10af351daeSIlya Biryukovset -e 11af351daeSIlya Biryukov 12af351daeSIlya Biryukovfunction show_usage() { 131e4f6027SDon Hinton cat << EOF 14af351daeSIlya BiryukovUsage: build_install_llvm.sh [options] -- [cmake-args] 15af351daeSIlya Biryukov 162bf7c51dSIlya BiryukovRun cmake with the specified arguments. Used inside docker container. 17d9502010SIlya BiryukovPasses additional -DCMAKE_INSTALL_PREFIX and puts the build results into 182bf7c51dSIlya Biryukovthe directory specified by --to option. 19af351daeSIlya Biryukov 20af351daeSIlya BiryukovAvailable options: 21af351daeSIlya Biryukov -h|--help show this help message 22af351daeSIlya Biryukov -i|--install-target name of a cmake install target to build and include in 23af351daeSIlya Biryukov the resulting archive. Can be specified multiple times. 242bf7c51dSIlya Biryukov --to destination directory where to install the targets. 252bf7c51dSIlya BiryukovRequired options: --to, at least one --install-target. 26af351daeSIlya Biryukov 27af351daeSIlya BiryukovAll options after '--' are passed to CMake invocation. 28af351daeSIlya BiryukovEOF 29af351daeSIlya Biryukov} 30af351daeSIlya Biryukov 31af351daeSIlya BiryukovCMAKE_ARGS="" 32af351daeSIlya BiryukovCMAKE_INSTALL_TARGETS="" 332bf7c51dSIlya BiryukovCLANG_INSTALL_DIR="" 34e421fc81SIlya Biryukov 35af351daeSIlya Biryukovwhile [[ $# -gt 0 ]]; do 36af351daeSIlya Biryukov case "$1" in 37af351daeSIlya Biryukov -i|--install-target) 38af351daeSIlya Biryukov shift 39af351daeSIlya Biryukov CMAKE_INSTALL_TARGETS="$CMAKE_INSTALL_TARGETS $1" 40af351daeSIlya Biryukov shift 41af351daeSIlya Biryukov ;; 422bf7c51dSIlya Biryukov --to) 432bf7c51dSIlya Biryukov shift 442bf7c51dSIlya Biryukov CLANG_INSTALL_DIR="$1" 452bf7c51dSIlya Biryukov shift 462bf7c51dSIlya Biryukov ;; 47af351daeSIlya Biryukov --) 48af351daeSIlya Biryukov shift 49af351daeSIlya Biryukov CMAKE_ARGS="$*" 50af351daeSIlya Biryukov shift $# 51af351daeSIlya Biryukov ;; 52af351daeSIlya Biryukov -h|--help) 53af351daeSIlya Biryukov show_usage 54af351daeSIlya Biryukov exit 0 55af351daeSIlya Biryukov ;; 56af351daeSIlya Biryukov *) 57af351daeSIlya Biryukov echo "Unknown option: $1" 58af351daeSIlya Biryukov exit 1 59af351daeSIlya Biryukov esac 60af351daeSIlya Biryukovdone 61af351daeSIlya Biryukov 62af351daeSIlya Biryukovif [ "$CMAKE_INSTALL_TARGETS" == "" ]; then 63af351daeSIlya Biryukov echo "No install targets. Please pass one or more --install-target." 64af351daeSIlya Biryukov exit 1 65af351daeSIlya Biryukovfi 66af351daeSIlya Biryukov 672bf7c51dSIlya Biryukovif [ "$CLANG_INSTALL_DIR" == "" ]; then 682bf7c51dSIlya Biryukov echo "No install directory. Please specify the --to argument." 692bf7c51dSIlya Biryukov exit 1 70e421fc81SIlya Biryukovfi 7175db0812SIlya Biryukov 72af351daeSIlya BiryukovCLANG_BUILD_DIR=/tmp/clang-build 73af351daeSIlya Biryukov 742bf7c51dSIlya Biryukovmkdir -p "$CLANG_INSTALL_DIR" 75af351daeSIlya Biryukov 762bf7c51dSIlya Biryukovmkdir -p "$CLANG_BUILD_DIR/build" 7713cde86eSIlya Biryukovpushd "$CLANG_BUILD_DIR/build" 78af351daeSIlya Biryukov 79af351daeSIlya Biryukov# Run the build as specified in the build arguments. 80af351daeSIlya Biryukovecho "Running build" 81af351daeSIlya Biryukovcmake -GNinja \ 82af351daeSIlya Biryukov -DCMAKE_INSTALL_PREFIX="$CLANG_INSTALL_DIR" \ 83af351daeSIlya Biryukov $CMAKE_ARGS \ 84af351daeSIlya Biryukov "$CLANG_BUILD_DIR/src/llvm" 85af351daeSIlya Biryukovninja $CMAKE_INSTALL_TARGETS 86af351daeSIlya Biryukov 87af351daeSIlya Biryukovpopd 88af351daeSIlya Biryukov 89af351daeSIlya Biryukov# Cleanup. 902bf7c51dSIlya Biryukovrm -rf "$CLANG_BUILD_DIR/build" 91af351daeSIlya Biryukov 92af351daeSIlya Biryukovecho "Done" 93