#!/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/martine/ninja.git -b v1.6.0
  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 runing 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-win).exe "$@";;
  MINGW32*)  cmd.exe //c $0-win.exe "$@";;
  MINGW64*)  cmd.exe //c $0-win.exe "$@";;
  *)         echo "Unsupported OS ${OS}"
             print_help
             exit 1;;
esac
