summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/controlport/CMakeLists.txt
blob: c9bdeb949efc400111104af2a5a1850f22baa5e9 (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
94
95
96
97
98
99
100
101
102
103
104
105
# Copyright 2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.

if(ENABLE_GR_CTRLPORT)

# Keep track of the number of backends ControlPort supports
SET(CTRLPORT_BACKENDS 0)

# Add definition so we can compile in ControlPort to the blocks.
add_definitions(-DGR_CTRLPORT)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

list(APPEND gnuradio_ctrlport_sources
  ${CMAKE_CURRENT_SOURCE_DIR}/rpcmanager.cc
  ${CMAKE_CURRENT_SOURCE_DIR}/rpcserver_aggregator.cc
  ${CMAKE_CURRENT_SOURCE_DIR}/rpcserver_booter_aggregator.cc
  ${CMAKE_CURRENT_SOURCE_DIR}/rpcserver_selector.cc
)


OPTION(ENABLE_CTRLPORT_THRIFT "Enable ControlPort Thrift support" ON)

if(ENABLE_CTRLPORT_THRIFT)

# Look if Thrift is installed and use it as a ControlPort backend.
FIND_PACKAGE(Thrift)

if(THRIFT_FOUND)

include_directories(${THRIFT_INCLUDE_DIRS})
MATH(EXPR CTRLPORT_BACKENDS "${CTRLPORT_BACKENDS} + 1")

# Indicate thrift as an installed backend in the cmake summary.
message(STATUS "Found and enabling Thrift backend to ControlPort")
GR_APPEND_SUBCOMPONENT("thrift")

# Run Thrrift To compile C++ and Python files
message(STATUS "Running thrift to build C++ bindings")
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/)
EXECUTE_PROCESS(
   COMMAND ${THRIFT_BIN} --gen cpp -out ${CMAKE_CURRENT_BINARY_DIR}/thrift/ ${CMAKE_CURRENT_SOURCE_DIR}/thrift/gnuradio.thrift
   OUTPUT_VARIABLE THRIFT_CPP_OUTPUT
   ERROR_VARIABLE THRIFT_CPP_ERROR
   )

list(APPEND gnuradio_ctrlport_sources
  ${CMAKE_CURRENT_SOURCE_DIR}/thrift/rpcserver_thrift.cc
  ${CMAKE_CURRENT_SOURCE_DIR}/thrift/rpcpmtconverters_thrift.cc
  ${CMAKE_CURRENT_SOURCE_DIR}/thrift/rpcserver_booter_thrift.cc
  ${CMAKE_CURRENT_SOURCE_DIR}/thrift/thrift_application_base.cc
)

# add files built by compiling gnuradio.thrift
list(APPEND gnuradio_ctrlport_sources
  ${CMAKE_CURRENT_BINARY_DIR}/thrift/gnuradio_types.cpp
  ${CMAKE_CURRENT_BINARY_DIR}/thrift/gnuradio_constants.cpp
  ${CMAKE_CURRENT_BINARY_DIR}/thrift/ControlPort.cpp
)

# Add  required libraries here
list(APPEND gnuradio_runtime_libs
  ${THRIFT_LIBRARIES}
)

# Add install rule to move example Thrift configuration file into
# $prefix/etc/gnuradio
install(
  FILES ${CMAKE_CURRENT_SOURCE_DIR}/thrift/thrift.conf.example
  DESTINATION ${SYSCONFDIR}/${CMAKE_PROJECT_NAME}
  COMPONENT "runtime_runtime"
)

endif(THRIFT_FOUND)
endif(ENABLE_CTRLPORT_THRIFT)

########################################################################
# Add controlport stuff to gnuradio-runtime
########################################################################

include_directories(${CMAKE_CURRENT_BINARY_DIR})

# Save the number of backends for testing against later
set(
  CTRLPORT_BACKENDS ${CTRLPORT_BACKENDS}
  CACHE INTERNAL "Number of ControlPort backends available"
)

endif(ENABLE_GR_CTRLPORT)