diff options
Diffstat (limited to 'host/cmake')
| -rw-r--r-- | host/cmake/Modules/FindDocutils.cmake | 21 | ||||
| -rw-r--r-- | host/cmake/Modules/FindGit.cmake | 46 | ||||
| -rw-r--r-- | host/cmake/Modules/FindUSB1.cmake | 38 | ||||
| -rw-r--r-- | host/cmake/Modules/UHDComponent.cmake | 77 | ||||
| -rw-r--r-- | host/cmake/Modules/UHDPackage.cmake | 183 | ||||
| -rw-r--r-- | host/cmake/Modules/UHDPython.cmake | 86 | ||||
| -rw-r--r-- | host/cmake/Modules/UHDVersion.cmake | 75 | ||||
| -rw-r--r-- | host/cmake/Toolchains/arm_cortex_a8_cross.cmake | 20 | ||||
| -rw-r--r-- | host/cmake/Toolchains/arm_cortex_a8_native.cmake | 8 | ||||
| -rw-r--r-- | host/cmake/cmake_uninstall.cmake.in | 23 | ||||
| -rwxr-xr-x | host/cmake/debian/postinst.in | 23 | ||||
| -rwxr-xr-x | host/cmake/debian/postrm.in | 21 | ||||
| -rwxr-xr-x | host/cmake/debian/preinst.in | 21 | ||||
| -rwxr-xr-x | host/cmake/debian/prerm.in | 23 | ||||
| -rw-r--r-- | host/cmake/msvc/inttypes.h | 301 | ||||
| -rw-r--r-- | host/cmake/msvc/stdint.h | 226 | ||||
| -rwxr-xr-x | host/cmake/redhat/post_install.in | 21 | ||||
| -rwxr-xr-x | host/cmake/redhat/post_uninstall.in | 19 | ||||
| -rwxr-xr-x | host/cmake/redhat/pre_install.in | 19 | ||||
| -rwxr-xr-x | host/cmake/redhat/pre_uninstall.in | 21 | 
20 files changed, 1272 insertions, 0 deletions
| diff --git a/host/cmake/Modules/FindDocutils.cmake b/host/cmake/Modules/FindDocutils.cmake new file mode 100644 index 000000000..25d1349e2 --- /dev/null +++ b/host/cmake/Modules/FindDocutils.cmake @@ -0,0 +1,21 @@ +# +# Copyright 2011-2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +FIND_PROGRAM(RST2HTML_EXECUTABLE NAMES rst2html rst2html.py) +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Docutils DEFAULT_MSG RST2HTML_EXECUTABLE) diff --git a/host/cmake/Modules/FindGit.cmake b/host/cmake/Modules/FindGit.cmake new file mode 100644 index 000000000..2d8214287 --- /dev/null +++ b/host/cmake/Modules/FindGit.cmake @@ -0,0 +1,46 @@ +# The module defines the following variables: +#   GIT_EXECUTABLE - path to git command line client +#   GIT_FOUND - true if the command line client was found +# Example usage: +#   find_package(Git) +#   if(GIT_FOUND) +#     message("git found: ${GIT_EXECUTABLE}") +#   endif() + +#============================================================================= +# Copyright 2010 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +#  License text for the above reference.) + +# Look for 'git' or 'eg' (easy git) +# +set(git_names git eg) + +# Prefer .cmd variants on Windows unless running in a Makefile +# in the MSYS shell. +# +if(WIN32) +  if(NOT CMAKE_GENERATOR MATCHES "MSYS") +    set(git_names git.cmd git eg.cmd eg) +  endif() +endif() + +find_program(GIT_EXECUTABLE +  NAMES ${git_names} +  DOC "git command line client" +  ) +mark_as_advanced(GIT_EXECUTABLE) + +# Handle the QUIETLY and REQUIRED arguments and set GIT_FOUND to TRUE if +# all listed variables are TRUE + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Git DEFAULT_MSG GIT_EXECUTABLE) diff --git a/host/cmake/Modules/FindUSB1.cmake b/host/cmake/Modules/FindUSB1.cmake new file mode 100644 index 000000000..8bfc2f975 --- /dev/null +++ b/host/cmake/Modules/FindUSB1.cmake @@ -0,0 +1,38 @@ + +#find libusb 1.0 on various systems +#sets LIBUSB_FOUND, LIBUSB_LIBRARIES, LIBUSB_INCLUDE_DIRS +#override LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIRS to manually set + +INCLUDE(FindPkgConfig) +PKG_CHECK_MODULES(PC_LIBUSB QUIET libusb-1.0) + +FIND_PATH(LIBUSB_INCLUDE_DIRS +    NAMES libusb.h +    HINTS $ENV{LIBUSB_DIR}/include ${PC_LIBUSB_INCLUDEDIR} +    PATHS /usr/local/include/libusb-1.0 /usr/local/include +    /usr/include/libusb-1.0 /usr/include +    /opt/local/include/libusb-1.0 + +    #non-conforming naming convention, +    #backwards compatible with old script +    ${LIBUSB_INCLUDE_DIR} +) + +#standard library name for libusb-1.0 +set(libusb1_library_names usb-1.0) + +#libusb-1.0 compatible library on freebsd +if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") +    list(APPEND libusb1_library_names usb) +endif() + +FIND_LIBRARY(LIBUSB_LIBRARIES +    NAMES ${libusb1_library_names} +    HINTS $ENV{LIBUSB_DIR}/lib ${PC_LIBUSB_LIBDIR} +    PATHS /usr/local/lib /usr/lib /opt/local/lib +) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIRS) +MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIRS LIBUSB_LIBRARIES) + diff --git a/host/cmake/Modules/UHDComponent.cmake b/host/cmake/Modules/UHDComponent.cmake new file mode 100644 index 000000000..52b7450d5 --- /dev/null +++ b/host/cmake/Modules/UHDComponent.cmake @@ -0,0 +1,77 @@ +# +# Copyright 2010-2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +SET(_uhd_enabled_components "" CACHE INTERNAL "" FORCE) +SET(_uhd_disabled_components "" CACHE INTERNAL "" FORCE) + +######################################################################## +# Register a component into the system +#  - name the component string name +#  - var the global enable variable +#  - enb the default enable setting +#  - deps a list of dependencies +#  - dis the default disable setting +######################################################################## +MACRO(LIBUHD_REGISTER_COMPONENT name var enb deps dis) +    MESSAGE(STATUS "") +    MESSAGE(STATUS "Configuring ${name} support...") +    FOREACH(dep ${deps}) +        MESSAGE(STATUS "  Dependency ${dep} = ${${dep}}") +    ENDFOREACH(dep) + +    #setup the dependent option for this component +    INCLUDE(CMakeDependentOption) +    CMAKE_DEPENDENT_OPTION(${var} "enable ${name} support" ${enb} "${deps}" ${dis}) + +    #append the component into one of the lists +    IF(${var}) +        MESSAGE(STATUS "  Enabling ${name} support.") +        LIST(APPEND _uhd_enabled_components ${name}) +    ELSE(${var}) +        MESSAGE(STATUS "  Disabling ${name} support.") +        LIST(APPEND _uhd_disabled_components ${name}) +    ENDIF(${var}) +    MESSAGE(STATUS "  Override with -D${var}=ON/OFF") + +    #make components lists into global variables +    SET(_uhd_enabled_components ${_uhd_enabled_components} CACHE INTERNAL "" FORCE) +    SET(_uhd_disabled_components ${_uhd_disabled_components} CACHE INTERNAL "" FORCE) +ENDMACRO(LIBUHD_REGISTER_COMPONENT) + +######################################################################## +# Print the registered component summary +######################################################################## +FUNCTION(UHD_PRINT_COMPONENT_SUMMARY) +    MESSAGE(STATUS "") +    MESSAGE(STATUS "######################################################") +    MESSAGE(STATUS "# UHD enabled components                              ") +    MESSAGE(STATUS "######################################################") +    FOREACH(comp ${_uhd_enabled_components}) +        MESSAGE(STATUS "  * ${comp}") +    ENDFOREACH(comp) + +    MESSAGE(STATUS "") +    MESSAGE(STATUS "######################################################") +    MESSAGE(STATUS "# UHD disabled components                             ") +    MESSAGE(STATUS "######################################################") +    FOREACH(comp ${_uhd_disabled_components}) +        MESSAGE(STATUS "  * ${comp}") +    ENDFOREACH(comp) + +    MESSAGE(STATUS "") +ENDFUNCTION(UHD_PRINT_COMPONENT_SUMMARY) diff --git a/host/cmake/Modules/UHDPackage.cmake b/host/cmake/Modules/UHDPackage.cmake new file mode 100644 index 000000000..432859ccc --- /dev/null +++ b/host/cmake/Modules/UHDPackage.cmake @@ -0,0 +1,183 @@ +# +# Copyright 2010-2012 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +INCLUDE(UHDVersion) #sets version information + +SET(UHD_RELEASE_MODE "${UHD_RELEASE_MODE}" CACHE BOOL "set UHD to release mode to build installers") + +######################################################################## +# Setup additional defines for OS types +######################################################################## +IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") +    SET(LINUX TRUE) +ENDIF() + +IF(LINUX AND EXISTS "/etc/debian_version") +    SET(DEBIAN TRUE) +ENDIF() + +IF(LINUX AND EXISTS "/etc/redhat-release") +    SET(REDHAT TRUE) +ENDIF() + +######################################################################## +# Set generator type for recognized systems +######################################################################## +IF(CPACK_GENERATOR) +    #already set +ELSEIF(APPLE) +    SET(CPACK_GENERATOR PackageMaker) +ELSEIF(WIN32) +    SET(CPACK_GENERATOR NSIS) +ELSEIF(DEBIAN) +    SET(CPACK_GENERATOR DEB) +ELSEIF(REDHAT) +    SET(CPACK_GENERATOR RPM) +ELSE() +    SET(CPACK_GENERATOR TGZ) +ENDIF() + +######################################################################## +# Setup package file name +######################################################################## +FIND_PROGRAM(LSB_RELEASE_EXECUTABLE lsb_release) +IF((DEBIAN OR REDHAT) AND LSB_RELEASE_EXECUTABLE) + +    #extract system information by executing the commands +    EXECUTE_PROCESS( +        COMMAND ${LSB_RELEASE_EXECUTABLE} --short --id +        OUTPUT_VARIABLE LSB_ID OUTPUT_STRIP_TRAILING_WHITESPACE +    ) +    EXECUTE_PROCESS( +        COMMAND ${LSB_RELEASE_EXECUTABLE} --short --release +        OUTPUT_VARIABLE LSB_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE +    ) + +    #set a more sensible package name for this system +    SET(CPACK_PACKAGE_FILE_NAME "uhd_${UHD_VERSION}_${LSB_ID}-${LSB_RELEASE}-${CMAKE_SYSTEM_PROCESSOR}") + +ENDIF() + +IF(${CPACK_GENERATOR} STREQUAL NSIS) + +    ENABLE_LANGUAGE(C) + +    include(CheckTypeSize) +    check_type_size("void*[8]" BIT_WIDTH BUILTIN_TYPES_ONLY) +    SET(CPACK_PACKAGE_FILE_NAME "uhd_${UHD_VERSION}_Win${BIT_WIDTH}") + +    SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}") +ENDIF() + +######################################################################## +# Setup CPack General +######################################################################## +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Ettus Research - USRP Hardware Driver") +SET(CPACK_PACKAGE_VENDOR              "Ettus Research LLC") +SET(CPACK_PACKAGE_CONTACT             "Ettus Research <support@ettus.com>") +SET(CPACK_PACKAGE_VERSION "${UHD_VERSION}") +SET(CPACK_RESOURCE_FILE_WELCOME ${CMAKE_SOURCE_DIR}/README.txt) +SET(CPACK_RESOURCE_FILE_README ${CMAKE_SOURCE_DIR}/AUTHORS.txt) +SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt) + +######################################################################## +# Setup CPack Components +######################################################################## +SET(CPACK_COMPONENT_LIBRARIES_GROUP      "Development") +SET(CPACK_COMPONENT_HEADERS_GROUP        "Development") +SET(CPACK_COMPONENT_UTILITIES_GROUP      "Runtime") +SET(CPACK_COMPONENT_EXAMPLES_GROUP       "Runtime") +SET(CPACK_COMPONENT_TESTS_GROUP          "Runtime") +SET(CPACK_COMPONENT_MANUAL_GROUP         "Documentation") +SET(CPACK_COMPONENT_DOXYGEN_GROUP        "Documentation") +SET(CPACK_COMPONENT_README_GROUP         "Documentation") + +SET(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME      "Libraries") +SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME        "C++ Headers") +SET(CPACK_COMPONENT_UTILITIES_DISPLAY_NAME      "Utilities") +SET(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME       "Examples") +SET(CPACK_COMPONENT_TESTS_DISPLAY_NAME          "Unit Tests") +SET(CPACK_COMPONENT_MANUAL_DISPLAY_NAME         "Manual") +SET(CPACK_COMPONENT_DOXYGEN_DISPLAY_NAME        "Doxygen") +SET(CPACK_COMPONENT_README_DISPLAY_NAME         "Readme") +SET(CPACK_COMPONENT_IMAGES_DISPLAY_NAME         "Images") + +SET(CPACK_COMPONENT_LIBRARIES_DESCRIPTION     "Dynamic link library") +SET(CPACK_COMPONENT_HEADERS_DESCRIPTION       "C++ development headers") +SET(CPACK_COMPONENT_UTILITIES_DESCRIPTION     "Utility executables and python scripts") +SET(CPACK_COMPONENT_EXAMPLES_DESCRIPTION      "Example executables") +SET(CPACK_COMPONENT_TESTS_DESCRIPTION         "Unit test executables") +SET(CPACK_COMPONENT_MANUAL_DESCRIPTION        "Manual/application notes (rst and html)") +SET(CPACK_COMPONENT_DOXYGEN_DESCRIPTION       "API documentation (html)") +SET(CPACK_COMPONENT_README_DESCRIPTION        "Readme files (txt)") +SET(CPACK_COMPONENT_IMAGES_DESCRIPTION        "FPGA and firmware images") + +SET(CPACK_COMPONENT_README_REQUIRED TRUE) + +SET(CPACK_COMPONENT_UTILITIES_DEPENDS libraries) +SET(CPACK_COMPONENT_EXAMPLES_DEPENDS libraries) +SET(CPACK_COMPONENT_TESTS_DEPENDS libraries) + +SET(CPACK_COMPONENTS_ALL libraries headers utilities examples tests manual doxygen readme images) + +######################################################################## +# Setup CPack Debian +######################################################################## +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libusb-1.0-0, libboost-dev") +SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS "python, python-tk") +FOREACH(filename preinst postinst prerm postrm) +    LIST(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${CMAKE_BINARY_DIR}/debian/${filename}) +    FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/debian) +    CONFIGURE_FILE( +        ${CMAKE_SOURCE_DIR}/cmake/debian/${filename}.in +        ${CMAKE_BINARY_DIR}/debian/${filename} +    @ONLY) +ENDFOREACH(filename) + +######################################################################## +# Setup CPack RPM +######################################################################## +SET(CPACK_RPM_PACKAGE_REQUIRES "boost-devel, libusb1") + +FOREACH(filename post_install post_uninstall pre_install pre_uninstall) +    STRING(TOUPPER ${filename} filename_upper) +    LIST(APPEND CPACK_RPM_${filename_upper}_SCRIPT_FILE ${CMAKE_BINARY_DIR}/redhat/${filename}) +    FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/redhat) +    CONFIGURE_FILE( +        ${CMAKE_SOURCE_DIR}/cmake/redhat/${filename}.in +        ${CMAKE_BINARY_DIR}/redhat/${filename} +    @ONLY) +ENDFOREACH(filename) + +######################################################################## +# Setup CPack NSIS +######################################################################## +SET(CPACK_NSIS_MODIFY_PATH ON) + +SET(HLKM_ENV "\\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\"") + +SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " +    WriteRegStr HKLM ${HLKM_ENV} \\\"UHD_PKG_DATA_PATH\\\" \\\"$INSTDIR\\\\share\\\\uhd\\\" +") + +SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " +    DeleteRegValue HKLM ${HLKM_ENV} \\\"UHD_PKG_DATA_PATH\\\" +") + +######################################################################## +INCLUDE(CPack) #include after setting vars diff --git a/host/cmake/Modules/UHDPython.cmake b/host/cmake/Modules/UHDPython.cmake new file mode 100644 index 000000000..fdcdccb4b --- /dev/null +++ b/host/cmake/Modules/UHDPython.cmake @@ -0,0 +1,86 @@ +# +# Copyright 2010-2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +IF(NOT DEFINED INCLUDED_UHD_PYTHON_CMAKE) +SET(INCLUDED_UHD_PYTHON_CMAKE TRUE) + +######################################################################## +# Setup Python +######################################################################## +MESSAGE(STATUS "") +MESSAGE(STATUS "Configuring the python interpreter...") +#this allows the user to override PYTHON_EXECUTABLE +IF(PYTHON_EXECUTABLE) + +    SET(PYTHONINTERP_FOUND TRUE) + +#otherwise if not set, try to automatically find it +ELSE(PYTHON_EXECUTABLE) + +    #use the built-in find script +    FIND_PACKAGE(PythonInterp) + +    #and if that fails use the find program routine +    IF(NOT PYTHONINTERP_FOUND) +        FIND_PROGRAM(PYTHON_EXECUTABLE NAMES python python2.7 python2.6) +        IF(PYTHON_EXECUTABLE) +            SET(PYTHONINTERP_FOUND TRUE) +        ENDIF(PYTHON_EXECUTABLE) +    ENDIF(NOT PYTHONINTERP_FOUND) + +ENDIF(PYTHON_EXECUTABLE) + +#make the path to the executable appear in the cmake gui +SET(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "python interpreter") + +MESSAGE(STATUS "Python interpreter: ${PYTHON_EXECUTABLE}") +MESSAGE(STATUS "Override with: -DPYTHON_EXECUTABLE=<path-to-python>") + +IF(NOT PYTHONINTERP_FOUND) +    MESSAGE(FATAL_ERROR "Error: Python interpretor required by the build system.") +ENDIF(NOT PYTHONINTERP_FOUND) + +MACRO(PYTHON_CHECK_MODULE desc mod cmd have) +    MESSAGE(STATUS "") +    MESSAGE(STATUS "Python checking for ${desc}") +    EXECUTE_PROCESS( +        COMMAND ${PYTHON_EXECUTABLE} -c " +######################################### +try: import ${mod} +except: exit(1) +try: assert ${cmd} +except: exit(2) +exit(0) +#########################################" +        RESULT_VARIABLE ${have} +    ) +    IF(${have} EQUAL 0) +        MESSAGE(STATUS "Python checking for ${desc} - found") +        SET(${have} TRUE) +    ELSEIF(${have} EQUAL 1) +        MESSAGE(STATUS "Python checking for ${desc} - \"import ${mod}\" failed") +        SET(${have} FALSE) +    ELSEIF(${have} EQUAL 2) +        MESSAGE(STATUS "Python checking for ${desc} - \"assert ${cmd}\" failed") +        SET(${have} FALSE) +    ELSE() +        MESSAGE(STATUS "Python checking for ${desc} - unknown error") +        SET(${have} FALSE) +    ENDIF() +ENDMACRO(PYTHON_CHECK_MODULE) + +ENDIF(NOT DEFINED INCLUDED_UHD_PYTHON_CMAKE) diff --git a/host/cmake/Modules/UHDVersion.cmake b/host/cmake/Modules/UHDVersion.cmake new file mode 100644 index 000000000..38cbe819c --- /dev/null +++ b/host/cmake/Modules/UHDVersion.cmake @@ -0,0 +1,75 @@ +# +# Copyright 2010-2012 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +INCLUDE(UHDPython) #requires python for parsing +FIND_PACKAGE(Git QUIET) + +######################################################################## +# Setup Version Numbers +#  - increment major on api compatibility changes +#  - increment minor on feature-level changes +#  - increment patch on for bug fixes and docs +######################################################################## +SET(UHD_VERSION_MAJOR 003) +SET(UHD_VERSION_MINOR 004) +SET(UHD_VERSION_PATCH 002) + +######################################################################## +# Version information discovery through git log +######################################################################## + +#grab the git ref id for the current head +EXECUTE_PROCESS( +    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +    COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=8 --long +    OUTPUT_VARIABLE _git_describe OUTPUT_STRIP_TRAILING_WHITESPACE +    RESULT_VARIABLE _git_describe_result +) + +#only set the build info on success +IF(_git_describe_result EQUAL 0) +    EXECUTE_PROCESS( +        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +        COMMAND ${PYTHON_EXECUTABLE} -c "print '${_git_describe}'.split('-')[1]" +        OUTPUT_VARIABLE UHD_GIT_COUNT OUTPUT_STRIP_TRAILING_WHITESPACE +    ) +    EXECUTE_PROCESS( +        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +        COMMAND ${PYTHON_EXECUTABLE} -c "print '${_git_describe}'.split('-')[2]" +        OUTPUT_VARIABLE UHD_GIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE +    ) +ENDIF() + +IF(NOT UHD_GIT_COUNT) +    SET(UHD_GIT_COUNT "0") +ENDIF() + +IF(NOT UHD_GIT_HASH) +    SET(UHD_GIT_HASH "unknown") +ENDIF() + +IF(UHD_RELEASE_MODE) +    SET(UHD_GIT_HASH ${UHD_RELEASE_MODE}) +ENDIF() + +######################################################################## +IF(UHD_RELEASE_MODE STREQUAL "release") +    SET(UHD_VERSION "${UHD_VERSION_MAJOR}.${UHD_VERSION_MINOR}.${UHD_VERSION_PATCH}-${UHD_GIT_HASH}") +ELSE() +    SET(UHD_VERSION "${UHD_VERSION_MAJOR}.${UHD_VERSION_MINOR}.${UHD_VERSION_PATCH}-${UHD_GIT_COUNT}-${UHD_GIT_HASH}") +ENDIF() diff --git a/host/cmake/Toolchains/arm_cortex_a8_cross.cmake b/host/cmake/Toolchains/arm_cortex_a8_cross.cmake new file mode 100644 index 000000000..aee1b7f6c --- /dev/null +++ b/host/cmake/Toolchains/arm_cortex_a8_cross.cmake @@ -0,0 +1,20 @@ +######################################################################## +# Toolchain file for cross building for ARM Cortex A8 w/ NEON +# Usage:  cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/arm_cortex_a8_\ +cross.cmake -DENABLE_E100=ON -DENABLE_USRP_E_UTILS=TRUE -DENABLE_ORC=ON \ +-DCAMKE_INSTALL_PREFIX=./install ../ +######################################################################## +set( CMAKE_SYSTEM_NAME Linux ) +set( CMAKE_CXX_COMPILER arm-angstrom-linux-gnueabi-g++ ) +set( CMAKE_C_COMPILER  arm-angstrom-linux-gnueabi-gcc ) +set( CMAKE_CXX_FLAGS "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp"  CACHE STRING "" FORCE ) +set( CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE ) #same flags for C sources + +set( CMAKE_FIND_ROOT_PATH /usr/local/angstrom/arm/ +/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi ) + +#set( BOOST_ROOT ${CMAKE_FIND_ROOT_PATH} ) +#set( BOOST_INCLUDEDIR ${CMAKE_FIND_ROOT_PATH}/usr/include/boost ) +#set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) +set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) +set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) diff --git a/host/cmake/Toolchains/arm_cortex_a8_native.cmake b/host/cmake/Toolchains/arm_cortex_a8_native.cmake new file mode 100644 index 000000000..8e60eaab1 --- /dev/null +++ b/host/cmake/Toolchains/arm_cortex_a8_native.cmake @@ -0,0 +1,8 @@ +######################################################################## +# Toolchain file for building native on a ARM Cortex A8 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE=<this file> <source directory> +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER  gcc) +set(CMAKE_CXX_FLAGS "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) #same flags for C sources diff --git a/host/cmake/cmake_uninstall.cmake.in b/host/cmake/cmake_uninstall.cmake.in new file mode 100644 index 000000000..6031a6ca9 --- /dev/null +++ b/host/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,23 @@ +# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F + +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") +  MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) +  MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") +  IF(EXISTS "$ENV{DESTDIR}${file}") +    EXEC_PROGRAM( +      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" +      OUTPUT_VARIABLE rm_out +      RETURN_VALUE rm_retval +      ) +    IF(NOT "${rm_retval}" STREQUAL 0) +      MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") +    ENDIF(NOT "${rm_retval}" STREQUAL 0) +  ELSE(EXISTS "$ENV{DESTDIR}${file}") +    MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") +  ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) diff --git a/host/cmake/debian/postinst.in b/host/cmake/debian/postinst.in new file mode 100755 index 000000000..eaca15394 --- /dev/null +++ b/host/cmake/debian/postinst.in @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +if [ "$1" = "configure" ]; then +    cp @CMAKE_INSTALL_PREFIX@/share/uhd/utils/uhd-usrp.rules /etc/udev/rules.d/uhd-usrp.rules +    udevadm control --reload-rules +    ldconfig +fi diff --git a/host/cmake/debian/postrm.in b/host/cmake/debian/postrm.in new file mode 100755 index 000000000..63a2e90a9 --- /dev/null +++ b/host/cmake/debian/postrm.in @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +if [ "$1" = "remove" ]; then +    ldconfig +fi diff --git a/host/cmake/debian/preinst.in b/host/cmake/debian/preinst.in new file mode 100755 index 000000000..71246b7e7 --- /dev/null +++ b/host/cmake/debian/preinst.in @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +if [ "$1" = "install" ]; then +    echo 'Installing UHD.' +fi diff --git a/host/cmake/debian/prerm.in b/host/cmake/debian/prerm.in new file mode 100755 index 000000000..dfe491767 --- /dev/null +++ b/host/cmake/debian/prerm.in @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +if [ "$1" = "remove" ]; then +    echo 'Uninstalling UHD.' +    rm /etc/udev/rules.d/uhd-usrp.rules +    udevadm control --reload-rules +fi diff --git a/host/cmake/msvc/inttypes.h b/host/cmake/msvc/inttypes.h new file mode 100644 index 000000000..1c2baa82e --- /dev/null +++ b/host/cmake/msvc/inttypes.h @@ -0,0 +1,301 @@ +// ISO C9x  compliant inttypes.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124  +//  +//  Copyright (c) 2006 Alexander Chemeris +//  +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +//  +//   1. Redistributions of source code must retain the above copyright notice, +//      this list of conditions and the following disclaimer. +//  +//   2. Redistributions in binary form must reproduce the above copyright +//      notice, this list of conditions and the following disclaimer in the +//      documentation and/or other materials provided with the distribution. +//  +//   3. The name of the author may be used to endorse or promote products +//      derived from this software without specific prior written permission. +//  +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +//  +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_INTTYPES_H_ // [ +#define _MSC_INTTYPES_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include <stdint.h> + +// 7.8 Format conversion of integer types + +typedef struct { +   intmax_t quot; +   intmax_t rem; +} imaxdiv_t; + +// 7.8.1 Macros for format specifiers + +// The fprintf macros for signed integers are: +#define PRId8       "d" +#define PRIi8       "i" +#define PRIdLEAST8  "d" +#define PRIiLEAST8  "i" +#define PRIdFAST8   "d" +#define PRIiFAST8   "i" + +#define PRId16       "hd" +#define PRIi16       "hi" +#define PRIdLEAST16  "hd" +#define PRIiLEAST16  "hi" +#define PRIdFAST16   "hd" +#define PRIiFAST16   "hi" + +#define PRId32       "I32d" +#define PRIi32       "I32i" +#define PRIdLEAST32  "I32d" +#define PRIiLEAST32  "I32i" +#define PRIdFAST32   "I32d" +#define PRIiFAST32   "I32i" + +#define PRId64       "I64d" +#define PRIi64       "I64i" +#define PRIdLEAST64  "I64d" +#define PRIiLEAST64  "I64i" +#define PRIdFAST64   "I64d" +#define PRIiFAST64   "I64i" + +#define PRIdMAX     "I64d" +#define PRIiMAX     "I64i" + +#define PRIdPTR     "Id" +#define PRIiPTR     "Ii" + +// The fprintf macros for unsigned integers are: +#define PRIo8       "o" +#define PRIu8       "u" +#define PRIx8       "x" +#define PRIX8       "X" +#define PRIoLEAST8  "o" +#define PRIuLEAST8  "u" +#define PRIxLEAST8  "x" +#define PRIXLEAST8  "X" +#define PRIoFAST8   "o" +#define PRIuFAST8   "u" +#define PRIxFAST8   "x" +#define PRIXFAST8   "X" + +#define PRIo16       "ho" +#define PRIu16       "hu" +#define PRIx16       "hx" +#define PRIX16       "hX" +#define PRIoLEAST16  "ho" +#define PRIuLEAST16  "hu" +#define PRIxLEAST16  "hx" +#define PRIXLEAST16  "hX" +#define PRIoFAST16   "ho" +#define PRIuFAST16   "hu" +#define PRIxFAST16   "hx" +#define PRIXFAST16   "hX" + +#define PRIo32       "I32o" +#define PRIu32       "I32u" +#define PRIx32       "I32x" +#define PRIX32       "I32X" +#define PRIoLEAST32  "I32o" +#define PRIuLEAST32  "I32u" +#define PRIxLEAST32  "I32x" +#define PRIXLEAST32  "I32X" +#define PRIoFAST32   "I32o" +#define PRIuFAST32   "I32u" +#define PRIxFAST32   "I32x" +#define PRIXFAST32   "I32X" + +#define PRIo64       "I64o" +#define PRIu64       "I64u" +#define PRIx64       "I64x" +#define PRIX64       "I64X" +#define PRIoLEAST64  "I64o" +#define PRIuLEAST64  "I64u" +#define PRIxLEAST64  "I64x" +#define PRIXLEAST64  "I64X" +#define PRIoFAST64   "I64o" +#define PRIuFAST64   "I64u" +#define PRIxFAST64   "I64x" +#define PRIXFAST64   "I64X" + +#define PRIoMAX     "I64o" +#define PRIuMAX     "I64u" +#define PRIxMAX     "I64x" +#define PRIXMAX     "I64X" + +#define PRIoPTR     "Io" +#define PRIuPTR     "Iu" +#define PRIxPTR     "Ix" +#define PRIXPTR     "IX" + +// The fscanf macros for signed integers are: +#define SCNd8       "d" +#define SCNi8       "i" +#define SCNdLEAST8  "d" +#define SCNiLEAST8  "i" +#define SCNdFAST8   "d" +#define SCNiFAST8   "i" + +#define SCNd16       "hd" +#define SCNi16       "hi" +#define SCNdLEAST16  "hd" +#define SCNiLEAST16  "hi" +#define SCNdFAST16   "hd" +#define SCNiFAST16   "hi" + +#define SCNd32       "ld" +#define SCNi32       "li" +#define SCNdLEAST32  "ld" +#define SCNiLEAST32  "li" +#define SCNdFAST32   "ld" +#define SCNiFAST32   "li" + +#define SCNd64       "I64d" +#define SCNi64       "I64i" +#define SCNdLEAST64  "I64d" +#define SCNiLEAST64  "I64i" +#define SCNdFAST64   "I64d" +#define SCNiFAST64   "I64i" + +#define SCNdMAX     "I64d" +#define SCNiMAX     "I64i" + +#ifdef _WIN64 // [ +#  define SCNdPTR     "I64d" +#  define SCNiPTR     "I64i" +#else  // _WIN64 ][ +#  define SCNdPTR     "ld" +#  define SCNiPTR     "li" +#endif  // _WIN64 ] + +// The fscanf macros for unsigned integers are: +#define SCNo8       "o" +#define SCNu8       "u" +#define SCNx8       "x" +#define SCNX8       "X" +#define SCNoLEAST8  "o" +#define SCNuLEAST8  "u" +#define SCNxLEAST8  "x" +#define SCNXLEAST8  "X" +#define SCNoFAST8   "o" +#define SCNuFAST8   "u" +#define SCNxFAST8   "x" +#define SCNXFAST8   "X" + +#define SCNo16       "ho" +#define SCNu16       "hu" +#define SCNx16       "hx" +#define SCNX16       "hX" +#define SCNoLEAST16  "ho" +#define SCNuLEAST16  "hu" +#define SCNxLEAST16  "hx" +#define SCNXLEAST16  "hX" +#define SCNoFAST16   "ho" +#define SCNuFAST16   "hu" +#define SCNxFAST16   "hx" +#define SCNXFAST16   "hX" + +#define SCNo32       "lo" +#define SCNu32       "lu" +#define SCNx32       "lx" +#define SCNX32       "lX" +#define SCNoLEAST32  "lo" +#define SCNuLEAST32  "lu" +#define SCNxLEAST32  "lx" +#define SCNXLEAST32  "lX" +#define SCNoFAST32   "lo" +#define SCNuFAST32   "lu" +#define SCNxFAST32   "lx" +#define SCNXFAST32   "lX" + +#define SCNo64       "I64o" +#define SCNu64       "I64u" +#define SCNx64       "I64x" +#define SCNX64       "I64X" +#define SCNoLEAST64  "I64o" +#define SCNuLEAST64  "I64u" +#define SCNxLEAST64  "I64x" +#define SCNXLEAST64  "I64X" +#define SCNoFAST64   "I64o" +#define SCNuFAST64   "I64u" +#define SCNxFAST64   "I64x" +#define SCNXFAST64   "I64X" + +#define SCNoMAX     "I64o" +#define SCNuMAX     "I64u" +#define SCNxMAX     "I64x" +#define SCNXMAX     "I64X" + +#ifdef _WIN64 // [ +#  define SCNoPTR     "I64o" +#  define SCNuPTR     "I64u" +#  define SCNxPTR     "I64x" +#  define SCNXPTR     "I64X" +#else  // _WIN64 ][ +#  define SCNoPTR     "lo" +#  define SCNuPTR     "lu" +#  define SCNxPTR     "lx" +#  define SCNXPTR     "lX" +#endif  // _WIN64 ] + +// 7.8.2 Functions for greatest-width integer types + +// 7.8.2.1 The imaxabs function +#define imaxabs _abs64 + +// 7.8.2.2 The imaxdiv function + +// This is modified version of div() function from Microsoft's div.c found +// in %MSVC.NET%\crt\src\div.c +#ifdef STATIC_IMAXDIV // [ +static +#else // STATIC_IMAXDIV ][ +_inline +#endif // STATIC_IMAXDIV ] +imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) +{ +   imaxdiv_t result; + +   result.quot = numer / denom; +   result.rem = numer % denom; + +   if (numer < 0 && result.rem > 0) { +      // did division wrong; must fix up +      ++result.quot; +      result.rem -= denom; +   } + +   return result; +} + +// 7.8.2.3 The strtoimax and strtoumax functions +#define strtoimax _strtoi64 +#define strtoumax _strtoui64 + +// 7.8.2.4 The wcstoimax and wcstoumax functions +#define wcstoimax _wcstoi64 +#define wcstoumax _wcstoui64 + + +#endif // _MSC_INTTYPES_H_ ] diff --git a/host/cmake/msvc/stdint.h b/host/cmake/msvc/stdint.h new file mode 100644 index 000000000..15333b467 --- /dev/null +++ b/host/cmake/msvc/stdint.h @@ -0,0 +1,226 @@ +// ISO C9x  compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124  +//  +//  Copyright (c) 2006 Alexander Chemeris +//  +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +//  +//   1. Redistributions of source code must retain the above copyright notice, +//      this list of conditions and the following disclaimer. +//  +//   2. Redistributions in binary form must reproduce the above copyright +//      notice, this list of conditions and the following disclaimer in the +//      documentation and/or other materials provided with the distribution. +//  +//   3. The name of the author may be used to endorse or promote products +//      derived from this software without specific prior written permission. +//  +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +//  +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include <limits.h> + +// For Visual Studio 6 in C++ mode wrap <wchar.h> include with 'extern "C++" {}' +// or compiler give many errors like this: +//   error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#if (_MSC_VER < 1300) && defined(__cplusplus) +   extern "C++" { +#endif  +#     include <wchar.h> +#if (_MSC_VER < 1300) && defined(__cplusplus) +   } +#endif + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types +typedef __int8            int8_t; +typedef __int16           int16_t; +typedef __int32           int32_t; +typedef __int64           int64_t; +typedef unsigned __int8   uint8_t; +typedef unsigned __int16  uint16_t; +typedef unsigned __int32  uint32_t; +typedef unsigned __int64  uint64_t; + +// 7.18.1.2 Minimum-width integer types +typedef int8_t    int_least8_t; +typedef int16_t   int_least16_t; +typedef int32_t   int_least32_t; +typedef int64_t   int_least64_t; +typedef uint8_t   uint_least8_t; +typedef uint16_t  uint_least16_t; +typedef uint32_t  uint_least32_t; +typedef uint64_t  uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t    int_fast8_t; +typedef int16_t   int_fast16_t; +typedef int32_t   int_fast32_t; +typedef int64_t   int_fast64_t; +typedef uint8_t   uint_fast8_t; +typedef uint16_t  uint_fast16_t; +typedef uint32_t  uint_fast32_t; +typedef uint64_t  uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ +   typedef __int64           intptr_t; +   typedef unsigned __int64  uintptr_t; +#else // _WIN64 ][ +   typedef int               intptr_t; +   typedef unsigned int      uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t   intmax_t; +typedef uint64_t  uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN     ((int8_t)_I8_MIN) +#define INT8_MAX     _I8_MAX +#define INT16_MIN    ((int16_t)_I16_MIN) +#define INT16_MAX    _I16_MAX +#define INT32_MIN    ((int32_t)_I32_MIN) +#define INT32_MAX    _I32_MAX +#define INT64_MIN    ((int64_t)_I64_MIN) +#define INT64_MAX    _I64_MAX +#define UINT8_MAX    _UI8_MAX +#define UINT16_MAX   _UI16_MAX +#define UINT32_MAX   _UI32_MAX +#define UINT64_MAX   _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN    INT8_MIN +#define INT_LEAST8_MAX    INT8_MAX +#define INT_LEAST16_MIN   INT16_MIN +#define INT_LEAST16_MAX   INT16_MAX +#define INT_LEAST32_MIN   INT32_MIN +#define INT_LEAST32_MAX   INT32_MAX +#define INT_LEAST64_MIN   INT64_MIN +#define INT_LEAST64_MAX   INT64_MAX +#define UINT_LEAST8_MAX   UINT8_MAX +#define UINT_LEAST16_MAX  UINT16_MAX +#define UINT_LEAST32_MAX  UINT32_MAX +#define UINT_LEAST64_MAX  UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN    INT8_MIN +#define INT_FAST8_MAX    INT8_MAX +#define INT_FAST16_MIN   INT16_MIN +#define INT_FAST16_MAX   INT16_MAX +#define INT_FAST32_MIN   INT32_MIN +#define INT_FAST32_MAX   INT32_MAX +#define INT_FAST64_MIN   INT64_MIN +#define INT_FAST64_MAX   INT64_MAX +#define UINT_FAST8_MAX   UINT8_MAX +#define UINT_FAST16_MAX  UINT16_MAX +#define UINT_FAST32_MAX  UINT32_MAX +#define UINT_FAST64_MAX  UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +#  define INTPTR_MIN   INT64_MIN +#  define INTPTR_MAX   INT64_MAX +#  define UINTPTR_MAX  UINT64_MAX +#else // _WIN64 ][ +#  define INTPTR_MIN   INT32_MIN +#  define INTPTR_MAX   INT32_MAX +#  define UINTPTR_MAX  UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN   INT64_MIN +#define INTMAX_MAX   INT64_MAX +#define UINTMAX_MAX  UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +#  define PTRDIFF_MIN  _I64_MIN +#  define PTRDIFF_MAX  _I64_MAX +#else  // _WIN64 ][ +#  define PTRDIFF_MIN  _I32_MIN +#  define PTRDIFF_MAX  _I32_MAX +#endif  // _WIN64 ] + +#define SIG_ATOMIC_MIN  INT_MIN +#define SIG_ATOMIC_MAX  INT_MAX + +#ifndef SIZE_MAX // [ +#  ifdef _WIN64 // [ +#     define SIZE_MAX  _UI64_MAX +#  else // _WIN64 ][ +#     define SIZE_MAX  _UI32_MAX +#  endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h> +#ifndef WCHAR_MIN // [ +#  define WCHAR_MIN  0 +#endif  // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +#  define WCHAR_MAX  _UI16_MAX +#endif  // WCHAR_MAX ] + +#define WINT_MIN  0 +#define WINT_MAX  _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val)  val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val)  val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +#ifndef INTMAX_C +#define INTMAX_C   INT64_C +#endif +#ifndef UINTMAX_C +#define UINTMAX_C  UINT64_C +#endif + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/host/cmake/redhat/post_install.in b/host/cmake/redhat/post_install.in new file mode 100755 index 000000000..01fd3338f --- /dev/null +++ b/host/cmake/redhat/post_install.in @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +cp @CMAKE_INSTALL_PREFIX@/share/uhd/utils/uhd-usrp.rules /etc/udev/rules.d/uhd-usrp.rules +udevadm control --reload-rules +ldconfig diff --git a/host/cmake/redhat/post_uninstall.in b/host/cmake/redhat/post_uninstall.in new file mode 100755 index 000000000..5357680a9 --- /dev/null +++ b/host/cmake/redhat/post_uninstall.in @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +ldconfig diff --git a/host/cmake/redhat/pre_install.in b/host/cmake/redhat/pre_install.in new file mode 100755 index 000000000..e62d603ab --- /dev/null +++ b/host/cmake/redhat/pre_install.in @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +echo 'Installing UHD.' diff --git a/host/cmake/redhat/pre_uninstall.in b/host/cmake/redhat/pre_uninstall.in new file mode 100755 index 000000000..806da7f7c --- /dev/null +++ b/host/cmake/redhat/pre_uninstall.in @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Copyright 2011 Ettus Research LLC +# +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>. +# + +echo 'Uninstalling UHD.' +rm /etc/udev/rules.d/uhd-usrp.rules +udevadm control --reload-rules | 
