quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

CMakeLists.txt (4428B)


      1 # Copyright (C) The c-ares project and its contributors
      2 # SPDX-License-Identifier: MIT
      3 
      4 # Get rid of: warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
      5 IF (MSVC)
      6   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
      7 ENDIF ()
      8 
      9 find_package(Threads)
     10 find_package(GTest REQUIRED)
     11 
     12 IF (CMAKE_VERSION VERSION_LESS "3.23.0")
     13   Message("GoogleTest found, cmake version too old to verify GMock, look for errors...")
     14 ELSE ()
     15   IF (NOT TARGET GTest::gmock)
     16     Message(FATAL_ERROR "GoogleTest found but the GMock component was not found")
     17   ENDIF()
     18 ENDIF()
     19 
     20 # create target to access and use internal cares library
     21 add_library(caresinternal INTERFACE)
     22 target_compile_definitions(caresinternal INTERFACE HAVE_CONFIG_H=1)
     23 
     24 target_include_directories(caresinternal
     25    INTERFACE "${PROJECT_BINARY_DIR}"
     26              "${PROJECT_BINARY_DIR}/src/lib"
     27              "${PROJECT_SOURCE_DIR}"
     28              "${PROJECT_SOURCE_DIR}/src/lib"
     29              "${PROJECT_SOURCE_DIR}/src/lib/include"
     30              "${PROJECT_SOURCE_DIR}/include"
     31 )
     32 
     33 IF (CARES_STATIC)
     34   target_link_libraries(caresinternal INTERFACE ${PROJECT_NAME}::cares_static)
     35 ELSE ()
     36   target_link_libraries(caresinternal INTERFACE ${PROJECT_NAME}::cares)
     37 ENDIF ()
     38 
     39 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
     40 include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
     41 
     42 add_executable(arestest ${TESTSOURCES} ${TESTHEADERS})
     43 target_include_directories(arestest PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
     44 IF (CMAKE_VERSION VERSION_LESS "3.23.0")
     45   FIND_LIBRARY(LIBGMOCK NAMES gmock PATHS ${GTEST_ROOT} PATH_SUFFIXES lib)
     46   IF (LIBGMOCK-NOTFOUND)
     47     MESSAGE(FATAL_ERROR "Could not find Gmock")
     48   ENDIF ()
     49   target_link_libraries(arestest PRIVATE caresinternal GTest::GTest ${LIBGMOCK})
     50 ELSE ()
     51   target_link_libraries(arestest PRIVATE caresinternal GTest::gmock)
     52 ENDIF()
     53 target_compile_definitions(arestest PRIVATE CARES_NO_DEPRECATED)
     54 
     55 IF (CARES_BUILD_CONTAINER_TESTS)
     56   target_compile_definitions(arestest PRIVATE HAVE_USER_NAMESPACE HAVE_UTS_NAMESPACE)
     57 ENDIF ()
     58 # Avoid "fatal error C1041: cannot open program database" due to multiple
     59 # targets trying to use the same PDB.  /FS does NOT resolve this issue.
     60 set_target_properties(arestest PROPERTIES COMPILE_PDB_NAME arestest.pdb)
     61 
     62 add_executable(aresfuzz ${FUZZSOURCES})
     63 target_compile_definitions(aresfuzz PRIVATE CARES_NO_DEPRECATED)
     64 target_link_libraries(aresfuzz PRIVATE caresinternal)
     65 # Avoid "fatal error C1041: cannot open program database" due to multiple
     66 # targets trying to use the same PDB.  /FS does NOT resolve this issue.
     67 set_target_properties(aresfuzz PROPERTIES COMPILE_PDB_NAME aresfuzz.pdb)
     68 
     69 add_executable(aresfuzzname ${FUZZNAMESOURCES})
     70 target_compile_definitions(aresfuzzname PRIVATE CARES_NO_DEPRECATED)
     71 target_link_libraries(aresfuzzname PRIVATE caresinternal)
     72 # Avoid "fatal error C1041: cannot open program database" due to multiple
     73 # targets trying to use the same PDB.  /FS does NOT resolve this issue.
     74 set_target_properties(aresfuzzname PROPERTIES COMPILE_PDB_NAME aresfuzzname.pdb)
     75 
     76 add_executable(dnsdump ${DUMPSOURCES})
     77 target_compile_definitions(dnsdump PRIVATE CARES_NO_DEPRECATED)
     78 target_link_libraries(dnsdump PRIVATE caresinternal)
     79 # Avoid "fatal error C1041: cannot open program database" due to multiple
     80 # targets trying to use the same PDB.  /FS does NOT resolve this issue.
     81 set_target_properties(dnsdump PROPERTIES COMPILE_PDB_NAME dnsdump.pdb)
     82 
     83 add_executable(ares_queryloop ${LOOPSOURCES})
     84 target_compile_definitions(ares_queryloop PRIVATE CARES_NO_DEPRECATED)
     85 target_link_libraries(ares_queryloop PRIVATE caresinternal)
     86 # Avoid "fatal error C1041: cannot open program database" due to multiple
     87 # targets trying to use the same PDB.  /FS does NOT resolve this issue.
     88 set_target_properties(ares_queryloop PROPERTIES COMPILE_PDB_NAME ares_queryloop.pdb)
     89 
     90 
     91 
     92 
     93 # register tests
     94 
     95 add_test(NAME arestest COMMAND $<TARGET_FILE:arestest>)
     96 
     97 file(GLOB_RECURSE FUZZINPUT_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/fuzzinput" "fuzzinput/*")
     98 add_test(
     99   NAME aresfuzz
    100   WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fuzzinput"
    101   COMMAND $<TARGET_FILE:aresfuzz> ${FUZZINPUT_FILES}
    102 )
    103 
    104 file(GLOB_RECURSE FUZZNAMES_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/fuzznames" "fuzznames/*")
    105 add_test(
    106   NAME aresfuzzname
    107   WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/fuzznames"
    108   COMMAND $<TARGET_FILE:aresfuzzname> ${FUZZNAMES_FILES}
    109 )