LF_CONFIGURE_CXX
GR_LIB64 dnl check for lib64 suffix after choosing compilers
+cxx_warnings_as_errors=""
+AC_ARG_ENABLE(
+ [warnings-as-errors],
+ [--enable-warnings-as-errors Treat compiler warnings as errors],
+ [cxx_warnings_as_errors="-Werror"]
+)
+
dnl The three macros above are known to override CXXFLAGS if the user
dnl didn't specify them. Though I'm sure somebody thought this was
dnl a good idea, it makes it hard to use other than -g -O2 when compiling
dnl See Makefile.common for the rest of the magic.
if test "$user_set_cxxflags" != yes; then
autoconf_default_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS=""
+ CXXFLAGS=$cxx_warnings_as_errors
if test "$GXX" = yes; then
case "$host_cpu" in
powerpc*)
dnl "-O1" is broken on the PPC for some reason
dnl (at least as of g++ 4.1.1)
- swig_CXXFLAGS="-g1 -O2"
+ swig_CXXFLAGS="-g1 -O2 -fno-strict-aliasing"
;;
*)
- swig_CXXFLAGS="-g -O1"
+ swig_CXXFLAGS="-g -O1 -fno-strict-aliasing"
;;
esac
fi
dnl Component specific configuration
dnl The order of the GR_ macros determines the order of compilation
dnl For -any- checks on $enable_all_components
-dnl use the following guildlines:
+dnl use the following guidelines:
dnl yes : --enable-all-components was specified, so error out if any
dnl components do not pass configuration checks.
dnl no : --disable-all-components was specified, so try to build the
// if libgrio has no sources, it doesn't get built correctly
-static int gr_bug_work_around_6;
+static int gr_bug_work_around_6 __attribute__((unused));
#include <gr_adaptive_fir_ccf.h>
#include <gr_io_signature.h>
-gr_adaptive_fir_ccf::gr_adaptive_fir_ccf(char *name, int decimation, const std::vector<float> &taps)
+gr_adaptive_fir_ccf::gr_adaptive_fir_ccf(const char *name, int decimation, const std::vector<float> &taps)
: gr_sync_decimator (name,
gr_make_io_signature (1, 1, sizeof(gr_complex)),
gr_make_io_signature (1, 1, sizeof(gr_complex)),
virtual void update_tap(float &tap, const gr_complex &in) = 0;
public:
- gr_adaptive_fir_ccf(char *name, int decimation, const std::vector<float> &taps);
+ gr_adaptive_fir_ccf(const char *name, int decimation, const std::vector<float> &taps);
void set_taps(const std::vector<float> &taps);
int work(int noutput_items,
delete d_invfft;
}
+#if 0
static void
print_vector_complex(const std::string label, const std::vector<gr_complex> &x)
{
std::cout << x[i] << " ";
std::cout << "\n";
}
+#endif
void
gr_fft_filter_ccc::set_taps (const std::vector<gr_complex> &taps)
delete d_invfft;
}
+#if 0
static void
print_vector_complex(const std::string label, const std::vector<gr_complex> &x)
{
std::cout << x[i] << " ";
std::cout << "\n";
}
+#endif
void
gr_fft_filter_fff::set_taps (const std::vector<float> &taps)
gr_make_io_signature (1, 1, sizeof (gr_complex))),
d_mu (mu)
{
- float d_wi=0.0, d_wq=0.0;
+ d_wi=0.0;
+ d_wq=0.0;
}
int
gr_vector_void_star &output_items)
{
const gr_complex *iptr = (gr_complex *) input_items[0];
- gr_complex *optr = (gr_complex *) output_items[0];
+ // gr_complex *optr = (gr_complex *) output_items[0];
for(int i = 0 ; i < noutput_items ; i++) {
float i_out = iptr[i].real() - iptr[i].imag() * d_wq;
d_constellation_map[15] = gr_complex(3, 3);
coeff = sqrt(31.0)/2.0;
- for(i = 0; i < d_constellation_map.size(); i++) {
+ for(i = 0; i < static_cast<int>(d_constellation_map.size()); i++) {
d_constellation_map[i] /= coeff;
printf("const[%d]: %f + j%f\n", i, d_constellation_map[i].real(), d_constellation_map[i].imag());
}
}
+#if 0
static float
randombit()
{
int r = rand()&1;
return (float)(-1 + 2*r);
}
+#endif
int
gr_ofdm_qam_mapper::work(int noutput_items,
if(VERBOSE) {
printf("mux: nouput_items: %d d_stream: %d\n", noutput_items, d_stream);
for(size_t i = 0; i < d_lengths.size(); i++)
- printf("\tninput_items[%d]: %d\n", i, ninput_items[i]);
+ printf("\tninput_items[%zu]: %d\n", i, ninput_items[i]);
}
while (1) {
static char *
wisdom_filename ()
{
- static char *filename = ".gr_fftw_wisdom";
+ static const char *filename = ".gr_fftw_wisdom";
char *home = getenv ("HOME");
if (home){
using std::vector;
+#if 0
static void
print_taps (std::ostream &s, vector<float> &v)
{
printf ("tap[%2d] = %16.7e\n", i, v[i]);
}
}
+#endif
static void
check_symmetry (vector<float> &v)
// if libmisc has no sources, it doesn't get built correctly
-static int gr_bug_work_around_8;
+static int gr_bug_work_around_8 __attribute__((unused));
// We are tasked with producing output.size output samples.
// We will consume approximately 2 * output.size input samples.
- unsigned int k; // output index
+ int k; // output index
float interp_sample;
int symbol_index;
const atsc_mpeg_packet *in = (const atsc_mpeg_packet *) input_items[0];
unsigned char *out = (unsigned char *) output_items[0];
- unsigned int i;
+ int i;
for (i = 0; i < noutput_items/ATSC_MPEG_PKT_LENGTH; i++){
memcpy(&out[i * ATSC_MPEG_PKT_LENGTH], in[i].data, ATSC_MPEG_PKT_LENGTH);
gr_make_io_signature(2, 2, sizeof(float)),
gr_make_io_signature(1, 1, sizeof(atsc_soft_data_segment))),
d_locked(false), d_in_field2(true), d_segment_number(0),
- d_next_input(0), d_lost_index(0), d_inputs0_size(0),
- d_inputs0_index(0), d_consume(0)
+ d_next_input(0), d_lost_index(0), d_inputs0_index(0),
+ d_inputs0_size(0), d_consume(0)
{
reset();
}
assert(sizeof(float) == sizeof(atsc::syminfo));
- int ii = 0; // input index
+ unsigned int ii = 0; // input index
// Are we in sync?
if (!tag_is_seg_sync_or_field_sync (input_tags[0])){ // No ...
while (k < noutput_items){
- if (d_inputs0_size - ii < ATSC_DATA_SEGMENT_LENGTH){
+ if (d_inputs0_size - ii < static_cast<unsigned int>(ATSC_DATA_SEGMENT_LENGTH)){
// We're out of input data.
cerr << "atsc_field_sync_demux: ran out of input data\n";
d_next_input += ii; // update for forecast
atsc_data_segment *out = (atsc_data_segment *) output_items[0];
unsigned int index = 0;
- for (unsigned int outdex = 0; outdex < noutput_items; outdex++){
+ for (int outdex = 0; outdex < noutput_items; outdex++){
assert (in[index].pli.regular_seg_p ());
{
const unsigned char *in = (const unsigned char *) input_items[0];
atsc_mpeg_packet *out = (atsc_mpeg_packet *) output_items[0];
-
- // size with padding (256)
- unsigned int ATSC_MPEG_PKT = sizeof(atsc_mpeg_packet);
- unsigned int i;
+
+ int i;
for (i = 0; i < noutput_items; i++){
for (int j = 0; j < ATSC_MPEG_PKT_LENGTH; j++)
// the length of the field sync pattern that we know unequivocally
static const int KNOWN_FIELD_SYNC_LENGTH = 4 + 511 + 3 * 63;
-static const float *get_data_seg_sync_training_sequence (int offset);
+// static const float *get_data_seg_sync_training_sequence (int offset);
static int get_field_sync_training_sequence_length (int offset);
static const float *get_field_sync_training_sequence (int which_field, int offset);
assert (i == KNOWN_FIELD_SYNC_LENGTH);
}
-
+#if 0
static const float *
get_data_seg_sync_training_sequence (int offset)
{
static const float training_data[4] = { +5, -5, -5, +5 };
return &training_data[offset];
}
+#endif
static int
get_field_sync_training_sequence_length (int offset)
// the length of the field sync pattern that we know unequivocally
static const int KNOWN_FIELD_SYNC_LENGTH = 4 + 511 + 3 * 63;
-static const float *get_data_seg_sync_training_sequence (int offset);
+// static const float *get_data_seg_sync_training_sequence (int offset);
static int get_field_sync_training_sequence_length (int offset);
static const float *get_field_sync_training_sequence (int which_field, int offset);
assert (i == KNOWN_FIELD_SYNC_LENGTH);
}
-
+#if 0
static const float *
get_data_seg_sync_training_sequence (int offset)
{
static const float training_data[4] = { +5, -5, -5, +5 };
return &training_data[offset];
}
+#endif
static int
get_field_sync_training_sequence_length (int offset)
libgr_audio_alsa_la_LDFLAGS = $(NO_UNDEFINED)
+_audio_alsa_la_CXXFLAGS = @swig_CXXFLAGS@
+
audio_alsa.cc audio_alsa.py: $(LOCAL_IFILES) $(NON_LOCAL_IFILES)
$(SWIG) $(SWIGPYTHONARGS) -module audio_alsa -o audio_alsa.cc $(LOCAL_IFILES)
// Specify the access methods we implement
// For now, we only handle RW_INTERLEAVED...
snd_pcm_access_mask_t *access_mask;
- snd_pcm_access_mask_alloca (&access_mask);
+ snd_pcm_access_mask_t **access_mask_ptr = &access_mask; // FIXME: workaround for compiler warning
+ snd_pcm_access_mask_alloca (access_mask_ptr);
snd_pcm_access_mask_none (access_mask);
snd_pcm_access_mask_set (access_mask, SND_PCM_ACCESS_RW_INTERLEAVED);
// snd_pcm_access_mask_set (access_mask, SND_PCM_ACCESS_RW_NONINTERLEAVED);
// Specify the access methods we implement
// For now, we only handle RW_INTERLEAVED...
snd_pcm_access_mask_t *access_mask;
- snd_pcm_access_mask_alloca (&access_mask);
+ snd_pcm_access_mask_t **access_mask_ptr = &access_mask; // FIXME: workaround for compiler warning
+ snd_pcm_access_mask_alloca (access_mask_ptr);
snd_pcm_access_mask_none (access_mask);
snd_pcm_access_mask_set (access_mask, SND_PCM_ACCESS_RW_INTERLEAVED);
// snd_pcm_access_mask_set (access_mask, SND_PCM_ACCESS_RW_NONINTERLEAVED);
_audio_jack_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_audio_jack_la_CXXFLAGS = @swig_CXXFLAGS@
+
audio_jack.cc audio_jack.py: $(LOCAL_IFILES) $(NON_LOCAL_IFILES)
$(SWIG) $(SWIGPYTHONARGS) -module audio_jack -o audio_jack.cc $(LOCAL_IFILES)
_audio_oss_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_audio_oss_la_CXXFLAGS = @swig_CXXFLAGS@
+
audio_oss.cc audio_oss.py: $(LOCAL_IFILES) $(NON_LOCAL_IFILES)
$(SWIG) $(SWIGPYTHONARGS) -module audio_oss -o audio_oss.cc $(LOCAL_IFILES)
_audio_osx_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version -framework AudioUnit -framework CoreAudio -framework AudioToolbox
+_audio_osx_la_CXXFLAGS = @swig_CXXFLAGS@
+
audio_osx.cc audio_osx.py: $(ALL_IFILES)
$(SWIG) $(SWIGCPPPYTHONARGS) -module audio_osx -o audio_osx.cc $(LOCAL_IFILES)
_audio_portaudio_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_audio_portaudio_la_CXXFLAGS = @swig_CXXFLAGS@
+
audio_portaudio.cc audio_portaudio.py: $(ALL_IFILES) audio_portaudio_sink.h audio_portaudio_source.h
$(SWIG) $(SWIGPYTHONARGS) -module audio_portaudio -o audio_portaudio.cc $(LOCAL_IFILES)
_audio_windows_la_LDFLAGS = -no-undefined -module -avoid-version \
$(LIBGNURADIO_CORE_EXTRA_LDFLAGS)
+_audio_windows_la_CXXFLAGS = @swig_CXXFLAGS@
+
audio_windows.cc audio_windows.py: $(LOCAL_IFILES)
$(SWIG) $(SWIGCPPPYTHONARGS) -module audio_windows -o audio_windows.cc $(LOCAL_IFILES)
_comedi_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_comedi_la_CXXFLAGS = @swig_CXXFLAGS@
+
comedi.cc comedi.py: $(LOCAL_IFILES)
$(SWIG) $(SWIGCPPPYTHONARGS) -module comedi -o comedi.cc $(LOCAL_IFILES)
$(GNURADIO_CORE_LA) \
-lstdc++
+_cvsd_vocoder_la_CXXFLAGS = @swig_CXXFLAGS@
+
cvsd_vocoder.cc cvsd_vocoder.py: cvsd_vocoder.i $(ALL_IFILES)
$(SWIG) $(SWIGPYTHONARGS) -module cvsd_vocoder -o cvsd_vocoder.cc $(LOCAL_IFILES)
d_stepsize(min_step)
{
- assert(d_pos_accum_max <= SHRT_MAX);
- assert(d_neg_accum_max >= -SHRT_MAX);
assert(d_K <= 32);
assert(d_J <= d_K);
-
- // nothing else required in this example
}
d_stepsize(min_step)
{
- assert(d_pos_accum_max <= SHRT_MAX);
- assert(d_neg_accum_max >= -SHRT_MAX);
assert(d_K <= 32);
assert(d_J <= d_K);
-
- // nothing else required in this example
}
_gcell_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_gcell_la_CXXFLAGS = @swig_CXXFLAGS@
swiginclude_HEADERS = \
$(LOCAL_IFILES)
$(GNURADIO_CORE_LA) \
-lstdc++
+_trellis_la_CXXFLAGS = @swig_CXXFLAGS@
+
trellis.cc trellis.py: $(ALL_IFILES) $(grinclude_HEADERS)
$(SWIG) $(SWIGPYTHONARGS) -module trellis -o trellis.cc $(LOCAL_IFILES)
_usrp1_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_usrp1_la_CXXFLAGS = @swig_CXXFLAGS@
usrp1.cc usrp1.py: usrp1.i $(NON_LOCAL_IFILES) $(LOCAL_IFILES)
$(SWIG) $(SWIGPYTHONARGS) -module usrp1 -o usrp1.cc $(LOCAL_IFILES)
exit (1);
}
+#if 0
static void
die (const char *msg)
{
fprintf (stderr, "%s (die): %s\n", prog_name, msg);
exit (1);
}
+#endif
static int
hexval (char ch)
* Boston, MA 02110-1301, USA.
*/
-static char *std_paths[] = {
+static const char *std_paths[] = {
"@prefix@/share/usrp",
"/usr/local/share/usrp",
0
USRP_HASH_SLOT_1_ADDR
};
-static char *default_firmware_filename = "std.ihx";
-static char *default_fpga_filename = "std_2rxhb_2tx.rbf";
+static const char *default_firmware_filename = "std.ihx";
+static const char *default_fpga_filename = "std_2rxhb_2tx.rbf";
#include "std_paths.h"
#include <stdio.h>
static char *
find_file (const char *filename, int hw_rev)
{
- char **sp = std_paths;
+ const char **sp = std_paths;
static char path[1000];
char *s;
_usrp_prims_la_LIBADD = $(USRP_LA) -lstdc++ $(PYTHON_LDFLAGS)
_usrp_prims_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
+_usrp_prims_la_CXXFLAGS = @swig_CXXFLAGS@
prims.cc usrp_prims.py : prims.i ../../firmware/include/fpga_regs_common.h ../../firmware/include/fpga_regs_standard.h
$(SWIG) $(SWIGPYTHONARGS) -module usrp_prims -o prims.cc prims.i