1set(CMAKE_CXX_STANDARD 11) 2set(CMAKE_CXX_STANDARD_REQUIRED TRUE) 3set(CMAKE_CXX_EXTENSIONS FALSE) 4 5enable_language(CXX) 6 7find_package(Threads) 8 9# create target to access and use internal cares library 10set(ARES_SRC_DIR ${c-ares_SOURCE_DIR}) 11add_library(caresinternal INTERFACE) 12target_compile_definitions(caresinternal INTERFACE HAVE_CONFIG_H=1) 13target_include_directories(caresinternal INTERFACE ${ARES_SRC_DIR}) 14target_link_libraries(caresinternal INTERFACE ${PROJECT_NAME}::cares_static) 15 16# Google Test and Mock 17set(GMOCK_DIR gmock-1.8.0) 18add_library(gmock STATIC 19 ${GMOCK_DIR}/gmock-gtest-all.cc 20 ${GMOCK_DIR}/gmock/gmock.h 21 ${GMOCK_DIR}/gtest/gtest.h 22) 23target_include_directories(gmock PUBLIC SYSTEM ${GMOCK_DIR}) 24target_link_libraries(gmock PRIVATE ${CMAKE_THREAD_LIBS_INIT}) 25 26# test targets 27 28transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") 29include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake) 30 31configure_file(${ARES_SRC_DIR}/ares_config.h.cmake config.h) 32 33add_executable(arestest ${TESTSOURCES} ${TESTHEADERS}) 34target_include_directories(arestest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) 35target_link_libraries(arestest PRIVATE caresinternal gmock) 36 37IF (CARES_BUILD_CONTAINER_TESTS) 38 target_compile_definitions(arestest PRIVATE HAVE_USER_NAMESPACE HAVE_UTS_NAMESPACE) 39ENDIF () 40 41add_executable(aresfuzz ${FUZZSOURCES}) 42target_link_libraries(aresfuzz PRIVATE caresinternal) 43 44add_executable(aresfuzzname ${FUZZNAMESOURCES}) 45target_link_libraries(aresfuzzname PRIVATE caresinternal) 46 47add_executable(dnsdump ${DUMPSOURCES}) 48target_link_libraries(dnsdump PRIVATE caresinternal) 49 50# register tests 51 52add_test(NAME arestest COMMAND $<TARGET_FILE:arestest>) 53 54file(GLOB_RECURSE FUZZINPUT_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/fuzzinput" "fuzzinput/*") 55add_test( 56 NAME aresfuzz 57 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fuzzinput" 58 COMMAND $<TARGET_FILE:aresfuzz> ${FUZZINPUT_FILES} 59) 60 61file(GLOB_RECURSE FUZZNAMES_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/fuzznames" "fuzznames/*") 62add_test( 63 NAME aresfuzzname 64 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fuzznames" 65 COMMAND $<TARGET_FILE:aresfuzzname> ${FUZZNAMES_FILES} 66) 67