summaryrefslogtreecommitdiff
path: root/gnuradio-core/src
diff options
context:
space:
mode:
authorjcorgan2009-07-11 02:34:31 +0000
committerjcorgan2009-07-11 02:34:31 +0000
commit3b0db38361d6ff50d62d814e72eb1fdd0e5d762d (patch)
tree983040f540446c50eb68367d3bb576600ee8fc89 /gnuradio-core/src
parent214874a64800ccf0ed74646a3ea6812856e12673 (diff)
downloadgnuradio-3b0db38361d6ff50d62d814e72eb1fdd0e5d762d.tar.gz
gnuradio-3b0db38361d6ff50d62d814e72eb1fdd0e5d762d.tar.bz2
gnuradio-3b0db38361d6ff50d62d814e72eb1fdd0e5d762d.zip
Implements ticket:401 and ticket:402.
Adds several API functions to determine build constants at runtime, and a convenience command line program to display them: From C++: const std::string gr_prefix(); const std::string gr_sysconfdir(); const std::string gr_prefsdir(); const std::string gr_build_date(); const std::string gr_svn_date(); const std::string gr_svn_version(); const std::string gr_version(); From Python: gr.prefix() gr.sysconfdir() gr.prefsdir() gr.build_date() gr.svn_date() gr.svn_version() gr.version() The new binary is 'gnuradio' and installed on the path: $ gnuradio Program options: gnuradio [options]: -h [ --help ] print help message --prefix print gnuradio installation prefix --sysconfdir print gnuradio system configuration directory --prefsdir print gnuradio preferences directory --builddate print gnuradio build date (RFC2822 format) -v [ --version ] print gnuradio version --svnversion print SVN repository version (SVN format) --svndate print SVN repository date $ git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@11418 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gnuradio-core/src')
-rw-r--r--gnuradio-core/src/lib/Makefile.am6
-rw-r--r--gnuradio-core/src/lib/general/Makefile.am8
-rw-r--r--gnuradio-core/src/lib/general/general.i4
-rw-r--r--gnuradio-core/src/lib/general/gr_constants.cc.in (renamed from gnuradio-core/src/lib/general/gr_prefix.cc.in)44
-rw-r--r--gnuradio-core/src/lib/general/gr_constants.h (renamed from gnuradio-core/src/lib/general/gr_prefix.h)37
-rw-r--r--gnuradio-core/src/lib/general/gr_constants.i17
-rw-r--r--gnuradio-core/src/lib/general/gr_prefix.i5
-rw-r--r--gnuradio-core/src/lib/gnuradio.cc80
-rw-r--r--gnuradio-core/src/python/gnuradio/gr/prefs.py2
9 files changed, 185 insertions, 18 deletions
diff --git a/gnuradio-core/src/lib/Makefile.am b/gnuradio-core/src/lib/Makefile.am
index ef2b17f5a..8b2dc82cc 100644
--- a/gnuradio-core/src/lib/Makefile.am
+++ b/gnuradio-core/src/lib/Makefile.am
@@ -29,6 +29,8 @@ if PYTHON
SUBDIRS += swig
endif
+AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
+
# generate libgnuradio-core.la from the convenience libraries in subdirs
lib_LTLIBRARIES = libgnuradio-core.la libgnuradio-core-qa.la
@@ -64,3 +66,7 @@ libgnuradio_core_qa_la_LIBADD = \
runtime/libruntime-qa.la \
libgnuradio-core.la \
$(CPPUNIT_LIBS)
+
+bin_PROGRAMS = gnuradio
+gnuradio_SOURCES = gnuradio.cc
+gnuradio_LDADD = libgnuradio-core.la $(BOOST_PROGRAM_OPTIONS_LIB)
diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am
index 5564ee3d4..9b070b865 100644
--- a/gnuradio-core/src/lib/general/Makefile.am
+++ b/gnuradio-core/src/lib/general/Makefile.am
@@ -31,7 +31,7 @@ BUILT_SOURCES =
EXTRA_DIST = \
gen_sine_table.py \
- gr_prefix.cc.in
+ gr_constants.cc.in
libgeneral_la_SOURCES = \
gr_agc_cc.cc \
@@ -117,7 +117,7 @@ libgeneral_la_SOURCES = \
gr_pll_freqdet_cf.cc \
gr_pll_refout_cc.cc \
gr_pn_correlator_cc.cc \
- gr_prefix.cc \
+ gr_constants.cc \
gr_prefs.cc \
gr_probe_avg_mag_sqrd_c.cc \
gr_probe_avg_mag_sqrd_cf.cc \
@@ -273,7 +273,7 @@ grinclude_HEADERS = \
gr_pll_freqdet_cf.h \
gr_pll_refout_cc.h \
gr_pn_correlator_cc.h \
- gr_prefix.h \
+ gr_constants.h \
gr_prefs.h \
gr_probe_avg_mag_sqrd_c.h \
gr_probe_avg_mag_sqrd_cf.h \
@@ -432,7 +432,7 @@ swiginclude_HEADERS = \
gr_pll_freqdet_cf.i \
gr_pll_refout_cc.i \
gr_pn_correlator_cc.i \
- gr_prefix.i \
+ gr_constants.i \
gr_prefs.i \
gr_probe_avg_mag_sqrd_c.i \
gr_probe_avg_mag_sqrd_cf.i \
diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i
index 0cb54870e..0684e63a5 100644
--- a/gnuradio-core/src/lib/general/general.i
+++ b/gnuradio-core/src/lib/general/general.i
@@ -105,7 +105,7 @@
#include <gr_pa_2x2_phase_combiner.h>
#include <gr_kludge_copy.h>
#include <gr_prefs.h>
-#include <gr_prefix.h>
+#include <gr_constants.h>
#include <gr_test_types.h>
#include <gr_test.h>
#include <gr_unpack_k_bits_bb.h>
@@ -225,7 +225,7 @@
%include "gr_pa_2x2_phase_combiner.i"
%include "gr_kludge_copy.i"
%include "gr_prefs.i"
-%include "gr_prefix.i"
+%include "gr_constants.i"
%include "gr_test_types.h"
%include "gr_test.i"
%include "gr_unpack_k_bits_bb.i"
diff --git a/gnuradio-core/src/lib/general/gr_prefix.cc.in b/gnuradio-core/src/lib/general/gr_constants.cc.in
index f03043ce1..efb0f1c77 100644
--- a/gnuradio-core/src/lib/general/gr_prefix.cc.in
+++ b/gnuradio-core/src/lib/general/gr_constants.cc.in
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2009 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -20,10 +20,50 @@
* Boston, MA 02110-1301, USA.
*/
-#include <gr_prefix.h>
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gr_constants.h>
const std::string
gr_prefix()
{
return "@prefix@";
}
+
+const std::string
+gr_sysconfdir()
+{
+ return "@SYSCONFDIR@";
+}
+
+const std::string
+gr_prefsdir()
+{
+ return "@GR_PREFSDIR@";
+}
+
+const std::string
+gr_build_date()
+{
+ return "@BUILD_DATE@";
+}
+
+const std::string
+gr_svn_date()
+{
+ return "@SVNDATE@";
+}
+
+const std::string
+gr_svn_version()
+{
+ return "@SVNVERSION@";
+}
+
+const std::string
+gr_version()
+{
+ return "@VERSION@";
+}
diff --git a/gnuradio-core/src/lib/general/gr_prefix.h b/gnuradio-core/src/lib/general/gr_constants.h
index 0a107b98c..e44890be0 100644
--- a/gnuradio-core/src/lib/general/gr_prefix.h
+++ b/gnuradio-core/src/lib/general/gr_constants.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2009 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -19,8 +19,8 @@
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_GR_PREFIX_H
-#define INCLUDED_GR_PREFIX_H
+#ifndef INCLUDED_GR_CONSTANTS_H
+#define INCLUDED_GR_CONSTANTS_H
#include <string>
@@ -29,5 +29,34 @@
*/
const std::string gr_prefix();
+/*!
+ * \brief return ./configure --sysconfdir argument. Typically $prefix/etc or /etc
+ */
+const std::string gr_sysconfdir();
+
+/*!
+ * \brief return preferences file directory. Typically $sysconfdir/etc/conf.d
+ */
+const std::string gr_prefsdir();
+
+/*!
+ * \brief return date/time of build, as set when 'bootstrap' is run
+ */
+const std::string gr_build_date();
+
+/*!
+ * \brief return repository date as set when 'bootstrap' is run
+ */
+const std::string gr_svn_date();
+
+/*!
+ * \brief return repository version as set when 'bootstrap' is run
+ */
+const std::string gr_svn_version();
+
+/*!
+ * \brief return version string defined in configure.ac
+ */
+const std::string gr_version();
-#endif /* INCLUDED_GR_PREFIX_H */
+#endif /* INCLUDED_GR_CONSTANTS_H */
diff --git a/gnuradio-core/src/lib/general/gr_constants.i b/gnuradio-core/src/lib/general/gr_constants.i
new file mode 100644
index 000000000..156af4a36
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_constants.i
@@ -0,0 +1,17 @@
+/* -*- c++ -*- */
+
+%rename(prefix) gr_prefix;
+%rename(sysconfdir) gr_sysconfdir;
+%rename(prefsdir) gr_prefsdir;
+%rename(build_date) gr_build_date;
+%rename(svn_date) gr_svn_date;
+%rename(svn_version) gr_svn_version;
+%rename(version) gr_version;
+
+const std::string gr_prefix();
+const std::string gr_sysconfdir();
+const std::string gr_prefsdir();
+const std::string gr_build_date();
+const std::string gr_svn_date();
+const std::string gr_svn_version();
+const std::string gr_version();
diff --git a/gnuradio-core/src/lib/general/gr_prefix.i b/gnuradio-core/src/lib/general/gr_prefix.i
deleted file mode 100644
index 04e1899a6..000000000
--- a/gnuradio-core/src/lib/general/gr_prefix.i
+++ /dev/null
@@ -1,5 +0,0 @@
-/* -*- c++ -*- */
-
-%rename(prefix) gr_prefix;
-
-const std::string gr_prefix();
diff --git a/gnuradio-core/src/lib/gnuradio.cc b/gnuradio-core/src/lib/gnuradio.cc
new file mode 100644
index 000000000..df78ea2dd
--- /dev/null
+++ b/gnuradio-core/src/lib/gnuradio.cc
@@ -0,0 +1,80 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gr_constants.h>
+#include <boost/program_options.hpp>
+#include <iostream>
+
+namespace po = boost::program_options;
+
+int
+main(int argc, char **argv)
+{
+ po::options_description desc("Program options: gnuradio [options]");
+ po::variables_map vm;
+
+ desc.add_options()
+ ("help,h", "print help message")
+ ("prefix", "print gnuradio installation prefix")
+ ("sysconfdir", "print gnuradio system configuration directory")
+ ("prefsdir", "print gnuradio preferences directory")
+ ("builddate", "print gnuradio build date (RFC2822 format)")
+ ("version,v", "print gnuradio version")
+ ("svnversion", "print SVN repository version (SVN format)")
+ ("svndate", "print SVN repository date")
+ ;
+
+ po::store(po::parse_command_line(argc, argv, desc), vm);
+ po::notify(vm);
+
+ if (vm.size() == 0 || vm.count("help")) {
+ std::cout << desc << std::endl;
+ return 1;
+ }
+
+ if (vm.count("prefix"))
+ std::cout << gr_prefix() << std::endl;
+
+ if (vm.count("sysconfdir"))
+ std::cout << gr_sysconfdir() << std::endl;
+
+ if (vm.count("prefsdir"))
+ std::cout << gr_prefsdir() << std::endl;
+
+ if (vm.count("builddate"))
+ std::cout << gr_build_date() << std::endl;
+
+ if (vm.count("version"))
+ std::cout << gr_version() << std::endl;
+
+ if (vm.count("svnversion"))
+ std::cout << gr_svn_version() << std::endl;
+
+ if (vm.count("svndate"))
+ std::cout << gr_svn_date() << std::endl;
+
+ return 0;
+}
diff --git a/gnuradio-core/src/python/gnuradio/gr/prefs.py b/gnuradio-core/src/python/gnuradio/gr/prefs.py
index 52f1ff64a..9b31b772b 100644
--- a/gnuradio-core/src/python/gnuradio/gr/prefs.py
+++ b/gnuradio-core/src/python/gnuradio/gr/prefs.py
@@ -33,7 +33,7 @@ def _user_prefs_filename():
return os.path.expanduser('~/.gnuradio/config.conf')
def _sys_prefs_dirname():
- return os.path.join(gsp.prefix(), 'etc/gnuradio/conf.d')
+ return gsp.prefsdir()
def _bool(x):
"""