2 # Copyright 2001,2002,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
4 # This file is part of GNU Radio
6 # GNU Radio is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3, or (at your option)
11 # GNU Radio is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Radio; see the file COPYING. If not, write to
18 # the Free Software Foundation, Inc., 51 Franklin Street,
19 # Boston, MA 02110-1301, USA.
22 include $(top_srcdir)/Makefile.common
25 # This directory contains mostly filter routines, plus a few
26 # other performance critical items
29 AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
31 noinst_LTLIBRARIES = libfilter.la libfilter-qa.la
33 # ----------------------------------------------------------------
34 # these scripts generate FIR code
39 generate_gr_fir_XXX.py \
40 generate_gr_fir_filter_XXX.py \
41 generate_gr_interp_fir_filter_XXX.py \
42 generate_gr_rational_resampler_base_XXX.py \
43 generate_gr_fir_sysconfig.py \
44 generate_gr_fir_sysconfig_generic.py \
45 generate_gr_fir_util.py \
46 generate_gr_freq_xlating_fir_filter_XXX.py \
47 generate_gri_fir_filter_with_buffer_XXX.py \
51 gr_fir_XXX_generic.cc.t \
52 gr_fir_XXX_generic.h.t \
53 gr_fir_filter_XXX.cc.t \
54 gr_fir_filter_XXX.h.t \
55 gr_fir_filter_XXX.i.t \
56 gr_interp_fir_filter_XXX.cc.t \
57 gr_interp_fir_filter_XXX.h.t \
58 gr_interp_fir_filter_XXX.i.t \
59 gr_rational_resampler_base_XXX.cc.t \
60 gr_rational_resampler_base_XXX.h.t \
61 gr_rational_resampler_base_XXX.i.t \
62 gr_freq_xlating_fir_filter_XXX.cc.t \
63 gr_freq_xlating_fir_filter_XXX.h.t \
64 gr_freq_xlating_fir_filter_XXX.i.t \
65 gri_fir_filter_with_buffer_XXX.cc.t \
66 gri_fir_filter_with_buffer_XXX.h.t
69 # Source built by Python into $(builddir)
76 # ----------------------------------------------------------------
77 # MD_CPU and MD_SUBCPU are set at configure time by way of
78 # gnuradio/config/gr_set_md_cpu.m4.
79 # It indicates which set of machine dependent code we should be building.
80 # We currently implement "generic" and "x86"
83 # <foo>_CODE entry for each set of machine specific speedups
94 gr_fir_sysconfig_x86.cc \
111 float_dotprod_sse.S \
112 float_dotprod_3dnow.S \
113 complex_dotprod_3dnowext.S \
114 complex_dotprod_3dnow.S \
115 complex_dotprod_sse.S \
116 ccomplex_dotprod_3dnowext.S \
117 ccomplex_dotprod_3dnow.S \
118 ccomplex_dotprod_sse.S \
119 fcomplex_dotprod_3dnow.S \
120 fcomplex_dotprod_sse.S \
121 short_dotprod_mmx.S \
125 float_dotprod_sse64.S \
126 float_dotprod_3dnow64.S \
127 complex_dotprod_3dnowext64.S \
128 complex_dotprod_3dnow64.S \
129 complex_dotprod_sse64.S \
130 ccomplex_dotprod_3dnowext64.S \
131 ccomplex_dotprod_3dnow64.S \
132 ccomplex_dotprod_sse64.S \
133 fcomplex_dotprod_3dnow64.S \
134 fcomplex_dotprod_sse64.S \
135 short_dotprod_mmx64.S \
140 qa_float_dotprod_x86.cc \
141 qa_complex_dotprod_x86.cc \
142 qa_ccomplex_dotprod_x86.cc
145 sysconfig_powerpc.cc \
146 gr_fir_sysconfig_powerpc.cc \
148 gr_fir_fff_altivec.cc \
150 dotprod_fff_altivec.c
153 qa_dotprod_powerpc.cc
156 sysconfig_armv7_a.cc \
157 gr_fir_sysconfig_armv7_a.cc \
159 gr_fir_fff_armv7_a.cc \
160 dotprod_fff_armv7_a.c
163 qa_dotprod_armv7_a.cc
166 # include each <foo>_CODE entry here...
168 EXTRA_libfilter_la_SOURCES = \
182 3dnow_float_dotprod_really_simple.S \
183 3dnow_float_dotprod_simple.S \
186 # work around automake deficiency
187 libfilter_la_common_SOURCES = \
189 gr_adaptive_fir_ccf.cc \
190 gr_cma_equalizer_cc.cc \
191 gri_fft_filter_fff_generic.cc \
192 gri_fft_filter_ccc_generic.cc \
193 gr_fft_filter_ccc.cc \
194 gr_fft_filter_fff.cc \
196 gr_filter_delay_fc.cc \
197 gr_fractional_interpolator_ff.cc \
198 gr_fractional_interpolator_cc.cc \
200 gr_iir_filter_ffd.cc \
202 gr_single_pole_iir_filter_ff.cc \
203 gr_single_pole_iir_filter_cc.cc \
205 gri_mmse_fir_interpolator.cc \
206 gri_mmse_fir_interpolator_cc.cc \
207 complex_dotprod_generic.cc \
208 ccomplex_dotprod_generic.cc \
209 float_dotprod_generic.c \
210 short_dotprod_generic.c \
211 gr_pfb_channelizer_ccf.cc \
212 gr_pfb_synthesis_filterbank_ccf.cc\
213 gr_pfb_decimator_ccf.cc \
214 gr_pfb_interpolator_ccf.cc \
215 gr_pfb_arb_resampler_ccf.cc \
216 gr_pfb_clock_sync_ccf.cc \
217 gr_pfb_clock_sync_fff.cc
219 libfilter_qa_la_common_SOURCES = \
227 qa_gri_mmse_fir_interpolator.cc \
228 qa_gri_mmse_fir_interpolator_cc.cc \
229 qa_gri_fir_filter_with_buffer_ccf.cc \
230 qa_gri_fir_filter_with_buffer_ccc.cc \
231 qa_gri_fir_filter_with_buffer_fcc.cc \
232 qa_gri_fir_filter_with_buffer_fff.cc \
233 qa_gri_fir_filter_with_buffer_fsf.cc \
234 qa_gri_fir_filter_with_buffer_scc.cc
237 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(generic_CODE)
238 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(generic_qa_CODE)
243 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(x86_64_SUBCODE) $(x86_CODE)
245 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(x86_SUBCODE) $(x86_CODE)
248 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(x86_qa_CODE)
252 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(powerpc_CODE)
253 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(powerpc_qa_CODE)
257 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(armv7_a_CODE)
258 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(armv7_a_qa_CODE)
262 grinclude_HEADERS = \
264 complex_dotprod_generic.h \
265 complex_dotprod_x86.h \
266 fcomplex_dotprod_x86.h \
267 ccomplex_dotprod_generic.h \
268 ccomplex_dotprod_x86.h \
269 float_dotprod_generic.h \
270 float_dotprod_x86.h \
271 gr_adaptive_fir_ccf.h \
273 gr_cma_equalizer_cc.h \
275 gri_fft_filter_fff_generic.h \
276 gri_fft_filter_ccc_generic.h \
277 gr_fft_filter_ccc.h \
278 gr_fft_filter_fff.h \
279 gr_filter_delay_fc.h \
280 gr_fir_sysconfig_x86.h \
281 gr_fir_sysconfig_powerpc.h \
282 gr_fractional_interpolator_ff.h \
283 gr_fractional_interpolator_cc.h \
286 gr_iir_filter_ffd.h \
289 gr_single_pole_iir.h \
290 gr_single_pole_iir_filter_ff.h \
291 gr_single_pole_iir_filter_cc.h \
295 gri_mmse_fir_interpolator.h \
296 gri_mmse_fir_interpolator_cc.h \
298 short_dotprod_generic.h \
299 short_dotprod_x86.h \
301 gr_pfb_channelizer_ccf.h \
302 gr_pfb_synthesis_filterbank_ccf.h\
303 gr_pfb_decimator_ccf.h \
304 gr_pfb_interpolator_ccf.h \
305 gr_pfb_arb_resampler_ccf.h \
306 gr_pfb_clock_sync_ccf.h \
307 gr_pfb_clock_sync_fff.h
311 dotprod_fff_altivec.h \
312 dotprod_fff_armv7_a.h \
321 gr_fir_fff_altivec.h \
322 gr_fir_fff_armv7_a.h \
327 interpolator_taps.h \
328 qa_complex_dotprod_x86.h \
329 qa_ccomplex_dotprod_x86.h \
331 qa_float_dotprod_x86.h \
338 qa_gri_mmse_fir_interpolator.h \
339 qa_gri_mmse_fir_interpolator_cc.h \
340 qa_gri_fir_filter_with_buffer_ccf.h \
341 qa_gri_fir_filter_with_buffer_ccc.h \
342 qa_gri_fir_filter_with_buffer_fcc.h \
343 qa_gri_fir_filter_with_buffer_fff.h \
344 qa_gri_fir_filter_with_buffer_fsf.h \
345 qa_gri_fir_filter_with_buffer_scc.h
349 swiginclude_HEADERS = \
352 gr_adaptive_fir_ccf.i \
353 gr_cma_equalizer_cc.i \
354 gr_fft_filter_ccc.i \
355 gr_fft_filter_fff.i \
356 gr_filter_delay_fc.i \
357 gr_fractional_interpolator_ff.i \
358 gr_fractional_interpolator_cc.i \
361 gr_iir_filter_ffd.i \
362 gr_single_pole_iir_filter_ff.i \
363 gr_single_pole_iir_filter_cc.i \
364 gr_pfb_channelizer_ccf.i \
365 gr_pfb_synthesis_filterbank_ccf.i\
366 gr_pfb_decimator_ccf.i \
367 gr_pfb_interpolator_ccf.i \
368 gr_pfb_arb_resampler_ccf.i \
369 gr_pfb_clock_sync_ccf.i \
370 gr_pfb_clock_sync_fff.i \
374 # Do creation and inclusion of other Makefiles last
376 # include the srcdir's Makefile.gen; doing this creates an implicit
377 # dependency between $(srcdir)/Makefile.in and $(srcdir)/Makefile.gen.
378 include $(srcdir)/Makefile.gen
380 # common way for generating local Makefile.gen
381 makefile_gen_gen_command = PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) do_makefile=1 do_sources=0 $(PYTHON) $(srcdir)/generate_all.py
382 include $(top_srcdir)/Makefile.gen.gen
384 # common way for generating sources from templates when using
385 # BUILT_SOURCES, using parallel build protection.
386 gen_sources = $(BUILT_SOURCES)
387 gen_sources_deps = $(core_generator)
388 par_gen_command = PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_all.py
389 include $(top_srcdir)/Makefile.par.gen