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