Statistics
| Branch: | Tag: | Revision:

root / host / lib / CMakeLists.txt @ 77c578fc

History | View | Annotate | Download (5.83 KB)

1
#
2
# Copyright 2010 Ettus Research LLC
3
#
4
# This program is free software: you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation, either version 3 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
#
17

    
18

    
19
########################################################################
20
# Setup Python
21
########################################################################
22
INCLUDE(FindPythonInterp)
23

    
24
MACRO(PYTHON_CHECK_MODULE module have)
25
    MESSAGE(STATUS "Checking for python module ${module}")
26
    EXECUTE_PROCESS(
27
        COMMAND ${PYTHON_EXECUTABLE} -c "import ${module}"
28
        RESULT_VARIABLE ${have}
29
    )
30
    IF(${have} EQUAL 0)
31
        MESSAGE(STATUS "Checking for python module ${module} - found")
32
        SET(${have} TRUE)
33
    ELSE(${have} EQUAL 0)
34
        MESSAGE(STATUS "Checking for python module ${module} - not found")
35
        SET(${have} FALSE)
36
    ENDIF(${have} EQUAL 0)
37
ENDMACRO(PYTHON_CHECK_MODULE)
38

    
39
PYTHON_CHECK_MODULE("Cheetah" HAVE_PYTHON_MODULE_CHEETAH)
40

    
41
IF(NOT HAVE_PYTHON_MODULE_CHEETAH)
42
    MESSAGE(FATAL_ERROR "Error: Cheetah Templates needed for pre-build generation.")
43
ENDIF(NOT HAVE_PYTHON_MODULE_CHEETAH)
44

    
45
########################################################################
46
# Create a list of libuhd sources
47
########################################################################
48
SET(libuhd_sources
49
    device.cpp
50
    gain_handler.cpp
51
    load_modules.cpp
52
    types.cpp
53
    wax.cpp
54
    transport/convert_types.cpp
55
    transport/if_addrs.cpp
56
    transport/udp_simple.cpp
57
    usrp/dboard/db_basic_and_lf.cpp
58
    usrp/dboard/db_rfx.cpp
59
    usrp/dboard_base.cpp
60
    usrp/simple_usrp.cpp
61
    usrp/dboard_manager.cpp
62
    usrp/tune_helper.cpp
63
)
64

    
65
########################################################################
66
# Generate Files
67
########################################################################
68
MACRO(UHD_PYTHON_GEN_SOURCE_FILE pyfile outfile)
69
    ADD_CUSTOM_COMMAND(
70
        OUTPUT ${outfile} DEPENDS ${pyfile}
71
        COMMAND ${PYTHON_EXECUTABLE} ${pyfile} ${outfile}
72
        COMMENT "Generating ${outfile}"
73
    )
74
    LIST(APPEND libuhd_sources ${outfile})
