123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #!/usr/bin/env bash
- #===- libcxx/utils/docker/scripts/build-gcc.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_gcc_version.sh [options]
- Run autoconf with the specified arguments. Used inside docker container.
- Available options:
- -h|--help show this help message
- --branch the branch of gcc you want to build.
- --cherry-pick a commit hash to apply to the GCC sources.
- --install destination directory where to install the targets.
- Required options: --install and --branch
- All options after '--' are passed to CMake invocation.
- EOF
- }
- GCC_INSTALL_DIR=""
- GCC_BRANCH=""
- CHERRY_PICK=""
- while [[ $# -gt 0 ]]; do
- case "$1" in
- --install)
- shift
- GCC_INSTALL_DIR="$1"
- shift
- ;;
- --branch)
- shift
- GCC_BRANCH="$1"
- shift
- ;;
- --cherry-pick)
- shift
- CHERRY_PICK="$1"
- shift
- ;;
- -h|--help)
- show_usage
- exit 0
- ;;
- *)
- echo "Unknown option: $1"
- exit 1
- esac
- done
- if [ "$GCC_INSTALL_DIR" == "" ]; then
- echo "No install directory. Please specify the --install argument."
- exit 1
- fi
- if [ "$GCC_BRANCH" == "" ]; then
- echo "No branch specified. Please specify the --branch argument."
- exit 1
- fi
- set -x
- NPROC=`nproc`
- TMP_ROOT="$(mktemp -d -p /tmp)"
- GCC_SOURCE_DIR="$TMP_ROOT/gcc"
- GCC_BUILD_DIR="$TMP_ROOT/build"
- echo "Cloning source directory for branch $GCC_BRANCH"
- git clone --branch "$GCC_BRANCH" --single-branch --depth=1 git://gcc.gnu.org/git/gcc.git $GCC_SOURCE_DIR
- pushd "$GCC_SOURCE_DIR"
- if [ "$CHERRY_PICK" != "" ]; then
- git fetch origin trunk --unshallow # Urg, we have to get the entire history. This will take a while.
- git cherry-pick --no-commit -X theirs "$CHERRY_PICK"
- fi
- ./contrib/download_prerequisites
- popd
- mkdir "$GCC_BUILD_DIR"
- pushd "$GCC_BUILD_DIR"
- # Run the build as specified in the build arguments.
- echo "Running configuration"
- $GCC_SOURCE_DIR/configure --prefix=$GCC_INSTALL_DIR \
- --disable-bootstrap --disable-libgomp --disable-libitm \
- --disable-libvtv --disable-libcilkrts --disable-libmpx \
- --disable-liboffloadmic --disable-libcc1 --enable-languages=c,c++
- echo "Running build with $NPROC threads"
- make -j$NPROC
- echo "Installing to $GCC_INSTALL_DIR"
- make install -j$NPROC
- popd
- # Cleanup.
- rm -rf "$TMP_ROOT"
- echo "Done"
|