blob: 970a9c4c31982bff80b9ca7a47ec790bce269b74 (
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
INCLUDE(FindPkgConfig)
PKG_CHECK_MODULES(PC_THRIFT thrift)
set(THRIFT_REQ_VERSION "0.9.2")
# If pkg-config found Thrift and it doesn't meet our version
# requirement, warn and exit -- does not cause an error; just doesn't
# enable Thrift.
if(PC_THRIFT_FOUND AND PC_THRIFT_VERSION VERSION_LESS ${THRIFT_REQ_VERSION})
message(STATUS "Could not find appropriate version of Thrift: ${PC_THRIFT_VERSION} < ${THRIFT_REQ_VERSION}")
return()
endif(PC_THRIFT_FOUND AND PC_THRIFT_VERSION VERSION_LESS ${THRIFT_REQ_VERSION})
# Else, look for it ourselves
FIND_PATH(THRIFT_INCLUDE_DIRS
NAMES thrift/Thrift.h
HINTS ${PC_THRIFT_INCLUDE_DIRS}
${CMAKE_INSTALL_PREFIX}/include
PATHS
/usr/local/include
/usr/include
)
FIND_LIBRARY(THRIFT_LIBRARIES
NAMES thrift
HINTS ${PC_THRIFT_LIBDIR}
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
PATHS
${THRIFT_INCLUDE_DIRS}/../lib
/usr/local/lib
/usr/lib
)
# Get the thrift binary to build our files during cmake
if (CMAKE_CROSSCOMPILING)
FIND_PROGRAM(THRIFT_BIN thrift NO_CMAKE_FIND_ROOT_PATH)
else (CMAKE_CROSSCOMPILING)
FIND_PROGRAM(THRIFT_BIN thrift)
endif(CMAKE_CROSSCOMPILING)
# Use binary to get version string and test against THRIFT_REQ_VERSION
EXECUTE_PROCESS(
COMMAND ${THRIFT_BIN} --version
OUTPUT_VARIABLE THRIFT_VERSION
ERROR_VARIABLE THRIFT_VERSION_ERROR
)
if(NOT THRIFT_BIN)
message(STATUS "Binary 'thrift' not found.")
return()
endif(NOT THRIFT_BIN)
STRING(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+"
THRIFT_VERSION "${THRIFT_VERSION}")
if(THRIFT_VERSION VERSION_LESS THRIFT_REQ_VERSION)
message(STATUS "Could not find appropriate version of Thrift: ${THRIFT_VERSION} < ${THRIFT_REQ_VERSION}")
return()
endif(THRIFT_VERSION VERSION_LESS THRIFT_REQ_VERSION)
# Check that Thrift for Python is available
IF (CMAKE_CROSSCOMPILING)
SET(PYTHON_THRIFT_FOUND TRUE)
ELSE (CMAKE_CROSSCOMPILING)
GR_PYTHON_CHECK_MODULE("Thrift" thrift "1" PYTHON_THRIFT_FOUND)
ENDIF (CMAKE_CROSSCOMPILING)
# Set to found if we've made it this far
if(THRIFT_INCLUDE_DIRS AND THRIFT_LIBRARIES AND PYTHON_THRIFT_FOUND)
set(THRIFT_FOUND TRUE CACHE BOOL "If Thift has been found")
endif(THRIFT_INCLUDE_DIRS AND THRIFT_LIBRARIES AND PYTHON_THRIFT_FOUND)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(THRIFT DEFAULT_MSG
THRIFT_LIBRARIES THRIFT_INCLUDE_DIRS
THRIFT_BIN PYTHON_THRIFT_FOUND THRIFT_FOUND
)
MARK_AS_ADVANCED(
THRIFT_LIBRARIES THRIFT_INCLUDE_DIRS
THRIFT_BIN PYTHON_THRIFT_FOUND THRIFT_FOUND
)
if (THRIFT_FOUND AND NOT TARGET Thrift::thrift)
add_library(Thrift::thrift INTERFACE IMPORTED)
set_target_properties(Thrift::thrift PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${THRIFT_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${THRIFT_LIBRARIES}"
)
endif()
|