#!/bin/bash

# Copyright (c) 2013 - present Facebook, Inc.
# All rights reserved.
#
# This source code is licensed under the BSD style license found in the
# LICENSE file in the root directory of this source tree. An additional grant
# of patent rights can be found in the PATENTS file in the same directory.

set -x
set -e

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
INFER_DIR=$SCRIPT_DIR/../infer
CLANG_PLUGIN_DIR=$SCRIPT_DIR/../facebook-clang-plugins
platform=`uname`

# Build Infer
cd $INFER_DIR && make

VERSION=$($INFER_DIR/bin/infer --version 2>&1 | head -1 | awk '{print $3}')
if [ $platform == 'Darwin' ]; then
    BINARY_DIR=infer-osx-$VERSION
else
    BINARY_DIR=infer-linux64-$VERSION
fi
BINARY_TARBALL=$BINARY_DIR.tar.xz

# Build package.
PKG_DIR=$SCRIPT_DIR/../$BINARY_DIR

# Start with infer
mkdir -p $PKG_DIR/infer/{annotations,bin,lib}
mkdir -p $PKG_DIR/examples
mkdir -p $PKG_DIR/scripts
cp -r $INFER_DIR/annotations/* $PKG_DIR/infer/annotations
cp -r $INFER_DIR/bin/* $PKG_DIR/infer/bin
cp -r $INFER_DIR/lib/* $PKG_DIR/infer/lib
cp -r $INFER_DIR/../examples/* $PKG_DIR/examples
cp $INFER_DIR/../{CONTRIBUTING.md,LICENSE,PATENTS,README.md,INSTALL.md} $PKG_DIR/
cp -r $INFER_DIR/../scripts/* $PKG_DIR/scripts
# don't include pyc files into the release
find $PKG_DIR -name "*.pyc" | xargs rm

# Add facebook-clang-plugin
PKG_PLUGIN_DIR=$PKG_DIR/facebook-clang-plugins
mkdir -p $PKG_PLUGIN_DIR/clang/{bin,lib,include}
mkdir -p $PKG_PLUGIN_DIR/libtooling/build
cp $CLANG_PLUGIN_DIR/{CONTRIBUTING.md,LICENSE,LLVM-LICENSE,PATENTS,README.md} $PKG_PLUGIN_DIR
cp -r $CLANG_PLUGIN_DIR/clang/bin/clang* $PKG_PLUGIN_DIR/clang/bin
cp -r $CLANG_PLUGIN_DIR/clang/lib/* $PKG_PLUGIN_DIR/clang/lib
cp -r $CLANG_PLUGIN_DIR/clang/include/* $PKG_PLUGIN_DIR/clang/include
rm $PKG_PLUGIN_DIR/clang/lib/*.a

cp -r $CLANG_PLUGIN_DIR/libtooling/build/* $PKG_PLUGIN_DIR/libtooling/build

cd $PKG_DIR/.. && tar cJf $BINARY_TARBALL $BINARY_DIR

# Cleanup.
rm -rf $PKG_DIR

# vim: sw=2 ts=2 et: