depends="boost monerocorecustom"
inherit lib

version="2a678f08ec3f335c99cd4079287aafaa8f53a62d"
source="https://github.com/ExodusMovement/mymonero-core-cpp.git#${version}"

build() {
    case $target in
    ios-*)      cmakeflags="-DCMAKE_TOOLCHAIN_FILE=$recipe_dir/../../classes/ios.toolchain.cmake" ;;
    android-*)  cmakeflags="-DCMAKE_TOOLCHAIN_FILE=$recipe_dir/../../classes/android.toolchain.cmake -DANDROID=1" ;;
    *)          cmakeflags="-C$recipe_dir/../../classes/native.cmake" ;;
    esac

#    echo Patching...
#    patch -p1 < $recipe_dir/ios-build.patch
#    patch -p1 < $recipe_dir/timeout.patch

    rm -rf contrib/monero-core-custom
    cp -a $install_dir/repos/monero-core-custom/. contrib/monero-core-custom/

    # HACK: Remove duplicate files from prefix
    rm -rf \
        $install_dir/include/common \
        $install_dir/include/crypto \
        $install_dir/include/cryptonote_basic \
        $install_dir/include/cryptonote_protocol \
        $install_dir/include/device \
        $install_dir/include/ringct \
        $install_dir/include/rpc \
        $install_dir/include/serialization \
        $install_dir/include/sodium \
        $install_dir/include/storages \
        $install_dir/include/fnv1.h \
        $install_dir/include/hex.h \
        $install_dir/include/include_base_utils.h \
        $install_dir/include/memwipe.h \
        $install_dir/include/misc_language.h \
        $install_dir/include/misc_log_ex.h \
        $install_dir/include/mlocker.h \
        $install_dir/include/pragma_comp_defs.h \
        $install_dir/include/span.h \
        $install_dir/include/string_tools.h \
        $install_dir/include/warnings.h \
        $install_dir/include/wipeable_string.h \
        $install_dir/include/byte_slice.h \
        $install_dir/include/int-util.h \
        $install_dir/include/cryptonote_config.h

    # Replace CMakeLists.txt
    cp -f $recipe_dir/CMakeLists.txt .

    export CFLAGS="$CFLAGS -O2"
    export CXXFLAGS="$CXXFLAGS -O2"

    mkdir -p build
    cd build

    args="${cmakeflags} \
        -DCMAKE_INSTALL_PREFIX=${install_dir} \
        -DINSTALL_DIR:STRING=${install_dir} \
        -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
        -DBUILD_SHARED_LIBS:BOOL=FALSE"

    echo $args

    cmake .. $args || true # Run once to clear error
    cmake .. $args

    make

    cd ..

    # Copy top level directories
    cp -R contrib/monero-core-custom/common $install_dir/include/
    cp -R contrib/monero-core-custom/crypto $install_dir/include/
    cp -R contrib/monero-core-custom/cryptonote_basic $install_dir/include/
    cp -R contrib/monero-core-custom/cryptonote_protocol $install_dir/include/
    cp -R contrib/monero-core-custom/device $install_dir/include/
    cp -R contrib/monero-core-custom/ringct $install_dir/include/
    cp -R contrib/monero-core-custom/rpc $install_dir/include
    cp -R contrib/monero-core-custom/serialization $install_dir/include/

    # Copy contrib directories
    cp -R contrib/monero-core-custom/contrib/libsodium/include/sodium $install_dir/include/

    # Copy epee files
    cp -f contrib/monero-core-custom/epee/include/serialization/* $install_dir/include/serialization
    cp -R contrib/monero-core-custom/epee/include/storages $install_dir/include
    cp -f contrib/monero-core-custom/epee/include/fnv1.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/hex.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/include_base_utils.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/memwipe.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/misc_language.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/misc_log_ex.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/mlocker.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/pragma_comp_defs.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/span.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/string_tools.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/warnings.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/wipeable_string.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/byte_slice.h $install_dir/include/
    cp -f contrib/monero-core-custom/epee/include/int-util.h $install_dir/include/

    # Copy other
    cp -f contrib/monero-core-custom/cryptonote_config.h $install_dir/include/
    cp -f src/serial_bridge_index.hpp $install_dir/include/
    cp -f build/libmymonerocorecpp.a $install_dir/lib/
}

include="include/*"
lib="lib/libmymonerocorecpp.a"
