1#!/usr/bin/env bash 2#===- libcxx/utils/docker/scripts/build-gcc.sh ----------------------------===// 3# 4# The LLVM Compiler Infrastructure 5# 6# This file is distributed under the University of Illinois Open Source 7# License. See LICENSE.TXT for details. 8# 9#===-----------------------------------------------------------------------===// 10 11set -e 12 13 14function show_usage() { 15 cat << EOF 16Usage: build-gcc.sh [options] 17 18Run autoconf with the specified arguments. Used inside docker container. 19 20Available options: 21 -h|--help show this help message 22 --source the source path from which to run the configuration. 23 --to destination directory where to install the targets. 24Required options: --to, at least one --install-target. 25 26All options after '--' are passed to CMake invocation. 27EOF 28} 29 30GCC_INSTALL_DIR="" 31GCC_SOURCE_DIR="" 32 33while [[ $# -gt 0 ]]; do 34 case "$1" in 35 --to) 36 shift 37 GCC_INSTALL_DIR="$1" 38 shift 39 ;; 40 --source) 41 shift 42 GCC_SOURCE_DIR="$1" 43 shift 44 ;; 45 -h|--help) 46 show_usage 47 exit 0 48 ;; 49 *) 50 echo "Unknown option: $1" 51 exit 1 52 esac 53done 54 55if [ "$GCC_INSTALL_DIR" == "" ]; then 56 echo "No install directory. Please specify the --to argument." 57 exit 1 58fi 59 60if [ "$GCC_SOURCE_DIR" == "" ]; then 61 echo "No source directory. Please specify the --source argument." 62 exit 1 63fi 64 65GCC_NAME=`basename $GCC_SOURCE_DIR` 66GCC_BUILD_DIR="/tmp/gcc-build-root/build-$GCC_NAME" 67 68mkdir -p "$GCC_INSTALL_DIR" 69mkdir -p "$GCC_BUILD_DIR" 70pushd "$GCC_BUILD_DIR" 71 72# Run the build as specified in the build arguments. 73echo "Running configuration" 74$GCC_SOURCE_DIR/configure --prefix=$GCC_INSTALL_DIR \ 75 --disable-bootstrap --disable-libgomp --disable-libitm \ 76 --disable-libvtv --disable-libcilkrts --disable-libmpx \ 77 --disable-liboffloadmic --disable-libcc1 --enable-languages=c,c++ 78 79NPROC=`nproc` 80echo "Running build with $NPROC threads" 81make -j$NPROC 82 83echo "Installing to $GCC_INSTALL_DIR" 84make install -j$NPROC 85 86popd 87 88# Cleanup. 89rm -rf "$GCC_BUILD_DIR" 90 91echo "Done"