aboutsummaryrefslogtreecommitdiff
path: root/cmake/macros/FindZMQ.cmake
blob: b0d7c56489fd76309f2bb0d4fe8bb738e9f99df9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#
# Find the ZMQ includes and library
# 

# This module defines
# ZMQ_INCLUDE_DIR, where to find zmq.h
# ZMQ_LIBRARY, the library needed to use ZMQ
# ZMQ_FOUND, if false, you cannot build anything that requires ZMQ.

set(ZMQ_FOUND 0)

if (PLATFORM EQUAL 64)
  set(ZMQ_REGISTRY_PATH
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ (x64);DisplayIcon]"
    )
else()
  set(ZMQ_REGISTRY_PATH
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayIcon]"
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayIcon]"
    )
endif()

find_path(ZMQ_ROOT_DIR
  NAMES
    include/zmq.h
  HINTS
    ${ZMQ_REGISTRY_PATH}
  PATHS
    /usr
    /usr/local
)

find_path(ZMQ_INCLUDE_DIR zmq.h ${ZMQ_ROOT_DIR}/include)

if (MSVC)
  # Read registry key holding version
  if (PLATFORM EQUAL 64)
    get_filename_component(ZMQ_NAME "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ (x64);DisplayVersion]" NAME)
  else()
    get_filename_component(ZMQ_NAME "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayVersion]" NAME)
    if (${ZMQ_NAME} MATCHES "registry") # if key was not found, the string "registry" is returned
      get_filename_component(ZMQ_NAME "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayVersion]" NAME)
    endif()
  endif()

  # Replace dots with underscores
  string(REGEX REPLACE "\\." "_" ZMQ_NAME ${ZMQ_NAME})

  # Get Visual studio version number
  string(REGEX REPLACE "Visual Studio ([0-9]+).*" "\\1" ZMQ_VS_VERSION ${CMAKE_GENERATOR})

  # Format ZMQ library file name
  set(ZMQ_LIBRARY_NAME "libzmq-v${ZMQ_VS_VERSION}0-mt-${ZMQ_NAME}")
endif()

find_library(ZMQ_LIBRARY
  NAMES
    zmq
    ${ZMQ_LIBRARY_NAME}
  PATHS
    /lib
    /usr/lib
    /usr/local/lib
    "${ZMQ_ROOT_DIR}/lib"
)

if (ZMQ_INCLUDE_DIR AND ZMQ_LIBRARY)
  set(ZMQ_FOUND 1)
  message(STATUS "Found ZMQ library: ${ZMQ_LIBRARY}")
  message(STATUS "Found ZMQ headers: ${ZMQ_INCLUDE_DIR}")
else()
  message(FATAL_ERROR "Could not find ZMQ libraries/headers! Please install ZMQ with libraries and headers")
endif()

# show the ZMQ_INCLUDE_DIR and ZMQ_LIBRARY variables only in the advanced view
mark_as_advanced(ZMQ_ROOT_DIR ZMQ_INCLUDE_DIR ZMQ_LIBRARY ZMQ_FOUND)