# Checkout remote repository
macro(clone_repo name url)
    string(TOLOWER ${name} name_lower)
    string(TOUPPER ${name} name_upper)

    if(NOT ${name_upper}_REPOSITORY)
        set(${name_upper}_REPOSITORY ${url})
    endif()
    if(NOT ${name_upper}_TAG)
        set(${name_upper}_TAG master)
    endif()

    message(STATUS "Fetching ${name} ${${name_upper}_REPOSITORY} ${${name_upper}_TAG}")

    # Check for FetchContent cmake support
    if(${CMAKE_VERSION} VERSION_LESS "3.11")
        message(FATAL_ERROR "CMake 3.11 required to fetch ${name}")
    else()
        include(FetchContent)

        FetchContent_Declare(${name}
            GIT_REPOSITORY ${${name_upper}_REPOSITORY}
            GIT_TAG ${${name_upper}_TAG}
            SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/${name_lower})

        FetchContent_GetProperties(${name} POPULATED ${name_lower}_POPULATED)

        if(NOT ${name_lower}_POPULATED)
            FetchContent_Populate(${name})
        endif()

        set(${name_upper}_SOURCE_DIR ${${name_lower}_SOURCE_DIR})
        set(${name_upper}_BINARY_DIR ${${name_lower}_BINARY_DIR})
    endif()
endmacro()