You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
2.3 KiB
122 lines
2.3 KiB
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2015 - 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 -e
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
INFER_ROOT="$SCRIPT_DIR/../"
|
|
PLATFORM="$(uname)"
|
|
|
|
function usage() {
|
|
echo "Usage: $0 [targets]"
|
|
echo
|
|
echo " targets:"
|
|
echo " all build everything"
|
|
echo " clang build clang support (C/Objective-C)"
|
|
echo " java build Java support"
|
|
echo
|
|
echo " examples:"
|
|
echo " $0 all # build Java and C/Objective-C support"
|
|
echo " $0 java clang # equivalent way of doing the above"
|
|
echo " $0 java # build Java support only"
|
|
}
|
|
|
|
if [[ $# == 0 ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
BUILD_JAVA=0
|
|
BUILD_CLANG=0
|
|
while [[ $# > 0 ]]; do
|
|
opt_key="$1"
|
|
case $opt_key in
|
|
all)
|
|
BUILD_CLANG=1
|
|
BUILD_JAVA=1
|
|
shift
|
|
continue
|
|
;;
|
|
clang)
|
|
BUILD_CLANG=1
|
|
shift
|
|
continue
|
|
;;
|
|
java)
|
|
BUILD_JAVA=1
|
|
shift
|
|
continue
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
esac
|
|
shift
|
|
done
|
|
|
|
|
|
check_installed () {
|
|
local CMD=$1
|
|
if ! which $1 >/dev/null 2>&1; then
|
|
echo "dependency not found: $CMD"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_version () {
|
|
local CMD=$1
|
|
local VERSION=$2
|
|
if ! $1 2>&1 | grep -e "$VERSION" >/dev/null 2>&1; then
|
|
echo "version mismatch: the output of \"$CMD\" does not match \"$VERSION\""
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
set -x
|
|
|
|
check_installed opam
|
|
|
|
opam switch 4.01.0 -y
|
|
opam install -y \
|
|
atdgen.1.6.0 \
|
|
extlib.1.5.4 \
|
|
javalib.2.3.1 \
|
|
sawja.1.5.1
|
|
|
|
# Java-specific dependencies
|
|
if [ "$BUILD_JAVA" == "1" ]; then
|
|
check_installed javac
|
|
check_version "javac -version" "\b1\.[78]"
|
|
fi
|
|
|
|
# OSX-specific dependencies
|
|
if [ "$PLATFORM" == "Darwin" ]; then
|
|
check_installed xcodebuild
|
|
check_version "xcodebuild -version" "\(\b6\.[1-9]\+\|\b7\.[0-9]\+\)"
|
|
fi
|
|
|
|
# prepare build targets
|
|
TARGETS=""
|
|
if [ "$BUILD_JAVA" = "1" ]; then
|
|
TARGETS+=" java"
|
|
fi
|
|
if [ "$BUILD_CLANG" = "1" ]; then
|
|
TARGETS+=" clang"
|
|
if [ ! -f ".release" ]; then
|
|
./facebook-clang-plugins/clang/setup.sh
|
|
./compile-fcp.sh
|
|
fi
|
|
fi
|
|
|
|
make -C infer clean $TARGETS
|