-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate to support GNU Radio 3.9 #77
Changes from all commits
c23d71a
2b5e61c
e54a9e0
503e967
ac25657
975a9fa
2130901
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,104 @@ | ||
--- | ||
BasedOnStyle: LLVM | ||
IndentWidth: 4 | ||
--- | ||
Language: Cpp | ||
BasedOnStyle: LLVM | ||
IndentWidth: 4 | ||
AccessModifierOffset: 0 | ||
# BasedOnStyle: LLVM | ||
AccessModifierOffset: -4 | ||
AlignAfterOpenBracket: Align | ||
#AlignEscapedNewlines: Left | ||
AlignConsecutiveAssignments: false | ||
AlignConsecutiveDeclarations: false | ||
AlignEscapedNewlinesLeft: true | ||
AlignOperands: true | ||
AlignTrailingComments: true | ||
AllowAllParametersOfDeclarationOnNextLine: true | ||
AllowShortBlocksOnASingleLine: false | ||
AllowShortCaseLabelsOnASingleLine: false | ||
AllowShortFunctionsOnASingleLine: All | ||
AllowShortIfStatementsOnASingleLine: false | ||
AllowShortLoopsOnASingleLine: false | ||
AlwaysBreakAfterDefinitionReturnType: None | ||
AlwaysBreakAfterReturnType: None | ||
AlwaysBreakBeforeMultilineStrings: false | ||
AlwaysBreakTemplateDeclarations: true | ||
BinPackArguments: false | ||
BinPackParameters: false | ||
ColumnLimit: 100 | ||
#FixNamespaceComments: true | ||
BreakBeforeBraces: Custom | ||
BraceWrapping: | ||
AfterClass: true | ||
AfterControlStatement: false | ||
AfterEnum: false | ||
AfterFunction: true | ||
AfterNamespace: false | ||
AfterObjCDeclaration: false | ||
AfterStruct: false | ||
AfterUnion: false | ||
BeforeCatch: false | ||
BeforeElse: false | ||
IndentBraces: false | ||
BreakBeforeBinaryOperators: None | ||
BreakBeforeTernaryOperators: true | ||
BreakConstructorInitializersBeforeComma: false | ||
BreakAfterJavaFieldAnnotations: false | ||
BreakStringLiterals: true | ||
ColumnLimit: 90 | ||
CommentPragmas: '^ IWYU pragma:' | ||
ConstructorInitializerAllOnOneLineOrOnePerLine: true | ||
ConstructorInitializerIndentWidth: 4 | ||
ContinuationIndentWidth: 4 | ||
Cpp11BracedListStyle: false | ||
DerivePointerAlignment: false | ||
DisableFormat: false | ||
ExperimentalAutoDetectBinPacking: false | ||
ForEachMacros: | ||
- foreach | ||
- Q_FOREACH | ||
- BOOST_FOREACH | ||
IncludeCategories: | ||
- Regex: '^"(gnuradio)/' | ||
Priority: 1 | ||
- Regex: '^<(gnuradio)/' | ||
Priority: 2 | ||
- Regex: '^<(boost)/' | ||
Priority: 98 | ||
- Regex: '^<[a-z]*>$' | ||
Priority: 99 | ||
- Regex: '^".*"$' | ||
Priority: 0 | ||
- Regex: '.*' | ||
Priority: 10 | ||
|
||
IncludeIsMainRegex: '(Test)?$' | ||
IndentCaseLabels: false | ||
IndentWidth: 4 | ||
IndentWrappedFunctionNames: false | ||
JavaScriptQuotes: Leave | ||
JavaScriptWrapImports: true | ||
KeepEmptyLinesAtTheStartOfBlocks: true | ||
MacroBlockBegin: '' | ||
MacroBlockEnd: '' | ||
MaxEmptyLinesToKeep: 2 | ||
#CompactNamespaces: true | ||
NamespaceIndentation: None | ||
ObjCBlockIndentWidth: 2 | ||
ObjCSpaceAfterProperty: false | ||
ObjCSpaceBeforeProtocolList: true | ||
PenaltyBreakBeforeFirstCallParameter: 19 | ||
PenaltyBreakComment: 300 | ||
PenaltyBreakFirstLessLess: 120 | ||
PenaltyBreakString: 1000 | ||
PenaltyExcessCharacter: 1000000 | ||
PenaltyReturnTypeOnItsOwnLine: 60 | ||
PointerAlignment: Left | ||
ReflowComments: true | ||
SortIncludes: true | ||
SpaceAfterCStyleCast: false | ||
SpaceAfterTemplateKeyword: true | ||
SpaceBeforeAssignmentOperators: true | ||
SpaceBeforeParens: ControlStatements | ||
SpaceInEmptyParentheses: false | ||
SpacesBeforeTrailingComments: 1 | ||
SpacesInAngles: false | ||
SpacesInContainerLiterals: true | ||
SpacesInCStyleCastParentheses: false | ||
SpacesInParentheses: false | ||
SpacesInSquareBrackets: false | ||
Standard: Cpp11 | ||
TabWidth: 8 | ||
UseTab: Never |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,5 @@ | ||
build/** | ||
.vscode/** | ||
*~ | ||
*.pyc | ||
*.pyo | ||
build*/ | ||
examples/grc/*.py |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,98 +1,94 @@ | ||
# Copyright 2011 Free Software Foundation, Inc. | ||
# Copyright 2011-2020 Free Software Foundation, Inc. | ||
# | ||
# This file is part of GNU Radio | ||
# This file was generated by gr_modtool, a tool from the GNU Radio framework | ||
# This file is a part of gr-limesdr | ||
# | ||
# GNU Radio 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, or (at your option) | ||
# any later version. | ||
# SPDX-License-Identifier: GPL-3.0-or-later | ||
# | ||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to | ||
# the Free Software Foundation, Inc., 51 Franklin Street, | ||
# Boston, MA 02110-1301, USA. | ||
|
||
######################################################################## | ||
# Project setup | ||
######################################################################## | ||
cmake_minimum_required(VERSION 2.6) | ||
cmake_minimum_required(VERSION 3.8) | ||
project(gr-limesdr CXX C) | ||
|
||
set(CMAKE_CXX_STANDARD 11) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
set(CMAKE_CXX_EXTENSIONS OFF) | ||
|
||
enable_testing() | ||
|
||
#select the release build type by default to get optimization flags | ||
# Install to PyBOMBS target prefix if defined | ||
if(DEFINED ENV{PYBOMBS_PREFIX}) | ||
set(CMAKE_INSTALL_PREFIX $ENV{PYBOMBS_PREFIX}) | ||
message(STATUS "PyBOMBS installed GNU Radio. Setting CMAKE_INSTALL_PREFIX to $ENV{PYBOMBS_PREFIX}") | ||
endif() | ||
|
||
# Select the release build type by default to get optimization flags | ||
if(NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE "Release") | ||
message(STATUS "Build type not specified: defaulting to release.") | ||
endif(NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") | ||
|
||
#make sure our local CMake Modules path comes first | ||
# Make sure our local CMake Modules path comes first | ||
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules) | ||
|
||
# Set the version information here | ||
set(VERSION_MAJOR 1) | ||
set(VERSION_API 0) | ||
set(VERSION_ABI 0) | ||
set(VERSION_PATCH git) | ||
|
||
cmake_policy(SET CMP0011 NEW) | ||
|
||
# Enable generation of compile_commands.json for code completion engines | ||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | ||
|
||
######################################################################## | ||
# Compiler specific setup | ||
######################################################################## | ||
if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) | ||
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR | ||
CMAKE_CXX_COMPILER_ID STREQUAL "GNU") | ||
AND NOT WIN32) | ||
#http://gcc.gnu.org/wiki/Visibility | ||
add_definitions(-fvisibility=hidden) | ||
endif() | ||
|
||
######################################################################## | ||
# Find boost | ||
######################################################################## | ||
MESSAGE(STATUS "Configuring Boost C++ Libraries...") | ||
|
||
SET(BOOST_REQUIRED_COMPONENTS | ||
thread | ||
system | ||
) | ||
|
||
if(UNIX AND EXISTS "/usr/lib64") | ||
list(APPEND BOOST_LIBRARYDIR "/usr/lib64") #fedora 64-bit fix | ||
endif(UNIX AND EXISTS "/usr/lib64") | ||
|
||
set(Boost_ADDITIONAL_VERSIONS | ||
"1.35.0" "1.35" "1.36.0" "1.36" "1.37.0" "1.37" "1.38.0" "1.38" "1.39.0" "1.39" | ||
"1.40.0" "1.40" "1.41.0" "1.41" "1.42.0" "1.42" "1.43.0" "1.43" "1.44.0" "1.44" | ||
"1.45.0" "1.45" "1.46.0" "1.46" "1.47.0" "1.47" "1.48.0" "1.48" "1.49.0" "1.49" | ||
"1.50.0" "1.50" "1.51.0" "1.51" "1.52.0" "1.52" "1.53.0" "1.53" "1.54.0" "1.54" | ||
"1.55.0" "1.55" "1.56.0" "1.56" "1.57.0" "1.57" "1.58.0" "1.58" "1.59.0" "1.59" | ||
"1.60.0" "1.60" "1.61.0" "1.61" "1.62.0" "1.62" "1.63.0" "1.63" "1.64.0" "1.64" | ||
"1.65.0" "1.65" "1.66.0" "1.66" "1.67.0" "1.67" "1.68.0" "1.68" "1.69.0" "1.69" | ||
) | ||
|
||
find_package(Boost COMPONENTS ${BOOST_REQUIRED_COMPONENTS}) | ||
|
||
if(NOT Boost_FOUND) | ||
message(FATAL_ERROR "Boost required to compile limesdr") | ||
endif() | ||
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") | ||
SET(CMAKE_CXX_STANDARD 14) | ||
ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||
SET(CMAKE_CXX_STANDARD 14) | ||
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") | ||
SET(CMAKE_CXX_STANDARD 14) | ||
ELSE() | ||
message(WARNING "C++ standard could not be set because compiler is not GNU, Clang or MSVC.") | ||
ENDIF() | ||
|
||
IF(CMAKE_C_COMPILER_ID STREQUAL "GNU") | ||
SET(CMAKE_C_STANDARD 11) | ||
ELSEIF(CMAKE_C_COMPILER_ID MATCHES "Clang") | ||
SET(CMAKE_C_STANDARD 11) | ||
ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "MSVC") | ||
SET(CMAKE_C_STANDARD 11) | ||
ELSE() | ||
message(WARNING "C standard could not be set because compiler is not GNU, Clang or MSVC.") | ||
ENDIF() | ||
|
||
######################################################################## | ||
# Install directories | ||
######################################################################## | ||
include(FindPkgConfig) | ||
find_package(Gnuradio "3.9" REQUIRED) | ||
include(GrVersion) | ||
|
||
include(GrPlatform) #define LIB_SUFFIX | ||
set(GR_RUNTIME_DIR bin) | ||
set(GR_LIBRARY_DIR lib${LIB_SUFFIX}) | ||
|
||
if(NOT CMAKE_MODULES_DIR) | ||
set(CMAKE_MODULES_DIR lib${LIB_SUFFIX}/cmake) | ||
endif(NOT CMAKE_MODULES_DIR) | ||
|
||
set(GR_INCLUDE_DIR include/limesdr) | ||
set(GR_DATA_DIR share) | ||
set(GR_CMAKE_DIR ${CMAKE_MODULES_DIR}/limesdr) | ||
set(GR_PKG_DATA_DIR ${GR_DATA_DIR}/${CMAKE_PROJECT_NAME}) | ||
set(GR_DOC_DIR ${GR_DATA_DIR}/doc) | ||
set(GR_PKG_DOC_DIR ${GR_DOC_DIR}/${CMAKE_PROJECT_NAME}) | ||
set(GR_CONF_DIR etc) | ||
set(GR_PKG_CONF_DIR ${GR_CONF_DIR}/${CMAKE_PROJECT_NAME}/conf.d) | ||
set(GR_LIBEXEC_DIR libexec) | ||
set(GR_PKG_LIBEXEC_DIR ${GR_LIBEXEC_DIR}/${CMAKE_PROJECT_NAME}) | ||
set(GRC_BLOCKS_DIR ${GR_PKG_DATA_DIR}/grc/blocks) | ||
|
||
######################################################################## | ||
# On Apple only, set install name and use rpath correctly, if not already set | ||
|
@@ -117,37 +113,35 @@ endif(APPLE) | |
######################################################################## | ||
# Find gnuradio build dependencies | ||
######################################################################## | ||
# Search for GNU Radio and its components and versions. Add any | ||
# components required to the list of GR_REQUIRED_COMPONENTS (in all | ||
# caps such as FILTER or FFT) and change the version to the minimum | ||
# API compatible version required. | ||
find_package(Doxygen) | ||
|
||
MESSAGE(STATUS "Configuring GNU Radio C++ Libraries...") | ||
set(GR_REQUIRED_COMPONENTS RUNTIME PMT) | ||
set(MIN_GR_VERSION "3.7.8") | ||
set(MAX_GR_VERSION "3.8.0") | ||
find_package(Gnuradio REQUIRED) | ||
if("${Gnuradio_VERSION}" VERSION_LESS MIN_GR_VERSION OR NOT "${Gnuradio_VERSION}" | ||
VERSION_LESS MAX_GR_VERSION) | ||
MESSAGE(FATAL_ERROR "GnuRadio version required: >=\"" ${MIN_GR_VERSION} "\" \ | ||
< \"${MAX_GR_VERSION}\" found: \"" ${Gnuradio_VERSION} "\"") | ||
endif() | ||
######################################################################## | ||
# PyBind11 Related | ||
######################################################################## | ||
|
||
find_package(pybind11 REQUIRED) | ||
execute_process( | ||
COMMAND "${PYTHON_EXECUTABLE}" -c | ||
"try:\n import numpy\n import os\n inc_path = numpy.get_include()\n if os.path.exists(os.path.join(inc_path, 'numpy', 'arrayobject.h')):\n print(inc_path, end='')\nexcept:\n pass" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could this be something simpler like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The remaining logic to assert whether inc_path/numpy/arrayobject.py can be done in CMake rather than Python |
||
OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIR) | ||
# format path in CMake-style for consistency with other path variables | ||
# (a consistent style helps conda builds by using the same path separators) | ||
file(TO_CMAKE_PATH "${PYTHON_NUMPY_INCLUDE_DIR}" PYTHON_NUMPY_INCLUDE_DIR) | ||
|
||
######################################################################## | ||
# Find LimeSuite | ||
######################################################################## | ||
MESSAGE(STATUS "Configuring LimeSuite C++ Libraries...") | ||
INCLUDE(FindPkgConfig) | ||
PKG_CHECK_MODULES(PC_LIMESUITE LimeSuite) | ||
find_path(LIMESUITE_INCLUDE_DIRS | ||
find_path(LIMESUITE_INCLUDE_DIRS | ||
NAMES LimeSuite.h | ||
HINTS ${PC_LIMESUITE_INCLUDEDIR}/lime | ||
PATHS ${LIMESUITE_PKG_INCLUDE_DIRS} | ||
/usr/include/lime | ||
/usr/local/include/lime | ||
) | ||
find_library(LIMESUITE_LIB | ||
find_library(LIMESUITE_LIB | ||
NAMES LimeSuite limesuite | ||
HINTS ${PC_LIMESUITE_LIBDIR} | ||
PATHS ${LIMESDR_PKG_LIBRARY_DIRS} | ||
|
@@ -172,32 +166,10 @@ endif() | |
# Setup doxygen option | ||
######################################################################## | ||
if(DOXYGEN_FOUND) | ||
option(ENABLE_DOXYGEN "Build docs using Doxygen" ON) | ||
option(ENABLE_DOXYGEN "Build docs using Doxygen" ON) | ||
else(DOXYGEN_FOUND) | ||
option(ENABLE_DOXYGEN "Build docs using Doxygen" OFF) | ||
option(ENABLE_DOXYGEN "Build docs using Doxygen" OFF) | ||
endif(DOXYGEN_FOUND) | ||
######################################################################## | ||
# Setup the include and linker paths | ||
######################################################################## | ||
include_directories( | ||
${CMAKE_SOURCE_DIR}/lib | ||
${CMAKE_SOURCE_DIR}/include | ||
${CMAKE_BINARY_DIR}/lib | ||
${CMAKE_BINARY_DIR}/include | ||
${Boost_INCLUDE_DIRS} | ||
${GNURADIO_ALL_INCLUDE_DIRS} | ||
${LIMESUITE_INCLUDE_DIRS} | ||
) | ||
|
||
link_directories( | ||
${Boost_LIBRARY_DIRS} | ||
${GNURADIO_RUNTIME_LIBRARY_DIRS} | ||
${LIMESUITE_LIB} | ||
) | ||
|
||
# Set component parameters | ||
set(GR_LIMESDR_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE INTERNAL "" FORCE) | ||
set(GR_LIMESDR_SWIG_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/swig CACHE INTERNAL "" FORCE) | ||
|
||
######################################################################## | ||
# Create uninstall target | ||
|
@@ -209,25 +181,27 @@ configure_file( | |
|
||
add_custom_target(uninstall | ||
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake | ||
) | ||
) | ||
|
||
######################################################################## | ||
# Add subdirectories | ||
######################################################################## | ||
add_subdirectory(include/limesdr) | ||
add_subdirectory(lib) | ||
add_subdirectory(swig) | ||
add_subdirectory(python) | ||
add_subdirectory(grc) | ||
add_subdirectory(apps) | ||
add_subdirectory(docs) | ||
# NOTE: manually update below to use GRC to generate C++ flowgraphs w/o python | ||
if(ENABLE_PYTHON) | ||
message(STATUS "PYTHON and GRC components are enabled") | ||
add_subdirectory(python) | ||
add_subdirectory(grc) | ||
else(ENABLE_PYTHON) | ||
message(STATUS "PYTHON and GRC components are disabled") | ||
endif(ENABLE_PYTHON) | ||
|
||
######################################################################## | ||
# Install cmake search helper for this library | ||
######################################################################## | ||
if(NOT CMAKE_MODULES_DIR) | ||
set(CMAKE_MODULES_DIR lib${LIB_SUFFIX}/cmake) | ||
endif(NOT CMAKE_MODULES_DIR) | ||
|
||
install(FILES cmake/Modules/limesdrConfig.cmake | ||
DESTINATION ${CMAKE_MODULES_DIR}/limesdr | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure why these branches should be duplicated