Statistics
| Branch: | Tag: | Revision:

root / host / CMakeLists.txt @ fdd80e54

History | View | Annotate | Download (5.67 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
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
19
PROJECT(UHD)
20
ENABLE_TESTING()
21

    
22
########################################################################
23
# Setup CPack
24
########################################################################
25
SET(CPACK_PACKAGE_VERSION_MAJOR 0)
26
SET(CPACK_PACKAGE_VERSION_MINOR 0)
27
SET(CPACK_PACKAGE_VERSION_PATCH 0)
28
SET(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README)
29
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
30
INCLUDE(CPack) #include after setting vars
31

    
32
########################################################################
33
# Install Dirs
34
########################################################################
35
SET(RUNTIME_DIR bin)
36
SET(LIBRARY_DIR lib)
37
SET(INCLUDE_DIR include)
38
SET(PKG_DATA_DIR share/uhd)
39
SET(PKG_DOC_DIR share/doc/uhd)
40
MESSAGE(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}")
41

    
42
########################################################################
43
# Local Include Dir
44
########################################################################
45
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
46

    
47
########################################################################
48
# Optional Compiler Flags
49
########################################################################
50
INCLUDE(CheckCXXCompilerFlag)
51
MACRO(UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG flag have)
52
    CHECK_CXX_COMPILER_FLAG(${flag} ${have})
53
    IF(${have})
54
        ADD_DEFINITIONS(${flag})
55
    ENDIF(${have})
56
ENDMACRO(UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG)
57

    
58
IF(UNIX)
59
    UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-Wall      HAVE_WALL)
60
    UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-Wextra    HAVE_WEXTRA)
61
    UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-pedantic  HAVE_PEDANTIC)
62
    UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-ansi      HAVE_ANSI)
63
    #only export symbols that are declared to be part of the uhd api:
64
    UHD_ADD_OPTIONAL_CXX_COMPILER_FLAG(-fvisibility=hidden HAVE_VISIBILITY_HIDDEN)
65
ENDIF(UNIX)
66

    
67
IF(WIN32)
68
    ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501) #minimum version required is windows xp
69
    ADD_DEFINITIONS(-DNOMINMAX) #disables stupidity and enables std::min and std::max
70
    ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS) #avoid warnings from boost::split
71
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) #avoid warnings from std::getenv
72
    ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK) #setup boost auto-linking in msvc
73
ENDIF(WIN32)
74

    
75
########################################################################
76
# Setup Boost
77
########################################################################
78
SET(Boost_ADDITIONAL_VERSIONS "1.42.0" "1.42")
79
FIND_PACKAGE(Boost 1.36 REQUIRED COMPONENTS
80
    date_time
81
    filesystem
82
    program_options
83
    regex
84
    system
85
    thread
86
    unit_test_framework
87
)
88

    
89
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
90
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
91

    
92
########################################################################
93
# Setup Endianess
94
########################################################################
95
INCLUDE(TestBigEndian)
96
TEST_BIG_ENDIAN(HAVE_BIG_ENDIAN)
97
IF(HAVE_BIG_ENDIAN)
98
    ADD_DEFINITIONS(-DHAVE_BIG_ENDIAN)
99
ENDIF(HAVE_BIG_ENDIAN)
100

    
101
########################################################################
102
# Create Uninstall Target
103
########################################################################
104
CONFIGURE_FILE(
105
    ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in
106
    ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
107
@ONLY)
108

    
109
ADD_CUSTOM_TARGET(uninstall
110
  ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
111
)
112

    
113
########################################################################
114
# Create Pkg Config File
115
########################################################################
116
CONFIGURE_FILE(
117
    ${CMAKE_CURRENT_SOURCE_DIR}/uhd.pc.in
118
    ${CMAKE_CURRENT_BINARY_DIR}/uhd.pc
119
@ONLY)
120

    
121
INSTALL(
122
    FILES ${CMAKE_CURRENT_BINARY_DIR}/uhd.pc
123
    DESTINATION ${LIBRARY_DIR}/pkgconfig
124
)
125

    
126
########################################################################
127
# Setup Docs
128
########################################################################
129
INCLUDE(FindDoxygen)
130

    
131
IF(DOXYGEN_FOUND)
132
    SET(CMAKE_CURRENT_BINARY_DIR_DOXYGEN ${CMAKE_CURRENT_BINARY_DIR}/doxygen)
133
    CONFIGURE_FILE(
134
        ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
135
        ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
136
    @ONLY)
137
    ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR_DOXYGEN}
138
        COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
139
        COMMENT "Generating documentation with doxygen"
140
    )
141
    ADD_CUSTOM_TARGET(docs ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR_DOXYGEN})
142
    INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR_DOXYGEN} DESTINATION ${PKG_DOC_DIR})
143
ENDIF(DOXYGEN_FOUND)
144

    
145
INSTALL(FILES
146
    ${CMAKE_CURRENT_SOURCE_DIR}/README
147
    ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE
148
    ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS
149
    DESTINATION ${PKG_DOC_DIR}
150
)
151

    
152
########################################################################
153
# Add the subdirectories
154
########################################################################
155
ADD_SUBDIRECTORY(examples)
156
ADD_SUBDIRECTORY(include)
157
ADD_SUBDIRECTORY(lib)
158
ADD_SUBDIRECTORY(test)
159
ADD_SUBDIRECTORY(utils)