75
ENDMACRO(UHD_PYTHON_GEN_SOURCE_FILE)
76

    
77
UHD_PYTHON_GEN_SOURCE_FILE(
78
    ${CMAKE_CURRENT_SOURCE_DIR}/transport/gen_vrt.py
79
    ${CMAKE_CURRENT_BINARY_DIR}/transport/vrt.cpp
80
)
81

    
82
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/ic_reg_maps)
83

    
84
UHD_PYTHON_GEN_SOURCE_FILE(
85
    ${CMAKE_CURRENT_SOURCE_DIR}/ic_reg_maps/gen_adf4360_regs.py
86
    ${CMAKE_CURRENT_BINARY_DIR}/ic_reg_maps/adf4360_regs.hpp
87
)
88

    
89
UHD_PYTHON_GEN_SOURCE_FILE(
90
    ${CMAKE_CURRENT_SOURCE_DIR}/ic_reg_maps/gen_ad9510_regs.py
91
    ${CMAKE_CURRENT_BINARY_DIR}/ic_reg_maps/ad9510_regs.hpp
92
)
93

    
94
UHD_PYTHON_GEN_SOURCE_FILE(
95
    ${CMAKE_CURRENT_SOURCE_DIR}/ic_reg_maps/gen_ad9777_regs.py
96
    ${CMAKE_CURRENT_BINARY_DIR}/ic_reg_maps/ad9777_regs.hpp
97
)
98

    
99

    
100
########################################################################
101
# Add usrp2 sources
102
########################################################################
103
LIST(APPEND libuhd_sources
104
    usrp/usrp2/clock_control.cpp
105
    usrp/usrp2/dboard_impl.cpp
106
    usrp/usrp2/dboard_iface.cpp
107
    usrp/usrp2/dsp_impl.cpp
108
    usrp/usrp2/io_impl.cpp
109
    usrp/usrp2/mboard_impl.cpp
110
    usrp/usrp2/usrp2_iface.cpp
111
    usrp/usrp2/usrp2_impl.cpp
112
)
113

    
114
########################################################################
115
# Conditionally add the udp sources
116
########################################################################
117
LIST(APPEND libuhd_sources
118
    transport/udp_zero_copy_asio.cpp
119
)
120

    
121
########################################################################
122
# Setup defines for module loading
123
########################################################################
124
MESSAGE(STATUS "Configuring module loading...")
125

    
126
INCLUDE(CheckIncludeFileCXX)
127
CHECK_INCLUDE_FILE_CXX(dlfcn.h HAVE_DLFCN_H)
128
CHECK_INCLUDE_FILE_CXX(windows.h HAVE_WINDOWS_H)
129

    
130
IF(HAVE_DLFCN_H)
131
    MESSAGE(STATUS "  Module loading supported through dlopen.")
132
    ADD_DEFINITIONS(-DHAVE_DLFCN_H)
133
ELSEIF(HAVE_WINDOWS_H)
134
    MESSAGE(STATUS "  Module loading supported through LoadLibrary.")
135
    ADD_DEFINITIONS(-DHAVE_WINDOWS_H)
136
ELSE(HAVE_DLFCN_H)
137
    MESSAGE(STATUS "  Module loading not supported.")
138
ENDIF(HAVE_DLFCN_H)
139

    
140
########################################################################
141
# Setup defines for interface address discovery
142
########################################################################
143
MESSAGE(STATUS "Configuring interface address discovery...")
144

    
145
INCLUDE(CheckIncludeFileCXX)
146
CHECK_INCLUDE_FILE_CXX(ifaddrs.h HAVE_IFADDRS_H)
147
CHECK_INCLUDE_FILE_CXX(winsock2.h HAVE_WINSOCK2_H)
148

    
149
IF(HAVE_IFADDRS_H)
150
    MESSAGE(STATUS "  Interface address discovery supported through getifaddrs.")
151
    ADD_DEFINITIONS(-DHAVE_IFADDRS_H)
152
ELSEIF(HAVE_WINSOCK2_H)
153
    MESSAGE(STATUS "  Interface address discovery supported through SIO_GET_INTERFACE_LIST.")
154
    ADD_DEFINITIONS(-DHAVE_WINSOCK2_H)
155
ELSE(HAVE_IFADDRS_H)
156
    MESSAGE(STATUS "  Interface address discovery not supported.")
157
ENDIF(HAVE_IFADDRS_H)
158

    
159
########################################################################
160
# Setup libuhd library
161
########################################################################
162
ADD_LIBRARY(uhd SHARED ${libuhd_sources})
163

    
164
TARGET_LINK_LIBRARIES(uhd ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
165

    
166
SET_TARGET_PROPERTIES(uhd PROPERTIES DEFINE_SYMBOL "UHD_DLL_EXPORTS")
167

    
168
INSTALL(TARGETS uhd
169
    LIBRARY DESTINATION ${LIBRARY_DIR} # .so file
170
    ARCHIVE DESTINATION ${LIBRARY_DIR} # .lib file
171
    RUNTIME DESTINATION ${LIBRARY_DIR} # .dll file
172
)