#!/bin/bash

set -e

# source the common build functions
SCRIPT_DIR=$(dirname "$0")
source "${SCRIPT_DIR}/ios_build_functions.sh"

function setup ()
{
    if [ "${ROOT_PATH}/External/libgit2-ios/libgit2-ios.a" -nt "${ROOT_PATH}/External/libgit2" ]
    then
        echo "No update needed."
        exit 0
    fi

    LIBRARY_NAME="libgit2"
    LIB_PATH="${ROOT_PATH}/External/libgit2-ios"
    rm -rf "${LIB_PATH}"

    pushd "${ROOT_PATH}/External/libgit2" > /dev/null
}

function build_libgit2 ()
{
    rm -rf "build"
    mkdir "build"

    pushd "build" > /dev/null

    # LOL Cmake
    if [ "${ARCH}" != "i386" ] && [ "${ARCH}" != "x86_64" ]
    then
        SYS_ROOT="-DCMAKE_OSX_SYSROOT=${SDKROOT}"
    fi

    # install the each built arch somewhere sane
    INSTALL_PREFIX="${LIB_PATH}/${SDKNAME}-${ARCH}.sdk"

    mkdir -p "${INSTALL_PREFIX}"

    LOG="${INSTALL_PREFIX}/build-libgit2.log"
    echo "$LOG"

    cmake -DCMAKE_C_COMPILER=clang \
        -DCMAKE_C_COMPILER_WORKS:BOOL=ON \
        -DBUILD_SHARED_LIBS:BOOL=OFF \
        -DOPENSSL_INCLUDE_DIR:PATH=../../External/ios-openssl/include/ \
        -DCMAKE_LIBRARY_PATH:PATH=../../External/libssh2-ios/lib/ \
        -DCMAKE_INCLUDE_PATH:PATH=../../External/libssh2-ios/include/libssh2/ \
        -DOPENSSL_SSL_LIBRARY:FILEPATH=../../External/ios-openssl/lib/libssl.a \
        -DCMAKE_LIBRARY_PATH:PATH="${SDKROOT}/usr/lib/" \
        -DOPENSSL_CRYPTO_LIBRARY:FILEPATH=../../External/ios-openssl/lib/libcrypto.a \
        -DCMAKE_INSTALL_PREFIX:PATH="${INSTALL_PREFIX}/" \
        -DBUILD_CLAR:BOOL=OFF \
        -DTHREADSAFE:BOOL=ON \
        "${SYS_ROOT}" \
        -DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
        .. >> "${LOG}" 2>&1
    cmake --build . --target install >> "${LOG}" 2>&1

    # push the built library into the list
    BUILT_LIB_PATHS+=("${INSTALL_PREFIX}/lib/libgit2.a")
    popd > /dev/null
}

function fat_binary ()
{
    echo "Building fat binary..."

    lipo -create "${BUILT_LIB_PATHS[@]}" -output "${ROOT_PATH}/External/libgit2-ios/libgit2-ios.a"

    echo "Building done."

    popd > /dev/null
}

build_all_archs setup build_libgit2 fat_binary
