OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-cogutil / cmake / FindZMQ.cmake

74 lines · cmake ref:
# - Find ZeroMQ library
#
# This module checks for the required version number and defines
#  ZMQ_LIBRARIES, the libraries to link against to use ZMQ.
#  ZMQ_LIB_DIR, the location of the libraries
#  ZMQ_FOUND, If false, do not try to use ZMQ
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

FIND_LIBRARY(ZMQ_LIBRARY NAMES zmq PATHS
    /usr/lib
    /usr/local/lib
    /usr/local/lib/zmq
)

FIND_PATH(ZMQPP_INCLUDE_DIR zmq.hpp
  /opt/local/include
  /usr/local/include
  /usr/include
)

# Copy the results to the output variables.
IF (ZMQ_LIBRARY)
	SET(ZMQ_FOUND 1)
	SET(ZMQ_LIBRARIES ${ZMQ_LIBRARY})
	MESSAGE(STATUS "Found ZeroMQ library: ${ZMQ_LIBRARIES}")
	IF (ZMQPP_INCLUDE_DIR)
		SET(ZMQPP_FOUND 1)
	ENDIF (ZMQPP_INCLUDE_DIR)
ELSE (ZMQ_LIBRARY)
	SET(ZMQ_FOUND 0)
	SET(ZMQ_LIBRARIES)
ENDIF (ZMQ_LIBRARY)

# Check found version against required one
IF (ZMQ_FOUND)
    FIND_FILE(ZMQ_CFG_FILE zmq.h
            /usr/include
            /usr/local/include
    )
    IF (DEFINED ZMQ_CFG_FILE)
        FILE(READ "${ZMQ_CFG_FILE}" _ZMQ_VERSION_H_CONTENTS)
        STRING(REGEX MATCH "#define ZMQ_VERSION_MAJOR ([0-9])" _MATCH "${_ZMQ_VERSION_H_CONTENTS}")
        SET(ZMQ_VERSION_MAJOR ${CMAKE_MATCH_1})
        STRING(REGEX MATCH "#define ZMQ_VERSION_MINOR ([0-9])" _MATCH "${_ZMQ_VERSION_H_CONTENTS}")
        SET(ZMQ_VERSION_MINOR ${CMAKE_MATCH_1})
        STRING(REGEX MATCH "#define ZMQ_VERSION_PATCH ([0-9])" _MATCH "${_ZMQ_VERSION_H_CONTENTS}")
        SET(ZMQ_VERSION_PATCH ${CMAKE_MATCH_1})
        set (ZMQ_VERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.${ZMQ_VERSION_PATCH}")
        MESSAGE(STATUS "Detected ZeroMQ version number: ${ZMQ_VERSION}")
        IF (DEFINED ZMQ_VERSION AND ZMQ_VERSION VERSION_LESS ZMQ_FIND_VERSION)
            SET(ZMQ_FOUND FALSE)
            MESSAGE(STATUS "Installed version ${ZMQ_VERSION} of ZeroMQ does not meet the minimum required version of ${ZMQ_FIND_VERSION}")
        ENDIF ()
    ELSE ()
        MESSAGE(STATUS "Unable to find zmq.h header file")
        SET(ZMQ_FOUND 0)
    ENDIF ()
ENDIF ()

# Report the results.
IF (NOT ZMQ_FOUND)
	SET(ZMQ_DIR_MESSAGE "Required version of ZeroMQ was not found. Make sure the ZMQ_LIBRARY environment variable is set.")
	MESSAGE(STATUS "${ZMQ_DIR_MESSAGE}")	
        IF (ZMQ_FIND_REQUIRED)
                MESSAGE(FATAL_ERROR "${ZMQ_DIR_MESSAGE}")
        ENDIF (ZMQ_FIND_REQUIRED)	
ENDIF (NOT ZMQ_FOUND)

MARK_AS_ADVANCED(
    ZMQ_LIBRARIES
)