2 # Copyright 2001,2002,2004,2005,2006,2007,2008 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 \
50 gr_fir_XXX_generic.cc.t \
51 gr_fir_XXX_generic.h.t \
52 gr_fir_filter_XXX.cc.t \
53 gr_fir_filter_XXX.h.t \
54 gr_fir_filter_XXX.i.t \
55 gr_interp_fir_filter_XXX.cc.t \
56 gr_interp_fir_filter_XXX.h.t \
57 gr_interp_fir_filter_XXX.i.t \
58 gr_rational_resampler_base_XXX.cc.t \
59 gr_rational_resampler_base_XXX.h.t \
60 gr_rational_resampler_base_XXX.i.t \
61 gr_freq_xlating_fir_filter_XXX.cc.t \
62 gr_freq_xlating_fir_filter_XXX.h.t \
63 gr_freq_xlating_fir_filter_XXX.i.t
67 # Ensure parallel make does the right thing.
68 # http://sources.redhat.com/automake/automake.html#Multiple-Outputs
70 STAMPS = generate-stamp
72 generate-stamp: $(CODE_GENERATOR)
75 PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_all.py
76 @mv -f generate-tmp $@
79 $(GENERATED_H) $(GENERATED_I) $(GENERATED_CC) filter_generated.i: generate-stamp
80 ## Recover from the removal of $@
81 @if test -f $@; then :; else \
82 trap 'rm -rf generate-lock generate-stamp' 1 2 13 15; \
83 if mkdir generate-lock 2>/dev/null; then \
84 ## This code is being executed by the first process.
85 rm -f generate-stamp; \
86 $(MAKE) $(AM_MAKEFLAGS) generate-stamp; \
87 rmdir generate-lock; \
89 ## This code is being executed by the follower processes.
90 ## Wait until the first process is done.
91 while test -d generate-lock; do sleep 1; done; \
92 ## Succeed if and only if the first process succeeded.
93 test -f generate-stamp; exit $$?; \
98 BUILT_SOURCES = $(GENERATED_H) $(GENERATED_I) $(GENERATED_CC) filter_generated.i
101 # ----------------------------------------------------------------
102 # MD_CPU and MD_SUBCPU are set at configure time by way of
103 # gnuradio/config/gr_set_md_cpu.m4.
104 # It indicates which set of machine dependent code we should be building.
105 # We currently implement "generic" and "x86"
108 # <foo>_CODE entry for each set of machine specific speedups
115 qa_dotprod_generic.cc
119 gr_fir_sysconfig_x86.cc \
136 float_dotprod_sse.S \
137 float_dotprod_3dnow.S \
138 complex_dotprod_3dnowext.S \
139 complex_dotprod_3dnow.S \
140 complex_dotprod_sse.S \
141 ccomplex_dotprod_3dnowext.S \
142 ccomplex_dotprod_3dnow.S \
143 ccomplex_dotprod_sse.S \
144 fcomplex_dotprod_3dnow.S \
145 fcomplex_dotprod_sse.S \
146 short_dotprod_mmx.S \
150 float_dotprod_sse64.S \
151 float_dotprod_3dnow64.S \
152 complex_dotprod_3dnowext64.S \
153 complex_dotprod_3dnow64.S \
154 complex_dotprod_sse64.S \
155 ccomplex_dotprod_3dnowext64.S \
156 ccomplex_dotprod_3dnow64.S \
157 ccomplex_dotprod_sse64.S \
158 fcomplex_dotprod_3dnow64.S \
159 fcomplex_dotprod_sse64.S \
160 short_dotprod_mmx64.S \
165 qa_float_dotprod_x86.cc \
166 qa_complex_dotprod_x86.cc \
167 qa_ccomplex_dotprod_x86.cc
170 # include each <foo>_CODE entry here...
172 EXTRA_libfilter_la_SOURCES = \
182 3dnow_float_dotprod_really_simple.S \
183 3dnow_float_dotprod_simple.S \
188 # work around automake deficiency
189 libfilter_la_common_SOURCES = \
191 gr_adaptive_fir_ccf.cc \
192 gr_cma_equalizer_cc.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
212 libfilter_qa_la_common_SOURCES = \
219 qa_gri_mmse_fir_interpolator.cc \
220 qa_gri_mmse_fir_interpolator_cc.cc
223 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(generic_CODE)
224 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(generic_qa_CODE)
229 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(x86_64_SUBCODE) $(x86_CODE)
231 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(x86_SUBCODE) $(x86_CODE)
234 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(x86_qa_CODE)
238 grinclude_HEADERS = \
240 complex_dotprod_generic.h \
241 complex_dotprod_x86.h \
242 fcomplex_dotprod_x86.h \
243 ccomplex_dotprod_generic.h \
244 ccomplex_dotprod_x86.h \
245 float_dotprod_generic.h \
246 float_dotprod_x86.h \
247 gr_adaptive_fir_ccf.h \
248 gr_cma_equalizer_cc.h \
250 gr_fft_filter_ccc.h \
251 gr_fft_filter_fff.h \
252 gr_filter_delay_fc.h \
253 gr_fir_sysconfig_x86.h \
254 gr_fractional_interpolator_ff.h \
255 gr_fractional_interpolator_cc.h \
258 gr_iir_filter_ffd.h \
261 gr_single_pole_iir.h \
262 gr_single_pole_iir_filter_ff.h \
263 gr_single_pole_iir_filter_cc.h \
266 gri_mmse_fir_interpolator.h \
267 gri_mmse_fir_interpolator_cc.h \
269 short_dotprod_generic.h \
270 short_dotprod_x86.h \
287 interpolator_taps.h \
288 qa_complex_dotprod_x86.h \
289 qa_ccomplex_dotprod_x86.h \
291 qa_float_dotprod_x86.h \
297 qa_gri_mmse_fir_interpolator.h \
298 qa_gri_mmse_fir_interpolator_cc.h
302 swiginclude_HEADERS = \
305 gr_adaptive_fir_ccf.i \
306 gr_cma_equalizer_cc.i \
307 gr_fft_filter_ccc.i \
308 gr_fft_filter_fff.i \
309 gr_filter_delay_fc.i \
310 gr_fractional_interpolator_ff.i \
311 gr_fractional_interpolator_cc.i \
314 gr_iir_filter_ffd.i \
315 gr_single_pole_iir_filter_ff.i \
316 gr_single_pole_iir_filter_cc.i \
320 CLEANFILES = $(BUILT_SOURCES) $(STAMPS) *.pyc