aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac18
-rw-r--r--m4/ax_boost_asio.m4110
-rw-r--r--m4/ax_boost_thread.m4163
-rw-r--r--src/DabModulator.cpp10
4 files changed, 130 insertions, 171 deletions
diff --git a/configure.ac b/configure.ac
index 1588809..1d5cf4e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -55,6 +55,9 @@ AC_ARG_ENABLE([edi],
AC_ARG_ENABLE([native],
[AS_HELP_STRING([--disable-native], [Do not compile with -march=native])],
[], [enable_native=yes])
+AC_ARG_ENABLE([easydabv3],
+ [AS_HELP_STRING([--enable-easydabv3], [Build for EasyDABv3 board])],
+ [], [enable_easydabv3=no])
# UHD support control
AC_ARG_ENABLE([output_uhd],
@@ -120,9 +123,14 @@ AS_IF([test "x$enable_edi" = "xyes"],
AM_CONDITIONAL([COMPILE_EDI], [test "x$enable_edi" = "xyes"])
-AX_BOOST_BASE([1.54.0], [], AC_MSG_ERROR([BOOST 1.54 or later is required]))
-AX_BOOST_SYSTEM
-AX_BOOST_THREAD
+AS_IF([test "x$enable_easydabv3" = "xno"],
+ [ AX_BOOST_BASE([1.54.0], [], AC_MSG_ERROR([BOOST 1.54 or later is required]))
+ AX_BOOST_SYSTEM
+ AX_BOOST_ASIO ])
+
+AC_DEFINE(HAVE_BOOST, [test "x$enable_easydabv3" = "xno"], [Define if boost is available])
+AC_DEFINE(BUILD_FOR_EASYDABV3, [test "x$enable_easydabv3" = "xyes"], [Define if we are building for EasyDABv3])
+
# Checks for header files.
AC_HEADER_STDC
@@ -165,8 +173,6 @@ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[
AC_DEFINE(HAVE_SO_NOSIGPIPE, 1, [Define this symbol if you have SO_NOSIGPIPE]) ],
[ AC_MSG_RESULT(no) ])
-AC_DEFINE(HAVE_BOOST, [1], [Define if boost is available])
-
# Check for march
AS_IF([test "x$enable_native" = "xyes"],
[AC_MSG_CHECKING(if we can add -march=native to CFLAGS)
@@ -192,7 +198,7 @@ echo "***********************************************"
echo
enabled=""
disabled=""
-for feat in edi prof trace output_uhd zeromq soapysdr
+for feat in edi prof trace output_uhd zeromq soapysdr easydabv3
do
eval var=\$enable_$feat
AS_IF([test "x$var" = "xyes"],
diff --git a/m4/ax_boost_asio.m4 b/m4/ax_boost_asio.m4
new file mode 100644
index 0000000..a72c1e1
--- /dev/null
+++ b/m4/ax_boost_asio.m4
@@ -0,0 +1,110 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_asio.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_ASIO
+#
+# DESCRIPTION
+#
+# Test for Asio library from the Boost C++ libraries. The macro requires a
+# preceding call to AX_BOOST_BASE. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_ASIO_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_ASIO
+#
+# LICENSE
+#
+# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+# Copyright (c) 2008 Pete Greenwell <pete@mu.org>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 17
+
+AC_DEFUN([AX_BOOST_ASIO],
+[
+ AC_ARG_WITH([boost-asio],
+ AS_HELP_STRING([--with-boost-asio@<:@=special-lib@:>@],
+ [use the ASIO library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-asio=boost_system-gcc41-mt-1_34 ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_asio_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_asio_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::ASIO library is available,
+ ax_cv_boost_asio,
+ [AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @%:@include <boost/asio.hpp>
+ ]],
+ [[
+
+ boost::asio::io_service io;
+ boost::system::error_code timer_result;
+ boost::asio::deadline_timer t(io);
+ t.cancel();
+ io.run_one();
+ return 0;
+ ]])],
+ ax_cv_boost_asio=yes, ax_cv_boost_asio=no)
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_asio" = "xyes"; then
+ AC_DEFINE(HAVE_BOOST_ASIO,,[define if the Boost::ASIO library is available])
+ BN=boost_system
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+ if test "x$ax_boost_user_asio_lib" = "x"; then
+ for ax_lib in `ls $BOOSTLIBDIR/libboost_system*.so* $BOOSTLIBDIR/libboost_system*.dylib* $BOOSTLIBDIR/libboost_system*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_system.*\)\.so.*$;\1;' -e 's;^lib\(boost_system.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_system.*\)\.a.*$;\1;' ` ; do
+ AC_CHECK_LIB($ax_lib, main, [BOOST_ASIO_LIB="-l$ax_lib" AC_SUBST(BOOST_ASIO_LIB) link_thread="yes" break],
+ [link_thread="no"])
+ done
+ else
+ for ax_lib in $ax_boost_user_asio_lib $BN-$ax_boost_user_asio_lib; do
+ AC_CHECK_LIB($ax_lib, main,
+ [BOOST_ASIO_LIB="-l$ax_lib" AC_SUBST(BOOST_ASIO_LIB) link_asio="yes" break],
+ [link_asio="no"])
+ done
+
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the library!)
+ fi
+ if test "x$link_asio" = "xno"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
diff --git a/m4/ax_boost_thread.m4 b/m4/ax_boost_thread.m4
deleted file mode 100644
index 87f03e3..0000000
--- a/m4/ax_boost_thread.m4
+++ /dev/null
@@ -1,163 +0,0 @@
-# ===========================================================================
-# https://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_BOOST_THREAD
-#
-# DESCRIPTION
-#
-# Test for Thread library from the Boost C++ libraries. The macro requires
-# a preceding call to AX_BOOST_BASE. Further documentation is available at
-# <http://randspringer.de/boost/index.html>.
-#
-# This macro calls:
-#
-# AC_SUBST(BOOST_THREAD_LIB)
-#
-# And sets:
-#
-# HAVE_BOOST_THREAD
-#
-# LICENSE
-#
-# Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
-# Copyright (c) 2009 Michael Tindal
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved. This file is offered as-is, without any
-# warranty.
-
-#serial 30
-
-AC_DEFUN([AX_BOOST_THREAD],
-[
- AC_ARG_WITH([boost-thread],
- AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
- [use the Thread library from boost -
- it is possible to specify a certain library for the linker
- e.g. --with-boost-thread=boost_thread-gcc-mt ]),
- [
- if test "$withval" = "yes"; then
- want_boost="yes"
- ax_boost_user_thread_lib=""
- else
- want_boost="yes"
- ax_boost_user_thread_lib="$withval"
- fi
- ],
- [want_boost="yes"]
- )
-
- if test "x$want_boost" = "xyes"; then
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_CANONICAL_BUILD])
- CPPFLAGS_SAVED="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
- export CPPFLAGS
-
- LDFLAGS_SAVED="$LDFLAGS"
- LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
- export LDFLAGS
-
- AC_CACHE_CHECK(whether the Boost::Thread library is available,
- ax_cv_boost_thread,
- [AC_LANG_PUSH([C++])
- CXXFLAGS_SAVE=$CXXFLAGS
-
- if test "x$host_os" = "xsolaris" ; then
- CXXFLAGS="-pthreads $CXXFLAGS"
- elif test "x$host_os" = "xmingw32" ; then
- CXXFLAGS="-mthreads $CXXFLAGS"
- else
- CXXFLAGS="-pthread $CXXFLAGS"
- fi
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM(
- [[@%:@include <boost/thread/thread.hpp>]],
- [[boost::thread_group thrds;
- return 0;]])],
- ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
- CXXFLAGS=$CXXFLAGS_SAVE
- AC_LANG_POP([C++])
- ])
- if test "x$ax_cv_boost_thread" = "xyes"; then
- if test "x$host_os" = "xsolaris" ; then
- BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
- elif test "x$host_os" = "xmingw32" ; then
- BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
- else
- BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
- fi
-
- AC_SUBST(BOOST_CPPFLAGS)
-
- AC_DEFINE(HAVE_BOOST_THREAD,,
- [define if the Boost::Thread library is available])
- BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
-
- LDFLAGS_SAVE=$LDFLAGS
- case "x$host_os" in
- *bsd* )
- LDFLAGS="-pthread $LDFLAGS"
- break;
- ;;
- esac
- if test "x$ax_boost_user_thread_lib" = "x"; then
- for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
- ax_lib=${libextension}
- AC_CHECK_LIB($ax_lib, exit,
- [link_thread="yes"; break],
- [link_thread="no"])
- done
- if test "x$link_thread" != "xyes"; then
- for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do
- ax_lib=${libextension}
- AC_CHECK_LIB($ax_lib, exit,
- [link_thread="yes"; break],
- [link_thread="no"])
- done
- fi
-
- else
- for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
- AC_CHECK_LIB($ax_lib, exit,
- [link_thread="yes"; break],
- [link_thread="no"])
- done
-
- fi
- if test "x$ax_lib" = "x"; then
- AC_MSG_ERROR(Could not find a version of the library!)
- fi
- if test "x$link_thread" = "xno"; then
- AC_MSG_ERROR(Could not link against $ax_lib !)
- else
- BOOST_THREAD_LIB="-l$ax_lib"
- case "x$host_os" in
- *bsd* )
- BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
- break;
- ;;
- solaris )
- BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread"
- break;
- ;;
- mingw32 )
- break;
- ;;
- * )
- BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread"
- break;
- ;;
- esac
- AC_SUBST(BOOST_THREAD_LIB)
- fi
- fi
-
- CPPFLAGS="$CPPFLAGS_SAVED"
- LDFLAGS="$LDFLAGS_SAVED"
- fi
-])
diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp
index 64c78af..acc3d0c 100644
--- a/src/DabModulator.cpp
+++ b/src/DabModulator.cpp
@@ -132,6 +132,7 @@ int DabModulator::process(Buffer* dataOut)
auto cifMux = make_shared<FrameMultiplexer>(myEtiSource);
auto cifPart = make_shared<BlockPartitioner>(mode);
+#if !defined(BUILD_FOR_EASYDABV3)
auto cifMap = make_shared<QpskSymbolMapper>(myNbCarriers);
auto cifRef = make_shared<PhaseReference>(mode);
auto cifFreq = make_shared<FrequencyInterleaver>(mode);
@@ -215,8 +216,6 @@ int DabModulator::process(Buffer* dataOut)
rcs.enrol(cifPoly.get());
}
- myOutput = make_shared<OutputMemory>(dataOut);
-
shared_ptr<Resampler> cifRes;
if (m_settings.outputRate != 2048000) {
cifRes = make_shared<Resampler>(
@@ -224,6 +223,9 @@ int DabModulator::process(Buffer* dataOut)
m_settings.outputRate,
mySpacing);
}
+#endif
+
+ myOutput = make_shared<OutputMemory>(dataOut);
myFlowgraph->connect(cifPrbs, cifMux);
@@ -330,6 +332,9 @@ int DabModulator::process(Buffer* dataOut)
}
myFlowgraph->connect(cifMux, cifPart);
+#if defined(BUILD_FOR_EASYDABV3)
+ myFlowgraph->connect(cifPart, myOutput);
+#else
myFlowgraph->connect(cifPart, cifMap);
myFlowgraph->connect(cifMap, cifFreq);
myFlowgraph->connect(cifRef, cifDiff);
@@ -359,6 +364,7 @@ int DabModulator::process(Buffer* dataOut)
prev_plugin = p;
}
}
+#endif
}
////////////////////////////////////////////////////////////////////