Statistics
| Branch: | Tag: | Revision:

root / host / lib / CMakeLists.txt @ ca641773

History | View | Annotate | Download (5.07 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
# Setup Python
20
########################################################################
21
INCLUDE(FindPythonInterp)
22

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

    
38
PYTHON_CHECK_MODULE("Cheetah" HAVE_PYTHON_MODULE_CHEETAH)
39

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

    
44
########################################################################
45
# Helpful Macros
46
########################################################################
47
MACRO(LIBUHD_APPEND_SOURCES)
48
    LIST(APPEND libuhd_sources ${ARGV})
49
ENDMACRO(LIBUHD_APPEND_SOURCES)
50

    
51
MACRO(LIBUHD_PYTHON_GEN_SOURCE pyfile outfile)
52
    #ensure that the directory exists for outfile
53
    GET_FILENAME_COMPONENT(outfile_dir ${outfile} PATH)
54
    FILE(MAKE_DIRECTORY ${outfile_dir})
55

    
56
    #make the outfile depend on the python script
57
    ADD_CUSTOM_COMMAND(
58
        OUTPUT ${outfile} DEPENDS ${pyfile}
59
        COMMAND ${PYTHON_EXECUTABLE} ${pyfile} ${outfile}
60
        COMMENT "Generating ${outfile}"
61
    )
62

    
63
    #make libuhd depend on the outfile
64
    LIBUHD_APPEND_SOURCES(${outfile})
65
ENDMACRO(LIBUHD_PYTHON_GEN_SOURCE)
66

    
67
########################################################################
68
# Include CMakeLists.txt from subdirectories
69
########################################################################
70
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/ic_reg_maps/CMakeLists.txt)
71
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/transport/CMakeLists.txt)
72
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/usrp/CMakeLists.txt)
73
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/usrp/dboard/CMakeLists.txt)
74
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/usrp/usrp2/CMakeLists.txt)
75

    
76
########################################################################
77
# Setup defines for process scheduling
78
########################################################################
79
MESSAGE(STATUS "Configuring process scheduling...")
80

    
81
INCLUDE(CheckIncludeFileCXX)
82
CHECK_INCLUDE_FILE_CXX(sched.h HAVE_SCHED_H)
83

    
84
IF(HAVE_SCHED_H)
85
    MESSAGE(STATUS "  Process scheduling supported through sched_setscheduler.")
86
    ADD_DEFINITIONS(-DHAVE_SCHED_H)
87
ELSE(HAVE_SCHED_H)
88
    MESSAGE(STATUS "  Process scheduling not supported.")
89
ENDIF(HAVE_SCHED_H)
90

    
91
########################################################################
92
# Setup defines for module loading
93
########################################################################
94
MESSAGE(STATUS "Configuring module loading...")
95

    
96
INCLUDE(CheckIncludeFileCXX)
97
CHECK_INCLUDE_FILE_CXX(dlfcn.h HAVE_DLFCN_H)
98
CHECK_INCLUDE_FILE_CXX(windows.h HAVE_WINDOWS_H)
99

    
100
IF(HAVE_DLFCN_H)
101
    MESSAGE(STATUS "  Module loading supported through dlopen.")
102
    ADD_DEFINITIONS(-DHAVE_DLFCN_H)
103
ELSEIF(HAVE_WINDOWS_H)
104
    MESSAGE(STATUS "  Module loading supported through LoadLibrary.")
105
    ADD_DEFINITIONS(-DHAVE_WINDOWS_H)
106
ELSE(HAVE_DLFCN_H)
107
    MESSAGE(STATUS "  Module loading not supported.")
108
ENDIF(HAVE_DLFCN_H)
109

    
110
########################################################################
111
# Append to the list of sources for lib uhd
112
########################################################################
113
LIBUHD_APPEND_SOURCES(
114
    ${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
115
    ${CMAKE_CURRENT_SOURCE_DIR}/gain_handler.cpp
116
    ${CMAKE_CURRENT_SOURCE_DIR}/load_modules.cpp
117
    ${CMAKE_CURRENT_SOURCE_DIR}/sched.cpp
118
    ${CMAKE_CURRENT_SOURCE_DIR}/types.cpp
119
    ${CMAKE_CURRENT_SOURCE_DIR}/utils.cpp
120
    ${CMAKE_CURRENT_SOURCE_DIR}/wax.cpp
121
)
122

    
123
########################################################################
124
# Setup libuhd library
125
########################################################################
126
ADD_LIBRARY(uhd SHARED ${libuhd_sources})
127

    
128
TARGET_LINK_LIBRARIES(uhd ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
129

    
130
SET_TARGET_PROPERTIES(uhd PROPERTIES DEFINE_SYMBOL "UHD_DLL_EXPORTS")
131

    
132
INSTALL(TARGETS uhd
133
    LIBRARY DESTINATION ${LIBRARY_DIR} # .so file
134
    ARCHIVE DESTINATION ${LIBRARY_DIR} # .lib file
135
    RUNTIME DESTINATION ${LIBRARY_DIR} # .dll file
136
)