#!/bin/bash
# Copyright 2015 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

source ~/.rvm/scripts/rvm
set -ex

cd "$(dirname "$0")/../../.."

CONFIG=${CONFIG:-opt}

# build C++ qps worker & driver always - we need at least the driver to
# run any of the scenarios.
# TODO(jtattermusch): C++ worker and driver are not buildable on Windows yet
if [ "$OSTYPE" != "msys" ]
then
  # TODO(jtattermusch): not embedding OpenSSL breaks the C# build because
  # grpc_csharp_ext needs OpenSSL embedded and some intermediate files from
  # this build will be reused.
  make CONFIG="${CONFIG}" EMBED_OPENSSL=true EMBED_ZLIB=true qps_worker qps_json_driver -j8
fi

PHP_ALREADY_BUILT=""
for language in "$@"
do
  case "$language" in
  "c++")
    ;;  # C++ has already been built.
  "java")
    (cd ../grpc-java/ &&
      ./gradlew -PskipCodegen=true :grpc-benchmarks:installDist)
    ;;
  "go")
    tools/run_tests/performance/build_performance_go.sh
    ;;
  "php7"|"php7_protobuf_c")
    if [ -n "$PHP_ALREADY_BUILT" ]; then
      echo "Skipping PHP build as already built by $PHP_ALREADY_BUILT"
    else
      PHP_ALREADY_BUILT=$language
      tools/run_tests/performance/build_performance_php7.sh
    fi
    ;;
  "csharp")
    python tools/run_tests/run_tests.py -l "$language" -c "$CONFIG" --build_only -j 8 --compiler coreclr
    ;;
  *)
    python tools/run_tests/run_tests.py -l "$language" -c "$CONFIG" --build_only -j 8
    ;;
  esac
done
