#!/bin/sh

# Copyright 2014 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

set -e  # When any command fails, the shell will immediately exit.

if echo $- | grep -q 'x'; then
    # Debug mode
    trap 'echo exit status = $?' EXIT
fi

usage() {
    cat >&2 <<EOF
barelinux_make - this script builds a version of skia that does not
depend on external libraries, perfect for putting in an embedded
system running Linux.

Assumes that you have already run the download_deps script.

Usage:
  $0 \\
    [-o SKIA_OUT_DIR] [-c CC_EXE] [-x CXX_EXE] \\
    [-t Debug | Release | Coverage | Release_Developer] \\
    [GYP_DEFINES...]

Example use:
  $0 \\
    -o ~/build/skia/arg64gcc \\
    -c ~/local/arm64/bin/aarch64-linux-gnu-gcc \\
    -x ~/local/arm64/bin/aarch64-linux-gnu-g++ \\
    skia_gpu=0 skia_arch_type=arm skia_arch_width=64 \\
    armv7=1 armv8=1 arm_neon=0 arm_thumb=0
EOF
    return 1
}

# BUILD_TYPE should be one of:
#  Coverage, Debug, Release, or Release_Developer
BUILD_TYPE='Debug'

while getopts ":c:x:o:t:h" opt ; do
    case $opt in
        c)  export CC="$OPTARG" ;;
        x)  export CXX="$OPTARG" ;;
        o)  export SKIA_OUT="$OPTARG";;
        t)  BUILD_TYPE="$OPTARG";;
        h)  usage || exit;;
        ?)  echo "unknown option '$OPTARG'" >&2;
            usage || exit;;
    esac
done
# Append exra arguments to GYP_DEFINES variable.
shift $(( $OPTIND - 1 ))
GYP_DEFINES="${GYP_DEFINES} $*"

# If you move this script, this must be changed.
SKIA_SRC_DIR="$(cd "$(dirname "$0")/../../.."; pwd)"

# Set a reasonable default.
export SKIA_OUT="${SKIA_OUT:-${SKIA_SRC_DIR}/out/barelinux}"

mkdir -p "$SKIA_OUT"

export GYP_GENERATORS="ninja"
export GYP_GENERATOR_FLAGS=""
export GYP_DEFINES="${GYP_DEFINES} \
    skia_warnings_as_errors=0 \
    skia_giflib_static=1 \
    skia_libpng_static=1 \
    skia_zlib_static=1 \
    skia_freetype_static=1 \
    skia_no_fontconfig=1 \
    skia_poppler_enabled=0 \
    skia_skip_gui=1 \
    "

"${SKIA_SRC_DIR}/gyp_skia"

ninja -C "${SKIA_OUT}/${BUILD_TYPE}"