summaryrefslogtreecommitdiffstats
path: root/llvm/utils/docker/build_docker_image.sh
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/docker/build_docker_image.sh')
-rwxr-xr-xllvm/utils/docker/build_docker_image.sh46
1 files changed, 39 insertions, 7 deletions
diff --git a/llvm/utils/docker/build_docker_image.sh b/llvm/utils/docker/build_docker_image.sh
index 0e129636ca4..89b98aaaf7c 100755
--- a/llvm/utils/docker/build_docker_image.sh
+++ b/llvm/utils/docker/build_docker_image.sh
@@ -13,6 +13,8 @@ IMAGE_SOURCE=""
DOCKER_REPOSITORY=""
DOCKER_TAG=""
BUILDSCRIPT_ARGS=""
+CHECKOUT_ARGS=""
+CMAKE_ENABLED_PROJECTS=""
function show_usage() {
cat << EOF
@@ -25,7 +27,7 @@ Available options:
-s|--source image source dir (i.e. debian8, nvidia-cuda, etc)
-d|--docker-repository docker repository for the image
-t|--docker-tag docker tag for the image
- LLVM-specific:
+ Checkout arguments:
-b|--branch svn branch to checkout, i.e. 'trunk',
'branches/release_40'
(default: 'trunk')
@@ -40,11 +42,12 @@ Available options:
Project 'llvm' is always included and ignored, if
specified.
Can be specified multiple times.
- -i|--install-target name of a cmake install target to build and include in
- the resulting archive. Can be specified multiple times.
-c|--checksums name of a file, containing checksums of llvm checkout.
Script will fail if checksums of the checkout do not
match.
+ Build-specific:
+ -i|--install-target name of a cmake install target to build and include in
+ the resulting archive. Can be specified multiple times.
Required options: --source and --docker-repository, at least one
--install-target.
@@ -75,6 +78,7 @@ EOF
CHECKSUMS_FILE=""
SEEN_INSTALL_TARGET=0
+SEEN_CMAKE_ARGS=0
while [[ $# -gt 0 ]]; do
case "$1" in
-h|--help)
@@ -96,13 +100,28 @@ while [[ $# -gt 0 ]]; do
DOCKER_TAG="$1"
shift
;;
- -i|--install-target|-r|--revision|-c|-cherrypick|-b|--branch|-p|--llvm-project)
- if [ "$1" == "-i" ] || [ "$1" == "--install-target" ]; then
- SEEN_INSTALL_TARGET=1
- fi
+ -r|--revision|-c|-cherrypick|-b|--branch)
+ CHECKOUT_ARGS="$CHECKOUT_ARGS $1 $2"
+ shift 2
+ ;;
+ -i|--install-target)
+ SEEN_INSTALL_TARGET=1
BUILDSCRIPT_ARGS="$BUILDSCRIPT_ARGS $1 $2"
shift 2
;;
+ -p|--llvm-project)
+ PROJ="$2"
+ if [ "$PROJ" == "cfe" ]; then
+ PROJ="clang"
+ fi
+
+ CHECKOUT_ARGS="$CHECKOUT_ARGS $1 $PROJ"
+ if [ "$PROJ" != "clang-tools-extra" ]; then
+ CMAKE_ENABLED_PROJECTS="$CMAKE_ENABLED_PROJECTS:$PROJ"
+ fi
+
+ shift 2
+ ;;
-c|--checksums)
shift
CHECKSUMS_FILE="$1"
@@ -111,6 +130,7 @@ while [[ $# -gt 0 ]]; do
--)
shift
BUILDSCRIPT_ARGS="$BUILDSCRIPT_ARGS -- $*"
+ SEEN_CMAKE_ARGS=1
shift $#
;;
*)
@@ -120,6 +140,17 @@ while [[ $# -gt 0 ]]; do
esac
done
+
+if [ "$CMAKE_ENABLED_PROJECTS" != "" ]; then
+ # Remove the leading ':' character.
+ CMAKE_ENABLED_PROJECTS="${CMAKE_ENABLED_PROJECTS:1}"
+
+ if [[ $SEEN_CMAKE_ARGS -eq 0 ]]; then
+ BUILDSCRIPT_ARGS="$BUILDSCRIPT_ARGS --"
+ fi
+ BUILDSCRIPT_ARGS="$BUILDSCRIPT_ARGS -DLLVM_ENABLE_PROJECTS=$CMAKE_ENABLED_PROJECTS"
+fi
+
command -v docker >/dev/null ||
{
echo "Docker binary cannot be found. Please install Docker to use this script."
@@ -165,6 +196,7 @@ fi
echo "Building ${DOCKER_REPOSITORY}${DOCKER_TAG} from $IMAGE_SOURCE"
docker build -t "${DOCKER_REPOSITORY}${DOCKER_TAG}" \
+ --build-arg "checkout_args=$CHECKOUT_ARGS" \
--build-arg "buildscript_args=$BUILDSCRIPT_ARGS" \
-f "$BUILD_DIR/$IMAGE_SOURCE/Dockerfile" \
"$BUILD_DIR"
OpenPOWER on IntegriCloud