diff --git a/.clang-format b/.clang-format
index 57c1b1d78..949f7e5a6 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,99 +1,289 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2018-2020 Carles Fernandez-Prades
+# SPDX-FileCopyrightText: 2018-2024 Carles Fernandez-Prades
---
Language: Cpp
# BasedOnStyle: Google
# More info: https://clang.llvm.org/docs/ClangFormatStyleOptions.html
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
-AlignConsecutiveAssignments: false
-AlignConsecutiveDeclarations: false
-AlignEscapedNewlinesLeft: true
-AlignOperands: true
-AlignTrailingComments: true
+AlignArrayOfStructures: None
+AlignConsecutiveAssignments:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: true
+AlignConsecutiveBitFields:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: false
+AlignConsecutiveDeclarations:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: true
+AlignConsecutiveMacros:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: false
+AlignConsecutiveShortCaseStatements:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCaseArrows: false
+ AlignCaseColons: false
+AlignConsecutiveTableGenBreakingDAGArgColons:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: false
+AlignConsecutiveTableGenCondOperatorColons:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: false
+AlignConsecutiveTableGenDefinitionColons:
+ Enabled: false
+ AcrossEmptyLines: false
+ AcrossComments: false
+ AlignCompound: false
+ AlignFunctionPointers: false
+ PadOperators: false
+AlignEscapedNewlines: Left
+AlignOperands: Align
+AlignTrailingComments:
+ Kind: Always
+ OverEmptyLines: 0
+AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
-AllowShortBlocksOnASingleLine: false
+AllowBreakBeforeNoexceptSpecifier: Never
+AllowShortBlocksOnASingleLine: Never
+AllowShortCaseExpressionOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: false
+AllowShortCompoundRequirementOnASingleLine: true
+AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
-AllowShortIfStatementsOnASingleLine: true
+AllowShortIfStatementsOnASingleLine: WithoutElse
+AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
-AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
-AlwaysBreakTemplateDeclarations: false
+AttributeMacros:
+ - __capability
BinPackArguments: true
BinPackParameters: true
+BitFieldColonSpacing: Both
BraceWrapping:
- AfterClass: false
- AfterControlStatement: false
- AfterEnum: false
- AfterFunction: false
- AfterNamespace: false
- AfterObjCDeclaration: false
- AfterStruct: false
- AfterUnion: false
- BeforeCatch: false
- BeforeElse: false
- IndentBraces: false
+ AfterCaseLabel: true
+ AfterClass: true
+ AfterControlStatement: Always
+ AfterEnum: true
+ AfterExternBlock: true
+ AfterFunction: true
+ AfterNamespace: true
+ AfterObjCDeclaration: true
+ AfterStruct: true
+ AfterUnion: true
+ BeforeCatch: true
+ BeforeElse: true
+ BeforeLambdaBody: false
+ BeforeWhile: true
+ IndentBraces: true
+ SplitEmptyFunction: true
+ SplitEmptyRecord: true
+ SplitEmptyNamespace: true
+BreakAdjacentStringLiterals: true
+BreakAfterAttributes: Leave
+BreakAfterJavaFieldAnnotations: false
+BreakAfterReturnType: None
+BreakArrays: true
BreakBeforeBinaryOperators: None
+BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: GNU
+BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
-BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeColon
+BreakFunctionDefinitionParameters: false
+BreakInheritanceList: BeforeColon
+BreakStringLiterals: true
+BreakTemplateDeclarations: MultiLine
ColumnLimit: 0
CommentPragmas: '^ IWYU pragma:'
-ConstructorInitializerAllOnOneLineOrOnePerLine: true
+CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: false
+EmptyLineAfterAccessModifier: Never
+EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
-ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
-IncludeBlocks: Merge
+FixNamespaceComments: true
+ForEachMacros:
+ - foreach
+ - Q_FOREACH
+ - BOOST_FOREACH
+IfMacros:
+ - KJ_IF_MAYBE
+IncludeBlocks: Merge
IncludeCategories:
- Regex: '^.*.h"'
Priority: 1
+ SortPriority: 0
+ CaseSensitive: false
- Regex: '^.*(benchmark|boost|gflags|glog|gnsssdr|gnuradio|gnsstk|gsl|gtest|pmt|uhd|volk)/'
Priority: 2
+ SortPriority: 0
+ CaseSensitive: false
- Regex: '^.*(armadillo|iio|matio|pugixml)'
Priority: 2
+ SortPriority: 0
+ CaseSensitive: false
- Regex: '.*'
Priority: 3
+ SortPriority: 0
+ CaseSensitive: false
- Regex: '^<.*\.h>'
Priority: 4
+ SortPriority: 0
+ CaseSensitive: false
- Regex: '^<.*'
Priority: 5
+ SortPriority: 0
+ CaseSensitive: false
+IncludeIsMainRegex: '(Test)?$'
+IncludeIsMainSourceRegex: ''
+IndentAccessModifiers: false
+IndentCaseBlocks: false
IndentCaseLabels: false
+IndentExternBlock: AfterExternBlock
+IndentGotoLabels: true
+IndentPPDirectives: None
+IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: false
-KeepEmptyLinesAtTheStartOfBlocks: false
+InsertBraces: false
+InsertNewlineAtEOF: false
+InsertTrailingCommas: None
+IntegerLiteralSeparator:
+ Binary: 0
+ BinaryMinDigits: 0
+ Decimal: 0
+ DecimalMinDigits: 0
+ Hex: 0
+ HexMinDigits: 0
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
+KeepEmptyLines:
+ AtEndOfFile: false
+ AtStartOfBlock: false
+ AtStartOfFile: true
+LambdaBodyIndentation: Signature
+LineEnding: DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
+MainIncludeChar: Quote
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
+ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
+ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
+PackConstructorInitializers: NextLine
+PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
+PenaltyBreakOpenParenthesis: 0
+PenaltyBreakScopeResolution: 500
PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
+PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
+PPIndentWidth: -1
+QualifierAlignment: Leave
+ReferenceAlignment: Pointer
ReflowComments: true
-SortIncludes: true
+RemoveBracesLLVM: false
+RemoveParentheses: Leave
+RemoveSemicolon: false
+RequiresClausePosition: OwnLine
+RequiresExpressionIndentation: OuterScope
+SeparateDefinitionBlocks: Leave
+ShortNamespaceLines: 1
+SkipMacroDefinitionBody: false
+SortIncludes: CaseSensitive
+SortJavaStaticImport: Before
+SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
+SpaceAfterLogicalNot: false
+SpaceAfterTemplateKeyword: true
+SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
+SpaceBeforeCaseColon: false
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
+SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
-SpaceInEmptyParentheses: false
+SpaceBeforeParensOptions:
+ AfterControlStatements: true
+ AfterForeachMacros: true
+ AfterFunctionDefinitionName: false
+ AfterFunctionDeclarationName: false
+ AfterIfMacros: true
+ AfterOverloadedOperator: false
+ AfterPlacementOperator: true
+ AfterRequiresInClause: false
+ AfterRequiresInExpression: false
+ BeforeNonEmptyParentheses: false
+SpaceBeforeRangeBasedForLoopColon: true
+SpaceBeforeSquareBrackets: false
+SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 2
-SpacesInAngles: false
+SpacesInAngles: Never
SpacesInContainerLiterals: true
-SpacesInCStyleCastParentheses: false
-SpacesInParentheses: false
+SpacesInLineCommentPrefix:
+ Minimum: 1
+ Maximum: -1
+SpacesInParens: Never
+SpacesInParensOptions:
+ ExceptDoubleParentheses: false
+ InCStyleCasts: false
+ InConditionalStatements: false
+ InEmptyParentheses: false
+ Other: false
SpacesInSquareBrackets: false
Standard: Auto
+StatementAttributeLikeMacros:
+ - Q_EMIT
+StatementMacros:
+ - Q_UNUSED
+ - QT_REQUIRE_VERSION
+TableGenBreakInsideDAGArg: DontBreak
TabWidth: 8
UseTab: Never
+VerilogBreakBetweenInstancePorts: true
+WhitespaceSensitiveMacros:
+ - BOOST_PP_STRINGIZE
+ - CF_SWIFT_NAME
+ - NS_SWIFT_NAME
+ - PP_STRINGIZE
+ - STRINGIZE
...
diff --git a/.clang-tidy b/.clang-tidy
index 0ef91e2ec..3ddbd1a51 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -120,7 +120,6 @@ Checks: '-*,
readability-uppercase-literal-suffix'
WarningsAsErrors: ''
HeaderFilterRegex: ''
-AnalyzeTemporaryDtors: false
FormatStyle: 'file'
CheckOptions:
- key: performance-unnecessary-copy-initialization.ExcludedContainerTypes
diff --git a/.github/workflows/gnss-sdr_archs.yml b/.github/workflows/gnss-sdr_archs.yml
index ca9595187..f3e86bb1f 100644
--- a/.github/workflows/gnss-sdr_archs.yml
+++ b/.github/workflows/gnss-sdr_archs.yml
@@ -58,8 +58,8 @@ jobs:
CXX: ${{ matrix.compiler.cxx }}
shell: /bin/sh
install: |
- apt-get update -q -y
- apt-get install -q -y ${{ matrix.compiler.name }} git ninja-build cmake \
+ apt update
+ apt install -y ${{ matrix.compiler.name }} git ninja-build cmake \
libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \
libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \
liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev \
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index eeecbaf38..0dd3b46c8 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2020-2022 Carles Fernandez-Prades
+# SPDX-FileCopyrightText: 2020-2024 Carles Fernandez-Prades
name: Simple CI
on:
@@ -18,9 +18,9 @@ jobs:
- uses: actions/checkout@v4
- name: install dependencies
run: |
- sudo apt-get update -y
+ sudo apt update
sudo apt install -y libunwind-dev
- sudo apt-get install -y --no-install-recommends ninja-build cmake \
+ sudo apt install -y --no-install-recommends ninja-build cmake \
libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \
libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \
liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev \
@@ -28,18 +28,23 @@ jobs:
libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev \
python3-mako liborc-0.4-dev
- name: configure
- run: cd build && cmake -GNinja ..
+ run: cmake -S . -B build -GNinja
- name: build
- run: cd build && ninja
+ run: cmake --build build
- name: check
- run: cd build && ninja check && ../install/volk_gnsssdr_profile && ../install/run_tests
+ run: cmake --build build --target check && ./install/volk_gnsssdr_profile && ./install/run_tests
- name: default position_test
- run: cd build && cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. && ninja && ../install/position_test
+ run: |
+ cmake -S . -B build -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_UNIT_TESTING_EXTRA=OFF && \
+ cmake --build build && ./install/position_test && ./install/run_tests --gtest_filter=Osnma*
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
- name: install dependencies
run: |
brew update
@@ -53,21 +58,27 @@ jobs:
rm /usr/local/bin/pydoc3.1* || true
rm /usr/local/bin/python3.1* || true
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
- brew install ninja hdf5 automake armadillo lapack libmatio \
- gflags glog gnuradio log4cpp openssl pugixml protobuf python-mako
+ brew link --overwrite python@3.12
+ brew install ninja hdf5 automake armadillo lapack libmatio gnuradio openssl pugixml protobuf boost
+ pip3 install mako
- name: configure
- run: cd build && cmake -GNinja ..
+ run: cmake -S . -B build -GNinja
- name: build
- run: cd build && ninja
+ run: cmake --build build
- name: check
- run: cd build && ninja check && ../install/volk_gnsssdr_profile && ../install/run_tests
+ run: cmake --build build --target check && ./install/volk_gnsssdr_profile && ./install/run_tests
- name: default position_test
- run: cd build && cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON .. && ninja && ../install/position_test
+ run: |
+ cmake -S . -B build -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_UNIT_TESTING_EXTRA=OFF && \
+ cmake --build build && ./install/position_test && ./install/run_tests --gtest_filter=Osnma*
build-macos-xcode:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
- name: install dependencies
run: |
brew update
@@ -81,40 +92,49 @@ jobs:
rm /usr/local/bin/pydoc3.1* || true
rm /usr/local/bin/python3.1* || true
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
- brew install ninja pkg-config hdf5 automake armadillo lapack libmatio \
- gflags glog gnuradio log4cpp openssl pugixml protobuf python-mako
+ brew link --overwrite python@3.12
+ brew install ninja pkg-config hdf5 automake armadillo lapack libmatio gnuradio openssl pugixml protobuf boost
+ pip3 install mako
- name: configure
- run: cd build && cmake -GXcode ..
+ run: cmake -S . -B build -GXcode
- name: build
- run: cd build && xcodebuild -configuration Release
+ run: cmake --build build --config Release
- name: check
run: |
- cd build
- xcodebuild -configuration Release -target check
- ../install/volk_gnsssdr_profile
- ../install/run_tests
+ cmake --build build --config Release --target check
+ ./install/volk_gnsssdr_profile
+ ./install/run_tests
- name: default position_test
run: |
- cd build
- cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON ..
- xcodebuild -configuration Release -target position_test
- ../install/position_test
+ cmake -S . -B build -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_UNIT_TESTING_EXTRA=OFF
+ cmake --build build --config Release --target position_test
+ ./install/position_test
+ ./install/run_tests --gtest_filter=Osnma*
clang-format:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ path:
+ - 'src'
+ - 'tests'
+ - 'utils'
steps:
- uses: actions/checkout@v4
- name: run clang-format
- uses: jidicula/clang-format-action@v4.11.0
+ uses: jidicula/clang-format-action@v4.14.0
with:
- clang-format-version: "15"
- check-path: "src"
- exclude-regex: '(libs\/gsl\/)|^.*\.(cu|proto)$'
+ clang-format-version: "19"
+ check-path: ${{ matrix.path }}
+ exclude-regex: '(libs\/gsl\/)|(tmpl)|(cpu_features)|^.*\.(cu|proto)$'
clang-tidy:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
- name: install dependencies
run: |
brew update
@@ -128,15 +148,16 @@ jobs:
rm /usr/local/bin/pydoc3.1* || true
rm /usr/local/bin/python3.1* || true
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
- brew install llvm pkg-config hdf5 armadillo lapack gflags glog gnuradio libmatio \
- log4cpp openssl pugixml protobuf python-mako
+ brew link --overwrite python@3.12
+ brew install ninja pkg-config hdf5 automake armadillo lapack libmatio gnuradio openssl pugixml protobuf llvm boost
+ pip3 install mako
ln -s $(brew --prefix llvm)/bin/clang-tidy /usr/local/bin
ln -s $(brew --prefix llvm)/bin/clang-apply-replacements /usr/local/bin
- ln -s $(brew --prefix llvm)/bin/run-clang-tidy /usr/local/bin
+ ln -s $(brew --prefix llvm)/bin/run-clang-tidy.py /usr/local/bin
- name: Prepare run
- run: cd build && cmake .. && make volk_gnsssdr_module gtest-1.13.0 core_monitor core_libs pvt_libs
+ run: cmake -S . -B build && cmake --build build --target volk_gnsssdr_module gtest-1.16.0 core_monitor core_libs pvt_libs
- name: run clang-tidy
- run: cd build && run-clang-tidy -fix
+ run: cd build && /opt/homebrew/opt/llvm/bin/run-clang-tidy -fix
- name: check
run: |
git diff > clang_tidy.patch
@@ -149,11 +170,11 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: install dependencies
- run: sudo apt-get install python3-pip && sudo pip3 install cpplint
+ run: sudo apt install python3-pip && sudo pip3 install cpplint
- name: run checks
- run: "find ./src/ -iname *.h -o -iname *.cc | xargs cpplint
- --filter=-,+build/class,+build/c++14,+build/deprecated,+build/explicit_make_pair,\
- +build/include_what_you_use,+build/printf_format,+build/storage_class,\
+ run: "find ./src/ ./utils ./tests -iname *.h -o -iname *.cc | xargs cpplint
+ --filter=-,+build/class,+build/deprecated,+build/explicit_make_pair,\
+ +build/forward_decl,+build/printf_format,+build/storage_class,\
+readability/constructors,+readability/namespace,+readability/newline,\
+readability/utf8,+runtime/casting,+runtime/explicit,\
+runtime/indentation_namespace,+runtime/init,+runtime/invalid_increment,\
@@ -163,7 +184,7 @@ jobs:
+whitespace/end-of-line,+whitespace/ending-newline,+whitespace/semicolon,\
+whitespace/tab --exclude=./src/core/interfaces/gnss_block_interface.h
--exclude=./src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/hwcaps_for_testing.*
- --exclude=./src/utils/nav-listener/build/nav_message.pb.h"
+ --exclude=./utils/nav-listener/build/nav_message.pb.h"
prettier-markdown:
runs-on: ubuntu-latest
@@ -180,7 +201,6 @@ jobs:
- uses: actions/checkout@v4
- name: install dependencies
run: |
- sudo python -m pip install --upgrade pip
sudo pip install cmakelint
- name: check CMake scripts
run: find . -iname "CMakeLists.txt" -o -iname "*.cmake" | xargs cmakelint --filter=-linelength,-readability/wonkycase
@@ -189,21 +209,21 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-python@v4
+ - uses: actions/setup-python@v5
with:
- python-version: '3.12'
+ python-version: '3.13'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install mako
- name: configure
shell: powershell
- run: cd build; cmake -G "Visual Studio 17 2022" ..\src\algorithms\libs\volk_gnsssdr_module\volk_gnsssdr
+ run: cmake -S src\algorithms\libs\volk_gnsssdr_module\volk_gnsssdr -B build -G "Visual Studio 17 2022"
- name: build
run: cmake --build build --config Release
- name: test
shell: powershell
- run: cd build; ctest -C Release
+ run: ctest -C Release --test-dir build
- name: install
run: cmake --install build
- name: run profile
@@ -216,11 +236,11 @@ jobs:
- name: install dependencies
run: sudo apt install python3-mako liborc-dev
- name: configure
- run: cd build && cmake ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
+ run: cmake -S src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr -B build
- name: build
- run: cd build && make -j2
+ run: cmake --build build
- name: install
- run: cd build && sudo make install && sudo ldconfig
+ run: sudo cmake --install build && sudo ldconfig
- name: test
run: volk_gnsssdr_profile
@@ -228,29 +248,39 @@ jobs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- - name: install dependencies
- run: pip3 install mako
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.13'
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install mako
- name: configure
- run: cd build && cmake ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
+ run: cmake -S src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr -B build
- name: build
- run: cd build && make -j2 && sudo make install
+ run: cmake --build build && sudo cmake --install build
- name: test
- run: cd build && ctest -C Release --exclude-regex volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc
+ run: ctest -C Release --test-dir build --exclude-regex volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc
volk-gnsssdr-macos-xcode:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- - name: install dependencies
- run: pip3 install mako
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.13'
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install mako
- name: configure
- run: cd build && cmake -GXcode ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
+ run: cmake -S src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr -B build -GXcode
- name: build
- run: cd build && xcodebuild -configuration Release
+ run: cmake --build build --config Release
- name: install
- run: cd build && sudo xcodebuild -configuration Release -target install
+ run: sudo cmake --install build
- name: test
- run: cd build && ctest -C Release --exclude-regex volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc
+ run: ctest -C Release --test-dir build --exclude-regex --exclude-regex volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc
shellcheck:
runs-on: ubuntu-latest
@@ -259,7 +289,7 @@ jobs:
- name: install dependencies
run: sudo apt install shellcheck
- name: check scripts
- run: shellcheck src/utils/scripts/*
+ run: shellcheck utils/scripts/*
REUSE-compliance:
runs-on: ubuntu-latest
@@ -268,4 +298,4 @@ jobs:
- name: Check REUSE compliance
uses: docker://fsfe/reuse
with:
- args: lint
+ args: lint
\ No newline at end of file
diff --git a/.github/workflows/volk_gnsssdr_android.yml b/.github/workflows/volk_gnsssdr_android.yml
index 04a33c3d4..2d5da7473 100644
--- a/.github/workflows/volk_gnsssdr_android.yml
+++ b/.github/workflows/volk_gnsssdr_android.yml
@@ -32,29 +32,32 @@ jobs:
- name: Update repositories
run: sudo apt update
- name: Install dependencies
- run: sudo apt install -y cmake openjdk-11-jre-headless wget unzip make python3-mako
+ run: sudo apt install -y cmake python3-mako
+
+ # Setup Java
+ - uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+
# Setup Android SDK, and auto-accept licenses
- name: Install Android SDK
run: |
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip
- mkdir android-sdk-linux
- unzip -qq android-sdk.zip -d android-sdk-linux
- export ANDROID_HOME=./android-sdk-linux
- echo y | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --update
+ wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip && \
+ mkdir android-sdk-linux && unzip -qq android-sdk.zip -d android-sdk-linux && export ANDROID_HOME=./android-sdk-linux && echo y | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --update && \
(echo y; echo y; echo y; echo y; echo y; echo y; echo y; echo y) | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --licenses
+
# Call SDKManager to install the Android NDK
- name: Install Android NDK
- run: $GITHUB_WORKSPACE/android-sdk-linux/cmdline-tools/bin/sdkmanager --sdk_root=$GITHUB_WORKSPACE/android-sdk-linux --install "ndk;24.0.8215888" --channel=3
+ run: $GITHUB_WORKSPACE/android-sdk-linux/cmdline-tools/bin/sdkmanager --sdk_root=$GITHUB_WORKSPACE/android-sdk-linux --install "ndk;27.2.12479018" --channel=3
+
# Setup build directory
- name: Setup ${{ matrix.arch.name }}
shell: bash
run: |
- cd $GITHUB_WORKSPACE/
- cd build
- cmake -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/android-sdk-linux/ndk/24.0.8215888/build/cmake/android.toolchain.cmake \
- -DANDROID_ABI=${{ matrix.arch.name }} \
- -DANDROID_PLATFORM=android-24 \
- ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
+ cd $GITHUB_WORKSPACE/ && mkdir -p build && cd build && \
+ cmake -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/android-sdk-linux/ndk/27.2.12479018/build/cmake/android.toolchain.cmake -DANDROID_ABI=${{ matrix.arch.name }} -DANDROID_PLATFORM=android-34 ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
+
# Build
- name: Build ${{ matrix.arch.name }}
shell: bash
diff --git a/.github/workflows/volk_gnsssdr_archs.yml b/.github/workflows/volk_gnsssdr_archs.yml
index 6f4e31454..b265c1f6e 100644
--- a/.github/workflows/volk_gnsssdr_archs.yml
+++ b/.github/workflows/volk_gnsssdr_archs.yml
@@ -1,21 +1,17 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2023 Carles Fernandez-Prades
-name: Run volk_gnsssdr tests
+name: Run gnss-sdr in non-x86 archs
on:
push:
- paths:
- - "src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/**"
- - "CMakeLists.txt"
- pull_request:
- paths:
- - "src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/**"
- - "CMakeLists.txt"
+ branches:
+ - "**-archs"
+ - main
workflow_dispatch:
jobs:
- build-ubuntu-non-x86:
+ gnss-sdr-non-x86:
runs-on: ubuntu-latest
name: ${{ matrix.distro }} ${{ matrix.arch }} ${{ matrix.compiler.name }}
@@ -33,22 +29,22 @@ jobs:
- arch: armv7
distro: ubuntu22.04
compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
- - arch: ppc64le
- distro: ubuntu22.04
- compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
- - arch: s390x
- distro: ubuntu22.04
- compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
- arch: riscv64
distro: ubuntu22.04
compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
+ # - arch: ppc64le
+ # distro: ubuntu22.04
+ # compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
+ # - arch: s390x
+ # distro: ubuntu22.04
+ # compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
steps:
- uses: actions/checkout@v4
- uses: uraimo/run-on-arch-action@v2.7.1
- name: Build in non-x86 container
- # continue-on-error: ${{ contains(fromJson('["ppc64le", "s390x"]'), matrix.arch) }}
- id: build
+ name: Test in non-x86 container
+ continue-on-error: ${{ contains(fromJson('["ppc64le", "s390x"]'), matrix.arch) }}
+ id: test
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
@@ -56,24 +52,28 @@ jobs:
setup: |
mkdir -p "${PWD}/testing"
dockerRunArgs: |
- --volume "${PWD}:/volk_gnsssdr"
+ --volume "${PWD}:/gnss-sdr"
env: |
CC: ${{ matrix.compiler.cc }}
CXX: ${{ matrix.compiler.cxx }}
shell: /bin/sh
install: |
- apt-get update -q -y
- apt-get install -q -y git cmake python3-mako liborc-dev ${{ matrix.compiler.name }}
+ apt update
+ apt install -y ${{ matrix.compiler.name }} git ninja-build cmake \
+ libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \
+ libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \
+ liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev \
+ liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \
+ libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev \
+ python3-mako liborc-0.4-dev
run: |
- git config --global --add safe.directory /volk_gnsssdr
- cd /volk_gnsssdr
+ git config --global --add safe.directory /gnss-sdr
+ cd /gnss-sdr
cd testing
- cmake ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/
+ mkdir install
+ cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON -DCMAKE_INSTALL_PREFIX=/gnss-sdr/testing/install -DENABLE_INSTALL_TESTS=ON ..
echo "Build with $(nproc) thread(s)"
make -j$(nproc)
- ./apps/volk_gnsssdr-config-info --alignment
- ./apps/volk_gnsssdr-config-info --avail-machines
- ./apps/volk_gnsssdr-config-info --all-machines
- ./apps/volk_gnsssdr-config-info --malloc
- ./apps/volk_gnsssdr-config-info --cc
- ctest -V
+ make install
+ cd install/bin
+ ./position_test
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 007b9ab0c..2155a88bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,22 +1,30 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2011 Carles Fernandez-Prades
+# SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades
*~
.*.swp
-docs/doxygen/Doxyfile
-docs/html
-docs/latex
-docs/GNSS-SDR_manual.pdf
-src/tests/data/output.dat
-thirdparty/
-src/utils/nav-listener/build
-.settings
-.project
-.cproject
-.idea
-cmake-build-debug/
+/build/
+/build*/
+/cmake-build-debug/
+/data/
+/docs/doxygen/Doxyfile
+/docs/html/
+/docs/latex/
+/docs/GNSS-SDR_manual.pdf
+/gnss_sdr_pvt.nmea
+/GSDR*
+/HAS_*
+/PVT_*
+/Testing/
+/tests/data/output.dat
+/thirdparty/
+/utils/nav-listener/build/
+/utils/nav-listener/build*/
/install
+.cproject
.DS_Store
+.idea
+.project
.pydevproject
-.vscode/
+.settings
.vs/
-Testing/
+.vscode/
diff --git a/AUTHORS b/AUTHORS
index ad0660662..00d9a4e75 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -33,39 +33,44 @@ Contact Information
List of authors
--------------------------------------------------------------------------------
-Carles Fernández-Prades carles.fernandez@cttc.cat Project manager
-Javier Arribas javier.arribas@cttc.es Developer
-Luis Esteve Elfau luis@epsilon-formacion.com Developer
-Marc Majoral marc.majoral@cttc.cat Developer
-Jordi Vilà-Valls jordi.vila-valls@isae-supaero.fr Consultant
-Pau Closas pau.closas@northeastern.edu Consultant
-Álvaro Cebrián Juan acebrianjuan@gmail.com Contributor
-Andres Cecilia Luque a.cecilia.luque@gmail.com Contributor
-Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor
-Antonio Ramos antonio.ramosdet@gmail.com Contributor
-Carlos Avilés carlos.avilesr@googlemail.com Contributor
-Cillian O'Driscoll cillian.odriscoll@gmail.com Contributor
-Damian Miralles dmiralles2009@gmail.com Contributor
-Daniel Fehr daniel.co@bluewin.ch Contributor
-David Pubill david.pubill@cttc.cat Contributor
-En Shin seanstone5923@gmail.com Contributor
-Fran Fabra fabra@ice.csic.es Contributor
-Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
-Gerald LaMountain gerald@gece.neu.edu Contributor
-Into Pääkkönen into.paakkonen@aalto.fi Contributor
-Irene Pérez Riega iperrie@inta.es Contributor
-Jim Melton jim.melton@sncorp.com Contributor
-Josh Schindehette jschindehette@geontech.com Contributor
-Leonardo Tonetto tonetto.dev@gmail.com Contributor
-Malte Lenhart malte.lenhart@mailbox.org Contributor
-Mara Branzanti mara.branzanti@gmail.com Contributor
-Marc Molina marc.molina.pena@gmail.com Contributor
-Marc Sales marcsales92@gmail.com Contributor
-Piyush Gupta piyush04111999@gmail.com Contributor
-Rodrigo Muñoz rodrigo.munoz@proteinlab.cl Contributor
-Stefan van der Linden spvdlinden@gmail.com Contributor
-Will Silberman wsilberm@google.com Contributor
-Carlos Paniego carpanie@hotmail.com Artwork
+
+Carles Fernández-Prades carles.fernandez@cttc.cat Project manager
+Javier Arribas javier.arribas@cttc.es Developer
+Luis Esteve Elfau luis@epsilon-formacion.com Developer
+Marc Majoral marc.majoral@cttc.cat Developer
+Xavier Guerrero xavier.guerrero@cttc.es Developer
+Jordi Vilà-Valls jordi.vila-valls@isae-supaero.fr Consultant
+Pau Closas pau.closas@northeastern.edu Consultant
+Álvaro Cebrián Juan acebrianjuan@gmail.com Contributor
+Andres Cecilia Luque a.cecilia.luque@gmail.com Contributor
+Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor
+Antonio Ramos antonio.ramosdet@gmail.com Contributor
+Carlos Avilés carlos.avilesr@googlemail.com Contributor
+Cesare Ghionoiu Martinez c.ghionoiu-martinez@tu-braunschweig.de Contributor
+Cillian O'Driscoll cillian.odriscoll@gmail.com Contributor
+Damian Miralles dmiralles2009@gmail.com Contributor
+Daniel Fehr daniel.co@bluewin.ch Contributor
+David Pubill david.pubill@cttc.cat Contributor
+En Shin seanstone5923@gmail.com Contributor
+Fran Fabra fabra@ice.csic.es Contributor
+Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
+Gerald LaMountain gerald@gece.neu.edu Contributor
+Into Pääkkönen into.paakkonen@aalto.fi Contributor
+Irene Pérez Riega iperrie@inta.es Contributor
+Jim Melton jim.melton@sncorp.com Contributor
+Josh Schindehette jschindehette@geontech.com Contributor
+Leonardo Tonetto tonetto.dev@gmail.com Contributor
+Malte Lenhart malte.lenhart@mailbox.org Contributor
+Mara Branzanti mara.branzanti@gmail.com Contributor
+Marc Molina marc.molina.pena@gmail.com Contributor
+Marc Sales marcsales92@gmail.com Contributor
+Piyush Gupta piyush04111999@gmail.com Contributor
+Rodrigo Muñoz rodrigo.munoz@proteinlab.cl Contributor
+Stefan van der Linden spvdlinden@gmail.com Contributor
+Víctor Castillo-Agüero victorcastilloaguero@gmail.com Contributor
+Will Silberman wsilberm@google.com Contributor
+Carlos Paniego carpanie@hotmail.com Artwork
+
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades
diff --git a/CITATION.cff b/CITATION.cff
index 0f11b55f1..5aebc8b3c 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2024 C. Fernandez-Prades carles.fernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2024-2025 C. Fernandez-Prades carles.fernandez(at)cttc.es
---
authors:
- affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)"
@@ -20,6 +20,11 @@ authors:
family-names: Majoral
given-names: Marc
orcid: "https://orcid.org/0000-0001-6161-6747"
+ - affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)"
+ alias: xguerreropau
+ email: xavier.guerrero@cttc.es
+ family-names: Guerrero
+ given-names: Xavier
- alias: Gastd
email: gabriel.araujo.5000@gmail.com
family-names: Araujo
@@ -34,6 +39,11 @@ authors:
email: mara.branzanti@gmail.com
family-names: Branzanti
given-names: Mara
+ - alias: castle055
+ affiliation: "Instituto Nacional de Técnica Aeroespacial"
+ email: victorcastilloaguero@gmail.com
+ family-names: "Castillo-Agüero"
+ given-names: Víctor
- alias: acebrianjuan
email: acebrianjuan@gmail.com
family-names: "Cebrián-Juan"
@@ -51,6 +61,11 @@ authors:
- email: daniel.co@bluewin.ch
family-names: Fehr
given-names: Daniel
+ - alias: cesaaargm
+ affiliation: "Technische Universität Braunschweig"
+ email: c.ghionoiu-martinez@tu-braunschweig.de
+ family-names: "Ghionoiu Martinez"
+ given-names: Cesare
- alias: piyush0411
email: piyush04111999@gmail.com
family-names: Gupta
@@ -119,7 +134,7 @@ authors:
family-names: "van der Linden"
given-names: Stefan
cff-version: "1.2.0"
-date-released: "2024-01-23"
+date-released: "2025-04-01"
identifiers:
- description: "The concept DOI of the work. This is a DOI always pointing to the latest stable release."
type: doi
@@ -327,4 +342,4 @@ repository-code: "https://github.com/gnss-sdr/gnss-sdr"
title: GNSS-SDR
type: software
url: "https://gnss-sdr.org"
-version: "0.0.19"
+version: "0.0.20"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 99e567462..f5db2d939 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2010-2024 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2010-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
################################################################################
@@ -16,7 +16,7 @@ endif()
# Build type can still be overridden by setting -DCMAKE_BUILD_TYPE=
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
-cmake_minimum_required(VERSION 2.8.12...3.28)
+cmake_minimum_required(VERSION 2.8.12...4.0)
project(gnss-sdr CXX C)
set(GNSSSDR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # Allows to be a sub-project
@@ -44,6 +44,10 @@ option(ENABLE_AD936X_SDR "Enable the use of AD936X front-ends using libiio, requ
option(ENABLE_AD9361 "Enable the use of AD9361 direct to FPGA hardware, requires libiio" OFF)
+option(ENABLE_MAX2771 "Enable the use of MAX2771 direct to FPGA hardware, requires the spidev driver" OFF)
+
+option(ENABLE_DMA_PROXY "Enable the use of the DMA direct to FPGA hardware, requires the DMA Proxy driver" OFF)
+
option(ENABLE_RAW_UDP "Enable the use of high-optimized custom UDP packet sample source, requires libpcap" OFF)
option(ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNU Radio driver" OFF)
@@ -52,6 +56,8 @@ option(ENABLE_ARRAY "Enable the use of CTTC's antenna array front-end as signal
option(ENABLE_ZMQ "Enable GNU Radio ZeroMQ Messaging, requires gr-zeromq" ON)
+option(ENABLE_ION "Enable ION GNSS-SDR Metadata Standard signal source" OFF)
+
# Performance analysis tools
option(ENABLE_GPERFTOOLS "Enable linking to Gperftools libraries (tcmalloc and profiler)" OFF)
@@ -74,9 +80,20 @@ option(ENABLE_PACKAGING "Enable software packaging" OFF)
option(ENABLE_OWN_GLOG "Download glog and link it to gflags" OFF)
+option(ENABLE_GLOG_AND_GFLAGS "Force using Google glog and Gflags instead of Abseil" OFF)
+
+option(ENABLE_OWN_ABSEIL "Forces downloading and building of Abseil" OFF)
+if(CMAKE_VERSION VERSION_LESS 3.24)
+ set(ENABLE_OWN_ABSEIL OFF)
+endif()
+if(ENABLE_OWN_ABSEIL)
+ set(ENABLE_OWN_GLOG OFF)
+ set(ENABLE_GLOG_AND_GFLAGS OFF)
+endif()
+
option(ENABLE_OWN_ARMADILLO "Download and build Armadillo locally" OFF)
-option(ENABLE_LOG "Enable logging" ON)
+option(ENABLE_LOG "Enable internal logging" ON)
option(ENABLE_ARMA_NO_DEBUG OFF)
@@ -84,6 +101,8 @@ option(ENABLE_STRIP "Create stripped binaries without debugging symbols (in Rele
option(Boost_USE_STATIC_LIBS "Use Boost static libs" OFF)
+option(ENABLE_GNUTLS "Forces linking against GnuTLS" OFF)
+
if(ENABLE_PACKAGING)
set(ENABLE_ARMA_NO_DEBUG ON)
set(CMAKE_VERBOSE_MAKEFILE ON)
@@ -178,9 +197,9 @@ endif()
set(VERSION_INFO_MAJOR_VERSION 0)
set(VERSION_INFO_API_COMPAT 0)
if(${THIS_IS_A_RELEASE})
- set(VERSION_INFO_MINOR_VERSION 19)
+ set(VERSION_INFO_MINOR_VERSION 20)
else()
- set(VERSION_INFO_MINOR_VERSION 19.git-${GIT_BRANCH}-${GIT_COMMIT_HASH})
+ set(VERSION_INFO_MINOR_VERSION 20.git-${GIT_BRANCH}-${GIT_COMMIT_HASH})
endif()
set(VERSION ${VERSION_INFO_MAJOR_VERSION}.${VERSION_INFO_API_COMPAT}.${VERSION_INFO_MINOR_VERSION})
@@ -211,7 +230,7 @@ endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
include(DetectLinuxDistro)
if(CMAKE_CROSSCOMPILING)
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be cross-compiled on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}")
+ message(STATUS "Configuring GNSS-SDR v${VERSION} to be cross-compiled on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR}")
else()
message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}")
endif()
@@ -329,25 +348,34 @@ set(GNSSSDR_MATIO_MIN_VERSION "1.5.3")
set(GNSSSDR_PROTOBUF_MIN_VERSION "3.0.0")
set(GNSSSDR_PYTHON_MIN_VERSION "2.7")
set(GNSSSDR_PYTHON3_MIN_VERSION "3.4")
+set(GNSSSDR_ABSEIL_MIN_VERSION "20240116")
################################################################################
# Versions to download and build (but not to install system-wide) if not found
################################################################################
-set(GNSSSDR_ARMADILLO_LOCAL_VERSION "12.6.x")
+set(GNSSSDR_ARMADILLO_LOCAL_VERSION "14.4.x")
set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2")
-set(GNSSSDR_GLOG_LOCAL_VERSION "0.6.0")
-set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.26")
-set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "25.0")
-set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.14")
-set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0")
-set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master")
-set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.0.0")
-set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.8.3")
+set(GNSSSDR_GLOG_LOCAL_VERSION "0.7.1")
+set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.28")
+set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "30.2")
+set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.15")
+set(GNSSSDR_GTEST_LOCAL_VERSION "1.16.0")
+set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "origin/master")
+set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.3.0")
+set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.9.2")
set(GNSSSDR_MATHJAX_EXTERNAL_VERSION "2.7.7")
+set(GNSSSDR_ABSL_LOCAL_VERSION "origin/master") # live at head (see https://abseil.io/about/releases)
# Downgrade versions if requirements are not met
+if(CMAKE_VERSION VERSION_LESS "3.5")
+ set(GNSSSDR_ARMADILLO_LOCAL_VERSION "12.8.x")
+endif()
+
+if(CMAKE_VERSION VERSION_LESS "3.22")
+ set(GNSSSDR_GLOG_LOCAL_VERSION "0.6.0")
+endif()
if(CMAKE_VERSION VERSION_LESS "3.16")
set(GNSSSDR_GLOG_LOCAL_VERSION "0.5.0")
endif()
@@ -368,10 +396,25 @@ if(CMAKE_VERSION VERSION_LESS "3.4")
set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.10")
endif()
-if(CMAKE_CROSSCOMPILING OR CMAKE_VERSION VERSION_LESS "3.13")
+if(CMAKE_VERSION VERSION_LESS "3.16")
+ set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "29.3")
+endif()
+if(CMAKE_CROSSCOMPILING OR CMAKE_VERSION VERSION_LESS "3.13" OR
+ ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0.0)) OR
+ ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")) OR
+ ((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11")))
set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "21.12")
endif()
+if(CMAKE_VERSION VERSION_LESS "3.16")
+ set(GNSSSDR_GTEST_LOCAL_VERSION "1.15.2")
+endif()
+if(CMAKE_VERSION VERSION_LESS "3.13" OR
+ (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.1) OR
+ (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0))
+ set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0")
+endif()
+
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR
CMAKE_VERSION VERSION_LESS 3.5)
@@ -570,6 +613,13 @@ set_package_properties(Threads PROPERTIES
+################################################################################
+# Set GNSSSDR_LIB_PATHS and GNSSSDR_INCLUDE_PATHS
+################################################################################
+include(GnsssdrFindPaths)
+
+
+
################################################################################
# Googletest - https://github.com/google/googletest
################################################################################
@@ -714,6 +764,18 @@ endif()
if(UNIX AND EXISTS "/usr/lib64")
list(APPEND BOOST_LIBRARYDIR "/usr/lib64") # Fedora 64-bit fix
endif()
+if(NOT BOOST_ROOT)
+ # Workaround for Macports
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ if(${DETECT_MACPORTS} EQUAL 0)
+ if(EXISTS "${MACPORTS_PREFIX}/libexec/boost/1.76")
+ set(BOOST_ROOT "${MACPORTS_PREFIX}/libexec/boost/1.76")
+ elseif(EXISTS "${MACPORTS_PREFIX}/libexec/boost/1.71")
+ set(BOOST_ROOT "${MACPORTS_PREFIX}/libexec/boost/1.71")
+ endif()
+ endif()
+ endif()
+endif()
# Boost_ADDITIONAL_VERSIONS is only used internally by cmake to know the
# formation of newer versions. No need to increase, not used anymore since newer
# Boost provides its own CMake configuration files.
@@ -729,8 +791,21 @@ set(BOOST_COMPONENTS atomic chrono date_time serialization system thread)
if(NOT ${FILESYSTEM_FOUND})
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} filesystem)
endif()
-find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
-
+if(CMAKE_VERSION VERSION_LESS 3.30)
+ find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
+else()
+ find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS})
+ if(Boost_FOUND)
+ get_filename_component(BOOST_PREFIX ${Boost_INCLUDE_DIRS} DIRECTORY)
+ message(STATUS "Found Boost v${Boost_VERSION_STRING} at ${BOOST_PREFIX}")
+ else()
+ message(STATUS "Trying deprecated FindBoost Module ...")
+ if(POLICY CMP0167)
+ cmake_policy(SET CMP0167 OLD)
+ find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} REQUIRED COMPONENTS ${BOOST_COMPONENTS})
+ endif()
+ endif()
+endif()
if(NOT Boost_FOUND)
message(FATAL_ERROR "Fatal error: Boost (version >=${GNSSSDR_BOOST_MIN_VERSION}) required.")
endif()
@@ -1036,6 +1111,15 @@ endif()
+################################################################################
+# Detect availability of shm_open
+################################################################################
+unset(HAVE_SHM_OPEN CACHE)
+include(CheckFunctionExists)
+check_function_exists(shm_open HAVE_SHM_OPEN)
+
+
+
################################################################################
# volk_gnsssdr module - GNSS-SDR's own VOLK library
################################################################################
@@ -1071,7 +1155,7 @@ if(NOT VOLKGNSSSDR_FOUND)
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(STATUS " sudo zypper install ${PYTHON_NAME}-Mako")
else()
- message(STATUS " sudo apt-get install ${PYTHON_NAME}-mako")
+ message(STATUS " sudo apt install ${PYTHON_NAME}-mako")
endif()
endif()
message(FATAL_ERROR "Mako templates required to build VOLK_GNSSSDR")
@@ -1088,7 +1172,7 @@ if(NOT VOLKGNSSSDR_FOUND)
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(STATUS " sudo zypper install ${PYTHON_NAME}-six")
else()
- message(STATUS " sudo apt-get install ${PYTHON_NAME}-six")
+ message(STATUS " sudo apt install ${PYTHON_NAME}-six")
endif()
endif()
message(FATAL_ERROR "six - python 2 and 3 compatibility library required to build VOLK_GNSSSDR")
@@ -1145,7 +1229,7 @@ if(NOT VOLKGNSSSDR_FOUND)
if(CMAKE_GENERATOR STREQUAL Xcode)
set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild"
- "-configuration" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>
+ "-configuration" $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>:RelWithDebInfo>$<$:Debug>
)
endif()
@@ -1223,9 +1307,6 @@ if(NOT VOLKGNSSSDR_FOUND)
CMAKE_SYSTEM_PROCESSOR MATCHES "^loongarch")
set(SUPPORTED_CPU_FEATURES_ARCH TRUE)
endif()
- if(${CMAKE_INSTALL_LIBDIR} MATCHES lib64)
- set(VOLK_GNSSSDR_LIB_SUFFIX 64)
- endif()
if(CMAKE_VERSION VERSION_LESS 3.2)
ExternalProject_Add(volk_gnsssdr_module
PREFIX ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module
@@ -1243,7 +1324,7 @@ if(NOT VOLKGNSSSDR_FOUND)
else()
if(SUPPORTED_CPU_FEATURES_ARCH)
set(VOLK_GNSSSDR_BUILD_BYPRODUCTS
- ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
+ ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
)
if(ENABLE_CPUFEATURES)
@@ -1266,7 +1347,7 @@ if(NOT VOLKGNSSSDR_FOUND)
set_package_properties(CPUFEATURES PROPERTIES
DESCRIPTION "A cross platform C99 library to get CPU features at runtime"
)
- if((DEFINED VOLK_VERSION AND VOLK_VERSION VERSION_GREATER "2.3") OR (CMAKE_VERSION VERSION_LESS "3.13")) # avoid clash with volk's cpufeatures.
+ if((DEFINED VOLK_VERSION AND VOLK_VERSION VERSION_GREATER "2.3" AND VOLK_VERSION VERSION_LESS "3.1") OR (CMAKE_VERSION VERSION_LESS "3.13")) # avoid clash with volk's cpufeatures.
set(ENABLE_CPUFEATURES OFF)
else()
set_package_properties(CPUFEATURES PROPERTIES
@@ -1311,7 +1392,7 @@ if(NOT VOLKGNSSSDR_FOUND)
UPDATE_COMMAND ""
PATCH_COMMAND ""
BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND}
- BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
+ BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr-config-info
INSTALL_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install
@@ -1325,7 +1406,7 @@ if(NOT VOLKGNSSSDR_FOUND)
endif()
add_library(volk_gnsssdr UNKNOWN IMPORTED)
- set_property(TARGET volk_gnsssdr PROPERTY IMPORTED_LOCATION ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/libvolk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX})
+ set_property(TARGET volk_gnsssdr PROPERTY IMPORTED_LOCATION ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/libvolk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX})
set(VOLK_GNSSSDR_INCLUDE_DIRS "${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/build/include/;${GNSSSDR_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include;${ORC_INCLUDE_DIRS}")
set(VOLK_GNSSSDR_LIBRARIES volk_gnsssdr ${ORC_LIBRARIES_STATIC})
if(CPUFEATURES_FOUND)
@@ -1338,7 +1419,7 @@ if(NOT VOLKGNSSSDR_FOUND)
add_dependencies(Volkgnsssdr::volkgnsssdr volk_gnsssdr_module)
set_target_properties(Volkgnsssdr::volkgnsssdr PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/libvolk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/libvolk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}"
INCLUDE_DIRECTORIES "${VOLK_GNSSSDR_INCLUDE_DIRS}"
INTERFACE_INCLUDE_DIRECTORIES "${VOLK_GNSSSDR_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${VOLK_GNSSSDR_LIBRARIES}"
@@ -1380,316 +1461,457 @@ endif()
################################################################################
-# gflags - https://github.com/gflags/gflags
+# Abseil C++ - https://abseil.io/docs/cpp/
################################################################################
-set(LOCAL_GFLAGS FALSE)
-if(ENABLE_OWN_GLOG)
- unset(Glog::glog CACHE)
- unset(GLOG_FOUND CACHE)
- unset(Gflags::gflags CACHE)
- unset(GLAGS_FOUND CACHE)
- set(GFLAGS_GREATER_20 TRUE)
-else()
- unset(Glog::glog CACHE)
- unset(GLOG_FOUND CACHE)
- find_package(GLOG)
- if(GLOG_FOUND)
- unset(GFLAGS_GREATER_20 CACHE)
- find_package(GFLAGS)
- endif()
-endif()
-set_package_properties(GFLAGS PROPERTIES
- PURPOSE "Used for commandline flags management."
- TYPE REQUIRED
-)
-if(NOT GFLAGS_FOUND)
- set(ENABLE_OWN_GLOG ON)
- if(GFLAGS_VERSION)
- message(STATUS " A version of the gflags library equal or higher than v${GNSSSDR_GFLAGS_MIN_VERSION} has not been found.")
- else()
- message(STATUS " The gflags library has not been found.")
- endif()
- message(STATUS " gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded, built, and statically linked automatically")
- message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
- set(GFLAGS_BUILD_COMMAND ${CMAKE_COMMAND}
- "--build" "${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}"
- "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
- )
- if(CMAKE_GENERATOR STREQUAL Xcode)
- set(GFLAGS_BUILD_COMMAND "xcodebuild" "-configuration" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>)
- endif()
- if(CMAKE_TOOLCHAIN_FILE)
- set(GFLAGS_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
- endif()
+if(NOT CMAKE_VERSION VERSION_LESS 3.24
+ AND NOT CMAKE_CXX_STANDARD VERSION_LESS 17
+ AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.1)
+ AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0)
+ AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12)
+ AND NOT ENABLE_OWN_GLOG
+ AND NOT ENABLE_GLOG_AND_GFLAGS)
+ # See https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md
- if(CMAKE_VERSION VERSION_LESS 3.2)
- ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- GIT_REPOSITORY https://github.com/gflags/gflags.git
- GIT_TAG v${GNSSSDR_GFLAGS_LOCAL_VERSION}
- SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
- -DBUILD_STATIC_LIBS=ON
- -DBUILD_gflags_LIB=ON
- -DBUILD_gflags_nothreads_LIB=ON
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- ${GFLAGS_TOOLCHAIN_FILE}
- -DGFLAGS_NAMESPACE=google
- -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
- BUILD_COMMAND ${GFLAGS_BUILD_COMMAND}
- UPDATE_COMMAND ""
- PATCH_COMMAND ""
- INSTALL_COMMAND ""
+ if(ENABLE_OWN_ABSEIL)
+ include(FetchContent)
+ set(ABSEIL_BUILD_COMMAND ${CMAKE_COMMAND}
+ "--build" "${GNSSSDR_BINARY_DIR}/abseil-cpp"
+ "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
+ "--target" "install"
)
- else()
- set(GFLAGS_BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX})
- if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL NoOptWithASM) OR
- (CMAKE_BUILD_TYPE STREQUAL Coverage) OR (CMAKE_BUILD_TYPE STREQUAL ASAN)) # Workaround for Ninja generator
- set(GFLAGS_BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags_debug${CMAKE_STATIC_LIBRARY_SUFFIX})
+ if(CMAKE_GENERATOR STREQUAL Xcode)
+ set(ABSEIL_BUILD_COMMAND "xcodebuild" "-configuration" $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>)
endif()
- if((CMAKE_VERSION VERSION_GREATER 3.12.0) AND NOT (CMAKE_GENERATOR STREQUAL Xcode))
- set(PARALLEL_BUILD "--parallel 2")
+ if(CMAKE_TOOLCHAIN_FILE)
+ set(ABSEIL_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
endif()
- ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- GIT_REPOSITORY https://github.com/gflags/gflags.git
- GIT_TAG v${GNSSSDR_GFLAGS_LOCAL_VERSION}
- SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
- CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
- -DBUILD_STATIC_LIBS=ON
- -DBUILD_gflags_LIB=ON
- -DBUILD_gflags_nothreads_LIB=ON
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- ${GFLAGS_TOOLCHAIN_FILE}
- -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
- BUILD_COMMAND "${GFLAGS_BUILD_COMMAND} ${PARALLEL_BUILD}"
- BUILD_BYPRODUCTS ${GFLAGS_BUILD_BYPRODUCTS}
- UPDATE_COMMAND ""
- PATCH_COMMAND ""
- INSTALL_COMMAND ""
+ set(ABSL_PROPAGATE_CXX_STD ON)
+ FetchContent_Declare(
+ absl
+ GIT_REPOSITORY https://github.com/abseil/abseil-cpp
+ GIT_TAG ${GNSSSDR_ABSL_LOCAL_VERSION}
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/abseil-cpp
+ CMAKE_ARGS -DABSL_PROPAGATE_CXX_STD=ON -ABSL_BUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/abseil-cpp ${ABSEIL_TOOLCHAIN_FILE}
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/abseil-cpp
+ BUILD_COMMAND ${ABSEIL_BUILD_COMMAND}
+ OVERRIDE_FIND_PACKAGE # Requires CMake 3.24
)
- endif()
- # Note: -DBUILD_gflags_nothreads_LIB=ON is required as a workaround to a bug in gflags 2.2.2. This is fixed in gflags master branch
-
- set(GFlags_INCLUDE_DIRS
- ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/include CACHE PATH "Local Gflags headers"
- )
-
- if(CMAKE_VERSION VERSION_LESS "3.0.2")
- set(GFlags_LIBS
- ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
+ FetchContent_MakeAvailable(absl)
+ set(absl_FOUND TRUE)
+ set(ENABLE_GLOG_AND_GFLAGS OFF)
+ else()
+ find_package(absl)
+ set_package_properties(absl PROPERTIES
+ URL "https://github.com/abseil/abseil-cpp"
+ PURPOSE "Making use of Abseil's log and flags libraries."
+ TYPE OPTIONAL
)
- endif()
-
- if(NOT TARGET Gflags::gflags)
- file(MAKE_DIRECTORY ${GFlags_INCLUDE_DIRS})
- add_library(Gflags::gflags STATIC IMPORTED)
- add_dependencies(Gflags::gflags gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
- set_target_properties(Gflags::gflags PROPERTIES
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel"
- MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug
- MAP_IMPORTED_CONFIG_COVERAGE Debug
- MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo
- MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo
- MAP_IMPORTED_CONFIG_ASAN Debug
- IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags_debug${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
- INTERFACE_INCLUDE_DIRECTORIES ${GFlags_INCLUDE_DIRS}
- INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags$<$:_debug>${CMAKE_STATIC_LIBRARY_SUFFIX}
- )
- if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC)
- if(MSVC)
- set(MSVC_POSTFIX _static)
- endif()
- set_target_properties(Gflags::gflags PROPERTIES
- IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}_debug${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/Release/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
- INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}$<$:_debug>${CMAKE_STATIC_LIBRARY_SUFFIX}
+ if(absl_FOUND)
+ set_package_properties(absl PROPERTIES
+ DESCRIPTION "A collection of C++ library code designed to augment the C++ standard library (found: v${absl_VERSION})"
+ )
+ get_target_property(ABSL_BASE_LIBRARY absl::base INTERFACE_INCLUDE_DIRECTORIES)
+ get_filename_component(ABSL_ROOT_PATH "${ABSL_BASE_LIBRARY}" DIRECTORY)
+ message(STATUS "Found Abseil C++ libraries installed at ${ABSL_ROOT_PATH} (found version: v${absl_VERSION})")
+ else()
+ set_package_properties(absl PROPERTIES
+ DESCRIPTION "A collection of C++ library code designed to augment the C++ standard library"
+ )
+ endif()
+ if("${absl_VERSION}" VERSION_LESS ${GNSSSDR_ABSEIL_MIN_VERSION})
+ unset(absl_FOUND CACHE)
+ set(absl_FOUND FALSE)
+ set(ENABLE_GLOG_AND_GFLAGS ON)
+ set_package_properties(absl PROPERTIES
+ DESCRIPTION "A collection of C++ library code designed to augment the C++ standard library (found: v${absl_VERSION}, but it is too old and it will not be used)"
)
endif()
endif()
+endif()
- if(MSVC)
- target_link_libraries(Gflags::gflags INTERFACE shlwapi.lib)
+# Workaround for Clang 18+
+if(absl_FOUND AND NOT ENABLE_OWN_ABSEIL)
+ if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "17.99"))
+ add_compile_options(-fclang-abi-compat=17)
endif()
+endif()
- set(LOCAL_GFLAGS TRUE CACHE STRING "GFlags downloaded, built, and statically linked automatically" FORCE)
+if(NOT absl_FOUND)
+ set(ENABLE_GLOG_AND_GFLAGS ON)
+ ################################################################################
+ # gflags - https://github.com/gflags/gflags
+ ################################################################################
+ set(LOCAL_GFLAGS FALSE)
+ if(ENABLE_OWN_GLOG)
+ unset(Glog::glog CACHE)
+ unset(GLOG_FOUND CACHE)
+ unset(Gflags::gflags CACHE)
+ unset(GLAGS_FOUND CACHE)
+ set(GFLAGS_GREATER_20 TRUE)
+ else()
+ unset(Glog::glog CACHE)
+ unset(GLOG_FOUND CACHE)
+ find_package(GLOG)
+ if(GLOG_FOUND)
+ unset(GFLAGS_GREATER_20 CACHE)
+ find_package(GFLAGS)
+ endif()
+ endif()
set_package_properties(GFLAGS PROPERTIES
- PURPOSE "Gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} and Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ PURPOSE "Used for commandline flags management."
+ TYPE REQUIRED
)
- if(CMAKE_VERSION VERSION_LESS 3.2)
- set_property(TARGET Gflags::gflags APPEND PROPERTY
- INTERFACE_COMPILE_DEFINITIONS GFLAGS_OLD_NAMESPACE=1
- )
- endif()
-endif()
-
-
-
-################################################################################
-# glog - https://github.com/google/glog
-################################################################################
-set_package_properties(GLOG PROPERTIES
- PURPOSE "Used for runtime internal logging."
- TYPE REQUIRED
-)
-if(NOT GLOG_FOUND OR ${LOCAL_GFLAGS})
- message(STATUS " glog library has not been found")
if(NOT GFLAGS_FOUND)
- message(STATUS " or it is likely not linked to gflags.")
- endif()
- message(STATUS " glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked automatically")
- message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
- find_package(LIBUNWIND)
- set_package_properties(LIBUNWIND PROPERTIES
- PURPOSE "Needed by glog."
- TYPE OPTIONAL
- )
- if(NOT ${LOCAL_GFLAGS})
- if(NOT TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
- add_library(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} UNKNOWN IMPORTED)
+ set(ENABLE_OWN_GLOG ON)
+ if(GFLAGS_VERSION)
+ message(STATUS " A version of the gflags library equal or higher than v${GNSSSDR_GFLAGS_MIN_VERSION} has not been found.")
+ else()
+ message(STATUS " The gflags library has not been found.")
endif()
- set_property(TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} PROPERTY IMPORTED_LOCATION "${GFlags_LIBS}")
- string(REPLACE /include "" GFLAGS_PREFIX_PATH ${GFlags_INCLUDE_DIRS})
- else()
- set(GFLAGS_PREFIX_PATH ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
- endif()
- set(TARGET_GFLAGS gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
- set(GLOG_MAKE_PROGRAM ${CMAKE_COMMAND}
- "--build" "${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}"
- "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
- )
- if(CMAKE_GENERATOR STREQUAL Xcode)
- set(GLOG_MAKE_PROGRAM "xcodebuild" "-configuration"
- $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>
+ message(STATUS " gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded, built, and statically linked automatically")
+ message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
+ set(GFLAGS_BUILD_COMMAND ${CMAKE_COMMAND}
+ "--build" "${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}"
+ "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
)
- endif()
- if(CMAKE_TOOLCHAIN_FILE)
- set(GLOG_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
- endif()
+ if(CMAKE_GENERATOR STREQUAL Xcode)
+ set(GFLAGS_BUILD_COMMAND "xcodebuild" "-configuration" $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>)
+ endif()
+ if(CMAKE_TOOLCHAIN_FILE)
+ set(GFLAGS_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
+ endif()
- if(CMAKE_VERSION VERSION_LESS 3.3)
- if(CMAKE_VERSION VERSION_LESS 3.0)
- set(GLOG_MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM})
- set(GFLAGS_LIBRARIES_TO_LINK ${GFlags_LIBS})
- if(${LOCAL_GFLAGS})
- set(GFLAGS_LIBRARY_DIR_TO_LINK ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib)
- else()
- set(GFLAGS_LIBRARY_DIR_TO_LINK ${GFlags_LIBRARY_DIRS})
- endif()
- if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(GFLAGS_LIBRARIES_TO_LINK "${GFLAGS_LIBRARIES_TO_LINK} -lc++")
- set(GLOG_EXPORT_CXX_LIBRARIES "export CXXFLAGS=\"-stdlib=libc++\"")
- endif()
- if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- set(GLOG_EXPORT_C_COMPILER "export CC=clang")
- set(GLOG_EXPORT_CXX_COMPILER "export CXX=clang++")
- endif()
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
- set(GLOG_EXPORT_C_COMPILER "export CC=gcc")
- set(GLOG_EXPORT_CXX_COMPILER "export CXX=g++")
- endif()
- file(WRITE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/tmp/configure_with_gflags
-"#!/bin/sh
-export CPPFLAGS=-I${GFlags_INCLUDE_DIRS}
-export LDFLAGS=-L${GFLAGS_LIBRARY_DIR_TO_LINK}
-export LIBS=\"${GFLAGS_LIBRARIES_TO_LINK}\"
-${GLOG_EXPORT_CXX_LIBRARIES}
-${GLOG_EXPORT_C_COMPILER}
-${GLOG_EXPORT_CXX_COMPILER}
-cd ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/
-aclocal
-automake --add-missing
-autoreconf -vfi
-cd ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
-${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure --enable-shared=no"
- )
-
- file(COPY ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/tmp/configure_with_gflags
- DESTINATION ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
- GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
- )
-
- set(GLOG_CONFIGURE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure_with_gflags)
-
- # Ensure that aclocal and libtool are present
- if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
- if(EXISTS "/usr/bin/libtoolize")
- if(EXISTS "/usr/bin/aclocal" OR
- EXISTS "/usr/bin/aclocal-1.16" OR
- EXISTS "/usr/bin/aclocal-1.15" OR
- EXISTS "/usr/bin/aclocal-1.14" OR
- EXISTS "/usr/bin/aclocal-1.13" OR
- EXISTS "/usr/bin/aclocal-1.11" OR
- EXISTS "/usr/bin/aclocal-1.10")
- # Everything ok, we can move on
- else()
- message(" aclocal has not been found.")
- message(" You can try to install it by typing:")
- if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
- message(" sudo yum groupinstall 'Development Tools'")
- elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
- message(" sudo zypper install automake")
- else()
- message(" sudo apt-get install automake")
- endif()
- message(FATAL_ERROR "aclocal is required to build glog from source")
- endif()
- else()
- message(" libtool has not been found.")
- message(" You can try to install it by typing:")
- if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
- message(" sudo yum groupinstall 'Development Tools'")
- elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
- message(" sudo zypper install libtoool")
- else()
- message(" sudo apt-get install libtool")
- endif()
- message(FATAL_ERROR "libtool is required to build glog from source")
- endif()
- endif()
-
- if(GLOG_MAKE_PROGRAM MATCHES "ninja")
- find_program(GLOG_MAKE_EXECUTABLE make
- PATHS
- /usr/bin
- /usr/local/bin
- )
- if(NOT GLOG_MAKE_EXECUTABLE)
- message(FATAL_ERROR "make is required to build Glog from source.")
- endif()
- set(GLOG_MAKE_PROGRAM ${GLOG_MAKE_EXECUTABLE})
- endif()
- ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- DEPENDS ${TARGET_GFLAGS}
- PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- GIT_REPOSITORY https://github.com/google/glog/
- GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION}
- SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- CONFIGURE_COMMAND ${GLOG_CONFIGURE} --prefix=
- BUILD_COMMAND "${GLOG_MAKE_PROGRAM}"
+ if(CMAKE_VERSION VERSION_LESS 3.2)
+ ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ GIT_REPOSITORY https://github.com/gflags/gflags.git
+ GIT_TAG v${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_STATIC_LIBS=ON
+ -DBUILD_gflags_LIB=ON
+ -DBUILD_gflags_nothreads_LIB=ON
+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+ ${GFLAGS_TOOLCHAIN_FILE}
+ -DGFLAGS_NAMESPACE=google
+ -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
+ BUILD_COMMAND ${GFLAGS_BUILD_COMMAND}
UPDATE_COMMAND ""
PATCH_COMMAND ""
INSTALL_COMMAND ""
)
- set(GLOG_LIBRARIES
- ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/.libs/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ else()
+ set(GFLAGS_BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX})
+ if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL NoOptWithASM) OR
+ (CMAKE_BUILD_TYPE STREQUAL Coverage) OR (CMAKE_BUILD_TYPE STREQUAL ASAN)) # Workaround for Ninja generator
+ set(GFLAGS_BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags_debug${CMAKE_STATIC_LIBRARY_SUFFIX})
+ endif()
+ if((CMAKE_VERSION VERSION_GREATER 3.12.0) AND NOT (CMAKE_GENERATOR STREQUAL Xcode))
+ set(PARALLEL_BUILD "--parallel 2")
+ endif()
+ if(CMAKE_VERSION VERSION_LESS 4.0)
+ ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ GIT_REPOSITORY https://github.com/gflags/gflags.git
+ GIT_TAG v${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_STATIC_LIBS=ON
+ -DBUILD_gflags_LIB=ON
+ -DBUILD_gflags_nothreads_LIB=ON
+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+ ${GFLAGS_TOOLCHAIN_FILE}
+ -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
+ BUILD_COMMAND "${GFLAGS_BUILD_COMMAND} ${PARALLEL_BUILD}"
+ BUILD_BYPRODUCTS ${GFLAGS_BUILD_BYPRODUCTS}
+ UPDATE_COMMAND ""
+ PATCH_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+ # Note: -DBUILD_gflags_nothreads_LIB=ON is required as a workaround to a bug in gflags 2.2.2. This is fixed in gflags master branch
+ else()
+ ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ GIT_REPOSITORY https://github.com/gflags/gflags.git
+ GIT_TAG 52e94563eba1968783864942fedf6e87e3c611f4
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
+ CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_STATIC_LIBS=ON
+ -DBUILD_gflags_LIB=ON
+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+ ${GFLAGS_TOOLCHAIN_FILE}
+ -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
+ BUILD_COMMAND "${GFLAGS_BUILD_COMMAND} ${PARALLEL_BUILD}"
+ BUILD_BYPRODUCTS ${GFLAGS_BUILD_BYPRODUCTS}
+ UPDATE_COMMAND ""
+ PATCH_COMMAND ""
+ INSTALL_COMMAND ""
)
- set(GLOG_INCLUDE_DIRS
- ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src
- ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src
+ endif()
+ endif()
+
+ set(GFlags_INCLUDE_DIRS
+ ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/include CACHE PATH "Local Gflags headers"
+ )
+
+ if(CMAKE_VERSION VERSION_LESS "3.0.2")
+ set(GFlags_LIBS
+ ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
)
- else() # CMake > 3.0 but < 3.3
+ endif()
+
+ if(NOT TARGET Gflags::gflags)
+ file(MAKE_DIRECTORY ${GFlags_INCLUDE_DIRS})
+ add_library(Gflags::gflags STATIC IMPORTED)
+ add_dependencies(Gflags::gflags gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
+ set_target_properties(Gflags::gflags PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel"
+ MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug
+ MAP_IMPORTED_CONFIG_COVERAGE Debug
+ MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo
+ MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo
+ MAP_IMPORTED_CONFIG_ASAN Debug
+ IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags_debug${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}
+ INTERFACE_INCLUDE_DIRECTORIES ${GFlags_INCLUDE_DIRS}
+ INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags$<$:_debug>${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC)
+ if(MSVC)
+ set(MSVC_POSTFIX _static)
+ endif()
+ set_target_properties(Gflags::gflags PROPERTIES
+ IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}_debug${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/Release/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
+ INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}$<$:_debug>${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ endif()
+ endif()
+
+ if(MSVC)
+ target_link_libraries(Gflags::gflags INTERFACE shlwapi.lib)
+ endif()
+
+ set(LOCAL_GFLAGS TRUE CACHE STRING "GFlags downloaded, built, and statically linked automatically" FORCE)
+ set_package_properties(GFLAGS PROPERTIES
+ PURPOSE "Gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} and Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
+ if(CMAKE_VERSION VERSION_LESS 3.2)
+ set_property(TARGET Gflags::gflags APPEND PROPERTY
+ INTERFACE_COMPILE_DEFINITIONS GFLAGS_OLD_NAMESPACE=1
+ )
+ endif()
+ endif()
+
+
+
+ ################################################################################
+ # glog - https://github.com/google/glog
+ ################################################################################
+ set_package_properties(GLOG PROPERTIES
+ PURPOSE "Used for runtime internal logging."
+ TYPE REQUIRED
+ )
+ if(NOT GLOG_FOUND OR ${LOCAL_GFLAGS})
+ message(STATUS " glog library has not been found")
+ if(NOT GFLAGS_FOUND)
+ message(STATUS " or it is likely not linked to gflags.")
+ endif()
+ message(STATUS " glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked automatically")
+ message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
+ find_package(LIBUNWIND)
+ set_package_properties(LIBUNWIND PROPERTIES
+ PURPOSE "Needed by glog."
+ TYPE OPTIONAL
+ )
+ if(NOT ${LOCAL_GFLAGS})
+ if(NOT TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
+ add_library(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} UNKNOWN IMPORTED)
+ endif()
+ set_property(TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} PROPERTY IMPORTED_LOCATION "${GFlags_LIBS}")
+ string(REPLACE /include "" GFLAGS_PREFIX_PATH ${GFlags_INCLUDE_DIRS})
+ else()
+ set(GFLAGS_PREFIX_PATH ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
+ endif()
+ set(TARGET_GFLAGS gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION})
+ set(GLOG_MAKE_PROGRAM ${CMAKE_COMMAND}
+ "--build" "${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}"
+ "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
+ )
+ if(CMAKE_GENERATOR STREQUAL Xcode)
+ set(GLOG_MAKE_PROGRAM "xcodebuild" "-configuration"
+ $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>
+ )
+ endif()
+ if(CMAKE_TOOLCHAIN_FILE)
+ set(GLOG_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
+ endif()
+
+ if(CMAKE_VERSION VERSION_LESS 3.3)
+ if(CMAKE_VERSION VERSION_LESS 3.0)
+ set(GLOG_MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM})
+ set(GFLAGS_LIBRARIES_TO_LINK ${GFlags_LIBS})
+ if(${LOCAL_GFLAGS})
+ set(GFLAGS_LIBRARY_DIR_TO_LINK ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib)
+ else()
+ set(GFLAGS_LIBRARY_DIR_TO_LINK ${GFlags_LIBRARY_DIRS})
+ endif()
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ set(GFLAGS_LIBRARIES_TO_LINK "${GFLAGS_LIBRARIES_TO_LINK} -lc++")
+ set(GLOG_EXPORT_CXX_LIBRARIES "export CXXFLAGS=\"-stdlib=libc++\"")
+ endif()
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set(GLOG_EXPORT_C_COMPILER "export CC=clang")
+ set(GLOG_EXPORT_CXX_COMPILER "export CXX=clang++")
+ endif()
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ set(GLOG_EXPORT_C_COMPILER "export CC=gcc")
+ set(GLOG_EXPORT_CXX_COMPILER "export CXX=g++")
+ endif()
+ file(WRITE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/tmp/configure_with_gflags
+ "#!/bin/sh
+ export CPPFLAGS=-I${GFlags_INCLUDE_DIRS}
+ export LDFLAGS=-L${GFLAGS_LIBRARY_DIR_TO_LINK}
+ export LIBS=\"${GFLAGS_LIBRARIES_TO_LINK}\"
+ ${GLOG_EXPORT_CXX_LIBRARIES}
+ ${GLOG_EXPORT_C_COMPILER}
+ ${GLOG_EXPORT_CXX_COMPILER}
+ cd ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/
+ aclocal
+ automake --add-missing
+ autoreconf -vfi
+ cd ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure --enable-shared=no"
+ )
+
+ file(COPY ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/tmp/configure_with_gflags
+ DESTINATION ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
+ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ )
+
+ set(GLOG_CONFIGURE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure_with_gflags)
+
+ # Ensure that aclocal and libtool are present
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
+ if(EXISTS "/usr/bin/libtoolize")
+ if(EXISTS "/usr/bin/aclocal" OR
+ EXISTS "/usr/bin/aclocal-1.16" OR
+ EXISTS "/usr/bin/aclocal-1.15" OR
+ EXISTS "/usr/bin/aclocal-1.14" OR
+ EXISTS "/usr/bin/aclocal-1.13" OR
+ EXISTS "/usr/bin/aclocal-1.11" OR
+ EXISTS "/usr/bin/aclocal-1.10")
+ # Everything ok, we can move on
+ else()
+ message(" aclocal has not been found.")
+ message(" You can try to install it by typing:")
+ if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
+ message(" sudo yum groupinstall 'Development Tools'")
+ elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
+ message(" sudo zypper install automake")
+ else()
+ message(" sudo apt install automake")
+ endif()
+ message(FATAL_ERROR "aclocal is required to build glog from source")
+ endif()
+ else()
+ message(" libtool has not been found.")
+ message(" You can try to install it by typing:")
+ if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
+ message(" sudo yum groupinstall 'Development Tools'")
+ elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
+ message(" sudo zypper install libtoool")
+ else()
+ message(" sudo apt install libtool")
+ endif()
+ message(FATAL_ERROR "libtool is required to build glog from source")
+ endif()
+ endif()
+
+ if(GLOG_MAKE_PROGRAM MATCHES "ninja")
+ find_program(GLOG_MAKE_EXECUTABLE make
+ PATHS
+ /usr/bin
+ /usr/local/bin
+ )
+ if(NOT GLOG_MAKE_EXECUTABLE)
+ message(FATAL_ERROR "make is required to build Glog from source.")
+ endif()
+ set(GLOG_MAKE_PROGRAM ${GLOG_MAKE_EXECUTABLE})
+ endif()
+ ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ DEPENDS ${TARGET_GFLAGS}
+ PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ GIT_REPOSITORY https://github.com/google/glog/
+ GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION}
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ CONFIGURE_COMMAND ${GLOG_CONFIGURE} --prefix=
+ BUILD_COMMAND "${GLOG_MAKE_PROGRAM}"
+ UPDATE_COMMAND ""
+ PATCH_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+ set(GLOG_LIBRARIES
+ ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/.libs/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ set(GLOG_INCLUDE_DIRS
+ ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src
+ ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src
+ )
+ else() # CMake > 3.0 but < 3.3
+ ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ DEPENDS ${TARGET_GFLAGS}
+ PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ GIT_REPOSITORY https://github.com/google/glog/
+ GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION}
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+ -DCMAKE_PREFIX_PATH=${GFLAGS_PREFIX_PATH}
+ ${GLOG_TOOLCHAIN_FILE}
+ -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
+ BUILD_COMMAND ${GLOG_MAKE_PROGRAM}
+ UPDATE_COMMAND ""
+ PATCH_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+ set(GLOG_INCLUDE_DIRS
+ ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src
+ ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
+ ${GFlags_INCLUDE_DIRS}
+ )
+ endif()
+ else() # CMake > 3.3
+ set(GLOG_BUILD_BYPRODUCTS
+ ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL NoOptWithASM) OR
+ (CMAKE_BUILD_TYPE STREQUAL Coverage) OR (CMAKE_BUILD_TYPE STREQUAL ASAN)) # Workaround for Ninja generator
+ set(GLOG_BUILD_BYPRODUCTS
+ ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ endif()
+ if((CMAKE_VERSION VERSION_GREATER 3.12.0) AND NOT (CMAKE_GENERATOR STREQUAL Xcode) AND NOT CMAKE_CROSSCOMPILING)
+ set(PARALLEL_BUILD "--parallel 2")
+ endif()
+ if(GNSSSDR_GLOG_LOCAL_VERSION VERSION_GREATER 0.5.0)
+ set(GLOG_GTEST -DWITH_GTEST=FALSE)
+ endif()
+ if(NOT (CMAKE_VERSION VERSION_LESS "3.22"))
+ set(GNSSSDR_GLOG_LOCAL_GFLAGS -DCMAKE_REQUIRED_INCLUDES=${GFlags_INCLUDE_DIRS})
+ endif()
ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION}
DEPENDS ${TARGET_GFLAGS}
PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
@@ -1698,11 +1920,15 @@ ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configu
SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_PREFIX_PATH=${GFLAGS_PREFIX_PATH}
${GLOG_TOOLCHAIN_FILE}
-DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
- BUILD_COMMAND ${GLOG_MAKE_PROGRAM}
+ -DBUILD_SHARED_LIBS=OFF
+ ${GLOG_GTEST}
+ -DBUILD_TESTING=OFF
+ "${GNSSSDR_GLOG_LOCAL_GFLAGS}"
+ BUILD_COMMAND "${GLOG_MAKE_PROGRAM} ${PARALLEL_BUILD}"
+ BUILD_BYPRODUCTS ${GLOG_BUILD_BYPRODUCTS}
UPDATE_COMMAND ""
PATCH_COMMAND ""
INSTALL_COMMAND ""
@@ -1713,111 +1939,64 @@ ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configu
${GFlags_INCLUDE_DIRS}
)
endif()
- else() # CMake > 3.3
- set(GLOG_BUILD_BYPRODUCTS
- ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- )
- if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL NoOptWithASM) OR
- (CMAKE_BUILD_TYPE STREQUAL Coverage) OR (CMAKE_BUILD_TYPE STREQUAL ASAN)) # Workaround for Ninja generator
- set(GLOG_BUILD_BYPRODUCTS
- ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX}
- )
- endif()
- if((CMAKE_VERSION VERSION_GREATER 3.12.0) AND NOT (CMAKE_GENERATOR STREQUAL Xcode) AND NOT CMAKE_CROSSCOMPILING)
- set(PARALLEL_BUILD "--parallel 2")
- endif()
- if(GNSSSDR_GLOG_LOCAL_VERSION VERSION_GREATER 0.5.0)
- set(GLOG_GTEST -DWITH_GTEST=FALSE)
- endif()
- ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- DEPENDS ${TARGET_GFLAGS}
- PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- GIT_REPOSITORY https://github.com/google/glog/
- GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION}
- SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- -DCMAKE_PREFIX_PATH=${GFLAGS_PREFIX_PATH}
- ${GLOG_TOOLCHAIN_FILE}
- -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
- -DBUILD_SHARED_LIBS=OFF
- ${GLOG_GTEST}
- -DBUILD_TESTING=OFF
- BUILD_COMMAND "${GLOG_MAKE_PROGRAM} ${PARALLEL_BUILD}"
- BUILD_BYPRODUCTS ${GLOG_BUILD_BYPRODUCTS}
- UPDATE_COMMAND ""
- PATCH_COMMAND ""
- INSTALL_COMMAND ""
- )
- set(GLOG_INCLUDE_DIRS
- ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src
- ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}
- ${GFlags_INCLUDE_DIRS}
- )
- endif()
- add_dependencies(glog-${GNSSSDR_GLOG_LOCAL_VERSION} Gflags::gflags)
+ add_dependencies(glog-${GNSSSDR_GLOG_LOCAL_VERSION} Gflags::gflags)
- # Create Glog::glog target
- if(NOT TARGET Glog::glog)
- file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src)
- file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION})
- add_library(Glog::glog STATIC IMPORTED)
- add_dependencies(Glog::glog glog-${GNSSSDR_GLOG_LOCAL_VERSION})
- if(CMAKE_VERSION VERSION_LESS 3.0)
- set_target_properties(Glog::glog PROPERTIES
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_LOCATION "${GLOG_LIBRARIES}"
- INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
- INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "${GLOG_LIBRARIES}"
- )
- else()
- set_target_properties(Glog::glog PROPERTIES
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel"
- MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug
- MAP_IMPORTED_CONFIG_COVERAGE Debug
- MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo
- MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo
- MAP_IMPORTED_CONFIG_ASAN Debug
- IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX}
- )
- if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC)
+ # Create Glog::glog target
+ if(NOT TARGET Glog::glog)
+ file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src)
+ file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION})
+ add_library(Glog::glog STATIC IMPORTED)
+ add_dependencies(Glog::glog glog-${GNSSSDR_GLOG_LOCAL_VERSION})
+ if(CMAKE_VERSION VERSION_LESS 3.0)
set_target_properties(Glog::glog PROPERTIES
- IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/Release/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
- INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}glog$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${GLOG_LIBRARIES}"
+ INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES "${GLOG_LIBRARIES}"
)
+ else()
+ set_target_properties(Glog::glog PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel"
+ MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug
+ MAP_IMPORTED_CONFIG_COVERAGE Debug
+ MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo
+ MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo
+ MAP_IMPORTED_CONFIG_ASAN Debug
+ IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC)
+ set_target_properties(Glog::glog PROPERTIES
+ IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/Release/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX}
+ INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}glog$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
+ endif()
endif()
endif()
- endif()
+ if(NOT (CMAKE_VERSION VERSION_LESS "3.22"))
+ set_target_properties(Glog::glog PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS "GLOG_USE_GLOG_EXPORT;GLOG_USE_GFLAGS"
+ INTERFACE_COMPILE_FEATURES "cxx_std_14")
+ endif()
- if(LIBUNWIND_FOUND)
- target_link_libraries(Glog::glog INTERFACE Libunwind::libunwind)
- endif()
- set(LOCAL_GLOG TRUE CACHE STRING "Glog downloaded, built, and statically linked automatically" FORCE)
+ if(LIBUNWIND_FOUND)
+ target_link_libraries(Glog::glog INTERFACE Libunwind::libunwind)
+ endif()
+ set(LOCAL_GLOG TRUE CACHE STRING "Glog downloaded, built, and statically linked automatically" FORCE)
- set_package_properties(GLOG PROPERTIES
- PURPOSE "Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
- )
-endif()
-
-if(NOT ENABLE_LOG)
- message(STATUS "Internal logging is not enabled")
- if(CMAKE_VERSION VERSION_GREATER 3.11.0)
- target_compile_definitions(Glog::glog INTERFACE -DGOOGLE_STRIP_LOG=1)
- else()
- set_property(TARGET Glog::glog APPEND PROPERTY
- INTERFACE_COMPILE_DEFINITIONS GOOGLE_STRIP_LOG=1
+ set_package_properties(GLOG PROPERTIES
+ PURPOSE "Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
)
endif()
endif()
@@ -1856,7 +2035,7 @@ if(NOT BLAS_FOUND)
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
message(" sudo yum install blas-devel")
else()
- message(" sudo apt-get install libblas-dev")
+ message(" sudo apt install libblas-dev")
endif()
endif()
message(FATAL_ERROR "BLAS is required to build gnss-sdr")
@@ -1893,7 +2072,7 @@ if(NOT LAPACK_FOUND)
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(" sudo zypper install lapack-devel")
else()
- message(" sudo apt-get install liblapack-dev")
+ message(" sudo apt install liblapack-dev")
endif()
endif()
message(FATAL_ERROR "LAPACK is required to build gnss-sdr")
@@ -1909,7 +2088,7 @@ endif()
################################################################################
-# Armadillo - http://arma.sourceforge.net/
+# Armadillo - https://arma.sourceforge.net/
################################################################################
if(ENABLE_OWN_ARMADILLO)
unset(Armadillo::armadillo CACHE)
@@ -1921,7 +2100,7 @@ else()
endif()
set_package_properties(Armadillo PROPERTIES
- URL "http://arma.sourceforge.net/"
+ URL "https://arma.sourceforge.net/"
PURPOSE "Used for matrix computations."
TYPE REQUIRED
)
@@ -1972,7 +2151,7 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(STATUS " sudo zypper install gcc-fortran")
else()
- message(STATUS " sudo apt-get install gfortran")
+ message(STATUS " sudo apt install gfortran")
endif()
message(FATAL_ERROR "gfortran is required to build gnss-sdr")
endif()
@@ -2025,7 +2204,7 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug>
-DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE}
- -DBUILD_SHARED_LIBS=OFF
+ -DSTATIC_LIB=ON
-DBUILD_SMOKE_TEST=OFF
-DALLOW_BLAS_LAPACK_MACOS=ON
${ARMADILLO_CXX_VERSION}
@@ -2079,21 +2258,21 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
# Fix for macOS
find_library(ARPACK_LIBRARY
NAMES arpack
- PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64
+ PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} ${GNSSSDR_LIB_PATHS}
)
if(ARPACK_LIBRARY)
target_link_libraries(Armadillo::armadillo INTERFACE ${ARPACK_LIBRARY})
endif()
find_library(FLEXIBLAS_LIBRARY
NAMES flexiblas
- PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64
+ PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} ${GNSSSDR_LIB_PATHS}
)
if(FLEXIBLAS_LIBRARY)
target_link_libraries(Armadillo::armadillo INTERFACE ${FLEXIBLAS_LIBRARY})
endif()
find_library(SUPERLU_LIBRARY
NAMES superlu
- PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64
+ PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} ${GNSSSDR_LIB_PATHS}
)
if(SUPERLU_LIBRARY)
target_link_libraries(Armadillo::armadillo INTERFACE ${SUPERLU_LIBRARY})
@@ -2103,96 +2282,9 @@ endif()
################################################################################
-# GnuTLS - https://www.gnutls.org/
+# OpenSSL https://www.openssl.org/ or GnuTLS - https://www.gnutls.org/
################################################################################
-find_package(GnuTLS)
-set_package_properties(GnuTLS PROPERTIES
- URL "https://www.gnutls.org/"
- PURPOSE "Used for the SUPL protocol implementation."
- TYPE REQUIRED
-)
-if(GnuTLS_FOUND AND GNUTLS_VERSION_STRING)
- set_package_properties(GnuTLS PROPERTIES
- DESCRIPTION "Transport Layer Security Library (found: v${GNUTLS_VERSION_STRING})"
- )
-else()
- set_package_properties(GnuTLS PROPERTIES
- DESCRIPTION "Transport Layer Security Library"
- )
-endif()
-find_library(GNUTLS_OPENSSL_LIBRARY
- NAMES gnutls-openssl libgnutls-openssl.so.27
- PATHS
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/i386-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/i686-gnu
- /usr/lib/i686-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i686-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/sh4-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
-)
-if(NOT GNUTLS_OPENSSL_LIBRARY)
- if(GnuTLS_FOUND)
- message(STATUS " But it was not built with openssl compatibility.")
- endif()
- message(STATUS " Looking for OpenSSL instead...")
- if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(OPENSSL_ROOT_DIR /usr/local/opt/openssl) # Trick for Homebrew
- endif()
- find_package(OpenSSL)
- set_package_properties(OpenSSL PROPERTIES
- URL "https://www.openssl.org"
- DESCRIPTION "Cryptography and SSL/TLS Toolkit (found: v${OPENSSL_VERSION})"
- PURPOSE "Used for the SUPL protocol implementation."
- TYPE REQUIRED
- )
- if(OPENSSL_FOUND)
- set_package_properties(GnuTLS PROPERTIES
- PURPOSE "Not found, but OpenSSL can replace it."
- )
- set(GNUTLS_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR})
- set(GNUTLS_LIBRARIES "")
- set(GNUTLS_OPENSSL_LIBRARY ${OPENSSL_SSL_LIBRARY})
- else()
- message(" The GnuTLS library with openssl compatibility enabled has not been found.")
- message(" You can try to install the required libraries by typing:")
- if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
- if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
- message(" sudo yum install openssl-devel")
- else()
- message(" sudo apt-get install libgnutls28-dev")
- endif()
- endif()
- if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- message(" 'sudo port install gnutls', if you are using Macports, or")
- message(" 'brew install openssl', if you are using Homebrew.")
- endif()
- message(FATAL_ERROR "GnuTLS libraries with openssl compatibility are required to build gnss-sdr")
- endif()
-endif()
+include(GnsssdrCrypto)
@@ -2263,7 +2355,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(STATUS " sudo zypper install hdf5-devel")
else()
- message(STATUS " sudo apt-get install libhdf5-dev")
+ message(STATUS " sudo apt install libhdf5-dev")
endif()
endif()
message(FATAL_ERROR "*** The hdf5 library is required to build Matio from source.")
@@ -2280,7 +2372,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(" sudo zypper install libtoool")
else()
- message(" sudo apt-get install libtool")
+ message(" sudo apt install libtool")
endif()
message(FATAL_ERROR "libtool is required to build matio from source.")
endif()
@@ -2300,30 +2392,30 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(" sudo zypper install automake")
else()
- message(" sudo apt-get install automake")
+ message(" sudo apt install automake")
endif()
message(FATAL_ERROR "aclocal is required to build matio from source.")
endif()
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- if((NOT EXISTS /usr/local/bin/glibtoolize AND NOT EXISTS /opt/local/bin/glibtoolize) OR
- (NOT EXISTS /usr/local/bin/aclocal AND NOT EXISTS /opt/local/bin/aclocal))
+ if((NOT EXISTS /usr/local/bin/glibtoolize AND NOT EXISTS ${MACOS_PACKAGES_PREFIX}/bin/glibtoolize) OR
+ (NOT EXISTS /usr/local/bin/aclocal AND NOT EXISTS ${MACOS_PACKAGES_PREFIX}/bin/aclocal))
message(" libtool/automake tools have not been found.")
message(" You can try to install them by typing:")
message(" 'sudo port install libtool automake', if you use Macports, or 'brew install libtool automake', if you use Homebrew")
message(FATAL_ERROR "libtool/automake tools are required to build matio from source")
endif()
if(CMAKE_GENERATOR STREQUAL Xcode)
- if(EXISTS /opt/local/bin/glibtoolize OR EXISTS /opt/local/bin/aclocal)
+ if(EXISTS ${MACOS_PACKAGES_PREFIX}/bin/glibtoolize OR EXISTS ${MACOS_PACKAGES_PREFIX}/bin/aclocal)
if(NOT EXISTS /usr/local/bin/glibtoolize OR NOT EXISTS /usr/local/bin/aclocal)
message(" WARNING: libtool/atomake binaries cannot be found by Xcode. Please do:")
- message("sudo ln -s /opt/local/bin/glibtoolize /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/aclocal /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/autom4te /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/automake /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/autoconf /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/autoreconf /usr/local/bin/") # not needed by Matio, but by Protocol Buffers
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/glibtoolize /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/aclocal /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/autom4te /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/automake /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/autoconf /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/autoreconf /usr/local/bin/") # not needed by Matio, but by Protocol Buffers
message(FATAL_ERROR "libtool/automake tools cannot be found by Xcode")
endif()
endif()
@@ -2334,8 +2426,8 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
get_filename_component(HDF5_BASE_DIR2 ${HDF5_FIRST_DIR} DIRECTORY)
get_filename_component(HDF5_BASE_DIR ${HDF5_BASE_DIR2} DIRECTORY)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- if(EXISTS /opt/local/include/hdf5.h)
- set(HDF5_BASE_DIR /opt/local)
+ if(EXISTS ${MACOS_PACKAGES_PREFIX}/include/hdf5.h)
+ set(HDF5_BASE_DIR ${MACOS_PACKAGES_PREFIX})
endif()
if(EXISTS /usr/local/include/hdf5.h)
set(HDF5_BASE_DIR /usr/local)
@@ -2386,6 +2478,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
-DHDF5_USE_STATIC_LIBRARIES=OFF
-DMATIO_DEFAULT_FILE_VERSION:STRING=7.3
-DMATIO_MAT73=ON
+ -DMATIO_BUILD_TESTING=OFF
-DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/matio
BUILD_COMMAND ${CMAKE_COMMAND}
"--build" "${GNSSSDR_BINARY_DIR}/matio"
@@ -2517,9 +2610,29 @@ endif()
################################################################################
# Protocol Buffers https://github.com/protocolbuffers/protobuf
################################################################################
-find_package(Protobuf)
+if(((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")) OR
+ ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")) OR
+ ((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11")))
+ if(CMAKE_VERSION VERSION_LESS 3.19)
+ find_package(Protobuf)
+ else()
+ find_package(Protobuf 3.0...21.12)
+ endif()
+else()
+ find_package(Protobuf)
+
+ if((CMAKE_BUILD_TYPE STREQUAL "Debug") AND Protobuf_FOUND AND absl_FOUND)
+ # This Regular Expression is used to convert the version string provided by `find_package(Protobuf)` into the
+ # appropriate binary version string. So, for instance, "4.25.3" becomes "25.3.0".
+ string(REGEX REPLACE "^[0-9]+\.([0-9]+\.[0-9]+)$" "\\1.0" PROTOBUF_LIBRARY_VERSION "${Protobuf_VERSION}")
+ if((PROTOBUF_LIBRARY_VERSION VERSION_GREATER_EQUAL "22") AND (PROTOBUF_LIBRARY_VERSION VERSION_LESS "26"))
+ pkg_check_modules(protobuf REQUIRED IMPORTED_TARGET protobuf=${PROTOBUF_LIBRARY_VERSION})
+ target_link_libraries(protobuf::libprotobuf INTERFACE PkgConfig::protobuf)
+ endif()
+ endif()
+endif()
set_package_properties(Protobuf PROPERTIES
- URL "https://developers.google.com/protocol-buffers/"
+ URL "https://protobuf.dev/"
PURPOSE "Used to serialize output data in a way that can be read by other applications."
TYPE REQUIRED
)
@@ -2624,12 +2737,6 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
endif()
else()
if(CMAKE_VERSION VERSION_GREATER "3.13")
- find_package(absl)
- set_package_properties(absl PROPERTIES
- URL "https://github.com/abseil/abseil-cpp"
- PURPOSE "Abseil-cpp >= 20230117 required to be installed before building Protocol Buffers >22.x on the fly."
- TYPE OPTIONAL
- )
if(absl_FOUND)
if(absl_VERSION)
if(${absl_VERSION} VERSION_LESS "20230117")
@@ -2641,6 +2748,10 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
set(absl_FOUND OFF)
endif()
endif()
+ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0"))
+ unset(absl_FOUND CACHE)
+ set(absl_FOUND OFF)
+ endif()
if(absl_FOUND)
set_package_properties(absl PROPERTIES
DESCRIPTION "An open-source collection of C++ code designed to augment the C++ standard library (found: v${absl_VERSION})"
@@ -2655,7 +2766,9 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
DESCRIPTION "An open-source collection of C++ code designed to augment the C++ standard library"
)
endif()
- message(STATUS "The Abseil library (https://github.com/abseil/abseil-cpp) >= v20230117 is required to be installed before building Protocol Buffers >22.x on the fly.")
+ if(NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0"))
+ message(STATUS "The Abseil library (https://github.com/abseil/abseil-cpp) >= v20230117 is required to be installed before building Protocol Buffers >22.x on the fly.")
+ endif()
message(STATUS " Instead, Protocol Buffers v21.12 will be built, which does not require Abseil.")
set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "21.12")
endif()
@@ -2670,7 +2783,7 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(" sudo zypper install libtoool")
else()
- message(" sudo apt-get install libtool")
+ message(" sudo apt install libtool")
endif()
message(FATAL_ERROR "libtool is required to build Protocol Buffers from source")
endif()
@@ -2690,29 +2803,29 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
message(" sudo zypper install automake")
else()
- message(" sudo apt-get install automake")
+ message(" sudo apt install automake")
endif()
message(FATAL_ERROR "aclocal is required to build Protocol Buffers from source")
endif()
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- if((NOT EXISTS /usr/local/bin/glibtoolize AND NOT EXISTS /opt/local/bin/glibtoolize) OR
- (NOT EXISTS /usr/local/bin/aclocal AND NOT EXISTS /opt/local/bin/aclocal))
+ if((NOT EXISTS /usr/local/bin/glibtoolize AND NOT EXISTS ${MACOS_PACKAGES_PREFIX}/bin/glibtoolize) OR
+ (NOT EXISTS /usr/local/bin/aclocal AND NOT EXISTS ${MACOS_PACKAGES_PREFIX}/bin/aclocal))
message(" libtool/automake tools have not been found.")
message(" You can try to install them by typing:")
message(" 'sudo port install libtool automake', if you use Macports, or 'brew install libtool automake', if you use Homebrew")
message(FATAL_ERROR "libtool/automake tools are required to build Protocol Buffers from source")
endif()
if(CMAKE_GENERATOR STREQUAL Xcode)
- if(EXISTS /opt/local/bin/glibtoolize OR EXISTS /opt/local/bin/aclocal)
+ if(EXISTS ${MACOS_PACKAGES_PREFIX}/bin/glibtoolize OR EXISTS ${MACOS_PACKAGES_PREFIX}/bin/aclocal)
if(NOT EXISTS /usr/local/bin/glibtoolize OR NOT EXISTS /usr/local/bin/aclocal)
message(" WARNING: libtool/automake binaries cannot be found by Xcode. Please do:")
- message("sudo ln -s /opt/local/bin/glibtoolize /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/aclocal /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/autom4te /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/automake /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/autoconf /usr/local/bin/")
- message("sudo ln -s /opt/local/bin/autoreconf /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/glibtoolize /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/aclocal /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/autom4te /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/automake /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/autoconf /usr/local/bin/")
+ message("sudo ln -s ${MACOS_PACKAGES_PREFIX}/bin/autoreconf /usr/local/bin/")
message(FATAL_ERROR "libtool/automake tools cannot be found by Xcode")
endif()
endif()
@@ -2768,8 +2881,8 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
if(NOT TARGET protobuf::protoc)
add_executable(protobuf::protoc IMPORTED)
- add_dependencies(protobuf::protoc protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION})
endif()
+ add_dependencies(protobuf::protoc protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION})
unset(Protobuf_PROTOC_EXECUTABLE)
set(PROTOBUF_PROTOC_EXECUTABLE "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc")
set_target_properties(protobuf::protoc PROPERTIES
@@ -2952,7 +3065,7 @@ else()
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
message(STATUS " or simply by doing 'sudo yum install doxygen-latex'.")
else()
- message(STATUS " or simply by doing 'sudo apt-get install doxygen-latex'.")
+ message(STATUS " or simply by doing 'sudo apt install doxygen-latex'.")
endif()
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@@ -3205,7 +3318,7 @@ set_package_properties(LIBIIO PROPERTIES
PURPOSE "Used for communication with the AD9361 chipset."
TYPE OPTIONAL
)
-if(ENABLE_AD9361 OR ENABLE_FMCOMMS2)
+if(ENABLE_AD9361 OR ENABLE_FMCOMMS2 OR ENABLE_PLUTOSDR)
if(NOT LIBIIO_FOUND)
message(STATUS "libiio not found, its installation is required.")
message(STATUS "Please build and install the following projects:")
@@ -3219,6 +3332,151 @@ if(ENABLE_AD9361 OR ENABLE_FMCOMMS2)
else()
message(FATAL_ERROR "libiio is required for building gnss-sdr with -DENABLE_AD9361=ON.")
endif()
+ else()
+ if(ENABLE_AD9361)
+ set(ENABLE_FPGA ON)
+ endif()
+ endif()
+endif()
+
+
+
+################################################################################
+# ION GNSS-SDR Metadata Standard https://sdr.ion.org/ (OPTIONAL)
+################################################################################
+if(CMAKE_VERSION VERSION_LESS 3.14)
+ set(ENABLE_ION OFF) # FetchContent_MakeAvailable is available from CMake 3.14
+endif()
+if(ENABLE_ION)
+ include(FetchContent)
+ set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
+ FetchContent_Declare(
+ gnss_metadata_standard
+ GIT_REPOSITORY https://github.com/IonMetadataWorkingGroup/GNSS-Metadata-Standard
+ GIT_TAG 220d116e10db5e403e21b77a1fa25aa35feda198
+ SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gnss-metadata-standard
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/gnss-metadata-standard
+ BINARY_DIR ${GNSSSDR_BINARY_DIR}/gnss-metadata-standard
+ )
+ FetchContent_MakeAvailable(gnss_metadata_standard)
+
+ if(NOT TARGET ION::ion)
+ add_library(ION::ion STATIC IMPORTED)
+ add_dependencies(ION::ion gnss_metadata_standard)
+ if(CMAKE_GENERATOR STREQUAL "Xcode")
+ set_target_properties(ION::ion PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION_DEBUG "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ IMPORTED_LOCATION_RELEASE "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Release/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ IMPORTED_LOCATION_RELWITHDEBINFO "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ IMPORTED_LOCATION_MINSIZEREL "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GNSSSDR_BINARY_DIR}/thirdparty/gnss-metadata-standard/source/api/inc"
+ )
+ set_property(TARGET ION::ion APPEND PROPERTY
+ INTERFACE_LINK_LIBRARIES
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Release/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Release/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>"
+ )
+ else()
+ set_target_properties(ION::ion PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GNSSSDR_BINARY_DIR}/thirdparty/gnss-metadata-standard/source/api/inc"
+ INTERFACE_LINK_LIBRARIES "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ )
+ endif()
+ endif()
+endif()
+
+
+
+#####################################################################
+# Check signal sources related to FPGA only.
+#####################################################################
+if(ENABLE_MAX2771 AND NOT ENABLE_FPGA)
+ message(STATUS "The SPIdev driver is enabled, but the FPGA is not enabled. The FPGA is required when using the SPIdev driver.")
+ if(ENABLE_PACKAGING)
+ set(ENABLE_MAX2771 OFF)
+ else()
+ message(FATAL_ERROR "ENABLE_MAX2771 can only be set when ENABLE_FPGA is also set.")
+ endif()
+endif()
+if(ENABLE_DMA_PROXY AND NOT ENABLE_FPGA)
+ message(STATUS "The DMA Proxy driver is enabled, but the FPGA is not enabled. The FPGA is required when using the DMA Proxy driver.")
+ if(ENABLE_PACKAGING)
+ set(ENABLE_DMA_PROXY OFF)
+ else()
+ message(FATAL_ERROR "ENABLE_DMA_PROXY can only be set when ENABLE_FPGA is also set.")
+ endif()
+endif()
+
+
+
+#####################################################################
+# spidev driver - OPTIONAL
+# Linux kernel driver that provides user-space access to Serial
+# Peripheral Interface)
+#####################################################################
+if(ENABLE_MAX2771)
+ if(DEFINED ENV{SDKTARGETSYSROOT})
+ set(TARGET_ROOTFS_PATH $ENV{SDKTARGETSYSROOT})
+ else()
+ string(REGEX MATCH "(.*/tmp-glibc)" MATCHED_PATH "${GNURADIO_RUNTIME_INCLUDE_DIRS}")
+ if(MATCHED_PATH)
+ set(TARGET_ROOTFS_PATH "${MATCHED_PATH}/sysroots-components")
+ else()
+ set(TARGET_ROOTFS_PATH "")
+ endif()
+ endif()
+ file(GLOB_RECURSE SPIDEV_FILE "${TARGET_ROOTFS_PATH}/*/spidev.h")
+ if(EXISTS "${SPIDEV_FILE}")
+ message(STATUS "SPIdev driver found: ${SPIDEV_FILE}")
+ set(ENABLE_FPGA ON)
+ else()
+ message(STATUS "SPIdev driver not found, its installation is required.")
+ if(ENABLE_PACKAGING)
+ set(ENABLE_MAX2771 OFF)
+ else()
+ message(FATAL_ERROR "SPIdev driver is required for building gnss-sdr with -DENABLE_MAX2271=ON.")
+ endif()
+ endif()
+endif()
+
+
+
+#####################################################################
+# DMA Proxy driver - OPTIONAL
+# Simplified and efficient interface for user-space applications
+# to leverage DMA capabilities for Xilinx FPGA and SoC systems
+#####################################################################
+if(ENABLE_DMA_PROXY)
+ if(DEFINED ENV{SDKTARGETSYSROOT})
+ set(TARGET_ROOTFS_PATH $ENV{SDKTARGETSYSROOT})
+ else()
+ string(REGEX MATCH "(.*/tmp-glibc)" MATCHED_PATH "${GNURADIO_RUNTIME_INCLUDE_DIRS}")
+ if(MATCHED_PATH)
+ set(TARGET_ROOTFS_PATH "${MATCHED_PATH}/sysroots-components")
+ else()
+ set(TARGET_ROOTFS_PATH "")
+ endif()
+ endif()
+ file(GLOB_RECURSE DMA_PROXY_FILE "${TARGET_ROOTFS_PATH}/*/dma-proxy.ko")
+ if(EXISTS "${DMA_PROXY_FILE}")
+ message(STATUS "Found dma-proxy.ko file: ${DMA_PROXY_FILE}")
+ set(ENABLE_FPGA ON)
+ else()
+ if(ENABLE_PACKAGING)
+ set(ENABLE_DMA_PROXY OFF)
+ else()
+ message(FATAL_ERROR "DMA Proxy driver is required for building gnss-sdr with -DENABLE_DMA_PROXY=ON.")
+ endif()
endif()
endif()
@@ -3416,6 +3674,10 @@ add_custom_target(uninstall
# Add subdirectories
################################################################################
add_subdirectory(src)
+if(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING)
+ add_subdirectory(tests)
+endif()
+add_subdirectory(utils)
@@ -3425,26 +3687,32 @@ add_subdirectory(src)
add_feature_info(ENABLE_UHD ENABLE_UHD "Enables UHD_Signal_Source for using RF front-ends from the USRP family. Requires gr-uhd.")
add_feature_info(ENABLE_OSMOSDR ENABLE_OSMOSDR "Enables Osmosdr_Signal_Source and RtlTcp_Signal_Source for using RF front-ends compatible with the OsmoSDR driver. Requires gr-osmosdr.")
add_feature_info(ENABLE_LIMESDR ENABLE_LIMESDR "Enables Limesdr_Signal_Source. Requires gr-limesdr.")
-add_feature_info(ENABLE_FMCOMMS2 ENABLE_FMCOMMS2 "Enables Fmcomms2_Signal_Source for FMCOMMS2/3/4 devices. Requires gr-iio and libad9361-dev.")
-add_feature_info(ENABLE_PLUTOSDR ENABLE_PLUTOSDR "Enables Plutosdr_Signal_Source for using ADALM-PLUTO boards. Requires gr-iio.")
-add_feature_info(ENABLE_AD9361 ENABLE_AD9361 "Enables Ad9361_Fpga_Signal_Source for devices with the AD9361 chipset. Requires libiio and libad9361-dev.")
-add_feature_info(ENABLE_AD936X_SDR ENABLE_AD936X_SDR "Enables Ad936x_Iio_Signal_Source to access AD936X front-ends using libiio. Requires libiio and libad9361-dev.")
+add_feature_info(ENABLE_FMCOMMS2 ENABLE_FMCOMMS2 "Enables Fmcomms2_Signal_Source for FMCOMMS2/3/4 devices. Requires libiio, libad9361-dev, and gr-iio.")
+add_feature_info(ENABLE_PLUTOSDR ENABLE_PLUTOSDR "Enables Plutosdr_Signal_Source and Ad936x_Custom_Signal_Source for using ADALM-PLUTO boards. Requires libiio, libad9361-dev, and gr-iio.")
+add_feature_info(ENABLE_AD936X_SDR ENABLE_AD936X_SDR "Enables Ad936x_Custom_Signal_Source for using ADALM-PLUTO boards with custom firmware. Requires libiio and libad9361-dev.")
+add_feature_info(ENABLE_FPGA ENABLE_FPGA "Enables building of processing blocks for FPGA offloading.")
+add_feature_info(ENABLE_AD9361 ENABLE_AD9361 "Enables ADRV9361_Z7035_Signal_Source_FPGA and the FMCOMMS5_Signal_Source_FPGA for FPGA SoC devices with the AD9361 chipset. Requires libiio, libad9361-dev, and -DENABLE_FPGA=ON.")
+add_feature_info(ENABLE_MAX2771 ENABLE_MAX2771 "Enables FPGA_MAX2771_EVKIT_Signal_Source for FPGA SoC devices with the with the MAX2771 chipset. Requires the spidev driver and -DENABLE_FPGA=ON.")
+add_feature_info(ENABLE_DMA_PROXY ENABLE_DMA_PROXY "Enables DMA_Signal_Source_FPGA for file post-processing in FPGA SoC devices. Requires the DMA Proxy driver and -DENABLE_FPGA=ON.")
add_feature_info(ENABLE_RAW_UDP ENABLE_RAW_UDP "Enables Custom_UDP_Signal_Source for custom UDP packet sample source. Requires libpcap.")
add_feature_info(ENABLE_FLEXIBAND ENABLE_FLEXIBAND "Enables Flexiband_Signal_Source for using Teleorbit's Flexiband RF front-end. Requires gr-teleorbit.")
add_feature_info(ENABLE_ARRAY ENABLE_ARRAY "Enables Raw_Array_Signal_Source and Array_Signal_Conditioner for using CTTC's antenna array. Requires gr-dbfcttc.")
add_feature_info(ENABLE_ZMQ ENABLE_ZMQ "Enables ZMQ_Signal_Source for GNU Radio ZeroMQ messages. Requires gr-zeromq.")
+add_feature_info(ENABLE_ION ENABLE_ION "Enables ION_GSMS_Signal_Source for the ION Metadata Standard.")
add_feature_info(ENABLE_GPERFTOOLS ENABLE_GPERFTOOLS "Enables performance analysis. Requires Gperftools.")
add_feature_info(ENABLE_GPROF ENABLE_GPROF "Enables performance analysis with 'gprof'.")
add_feature_info(ENABLE_CLANG_TIDY ENABLE_CLANG_TIDY "Runs clang-tidy along with the compiler. Requires Clang.")
add_feature_info(ENABLE_PROFILING ENABLE_PROFILING "Runs volk_gnsssdr_profile at the end of the building.")
add_feature_info(ENABLE_OPENCL ENABLE_OPENCL "Enables GPS_L1_CA_PCPS_OpenCl_Acquisition (experimental). Requires OpenCL.")
add_feature_info(ENABLE_CUDA ENABLE_CUDA "Enables GPS_L1_CA_DLL_PLL_Tracking_GPU (experimental). Requires CUDA.")
-add_feature_info(ENABLE_FPGA ENABLE_FPGA "Enables building of processing blocks for FPGA offloading.")
add_feature_info(ENABLE_ARMA_NO_DEBUG ENABLE_ARMA_NO_DEBUG "Enables passing the ARMA_NO_DEBUG macro to Armadillo, hence disabling bound checking.")
add_feature_info(ENABLE_PACKAGING ENABLE_PACKAGING "Enables software packaging.")
add_feature_info(ENABLE_OWN_GLOG ENABLE_OWN_GLOG "Forces the downloading and building of Google glog.")
+add_feature_info(ENABLE_GLOG_AND_GFLAGS ENABLE_GLOG_AND_GFLAGS "Forces the usage of Google glog and Gflags instead of Abseil.")
+add_feature_info(ENABLE_OWN_ABSEIL ENABLE_OWN_ABSEIL "Forces downloading and building Abseil. Supersedes ENABLE_OWN_GLOG.")
add_feature_info(ENABLE_OWN_ARMADILLO ENABLE_OWN_ARMADILLO "Forces the downloading and building of Armadillo.")
-add_feature_info(ENABLE_LOG ENABLE_LOG "Enables runtime internal logging with Google glog.")
+add_feature_info(ENABLE_GNUTLS ENABLE_GNUTLS "Forces linking against GnuTLS instead of OpenSSL.")
+add_feature_info(ENABLE_LOG ENABLE_LOG "Enables runtime internal logging.")
add_feature_info(ENABLE_ORC ENABLE_ORC "Use the Optimized Inner Loop Runtime Compiler (ORC) for building volk_gnsssdr.")
add_feature_info(ENABLE_STRIP ENABLE_STRIP "Enables the generation of stripped binaries (without debugging symbols).")
add_feature_info(ENABLE_UNIT_TESTING ENABLE_UNIT_TESTING "Enables building of Unit Tests.")
@@ -3466,13 +3734,19 @@ message(STATUS "* SUMMARY REPORT *")
message(STATUS "***************************************")
message(STATUS "")
if(CMAKE_CROSSCOMPILING)
- message(STATUS "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}")
+ message(STATUS "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR}")
else()
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}")
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message(STATUS "Building on ${MACOS_DISTRIBUTION}")
+ if(${DETECT_MACPORTS} EQUAL 0)
+ message(STATUS "Found Macports v${MACPORTS_VERSION} installed at ${MACPORTS_PREFIX}")
+ endif()
+ if(${DETECT_HOMEBREW} EQUAL 0)
+ message(STATUS "Found Homebrew v${HOMEBREW_VERSION} installed at ${HOMEBREW_PREFIX}")
+ endif()
endif()
endif()
message(STATUS "CMake version: ${CMAKE_VERSION}")
@@ -3489,7 +3763,7 @@ file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "********************************
file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "GNSS-SDR version: ${VERSION}\n")
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
if(CMAKE_CROSSCOMPILING)
- file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}\n")
+ file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR}\n")
else()
file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}\n")
endif()
diff --git a/README.md b/README.md
index 7e9fd62d9..de5550ef6 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
)
[comment]: # (
-SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades
+SPDX-FileCopyrightText: 2011-2025 Carles Fernandez-Prades
)
@@ -59,60 +59,59 @@ information about this open-source, software-defined GNSS receiver.
(click to expand)
-1. [Table of Contents](#table-of-contents)
-2. [How to build GNSS-SDR](#how-to-build-gnss-sdr)
- 1. [GNU/Linux](#gnulinux)
- 1. [Alternative 1: Install dependencies using software packages](#alternative-1-install-dependencies-using-software-packages)
- 1. [Debian / Ubuntu](#debian--ubuntu)
- 2. [AlmaLinux](#almalinux)
- 3. [Arch Linux](#arch-linux)
- 4. [CentOS](#centos)
- 5. [Fedora](#fedora)
- 6. [openSUSE](#opensuse)
- 7. [Rocky Linux](#rocky-linux)
- 2. [Alternative 2: Install dependencies using PyBOMBS](#alternative-2-install-dependencies-using-pybombs)
- 3. [Manual installation of other required dependencies](#manual-installation-of-other-required-dependencies)
- 1. [Install Armadillo, a C++ linear algebra library](#install-armadillo-a-c-linear-algebra-library)
- 2. [Install Gflags, a commandline flags processing module for C++](#install-gflags-a-commandline-flags-processing-module-for-c)
- 3. [Install Glog, a library that implements application-level logging](#install-glog-a-library-that-implements-application-level-logging)
- 4. [Install the GnuTLS or OpenSSL libraries](#install-the-gnutls-or-openssl-libraries)
- 5. [Install Matio, MATLAB MAT file I/O library](#install-matio-matlab-mat-file-io-library)
- 6. [Install Protocol Buffers, a portable mechanism for serialization of structured data](#install-protocol-buffers-a-portable-mechanism-for-serialization-of-structured-data)
- 7. [Install Pugixml, a light-weight C++ XML processing library](#install-pugixml-a-light-weight-c-xml-processing-library)
- 8. [Download GoogleTest](#download-googletest)
- 4. [Clone GNSS-SDR's Git repository](#clone-gnss-sdrs-git-repository)
- 5. [Build and install GNSS-SDR](#build-and-install-gnss-sdr)
- 1. [Build OSMOSDR support (OPTIONAL)](#build-osmosdr-support-optional)
- 2. [Build FMCOMMS2 based SDR Hardware support (OPTIONAL)](#build-fmcomms2-based-sdr-hardware-support-optional)
- 3. [Build OpenCL support (OPTIONAL)](#build-opencl-support-optional)
- 4. [Build CUDA support (OPTIONAL)](#build-cuda-support-optional)
- 2. [macOS](#macos)
- 1. [Macports](#macports)
- 2. [Homebrew](#homebrew)
- 3. [Other package managers](#other-package-managers)
- 4. [Build GNSS-SDR](#build-gnss-sdr)
- 3. [Other builds](#other-builds)
-3. [Updating GNSS-SDR](#updating-gnss-sdr)
-4. [Getting started](#getting-started)
-5. [Using GNSS-SDR](#using-gnss-sdr)
- 1. [Control plane](#control-plane)
- 1. [Configuration](#configuration)
- 2. [GNSS block factory](#gnss-block-factory)
- 2. [Signal Processing plane](#signal-processing-plane)
- 1. [Signal Source](#signal-source)
- 2. [Signal Conditioner](#signal-conditioner)
- 1. [Data type adapter](#data-type-adapter)
- 2. [Input filter](#input-filter)
- 3. [Resampler](#resampler)
- 3. [Channel](#channel)
- 1. [Acquisition](#acquisition)
- 2. [Tracking](#tracking)
- 3. [Decoding of the navigation message](#decoding-of-the-navigation-message)
- 4. [Observables](#observables)
- 5. [Computation of Position, Velocity, and Time](#computation-of-position-velocity-and-time)
-6. [About the software license](#about-the-software-license)
-7. [Publications and Credits](#publications-and-credits)
-8. [Ok, now what?](#ok-now-what)
+- [Table of Contents](#table-of-contents)
+- [How to build GNSS-SDR](#how-to-build-gnss-sdr)
+ - [GNU/Linux](#gnulinux)
+ - [Alternative 1: Install dependencies using software packages](#alternative-1-install-dependencies-using-software-packages)
+ - [Debian / Ubuntu](#debian--ubuntu)
+ - [AlmaLinux](#almalinux)
+ - [Arch Linux](#arch-linux)
+ - [Fedora](#fedora)
+ - [openSUSE](#opensuse)
+ - [Rocky Linux](#rocky-linux)
+ - [Alternative 2: Install dependencies using PyBOMBS](#alternative-2-install-dependencies-using-pybombs)
+ - [Manual installation of other required dependencies](#manual-installation-of-other-required-dependencies)
+ - [Install Armadillo, a C++ linear algebra library](#install-armadillo-a-c-linear-algebra-library)
+ - [Install Gflags, a commandline flags processing module for C++](#install-gflags-a-commandline-flags-processing-module-for-c)
+ - [Install Glog, a library that implements application-level logging](#install-glog-a-library-that-implements-application-level-logging)
+ - [Install the OpenSSL libraries](#install-the-openssl-libraries)
+ - [Install Matio, MATLAB MAT file I/O library](#install-matio-matlab-mat-file-io-library)
+ - [Install Protocol Buffers, a portable mechanism for serialization of structured data](#install-protocol-buffers-a-portable-mechanism-for-serialization-of-structured-data)
+ - [Install Pugixml, a light-weight C++ XML processing library](#install-pugixml-a-light-weight-c-xml-processing-library)
+ - [Download GoogleTest](#download-googletest)
+ - [Clone GNSS-SDR's Git repository](#clone-gnss-sdrs-git-repository)
+ - [Build and install GNSS-SDR](#build-and-install-gnss-sdr)
+ - [Build OSMOSDR support (OPTIONAL)](#build-osmosdr-support-optional)
+ - [Build FMCOMMS2 based SDR Hardware support (OPTIONAL)](#build-fmcomms2-based-sdr-hardware-support-optional)
+ - [Build OpenCL support (OPTIONAL)](#build-opencl-support-optional)
+ - [Build CUDA support (OPTIONAL)](#build-cuda-support-optional)
+ - [macOS](#macos)
+ - [Macports](#macports)
+ - [Homebrew](#homebrew)
+ - [Other package managers](#other-package-managers)
+ - [Build GNSS-SDR](#build-gnss-sdr)
+ - [Other builds](#other-builds)
+- [Updating GNSS-SDR](#updating-gnss-sdr)
+- [Getting started](#getting-started)
+- [Using GNSS-SDR](#using-gnss-sdr)
+ - [Control plane](#control-plane)
+ - [Configuration](#configuration)
+ - [GNSS block factory](#gnss-block-factory)
+ - [Signal Processing plane](#signal-processing-plane)
+ - [Signal Source](#signal-source)
+ - [Signal Conditioner](#signal-conditioner)
+ - [Data type adapter](#data-type-adapter)
+ - [Input filter](#input-filter)
+ - [Resampler](#resampler)
+ - [Channel](#channel)
+ - [Acquisition](#acquisition)
+ - [Tracking](#tracking)
+ - [Decoding of the navigation message](#decoding-of-the-navigation-message)
+ - [Observables](#observables)
+ - [Computation of Position, Velocity, and Time](#computation-of-position-velocity-and-time)
+- [About the software license](#about-the-software-license)
+- [Publications and Credits](#publications-and-credits)
+- [Ok, now what?](#ok-now-what)
@@ -126,15 +125,17 @@ This section describes how to set up the compilation environment in GNU/Linux or
## GNU/Linux
- Tested distributions: Ubuntu 14.04 LTS and above; Debian 9.0 "stretch" and
- above; Arch Linux; CentOS 7; Fedora 26 and above; OpenSUSE 42.3 and above.
+ above; Arch Linux; Fedora 26 and above; OpenSUSE 42.3 and above.
- Supported microprocessor architectures:
- - i386: Intel x86 instruction set (32-bit microprocessors).
- amd64: also known as x86-64, the 64-bit version of the x86 instruction set,
originally created by AMD and implemented by AMD, Intel, VIA, and others.
- armel: ARM embedded ABI, supported on ARM v4t and higher.
- armhf: ARM hard float, ARMv7 + VFP3-D16 floating-point hardware extension +
Thumb-2 instruction set and above.
- - arm64: ARM 64 bits or ARMv8.
+ - arm64: ARM 64 bits or ARMv8. Also known as AArch64.
+ - i386: Intel x86 instruction set (32-bit microprocessors).
+ - loong64: 64-bit version of LoongArch, a RISC-style instruction set
+ architecture developed by Loongson Technology.
- mips: MIPS architecture (big-endian, such as those manufactured by SGI).
- mipsel: MIPS architecture (little-endian, such as Loongson 3).
- mips64el: 64-bit version of MIPS architecture.
@@ -164,20 +165,23 @@ If you are using Debian 9, Ubuntu 14.10 or above, this can be done by copying
and pasting the following line in a terminal:
```
-$ sudo apt-get install build-essential cmake git pkg-config libboost-dev libboost-date-time-dev \
+$ sudo apt install build-essential cmake git pkg-config libboost-dev libboost-date-time-dev \
libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev \
libboost-serialization-dev liblog4cpp5-dev libuhd-dev gnuradio-dev gr-osmosdr \
libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \
- libgnutls-openssl-dev libpcap-dev libmatio-dev libpugixml-dev libgtest-dev \
- libprotobuf-dev protobuf-compiler python3-mako
+ libssl-dev libpcap-dev libmatio-dev libpugixml-dev libgtest-dev \
+ libprotobuf-dev libcpu-features-dev protobuf-compiler python3-mako
```
Please note that the required files from `libgtest-dev` were named `googletest`
in Debian 9 "stretch" and Ubuntu 18.04 "bionic", and renamed to `libgtest-dev`
in Debian 10 "buster" and above.
-Since Ubuntu 21.04 Hirsute / Debian 11, the package `libcpu-features-dev` is
-also required.
+In distributions older than Ubuntu 21.04 Hirsute / Debian 11, the package
+`libcpu-features-dev` is not required.
+
+In distributions older than Ubuntu 22.04 Jammy / Debian 12, the package
+`libssl-dev` must be replaced by `libgnutls-openssl-dev`.
**Note for Ubuntu 14.04 LTS "trusty" users:** you will need to build from source
and install GNU Radio manually, as explained below, since GNSS-SDR requires
@@ -222,28 +226,9 @@ Once you have installed these packages, you can jump directly to
If you are using Arch Linux:
```
-$ pacman -S gcc make cmake pkgconf git boost boost-libs log4cpp libvolk gnuradio \
- blas lapack gflags google-glog openssl pugixml libmatio protobuf \
- python-mako libpcap gtest
-```
-
-Once you have installed these packages, you can jump directly to
-[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository).
-
-#### CentOS
-
-If you are using CentOS 7, you can install the dependencies via Extra Packages
-for Enterprise Linux ([EPEL](https://fedoraproject.org/wiki/EPEL)):
-
-```
-$ sudo yum install wget
-$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
-$ sudo rpm -Uvh epel-release-latest-7.noarch.rpm
-$ sudo yum install make automake gcc gcc-c++ kernel-devel libtool \
- hdf5-devel cmake git boost-devel boost-date-time boost-system \
- boost-filesystem boost-thread boost-chrono boost-serialization \
- log4cpp-devel gnuradio-devel gr-osmosdr-devel blas-devel lapack-devel \
- armadillo-devel openssl-devel libpcap-devel python-mako python-six pugixml-devel
+$ pacman -S gcc make cmake pkgconf git boost boost-libs libvolk gnuradio \
+ blas lapack hdf5 openssl pugixml libmatio protobuf libpcap gtest \
+ python-mako
```
Once you have installed these packages, you can jump directly to
@@ -278,7 +263,7 @@ $ zypper install cmake git gcc-c++ boost-devel libboost_atomic-devel \
libboost_system-devel libboost_filesystem-devel libboost_chrono-devel \
libboost_thread-devel libboost_serialization-devel log4cpp-devel \
gnuradio-devel pugixml-devel libpcap-devel armadillo-devel libtool \
- automake hdf5-devel openssl-devel python3-Mako protobuf-devel
+ automake hdf5-devel openssl-devel python3-Mako libmatio-devel
```
If you are using openSUSE Tumbleweed:
@@ -330,7 +315,7 @@ tutorial.
First of all, install some basic packages:
```
-$ sudo apt-get install git python3-pip
+$ sudo apt install git python3-pip
```
Download, build and install PyBOMBS:
@@ -396,16 +381,16 @@ or manually as explained below, and then please follow instructions on how to
### Manual installation of other required dependencies
-#### Install [Armadillo](http://arma.sourceforge.net/ "Armadillo's Homepage"), a C++ linear algebra library
+#### Install [Armadillo](https://arma.sourceforge.net/ "Armadillo's Homepage"), a C++ linear algebra library
```
-$ sudo apt-get install libblas-dev liblapack-dev # For Debian/Ubuntu/LinuxMint
-$ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL
+$ sudo apt install libblas-dev liblapack-dev # For Debian/Ubuntu/LinuxMint
+$ sudo yum install lapack-devel blas-devel # For Fedora/RHEL
$ sudo zypper install lapack-devel blas-devel # For OpenSUSE
$ sudo pacman -S blas lapack # For Arch Linux
-$ wget https://sourceforge.net/projects/arma/files/armadillo-12.0.1.tar.xz
-$ tar xvfz armadillo-12.0.1.tar.xz
-$ cd armadillo-12.0.1
+$ wget https://sourceforge.net/projects/arma/files/armadillo-14.4.1.tar.xz
+$ tar xvfz armadillo-14.4.1.tar.xz
+$ cd armadillo-14.4.1
$ cmake .
$ make
$ sudo make install
@@ -430,12 +415,16 @@ $ sudo make install
$ sudo ldconfig
```
+Please note that GFlags is replaced by the
+[Abseil Flags Library](https://abseil.io/docs/cpp/guides/flags) if Abseil >=
+v20240116 is available in your system.
+
#### Install [Glog](https://github.com/google/glog "Glog's Homepage"), a library that implements application-level logging
```
-$ wget https://github.com/google/glog/archive/v0.6.0.tar.gz
-$ tar xvfz v0.6.0.tar.gz
-$ cd glog-0.6.0
+$ wget https://github.com/google/glog/archive/v0.7.1.tar.gz
+$ tar xvfz v0.7.1.tar.gz
+$ cd glog-0.7.1
$ mkdir build && cd build
$ cmake ..
$ make
@@ -443,33 +432,32 @@ $ sudo make install
$ sudo ldconfig
```
-#### Install the GnuTLS or OpenSSL libraries
+Please note that Glog is replaced by the
+[Abseil Logging Library](https://abseil.io/docs/cpp/guides/logging) if Abseil >=
+v20240116 is available in your system.
+
+#### Install the OpenSSL libraries
```
-$ sudo apt-get install libgnutls-openssl-dev # For Debian/Ubuntu/LinuxMint
-$ sudo yum install openssl-devel # For Fedora/CentOS/RHEL
-$ sudo zypper install openssl-devel # For OpenSUSE
-$ sudo pacman -S openssl # For Arch Linux
+$ sudo apt install libssl-dev # For Debian/Ubuntu/LinuxMint
+$ sudo yum install openssl-devel # For Fedora/CentOS/RHEL
+$ sudo zypper install openssl-devel # For OpenSUSE
+$ sudo pacman -S openssl # For Arch Linux
```
-In case the [GnuTLS](https://www.gnutls.org/ "GnuTLS's Homepage") library with
-openssl extensions package is not available in your GNU/Linux distribution,
-GNSS-SDR can also work well with
-[OpenSSL](https://www.openssl.org/ "OpenSSL's Homepage").
-
#### Install [Matio](https://github.com/tbeu/matio "Matio's Homepage"), MATLAB MAT file I/O library
```
-$ wget https://github.com/tbeu/matio/releases/download/v1.5.23/matio-1.5.23.tar.gz
-$ tar xvfz matio-1.5.23.tar.gz
-$ cd matio-1.5.23
+$ wget https://github.com/tbeu/matio/releases/download/v1.5.28/matio-1.5.28.tar.gz
+$ tar xvfz matio-1.5.28.tar.gz
+$ cd matio-1.5.28
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig
```
-#### Install [Protocol Buffers](https://developers.google.com/protocol-buffers/ "Protocol Buffers' Homepage"), a portable mechanism for serialization of structured data
+#### Install [Protocol Buffers](https://protobuf.dev/ "Protocol Buffers' Homepage"), a portable mechanism for serialization of structured data
GNSS-SDR requires Protocol Buffers v3.0.0 or later. If the packages that come
with your distribution are older than that (_e.g._, Ubuntu 16.04 Xenial came
@@ -489,9 +477,9 @@ For more options, please check the
#### Install [Pugixml](https://pugixml.org/ "Pugixml's Homepage"), a light-weight C++ XML processing library
```
-$ wget https://github.com/zeux/pugixml/releases/download/v1.13/pugixml-1.13.tar.gz
-$ tar xvfz pugixml-1.13.tar.gz
-$ cd pugixml-1.13
+$ wget https://github.com/zeux/pugixml/releases/download/v1.15/pugixml-1.15.tar.gz
+$ tar xvfz pugixml-1.15.tar.gz
+$ cd pugixml-1.15
$ mkdir build && cd build
$ cmake ..
$ make
@@ -502,8 +490,8 @@ $ sudo ldconfig
#### Download [GoogleTest](https://github.com/google/googletest "Googletest Homepage")
```
-$ wget https://github.com/google/googletest/archive/refs/tags/v1.13.0.zip
-$ unzip v1.13.0.zip
+$ wget https://github.com/google/googletest/archive/refs/tags/v1.16.0.zip
+$ unzip v1.16.0.zip
```
Please **DO NOT build or install** Google Test. Every user needs to compile
@@ -527,10 +515,10 @@ downloaded resides. Just type in your terminal (or add it to your
`$HOME/.bashrc` file for a permanent solution) the following line:
```
-export GTEST_DIR=/home/username/googletest-1.13.0
+export GTEST_DIR=/home/username/googletest-1.16.0
```
-changing `/home/username/googletest-1.13.0` by the actual path where you
+changing `/home/username/googletest-1.16.0` by the actual path where you
unpacked Google Test. If the CMake script does not find that folder, or the
environment variable is not defined, or the source code is not installed by a
package, then it will download a fresh copy of the Google Test source code and
@@ -549,18 +537,16 @@ gnss-sdr with the following structure:
```
|-gnss-sdr
- |---build <- where gnss-sdr is built.
|---cmake <- CMake-related files.
|---conf <- Configuration files. Each file defines one particular receiver.
- |---data <- Populate this folder with your captured data.
|---docs <- Contains documentation-related files.
|---install <- Executables will be placed here.
|---src <- Source code folder.
|-----algorithms <- Signal processing blocks.
|-----core <- Control plane, interfaces, systems' parameters.
|-----main <- Main function of the C++ program.
- |-----tests <- QA code.
- |-----utils <- some utilities (e.g. Matlab scripts).
+ |---tests <- QA code.
+ |---utils <- some utilities (e.g. Matlab scripts).
```
By default, you will be in the 'main' branch of the Git repository, which
@@ -581,14 +567,14 @@ readings can be found at our
Go to GNSS-SDR's build directory:
```
-$ cd gnss-sdr/build
+$ cd gnss-sdr
```
Configure and build the application:
```
-$ cmake ..
-$ make
+$ cmake -S . -B build
+$ cmake --build build
```
By default, CMake will build the Release version, meaning that the compiler will
@@ -599,8 +585,8 @@ information about the internals of the receiver, as well as more fine-grained
logging. This can be done by building the Debug version, by doing:
```
-$ cmake -DCMAKE_BUILD_TYPE=Debug ..
-$ make
+$ cmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug
+$ cmake --build build-debug
```
This will create four executables at gnss-sdr/install, namely `gnss-sdr`,
@@ -609,7 +595,7 @@ that folder, but if you prefer to install `gnss-sdr` on your system and have it
available anywhere else, do:
```
-$ sudo make install
+$ sudo cmake --install build
```
This will also make a copy of the conf/ folder into
@@ -618,24 +604,24 @@ directory at your preferred location and store your own configuration and data
files there.
You could be interested in creating the documentation (requires:
-`sudo apt-get install doxygen-latex` in Ubuntu/Debian) by doing:
+`sudo apt install doxygen-latex` in Ubuntu/Debian) by doing:
```
-$ make doc
+$ cmake --build build --target doc
```
-from the gnss-sdr/build folder. This will generate HTML documentation that can
-be retrieved pointing your browser of preference to build/docs/html/index.html.
-If a LaTeX installation is detected in your system,
+This will generate HTML documentation that can be retrieved pointing your
+browser of preference to `build/docs/html/index.html`. If a LaTeX installation
+is detected in your system,
```
-$ make pdfmanual
+$ cmake --build build --target pdfmanual
```
will create a PDF manual at build/docs/GNSS-SDR_manual.pdf. Finally,
```
-$ make doc-clean
+$ cmake --build build --target doc-clean
```
will remove the content of previously generated documentation.
@@ -653,30 +639,6 @@ the function to execute. It mimics GNU Radio's [VOLK](https://www.libvolk.org/)
library, so if you still have not run `volk_profile`, this is a good moment to
do so.
-If you are using [Eclipse](https://www.eclipse.org/ide/) as your development
-environment, CMake can create the project for you. However, if the build
-directory is a subdirectory of the source directory (as is the case of the
-`gnss-sdr/build` folder), this is not supported well by Eclipse. It is strongly
-recommended to use a build directory which is a sibling of the source directory.
-Hence, type from the `gnss-sdr` root folder:
-
-```
-$ cd ..
-$ mkdir eclipse && cd eclipse
-$ cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_ECLIPSE_VERSION=4.5 ../gnss-sdr
-```
-
-and then import the created project into Eclipse:
-
-1. Import project using Menu File -> Import.
-2. Select General -> Existing projects into workspace.
-3. Select your root directory: Browse and select your newly created `eclipse/`
- directory. Keep "Copy projects into workspace" unchecked.
-4. Click on "Finish" and you will get a fully functional Eclipse project.
-
-After building the project, you will find the generated binaries at
-`eclipse/install`.
-
#### Build OSMOSDR support (OPTIONAL)
Install the [OsmoSDR](https://osmocom.org/projects/sdr "OsmoSDR's Homepage")
@@ -705,9 +667,9 @@ $ sudo ldconfig
Then, configure GNSS-SDR to build the `Osmosdr_Signal_Source` by:
```
-$ cmake -DENABLE_OSMOSDR=ON ..
-$ make
-$ sudo make install
+$ cmake -S . -B build -DENABLE_OSMOSDR=ON
+$ cmake --build build
+$ sudo cmake --install build
```
(in order to disable the `Osmosdr_Signal_Source` compilation, you can pass
@@ -721,7 +683,7 @@ libraries and [gr-iio](https://github.com/analogdevicesinc/gr-iio.git) (>v0.3)
gnuradio block:
```
-$ sudo apt-get install libxml2-dev bison flex
+$ sudo apt install libxml2-dev bison flex
$ git clone https://github.com/analogdevicesinc/libiio.git
$ cd libiio
$ mkdir build
@@ -748,18 +710,18 @@ $ cd ../..
Then configure GNSS-SDR to build the `Fmcomms2_Signal_Source` implementation:
```
-$ cd gnss-sdr/build
-$ cmake -DENABLE_FMCOMMS2=ON ..
-$ make
-$ sudo make install
+$ cd gnss-sdr
+$ cmake -S . -B build -DENABLE_FMCOMMS2=ON
+$ cmake --build build
+$ sudo cmake --install build
```
or configure it to build `Plutosdr_Signal_Source`:
```
-$ cmake -DENABLE_PLUTOSDR=ON ..
-$ make
-$ sudo make install
+$ cmake -S . -B build -DENABLE_PLUTOSDR=ON
+$ cmake --build build
+$ sudo cmake --install build
```
With `Fmcomms2_Signal_Source` you can use any SDR hardware based on
@@ -774,9 +736,9 @@ devices.
In order to enable the building of blocks that use OpenCL, type:
```
-$ cmake -DENABLE_OPENCL=ON ..
-$ make
-$ sudo make install
+$ cmake -S . -B build -DENABLE_OPENCL=ON
+$ cmake --build build
+$ sudo cmake --install build
```
#### Build CUDA support (OPTIONAL)
@@ -788,9 +750,9 @@ data-parallel computations, first you need to install the CUDA Toolkit from
Make sure that the SDK samples build well. Then, build GNSS-SDR by doing:
```
-$ cmake -DENABLE_CUDA=ON ..
-$ make
-$ sudo make install
+$ cmake -S . -B build -DENABLE_CUDA=ON
+$ cmake --build build
+$ sudo cmake --install build
```
Of course, you will also need a GPU that
@@ -830,10 +792,10 @@ In a terminal, type:
```
$ sudo port selfupdate
$ sudo port upgrade outdated
-$ sudo port install armadillo cmake pkgconfig protobuf3-cpp pugixml gnutls
+$ sudo port install armadillo cmake pkgconfig protobuf3-cpp pugixml openssl3
$ sudo port install gnuradio +uhd +grc +zeromq
-$ sudo port install boost matio libad9361-iio libiio google-glog +gflags
-$ sudo port install py311-mako
+$ sudo port install boost matio libad9361-iio libiio abseil
+$ sudo port install py313-mako
$ sudo port install doxygen +docs
```
@@ -853,7 +815,7 @@ $ port select --list python
and you can activate a certain version by typing:
```
-$ sudo port select --set python python311
+$ sudo port select --set python python313
```
### Homebrew
@@ -867,22 +829,14 @@ $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/inst
The script explains what it will do, and then it pauses before doing it. There
are more installation options [here](https://docs.brew.sh/Installation.html).
-Install pip3:
-
-```
-$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
-$ sudo python3 get-pip.py
-```
-
Install the required dependencies:
```
$ brew update && brew upgrade
-$ brew install armadillo cmake hdf5 gflags glog gnuradio libmatio log4cpp \
- openssl pkg-config protobuf pugixml
-$ pip3 install mako
+$ brew install armadillo cmake hdf5 gnuradio libmatio openssl pkg-config protobuf pugixml boost
$ brew install --cask mactex # when completed, restart Terminal
$ brew install graphviz doxygen
+¢ pip3 install mako
```
For macOS versions older than Sonoma, you will also need LAPACK:
@@ -894,20 +848,20 @@ $ brew install lapack
### Other package managers
GNU Radio and other dependencies can also be installed using other package
-managers than Macports, such as [Fink](http://www.finkproject.org/ "Fink").
+managers than Macports, such as [Fink](https://www.finkproject.org/ "Fink").
Since the version of Python that ships with OS X is great for learning but it is
not good for development, you could have another Python executable in a
non-standard location. If that is the case, you need to inform GNSS-SDR's
configuration system by defining the `PYTHON_EXECUTABLE` variable as:
```
-$ cmake -DPYTHON_EXECUTABLE=/path/to/bin/python3 ..
+$ cmake -S . -B build -DPYTHON_EXECUTABLE=/path/to/bin/python3
```
In case you have installed Macports in a non-standard location, you can use:
```
-$ cmake -DCMAKE_PREFIX_PATH=/opt/local -DUSE_MACPORTS_PYTHON=/opt/local/bin/python ..
+$ cmake -S . -B build -DCMAKE_PREFIX_PATH=/opt/local -DUSE_MACPORTS_PYTHON=/opt/local/bin/python
```
changing `/opt/local` by the base directory in which your software is installed.
@@ -923,17 +877,23 @@ software:
```
$ git clone https://github.com/gnss-sdr/gnss-sdr
-$ cd gnss-sdr/build
-$ cmake ..
-$ make
+$ cd gnss-sdr
+$ cmake -S . -B build
+$ cmake --build build
```
-This will create three executables at gnss-sdr/install, namely `gnss-sdr`,
+This will create three executables at `gnss-sdr/install`, namely `gnss-sdr`,
`run_tests` and `volk_gnsssdr_profile`. You can install the software receiver on
your system by doing:
```
-$ sudo make install
+$ sudo cmake --install build
+```
+
+and uninstall it with:
+
+```
+$ sudo cmake --build build --target uninstall
```
Note, it is advisable not to run the install step in a homebrew environment.
@@ -941,7 +901,7 @@ Note, it is advisable not to run the install step in a homebrew environment.
The documentation can be built by:
```
-$ make doc
+$ cmake --build build --target doc
```
and can be viewed doing:
@@ -984,7 +944,7 @@ do so.
- **GNSS-SDR in embedded platforms**: we provide a Software Development Kit
- (SDK) based on [OpenEmbedded](http://www.openembedded.org/wiki/Main_Page) for
+ (SDK) based on [OpenEmbedded](https://www.openembedded.org/wiki/Main_Page) for
cross-compiling GNSS-SDR in your desktop computer and for producing
executables that can run in embedded platforms, such as Xilinx's Zynq and
ZynqMP architectures, Raspberry Pi, and many others. Please check
@@ -1016,7 +976,7 @@ $ git pull upstream next
```
Before rebuilding the source code, it is safe (and recommended) to remove the
-remainders of old compilations:
+remainders of old compilations, _e.g._:
```
$ rm -rf gnss-sdr/build/*
@@ -1112,7 +1072,7 @@ You can use a single configuration file for processing different data files,
specifying the file to be processed with the `--signal_source` flag:
```
-$ gnss-sdr --config_file=../conf/my_receiver.conf --signal_source=../data/my_captured_data.dat
+$ gnss-sdr --config_file=../conf/my_receiver.conf --signal_source=./my_captured_data.dat
```
This will override the `SignalSource.filename` specified in the configuration
@@ -1497,7 +1457,7 @@ SignalSource.port=1234
SignalSource.swap_iq=false
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
```
Example for a dual-frequency receiver:
@@ -1591,7 +1551,7 @@ The block can be configured like this:
;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz.
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false ; #dump: Dump the filtered data to a file.
-InputFilter.dump_filename=../data/input_filter.dat ; #dump_filename: Log path and filename.
+InputFilter.dump_filename=./input_filter.dat ; #dump_filename: Log path and filename.
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
@@ -1644,7 +1604,7 @@ implements a nearest neighbourhood interpolation:
;#[Pass_Through] disables this block
Resampler.implementation=Direct_Resampler
Resampler.dump=false ; Dumps the resampled data to a file.
-Resampler.dump_filename=../data/resampler.dat ; log path and filename.
+Resampler.dump_filename=./resampler.dat ; log path and filename.
Resampler.item_type=gr_complex
Resampler.sample_freq_in=8000000 ; sample frequency of the input signal
Resampler.sample_freq_out=4000000 ; desired sample frequency of the output signal
@@ -1872,7 +1832,7 @@ Tracking_1B.dll_filter_order=2 ; DLL loop filter order [1], [2] or [3]
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
```
More documentation at the
@@ -1999,11 +1959,11 @@ PVT.rtcm_MT1077_rate_ms=1000
Notation (JSON) supported by numerous mapping and GIS software packages,
including [OpenLayers](https://openlayers.org),
[Leaflet](https://leafletjs.com), [MapServer](https://mapserver.org/),
- [GeoServer](http://geoserver.org), [GeoDjango](https://www.djangoproject.com),
- [GDAL](https://gdal.org/), and [CartoDB](https://cartodb.com). It is also
- possible to use GeoJSON with [PostGIS](https://postgis.net/) and
- [Mapnik](https://mapnik.org/), both of which handle the format via the GDAL
- OGR conversion library. The
+ [GeoServer](https://geoserver.org/),
+ [GeoDjango](https://www.djangoproject.com), [GDAL](https://gdal.org/), and
+ [CartoDB](https://cartodb.com). It is also possible to use GeoJSON with
+ [PostGIS](https://postgis.net/) and [Mapnik](https://mapnik.org/), both of
+ which handle the format via the GDAL OGR conversion library. The
[Google Maps Javascript API](https://developers.google.com/maps/documentation/javascript/)
v3 directly supports the
[integration of GeoJSON data layers](https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple),
@@ -2016,8 +1976,9 @@ PVT.rtcm_MT1077_rate_ms=1000
(OGC KML), and it is maintained by the Open Geospatial Consortium, Inc. (OGC).
KML files can be displayed in geobrowsers such as
[Google Earth](https://www.google.com/earth/),
- [Marble](https://marble.kde.org), [osgEarth](http://osgearth.org), or used
- with the [NASA World Wind SDK for Java](https://worldwind.arc.nasa.gov/java/).
+ [Marble](https://marble.kde.org),
+ [osgEarth](https://github.com/gwaldron/osgearth), or used with the
+ [NASA World Wind SDK for Java](https://worldwind.arc.nasa.gov/java/).
- **GPX** (the GPS Exchange Format) is a lightweight XML data format for the
interchange of GPS data (waypoints, routes, and tracks) between applications
@@ -2052,9 +2013,11 @@ PVT.rtcm_MT1077_rate_ms=1000
(usually with other data unknown to the original receiver, such as better
models of the atmospheric conditions at time of measurement). RINEX files can
be used by software packages such as
- [GNSSTK](https://github.com/SGL-UT/gnsstk), [RTKLIB](http://www.rtklib.com/),
- and [gLAB](https://gage.upc.edu/gLAB/). GNSS-SDR by default generates RINEX
- version [3.02](ftp://igs.org/pub/data/format/rinex302.pdf). If
+ [GNSSTK](https://github.com/SGL-UT/gnsstk), [RTKLIB](https://www.rtklib.com/),
+ and
+ [gLAB](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite).
+ GNSS-SDR by default generates RINEX version
+ [3.02](ftp://igs.org/pub/data/format/rinex302.pdf). If
[2.11](ftp://igs.org/pub/data/format/rinex211.txt) is needed, it can be
requested through the `rinex_version` parameter in the configuration file:
diff --git a/build/.gitignore b/build/.gitignore
deleted file mode 100644
index 08e486f4d..000000000
--- a/build/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades
-# Ignore everything in this directory
-*
-# Except this file
-!.gitignore
diff --git a/cmake/Modules/AvoidAccelerate.cmake b/cmake/Modules/AvoidAccelerate.cmake
index 5d052296d..27d9bd6b5 100644
--- a/cmake/Modules/AvoidAccelerate.cmake
+++ b/cmake/Modules/AvoidAccelerate.cmake
@@ -7,6 +7,10 @@
# Avoid using the BLAS and LAPACK implementations that comes with the Accelerate
# framework, which causes a bug when the BeiDou constellation is enabled
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT BLAS_ROOT)
set(BLAS_ROOT_USER_DEFINED /usr/local/lib)
else()
@@ -24,8 +28,8 @@ find_library(BLAS_LIBRARIES
PATHS
${BLAS_ROOT_USER_DEFINED}
${BLAS_ROOT_USER_DEFINED}/lapack
- /opt/local/lib/lapack
- /opt/local/lib/
+ ${GNSSSDR_LIB_PATHS}/lapack
+ ${GNSSSDR_LIB_PATHS}
/usr/local/opt/lapack/lib
/opt/homebrew/opt/lapack/lib
NO_DEFAULT_PATH
@@ -46,7 +50,7 @@ find_library(LAPACK_LIBRARIES
PATHS
${BLAS_ROOT_USER_DEFINED}
${BLAS_ROOT_USER_DEFINED}/lapack
- /opt/local/lib/lapack
+ ${GNSSSDR_LIB_PATHS}/lapack
/usr/local/opt/lapack/lib
/opt/homebrew/opt/lapack/lib
NO_DEFAULT_PATH
diff --git a/cmake/Modules/BuildProtobuf.cmake b/cmake/Modules/BuildProtobuf.cmake
index 5590943db..8f7c60278 100644
--- a/cmake/Modules/BuildProtobuf.cmake
+++ b/cmake/Modules/BuildProtobuf.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2023 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2023-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# Downloads and builds the protoc compiler and static libraries of Protocol
@@ -13,7 +13,7 @@
if(NOT GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION)
- set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "25.0")
+ set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "30.2")
endif()
if(NOT GNSSSDR_BINARY_DIR)
@@ -55,6 +55,11 @@ list(APPEND UTF8_LIBRARIES
${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}utf8_range${CMAKE_STATIC_LIBRARY_SUFFIX}
)
+set(ABSL_OPTION "")
+if(CMAKE_VERSION VERSION_LESS "3.16" OR GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION VERSION_LESS "30.0")
+ set(ABSL_OPTION "-Dprotobuf_ABSL_PROVIDER=package")
+endif()
+
ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}
PREFIX ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}
GIT_REPOSITORY https://github.com/protocolbuffers/protobuf
@@ -73,7 +78,7 @@ ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}
-DCMAKE_VISIBILITY_INLINES_HIDDEN=1
-DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}
-Dprotobuf_BUILD_TESTS=OFF
- -Dprotobuf_ABSL_PROVIDER=package
+ ${ABSL_OPTION}
${USE_ZLIB}
BUILD_COMMAND ${CMAKE_COMMAND}
"--build" "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}"
diff --git a/cmake/Modules/DetectLinuxDistro.cmake b/cmake/Modules/DetectLinuxDistro.cmake
index 3fa556ba4..014b2a8d3 100644
--- a/cmake/Modules/DetectLinuxDistro.cmake
+++ b/cmake/Modules/DetectLinuxDistro.cmake
@@ -4,10 +4,14 @@
# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(ARCHITECTURE_STRING "(64 bits)")
+if(CMAKE_VERSION VERSION_LESS 3.19)
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(ARCHITECTURE_STRING "(64 bits)")
+ else()
+ set(ARCHITECTURE_STRING "(32 bits)")
+ endif()
else()
- set(ARCHITECTURE_STRING "(32 bits)")
+ set(ARCHITECTURE_STRING "(${CMAKE_HOST_SYSTEM_PROCESSOR})")
endif()
if(EXISTS "/etc/lsb-release")
diff --git a/cmake/Modules/DetectMacOSVersion.cmake b/cmake/Modules/DetectMacOSVersion.cmake
index ac986ba6d..361d3422f 100644
--- a/cmake/Modules/DetectMacOSVersion.cmake
+++ b/cmake/Modules/DetectMacOSVersion.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
execute_process(COMMAND uname -v OUTPUT_VARIABLE DARWIN_VERSION)
@@ -77,3 +77,24 @@ endif()
if(NOT MACOS_DISTRIBUTION)
set(MACOS_DISTRIBUTION "macOS (Unknown version)")
endif()
+
+set(MACOS_PACKAGES_PREFIX "")
+# Detect if MacPorts is installed on this system; if so, return base path and version
+execute_process(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+if(${DETECT_MACPORTS} EQUAL 0)
+ # "/opt/local/bin/port", so we get the parent directory
+ get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
+ # "/opt/local/bin", so we get the parent directory
+ get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
+ execute_process(COMMAND port version RESULT_VARIABLE DETECT_MACPORTS_VERSION OUTPUT_VARIABLE MACPORTS_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" MACPORTS_VERSION "${MACPORTS_VERSION}")
+ set(MACOS_PACKAGES_PREFIX ${MACPORTS_PREFIX})
+endif()
+
+# Detect if Homebrew is installed on this system; if so, return base path and version
+execute_process(COMMAND brew --prefix RESULT_VARIABLE DETECT_HOMEBREW OUTPUT_VARIABLE HOMEBREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+if(${DETECT_HOMEBREW} EQUAL 0)
+ execute_process(COMMAND brew --version RESULT_VARIABLE DETECT_HOMEBREW_VERSION OUTPUT_VARIABLE HOMEBREW_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" HOMEBREW_VERSION "${HOMEBREW_VERSION}")
+ set(MACOS_PACKAGES_PREFIX ${HOMEBREW_PREFIX})
+endif()
diff --git a/cmake/Modules/FindCPUFEATURES.cmake b/cmake/Modules/FindCPUFEATURES.cmake
index 6f25e91d2..89587e6eb 100644
--- a/cmake/Modules/FindCPUFEATURES.cmake
+++ b/cmake/Modules/FindCPUFEATURES.cmake
@@ -1,54 +1,24 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2021 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2021-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
set(FPHSA_NAME_MISMATCHED ON)
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
find_library(CPUFEATURES_LIBRARIES
NAMES cpu_features
- PATHS /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ PATHS ${GNSSSDR_LIB_PATHS}
)
find_path(CPUFEATURES_INCLUDE_DIR cpu_features_macros.h
PATHS $ENV{CPUFEATURES_DIR}/include
$ENV{CPUFEATURES_DIR}
- /usr/include
- /usr/local/include
- ~/Library/Frameworks
- /Library/Frameworks
- /sw/include # Fink
- /opt/local/include # MacPorts
- /opt/csw/include # Blastwave
+ ${GNSSSDR_INCLUDE_PATHS}
PATH_SUFFIXES cpu_features
)
diff --git a/cmake/Modules/FindGFLAGS.cmake b/cmake/Modules/FindGFLAGS.cmake
index 2649380c9..afc7ebb68 100644
--- a/cmake/Modules/FindGFLAGS.cmake
+++ b/cmake/Modules/FindGFLAGS.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# - Try to find GFlags
@@ -25,6 +25,10 @@ if(NOT COMMAND feature_summary)
include(FeatureSummary)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT GFLAGS_ROOT)
set(GFLAGS_ROOT_USER_PROVIDED /usr/local)
else()
@@ -42,9 +46,8 @@ if(APPLE)
libgflags.dylib
PATHS
${GFLAGS_ROOT_USER_PROVIDED}/lib
- /usr/local/lib
- /opt/local/lib
- /opt/homebrew/opt/gflags/lib
+ ${GNSSSDR_LIB_PATHS}
+ ${GNSSSDR_LIB_PATHS}/opt/gflags/lib
)
else()
find_path(GFlags_ROOT_DIR
@@ -52,35 +55,7 @@ else()
PATHS
${GFLAGS_ROOT_USER_PROVIDED}/lib
${GFLAGS_ROOT_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
endif()
@@ -92,10 +67,8 @@ if(GFlags_ROOT_DIR)
PATHS
${GFlags_ROOT_DIR}/src
${GFLAGS_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
- /opt/homebrew/opt/gflags/include
+ ${GNSSSDR_INCLUDE_PATHS}
+ ${GNSSSDR_INCLUDE_PATHS}/opt/gflags/include
)
# Find the libraries
diff --git a/cmake/Modules/FindGFORTRAN.cmake b/cmake/Modules/FindGFORTRAN.cmake
index a6eb38a53..c6e175b41 100644
--- a/cmake/Modules/FindGFORTRAN.cmake
+++ b/cmake/Modules/FindGFORTRAN.cmake
@@ -1,13 +1,17 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
if(NOT COMMAND feature_summary)
include(FeatureSummary)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT GFORTRAN_ROOT)
set(GFORTRAN_ROOT_USER_DEFINED /usr/lib)
else()
@@ -20,13 +24,12 @@ if(DEFINED ENV{GFORTRAN_ROOT})
)
endif()
-set(GCC_MAJOR_SERIES 14 13 12 11 10 9 8 7 6 5)
+set(GCC_MAJOR_SERIES 15 14 13 12 11 10 9 8 7 6 5)
set(GCC4_SERIES 4.9.1 4.9 4.8.3 4.8.1 4.7.2 4.7 4.8.2 4.8 4.7 4.6 4.5 4.4.4 4.4)
set(GCC_SERIES ${GCC_MAJOR_SERIES} ${GCC4_SERIES})
find_library(GFORTRAN NAMES gfortran
PATHS ${GFORTRAN_ROOT_USER_DEFINED}
- /usr/lib64
/usr/lib/gcc/x86_64-linux-gnu # Debian
/usr/lib/gcc/i386-linux-gnu
/usr/lib/gcc/i486-linux-gnu
@@ -55,6 +58,7 @@ find_library(GFORTRAN NAMES gfortran
/usr/lib/gcc/sh4-linux-gnu
/usr/lib/gcc/i686-redhat-linux # Fedora
/usr/lib64/gcc/x86_64-redhat-linux
+ /usr/lib/gcc/x86_64-redhat-linux
/usr/lib/gcc/armv7hl-redhat-linux-gnueabi
/usr/lib/gcc/aarch64-redhat-linux
/usr/lib/gcc/ppc64le-redhat-linux
@@ -64,34 +68,13 @@ find_library(GFORTRAN NAMES gfortran
/usr/lib/gcc/x86_64-suse-linux
/usr/lib/gcc/armv6hl-suse-linux-gnueabi
/usr/lib/gcc/armv7hl-suse-linux-gnueabi
+ /usr/lib/gcc/loongarch64-linux-gnu
/usr/lib64/gcc/aarch64-suse-linux
/usr/lib64/gcc/powerpc64-suse-linux
/usr/lib64/gcc/powerpc64le-suse-linux
/usr/lib64/gcc/riscv64-suse-linux
/usr/lib64/gcc/s390x-suse-linux
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/aarch64-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /usr/local/lib/i386
+ ${GNSSSDR_LIB_PATHS}
PATH_SUFFIXES
${GCC_SERIES}
)
diff --git a/cmake/Modules/FindGLOG.cmake b/cmake/Modules/FindGLOG.cmake
index eb0f9d700..ef7878a10 100644
--- a/cmake/Modules/FindGLOG.cmake
+++ b/cmake/Modules/FindGLOG.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# - Try to find the Google Glog library
@@ -28,6 +28,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT DEFINED GLOG_ROOT)
set(GLOG_ROOT /usr /usr/local)
endif()
@@ -45,36 +49,7 @@ macro(_FIND_GLOG_LIBRARIES _var)
NAMES ${ARGN}
HINTS ${PC_GLOG_LIBDIR}
PATHS ${LIB_PATHS}
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/lib/loongarch64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
${GLOG_ROOT}/lib
$ENV{GLOG_ROOT}/lib
${GLOG_ROOT}/lib64
@@ -99,7 +74,7 @@ if(MSVC)
${PC_GLOG_INCLUDEDIR}
PATHS
${GLOG_ROOT}/src/windows
- ${GLOG_ROOT}/src/windows/glog
+ PATH_SUFFIXES glog
)
else()
# Linux/OS X builds
@@ -107,11 +82,10 @@ else()
HINTS
${PC_GLOG_INCLUDEDIR}
PATHS
- /usr/include/glog
- /usr/local/include/glog
- /opt/local/include/glog # default location in Macports
- /opt/homebrew/opt/glog/include/glog
- ${GLOG_ROOT}/include/glog
+ ${GNSSSDR_INCLUDE_PATHS}
+ ${GNSSSDR_INCLUDE_PATHS}/opt/glog/include
+ ${GLOG_ROOT}/include
+ PATH_SUFFIXES glog
)
endif()
@@ -183,4 +157,4 @@ endif()
# Fix for glog 0.7.0
if(EXISTS ${GLOG_INCLUDE_DIRS}/export.h)
set_target_properties(Glog::glog PROPERTIES INTERFACE_COMPILE_DEFINITIONS "GLOG_USE_GLOG_EXPORT")
-endif()
+endif()
\ No newline at end of file
diff --git a/cmake/Modules/FindGMP.cmake b/cmake/Modules/FindGMP.cmake
new file mode 100644
index 000000000..840324f44
--- /dev/null
+++ b/cmake/Modules/FindGMP.cmake
@@ -0,0 +1,72 @@
+# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
+# This file is part of GNSS-SDR.
+#
+# SPDX-FileCopyrightText: 2024-2025 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(NOT COMMAND feature_summary)
+ include(FeatureSummary)
+endif()
+
+if(NOT PKG_CONFIG_FOUND)
+ include(FindPkgConfig)
+endif()
+pkg_check_modules(PC_GMP "gmp")
+
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
+set(GMP_DEFINITIONS ${PC_GMP_CFLAGS_OTHER})
+
+find_path(GMP_INCLUDE_DIR
+ NAMES gmpxx.h
+ HINTS ${PC_GMP_INCLUDEDIR}
+ PATHS ${GNSSSDR_INCLUDE_PATHS}
+)
+
+set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})
+set(GMP_PC_ADD_CFLAGS "-I${GMP_INCLUDE_DIR}")
+
+find_library(GMPXX_LIBRARY
+ NAMES gmpxx
+ HINTS ${PC_GMP_LIBDIR}
+ PATHS ${GNSSSDR_LIB_PATHS}
+)
+
+find_library(GMP_LIBRARY
+ NAMES gmp
+ HINTS ${PC_GMP_LIBDIR}
+ PATHS ${GNSSSDR_LIB_PATHS}
+)
+
+set(GMP_LIBRARIES ${GMPXX_LIBRARY} ${GMP_LIBRARY})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GMP DEFAULT_MSG GMPXX_LIBRARY GMP_LIBRARY GMP_INCLUDE_DIR)
+
+if(GMP_FOUND AND NOT TARGET Gmp::gmp)
+ add_library(Gmp::gmp SHARED IMPORTED)
+ set_target_properties(Gmp::gmp PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${GMPXX_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GMP_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "${GMP_LIBRARIES}"
+ )
+endif()
+
+set_package_properties(GMP PROPERTIES
+ URL "https://gmplib.org/"
+)
+
+if(PC_GMP_VERSION)
+ set_package_properties(GMP PROPERTIES
+ DESCRIPTION "The GNU Multiple Precision Arithmetic Library (found: v.${PC_GMP_VERSION})"
+ )
+else()
+ set_package_properties(GMP PROPERTIES
+ DESCRIPTION "The GNU Multiple Precision Arithmetic Library"
+ )
+endif()
+
+mark_as_advanced(GMPXX_LIBRARY GMP_LIBRARY GMP_INCLUDE_DIR)
diff --git a/cmake/Modules/FindGNSSSIMULATOR.cmake b/cmake/Modules/FindGNSSSIMULATOR.cmake
index 6a193746d..abeee05ce 100644
--- a/cmake/Modules/FindGNSSSIMULATOR.cmake
+++ b/cmake/Modules/FindGNSSSIMULATOR.cmake
@@ -1,9 +1,13 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2021 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(GNSSSIMULATOR_ROOT)
set(GNSSSIMULATOR_ROOT_USER_DEFINED ${GNSSSIMULATOR_ROOT})
else()
@@ -25,7 +29,8 @@ find_program(SW_GENERATOR_BIN gnss_sim
${GNSSSIMULATOR_ROOT_USER_DEFINED}
/usr
/usr/local
- /opt/local
+ ${CMAKE_SYSTEM_PREFIX_PATH}
+ ${CMAKE_INSTALL_FULL_BINDIR}
PATH_SUFFIXES bin
ONLY_CMAKE_FIND_ROOT_PATH
)
diff --git a/cmake/Modules/FindGNSSTK.cmake b/cmake/Modules/FindGNSSTK.cmake
index e810ebee7..d49a1bc53 100644
--- a/cmake/Modules/FindGNSSTK.cmake
+++ b/cmake/Modules/FindGNSSTK.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2022 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2022-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# - Find gnsstk library
@@ -19,6 +19,10 @@ if(NOT COMMAND feature_summary)
include(FeatureSummary)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT GNSSTK_ROOT)
set(GNSSTK_ROOT_USER_DEFINED /usr/local)
else()
@@ -35,17 +39,13 @@ unset(GNSSTK_INCLUDE_DIR CACHE)
unset(GNSSTK_USES_GPSTK_NAMESPACE CACHE)
find_path(GNSSTK_INCLUDE_DIR gnsstk/Rinex3ObsBase.hpp
PATHS ${GNSSTK_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
set(GNSSTK_NAMES ${CMAKE_FIND_LIBRARY_PREFIXES}gnsstk${CMAKE_SHARED_LIBRARY_SUFFIX})
if(NOT GNSSTK_INCLUDE_DIR)
find_path(GNSSTK_INCLUDE_DIR gpstk/Rinex3ObsBase.hpp
PATHS ${GNSSTK_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
if(GNSSTK_INCLUDE_DIR)
set(GNSSTK_NAMES gpstk ${CMAKE_FIND_LIBRARY_PREFIXES}gpstk${CMAKE_SHARED_LIBRARY_SUFFIX})
@@ -56,12 +56,8 @@ endif()
include(GNUInstallDirs)
find_library(GNSSTK_LIBRARY NAMES ${GNSSTK_NAMES}
- PATHS ${GNSSTK_ROOT_USER_DEFINED}/lib
- ${GNSSTK_ROOT_USER_DEFINED}/${CMAKE_INSTALL_LIBDIR}
- /usr/local/lib
- /usr/${CMAKE_INSTALL_LIBDIR}
- /usr/local/${CMAKE_INSTALL_LIBDIR}
- /opt/local/lib
+ PATHS ${GNSSTK_ROOT_USER_DEFINED}/${CMAKE_INSTALL_LIBDIR}
+ ${GNSSSDR_LIB_PATHS}
)
if(GNSSTK_LIBRARY AND GNSSTK_INCLUDE_DIR)
diff --git a/cmake/Modules/FindGNUPLOT.cmake b/cmake/Modules/FindGNUPLOT.cmake
index c464bc6b6..dbbcd04f7 100644
--- a/cmake/Modules/FindGNUPLOT.cmake
+++ b/cmake/Modules/FindGNUPLOT.cmake
@@ -1,18 +1,19 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2021 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2021-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
find_program(GNUPLOT_EXECUTABLE
NAMES
gnuplot
pgnuplot
PATHS
- /usr/bin
- /usr/local/bin
- /opt/local/bin
+ ${GNSSSDR_BIN_PATHS}
ONLY_CMAKE_FIND_ROOT_PATH
)
diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake
index 5ce37cba6..01553d725 100644
--- a/cmake/Modules/FindGNURADIO.cmake
+++ b/cmake/Modules/FindGNURADIO.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2022 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
########################################################################
@@ -16,6 +16,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
include(FindPackageHandleStandardArgs)
# if GR_REQUIRED_COMPONENTS is not defined, it will be set to the following list
@@ -93,9 +97,7 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
NAMES ${INCFILE}
HINTS ${PC_INCDIR}
PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
# look for libs
@@ -103,37 +105,8 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
find_library(${LIBVAR_NAME}_${libname}
NAMES ${libname} ${libname}-${PC_GNURADIO_RUNTIME_VERSION}
HINTS ${PC_LIBDIR}
- PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib
- ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/${CMAKE_INSTALL_LIBDIR}
+ ${GNSSSDR_LIB_PATHS}
)
list(APPEND ${LIBVAR_NAME} ${${LIBVAR_NAME}_${libname}})
endforeach()
@@ -221,9 +194,7 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION)
find_file(GNURADIO_VERSION_GREATER_THAN_373
NAMES gnuradio/blocks/tsb_vector_sink_f.h
PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
if(GNURADIO_VERSION_GREATER_THAN_373)
set(PC_GNURADIO_RUNTIME_VERSION "3.7.4+")
@@ -232,9 +203,7 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION)
find_file(GNURADIO_VERSION_GREATER_THAN_38
NAMES gnuradio/filter/mmse_resampler_cc.h
PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
if(GNURADIO_VERSION_GREATER_THAN_38)
set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+")
@@ -302,9 +271,7 @@ if(GNURADIO_VERSION VERSION_GREATER 3.8.99)
NAMES gnuradio/iio/api.h
HINTS ${PC_GNURADIO_IIO_INCLUDEDIR}
PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
# look for libs
@@ -313,35 +280,7 @@ if(GNURADIO_VERSION VERSION_GREATER 3.8.99)
HINTS ${PC_GNURADIO_IIO_LIBDIR}
PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib
${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
if(GNURADIO_IIO_LIBRARIES)
@@ -418,8 +357,10 @@ if(GNURADIO_RUNTIME_INCLUDE_DIRS)
)
if(CMAKE_VERSION VERSION_GREATER 3.13)
target_link_libraries(Gnuradio::filter INTERFACE Log4cpp::log4cpp)
+ target_link_libraries(Gnuradio::runtime INTERFACE Log4cpp::log4cpp)
else()
set_target_properties(Gnuradio::filter PROPERTIES INTERFACE_LINK_LIBRARIES Log4cpp::log4cpp)
+ set_target_properties(Gnuradio::runtime PROPERTIES INTERFACE_LINK_LIBRARIES Log4cpp::log4cpp)
endif()
endif()
if(${_uses_spdlog})
diff --git a/cmake/Modules/FindGOOGLETEST.cmake b/cmake/Modules/FindGOOGLETEST.cmake
index cf47a7062..268d8580a 100644
--- a/cmake/Modules/FindGOOGLETEST.cmake
+++ b/cmake/Modules/FindGOOGLETEST.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
@@ -23,6 +23,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_GTEST gtest)
if(NOT GTEST_DIR)
@@ -44,10 +48,11 @@ find_path(LIBGTEST_DEV_DIR
${GTEST_DIR_USER_PROVIDED}/googletest
/usr/src/googletest/googletest
/usr/src/gtest
- /usr/include/gtest
- /usr/local/src/googletest/googletest
- /opt/local/src/gtest-1.7.0
- /opt/homebrew/opt/googletest/include/googletest/googletest
+ ${GNSSSDR_INCLUDE_PATHS}/gtest
+ ${GNSSSDR_INCLUDE_PATHS}/googletest
+ ${CMAKE_SYSTEM_PREFIX_PATH}/src/googletest/googletest
+ ${CMAKE_SYSTEM_PREFIX_PATH}/src/gtest-1.7.0
+ ${CMAKE_SYSTEM_PREFIX_PATH}/opt/googletest/include/googletest/googletest
)
find_path(GTEST_INCLUDE_DIRS
@@ -55,10 +60,9 @@ find_path(GTEST_INCLUDE_DIRS
HINTS ${PC_GTEST_INCLUDEDIR}
PATHS
${GTEST_DIR_USER_PROVIDED}/googletest/include
- /usr/include
- /usr/local/include
- /opt/local/src/gtest-1.7.0/include
- /opt/homebrew/opt/googletest/include
+ ${GNSSSDR_INCLUDE_PATHS}
+ ${CMAKE_SYSTEM_PREFIX_PATH}/src/gtest-1.7.0/include
+ ${CMAKE_SYSTEM_PREFIX_PATH}/opt/googletest/include
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindGPERFTOOLS.cmake b/cmake/Modules/FindGPERFTOOLS.cmake
index 4d6dd135b..63516e9a2 100644
--- a/cmake/Modules/FindGPERFTOOLS.cmake
+++ b/cmake/Modules/FindGPERFTOOLS.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# Tries to find Gperftools.
@@ -33,6 +33,10 @@ if(NOT COMMAND feature_summary)
include(FeatureSummary)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT GPERFTOOLS_ROOT)
set(GPERFTOOLS_ROOT_USER_DEFINED /usr/local)
else()
@@ -56,41 +60,27 @@ find_library(GPERFTOOLS_TCMALLOC
NAMES tcmalloc
PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/lib
${GPERFTOOLS_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
find_library(GPERFTOOLS_PROFILER
NAMES profiler
PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/lib
${GPERFTOOLS_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
find_library(GPERFTOOLS_TCMALLOC_AND_PROFILER
NAMES tcmalloc_and_profiler
PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/lib
${GPERFTOOLS_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
find_path(GPERFTOOLS_INCLUDE_DIR
NAMES gperftools/heap-profiler.h
- PATHS /usr/include
- /usr/local/include
- /opt/local/include
- ${GPERFTOOLS_ROOT_USER_DEFINED}/include
+ PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
set(GPERFTOOLS_LIBRARIES ${GPERFTOOLS_TCMALLOC_AND_PROFILER})
diff --git a/cmake/Modules/FindGRDBFCTTC.cmake b/cmake/Modules/FindGRDBFCTTC.cmake
index 72bbe8d90..09a4bbd2b 100644
--- a/cmake/Modules/FindGRDBFCTTC.cmake
+++ b/cmake/Modules/FindGRDBFCTTC.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
########################################################################
@@ -17,6 +17,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_GR_DBFCTTC gr-dbfcttc)
if(NOT GRDBFCTTC_ROOT)
@@ -46,9 +50,7 @@ find_path(
NAMES dbfcttc/api.h
HINTS ${PC_GR_DBFCTTC_INCLUDEDIR}
PATHS ${GRDBFCTTC_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(
@@ -57,11 +59,7 @@ find_library(
HINTS ${PC_GR_DBFCTTC_LIBDIR}
PATHS ${GRDBFCTTC_ROOT_USER_DEFINED}/lib
${GRDBFCTTC_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindGRIIO.cmake b/cmake/Modules/FindGRIIO.cmake
index e08290252..600401c42 100644
--- a/cmake/Modules/FindGRIIO.cmake
+++ b/cmake/Modules/FindGRIIO.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -17,6 +17,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_IIO gnuradio-iio)
if(NOT GRIIO_ROOT)
@@ -24,31 +28,31 @@ if(NOT GRIIO_ROOT)
else()
set(GRIIO_ROOT_USER_DEFINED ${GRIIO_ROOT})
endif()
+
if(DEFINED ENV{GRIIO_ROOT})
set(GRIIO_ROOT_USER_DEFINED
${GRIIO_ROOT_USER_DEFINED}
$ENV{GRIIO_ROOT}
)
endif()
+
if(DEFINED ENV{IIO_DIR})
set(GRIIO_ROOT_USER_DEFINED
${GRIIO_ROOT_USER_DEFINED}
$ENV{IIO_DIR}
)
endif()
+
set(GRIIO_ROOT_USER_DEFINED
${GRIIO_ROOT_USER_DEFINED}
${CMAKE_INSTALL_PREFIX}
)
-
find_path(IIO_INCLUDE_DIRS
NAMES gnuradio/iio/api.h
HINTS ${PC_IIO_INCLUDEDIR}
PATHS ${GRIIO_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
if(IIO_INCLUDE_DIRS)
@@ -58,9 +62,7 @@ else()
NAMES iio/api.h
HINTS ${PC_IIO_INCLUDEDIR}
PATHS ${GRIIO_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
set(GR_IIO_INCLUDE_HAS_GNURADIO FALSE)
endif()
@@ -70,35 +72,7 @@ find_library(IIO_LIBRARIES
HINTS ${PC_IIO_LIBDIR}
PATHS ${GRIIO_ROOT_USER_DEFINED}/lib
${GRIIO_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/hppa-linux-gnu
- /usr/lib/i686-gnu
- /usr/lib/i686-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i686-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/sh4-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindGRLIMESDR.cmake b/cmake/Modules/FindGRLIMESDR.cmake
index cfd546feb..ff4615a14 100644
--- a/cmake/Modules/FindGRLIMESDR.cmake
+++ b/cmake/Modules/FindGRLIMESDR.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# Tries to find gr-limesdr.
@@ -35,6 +35,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(GRLIMESDR_PKG QUIET gnuradio-limesdr)
if(NOT GRLIMESDR_ROOT)
@@ -57,9 +61,7 @@ find_path(GRLIMESDR_INCLUDE_DIR
${GRLIMESDR_PKG_INCLUDEDIR}
PATHS
${GRLIMESDR_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(GRLIMESDR_LIBRARIES
@@ -70,35 +72,7 @@ find_library(GRLIMESDR_LIBRARIES
PATHS
${GRLIMESDR_ROOT_USER_DEFINED}/lib
${GRLIMESDR_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/riscv64-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindGROSMOSDR.cmake b/cmake/Modules/FindGROSMOSDR.cmake
index cfaef1494..5184fb548 100644
--- a/cmake/Modules/FindGROSMOSDR.cmake
+++ b/cmake/Modules/FindGROSMOSDR.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# Tries to find gr-osmosdr.
@@ -35,6 +35,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(GROSMOSDR_PKG gnuradio-osmosdr)
if(NOT GROSMOSDR_ROOT)
@@ -57,9 +61,7 @@ find_path(GROSMOSDR_INCLUDE_DIR
${GROSMOSDR_PKG_INCLUDEDIR}
PATHS
${GROSMOSDR_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(GROSMOSDR_LIBRARIES
@@ -70,35 +72,7 @@ find_library(GROSMOSDR_LIBRARIES
PATHS
${GROSMOSDR_ROOT_USER_DEFINED}/lib
${GROSMOSDR_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/riscv64-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindLIBAD9361.cmake b/cmake/Modules/FindLIBAD9361.cmake
index 80df49673..55fcd6e58 100644
--- a/cmake/Modules/FindLIBAD9361.cmake
+++ b/cmake/Modules/FindLIBAD9361.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -17,6 +17,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_LIBAD9361 libad9361)
if(NOT LIBAD9361_ROOT)
@@ -39,9 +43,7 @@ find_path(LIBAD9361_INCLUDE_DIRS
NAMES ad9361.h
HINTS ${PC_LIBAD9361_INCLUDEDIR}
PATHS ${LIBAD9361_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(LIBAD9361_LIBRARIES
@@ -49,35 +51,7 @@ find_library(LIBAD9361_LIBRARIES
HINTS ${PC_LIBAD9361_LIBDIR}
PATHS ${LIBAD9361_ROOT_USER_DEFINED}/lib
${LIBAD9361_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/hppa-linux-gnu
- /usr/lib/i686-gnu
- /usr/lib/i686-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i686-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/sh4-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
/Library/Frameworks/ad9361.framework
)
diff --git a/cmake/Modules/FindLIBIIO.cmake b/cmake/Modules/FindLIBIIO.cmake
index 31f152b6f..83aab4b81 100644
--- a/cmake/Modules/FindLIBIIO.cmake
+++ b/cmake/Modules/FindLIBIIO.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -17,6 +17,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_LIBIIO libiio)
if(NOT LIBIIO_ROOT)
@@ -40,9 +44,7 @@ find_path(
NAMES iio.h
HINTS ${PC_LIBIIO_INCLUDEDIR}
PATHS ${LIBIIO_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(
@@ -51,35 +53,7 @@ find_library(
HINTS ${PC_LIBIIO_LIBDIR}
PATHS ${LIBIIO_ROOT_USER_DEFINED}/lib
${LIBIIO_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/hppa-linux-gnu
- /usr/lib/i686-gnu
- /usr/lib/i686-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i686-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/sh4-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
/Library/Frameworks/iio.framework/
)
diff --git a/cmake/Modules/FindLIBUNWIND.cmake b/cmake/Modules/FindLIBUNWIND.cmake
index f2c88b569..8d6adbada 100644
--- a/cmake/Modules/FindLIBUNWIND.cmake
+++ b/cmake/Modules/FindLIBUNWIND.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2022 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2022-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# Find the libunwind library
@@ -17,30 +17,27 @@ if(NOT COMMAND feature_summary)
include(FeatureSummary)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
find_path(LIBUNWIND_INCLUDE_DIR
NAMES
libunwind.h
unwind.h
- HINTS
- /usr
- /usr/local
- /opt/local
PATH_SUFFIXES include
PATHS "${LIBUNWIND_ROOT}/include"
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(LIBUNWIND_GENERIC_LIBRARY
NAMES
libunwind
unwind
- HINTS
- /usr
- /usr/local
- /opt/local
- PATH_SUFFIXES lib lib64
PATHS
"${LIBUNWIND_ROOT}/lib"
"${LIBUNWIND_ROOT}/lib64"
+ ${GNSSSDR_LIB_PATHS}
)
if(LIBUNWIND_INCLUDE_DIR)
@@ -70,12 +67,8 @@ if(LIBUNWIND_INCLUDE_DIR)
NAMES
libunwind-${LIBUNWIND_ARCH}
"unwind-${LIBUNWIND_ARCH}"
- HINTS
- /usr
- /usr/local
- /opt/local
- PATH_SUFFIXES lib lib64
PATHS "${LIBUNWIND_ROOT}"
+ ${GNSSSDR_LIB_PATHS}
)
if(NOT LIBUNWIND_SPECIFIC_LIBRARY)
message(STATUS " -- Failed to find unwind-${LIBUNWIND_ARCH}")
diff --git a/cmake/Modules/FindLOG4CPP.cmake b/cmake/Modules/FindLOG4CPP.cmake
index 73876d1da..d6d5eb9b4 100644
--- a/cmake/Modules/FindLOG4CPP.cmake
+++ b/cmake/Modules/FindLOG4CPP.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# - Find Log4cpp
@@ -23,6 +23,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_LOG4CPP log4cpp QUIET)
if(LOG4CPP_INCLUDE_DIR)
@@ -48,9 +52,7 @@ set(LOG4CPP_ROOT_USER_PROVIDED
find_path(LOG4CPP_INCLUDE_DIR log4cpp/Category.hh
${LOG4CPP_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
${PC_LOG4CPP_INCLUDEDIR}
)
@@ -73,36 +75,8 @@ find_library(LOG4CPP_LIBRARY
NAMES ${LOG4CPP_NAMES}
HINTS ${PC_LOG4CPP_LIBDIR}
PATHS ${LOG4CPP_ROOT_USER_PROVIDED}/lib
- ${LOG4CPP_ROOT_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${LOG4CPP_ROOT_USER_PROVIDED}/lib64
+ ${GNSSSDR_LIB_PATHS}
)
if(LOG4CPP_INCLUDE_DIR AND LOG4CPP_LIBRARY)
@@ -121,7 +95,7 @@ include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LOG4CPP DEFAULT_MSG LOG4CPP_INCLUDE_DIRS LOG4CPP_LIBRARIES)
set_package_properties(LOG4CPP PROPERTIES
- URL "http://log4cpp.sourceforge.net/"
+ URL "https://log4cpp.sourceforge.net/"
)
if(LOG4CPP_FOUND AND PC_LOG4CPP_VERSION)
diff --git a/cmake/Modules/FindMATIO.cmake b/cmake/Modules/FindMATIO.cmake
index 49e0bf8cd..da256e21f 100644
--- a/cmake/Modules/FindMATIO.cmake
+++ b/cmake/Modules/FindMATIO.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# FindMATIO
@@ -55,6 +55,10 @@ if(NOT COMMAND feature_summary)
include(FeatureSummary)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
if(NOT MATIO_ROOT)
set(MATIO_ROOT_USER_DEFINED /usr)
else()
@@ -72,9 +76,7 @@ find_path(MATIO_INCLUDE_DIR
NAMES matio.h
PATHS
${MATIO_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include
DOC "The MATIO include directory"
)
@@ -85,32 +87,7 @@ find_library(MATIO_LIBRARY
PATHS
${MATIO_ROOT_USER_DEFINED}/lib
${MATIO_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/alpha-linux-gnu
- /usr/lib/x86_64-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/hppa-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib
DOC "The MATIO library"
)
diff --git a/cmake/Modules/FindORC.cmake b/cmake/Modules/FindORC.cmake
index 97cd0e4a8..e16632c2b 100644
--- a/cmake/Modules/FindORC.cmake
+++ b/cmake/Modules/FindORC.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
if(DEFINED __INCLUDED_GNSSSDR_CMAKE_FIND_ORC)
@@ -17,6 +17,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_ORC "orc-0.4 > 0.4.22")
if(NOT ORC_ROOT)
@@ -43,18 +47,14 @@ endif()
find_program(ORCC_EXECUTABLE orcc
HINTS ${ORC_ROOT_USER_PROVIDED}/bin
- PATHS /usr/bin
- /usr/local/bin
- /opt/local/bin
+ PATHS ${CMAKE_SYSTEM_PREFIX_PATH}/bin
)
find_path(ORC_INCLUDE_DIR
NAMES orc/orc.h
HINTS ${PC_ORC_INCLUDEDIR}
PATHS ${ORC_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
PATH_SUFFIXES orc-0.4
)
@@ -63,80 +63,23 @@ find_path(ORC_LIBRARY_DIR
HINTS ${PC_ORC_LIBDIR}
PATHS ${ORC_ROOT_USER_PROVIDED}/lib
${ORC_ROOT_USER_PROVIDED}/lib64
- ${CMAKE_INSTALL_PREFIX}/lib
- ${CMAKE_INSTALL_PREFIX}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
find_library(ORC_LIB orc-0.4
HINTS ${PC_ORC_LIBRARY_DIRS}
PATHS ${ORC_ROOT_USER_PROVIDED}/lib
${ORC_ROOT_USER_PROVIDED}/lib64
- ${CMAKE_INSTALL_PREFIX}/lib
- ${CMAKE_INSTALL_PREFIX}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
find_library(ORC_LIBRARY_STATIC ${CMAKE_STATIC_LIBRARY_PREFIX}orc-0.4${CMAKE_STATIC_LIBRARY_SUFFIX}
HINTS ${PC_ORC_LIBRARY_DIRS}
PATHS ${ORC_ROOT}/lib
${ORC_ROOT}/lib64
- ${CMAKE_INSTALL_PREFIX}/lib
- ${CMAKE_INSTALL_PREFIX}/lib64
${ORC_ROOT_USER_PROVIDED}/lib
${ORC_ROOT_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
if(PC_ORC_VERSION)
diff --git a/cmake/Modules/FindPCAP.cmake b/cmake/Modules/FindPCAP.cmake
index b72b5f5d1..aba931218 100644
--- a/cmake/Modules/FindPCAP.cmake
+++ b/cmake/Modules/FindPCAP.cmake
@@ -6,7 +6,7 @@
# - Find pcap
# Find the PCAP includes and library
-# http://www.tcpdump.org/
+# https://www.tcpdump.org/
#
# The environment variable PCAPDIR allows to specify where to find
# libpcap in non standard location.
@@ -27,6 +27,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_PCAP libpcap QUIET)
if(NOT PCAP_ROOT)
@@ -77,9 +81,7 @@ else()
${PC_PCAP_INCLUDEDIR}
PATHS
${PCAP_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(PCAP_LIBRARY
NAMES
@@ -88,32 +90,7 @@ else()
${PC_PCAP_LIBDIR}
PATHS
${PCAP_ROOT_USER_PROVIDED}/lib
- /usr/lib
- /usr/lib64
- /usr/lib/alpha-linux-gnu
- /usr/lib/x86_64-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/hppa-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
endif()
diff --git a/cmake/Modules/FindPUGIXML.cmake b/cmake/Modules/FindPUGIXML.cmake
index c5c1ea637..6c6b34a63 100644
--- a/cmake/Modules/FindPUGIXML.cmake
+++ b/cmake/Modules/FindPUGIXML.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
# Find the pugixml XML parsing library.
@@ -24,6 +24,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_PUGIXML pugixml QUIET)
if(NOT PUGIXML_ROOT)
@@ -50,11 +54,9 @@ find_path(PUGIXML_INCLUDE_DIR
PATHS ${PUGIXML_ROOT_USER_DEFINED}/include
${PUGIXML_ROOT_USER_DEFINED}/include/pugixml-${PC_PUGIXML_VERSION}
${PUGIXML_ROOT_USER_DEFINED}/include/pugixml-1.9
- /usr/include
- /usr/local/include
- /usr/local/include/pugixml-${PC_PUGIXML_VERSION}
- /usr/local/include/pugixml-1.9
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
+ ${GNSSSDR_INCLUDE_PATHS}/pugixml-${PC_PUGIXML_VERSION}
+ ${GNSSSDR_INCLUDE_PATHS}/pugixml-1.9
)
find_library(PUGIXML_LIBRARY
@@ -66,35 +68,9 @@ find_library(PUGIXML_LIBRARY
${PUGIXML_ROOT_USER_DEFINED}/lib64/pugixml-${PC_PUGIXML_VERSION}
${PUGIXML_ROOT_USER_DEFINED}}/lib/pugixml-1.9
${PUGIXML_ROOT_USER_DEFINED}/lib64/pugixml-1.9
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/i386-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/alpha-linux-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/riscv64-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/local/lib
- /usr/local/lib64
- /usr/local/lib/pugixml-${PC_PUGIXML_VERSION}
- /usr/local/lib/pugixml-1.9
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
+ ${GNSSSDR_LIB_PATHS}/pugixml-${PC_PUGIXML_VERSION}
+ ${GNSSSDR_LIB_PATHS}/pugixml-1.9
)
# Support the REQUIRED and QUIET arguments, and set PUGIXML_FOUND if found.
diff --git a/cmake/Modules/FindTELEORBIT.cmake b/cmake/Modules/FindTELEORBIT.cmake
index b0d5e6c20..fa315cd32 100644
--- a/cmake/Modules/FindTELEORBIT.cmake
+++ b/cmake/Modules/FindTELEORBIT.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -17,6 +17,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_TELEORBIT teleorbit QUIET)
if(NOT TELEORBIT_ROOT)
@@ -38,10 +42,9 @@ set(TELEORBIT_ROOT_USER_DEFINED
find_path(TELEORBIT_INCLUDE_DIRS
NAMES teleorbit/api.h
HINTS ${PC_TELEORBIT_INCLUDEDIR}
+ PATH_SUFFIXES gnuradio
PATHS ${TELEORBIT_ROOT_USER_DEFINED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(TELEORBIT_LIBRARIES
@@ -49,11 +52,7 @@ find_library(TELEORBIT_LIBRARIES
HINTS ${PC_TELEORBIT_LIBDIR}
PATHS ${TELEORBIT_ROOT_USER_DEFINED}/lib
${TELEORBIT_ROOT_USER_DEFINED}/lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindUHD.cmake b/cmake/Modules/FindUHD.cmake
index 772cf436a..356af6593 100644
--- a/cmake/Modules/FindUHD.cmake
+++ b/cmake/Modules/FindUHD.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -20,6 +20,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_UHD uhd)
if(NOT UHD_ROOT)
@@ -50,9 +54,7 @@ find_path(UHD_INCLUDE_DIRS
NAMES uhd/config.hpp
HINTS ${PC_UHD_INCLUDEDIR}
PATHS ${UHD_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(UHD_LIBRARIES
@@ -60,35 +62,7 @@ find_library(UHD_LIBRARIES
HINTS ${PC_UHD_LIBDIR}
PATHS ${UHD_ROOT_USER_PROVIDED}/lib
${UHD_ROOT_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/hppa-linux-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindVOLK.cmake b/cmake/Modules/FindVOLK.cmake
index f67efdfbb..70286fbf0 100644
--- a/cmake/Modules/FindVOLK.cmake
+++ b/cmake/Modules/FindVOLK.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -20,6 +20,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_VOLK volk QUIET)
if(NOT VOLK_ROOT)
@@ -48,9 +52,7 @@ find_path(VOLK_INCLUDE_DIRS
NAMES volk/volk.h
HINTS ${PC_VOLK_INCLUDEDIR}
PATHS ${VOLK_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(VOLK_LIBRARIES
@@ -58,34 +60,7 @@ find_library(VOLK_LIBRARIES
HINTS ${PC_VOLK_LIBDIR}
PATHS ${VOLK_ROOT_USER_PROVIDED}/lib
${VOLK_ROOT_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/lib/x86_64-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/arm-linux-gnueabi
- /usr/lib/aarch64-linux-gnu
- /usr/lib/mipsel-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/powerpc-linux-gnu
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/hppa-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/i386-gnu
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/alpha-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindVOLKGNSSSDR.cmake b/cmake/Modules/FindVOLKGNSSSDR.cmake
index 64ab621d3..9de60ce30 100644
--- a/cmake/Modules/FindVOLKGNSSSDR.cmake
+++ b/cmake/Modules/FindVOLKGNSSSDR.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -21,6 +21,10 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
pkg_check_modules(PC_VOLK_GNSSSDR QUIET volk_gnsssdr)
if(NOT VOLKGNSSSDR_ROOT)
@@ -51,9 +55,7 @@ find_path(VOLK_GNSSSDR_INCLUDE_DIRS
NAMES volk_gnsssdr/volk_gnsssdr.h
HINTS ${PC_VOLK_GNSSSDR_INCLUDEDIR}
PATHS ${VOLKGNSSSDR_ROOT_USER_PROVIDED}/include
- /usr/include
- /usr/local/include
- /opt/local/include
+ ${GNSSSDR_INCLUDE_PATHS}
)
find_library(VOLK_GNSSSDR_LIBRARIES
@@ -61,11 +63,7 @@ find_library(VOLK_GNSSSDR_LIBRARIES
HINTS ${PC_VOLK_GNSSSDR_LIBDIR}
PATHS ${VOLKGNSSSDR_ROOT_USER_PROVIDED}/lib
${VOLKGNSSSDR_ROOT_USER_PROVIDED}/lib64
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/FindZEROMQ.cmake b/cmake/Modules/FindZEROMQ.cmake
index 0ef937139..9d2254cd6 100644
--- a/cmake/Modules/FindZEROMQ.cmake
+++ b/cmake/Modules/FindZEROMQ.cmake
@@ -1,7 +1,7 @@
# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
# This file is part of GNSS-SDR.
#
-# SPDX-FileCopyrightText: 2023 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-FileCopyrightText: 2024-2025 C. Fernandez-Prades cfernandez(at)cttc.es
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -17,44 +17,23 @@ if(NOT PKG_CONFIG_FOUND)
include(FindPkgConfig)
endif()
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
find_package(PkgConfig)
pkg_check_modules(PC_ZEROMQ "libzmq")
find_path(ZEROMQ_INCLUDE_DIRS
NAMES zmq.hpp
- HINTS ${PC_ZEROMQ_INCLUDE_DIR} ${CMAKE_INSTALL_PREFIX}/include
- PATHS /usr/local/include /usr/include /opt/local/include
+ HINTS ${PC_ZEROMQ_INCLUDE_DIR}
+ PATHS ${GNSSSDR_INCLUDE_PATHS}
)
find_library(ZEROMQ_LIBRARIES
NAMES zmq libzmq.so.5 ${ZEROMQ_LIBRARY_NAME}
- HINTS ${PC_ZEROMQ_LIBDIR} ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/lib64
- PATHS /usr/lib
- /usr/lib64
- /usr/lib/alpha-linux-gnu
- /usr/lib/x86_64-linux-gnu
- /usr/lib/aarch64-linux-gnu
- /usr/lib/arm-linux-gnueabi
- /usr/lib/arm-linux-gnueabihf
- /usr/lib/hppa-linux-gnu
- /usr/lib/i386-linux-gnu
- /usr/lib/m68k-linux-gnu
- /usr/lib/mips-linux-gnu
- /usr/lib/mips64el-linux-gnuabi64
- /usr/lib/mipsel-linux-gnu
- /usr/lib/powerpc-linux-gnuspe
- /usr/lib/powerpc64-linux-gnu
- /usr/lib/powerpc64le-linux-gnu
- /usr/lib/riscv64-linux-gnu
- /usr/lib/s390x-linux-gnu
- /usr/lib/sh4-linux-gnu
- /usr/lib/sparc64-linux-gnu
- /usr/lib/x86_64-linux-gnux32
- /usr/lib/x86_64-kfreebsd-gnu
- /usr/lib/i386-kfreebsd-gnu
- /usr/local/lib
- /usr/local/lib64
- /opt/local/lib
+ HINTS ${PC_ZEROMQ_LIBDIR}
+ PATHS ${GNSSSDR_LIB_PATHS}
)
include(FindPackageHandleStandardArgs)
diff --git a/cmake/Modules/GnsssdrCrypto.cmake b/cmake/Modules/GnsssdrCrypto.cmake
new file mode 100644
index 000000000..db530a709
--- /dev/null
+++ b/cmake/Modules/GnsssdrCrypto.cmake
@@ -0,0 +1,188 @@
+# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
+# This file is part of GNSS-SDR.
+#
+# SPDX-FileCopyrightText: 2024-2025 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(NOT COMMAND feature_summary)
+ include(FeatureSummary)
+endif()
+
+if(NOT GNSSSDR_LIB_PATHS)
+ include(GnsssdrFindPaths)
+endif()
+
+################################################################################
+# OpenSSL https://www.openssl.org/
+################################################################################
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ set(OPENSSL_ROOT_DIR /usr/local/opt/openssl) # Trick for Homebrew
+endif()
+unset(OPENSSL_FOUND CACHE)
+unset(GnuTLS_FOUND CACHE)
+unset(GMP_FOUND CACHE)
+if(NOT ENABLE_GNUTLS)
+ find_package(OpenSSL)
+endif()
+set_package_properties(OpenSSL
+ PROPERTIES
+ URL "https://www.openssl.org"
+ PURPOSE "Used for the OSNMA and SUPL protocol implementations."
+ TYPE REQUIRED
+)
+if(OPENSSL_FOUND)
+ set_package_properties(OpenSSL
+ PROPERTIES
+ DESCRIPTION "Cryptography and SSL/TLS Toolkit (found: v${OPENSSL_VERSION})"
+ )
+else()
+ set_package_properties(OpenSSL
+ PROPERTIES
+ DESCRIPTION "OpenSSL has not been found, but GnuTLS with openssl compatibility can replace it"
+ )
+ ################################################################################
+ # GnuTLS - https://www.gnutls.org/
+ ################################################################################
+ find_package(GnuTLS)
+ set_package_properties(GnuTLS PROPERTIES
+ URL "https://www.gnutls.org/"
+ PURPOSE "Used for the OSNMA and SUPL protocol implementations."
+ TYPE REQUIRED
+ )
+ if(GnuTLS_FOUND AND GNUTLS_VERSION_STRING)
+ set_package_properties(GnuTLS PROPERTIES
+ DESCRIPTION "Transport Layer Security Library (found: v${GNUTLS_VERSION_STRING})"
+ )
+ else()
+ set_package_properties(GnuTLS PROPERTIES
+ DESCRIPTION "Transport Layer Security Library"
+ )
+ endif()
+ find_library(GNUTLS_OPENSSL_LIBRARY
+ NAMES gnutls-openssl libgnutls-openssl.so.27
+ PATHS ${GNSSSDR_LIB_PATHS}
+ )
+
+ find_path(GNUTLS_INCLUDE_DIR NAMES gnutls/gnutls.h
+ PATHS
+ ${GNSSSDR_INCLUDE_PATHS}
+ ${GNUTLS_ROOT_DIR}/include/
+ )
+
+ if(NOT GNUTLS_OPENSSL_LIBRARY)
+ message(" The GnuTLS library with openssl compatibility enabled has not been found.")
+ message(" You can try to install the required libraries by typing:")
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
+ if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
+ message(" sudo yum install openssl-devel")
+ else()
+ message(" sudo apt install libgnutls28-dev")
+ endif()
+ endif()
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ message(" 'sudo port install openssl3', if you are using Macports, or")
+ message(" 'brew install openssl', if you are using Homebrew.")
+ endif()
+ message(FATAL_ERROR "OpenSSL or the GnuTLS libraries with openssl compatibility are required to build gnss-sdr")
+ endif()
+
+ # Test GnuTLS capabilities
+ file(READ "${GNUTLS_INCLUDE_DIR}/gnutls/gnutls.h" gnutls_gnutls_file_contents)
+ if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_SIGN_ECDSA_SHA256")
+ set(GNUTLS_SIGN_ECDSA_SHA256 TRUE)
+ endif()
+ if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_SIGN_ECDSA_SHA512")
+ set(GNUTLS_SIGN_ECDSA_SHA512 TRUE)
+ endif()
+ if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_DIG_SHA3_256")
+ set(GNUTLS_DIG_SHA3_256 TRUE)
+ endif()
+ if("${gnutls_gnutls_file_contents}" MATCHES "#define GNUTLS_VERSION_MAJOR 2")
+ set(GNUTLS_HMAC_INIT_WITH_DIGEST TRUE)
+ endif()
+ if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_MAC_AES_CMAC_128")
+ set(GNUTLS_MAC_AES_CMAC_128 TRUE)
+ endif()
+ file(READ "${GNUTLS_INCLUDE_DIR}/gnutls/abstract.h" gnutls_abstract_file_contents)
+ if("${gnutls_abstract_file_contents}" MATCHES "gnutls_pubkey_export2")
+ set(GNUTLS_PUBKEY_EXPORT2 TRUE)
+ endif()
+
+ find_package(GMP)
+ set_package_properties(GMP PROPERTIES
+ PURPOSE "Required to decompress cryptographic keys."
+ TYPE REQUIRED
+ )
+ if(NOT GMP_FOUND)
+ message(FATAL_ERROR "GMP is required by gnss-sdr if linking against GnuTLS")
+ endif()
+endif()
+
+################################################################################
+
+function(link_to_crypto_dependencies target)
+ if(OPENSSL_FOUND)
+ if(TARGET OpenSSL::SSL)
+ target_link_libraries(${target}
+ PUBLIC
+ OpenSSL::SSL
+ )
+ if(TARGET OpenSSL::Crypto)
+ target_link_libraries(${target}
+ PUBLIC
+ OpenSSL::Crypto
+ )
+ endif()
+ else()
+ target_link_libraries(${target}
+ PUBLIC
+ ${OPENSSL_LIBRARIES}
+ "${OPENSSL_CRYPTO_LIBRARIES}"
+ )
+ target_include_directories(${target}
+ PUBLIC
+ ${OPENSSL_INCLUDE_DIR}
+ )
+ endif()
+ if(OPENSSL_VERSION)
+ if(OPENSSL_VERSION VERSION_GREATER "3.0.0")
+ target_compile_definitions(${target} PUBLIC -DUSE_OPENSSL_3=1)
+ else()
+ if(NOT OPENSSL_VERSION VERSION_LESS "1.1.1")
+ target_compile_definitions(${target} PUBLIC -DUSE_OPENSSL_111=1)
+ endif()
+ endif()
+ endif()
+ else() # GnuTLS
+ target_link_libraries(${target}
+ PUBLIC
+ ${GNUTLS_LIBRARIES}
+ ${GNUTLS_OPENSSL_LIBRARY}
+ PRIVATE
+ Gmp::gmp
+ )
+ target_include_directories(${target}
+ PUBLIC
+ ${GNUTLS_INCLUDE_DIR}
+ )
+ target_compile_definitions(${target} PUBLIC -DUSE_GNUTLS_FALLBACK=1)
+ if(GNUTLS_SIGN_ECDSA_SHA256)
+ target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_SIGN_ECDSA_SHA256=1)
+ endif()
+ if(GNUTLS_SIGN_ECDSA_SHA512)
+ target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_SIGN_ECDSA_SHA512=1)
+ endif()
+ if(GNUTLS_DIG_SHA3_256)
+ target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_DIG_SHA3_256=1)
+ endif()
+ if(GNUTLS_PUBKEY_EXPORT2)
+ target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_PUBKEY_EXPORT2=1)
+ endif()
+ if(GNUTLS_HMAC_INIT_WITH_DIGEST)
+ target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_HMAC_INIT_WITH_DIGEST=1)
+ endif()
+ if(GNUTLS_MAC_AES_CMAC_128)
+ target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_MAC_AES_CMAC_128=1)
+ endif()
+ endif()
+endfunction()
diff --git a/cmake/Modules/GnsssdrFindPaths.cmake b/cmake/Modules/GnsssdrFindPaths.cmake
new file mode 100644
index 000000000..1ebda4f58
--- /dev/null
+++ b/cmake/Modules/GnsssdrFindPaths.cmake
@@ -0,0 +1,93 @@
+# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
+# This file is part of GNSS-SDR.
+#
+# SPDX-FileCopyrightText: 2011-2025 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(GNSSSDR_LIB_PATHS)
+ return()
+endif()
+
+if(NOT CMAKE_INSTALL_LIBDIR)
+ include(GNUInstallDirs)
+endif()
+
+set(GNSSSDR_LIB_PATHS
+ /usr/lib
+ /usr/lib64
+ /usr/lib/aarch64-linux-gnu
+ /usr/lib/alpha-linux-gnu
+ /usr/lib/arm-linux-gnueabi
+ /usr/lib/arm-linux-gnueabihf
+ /usr/lib/hppa-linux-gnu
+ /usr/lib/hppa-linux-gnu
+ /usr/lib/i386-gnu
+ /usr/lib/i386-kfreebsd-gnu
+ /usr/lib/i386-linux-gnu
+ /usr/lib/loongarch64-linux-gnu
+ /usr/lib/m68k-linux-gnu
+ /usr/lib/mips-linux-gnu
+ /usr/lib/mips64el-linux-gnuabi64
+ /usr/lib/mipsel-linux-gnu
+ /usr/lib/powerpc-linux-gnu
+ /usr/lib/powerpc-linux-gnuspe
+ /usr/lib/powerpc64-linux-gnu
+ /usr/lib/powerpc64le-linux-gnu
+ /usr/lib/riscv64-linux-gnu
+ /usr/lib/s390x-linux-gnu
+ /usr/lib/sh4-linux-gnu
+ /usr/lib/sparc64-linux-gnu
+ /usr/lib/x86_64-kfreebsd-gnu
+ /usr/lib/x86_64-linux-gnu
+ /usr/lib/x86_64-linux-gnux32
+ /usr/local/lib
+ /usr/local/lib64
+ /usr/local/lib/i386
+ ${CMAKE_INSTALL_FULL_LIBDIR}
+ ${CMAKE_SYSTEM_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}
+ ${CMAKE_INSTALL_PREFIX}/lib
+ ${CMAKE_INSTALL_PREFIX}/lib64
+)
+
+set(GNSSSDR_INCLUDE_PATHS
+ /usr/include
+ /usr/local/include
+ ${CMAKE_INSTALL_FULL_INCLUDEDIR}
+ ${CMAKE_SYSTEM_PREFIX_PATH}/include
+ ${CMAKE_INSTALL_PREFIX}/include
+)
+
+set(GNSSSDR_BIN_PATHS
+ /usr/bin
+ /usr/local/bin
+ ${CMAKE_INSTALL_PREFIX}/bin
+ ${CMAKE_INSTALL_FULL_BINDIR}
+ ${CMAKE_SYSTEM_PREFIX_PATH}/bin
+ /bin
+ /sbin
+ /usr/sbin
+)
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ if(NOT MACOS_PACKAGES_PREFIX)
+ include(DetectMacOSVersion)
+ endif()
+ set(GNSSSDR_LIB_PATHS ${GNSSSDR_LIB_PATHS}
+ ${MACOS_PACKAGES_PREFIX}/${CMAKE_INSTALL_LIBDIR}
+ ${MACOS_PACKAGES_PREFIX}/lib
+ ${MACOS_PACKAGES_PREFIX}/lib64
+ )
+ set(GNSSSDR_INCLUDE_PATHS ${GNSSSDR_INCLUDE_PATHS}
+ ${MACOS_PACKAGES_PREFIX}/include
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /sw/include # Fink
+ /opt/csw/include # Blastwave
+ )
+ set(GNSSSDR_BIN_PATHS ${GNSSSDR_BIN_PATHS}
+ ${MACOS_PACKAGES_PREFIX}/bin
+ )
+endif()
+
+list(REMOVE_DUPLICATES GNSSSDR_LIB_PATHS)
+list(REMOVE_DUPLICATES GNSSSDR_INCLUDE_PATHS)
diff --git a/cmake/Modules/XcodeRemoveWarningDuplicates.cmake b/cmake/Modules/XcodeRemoveWarningDuplicates.cmake
new file mode 100644
index 000000000..f4e150fcc
--- /dev/null
+++ b/cmake/Modules/XcodeRemoveWarningDuplicates.cmake
@@ -0,0 +1,23 @@
+# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
+# This file is part of GNSS-SDR.
+#
+# SPDX-FileCopyrightText: 2011-2024 C. Fernandez-Prades cfernandez(at)cttc.es
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(DEFINED __INCLUDED_XCODE_REMOVE_WARNING_DUPLICATES_CMAKE)
+ return()
+endif()
+set(__INCLUDED_XCODE_REMOVE_WARNING_DUPLICATES_CMAKE TRUE)
+
+function(xcode_remove_warning_duplicates target)
+ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0")
+ # A bug in Xcode 15 adds duplicate flags to the linker. In addition, the
+ # `-warn_duplicate_libraries` is now enabled by default which may result
+ # in several 'duplicate libraries warning'.
+ # - https://gitlab.kitware.com/cmake/cmake/-/issues/25297 and
+ # - https://indiestack.com/2023/10/xcode-15-duplicate-library-linker-warnings/
+ target_link_options(${target} PUBLIC "LINKER:-no_warn_duplicate_libraries")
+ endif()
+ endif()
+endfunction()
\ No newline at end of file
diff --git a/cmake/Toolchains/rv64gcv-linux-gnu.cmake b/cmake/Toolchains/rv64gcv-linux-gnu.cmake
new file mode 100644
index 000000000..54be4cc5d
--- /dev/null
+++ b/cmake/Toolchains/rv64gcv-linux-gnu.cmake
@@ -0,0 +1,32 @@
+# GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
+# This file is part of GNSS-SDR.
+#
+# Copyright (C) 2011-2025 (see AUTHORS file for a list of contributors)
+# SPDX-License-Identifier: BSD-3-Clause
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_PROCESSOR riscv64)
+
+set(CMAKE_C_COMPILER $ENV{CC})
+set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
+set(CMAKE_CXX_COMPILER $ENV{CXX})
+
+set(CMAKE_C_FLAGS "$ENV{CFLAGS} -march=rv64gcv" CACHE STRING "" FORCE)
+set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE)
+set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -g" CACHE STRING "" FORCE)
+
+set(CMAKE_OBJCOPY
+ ${RISCV64_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}objcopy
+ CACHE INTERNAL "objcopy tool")
+set(CMAKE_SIZE_UTIL
+ ${RISCV64_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}size
+ CACHE INTERNAL "size tool")
+
+set(CMAKE_FIND_ROOT_PATH ${BINUTILS_PATH})
+
+set(QEMU_VLEN $ENV{VLEN})
+if(NOT QEMU_VLEN)
+ set(QEMU_VLEN "128")
+endif()
+
+set(CMAKE_CROSSCOMPILING_EMULATOR "qemu-riscv64-static -L /usr/riscv64-linux-gnu/ -cpu rv64,zba=true,zbb=true,v=on,vlen=${QEMU_VLEN},rvv_ta_all_1s=on,rvv_ma_all_1s=on")
diff --git a/conf/gnss-sdr_BDS_B1I_byte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf
similarity index 97%
rename from conf/gnss-sdr_BDS_B1I_byte.conf
rename to conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf
index a21547d24..e354a754d 100644
--- a/conf/gnss-sdr_BDS_B1I_byte.conf
+++ b/conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf
@@ -50,7 +50,7 @@ InputFilter.grid_density=16
InputFilter.sampling_frequency=25000000
InputFilter.IF=6250000
InputFilter.dump = false
-InputFilter.dump_filename=/home/dmiralles/Documents/gnss-sdr/src/tests/signal_samples/BdsB1IStr01_fs25e6_if0_4ms.dat
+InputFilter.dump_filename=/home/dmiralles/Documents/gnss-sdr/tests/signal_samples/BdsB1IStr01_fs25e6_if0_4ms.dat
Resampler.implementation=Pass_Through
Resampler.sample_freq_in=25000000
Resampler.sample_freq_out=25000000
diff --git a/conf/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf
rename to conf/File_input/Beidou/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf
diff --git a/conf/gnss-sdr_BDS_B3I_byte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf
similarity index 97%
rename from conf/gnss-sdr_BDS_B3I_byte.conf
rename to conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf
index 8de1c685e..edd60bcd8 100644
--- a/conf/gnss-sdr_BDS_B3I_byte.conf
+++ b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf
@@ -51,7 +51,7 @@ InputFilter.grid_density=16
InputFilter.sampling_frequency=50000000
InputFilter.IF=12500000
InputFilter.dump = false
-InputFilter.dump_filename=/home/dmiralles/Documents/gnss-sdr/src/tests/signal_samples/BdsB3IStr01_fs50e6_if0_4ms.dat
+InputFilter.dump_filename=/home/dmiralles/Documents/gnss-sdr/tests/signal_samples/BdsB3IStr01_fs50e6_if0_4ms.dat
Resampler.implementation=Pass_Through
Resampler.sample_freq_in=50000000
Resampler.sample_freq_out=50000000
diff --git a/conf/gnss-sdr_BDS_B3I_ibyte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_BDS_B3I_ibyte.conf
rename to conf/File_input/Beidou/gnss-sdr_BDS_B3I_ibyte.conf
diff --git a/conf/gnss-sdr_BDS_B3I_short.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf
similarity index 95%
rename from conf/gnss-sdr_BDS_B3I_short.conf
rename to conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf
index a88c36092..01606f841 100644
--- a/conf/gnss-sdr_BDS_B3I_short.conf
+++ b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf
@@ -12,7 +12,7 @@ GNSS-SDR.internal_fs_sps=30000000
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=File_Signal_Source
-;SignalSource.filename=/home/dmiralles/Documents/gnss-sdr/src/tests/signal_samples/USRP_BDS_B2a_201805171115_fs_25e6_if0e3_ishort_200ms.bin
+;SignalSource.filename=/home/dmiralles/Documents/gnss-sdr/tests/signal_samples/USRP_BDS_B2a_201805171115_fs_25e6_if0e3_ishort_200ms.bin
SignalSource.filename=/archive/USRP_BDS_B3I_201805171118_fs_25e6_if0e3_ishort.bin
SignalSource.item_type=ishort
SignalSource.sampling_frequency=30000000
diff --git a/conf/gnss-sdr-L1-gaussian.conf b/conf/File_input/GPS/gnss-sdr-L1-gaussian.conf
similarity index 95%
rename from conf/gnss-sdr-L1-gaussian.conf
rename to conf/File_input/GPS/gnss-sdr-L1-gaussian.conf
index a208366e5..32b24bccc 100644
--- a/conf/gnss-sdr-L1-gaussian.conf
+++ b/conf/File_input/GPS/gnss-sdr-L1-gaussian.conf
@@ -39,7 +39,7 @@ Acquisition_1C.pfa=0.01
Acquisition_1C.doppler_max=10000
Acquisition_1C.doppler_step=250
Acquisition_1C.dump=false
-Acquisition_1C.dump_filename=../data/kalman/acq_dump
+Acquisition_1C.dump_filename=./kalman/acq_dump
;######### TRACKING GLOBAL CONFIG ############
Tracking_1C.implementation=GPS_L1_CA_Gaussian_Tracking
@@ -48,7 +48,7 @@ Tracking_1C.pll_bw_hz=40.0;
Tracking_1C.dll_bw_hz=4.0;
Tracking_1C.order=3;
Tracking_1C.dump=true
-Tracking_1C.dump_filename=../data/kalman/epl_tracking_ch_
+Tracking_1C.dump_filename=./kalman/epl_tracking_ch_
Tracking_1C.bce_run = true;
Tracking_1C.p_transient = 0;
Tracking_1C.s_transient = 100;
diff --git a/conf/gnss-sdr_GPS_L1_CA_ibyte.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_CA_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_CA_ibyte.conf
rename to conf/File_input/GPS/gnss-sdr_GPS_L1_CA_ibyte.conf
diff --git a/conf/gnss-sdr_GPS_L1_SPIR.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L1_SPIR.conf
rename to conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf
index d83bd63d3..f0a90781b 100644
--- a/conf/gnss-sdr_GPS_L1_SPIR.conf
+++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf
@@ -34,7 +34,7 @@ DataTypeAdapter.item_type=float
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=float
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
@@ -64,7 +64,7 @@ Resampler.item_type=gr_complex
Resampler.sample_freq_in=80000000
Resampler.sample_freq_out=4000000
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
@@ -107,7 +107,7 @@ Tracking_1C.item_type=gr_complex
Tracking_1C.pll_bw_hz=20.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf
similarity index 95%
rename from conf/gnss-sdr_GPS_L1_acq_QuickSync.conf
rename to conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf
index 356dde132..6961b3c3f 100644
--- a/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf
+++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf
@@ -30,14 +30,14 @@ SignalConditioner.implementation=Signal_Conditioner
;######### DATA_TYPE_ADAPTER CONFIG ############
DataTypeAdapter.implementation=Ishort_To_Complex
DataTypeAdapter.dump=false
-DataTypeAdapter.dump_filename=../data/data_type_adapter.dat
+DataTypeAdapter.dump_filename=./data_type_adapter.dat
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Pass_Through
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
@@ -46,7 +46,7 @@ Resampler.item_type=gr_complex
Resampler.sample_freq_in=4000000
Resampler.sample_freq_out=4000000
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_gr_complex.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L1_gr_complex.conf
rename to conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf
index 84179dbed..d61355a00 100644
--- a/conf/gnss-sdr_GPS_L1_gr_complex.conf
+++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf
@@ -30,7 +30,7 @@ SignalConditioner.implementation=Signal_Conditioner
DataTypeAdapter.implementation=Ishort_To_Complex
DataTypeAdapter.dump=false
-DataTypeAdapter.dump_filename=../data/DataTypeAdapter.dat
+DataTypeAdapter.dump_filename=./DataTypeAdapter.dat
InputFilter.implementation=Pass_Through
InputFilter.input_item_type=gr_complex
@@ -67,7 +67,7 @@ Tracking_1C.pll_bw_hz=40.0;
Tracking_1C.dll_bw_hz=4.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_c
+Tracking_1C.dump_filename=./epl_tracking_c
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_ishort.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf
similarity index 98%
rename from conf/gnss-sdr_GPS_L1_ishort.conf
rename to conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf
index 1d76c2a2f..3a90a518d 100644
--- a/conf/gnss-sdr_GPS_L1_ishort.conf
+++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf
@@ -24,7 +24,7 @@ SignalSource.sampling_frequency=4000000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
similarity index 96%
rename from conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
index d7a72f476..8f3a44652 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
@@ -51,7 +51,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -86,7 +86,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Pass_Through
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
@@ -103,7 +103,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
@@ -153,7 +153,7 @@ Tracking_1C.dll_bw_narrow_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.early_late_space_chips=0.5;
Tracking_1C.dump=true
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
index 48727d42f..a543752ef 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
@@ -50,7 +50,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -85,7 +85,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Pass_Through
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
@@ -102,7 +102,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
index 478cc875d..b86f734d4 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
@@ -51,7 +51,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -85,7 +85,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Pass_Through
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
@@ -102,7 +102,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
index 3ba4ba52d..ac8157f4e 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
@@ -50,7 +50,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -85,7 +85,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Pass_Through
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
@@ -102,7 +102,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
index 73624bc73..f919973d2 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
@@ -50,7 +50,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -85,7 +85,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Pass_Through
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
@@ -102,7 +102,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf
similarity index 98%
rename from conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf
index 9e77cb6ae..746330acf 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf
@@ -54,7 +54,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -93,7 +93,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter1.implementation=Freq_Xlating_Fir_Filter
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter_ch1.dat
+InputFilter1.dump_filename=./input_filter_ch1.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
InputFilter1.taps_item_type=float
@@ -129,7 +129,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
index f2a47b807..7e494914e 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
@@ -56,7 +56,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -95,7 +95,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter1.implementation=Freq_Xlating_Fir_Filter
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter_ch1.dat
+InputFilter1.dump_filename=./input_filter_ch1.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
InputFilter1.taps_item_type=float
@@ -131,7 +131,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
@@ -190,7 +190,7 @@ Acquisition_1C.dump_filename=./acq_dump.dat
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
Tracking_1C.item_type=gr_complex
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
Tracking_1C.pll_bw_hz=40.0;
Tracking_1C.dll_bw_hz=1.5;
Tracking_1C.order=3;
@@ -215,7 +215,7 @@ Tracking_2S.dll_bw_hz=0.3;
Tracking_2S.order=3;
Tracking_2S.early_late_space_chips=0.5;
Tracking_2S.dump=true
-Tracking_2S.dump_filename=../data/epl_tracking_ch_
+Tracking_2S.dump_filename=./epl_tracking_ch_
;# GALILEO E1B
diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
index c6ca7e8e0..4017609f5 100644
--- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
@@ -56,7 +56,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter_ch0.dat
+InputFilter0.dump_filename=./input_filter_ch0.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -95,7 +95,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter1.implementation=Freq_Xlating_Fir_Filter
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter_ch1.dat
+InputFilter1.dump_filename=./input_filter_ch1.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
InputFilter1.taps_item_type=float
@@ -136,7 +136,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Freq_Xlating_Fir_Filter
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter_ch2.dat
+InputFilter2.dump_filename=./input_filter_ch2.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
InputFilter2.taps_item_type=float
@@ -271,7 +271,7 @@ Acquisition_5X.doppler_max=5000
Acquisition_5X.doppler_step=125
Acquisition_5X.bit_transition_flag=false
Acquisition_5X.max_dwells=1
-Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz
+Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is deactivated. Recommended value 3000 Hz
Acquisition_5X.Zero_padding=0 ; **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF.
Acquisition_5X.dump=false
Acquisition_5X.dump_filename=./acq_dump.dat
@@ -286,7 +286,7 @@ Tracking_1C.dll_bw_hz=3.0;
Tracking_1C.order=3;
Tracking_1C.early_late_space_chips=0.5;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### GALILEO E1 TRK CONFIG ############
@@ -298,7 +298,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### GPS L2C GENERIC TRACKING CONFIG ############
diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
rename to conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
index 0abf4188c..0e0f9f289 100644
--- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
+++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
@@ -56,7 +56,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter_ch0.dat
+InputFilter0.dump_filename=./input_filter_ch0.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -94,7 +94,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter1.implementation=Freq_Xlating_Fir_Filter
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter_ch1.dat
+InputFilter1.dump_filename=./input_filter_ch1.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
InputFilter1.taps_item_type=float
@@ -130,7 +130,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Pass_Through
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter.dat
+InputFilter2.dump_filename=./input_filter.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
@@ -212,7 +212,7 @@ Tracking_1C.dll_bw_hz=3.0;
Tracking_1C.order=3;
Tracking_1C.early_late_space_chips=0.5;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### GPS L2C GENERIC TRACKING CONFIG ############
diff --git a/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf
similarity index 95%
rename from conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf
rename to conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf
index 3f3a9831e..5146a4f1b 100644
--- a/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf
+++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf
@@ -30,7 +30,7 @@ SignalConditioner.implementation=Signal_Conditioner
;######### DATA_TYPE_ADAPTER CONFIG ############
DataTypeAdapter.implementation=Ishort_To_Complex
DataTypeAdapter.dump=false
-DataTypeAdapter.dump_filename=../data/data_type_adapter.dat
+DataTypeAdapter.dump_filename=./data_type_adapter.dat
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Pass_Through
@@ -39,7 +39,7 @@ InputFilter.implementation=Pass_Through
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
Resampler.item_type=gr_complex
@@ -70,7 +70,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER CONFIG ############
TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
diff --git a/conf/gnss-sdr_Galileo_E1_ishort.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf
similarity index 97%
rename from conf/gnss-sdr_Galileo_E1_ishort.conf
rename to conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf
index 257bd9091..2a9fedb8d 100644
--- a/conf/gnss-sdr_Galileo_E1_ishort.conf
+++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf
@@ -41,7 +41,7 @@ Resampler.item_type=gr_complex
Resampler.sample_freq_in=4000000
Resampler.sample_freq_out=4000000
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
@@ -75,7 +75,7 @@ Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.track_pilot=true
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER CONFIG ############
diff --git a/conf/gnss-sdr_Galileo_E1_nsr.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf
similarity index 96%
rename from conf/gnss-sdr_Galileo_E1_nsr.conf
rename to conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf
index 883927c8e..0b2dffd9b 100644
--- a/conf/gnss-sdr_Galileo_E1_nsr.conf
+++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf
@@ -25,7 +25,7 @@ SignalSource.sampling_frequency=20480000
SignalSource.samples=0 ; 0 means the entire file
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -62,7 +62,7 @@ InputFilter.sampling_frequency=20480000
InputFilter.IF=5499998.47412109
InputFilter.decimation_factor=8
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
@@ -96,7 +96,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER CONFIG ############
diff --git a/conf/gnss-sdr_Galileo_E5a.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a.conf
similarity index 100%
rename from conf/gnss-sdr_Galileo_E5a.conf
rename to conf/File_input/Galileo/gnss-sdr_Galileo_E5a.conf
diff --git a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
similarity index 96%
rename from conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
rename to conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
index 9c2ea55cc..a6fb901ed 100644
--- a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
+++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
@@ -35,7 +35,7 @@ SignalSource.sampling_frequency=50000000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -68,13 +68,13 @@ InputFilter.sampling_frequency=50000000
InputFilter.IF=-15345000
InputFilter.decimation_factor=1
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
@@ -111,7 +111,7 @@ Acquisition_5X.doppler_max=10000
Acquisition_5X.doppler_step=250
Acquisition_5X.bit_transition_flag=false
Acquisition_5X.max_dwells=1
-Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz
+Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is deactivated. Recommended value 3000 Hz
Acquisition_5X.Zero_padding=0 ; **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF.
Acquisition_5X.dump=false
Acquisition_5X.dump_filename=./acq_dump.dat
diff --git a/conf/gnss-sdr_galileo_E1_extended_correlator_byte.conf b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf
similarity index 96%
rename from conf/gnss-sdr_galileo_E1_extended_correlator_byte.conf
rename to conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf
index a0715fba8..638a045d6 100644
--- a/conf/gnss-sdr_galileo_E1_extended_correlator_byte.conf
+++ b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf
@@ -81,7 +81,7 @@ Acquisition_1B.doppler_max=5000
Acquisition_1B.doppler_step=125
Acquisition_1B.bit_transition_flag=true
Acquisition_1B.dump=false
-Acquisition_1B.dump_filename=../data/acq_dump.dat
+Acquisition_1B.dump_filename=./acq_dump.dat
;######### TRACKING GPS CONFIG ############
@@ -91,7 +91,7 @@ Tracking_1C.pll_bw_hz=30.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -109,7 +109,7 @@ Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.early_late_space_narrow_chips=0.06;
Tracking_1B.very_early_late_space_narrow_chips=0.25;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_galileo_E1_extended_correlator_labsat.conf b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf
similarity index 95%
rename from conf/gnss-sdr_galileo_E1_extended_correlator_labsat.conf
rename to conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf
index 91387a875..cf17d5140 100644
--- a/conf/gnss-sdr_galileo_E1_extended_correlator_labsat.conf
+++ b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf
@@ -25,7 +25,7 @@ SignalSource.sampling_frequency=16368000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -39,7 +39,7 @@ DataTypeAdapter.item_type=gr_complex
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
@@ -110,7 +110,7 @@ Acquisition_1B.doppler_max=5000
Acquisition_1B.doppler_step=125
Acquisition_1B.bit_transition_flag=true
Acquisition_1B.dump=false
-Acquisition_1B.dump_filename=../data/acq_dump.dat
+Acquisition_1B.dump_filename=./acq_dump.dat
;######### TRACKING GPS CONFIG ############
@@ -120,7 +120,7 @@ Tracking_1C.pll_bw_hz=40.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
@@ -137,7 +137,7 @@ Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.early_late_space_narrow_chips=0.15;
Tracking_1B.very_early_late_space_narrow_chips=0.30;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf
similarity index 95%
rename from conf/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf
index 021b12ae8..12378e46f 100644
--- a/conf/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf
+++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf
@@ -11,7 +11,7 @@ GNSS-SDR.num_sources=2
;######### SIGNAL_SOURCE CONFIG ############
SignalSource0.implementation=File_Signal_Source
-SignalSource0.filename=../data/NT1065_L1_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE
+SignalSource0.filename=./NT1065_L1_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE
SignalSource0.item_type=ibyte
SignalSource0.sampling_frequency=6625000
SignalSource0.samples=0
@@ -19,7 +19,7 @@ SignalSource0.dump=false;
SignalSource0.dump_filename=/archive/signal_glonass.bin
SignalSource1.implementation=File_Signal_Source
-SignalSource1.filename=../data/NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE
+SignalSource1.filename=./NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE
SignalSource1.item_type=ibyte
SignalSource1.sampling_frequency=6625000
SignalSource1.samples=0
diff --git a/conf/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf
diff --git a/conf/gnss-sdr_GLONASS_L1_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L1_CA_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf
diff --git a/conf/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf
diff --git a/conf/gnss-sdr_GLONASS_L1_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf
similarity index 97%
rename from conf/gnss-sdr_GLONASS_L1_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf
index 8f8baecfc..254196c30 100644
--- a/conf/gnss-sdr_GLONASS_L1_ibyte.conf
+++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf
@@ -23,7 +23,7 @@ SignalSource.repeat=false
SignalSource.sample_type=iq
SignalSource.seconds_to_skip=0
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -69,7 +69,7 @@ Acquisition_1R.tong_max_dwells=20
Tracking_1R.implementation=GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking
Tracking_1R.item_type=cshort
Tracking_1R.dump=false
-Tracking_1R.dump_filename=../data/epl_tracking_ch_
+Tracking_1R.dump_filename=./epl_tracking_ch_
Tracking_1R.pll_bw_hz=40.0;
Tracking_1R.dll_bw_hz=4.0;
Tracking_1R.order=3;
diff --git a/conf/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf
diff --git a/conf/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf
diff --git a/conf/gnss-sdr_GLONASS_L2_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L2_CA_ibyte.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf
diff --git a/conf/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf
similarity index 100%
rename from conf/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf
rename to conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf
diff --git a/conf/gnss-sdr_Hybrid_byte.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf
similarity index 95%
rename from conf/gnss-sdr_Hybrid_byte.conf
rename to conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf
index 3daee47ce..7e0df6bd2 100644
--- a/conf/gnss-sdr_Hybrid_byte.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf
@@ -35,7 +35,7 @@ InputFilter.implementation=Pass_Through
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
@@ -44,7 +44,7 @@ Resampler.item_type=gr_complex
Resampler.sample_freq_in=20000000
Resampler.sample_freq_out=20000000
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
@@ -113,7 +113,7 @@ Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.dll_bw_narrow_hz=1.5;
Tracking_1C.order=2;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -125,7 +125,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_Hybrid_byte_sim.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf
similarity index 94%
rename from conf/gnss-sdr_Hybrid_byte_sim.conf
rename to conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf
index b92bdc4a9..1360f71bf 100644
--- a/conf/gnss-sdr_Hybrid_byte_sim.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf
@@ -22,7 +22,7 @@ SignalSource.sampling_frequency=4000000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -32,12 +32,12 @@ SignalConditioner.implementation=Signal_Conditioner
;######### DATA_TYPE_ADAPTER CONFIG ############
DataTypeAdapter.implementation=Ibyte_To_Complex
DataTypeAdapter.dump=false
-DataTypeAdapter.dump_filename=../data/DataTypeAdapter.dat
+DataTypeAdapter.dump_filename=./DataTypeAdapter.dat
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Pass_Through
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
@@ -106,14 +106,14 @@ Tracking_1C.order=3;
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
Tracking_1B.item_type=gr_complex
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
Tracking_1B.pll_bw_hz=15.0;
Tracking_1B.dll_bw_hz=2.0;
Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_Hybrid_gr_complex.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf
similarity index 97%
rename from conf/gnss-sdr_Hybrid_gr_complex.conf
rename to conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf
index b375cec21..aa404633c 100644
--- a/conf/gnss-sdr_Hybrid_gr_complex.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf
@@ -85,7 +85,7 @@ Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.dll_bw_narrow_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=true
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -98,7 +98,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_Hybrid_ishort.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf
similarity index 97%
rename from conf/gnss-sdr_Hybrid_ishort.conf
rename to conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf
index 3931754e0..c9f0de8f5 100644
--- a/conf/gnss-sdr_Hybrid_ishort.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf
@@ -56,7 +56,7 @@ InputFilter.output_item_type=gr_complex
Resampler.implementation=Pass_Through
Resampler.item_type=gr_complex
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
@@ -111,7 +111,7 @@ Tracking_1C.pll_bw_hz=50.0;
Tracking_1C.dll_bw_hz=5.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -123,7 +123,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_labsat_kf.conf b/conf/File_input/MultiCons/gnss-sdr_labsat_kf.conf
similarity index 100%
rename from conf/gnss-sdr_labsat_kf.conf
rename to conf/File_input/MultiCons/gnss-sdr_labsat_kf.conf
diff --git a/conf/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf b/conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf
rename to conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf
index a9ec9e564..14e813a27 100644
--- a/conf/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf
@@ -57,7 +57,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter_ch0.dat
+InputFilter0.dump_filename=./input_filter_ch0.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -96,7 +96,7 @@ DataTypeAdapter1.item_type=gr_complex
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Freq_Xlating_Fir_Filter
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter_ch1.dat
+InputFilter1.dump_filename=./input_filter_ch1.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
InputFilter1.taps_item_type=float
@@ -135,7 +135,7 @@ DataTypeAdapter2.item_type=gr_complex
;######### INPUT_FILTER 2 CONFIG ############
InputFilter2.implementation=Freq_Xlating_Fir_Filter
InputFilter2.dump=false
-InputFilter2.dump_filename=../data/input_filter_ch2.dat
+InputFilter2.dump_filename=./input_filter_ch2.dat
InputFilter2.input_item_type=gr_complex
InputFilter2.output_item_type=gr_complex
InputFilter2.taps_item_type=float
@@ -266,7 +266,7 @@ Acquisition_5X.doppler_max=5000
Acquisition_5X.doppler_step=125
Acquisition_5X.bit_transition_flag=false
Acquisition_5X.max_dwells=1
-Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz
+Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is deactivated. Recommended value 3000 Hz
Acquisition_5X.Zero_padding=0 ; **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF.
Acquisition_5X.dump=false
Acquisition_5X.dump_filename=./acq_dump.dat
@@ -294,7 +294,7 @@ Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.early_late_space_chips=0.5;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### GALILEO E1 TRK CONFIG ############
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
@@ -305,7 +305,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### GPS L2C GENERIC TRACKING CONFIG ############
diff --git a/conf/gnss-sdr_multisource_Hybrid_ishort.conf b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf
similarity index 95%
rename from conf/gnss-sdr_multisource_Hybrid_ishort.conf
rename to conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf
index 5838a3b88..04070f0b7 100644
--- a/conf/gnss-sdr_multisource_Hybrid_ishort.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf
@@ -45,7 +45,7 @@ DataTypeAdapter0.implementation=Ishort_To_Complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Pass_Through
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
@@ -54,7 +54,7 @@ InputFilter0.output_item_type=gr_complex
;######### RESAMPLER 1 CONFIG ############
Resampler1.implementation=Pass_Through
Resampler1.dump=false
-Resampler1.dump_filename=../data/resampler.dat
+Resampler1.dump_filename=./resampler.dat
Resampler1.item_type=gr_complex
Resampler1.sample_freq_in=4000000
Resampler1.sample_freq_out=4000000
@@ -73,7 +73,7 @@ InputFilter1.dump=false
;######### RESAMPLER 1 CONFIG ############
Resampler1.implementation=Pass_Through
Resampler1.dump=false
-Resampler1.dump_filename=../data/resampler.dat.
+Resampler1.dump_filename=./resampler.dat.
Resampler1.item_type=gr_complex
Resampler1.sample_freq_in=4000000
Resampler1.sample_freq_out=4000000
@@ -126,7 +126,7 @@ Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=4.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -138,7 +138,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_multisource_Hybrid_nsr.conf b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf
similarity index 97%
rename from conf/gnss-sdr_multisource_Hybrid_nsr.conf
rename to conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf
index c5c5e9134..671dd346d 100644
--- a/conf/gnss-sdr_multisource_Hybrid_nsr.conf
+++ b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf
@@ -48,7 +48,7 @@ DataTypeAdapter0.item_type=float
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Freq_Xlating_Fir_Filter
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=float
InputFilter0.output_item_type=gr_complex
InputFilter0.taps_item_type=float
@@ -83,7 +83,7 @@ DataTypeAdapter1.item_type=float
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Freq_Xlating_Fir_Filter
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=float
InputFilter1.output_item_type=gr_complex
InputFilter1.taps_item_type=float
@@ -184,7 +184,7 @@ Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -196,7 +196,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_nsr.conf b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf
similarity index 95%
rename from conf/gnss-sdr_GPS_L1_nsr.conf
rename to conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf
index d0682aa30..0452136ec 100644
--- a/conf/gnss-sdr_GPS_L1_nsr.conf
+++ b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf
@@ -39,7 +39,7 @@ SignalSource.sampling_frequency=20480000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -53,7 +53,7 @@ DataTypeAdapter.item_type=float
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=float
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
@@ -80,7 +80,7 @@ InputFilter.decimation_factor=8
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
Resampler.item_type=gr_complex
@@ -120,7 +120,7 @@ Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### GPS L2C GENERIC TRACKING CONFIG ############
Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking
@@ -130,7 +130,7 @@ Tracking_2S.dll_bw_hz=0.4;
Tracking_2S.order=2;
Tracking_2S.early_late_space_chips=0.5;
Tracking_2S.dump=true
-Tracking_2S.dump_filename=../data/epl_tracking_ch_
+Tracking_2S.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_nsr_gauss.conf b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf
similarity index 97%
rename from conf/gnss-sdr_GPS_L1_nsr_gauss.conf
rename to conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf
index a127a5870..423bd7358 100644
--- a/conf/gnss-sdr_GPS_L1_nsr_gauss.conf
+++ b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf
@@ -37,7 +37,7 @@ SignalSource.repeat=false
;#dump: Dump the Signal source data to a file. Disable this option in this version
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;#enable_throttle_control: Enabling this option tells the signal source to keep the delay between samples in post processing.
@@ -72,12 +72,12 @@ InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
;#dump_filename: Log path and filename.
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;#The following options are used in the filter design of Fir_Filter and Freq_Xlating_Fir_Filter implementation.
;#These options are based on parameters of gnuradio's function: gr_remez.
;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse
-;#reponse given a set of band edges, the desired reponse on those bands,
+;#response given a set of band edges, the desired response on those bands,
;#and the weight given to the error in those bands.
;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
@@ -169,7 +169,7 @@ Tracking_1C.implementation=GPS_L1_CA_Gaussian_Tracking
Tracking_1C.item_type=gr_complex
Tracking_1C.if=0
Tracking_1C.dump=true
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
Tracking_1C.pll_bw_hz=15.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
diff --git a/conf/gnss-sdr_Hybrid_nsr.conf b/conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf
similarity index 96%
rename from conf/gnss-sdr_Hybrid_nsr.conf
rename to conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf
index 91bbc1c69..8e2e10e7b 100644
--- a/conf/gnss-sdr_Hybrid_nsr.conf
+++ b/conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf
@@ -22,7 +22,7 @@ SignalSource.sampling_frequency=20480000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -56,7 +56,7 @@ InputFilter.sampling_frequency=20480000
InputFilter.IF=5499998.47412109
InputFilter.decimation_factor=8
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
@@ -129,7 +129,7 @@ Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.dll_bw_narrow_hz=1.5;
Tracking_1C.order=2;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TRACKING GALILEO CONFIG ############
@@ -141,7 +141,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/front-end-cal.conf b/conf/Other/front-end-cal.conf
similarity index 93%
rename from conf/front-end-cal.conf
rename to conf/Other/front-end-cal.conf
index af2a06a2f..2753abf6d 100644
--- a/conf/front-end-cal.conf
+++ b/conf/Other/front-end-cal.conf
@@ -17,19 +17,23 @@
;GNSS-SDR.init_altitude_m=329.11968943169342
; Barcelona CTTC
-GNSS-SDR.init_latitude_deg=41.27719585553101
-GNSS-SDR.init_longitude_deg=1.988782985790802
-GNSS-SDR.init_altitude_m=10
+;GNSS-SDR.init_latitude_deg=41.27719585553101
+;GNSS-SDR.init_longitude_deg=1.988782985790802
+;GNSS-SDR.init_altitude_m=10
; Mozoncillo
;GNSS-SDR.init_latitude_deg=41.14534824586196
;GNSS-SDR.init_longitude_deg=-4.187125019737464
;GNSS-SDR.init_altitude_m=900
+; ICEBAR - Jukkasjarvi
+GNSS-SDR.init_latitude_deg=67.849722
+GNSS-SDR.init_longitude_deg=20.594444
+GNSS-SDR.init_altitude_m=325
;######### GLOBAL OPTIONS ##################
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second].
-GNSS-SDR.internal_fs_sps=2000000
+GNSS-SDR.internal_fs_sps=2048000
;######### SUPL RRLP GPS assistance configuration #####
; Check https://www.mcc-mnc.com/
@@ -40,10 +44,10 @@ GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com
GNSS-SDR.SUPL_gps_ephemeris_port=7275
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
GNSS-SDR.SUPL_gps_acquisition_port=7275
-GNSS-SDR.SUPL_MCC=217
-GNSS-SDR.SUPL_MNC=7
-GNSS-SDR.SUPL_LAC=861
-GNSS-SDR.SUPL_CI=40184
+GNSS-SDR.SUPL_MCC=240
+GNSS-SDR.SUPL_MNC=08
+GNSS-SDR.SUPL_LAC=46003
+GNSS-SDR.SUPL_CI=425950
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=Osmosdr_Signal_Source
@@ -52,7 +56,7 @@ SignalSource.freq=1575420000
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
;#sampling_frequency: Original Signal sampling frequency in samples per second
-SignalSource.sampling_frequency=2000000
+SignalSource.sampling_frequency=2048000
;#gain: Front-end Gain in [dB]
SignalSource.gain=40
SignalSource.rf_gain=40
@@ -81,7 +85,7 @@ SignalSource.repeat=false
;#dump: Dump the Signal source data to a file.
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
;## It holds blocks to change data type, filter and resample input data.
@@ -98,7 +102,7 @@ DataTypeAdapter.implementation=Pass_Through
;#dump: Dump the filtered data to a file.
DataTypeAdapter.dump=false
;#dump_filename: Log path and filename.
-DataTypeAdapter.dump_filename=../data/data_type_adapter.dat
+DataTypeAdapter.dump_filename=./data_type_adapter.dat
;######### INPUT_FILTER CONFIG ############
;## Filter the input data. Can be combined with frequency translation for IF signals
@@ -172,7 +176,7 @@ InputFilter.decimation_factor=1
InputFilter.dump=false
;#dump_filename: Log path and filename.
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
;## Resamples the input data.
@@ -200,3 +204,4 @@ Acquisition.max_dwells=15
Acquisition.dump=false
;#filename: Log path and filename
Acquisition.dump_filename=./acq_dump.dat
+
diff --git a/conf/gnss-sdr_GPS_L1_2ch_udp.conf b/conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_2ch_udp.conf
rename to conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf
diff --git a/conf/gnss-sdr_GPS_L1_FPGA.conf b/conf/Other/gnss-sdr_GPS_L1_FPGA.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_FPGA.conf
rename to conf/Other/gnss-sdr_GPS_L1_FPGA.conf
diff --git a/conf/gnss-sdr_GPS_L1_fifo.conf b/conf/Other/gnss-sdr_GPS_L1_fifo.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_fifo.conf
rename to conf/Other/gnss-sdr_GPS_L1_fifo.conf
diff --git a/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf b/conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
rename to conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf
index c1b99441b..f920c7cb6 100644
--- a/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
+++ b/conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf
@@ -21,7 +21,7 @@ SignalSource.item_type=gr_complex
SignalSource.samples=250000000
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -51,7 +51,7 @@ Acquisition_1C.dump_filename=./acq_dump.dat
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking_GPU
Tracking_1C.item_type=gr_complex
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
diff --git a/conf/gnss-sdr_GPS_L1_monitor.conf b/conf/Other/gnss-sdr_GPS_L1_monitor.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_monitor.conf
rename to conf/Other/gnss-sdr_GPS_L1_monitor.conf
diff --git a/conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf b/conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
similarity index 95%
rename from conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
rename to conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
index 01209aefb..0e46e98b2 100644
--- a/conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
+++ b/conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
@@ -40,7 +40,7 @@ SignalSource.item_type=byte
; endian. If it is big endian then the second byte should be output
; first in each short.
; SignalSource.big_endian_items=false
-; big_endian_bytes: true if the most signficiant two bits in the byte
+; big_endian_bytes: true if the most significant two bits in the byte
; are the first two to be output.
SignalSource.big_endian_bytes=false
; sample_type: one of 'real' 'iq' or 'qi'
@@ -54,7 +54,7 @@ SignalSource.sampling_frequency=20480000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -68,7 +68,7 @@ DataTypeAdapter.item_type=float
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=float
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
@@ -94,7 +94,7 @@ InputFilter.decimation_factor=8
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
Resampler.item_type=gr_complex
@@ -123,7 +123,7 @@ Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf b/conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
similarity index 97%
rename from conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
rename to conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
index b0d592f84..94ab55c7c 100644
--- a/conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
+++ b/conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
@@ -49,7 +49,7 @@ InputFilter.Pfa=0.001
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### CHANNELS GLOBAL CONFIG ############
Channels_1C.count=8
@@ -80,7 +80,7 @@ Tracking_1C.dll_bw_narrow_hz=1.5;
Tracking_1C.fll_bw_hz=2.0;
Tracking_1C.order=3;
Tracking_1C.dump=true
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_two_bits_cpx.conf b/conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L1_two_bits_cpx.conf
rename to conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf
index 67c4d60e1..efef7d428 100644
--- a/conf/gnss-sdr_GPS_L1_two_bits_cpx.conf
+++ b/conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf
@@ -36,7 +36,7 @@ SignalSource.sampling_frequency=19200000
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_throttle_control=false
@@ -70,13 +70,13 @@ InputFilter.sampling_frequency=19200000
InputFilter.IF=4024000
InputFilter.decimation_factor=6
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
Resampler.item_type=gr_complex
diff --git a/conf/gnss-sdr_GPS_L1_udp_with_monitor.conf b/conf/Other/gnss-sdr_GPS_L1_udp_with_monitor.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_udp_with_monitor.conf
rename to conf/Other/gnss-sdr_GPS_L1_udp_with_monitor.conf
diff --git a/conf/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf
similarity index 98%
rename from conf/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf
index 3fc5c22d2..1b057e4aa 100644
--- a/conf/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf
@@ -31,7 +31,7 @@ SignalSource.gain_rx2=64
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.enable_dds_lo=false
SignalSource.freq_rf_tx_hz=1260000000
SignalSource.freq_dds_tx_hz=1000
diff --git a/conf/gnss-sdr_GPS_L1_LimeSDR.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_LimeSDR.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_LimeSDR.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_LimeSDR.conf
diff --git a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
index f0ab33656..12c4bd0ee 100644
--- a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
@@ -41,7 +41,7 @@ SignalSource.subdevice=A:0
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
@@ -73,7 +73,7 @@ InputFilter.grid_density=16
InputFilter.sampling_frequency=4000000
InputFilter.IF=0
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
@@ -82,7 +82,7 @@ Resampler.item_type=gr_complex
Resampler.sample_freq_in=4000000
Resampler.sample_freq_out=4000000
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_USRP_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf
similarity index 98%
rename from conf/gnss-sdr_GPS_L1_USRP_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf
index 04afb9a6c..e75b568dc 100644
--- a/conf/gnss-sdr_GPS_L1_USRP_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf
@@ -40,7 +40,7 @@ SignalSource.subdevice=A:0
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
diff --git a/conf/gnss-sdr_GPS_L1_bladeRF.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf
similarity index 98%
rename from conf/gnss-sdr_GPS_L1_bladeRF.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf
index e751730de..c2ec58cd6 100644
--- a/conf/gnss-sdr_GPS_L1_bladeRF.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf
@@ -53,7 +53,7 @@ InputFilter.band2_error=1.0
InputFilter.filter_type=bandpass
InputFilter.grid_density=16
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
diff --git a/conf/gnss-sdr_GPS_L1_fmcomms2_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf
similarity index 97%
rename from conf/gnss-sdr_GPS_L1_fmcomms2_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf
index df763f64e..deef32d6f 100644
--- a/conf/gnss-sdr_GPS_L1_fmcomms2_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf
@@ -41,7 +41,7 @@ SignalSource.gain_rx1=64
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
SignalConditioner.implementation=Signal_Conditioner
@@ -52,7 +52,7 @@ DataTypeAdapter.implementation=Pass_Through
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
diff --git a/conf/gnss-sdr_GPS_L1_plutosdr_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_plutosdr_realtime.conf
similarity index 100%
rename from conf/gnss-sdr_GPS_L1_plutosdr_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_plutosdr_realtime.conf
diff --git a/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
similarity index 98%
rename from conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
index 370931cca..000e2cb18 100644
--- a/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
@@ -43,7 +43,7 @@ SignalSource.AGC_enabled = false
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
SignalSource.address=127.0.0.1
SignalSource.port=1234
SignalSource.swap_iq=false
@@ -58,7 +58,7 @@ DataTypeAdapter.implementation=Pass_Through
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
diff --git a/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
similarity index 98%
rename from conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
index 8994bb3f3..149aa8b13 100644
--- a/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
@@ -44,7 +44,7 @@ SignalSource.AGC_enabled = false
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;# Please note that the new RTL-SDR Blog V3 dongles ship a < 1 PPM
;# temperature compensated oscillator (TCXO), which is well suited for GNSS
@@ -68,7 +68,7 @@ DataTypeAdapter.implementation=Pass_Through
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
diff --git a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf
index cffb6f9b0..74e1fdbf0 100644
--- a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf
@@ -39,7 +39,7 @@ SignalSource.subdevice=A:0
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
@@ -73,13 +73,13 @@ InputFilter.sampling_frequency=20000000
InputFilter.IF=-1600000
InputFilter.decimation_factor=1
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
Resampler.item_type=gr_complex
Resampler.sample_freq_in=2000000
Resampler.sample_freq_out=2000000
diff --git a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
similarity index 96%
rename from conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
rename to conf/RealTime_input/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
index a221b7169..9bf551da0 100644
--- a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
@@ -42,7 +42,7 @@ SignalSource.subdevice=A:0
SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
@@ -79,12 +79,12 @@ InputFilter.sampling_frequency=4000000
InputFilter.IF=0
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
Resampler.item_type=gr_complex
Resampler.sample_freq_in=4000000
Resampler.sample_freq_out=4000000
diff --git a/conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
similarity index 96%
rename from conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
rename to conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
index b49801d10..fe0ca55d2 100644
--- a/conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
@@ -27,7 +27,7 @@ SignalSource.gain=50
SignalSource.subdevice=A:0
SignalSource.samples=0
SignalSource.dump=false
-SignalSource.dump_filename=../data/signal_source.dat
+SignalSource.dump_filename=./signal_source.dat
;######### SIGNAL_CONDITIONER CONFIG ############
@@ -62,7 +62,7 @@ Tracking_1B.order=3;
Tracking_1B.early_late_space_chips=0.15;
Tracking_1B.very_early_late_space_chips=0.6;
Tracking_1B.dump=false
-Tracking_1B.dump_filename=../data/veml_tracking_ch_
+Tracking_1B.dump_filename=./veml_tracking_ch_
;######### TELEMETRY DECODER CONFIG ############
diff --git a/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf
new file mode 100644
index 000000000..6ed59bd79
--- /dev/null
+++ b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf
@@ -0,0 +1,281 @@
+; This is a GNSS-SDR configuration file
+; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
+; SPDX-License-Identifier: GPL-3.0-or-later
+; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors)
+
+; You can define your own receiver and invoke it by doing
+; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
+;
+
+[GNSS-SDR]
+
+;######### GLOBAL OPTIONS ##################
+GNSS-SDR.internal_fs_sps=8000000
+GNSS-SDR.Beidou_banned_prns=56,57,58
+
+
+;######### SIGNAL_SOURCE CONFIG ############
+SignalSource.implementation=Osmosdr_Signal_Source
+SignalSource.item_type=gr_complex
+SignalSource.sampling_frequency=56000000
+SignalSource.freq=1584000000
+SignalSource.osmosdr_args=uhd,type=b200,num_recv_frames=256
+SignalSource.gain=50
+SignalSource.antenna=TX/RX
+SignalSource.if_bw=56000000
+SignalSource.AGC_enabled=false
+SignalSource.samples=0
+SignalSource.repeat=false
+SignalSource.RF_channels=3
+SignalSource.enable_throttle_control=false
+SignalSource.dump=false
+
+
+
+;######### SIGNAL_CONDITIONER CONFIG ############
+SignalConditioner0.implementation=Signal_Conditioner
+SignalConditioner1.implementation=Signal_Conditioner
+SignalConditioner2.implementation=Signal_Conditioner
+
+;######### DATA_TYPE_ADAPTER CONFIG ############
+DataTypeAdapter0.implementation=Pass_Through
+DataTypeAdapter1.implementation=Pass_Through
+DataTypeAdapter2.implementation=Pass_Through
+
+;######### INPUT_FILTER CONFIG ############
+InputFilter0.implementation=Freq_Xlating_Fir_Filter
+InputFilter0.decimation_factor=7
+InputFilter0.input_item_type=gr_complex
+InputFilter0.output_item_type=gr_complex
+InputFilter0.taps_item_type=float
+InputFilter0.filter_type=lowpass
+InputFilter0.bw=7000000
+InputFilter0.tw=500000
+InputFilter0.IF=-22902000
+InputFilter0.sampling_frequency=56000000
+InputFilter0.dump=false
+InputFilter0.dump_filename=./input_filter.dat
+
+;######### INPUT_FILTER CONFIG ############
+InputFilter1.implementation=Freq_Xlating_Fir_Filter
+InputFilter1.decimation_factor=7
+InputFilter1.input_item_type=gr_complex
+InputFilter1.output_item_type=gr_complex
+InputFilter1.taps_item_type=float
+InputFilter1.filter_type=lowpass
+InputFilter1.bw=7000000
+InputFilter1.tw=500000
+InputFilter1.IF=-8580000
+InputFilter1.sampling_frequency=56000000
+InputFilter1.dump=false
+InputFilter1.dump_filename=./input_filter.dat
+
+;######### INPUT_FILTER CONFIG ############
+InputFilter2.implementation=Freq_Xlating_Fir_Filter
+InputFilter2.decimation_factor=7
+InputFilter2.input_item_type=gr_complex
+InputFilter2.output_item_type=gr_complex
+InputFilter2.taps_item_type=float
+InputFilter2.filter_type=lowpass
+InputFilter2.bw=7000000
+InputFilter2.tw=500000
+InputFilter2.IF=18000000
+InputFilter2.sampling_frequency=56000000
+InputFilter2.dump=false
+InputFilter2.dump_filename=./input_filter.dat
+
+;######### RESAMPLER CONFIG ############
+Resampler0.implementation=Pass_Through
+Resampler1.implementation=Pass_Through
+Resampler2.implementation=Pass_Through
+
+;######### CHANNELS GLOBAL CONFIG ############
+Channels_1B.count=10
+Channels_1C.count=10
+Channels_B1.count=14
+Channels_1G.count=8
+
+Channels_1B.RF_channel_ID=1
+Channels_1C.RF_channel_ID=1
+Channels_B1.RF_channel_ID=0
+Channels_1G.RF_channel_ID=2
+
+
+Channels.in_acquisition=2
+
+;######### ACQUISITION BEIDOU CONFIG ############
+Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition
+Acquisition_B1.item_type=gr_complex
+Acquisition_B1.coherent_integration_time_ms=2
+;Acquisition_B1.max_dwells=2
+;Acquisition_B1.pfa=0.02
+Acquisition_B1.pfa=0.000002
+Acquisition_B1.doppler_max=6000
+Acquisition_B1.doppler_step=100
+Acquisition_B1.dump=false
+Acquisition_B1.dump_filename=./bds_acq
+;Acquisition_B1.blocking=true
+Acquisition_B1.bit_transition_flag = false;
+
+;######### ACQUISITION GPS CONFIG ############
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.item_type=gr_complex
+Acquisition_1C.coherent_integration_time_ms=1
+Acquisition_1C.pfa=0.015
+Acquisition_1C.doppler_max=6000
+Acquisition_1C.doppler_step=200
+Acquisition_1C.max_dwells=4
+;Acquisition_1C.blocking=true
+Acquisition_1C.dump=false
+Acquisition_1C.dump_filename=./acq_dump.dat
+
+;######### ACQUISITION GALILEO CONFIG ############
+Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
+Acquisition_1B.coherent_integration_time_ms=2
+;Acquisition_1B.pfa=0.000008
+Acquisition_1B.pfa=0.025
+Acquisition_1B.doppler_max=6000
+Acquisition_1B.doppler_step=200
+Acquisition_1B.max_dwells=4
+;Acquisition_1B.repeat_satellite=true
+Acquisition_1B.cboc=true
+;Acquisition_1B.blocking=true
+Acquisition_1B.dump=false
+Acquisition_1B.dump_filename=./acq_dump.dat
+
+;######### ACQUISITION GLONASS CONFIG ############
+Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition
+Acquisition_1G.item_type=gr_complex
+Acquisition_1G.coherent_integration_time_ms=1
+Acquisition_1G.max_dwells=4
+Acquisition_1G.pfa=0.02
+Acquisition_1G.doppler_max=6000
+Acquisition_1G.doppler_step=100
+Acquisition_1G.dump=false
+Acquisition_1G.dump_filename=./G1_acq
+
+
+
+;######### TRACKING BEIDOU CONFIG ############
+Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking
+Tracking_B1.item_type=gr_complex
+Tracking_B1.extend_correlation_symbols=10
+Tracking_B1.pll_bw_hz=50.0
+Tracking_B1.dll_bw_hz=2.00
+Tracking_B1.pll_bw_narrow_hz=15.0
+Tracking_B1.dll_bw_narrow_hz=1.50
+;Tracking_B1.cn0_min=20
+;Tracking_B1.fll_bw_hz=20
+;Tracking_B1.enable_fll_pull_in=true
+;Tracking_B1.enable_fll_steady_state=false
+Tracking_B1.dump=false
+Tracking_B1.dump_filename=./epl_tracking_ch_
+
+;######### TRACKING GPS CONFIG ############
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.item_type=gr_complex
+Tracking_1C.extend_correlation_symbols=10
+Tracking_1C.early_late_space_chips=0.5
+Tracking_1C.early_late_space_narrow_chips=0.15
+Tracking_1C.pll_bw_hz=30.0
+Tracking_1C.dll_bw_hz=2.0
+Tracking_1C.pll_bw_narrow_hz=10.0
+Tracking_1C.dll_bw_narrow_hz=1.50
+Tracking_1C.fll_bw_hz=10
+Tracking_1C.enable_fll_pull_in=true
+Tracking_1C.enable_fll_steady_state=false
+Tracking_1C.dump=false
+Tracking_1C.dump_filename=tracking_ch_
+
+;######### TRACKING GALILEO CONFIG ############
+Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
+Tracking_1B.extend_correlation_symbols=4
+Tracking_1B.item_type=gr_complex
+Tracking_1B.pll_bw_hz=30.0
+Tracking_1B.dll_bw_hz=2.0
+Tracking_1B.pll_bw_narrow_hz=20.0
+Tracking_1B.dll_bw_narrow_hz=1.50
+Tracking_1B.track_pilot=true
+Tracking_1B.enable_fll_pull_in=true;
+Tracking_1B.enable_fll_steady_state=false
+Tracking_1B.fll_bw_hz=20
+
+;######### TRACKING GLONASS CONFIG ############
+Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking
+Tracking_1G.item_type=gr_complex
+Tracking_1G.pll_bw_hz=40
+Tracking_1G.dll_bw_hz=2.5
+Tracking_1G.extend_correlation_ms=1
+Tracking_1G.pll_bw_narrow_hz=20
+Tracking_1G.dll_bw_narrow_hz=1.5
+Tracking_1G.dump=false
+Tracking_1G.dump_filename=./epl_tracking_ch_
+
+
+
+;######### TELEMETRY DECODER BEIDOU CONFIG ############
+TelemetryDecoder_B1.implementation=BEIDOU_B1I_Telemetry_Decoder
+TelemetryDecoder_B1.dump=false
+
+;######### TELEMETRY DECODER GPS CONFIG ############
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
+
+;######### TELEMETRY DECODER GALILEO E1B CONFIG ############
+TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
+TelemetryDecoder_1B.dump=false
+
+;######### TELEMETRY DECODER GLONASS CONFIG ############
+TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1G.dump=false
+
+
+;######### OBSERVABLES CONFIG ############
+Observables.implementation=Hybrid_Observables
+Observables.dump=false
+Observables.dump_filename=./observables.dat
+
+;######### PVT CONFIG ############
+PVT.implementation=RTKLIB_PVT
+PVT.threshold_reject_GDOP=100
+PVT.elevation_mask=3
+PVT.raim_fde=1
+PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
+PVT.output_rate_ms=100
+PVT.display_rate_ms=500
+PVT.enable_rx_clock_correction=true
+PVT.flag_rtcm_server=true
+PVT.flag_rtcm_tty_port=false
+PVT.rtcm_dump_devname=/dev/pts/1
+PVT.rtcm_tcp_port=2101
+PVT.rtcm_MT1019_rate_ms=5000
+PVT.rtcm_MT1077_rate_ms=1000
+PVT.rinex_version=2
+PVT.flag_nmea_tty_port=true
+PVT.nmea_dump_devname=/dev/pts/3
+
+; To use gpsd with GNSS-SDR
+; 1. run socat -d -d pty,raw,echo=0 pty,raw,echo=0
+; 2. Set PVT.nmea_dump_devname to first PTY from socat output
+; 3. run gpsd -b -n -N /dev/pts/4
+; where /dev/pts/4 is the second PTY from socat output
+; 4. run some gpsd client (xgps or other)
+
+
+
+PVT.enable_monitor=true
+PVT.monitor_client_addresses=127.0.0.1
+PVT.monitor_udp_port=1111
+
+Monitor.enable_monitor=true
+Monitor.decimation_factor=4
+Monitor.client_addresses=127.0.0.1
+Monitor.udp_port=1112
+
+;AcquisitionMonitor.enable_monitor=true
+AcquisitionMonitor.client_addresses=127.0.0.1
+AcquisitionMonitor.udp_port=1112
+
+
diff --git a/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf
new file mode 100644
index 000000000..05ff16b75
--- /dev/null
+++ b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf
@@ -0,0 +1,237 @@
+; This is a GNSS-SDR configuration file
+; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
+; SPDX-License-Identifier: GPL-3.0-or-later
+; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors)
+
+; You can define your own receiver and invoke it by doing
+; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
+;
+
+[GNSS-SDR]
+
+;######### GLOBAL OPTIONS ##################
+GNSS-SDR.internal_fs_sps=4000000
+GNSS-SDR.Beidou_banned_prns=56,57,58
+
+
+;######### SIGNAL_SOURCE CONFIG ############
+SignalSource.implementation=Osmosdr_Signal_Source
+SignalSource.item_type=gr_complex
+SignalSource.sampling_frequency=20000000
+SignalSource.freq=1567420000
+SignalSource.if_bw=18000000
+;# Next line enables the internal HackRF One bias (3.3 VDC)
+SignalSource.osmosdr_args=hackrf=0,bias=1,buffers=256
+SignalSource.gain=0
+SignalSource.rf_gain=40
+SignalSource.if_gain=40
+SignalSource.AGC_enabled=false
+SignalSource.samples=0
+SignalSource.repeat=false
+SignalSource.RF_channels=2
+SignalSource.enable_throttle_control=false
+SignalSource.dump=false
+
+
+
+;######### SIGNAL_CONDITIONER CONFIG ############
+SignalConditioner0.implementation=Signal_Conditioner
+SignalConditioner1.implementation=Signal_Conditioner
+
+;######### DATA_TYPE_ADAPTER CONFIG ############
+DataTypeAdapter0.implementation=Pass_Through
+DataTypeAdapter1.implementation=Pass_Through
+
+;######### INPUT_FILTER CONFIG ############
+InputFilter0.implementation=Freq_Xlating_Fir_Filter
+;InputFilter0.implementation=Pass_Through
+InputFilter0.decimation_factor=5
+InputFilter0.input_item_type=gr_complex
+InputFilter0.output_item_type=gr_complex
+InputFilter0.taps_item_type=float
+InputFilter0.filter_type=lowpass
+InputFilter0.bw=3000000
+InputFilter0.tw=1000000
+InputFilter0.IF=-6322000
+InputFilter0.sampling_frequency=20000000
+InputFilter0.dump=false
+InputFilter0.dump_filename=./input_filter.dat
+
+;######### INPUT_FILTER CONFIG ############
+InputFilter1.implementation=Freq_Xlating_Fir_Filter
+;InputFilter1.implementation=Pass_Through
+InputFilter1.decimation_factor=5
+InputFilter1.input_item_type=gr_complex
+InputFilter1.output_item_type=gr_complex
+InputFilter1.taps_item_type=float
+InputFilter1.filter_type=lowpass
+InputFilter1.bw=3000000
+InputFilter1.tw=1000000
+InputFilter1.IF=8000000
+InputFilter1.sampling_frequency=20000000
+InputFilter1.dump=false
+InputFilter1.dump_filename=./input_filter.dat
+
+
+
+
+
+;######### RESAMPLER CONFIG ############
+Resampler0.implementation=Pass_Through
+Resampler1.implementation=Pass_Through
+
+;######### CHANNELS GLOBAL CONFIG ############
+Channels_1B.count=10
+Channels_1C.count=10
+Channels_B1.count=14
+
+Channels_1B.RF_channel_ID=1
+Channels_1C.RF_channel_ID=1
+Channels_B1.RF_channel_ID=0
+
+
+
+Channels.in_acquisition=10
+
+;######### ACQUISITION BEIDOU CONFIG ############
+Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition
+Acquisition_B1.item_type=gr_complex
+Acquisition_B1.coherent_integration_time_ms=2
+;Acquisition_B1.max_dwells=2
+;Acquisition_B1.pfa=0.02
+Acquisition_B1.pfa=0.000002
+Acquisition_B1.doppler_max=3800
+Acquisition_B1.doppler_step=100
+Acquisition_B1.dump=false
+Acquisition_B1.dump_filename=./bds_acq
+;Acquisition_B1.blocking=true
+Acquisition_B1.bit_transition_flag = false;
+
+;######### ACQUISITION GPS CONFIG ############
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.item_type=gr_complex
+Acquisition_1C.coherent_integration_time_ms=1
+Acquisition_1C.pfa=0.015
+Acquisition_1C.doppler_max=5000
+Acquisition_1C.doppler_step=200
+Acquisition_1C.max_dwells=4
+;Acquisition_1C.blocking=true
+Acquisition_1C.dump=false
+Acquisition_1C.dump_filename=./acq_dump.dat
+
+;######### ACQUISITION GALILEO CONFIG ############
+Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
+Acquisition_1B.coherent_integration_time_ms=2
+;Acquisition_1B.pfa=0.000008
+Acquisition_1B.pfa=0.025
+Acquisition_1B.doppler_max=5000
+Acquisition_1B.doppler_step=200
+Acquisition_1B.max_dwells=4
+;Acquisition_1B.repeat_satellite=true
+Acquisition_1B.cboc=true
+;Acquisition_1B.blocking=true
+Acquisition_1B.dump=false
+Acquisition_1B.dump_filename=./acq_dump.dat
+
+
+
+
+;######### TRACKING BEIDOU CONFIG ############
+Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking
+Tracking_B1.item_type=gr_complex
+Tracking_B1.extend_correlation_symbols=10
+Tracking_B1.pll_bw_hz=30.0
+Tracking_B1.dll_bw_hz=2.00
+Tracking_B1.pll_bw_narrow_hz=15.0
+Tracking_B1.dll_bw_narrow_hz=0.50
+;Tracking_B1.cn0_min=20
+Tracking_B1.fll_bw_hz=20
+Tracking_B1.enable_fll_pull_in=true
+Tracking_B1.enable_fll_steady_state=false
+Tracking_B1.dump=false
+Tracking_B1.dump_filename=./epl_tracking_ch_
+
+;######### TRACKING GPS CONFIG ############
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.item_type=gr_complex
+Tracking_1C.extend_correlation_symbols=10
+Tracking_1C.early_late_space_chips=0.5
+Tracking_1C.early_late_space_narrow_chips=0.15
+Tracking_1C.pll_bw_hz=30.0
+Tracking_1C.dll_bw_hz=2.0
+Tracking_1C.pll_bw_narrow_hz=10.0
+Tracking_1C.dll_bw_narrow_hz=0.50
+Tracking_1C.fll_bw_hz=10
+Tracking_1C.enable_fll_pull_in=true
+Tracking_1C.enable_fll_steady_state=false
+Tracking_1C.dump=false
+Tracking_1C.dump_filename=tracking_ch_
+
+;######### TRACKING GALILEO CONFIG ############
+Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
+Tracking_1B.extend_correlation_symbols=4
+Tracking_1B.item_type=gr_complex
+Tracking_1B.pll_bw_hz=30.0
+Tracking_1B.dll_bw_hz=2.0
+Tracking_1B.pll_bw_narrow_hz=20.0
+Tracking_1B.dll_bw_narrow_hz=0.50
+Tracking_1B.track_pilot=true
+Tracking_1B.enable_fll_pull_in=true;
+Tracking_1B.enable_fll_steady_state=false
+Tracking_1B.fll_bw_hz=20
+
+
+;######### TELEMETRY DECODER BEIDOU CONFIG ############
+TelemetryDecoder_B1.implementation=BEIDOU_B1I_Telemetry_Decoder
+TelemetryDecoder_B1.dump=false
+
+;######### TELEMETRY DECODER GPS CONFIG ############
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
+
+;######### TELEMETRY DECODER GALILEO E1B CONFIG ############
+TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
+TelemetryDecoder_1B.dump=false
+
+
+
+;######### OBSERVABLES CONFIG ############
+Observables.implementation=Hybrid_Observables
+Observables.dump=false
+Observables.dump_filename=./observables.dat
+
+;######### PVT CONFIG ############
+PVT.implementation=RTKLIB_PVT
+PVT.threshold_reject_GDOP=100
+PVT.elevation_mask=4
+PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
+PVT.output_rate_ms=100
+PVT.display_rate_ms=500
+PVT.enable_rx_clock_correction=true
+PVT.flag_rtcm_server=true
+PVT.flag_rtcm_tty_port=false
+PVT.rtcm_dump_devname=/dev/pts/1
+PVT.rtcm_tcp_port=2101
+PVT.rtcm_MT1019_rate_ms=5000
+PVT.rtcm_MT1077_rate_ms=1000
+PVT.rinex_version=2
+PVT.flag_nmea_tty_port=true
+PVT.nmea_dump_devname=/dev/pts/3
+
+
+PVT.enable_monitor=true
+PVT.monitor_client_addresses=127.0.0.1
+PVT.monitor_udp_port=1111
+
+Monitor.enable_monitor=true
+Monitor.decimation_factor=4
+Monitor.client_addresses=127.0.0.1
+Monitor.udp_port=1112
+
+AcquisitionMonitor.enable_monitor=true
+AcquisitionMonitor.client_addresses=127.0.0.1
+AcquisitionMonitor.udp_port=1112
+
+
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
similarity index 97%
rename from conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
rename to conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
index 61f18e09f..de70827ed 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
+++ b/conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
@@ -59,7 +59,7 @@ DataTypeAdapter0.item_type=gr_complex
;######### INPUT_FILTER 0 CONFIG ############
InputFilter0.implementation=Pass_Through
InputFilter0.dump=false
-InputFilter0.dump_filename=../data/input_filter.dat
+InputFilter0.dump_filename=./input_filter.dat
InputFilter0.input_item_type=gr_complex
InputFilter0.output_item_type=gr_complex
@@ -74,7 +74,7 @@ SignalConditioner1.implementation=Pass_Through
;######### INPUT_FILTER 1 CONFIG ############
InputFilter1.implementation=Pass_Through
InputFilter1.dump=false
-InputFilter1.dump_filename=../data/input_filter.dat
+InputFilter1.dump_filename=./input_filter.dat
InputFilter1.input_item_type=gr_complex
InputFilter1.output_item_type=gr_complex
diff --git a/conf/gnss-sdr.conf b/conf/gnss-sdr.conf
index 3f4b61766..16cb1e865 100644
--- a/conf/gnss-sdr.conf
+++ b/conf/gnss-sdr.conf
@@ -68,13 +68,13 @@ InputFilter.grid_density=16
InputFilter.sampling_frequency=4000000
InputFilter.IF=0
InputFilter.dump=false
-InputFilter.dump_filename=../data/input_filter.dat
+InputFilter.dump_filename=./input_filter.dat
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
-Resampler.dump_filename=../data/resampler.dat
+Resampler.dump_filename=./resampler.dat
;######### CHANNELS GLOBAL CONFIG ############
@@ -113,7 +113,7 @@ Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=3.0;
Tracking_1C.order=3;
Tracking_1C.dump=false
-Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.dump_filename=./epl_tracking_ch_
;######### TELEMETRY DECODER GPS CONFIG ############
diff --git a/data/.gitignore b/data/.gitignore
deleted file mode 100644
index 08e486f4d..000000000
--- a/data/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades
-# Ignore everything in this directory
-*
-# Except this file
-!.gitignore
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 20d3ae65d..09f08e120 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -4,7 +4,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
)
[comment]: # (
-SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades
+SPDX-FileCopyrightText: 2011-2025 Carles Fernandez-Prades
)
@@ -12,6 +12,145 @@ SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades = 3.24, otherwise it has no effect). This change has a downside in
+ maintainability, since the source code becomes plagued with preprocessor
+ directives required to maintain compatibility both with gflags and glog, and
+ with Abseil.
+- Historically, GNSS-SDR linked against the GnuTLS library for cryptographic
+ functions. If GnuTLS was not found, then the building system looked for and
+ linked against OpenSSL as a fallback. This was due to the OpenSSL 1.x dual
+ license scheme, which was incompatible with GPL v3.0 license, preventing it
+ from being a mandatory dependency for GNSS-SDR in most GNU/Linux
+ distributions. This issue was solved with the release of OpenSSL 3.0.0, which
+ transitioned to the Apache License 2.0, fully compatible with GPL v3.0.
+ Accordingly, the GNSS-SDR building system now looks for OpenSSL in the first
+ place and, if not found, then it looks for GnuTLS as a fallback. The new CMake
+ configuration option `-DENABLE_GNUTLS=ON` allows linking against GnuTLS
+ instead of OpenSSL.
+- Allow linking against Boost 1.87.0.
+- Replace the System V queues by boost::interprocess, improving portability.
+- Improve detection of Homebrew or Macports in macOS.
+
+### Improvements in Reliability
+
+- Implementation of the Galileo Open Service Navigation Message Authentication
+ (OSNMA), a data authentication function for the Galileo Open Service worldwide
+ users, freely accessible to all. OSNMA provides receivers with the assurance
+ that the received Galileo navigation message is coming from the system itself
+ and has not been modified. OSNMA is enabled by default if the receiver
+ configuration defines Galileo E1 OS channels. More details can be found in
+ [Introducing GNSS Navigation Message Authentication](https://gnss-sdr.org/osnma).
+
+### Improvements in Usability:
+
+- Tidy up the `conf/` folder.
+- Add `install` and `uninstall` targets to the `nav_msg_listener` utility.
+- **Potential Breaking Change**: The source tree has been refactored to follow a
+ more conventional folder structure. This may disrupt user pipelines that
+ relied on the previous structure and could break development branches that
+ were branched off from `next` before this change. The key changes are:
+
+ - The `tests` and `utils` directories have been moved from the `src` folder to
+ the root of the source tree.
+ - The empty `build` and `data` folders have been removed. Users can create a
+ building folder using `mkdir build` or by having CMake handle it:
+ `cmake -S . -B build`.
+ - All default names for dump or input files starting with `../data/`
+ have been changed to `./`.
+
+See the definitions of concepts and metrics at
+https://gnss-sdr.org/design-forces/
+
+
+
+## [GNSS-SDR v0.0.19.1](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.19.1) - 2024-01-26
+
+[](https://doi.org/10.5281/zenodo.10579595)
+
+- Fix formatting of the `CITATION.cff` file.
+
## [GNSS-SDR v0.0.19](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.19) - 2024-01-23
### Improvements in Efficiency:
@@ -83,14 +222,14 @@ All notable changes to GNSS-SDR will be documented in this file.
user pressing Ctrl+C, or another user application sending an interruption
signal).
- The estimated CN0 value is now printed in the terminal when navigation data is
- succesfully decoded.
+ successfully decoded.
- Fixed GPS navigation message satellite validation.
- Latitude and longitude are now reported in the terminal with six decimal
places (the sixth decimal place worths up to 0.11 m), instead of the
overkilling nine (the ninth decimal place worths up to 110 microns).
Similarly, height in meters is now reported with two decimal places instead of
three, and velocity in m/s also with two decimal places instead of three.
-- Fixed the rate at which KLM, GPX, GeoJSON, and NMEA annotations are made. The
+- Fixed the rate at which KML, GPX, GeoJSON, and NMEA annotations are made. The
rate is now set by `PVT.output_rate_ms` (`500` ms by default), and can be
particularized by `PVT.kml_rate_ms`, `PVT.gpx_rate_ms`, `PVT.geojson_rate_ms`,
and `PVT.nmea_rate_ms`. Those values should be multiples of
@@ -167,22 +306,22 @@ https://gnss-sdr.org/design-forces/
- Fixed linking against libunwind when the glog library is built locally.
- The configuration options at building time `-DENABLE_OWN_GLOG`,
`-DENABLE_OWN_ARMADILLO`, and `-DENABLE_OWN_GNSSTK` can now be switched `ON`
- and `OFF` without the need to start from an empty buiding folder.
+ and `OFF` without the need to start from an empty building folder.
- Improved CMake handling of the spdlog library used by GNU Radio >= 3.10.
- Make use of the C++20 standard if the environment allows for it.
- Improved passing of compiler flags to `volk_gnsssdr` if the corresponding
environment variables are defined. This fixes warnings in some packaging
systems.
- Improved support for the RISC-V architecture.
-- Test files are now donwloaded at configuration time instead of being included
+- Test files are now downloaded at configuration time instead of being included
in the source tree. This allows for a smaller package and fixes Lintian
`very-long-line-length-in-source-file` warnings since those files were not
recognized as binaries. The configuration flag `-DENABLE_PACKAGING=ON` passed
to CMake deactivates file downloading.
- The `ENABLE_GENERIC_ARCH` building option was removed, simplifying the process
- of buiding the software in non-x86 processor architectures.
+ of building the software in non-x86 processor architectures.
- If the Protocol Buffers dependency is not found, it is downloaded, built and
- statically linked at buiding time. If CMake >= 3.13 and the
+ statically linked at building time. If CMake >= 3.13 and the
[Abseil C++ libraries](https://github.com/abseil/abseil-cpp) >= 20230117 are
installed on your system, Protocol Buffers v22.2 will be used. If those
requirements are not met, Protocol Buffers v21.4 will be used instead
@@ -306,7 +445,7 @@ https://gnss-sdr.org/design-forces/
- Fixed building against GNU Radio v3.10.X.Y, which does not support the C++20
standard.
- Fixed building against GNU Radio v3.10.X.Y, which replaced
- [log4cpp](http://log4cpp.sourceforge.net/) by the
+ [log4cpp](https://log4cpp.sourceforge.net/) by the
[spdlog](https://github.com/gabime/spdlog) and
[fmt](https://github.com/fmtlib/fmt) libraries.
- Updated `cpu_features` library for improved processor detection.
@@ -453,8 +592,7 @@ https://gnss-sdr.org/design-forces/
inconsistencies in the configuration file.
- Fix segmentation fault if the RINEX output was disabled.
- Added a feature that optionally enables the remote monitoring of GPS and
- Galileo ephemeris using UDP and
- [Protocol Buffers](https://developers.google.com/protocol-buffers).
+ Galileo ephemeris using UDP and [Protocol Buffers](https://protobuf.dev/).
- Now building the software passing the `-DENABLE_FPGA=ON` to CMake does not
make the receiver unusable when running on non-FPGA-enabled platforms. On
FPGA-enabled platforms, now it is possible to run non-FPGA-enabled
diff --git a/docs/doxygen/other/main_page.dox b/docs/doxygen/other/main_page.dox
index 0968c3eb9..d5de316d6 100644
--- a/docs/doxygen/other/main_page.dox
+++ b/docs/doxygen/other/main_page.dox
@@ -77,19 +77,19 @@ As outputs, it provides:
In principle, GNSS-SDR can be built in any Unix-like system. In practice, it depends on being able to install all the required dependencies. See the building guide page for details about the project's
dependencies and build process. Mainly, it consists on installing GNU Radio plus some few more libraries:
-\li Armadillo, a C++ linear algebra library,
+\li Armadillo, a C++ linear algebra library,
\li Boost, a set of free peer-reviewed portable C++ source libraries,
\li Gflags, a library that implements commandline flags processing,
\li Glog, a library that implements application-level logging,
\li Googletest, Google's framework for writing C++ tests,
\li Mako, a template library written in Python,
\li Matio, a MATLAB MAT File I/O Library,
-\li Protocol Buffers, a language-neutral, platform-neutral extensible mechanism for serializing structured data,
+\li Protocol Buffers, a language-neutral, platform-neutral extensible mechanism for serializing structured data,
\li PugiXML, a light-weight, simple and fast XML parser for C++ with XPath support,
\li Volk, a Vector-Optimized Library of Kernels which provides an abstraction of optimized math routines targeting several SIMD processors,
and, optionally,
-\li GNU Radio modules for hardware interface (gr-uhd, gr-osmosdr, gr-iio),
+\li GNU Radio modules for hardware interface (gr-uhd, gr-osmosdr, gr-iio),
\li Benchmark, a library to benchmark code snippets,
\li Gperftools, which provides fast, multi-threaded malloc() and performance analysis tools.
@@ -101,10 +101,8 @@ $ git clone https://github.com/gnss-sdr/gnss-sdr
This will create a folder named gnss-sdr with the following structure:
\verbatim
|-gnss-sdr
- |---build <- where gnss-sdr is built
|---cmake <- CMake-related files
|---conf <- Configuration files. Each file represents one receiver.
- |---data <- Populate this folder with your captured data.
|---docs <- Contains documentation-related files
|---install <- Executables
|---src <- Source code folder
@@ -127,13 +125,13 @@ This will create a folder named gnss-sdr with the following structure:
|-------receiver
|-------system_parameters
|-----main
- |-----tests
- |-----utils <- some utilities (e.g. Matlab scripts)
+ |---tests
+ |---utils <- some utilities (e.g. Matlab scripts)
\endverbatim
You are now ready to build GNSS-SDR by using CMake as building tool:
\verbatim
-$ cd gnss-sdr/build
+$ cd gnss-sdr && mkdir build && cd build
$ cmake ..
$ make
\endverbatim
@@ -153,10 +151,10 @@ You can create the documentation by doing:
$ make doc
\endverbatim
-from the gnss-sdr/build folder. In both cases, Doxygen will generate HTML documentation that can be
+from the building folder. In both cases, Doxygen will generate HTML documentation that can be
retrieved pointing your browser of preference to gnss-sdr/docs/html/index.html.
-There are two more extra targets available. From the gnss-sdr/build folder:
+There are two more extra targets available. In the building folder:
\verbatim
$ make doc-clean
\endverbatim
@@ -167,7 +165,7 @@ $ make pdfmanual
will create a PDF manual at gnss-sdr/docs/GNSS-SDR_manual.pdf. Please note that the PDF generation requires some fonts to be installed on the host system.
In Ubuntu, those fonts do not come by default. You can install them by doing:
\verbatim
-$ sudo apt-get install texlive-fonts-recommended
+$ sudo apt install texlive-fonts-recommended
\endverbatim
and then run cmake ../ and make pdfmanual again.
@@ -177,10 +175,9 @@ By default, CMake will build the Release version, meaning that the compiler will
a RF front-end and you need to attain real time. If working with a file (and thus without real-time constraints), you may want to obtain more information about
the internals of the receiver, as well as more fine-grained logging. This can be done by building the Debug version, by doing:
\verbatim
-$ cd gnss-sdr/build
+$ cd gnss-sdr && mkdir build-debug && cd build-debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
-$ sudo make install
\endverbatim
\subsection updating_gnss-sdr Updating GNSS-SDR
@@ -189,10 +186,10 @@ If you checked out GNSS-SDR some days ago, it is possible that some developer ha
$ git checkout next
$ git pull https://github.com/gnss-sdr/gnss-sdr next
\endverbatim
-Before rebuiling the source code, it is safe (and recommended) to remove the remainders of old builds:
+Before rebuilding the source code, it is safe (and recommended) to remove the remainders of old builds:
\verbatim
-$ cd gnss-sdr/build
-$ sudo make uninstall
+$ cd
+$ sudo make uninstall ; if you installed it before
$ rm -rf *
\endverbatim
@@ -215,7 +212,7 @@ and we will be happy to upload it to the server.
You can use a single configuration file for processing
different data files, specifying the file to be processed with the --signal_source flag:
\verbatim
-$ gnss-sdr --config_file=../conf/my_receiver.conf --signal_source=../data/my_captured_data.dat
+$ gnss-sdr --config_file=../conf/my_receiver.conf --signal_source=./my_captured_data.dat
\endverbatim
This will override the SignalSource.filename specified in the configuration file.
@@ -636,7 +633,7 @@ More papers related to GNSS-SDR are available at the gnss-sdr/install folder, running ./gnss-sdr, and see how the file is processed.
Please ask the Developer Team for a signal sample if you need one, and they will do their best ;-)
diff --git a/docs/doxygen/other/reference_docs.dox b/docs/doxygen/other/reference_docs.dox
index 00af2e1a2..5871776d5 100644
--- a/docs/doxygen/other/reference_docs.dox
+++ b/docs/doxygen/other/reference_docs.dox
@@ -153,7 +153,7 @@ automatically selected by the CMake script):
You can get it from ISO, IEC
- or ANSI. The closest free working document available is
ISO, IEC
- or ANSI. The closest free working document available is
N4659.
C++14: A former ISO C++ standard was officially known as ISO International Standard ISO/IEC 14882:2014 – Programming languages – C++.
You can get it from ISO or ANSI. The closest free working document available is
N4296.
C++11: An older ISO C++ standard was ISO/IEC 14882:2011.
You can get it from ISO. The closest free working document available is N3337.
@@ -207,7 +207,7 @@ User plane protocols:
\li Open Mobile Alliance (OMA), Secure User Plane Location Architecture Version 2 (SUPL 2.0), April 2012.
LTE Release 9 introduced extension hooks in LPP messages, so that the bodies external to 3GPP could extend the LPP feature set. OMA LPP extensions (LPPe), supported in SUPL 3.0, build on top of the 3GPP LPP reusing its procedures and data types.
-Check the OMA Specifications webpage for updated information about LPP Extensions (LPPe) Specification.
+Check the OMA Specifications webpage for updated information about LPP Extensions (LPPe) Specification.
\li The OMA Mobile Location Protocol (MLP) V3.5
is an application-level protocol for getting the position of mobile stations
diff --git a/docs/manpage/gnss-sdr-manpage b/docs/manpage/gnss-sdr-manpage
index 60e2564e4..958ffbe6a 100644
--- a/docs/manpage/gnss-sdr-manpage
+++ b/docs/manpage/gnss-sdr-manpage
@@ -2,7 +2,7 @@
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\" SPDX-FileCopyrightText: Carles Fernandez-Prades
.\" Contact carles.fernandez@cttc.es to correct errors or typos.
-.TH gnss\-sdr 1 "23 Jan 2024" "0.0.19" "gnss\-sdr man page"
+.TH gnss\-sdr 1 "1 Apr 2025" "0.0.20" "gnss\-sdr man page"
.SH NAME
\fBgnss\-sdr\fR \- GNSS Software Defined Receiver.
.SH SYNOPSIS
diff --git a/docs/protobuf/README.md b/docs/protobuf/README.md
index a555ae44c..438a9d66d 100644
--- a/docs/protobuf/README.md
+++ b/docs/protobuf/README.md
@@ -11,9 +11,8 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades
Files in this folder describe structured data formats that are generated by
-GNSS-SDR. They use
-[Protocol Buffers](https://developers.google.com/protocol-buffers/)'
-[proto3](https://developers.google.com/protocol-buffers/docs/proto3) syntax.
+GNSS-SDR. They use [Protocol Buffers](https://protobuf.dev/)'
+[proto3](https://protobuf.dev/programming-guides/proto3/) syntax.
From those files, the protocol buffer compiler creates classes that implement
automatic encoding and parsing of the protocol buffer data with an efficient
diff --git a/docs/xml-schemas/README.md b/docs/xml-schemas/README.md
index eae9b1a70..1966290f6 100644
--- a/docs/xml-schemas/README.md
+++ b/docs/xml-schemas/README.md
@@ -51,6 +51,6 @@ Please check https://gnss-sdr.org/docs/sp-blocks/global-parameters/ for more
information about the usage of XML files in GNSS-SDR.
You could find useful the utility program
-[rinex2assist](https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist)
+[rinex2assist](https://github.com/gnss-sdr/gnss-sdr/tree/next/utils/rinex2assist)
for the generation of compatible XML files from recent, publicly available RINEX
navigation data files.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ab56014db..7b3c36c7b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -8,7 +8,3 @@
add_subdirectory(algorithms)
add_subdirectory(core)
add_subdirectory(main)
-if(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING)
- add_subdirectory(tests)
-endif()
-add_subdirectory(utils)
diff --git a/src/algorithms/PVT/adapters/CMakeLists.txt b/src/algorithms/PVT/adapters/CMakeLists.txt
index 658e493ac..415fb13d4 100644
--- a/src/algorithms/PVT/adapters/CMakeLists.txt
+++ b/src/algorithms/PVT/adapters/CMakeLists.txt
@@ -23,10 +23,16 @@ target_link_libraries(pvt_adapters
pvt_gr_blocks
PRIVATE
gnss_sdr_flags
- Glog::glog
pvt_libs
)
+if(ENABLE_GLOG_AND_GFLAGS)
+ target_link_libraries(pvt_adapters PRIVATE Glog::glog)
+ target_compile_definitions(pvt_adapters PRIVATE -DUSE_GLOG_AND_GFLAGS=1)
+else()
+ target_link_libraries(pvt_adapters PRIVATE absl::flags absl::log)
+endif()
+
target_include_directories(pvt_adapters
PUBLIC
${GNSSSDR_SOURCE_DIR}/src/core/interfaces
diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc
index 93166877d..51b3977a1 100644
--- a/src/algorithms/PVT/adapters/rtklib_pvt.cc
+++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc
@@ -26,8 +26,13 @@
#include "gps_ephemeris.h" // for Gps_Ephemeris
#include "pvt_conf.h" // for Pvt_Conf
#include "rtklib_rtkpos.h" // for rtkfree, rtkinit
-#include // for LOG
#include // for std::cout
+#include // for std::move
+#if USE_GLOG_AND_GFLAGS
+#include
+#else
+#include
+#endif
#if USE_STD_COMMON_FACTOR
#include
namespace bc = std;
@@ -88,6 +93,7 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
// RINEX version
pvt_output_parameters.rinex_version = configuration->property(role + ".rinex_version", 3);
+#if USE_GLOG_AND_GFLAGS
if (FLAGS_RINEX_version == "3.01" || FLAGS_RINEX_version == "3.02" || FLAGS_RINEX_version == "3")
{
pvt_output_parameters.rinex_version = 3;
@@ -96,13 +102,29 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
{
pvt_output_parameters.rinex_version = 2;
}
+#else
+ if (absl::GetFlag(FLAGS_RINEX_version) == "3.01" || absl::GetFlag(FLAGS_RINEX_version) == "3.02" || absl::GetFlag(FLAGS_RINEX_version) == "3")
+ {
+ pvt_output_parameters.rinex_version = 3;
+ }
+ else if (absl::GetFlag(FLAGS_RINEX_version) == "2.10" || absl::GetFlag(FLAGS_RINEX_version) == "2.11" || absl::GetFlag(FLAGS_RINEX_version) == "2")
+ {
+ pvt_output_parameters.rinex_version = 2;
+ }
+#endif
pvt_output_parameters.rinexobs_rate_ms = bc::lcm(configuration->property(role + ".rinexobs_rate_ms", 1000), pvt_output_parameters.output_rate_ms);
pvt_output_parameters.rinex_name = configuration->property(role + ".rinex_name", std::string("-"));
+#if USE_GLOG_AND_GFLAGS
if (FLAGS_RINEX_name != "-")
{
pvt_output_parameters.rinex_name = FLAGS_RINEX_name;
}
-
+#else
+ if (absl::GetFlag(FLAGS_RINEX_name) != "-")
+ {
+ pvt_output_parameters.rinex_name = absl::GetFlag(FLAGS_RINEX_name);
+ }
+#endif
// RTCM Printer settings
pvt_output_parameters.flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
pvt_output_parameters.rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
@@ -866,7 +888,7 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
// Read PVT MONITOR Configuration
pvt_output_parameters.monitor_enabled = configuration->property(role + ".enable_monitor", false);
pvt_output_parameters.udp_addresses = configuration->property(role + ".monitor_client_addresses", std::string("127.0.0.1"));
- pvt_output_parameters.udp_port = configuration->property(role + ".monitor_udp_port", 1234);
+ pvt_output_parameters.udp_ports = configuration->property(role + ".monitor_udp_port", std::string("1234"));
pvt_output_parameters.protobuf_enabled = configuration->property(role + ".enable_protobuf", true);
if (configuration->property("Monitor.enable_protobuf", false) == true)
{
@@ -898,6 +920,17 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
// Use unhealthy satellites
pvt_output_parameters.use_unhealthy_sats = configuration->property(role + ".use_unhealthy_sats", pvt_output_parameters.use_unhealthy_sats);
+ // OSNMA
+ if (gal_1B_count > 0)
+ {
+ std::string osnma_mode = configuration->property("GNSS-SDR.osnma_mode", std::string(""));
+ bool enable_osnma = configuration->property("GNSS-SDR.osnma_enable", true);
+ if (enable_osnma && osnma_mode == "strict")
+ {
+ pvt_output_parameters.osnma_strict = true;
+ }
+ }
+
// make PVT object
pvt_ = rtklib_make_pvt_gs(in_streams_, pvt_output_parameters, rtk);
DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";
diff --git a/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt b/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt
index ae1b728bf..f516dea42 100644
--- a/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt
@@ -21,17 +21,23 @@ endif()
target_link_libraries(pvt_gr_blocks
PUBLIC
algorithms_libs_rtklib
+ Boost::headers
Boost::date_time
Gnuradio::pmt
Gnuradio::runtime
PRIVATE
algorithms_libs
pvt_libs
- Gflags::gflags
- Glog::glog
Boost::serialization
)
+if(ENABLE_GLOG_AND_GFLAGS)
+ target_link_libraries(pvt_gr_blocks PRIVATE Gflags::gflags Glog::glog)
+ target_compile_definitions(pvt_gr_blocks PRIVATE -DUSE_GLOG_AND_GFLAGS=1)
+else()
+ target_link_libraries(pvt_gr_blocks PRIVATE absl::log)
+endif()
+
if(GNURADIO_USES_STD_POINTERS)
target_compile_definitions(pvt_gr_blocks
PUBLIC -DGNURADIO_USES_STD_POINTERS=1
diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc
index 80b41440a..2bc2ae41a 100644
--- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc
+++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc
@@ -52,6 +52,7 @@
#include "monitor_pvt.h"
#include "monitor_pvt_udp_sink.h"
#include "nmea_printer.h"
+#include "osnma_data.h"
#include "pvt_conf.h"
#include "rinex_printer.h"
#include "rtcm_printer.h"
@@ -64,7 +65,6 @@
#include
#include
#include // for nvp, make_nvp
-#include // for LOG
#include // for io_signature
#include // for mp
#include // for sort, unique
@@ -77,11 +77,15 @@
#include // for locale
#include // for ostringstream
#include // for length_error
-#include // for IPC_CREAT
-#include // for msgctl
#include // for std::type_info, typeid
#include // for pair
+#if USE_GLOG_AND_GFLAGS
+#include
+#else
+#include
+#endif
+
#if HAS_GENERIC_LAMBDA
#else
#include
@@ -124,6 +128,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
: gr::sync_block("rtklib_pvt_gs",
gr::io_signature::make(nchannels, nchannels, sizeof(Gnss_Synchro)),
gr::io_signature::make(0, 0, 0)),
+ d_queue_name("gnss_sdr_ttff_message_queue"),
d_dump_filename(conf_.dump_filename),
d_geohash(std::make_unique()),
d_gps_ephemeris_sptr_type_hash_code(typeid(std::shared_ptr).hash_code()),
@@ -179,7 +184,8 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
d_an_printer_enabled(conf_.an_output_enabled),
d_log_timetag(conf_.log_source_timetag),
d_use_has_corrections(conf_.use_has_corrections),
- d_use_unhealthy_sats(conf_.use_unhealthy_sats)
+ d_use_unhealthy_sats(conf_.use_unhealthy_sats),
+ d_osnma_strict(conf_.osnma_strict)
{
// Send feedback message to observables block with the receiver clock offset
this->message_port_register_out(pmt::mp("pvt_to_observables"));
@@ -212,6 +218,19 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
#else
boost::bind(&rtklib_pvt_gs::msg_handler_has_data, this, _1));
#endif
+#endif
+
+ // Galileo OSNMA messages port in
+ this->message_port_register_in(pmt::mp("OSNMA_to_PVT"));
+ this->set_msg_handler(pmt::mp("OSNMA_to_PVT"),
+#if HAS_GENERIC_LAMBDA
+ [this](auto&& PH1) { msg_handler_osnma(PH1); });
+#else
+#if USE_BOOST_BIND_PLACEHOLDERS
+ boost::bind(&rtklib_pvt_gs::msg_handler_osnma, this, boost::placeholders::_1));
+#else
+ boost::bind(&rtklib_pvt_gs::msg_handler_osnma, this, _1));
+#endif
#endif
d_initial_carrier_phase_offset_estimation_rads = std::vector(nchannels, 0.0);
@@ -462,7 +481,12 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
std::sort(udp_addr_vec.begin(), udp_addr_vec.end());
udp_addr_vec.erase(std::unique(udp_addr_vec.begin(), udp_addr_vec.end()), udp_addr_vec.end());
- d_udp_sink_ptr = std::make_unique(udp_addr_vec, conf_.udp_port, conf_.protobuf_enabled);
+ std::string port_string = conf_.udp_ports;
+ std::vector udp_port_vec = split_string(port_string, '_');
+ std::sort(udp_port_vec.begin(), udp_port_vec.end());
+ udp_port_vec.erase(std::unique(udp_port_vec.begin(), udp_port_vec.end()), udp_port_vec.end());
+
+ d_udp_sink_ptr = std::make_unique(udp_addr_vec, udp_port_vec, conf_.protobuf_enabled);
}
else
{
@@ -484,14 +508,26 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
d_eph_udp_sink_ptr = nullptr;
}
- // Create Sys V message queue
+ // Create message queue
d_first_fix = true;
- d_sysv_msg_key = 1101;
- const int msgflg = IPC_CREAT | 0666;
- if ((d_sysv_msqid = msgget(d_sysv_msg_key, msgflg)) == -1)
+ const std::size_t max_num_messages = 100;
+ try
{
- std::cout << "GNSS-SDR cannot create System V message queues.\n";
- LOG(WARNING) << "The System V message queue is not available. Error: " << errno << " - " << strerror(errno);
+ // Remove any existing queue with the same name
+ boost::interprocess::message_queue::remove(d_queue_name.c_str());
+
+ // Create a new message queue
+ d_mq = std::make_unique(
+ boost::interprocess::create_only, // Create a new queue
+ d_queue_name.c_str(), // Queue name
+ max_num_messages, // Maximum number of messages
+ sizeof(double) // Maximum message size
+ );
+ }
+
+ catch (const boost::interprocess::interprocess_exception& e)
+ {
+ std::cerr << "Error creating message queue: " << e.what() << std::endl;
}
// Display time in local time zone
@@ -576,9 +612,9 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
rtklib_pvt_gs::~rtklib_pvt_gs()
{
DLOG(INFO) << "PVT block destructor called.";
- if (d_sysv_msqid != -1)
+ if (d_mq)
{
- msgctl(d_sysv_msqid, IPC_RMID, nullptr);
+ boost::interprocess::message_queue::remove(d_queue_name.c_str());
}
try
{
@@ -1629,6 +1665,28 @@ void rtklib_pvt_gs::msg_handler_has_data(const pmt::pmt_t& msg)
}
+void rtklib_pvt_gs::msg_handler_osnma(const pmt::pmt_t& msg)
+{
+ try
+ {
+ // Still not sure about what we should receive here.
+ // It should be a structure with the list of PRNs authenticated (NavData and utcData,
+ // so with ADKD0 and ADKD12 validated), their corresponding TOW at the beginning
+ // of the authenticated subframe, and maybe the COP.
+ const size_t msg_type_hash_code = pmt::any_ref(msg).type().hash_code();
+ if (msg_type_hash_code == typeid(std::shared_ptr).hash_code())
+ {
+ const auto osnma_data = wht::any_cast>(pmt::any_ref(msg));
+ d_auth_nav_data_map[osnma_data->get_prn_d()].insert(osnma_data->get_IOD_nav());
+ }
+ }
+ catch (const wht::bad_any_cast& e)
+ {
+ LOG(WARNING) << "msg_handler_osnma Bad any_cast: " << e.what();
+ }
+}
+
+
std::map rtklib_pvt_gs::get_gps_ephemeris_map() const
{
return d_internal_pvt_solver->gps_ephemeris_map;
@@ -1685,21 +1743,19 @@ void rtklib_pvt_gs::clear_ephemeris()
}
-bool rtklib_pvt_gs::send_sys_v_ttff_msg(d_ttff_msgbuf ttff) const
+bool rtklib_pvt_gs::send_ttff_msg(double ttff) const
{
- if (d_sysv_msqid != -1)
+ if (d_mq)
{
- // Fill Sys V message structures
- int msgsend_size;
- d_ttff_msgbuf msg;
- msg.ttff = ttff.ttff;
- msgsend_size = sizeof(msg.ttff);
- msg.mtype = 1; // default message ID
-
- // SEND SOLUTION OVER A MESSAGE QUEUE
- // non-blocking Sys V message send
- msgsnd(d_sysv_msqid, &msg, msgsend_size, IPC_NOWAIT);
- return true;
+ try
+ {
+ d_mq->send(&ttff, sizeof(ttff), 0); // Priority 0
+ return true;
+ }
+ catch (const boost::interprocess::interprocess_exception& e)
+ {
+ std::cerr << "Error sending message: " << e.what() << std::endl;
+ }
}
return false;
}
@@ -1987,7 +2043,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
bool store_valid_observable = false;
- if (tmp_eph_iter_gps != d_internal_pvt_solver->gps_ephemeris_map.cend())
+ if (!d_osnma_strict && tmp_eph_iter_gps != d_internal_pvt_solver->gps_ephemeris_map.cend())
{
const uint32_t prn_aux = tmp_eph_iter_gps->second.PRN;
if ((prn_aux == in[i][epoch].PRN) && (std::string(in[i][epoch].Signal, 2) == std::string("1C")) && (d_use_unhealthy_sats || (tmp_eph_iter_gps->second.SV_health == 0)))
@@ -2003,10 +2059,25 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
((std::string(in[i][epoch].Signal, 2) == std::string("5X")) && (d_use_unhealthy_sats || ((tmp_eph_iter_gal->second.E5a_DVS == false) && (tmp_eph_iter_gal->second.E5a_HS == 0)))) ||
((std::string(in[i][epoch].Signal, 2) == std::string("7X")) && (d_use_unhealthy_sats || ((tmp_eph_iter_gal->second.E5b_DVS == false) && (tmp_eph_iter_gal->second.E5b_HS == 0))))))
{
- store_valid_observable = true;
+ if (d_osnma_strict && ((std::string(in[i][epoch].Signal, 2) == std::string("1B")) || ((std::string(in[i][epoch].Signal, 2) == std::string("7X")))))
+ {
+ // Pick up only authenticated satellites
+ auto IOD_nav_list = d_auth_nav_data_map.find(tmp_eph_iter_gal->second.PRN);
+ if (IOD_nav_list != d_auth_nav_data_map.cend())
+ {
+ if (IOD_nav_list->second.find(tmp_eph_iter_gal->second.IOD_nav) != IOD_nav_list->second.cend())
+ {
+ store_valid_observable = true;
+ }
+ }
+ }
+ else
+ {
+ store_valid_observable = true;
+ }
}
}
- if (tmp_eph_iter_cnav != d_internal_pvt_solver->gps_cnav_ephemeris_map.cend())
+ if (!d_osnma_strict && tmp_eph_iter_cnav != d_internal_pvt_solver->gps_cnav_ephemeris_map.cend())
{
const uint32_t prn_aux = tmp_eph_iter_cnav->second.PRN;
if ((prn_aux == in[i][epoch].PRN) && (((std::string(in[i][epoch].Signal, 2) == std::string("2S")) || (std::string(in[i][epoch].Signal, 2) == std::string("L5")))))
@@ -2014,7 +2085,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
store_valid_observable = true;
}
}
- if (tmp_eph_iter_glo_gnav != d_internal_pvt_solver->glonass_gnav_ephemeris_map.cend())
+ if (!d_osnma_strict && tmp_eph_iter_glo_gnav != d_internal_pvt_solver->glonass_gnav_ephemeris_map.cend())
{
const uint32_t prn_aux = tmp_eph_iter_glo_gnav->second.PRN;
if ((prn_aux == in[i][epoch].PRN) && ((std::string(in[i][epoch].Signal, 2) == std::string("1G")) || (std::string(in[i][epoch].Signal, 2) == std::string("2G"))))
@@ -2022,7 +2093,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
store_valid_observable = true;
}
}
- if (tmp_eph_iter_bds_dnav != d_internal_pvt_solver->beidou_dnav_ephemeris_map.cend())
+ if (!d_osnma_strict && tmp_eph_iter_bds_dnav != d_internal_pvt_solver->beidou_dnav_ephemeris_map.cend())
{
const uint32_t prn_aux = tmp_eph_iter_bds_dnav->second.PRN;
if ((prn_aux == in[i][epoch].PRN) && (((std::string(in[i][epoch].Signal, 2) == std::string("B1")) || (std::string(in[i][epoch].Signal, 2) == std::string("B3"))) && (d_use_unhealthy_sats || (tmp_eph_iter_bds_dnav->second.SV_health == 0))))
@@ -2032,7 +2103,14 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
}
if (std::string(in[i][epoch].Signal, 2) == std::string("E6"))
{
- store_valid_observable = true;
+ if (d_osnma_strict)
+ {
+ // TODO
+ }
+ else
+ {
+ store_valid_observable = true;
+ }
}
if (store_valid_observable)
@@ -2168,7 +2246,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
d_gnss_observables_map_t1 = d_gnss_observables_map;
// ### select the rx_time and interpolate observables at that time
- if (!d_gnss_observables_map_t0.empty())
+ if (!d_gnss_observables_map_t0.empty() && !d_gnss_observables_map_t1.empty())
{
const auto t0_int_ms = static_cast(d_gnss_observables_map_t0.cbegin()->second.RX_time * 1000.0);
const uint32_t adjust_next_obs_interval_ms = d_observable_interval_ms - t0_int_ms % d_observable_interval_ms;
@@ -2320,12 +2398,10 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
}
std::cout << " is Lat = " << d_user_pvt_solver->get_latitude() << " [deg], Long = " << d_user_pvt_solver->get_longitude()
<< " [deg], Height= " << d_user_pvt_solver->get_height() << " [m]\n";
- d_ttff_msgbuf ttff;
- ttff.mtype = 1;
d_end = std::chrono::system_clock::now();
std::chrono::duration elapsed_seconds = d_end - d_start;
- ttff.ttff = elapsed_seconds.count();
- send_sys_v_ttff_msg(ttff);
+ double ttff = elapsed_seconds.count();
+ send_ttff_msg(ttff);
d_first_fix = false;
}
if (d_kml_output_enabled)
diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.h b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.h
index 83d1f830d..b54b3d670 100644
--- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.h
+++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.h
@@ -18,11 +18,14 @@
#define GNSS_SDR_RTKLIB_PVT_GS_H
#include "gnss_block_interface.h"
+#include "gnss_sdr_make_unique.h"
#include "gnss_synchro.h"
#include "gnss_time.h"
+#include "osnma_data.h"
#include "rtklib.h"
#include
#include
+#include
#include // for sync_block
#include // for gr_vector_const_void_star
#include // for pmt_t
@@ -34,8 +37,8 @@
#include