################################################################################
#  THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY  #
#  Read the zproject/README.md for information about making permanent changes. #
################################################################################

########################################################################
# Project setup
########################################################################
cmake_minimum_required(VERSION 2.8...4.0)
project(zyre)
enable_language(C)
enable_testing()

include(GNUInstallDirs)

set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
# Select flags
if(MSVC)
    SET(CMAKE_C_FLAGS_RELEASE "/O2")
else()
    SET(CMAKE_C_FLAGS_RELEASE "-O3")
endif()

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/builds/cmake/Modules)

# Will be used to add flags to pkg-config useful when apps want to statically link
set(pkg_config_libs_private "")
set(pkg_config_names_private "")

########################################################################
# options
########################################################################
if (NOT CMAKE_BUILD_TYPE)
    if (EXISTS "${PROJECT_SOURCE_DIR}/.git")
        set (CMAKE_BUILD_TYPE Debug)
    else ()
# http://xit0.org/2013/04/cmake-use-git-branch-and-commit-details-in-project/
# http://stackoverflow.com/questions/6797395/cmake-execute-process-always-fails-with-no-such-file-or-directory-when-i-cal
        execute_process(
            COMMAND git rev-parse --show-toplevel
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
            RESULT_VARIABLE git_result
            OUTPUT_VARIABLE git_root
            OUTPUT_STRIP_TRAILING_WHITESPACE
        )
        message(STATUS "git workspace root [${git_result}]: ${git_root}")
        if ( "${git_result}" STREQUAL "0" )
            set (CMAKE_BUILD_TYPE Debug)
        else ()
            set (CMAKE_BUILD_TYPE Release)
        endif ()
    endif ()
endif ()
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
    OPTION (ENABLE_DRAFTS "Build and install draft classes and methods" ON)
else ()
    OPTION (ENABLE_DRAFTS "Build and install draft classes and methods" OFF)
endif ()
IF (ENABLE_DRAFTS)
    ADD_DEFINITIONS (-DZYRE_BUILD_DRAFT_API)
ENDIF (ENABLE_DRAFTS)

########################################################################
# platform.h
########################################################################
include(CheckIncludeFile)
CHECK_INCLUDE_FILE("linux/wireless.h" HAVE_LINUX_WIRELESS_H)
CHECK_INCLUDE_FILE("net/if_media.h" HAVE_NET_IF_MEDIA_H)

include(CheckFunctionExists)
CHECK_FUNCTION_EXISTS("getifaddrs" HAVE_GETIFADDRS)
CHECK_FUNCTION_EXISTS("freeifaddrs" HAVE_FREEIFADDRS)

include(CheckIncludeFiles)
check_include_files("sys/socket.h;net/if.h" HAVE_NET_IF_H)
if (NOT HAVE_NET_IF_H)
    CHECK_INCLUDE_FILE("net/if.h" HAVE_NET_IF_H)
endif()

file(REMOVE "${PROJECT_SOURCE_DIR}/src/platform.h")

