#!/usr/bin/env bash

# Copyright (c) 2012 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

OS="$(uname -s)"
THIS_DIR="$(dirname "${0}")"

function print_help() {
cat <<-EOF
No prebuilt ninja binary was found for this system.
Try building your own binary by doing:
  cd ~
  git clone https://github.com/ninja-build/ninja.git -b v1.8.2
  cd ninja && ./configure.py --bootstrap
Then add ~/ninja/ to your PATH.
EOF
}

case "$OS" in
  Linux)
    MACHINE=$(uname -m)
    case "$MACHINE" in
      i?86|x86_64)
        LONG_BIT=$(getconf LONG_BIT)
        # We know we are on x86 but we need to use getconf to determine
        # bittage of the userspace install (e.g. when running 32-bit userspace
        # on x86_64 kernel)
        exec "${THIS_DIR}/ninja-linux${LONG_BIT}" "$@";;
      *)
        echo Unknown architecture \($MACHINE\) -- unable to run ninja.
        print_help
        exit 1;;
    esac
    ;;
  Darwin)    exec "${THIS_DIR}/ninja-mac" "$@";;
  CYGWIN*)   exec cmd.exe /c $(cygpath -t windows $0).exe "$@";;
  MINGW*)    cmd.exe //c $0.exe "$@";;
  *)         echo "Unsupported OS ${OS}"
             print_help
             exit 1;;
esac
