#!/usr/bin/env bash

MASON_NAME=benchmark
MASON_VERSION=1.0.0
MASON_LIB_FILE=lib/libbenchmark.a

. ${MASON_DIR}/mason.sh

function mason_load_source {
    mason_download \
        https://github.com/google/benchmark/archive/v1.0.0.tar.gz \
        dcf87e5faead951fd1e9ab103cb36a7c8ebe4837

    mason_extract_tar_gz

    export MASON_BUILD_PATH=${MASON_ROOT}/.build/benchmark-${MASON_VERSION}
}

function mason_compile {
    rm -rf build
    mkdir -p build
    cd build
    if [ ${MASON_PLATFORM} == 'ios' ] ; then
        # Make sure CMake thinks we're cross-compiling and manually set the exit codes
        # because CMake can't run the test programs
        echo "set (CMAKE_SYSTEM_NAME Darwin)" > toolchain.cmake
        cmake \
            -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \
            -DRUN_HAVE_STD_REGEX=1 \
            -DRUN_HAVE_POSIX_REGEX=0 \
            -DRUN_HAVE_STEADY_CLOCK=0 \
            -DCMAKE_CXX_FLAGS="${CFLAGS:-}" \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_INSTALL_PREFIX="${MASON_PREFIX}" \
            -DBENCHMARK_ENABLE_LTO=ON \
            -DBENCHMARK_ENABLE_TESTING=OFF \
            ..
    else
        cmake \
            ${MASON_CMAKE_TOOLCHAIN:-} \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_INSTALL_PREFIX="${MASON_PREFIX}" \
            -DBENCHMARK_ENABLE_LTO=ON \
            -DBENCHMARK_ENABLE_TESTING=OFF \
            ..
    fi

    make install -j${MASON_CONCURRENCY}
}

function mason_cflags {
    echo -isystem ${MASON_PREFIX}/include
}

function mason_ldflags {
    echo -lpthread
}

function mason_static_libs {
    echo ${MASON_PREFIX}/${MASON_LIB_FILE}
}

mason_run "$@"
