cmake_minimum_required(VERSION 3.19)

include(FetchContent)

set(gtest_URL https://github.com/google/googletest.git)
set(gtest_TAG release-1.12.1)

set(absl_URL https://github.com/abseil/abseil-cpp.git)
set(absl_TAG 20230125.0)

set(re2_URL https://github.com/google/re2.git)
set(re2_TAG 2023-03-01)

set(proto_URL https://github.com/protocolbuffers/protobuf.git)
set(proto_TAG v22.2)

# From https://www.antlr.org/download.html
set(antlr_cpp_URL https://www.antlr.org/download/antlr4-cpp-runtime-4.12.0-source.zip)
set(antlr_cpp_MD5 acf7371bd7562188712751266d8a7b90)

set(nlohmann_json_URL https://github.com/nlohmann/json.git)
set(nlohmann_json_TAG v3.11.2)

if (FUZZTEST_USE_GTEST OR FUZZTEST_TESTING)
  FetchContent_Declare(
    nlohmann_json
    GIT_REPOSITORY ${nlohmann_json_URL}
    GIT_TAG        ${nlohmann_json_TAG}
  )
  FetchContent_MakeAvailable(nlohmann_json)

  FetchContent_Declare(
    googletest
    GIT_REPOSITORY ${gtest_URL}
    GIT_TAG        ${gtest_TAG}
  )
endif ()

FetchContent_Declare(
  abseil-cpp
  GIT_REPOSITORY ${absl_URL}
  GIT_TAG        ${absl_TAG}
)

FetchContent_Declare(
  antlr_cpp
  URL      ${antlr_cpp_URL}
  URL_HASH MD5=${antlr_cpp_MD5}
)

FetchContent_Declare(
  re2
  GIT_REPOSITORY ${re2_URL}
  GIT_TAG        ${re2_TAG}
)

if (FUZZTEST_TESTING)
  FetchContent_Declare(
    protobuf
    GIT_REPOSITORY ${proto_URL}
    GIT_TAG        ${proto_TAG}
  )
endif ()

FetchContent_MakeAvailable(antlr_cpp)
set(ABSL_PROPAGATE_CXX_STD ON)
FetchContent_MakeAvailable(abseil-cpp)
set(RE2_BUILD_TESTING OFF CACHE BOOL "")
FetchContent_MakeAvailable(re2)

if (FUZZTEST_USE_GTEST OR FUZZTEST_TESTING)
  FetchContent_MakeAvailable(googletest)
endif()

if (FUZZTEST_TESTING)
  set(protobuf_BUILD_TESTS OFF)
  set(protobuf_INSTALL OFF)
  FetchContent_MakeAvailable(protobuf)
endif ()
