#!/bin/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.4.0
  ./ninja/bootstrap.py
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).exe "$@";;
  MINGW32*)  cmd.exe //c $0.exe "$@";;
  *)         echo "Unsupported OS ${OS}"
             print_help
             exit 1;;
esac
