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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
|
#
# Copyright 2010-2016 Ettus Research LLC
# Copyright 2018 Ettus Research, a National Instruments Company
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
########################################################################
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(NOT CMAKE_CROSSCOMPILING AND 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(REDHAT)
set(CPACK_GENERATOR RPM)
else()
set(CPACK_GENERATOR TGZ)
endif()
########################################################################
# Setup package file name
########################################################################
if(REDHAT)
#extract system information by executing the commands
execute_process(
COMMAND bash -c "source /etc/os-release && echo $ID"
OUTPUT_VARIABLE OS_ID OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "source /etc/os-release && echo $VERSION_ID"
OUTPUT_VARIABLE VERSION_ID OUTPUT_STRIP_TRAILING_WHITESPACE
)
#set a more sensible package name for this system
if(UHD_RELEASE_MODE)
string(REGEX REPLACE "(.release)$" "" uhd_vers_pretty ${UHD_VERSION})
set(CPACK_PACKAGE_FILE_NAME "uhd-${uhd_vers_pretty}-${OS_ID}${VERSION_ID}" CACHE INTERNAL "")
else()
set(CPACK_PACKAGE_FILE_NAME "uhd-${UHD_VERSION}-${OS_ID}${VERSION_ID}" CACHE INTERNAL "")
endif()
endif(REDHAT)
if(${CPACK_GENERATOR} STREQUAL NSIS)
enable_language(C)
include(CheckTypeSize)
check_type_size("void*[8]" BIT_WIDTH BUILTIN_TYPES_ONLY)
# If CMake option given, specify MSVC version in installer filename
if(SPECIFY_MSVC_VERSION)
if(MSVC_TOOLSET_VERSION EQUAL 90) # Visual Studio 2008 (9.0)
set(MSVC_VERSION "VS2008")
elseif(MSVC_TOOLSET_VERSION EQUAL 100) # Visual Studio 2010 (10.0)
set(MSVC_VERSION "VS2010")
elseif(MSVC_TOOLSET_VERSION EQUAL 110) # Visual Studio 2012 (11.0)
set(MSVC_VERSION "VS2012")
elseif(MSVC_TOOLSET_VERSION EQUAL 120) # Visual Studio 2013 (12.0)
set(MSVC_VERSION "VS2013")
elseif(MSVC_TOOLSET_VERSION EQUAL 140) # Visual Studio 2015 (14.0)
set(MSVC_VERSION "VS2015")
elseif(MSVC_TOOLSET_VERSION EQUAL 141) # Visual Studio 2017 (14.1)
set(MSVC_VERSION "VS2017")
elseif(MSVC_TOOLSET_VERSION EQUAL 142) # Visual Studio 2019 (14.2)
set(MSVC_VERSION "VS2019")
endif()
set(CPACK_PACKAGE_FILE_NAME "uhd_${UHD_VERSION}_Win${BIT_WIDTH}_${MSVC_VERSION}" CACHE INTERNAL "")
else()
set(CPACK_PACKAGE_FILE_NAME "uhd_${UHD_VERSION}_Win${BIT_WIDTH}" CACHE INTERNAL "")
endif(SPECIFY_MSVC_VERSION)
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 (National Instruments)")
set(CPACK_PACKAGE_CONTACT "Ettus Research <support@ettus.com>")
set(CPACK_PACKAGE_VERSION "${UHD_VERSION}")
set(CPACK_RESOURCE_FILE_WELCOME ${UHD_SOURCE_DIR}/README.md)
set(CPACK_RESOURCE_FILE_LICENSE ${UHD_SOURCE_DIR}/LICENSE)
########################################################################
# Setup CPack Source
########################################################################
set(CPACK_SOURCE_PACKAGE_FILE_NAME "uhd-${UHD_VERSION}" CACHE INTERNAL "")
set(CPACK_SOURCE_IGNORE_FILES "\\\\.git*;\\\\.swp$")
########################################################################
# Setup CPack Components
########################################################################
set(CPACK_COMPONENT_LIBRARIES_GROUP "Development")
set(CPACK_COMPONENT_PYTHONAPI_GROUP "Development")
set(CPACK_COMPONENT_HEADERS_GROUP "Development")
set(CPACK_COMPONENT_UTILITIES_GROUP "Runtime")
set(CPACK_COMPONENT_EXAMPLES_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_PYTHONAPI_DISPLAY_NAME "UHD Python API")
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_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_PYTHONAPI_DESCRIPTION "UHD Python API")
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_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 pythonapi headers utilities examples manual doxygen readme images)
########################################################################
# Setup CPack RPM
########################################################################
set(CPACK_RPM_SPEC_MORE_DEFINE "%global __python %{__python3}")
set(CPACK_RPM_PACKAGE_REQUIRES "boost-devel, python3-requests")
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/share/man;/usr/share/man/man1;/usr/lib64/pkgconfig;/usr/lib64/cmake;/usr/lib64/python2.7;/usr/lib64/python2.7/site-packages")
set(CPACK_RPM_FILE_NAME "$CACHE{CPACK_PACKAGE_FILE_NAME}.rpm")
foreach(filename post_install post_uninstall pre_install pre_uninstall)
string(TOUPPER ${filename} filename_upper)
list(APPEND CPACK_RPM_${filename_upper}_SCRIPT_FILE ${UHD_BINARY_DIR}/redhat/${filename})
file(MAKE_DIRECTORY ${UHD_BINARY_DIR}/redhat)
configure_file(
${UHD_SOURCE_DIR}/cmake/redhat/${filename}.in
${UHD_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_PATH\\\" \\\"$INSTDIR\\\"
")
set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
DeleteRegValue HKLM ${HLKM_ENV} \\\"UHD_PKG_PATH\\\"
")
if(WIN32)
#Install necessary runtime DLL's
include(InstallRequiredSystemLibraries)
endif(WIN32)
########################################################################
include(CPack) #include after setting vars
|