include_directories(../include)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-prototypes")

macro(fuzzer name)
  add_executable(${name} ${name}.cc)
  add_dependencies(${name} global_target)
  target_link_libraries(${name} crypto ${ARGN})
  if(LIBFUZZER_FROM_DEPS)
    set_target_properties(${name} PROPERTIES LINK_FLAGS "-fsanitize=fuzzer-no-link")
    target_link_libraries(${name} Fuzzer)
  else()
    set_target_properties(${name} PROPERTIES LINK_FLAGS "-fsanitize=fuzzer")
  endif()
endmacro()

fuzzer(arm_cpuinfo)
fuzzer(bn_mod_exp)
fuzzer(bn_div)
fuzzer(privkey)
fuzzer(cert)
fuzzer(spki)
fuzzer(pkcs8)
fuzzer(pkcs12)
fuzzer(read_pem)
fuzzer(server ssl)
fuzzer(client ssl)
fuzzer(dtls_server ssl)
fuzzer(dtls_client ssl)
fuzzer(ssl_ctx_api ssl)
fuzzer(session ssl)
fuzzer(decode_client_hello_inner ssl)
