#! /bin/bash
# Copyright 2016 The Cobalt Authors. All Rights Reserved.
#
# 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.

# This wrapper allows us to run ninja without any assumptions about the
# environment having been setup correctly to build Cobalt, since that won't
# happen when started from Android Studio. See:
# https://cobalt.googlesource.com/cobalt/+/master/src/#Building-and-Running-the-Code

# Allow for a developer-specific environment setup from .cobaltrc
local_rc=$(dirname $0)/.cobaltrc
global_rc=${HOME}/.cobaltrc
if [ -r ${local_rc} ]; then
  source ${local_rc}
elif [ -r ${global_rc} ]; then
  source ${global_rc}
fi

# Use Cobalt's clang if it's not anywhere earlier in the PATH.
SRC_DIR=$(cd $(dirname $0)/../../../..; pwd)
PATH=$PATH:${SRC_DIR}/third_party/llvm-build/Release+Asserts/bin

# Do nothing if -n is the first argument.
if [ "$1" == "-n" ]; then
  shift
  echo "Skipping: ninja $@"
  exit
fi

exec ninja "$@"