file(WRITE "${PROJECT_BINARY_DIR}/platform.h.in" "
#cmakedefine HAVE_LINUX_WIRELESS_H
#cmakedefine HAVE_NET_IF_H
#cmakedefine HAVE_NET_IF_MEDIA_H
#cmakedefine HAVE_GETIFADDRS
#cmakedefine HAVE_FREEIFADDRS
")

configure_file("${PROJECT_BINARY_DIR}/platform.h.in" "${PROJECT_BINARY_DIR}/platform.h")

if (WIN32)
    #The MSVC C compiler is too out of date,
    #so the sources have to be compiled as c++
    if (MSVC AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
        enable_language(CXX)
        file(GLOB sources "${PROJECT_SOURCE_DIR}/src/*.c")
        set_source_files_properties(
            ${sources}
            PROPERTIES LANGUAGE CXX
        )
    endif()
    set(MORE_LIBRARIES ws2_32 Rpcrt4 Iphlpapi)
endif()

# specific case of windows UWP
if( "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore" AND "${CMAKE_SYSTEM_VERSION}" STREQUAL "10.0")
  ADD_DEFINITIONS(-DZMQ_HAVE_WINDOWS_UWP)
  ADD_DEFINITIONS(-D_WIN32_WINNT=_WIN32_WINNT_WIN10)
endif()


# required libraries for mingw
if (MINGW)
    set(MORE_LIBRARIES -lws2_32 -lrpcrt4 -liphlpapi)
endif()

# required libraries for cygwin
if (CYGWIN)
    set(MORE_LIBRARIES)
endif()

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}")
set(OPTIONAL_LIBRARIES)
set(OPTIONAL_LIBRARIES_STATIC)

########################################################################
# LIBZMQ dependency
########################################################################
IF (NOT libzmq_FOUND)
    find_package(libzmq REQUIRED)
ENDIF(NOT libzmq_FOUND)
IF (libzmq_FOUND)
    include_directories(${libzmq_INCLUDE_DIRS})
    list(APPEND MORE_LIBRARIES ${libzmq_LIBRARIES})
  IF (PC_LIBZMQ_FOUND)
      set(pkg_config_names_private "${pkg_config_names_private} libzmq")
      list(APPEND OPTIONAL_LIBRARIES_STATIC ${PC_LIBZMQ_STATIC_LDFLAGS})
  ELSE (PC_LIBZMQ_FOUND)
      set(pkg_config_libs_private "${pkg_config_libs_private} -lzmq")
  ENDIF (PC_LIBZMQ_FOUND)
ELSE (libzmq_FOUND)
    message( FATAL_ERROR "libzmq not found." )
ENDIF (libzmq_FOUND)

########################################################################
# CZMQ dependency
########################################################################
IF (NOT czmq_FOUND)
    find_package(czmq REQUIRED)
ENDIF(NOT czmq_FOUND)
IF (czmq_FOUND)
    include_directories(${czmq_INCLUDE_DIRS})
    list(APPEND MORE_LIBRARIES ${czmq_LIBRARIES})
  IF (PC_CZMQ_FOUND)
      set(pkg_config_names_private "${pkg_config_names_private} libczmq")
      list(APPEND OPTIONAL_LIBRARIES_STATIC ${PC_CZMQ_STATIC_LDFLAGS})
  ELSE (PC_CZMQ_FOUND)
      set(pkg_config_libs_private "${pkg_config_libs_private} -lczmq")
  ENDIF (PC_CZMQ_FOUND)
ELSE (czmq_FOUND)
    message( FATAL_ERROR "czmq not found." )
ENDIF (czmq_FOUND)

########################################################################
# version
########################################################################
set(ZYRE_VERSION_MAJOR 2)
set(ZYRE_VERSION_MINOR 0)
set(ZYRE_VERSION_PATCH 1)
set(ZYRE_VERSION "${ZYRE_VERSION_MAJOR}.${ZYRE_VERSION_MINOR}.${ZYRE_VERSION_PATCH}")
message(STATUS "Detected ZYRE Version - ${ZYRE_VERSION}")


########################################################################
# includes
########################################################################
set (zyre_headers
    include/zyre_library.h
    include/zyre.h
    include/zyre_event.h
    src/zre_msg.h
    src/zyre_peer.h
    src/zyre_group.h
    src/zyre_election.h
    src/zyre_node.h
)

source_group ("Header Files" FILES ${zyre_headers})
install(FILES ${zyre_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

########################################################################
# library
########################################################################


include_directories("${PROJECT_SOURCE_DIR}/src" "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}")
set (zyre_sources
    src/zyre.c
    src/zyre_event.c
    src/zre_msg.c
    src/zyre_peer.c
    src/zyre_group.c
    src/zyre_election.c
    src/zyre_node.c
)
IF (ENABLE_DRAFTS)
    list (APPEND zyre_sources
        src/zyre_private_selftest.c
    )
ENDIF (ENABLE_DRAFTS)

source_group("Source Files" FILES ${zyre_sources})


option(ZYRE_BUILD_SHARED "Whether or not to build the shared object" ON)
option(ZYRE_BUILD_STATIC "Whether or not to build the static archive" ON)

if (NOT ZYRE_BUILD_SHARED AND NOT ZYRE_BUILD_STATIC)
  message(FATAL_ERROR "Neither static nor shared library build enabled")
endif()

IF (NOT MSVC)
  # avoid building everything twice for shared + static
  # only on *nix, as Windows needs different preprocessor defines in static builds
  add_library (zyre_objects OBJECT ${zyre_sources})
  set_property(TARGET zyre_objects PROPERTY POSITION_INDEPENDENT_CODE ON)
ENDIF (NOT MSVC)

# shared
if (ZYRE_BUILD_SHARED)
  IF (APPLE)
    add_library(zyre SHARED ${zyre_sources})
  ELSE (APPLE)
    IF (MSVC)
      add_library(zyre SHARED ${zyre_sources})
    ELSE (MSVC)
      add_library(zyre SHARED $<TARGET_OBJECTS:zyre_objects>)
    ENDIF (MSVC)
  ENDIF(APPLE)

  set_target_properties (zyre PROPERTIES
    PUBLIC_HEADER "${public_headers}"
    DEFINE_SYMBOL "ZYRE_EXPORTS"
    SOVERSION "2"
    VERSION "${ZYRE_VERSION}"
    COMPILE_DEFINITIONS "DLL_EXPORT"
    OUTPUT_NAME "zyre"
    PREFIX "lib"
  )

  target_link_libraries(zyre
    PUBLIC ${MORE_LIBRARIES}
  )

  install(TARGETS zyre
    EXPORT zyre-targets
  )

  target_include_directories(zyre
    PUBLIC
      $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
      $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
  )
endif()

# static
if (ZYRE_BUILD_STATIC)
  IF (APPLE)
    add_library(zyre-static STATIC ${zyre_sources})
  ELSE (APPLE)
    IF (MSVC)
      add_library(zyre-static STATIC ${zyre_sources})
    ELSE (MSVC)
      add_library(zyre-static STATIC $<TARGET_OBJECTS:zyre_objects>)
    ENDIF (MSVC)
  ENDIF (APPLE)

  set_target_properties(zyre-static PROPERTIES
    PUBLIC_HEADER "${public_headers}"
    COMPILE_DEFINITIONS "ZYRE_STATIC"
    OUTPUT_NAME "zyre"
    PREFIX "lib"
  )

  target_link_libraries(zyre-static
    PUBLIC ${MORE_LIBRARIES}
  )

  install(TARGETS zyre-static
    EXPORT zyre-targets
  )

  target_include_directories(zyre-static
    PUBLIC
      $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
      $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
  )
  target_compile_definitions(zyre-static
    PUBLIC ZYRE_STATIC
  )

endif()


include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists-local.txt) # Optional project-local hook

########################################################################
# pkgconfig
########################################################################
set (VERSION "2.0.1")
set (prefix "${CMAKE_INSTALL_PREFIX}")
set (exec_prefix "\${prefix}")
set (libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
set (includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
IF (ENABLE_DRAFTS)
    set (pkg_config_defines "-DZYRE_BUILD_DRAFT_API=1")
ELSE (ENABLE_DRAFTS)
    set (pkg_config_defines "")
ENDIF (ENABLE_DRAFTS)
configure_file(
    "${PROJECT_SOURCE_DIR}/src/libzyre.pc.in"
    "${PROJECT_SOURCE_DIR}/src/libzyre.pc"
@ONLY)

install(
    FILES "${PROJECT_SOURCE_DIR}/src/libzyre.pc"
    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)

########################################################################
# installer
########################################################################
include(CMakePackageConfigHelpers)
if (WIN32)
  set(CMAKECONFIG_INSTALL_DIR "CMake" CACHE STRING "install path for zyreConfig.cmake")
else()
  set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/zyre" CACHE STRING "install path for zyreConfig.cmake")
endif()

if (NOT CMAKE_VERSION VERSION_LESS 3.0)
  export(EXPORT zyre-targets
         FILE "${CMAKE_CURRENT_BINARY_DIR}/zyreTargets.cmake")
endif()
configure_package_config_file(builds/cmake/Config.cmake.in
                              "${CMAKE_CURRENT_BINARY_DIR}/zyreConfig.cmake"
                              INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR})
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/zyreConfigVersion.cmake
                                 VERSION ${ZYRE_VERSION}
                                 COMPATIBILITY AnyNewerVersion)
install(EXPORT zyre-targets
        FILE zyreTargets.cmake
        DESTINATION ${CMAKECONFIG_INSTALL_DIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zyreConfig.cmake
              ${CMAKE_CURRENT_BINARY_DIR}/zyreConfigVersion.cmake
              DESTINATION ${CMAKECONFIG_INSTALL_DIR})

########################################################################
# executables
########################################################################
add_executable(
    perf_local
    "${PROJECT_SOURCE_DIR}/src/perf_local.c"
)
if (TARGET zyre)
target_link_libraries(
    perf_local
    zyre
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
)
endif()
if (NOT TARGET zyre AND TARGET zyre-static)
target_link_libraries(
    perf_local
    zyre-static
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
    ${OPTIONAL_LIBRARIES_STATIC}
)
endif()
add_executable(
    perf_remote
    "${PROJECT_SOURCE_DIR}/src/perf_remote.c"
)
if (TARGET zyre)
target_link_libraries(
    perf_remote
    zyre
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
)
endif()
if (NOT TARGET zyre AND TARGET zyre-static)
target_link_libraries(
    perf_remote
    zyre-static
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
    ${OPTIONAL_LIBRARIES_STATIC}
)
endif()
add_executable(
    zpinger
    "${PROJECT_SOURCE_DIR}/src/zpinger.c"
)
if (TARGET zyre)
target_link_libraries(
    zpinger
    zyre
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
)
endif()
if (NOT TARGET zyre AND TARGET zyre-static)
target_link_libraries(
    zpinger
    zyre-static
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
    ${OPTIONAL_LIBRARIES_STATIC}
)
endif()
install(TARGETS zpinger)
add_executable(
    ztester_beacon
    "${PROJECT_SOURCE_DIR}/src/ztester_beacon.c"
)
if (TARGET zyre)
target_link_libraries(
    ztester_beacon
    zyre
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
)
endif()
if (NOT TARGET zyre AND TARGET zyre-static)
target_link_libraries(
    ztester_beacon
    zyre-static
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
    ${OPTIONAL_LIBRARIES_STATIC}
)
endif()
add_executable(
    ztester_gossip
    "${PROJECT_SOURCE_DIR}/src/ztester_gossip.c"
)
if (TARGET zyre)
target_link_libraries(
    ztester_gossip
    zyre
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
)
endif()
if (NOT TARGET zyre AND TARGET zyre-static)
target_link_libraries(
    ztester_gossip
    zyre-static
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
    ${OPTIONAL_LIBRARIES_STATIC}
)
endif()
add_executable(
    zyre_selftest
    "${PROJECT_SOURCE_DIR}/src/zyre_selftest.c"
)
if (TARGET zyre)
target_link_libraries(
    zyre_selftest
    zyre
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
)
endif()
if (NOT TARGET zyre AND TARGET zyre-static)
target_link_libraries(
    zyre_selftest
    zyre-static
    ${LIBZMQ_LIBRARIES}
    ${CZMQ_LIBRARIES}
    ${OPTIONAL_LIBRARIES}
    ${OPTIONAL_LIBRARIES_STATIC}
)
endif()

########################################################################
# tests
########################################################################
set(CLASSTEST_TIMEOUT 60 CACHE STRING "Timeout of the selftest of a class")
set(TOTAL_TIMEOUT 600 CACHE STRING "Timout of the total testsuite")

if(UNIX)
    find_program(MEMORYCHECK_COMMAND valgrind)
    set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=full --show-reachable=yes
                                     --error-exitcode=1
                                     --suppressions=src/.valgrind.supp")
endif()

set(TEST_CLASSES
    zyre
    zyre_event
)

IF (ENABLE_DRAFTS)
    list (APPEND TEST_CLASSES
    private_classes
    )
ENDIF (ENABLE_DRAFTS)


if (NOT TARGET copy-selftest-ro)
    add_custom_target(
        copy-selftest-ro ALL
        COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/src/selftest-ro ${PROJECT_BINARY_DIR}/src/selftest-ro
    )
endif()

if (NOT TARGET make-selftest-rw)
    add_custom_target(
        make-selftest-rw ALL
        COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/src/selftest-rw
    )
endif()


set_directory_properties(
    PROPERTIES
    ADDITIONAL_MAKE_CLEAN_FILES "${PROJECT_BINARY_DIR}/src/selftest-ro;${PROJECT_BINARY_DIR}/src/selftest-rw"
)

foreach(TEST_CLASS ${TEST_CLASSES})
    add_test(
        NAME ${TEST_CLASS}
        COMMAND zyre_selftest --continue --verbose --test ${TEST_CLASS}
    )
    IF (WIN32 AND CMAKE_PREFIX_PATH)
        file(TO_NATIVE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH_WIN)
        set_tests_properties(
            ${TEST_CLASS}
            PROPERTIES ENVIRONMENT "PATH=%PATH%\;${CMAKE_PREFIX_PATH_WIN}\\bin"
        )
    ENDIF (WIN32 AND CMAKE_PREFIX_PATH)
    set_tests_properties(
        ${TEST_CLASS}
        PROPERTIES TIMEOUT ${CLASSTEST_TIMEOUT}
    )
    set_tests_properties(
        ${TEST_CLASS}
        PROPERTIES DEPENDS "copy-selftest-ro;make-selftest-rw"
    )
endforeach(TEST_CLASS)

include(CTest)

########################################################################
# cleanup
########################################################################
if (NOT TARGET distclean)
    if (CMAKE_VERSION VERSION_LESS 3.17)
        set(rm_command rm -rf)
    else()
        set(rm_command ${CMAKE_COMMAND} -E rm -rf --)
    endif()
    set(cmake_generated ${PROJECT_BINARY_DIR}/CMakeCache.txt
                        ${PROJECT_BINARY_DIR}/cmake_install.cmake
                        ${PROJECT_BINARY_DIR}/Makefile
                        ${PROJECT_BINARY_DIR}/CMakeFiles
                        ${PROJECT_BINARY_DIR}/CTestTestfile.cmake
                        ${PROJECT_BINARY_DIR}/DartConfiguration.tcl
                        ${PROJECT_BINARY_DIR}/Testing
                        ${PROJECT_BINARY_DIR}/compile_commands.json
                        ${PROJECT_BINARY_DIR}/platform.h
                        ${PROJECT_BINARY_DIR}/src/libzyre.pc
                        ${PROJECT_BINARY_DIR}/src/libzyre.so
                        ${PROJECT_BINARY_DIR}/src/zyre_selftest
                        ${PROJECT_BINARY_DIR}/src/perf_local
                        ${PROJECT_BINARY_DIR}/src/perf_remote
                        ${PROJECT_BINARY_DIR}/src/zpinger
                        ${PROJECT_BINARY_DIR}/src/ztester_beacon
                        ${PROJECT_BINARY_DIR}/src/ztester_gossip
                        ${PROJECT_BINARY_DIR}/src/zyre_selftest
    )
    add_custom_target(distclean
        COMMAND ${rm_command} CMakeTmp ${cmake_generated}
        COMMENT Cleaning for source distribution
    )
endif()

include(ClangFormat OPTIONAL)

########################################################################
# summary
########################################################################
message ("")
message (STATUS "******************* Configuration Summary *******************")
message (STATUS "General:")
message (STATUS "  Version           :   ${VERSION}")
message (STATUS "  System            :   ${CMAKE_SYSTEM_NAME}")
message (STATUS "  C compiler        :   ${CMAKE_C_COMPILER}")
message (STATUS "  Debug C flags     :   ${CMAKE_C_FLAGS_DEBUG} ${CMAKE_C_FLAGS}")
message (STATUS "  Release C flags   :   ${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_FLAGS}")
message (STATUS "  Build type        :   ${CMAKE_BUILD_TYPE}")
message (STATUS "  Static build      :   ${ZYRE_BUILD_STATIC}")
message (STATUS "  Shared build      :   ${ZYRE_BUILD_SHARED}")
IF (ENABLE_DRAFTS)
message (STATUS "  Draft API         :   Yes")
ELSE (ENABLE_DRAFTS)
message (STATUS "  Draft API         :   No")
ENDIF (ENABLE_DRAFTS)
message (STATUS "")
message (STATUS "Dependencies:")
include(FeatureSummary)
feature_summary (WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
message (STATUS "")
message (STATUS "Install:")
message (STATUS "  Install prefix    :" "${CMAKE_INSTALL_PREFIX}")
message (STATUS "")
message (STATUS "************************* Options ***************************")
message (STATUS "Options:")
message (STATUS "  Use the Draft API (default = yes):")
message (STATUS "  -DENABLE-DRAFTS=[yes|no]")
message (STATUS "")
message (STATUS "*************************************************************")
message (STATUS "Configuration complete! Now procced with:")
message (STATUS "  'make'                 compile the project")
message (STATUS "  'make test'            run the project's selftest")
message (STATUS "  'make install'         install the project to ${CMAKE_INSTALL_PREFIX}")
message (STATUS "")
message (STATUS "Further options are:")
message (STATUS "  'ctest -V              run test with verbose logging")
message (STATUS "  'ctest -R <test_name>' run a specific test")
message (STATUS "  'ctest -T memcheck'    run the project's selftest with")
message (STATUS "                         valgrind to check for memory leaks")
message (STATUS "")

################################################################################
#  THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY  #
#  Read the zproject/README.md for information about making permanent changes. #
################################################################################
