• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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