# # Copyright 2011 Stefan Eilemann # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # - Neither the name of Eyescale Software GmbH nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # #================================== # # - Find ZeroConf headers # #================================== # # The following environment variables are respected for finding Dnssd. # CMAKE_PREFIX_PATH can also be used for this (see find_library() CMake # documentation). # # DNSSD_ROOT # # This module defines the following output variables: # # DNSSD_FOUND - Was Dnssd and all of the specified components found? # # DNSSD_INCLUDE_DIRS - Where to find the headers # # DNSSD_LIBRARIES - The Dnssd libraries # #================================== # Example Usage: # # find_package(DNSSD REQUIRED) # include_directories(${DNSSD_INCLUDE_DIRS}) # # add_executable(foo foo.cc) # target_link_libraries(foo ${DNSSD_LIBRARIES}) # #================================== # Naming convention: # Local variables of the form _dnssd_foo # Output variables of the form DNSSD_FOO # if(WIN32) if("$ENV{ProgramW6432}" STREQUAL "") set(_dnssd_lib_paths "$ENV{ProgramFiles}/Bonjour SDK") else() set(_dnssd_lib_paths "$ENV{ProgramW6432}/Bonjour SDK") endif() else() list(APPEND _dnssd_lib_paths /usr /usr/local /opt/local /opt) endif() find_path(_dnssd_INCLUDE_DIR dns_sd.h HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES include PATHS ${_dnssd_lib_paths} ) if(DNSSD_FIND_REQUIRED) set(_dnssd_output_type FATAL_ERROR) set(_dnssd_output 1) else() set(_dnssd_output_type STATUS) if(NOT DNSSD_FIND_QUIETLY) set(_dnssd_output 1) endif() endif() if(NOT _dnssd_INCLUDE_DIR) set(_dnssd_EPIC_FAIL TRUE) if(_dnssd_output) message(${_dnssd_output_type} "Can't find dns_sd.h header file.") endif() endif() if(APPLE) find_library(_dnssd_LIBRARY System HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES lib PATHS ${_dnssd_lib_paths} ) elseif(WIN32) if("${CMAKE_SHARED_LINKER_FLAGS}" MATCHES "x64") set(_dnssd_lib_postfix "x64") else() set(_dnssd_lib_postfix "Win32") endif() find_library(_dnssd_LIBRARY dnssd.lib HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES lib PATHS ${_dnssd_lib_paths}/Lib/${_dnssd_lib_postfix}) else() find_library(_dnssd_LIBRARY dns_sd HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES lib PATHS ${_dnssd_lib_paths} ) endif() if(DNSSD_FIND_REQUIRED) if(_dnssd_LIBRARY MATCHES "_dnssd_LIBRARY-NOTFOUND") set(_dnssd_EPIC_FAIL TRUE) message(FATAL_ERROR "Missing the ZeroConf library.\n" "Consider using CMAKE_PREFIX_PATH or the DNSSD_ROOT environment variable. " "See the ${CMAKE_CURRENT_LIST_FILE} for more details.") endif() endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(DNSSD DEFAULT_MSG _dnssd_LIBRARY _dnssd_INCLUDE_DIR) if(_dnssd_EPIC_FAIL) # Zero out everything, we didn't meet version requirements set(DNSSD_FOUND FALSE) set(_dnssd_LIBRARY) set(_dnssd_INCLUDE_DIR) endif() set(DNSSD_INCLUDE_DIRS ${_dnssd_INCLUDE_DIR}) set(DNSSD_LIBRARIES ${_dnssd_LIBRARY}) if(DNSSD_FOUND AND _dnssd_output) message(STATUS "Found ZeroConf in ${DNSSD_INCLUDE_DIRS};${DNSSD_LIBRARIES}") endif()