cfd6535819b52095f5d288be747ab4fa0fb59729
[debian/gnuradio] / gnuradio-core / src / lib / filter / Makefile.am
1 #
2 # Copyright 2001,2002,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
3
4 # This file is part of GNU Radio
5
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)
9 # any later version.
10
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.
15
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.
20
21
22 include $(top_srcdir)/Makefile.common
23
24 #
25 # This directory contains mostly filter routines, plus a few
26 # other performance critical items
27 #
28
29 AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
30
31 noinst_LTLIBRARIES = libfilter.la libfilter-qa.la
32
33 # ----------------------------------------------------------------
34 # these scripts generate FIR code
35 #
36
37 code_generator =                                        \
38         generate_all.py                                 \
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      \
48         generate_utils.py                               \
49         gr_fir_XXX.cc.t                                 \
50         gr_fir_XXX.h.t                                  \
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              \
67         gri_fir_filter_with_buffer_XXX.i.t
68
69
70 # Source built by Python into $(builddir)
71 BUILT_SOURCES =                 \
72         $(GENERATED_H)          \
73         $(GENERATED_I)          \
74         $(GENERATED_CC)         \
75         filter_generated.i
76
77 # ----------------------------------------------------------------
78 # MD_CPU and MD_SUBCPU are set at configure time by way of 
79 #   gnuradio/config/gr_set_md_cpu.m4.  
80 #   It indicates which set of machine dependent code we should be building.
81 #   We currently implement "generic" and "x86"
82
83 #
84 # <foo>_CODE entry for each set of machine specific speedups
85 #
86
87 generic_CODE =                          \
88         sysconfig_generic.cc            
89
90 generic_qa_CODE =                       \
91         qa_dotprod_generic.cc
92
93 x86_CODE =                              \
94         sysconfig_x86.cc                \
95         gr_fir_sysconfig_x86.cc         \
96         gr_cpu_x86.cc                   \
97         gr_fir_ccc_simd.cc              \
98         gr_fir_ccc_x86.cc               \
99         gr_fir_fff_simd.cc              \
100         gr_fir_fff_x86.cc               \
101         gr_fir_fsf_simd.cc              \
102         gr_fir_fsf_x86.cc               \
103         gr_fir_scc_simd.cc              \
104         gr_fir_scc_x86.cc               \
105         gr_fir_fcc_simd.cc              \
106         gr_fir_fcc_x86.cc               \
107         gr_fir_ccf_simd.cc              \
108         gr_fir_ccf_x86.cc               \
109         sse_debug.c
110
111 x86_SUBCODE =                           \
112         float_dotprod_sse.S             \
113         float_dotprod_3dnow.S           \
114         complex_dotprod_3dnowext.S      \
115         complex_dotprod_3dnow.S         \
116         complex_dotprod_sse.S           \
117         ccomplex_dotprod_3dnowext.S     \
118         ccomplex_dotprod_3dnow.S        \
119         ccomplex_dotprod_sse.S          \
120         fcomplex_dotprod_3dnow.S        \
121         fcomplex_dotprod_sse.S          \
122         short_dotprod_mmx.S             \
123         cpuid_x86.S
124
125 x86_64_SUBCODE =                        \
126         float_dotprod_sse64.S           \
127         float_dotprod_3dnow64.S         \
128         complex_dotprod_3dnowext64.S    \
129         complex_dotprod_3dnow64.S       \
130         complex_dotprod_sse64.S         \
131         ccomplex_dotprod_3dnowext64.S   \
132         ccomplex_dotprod_3dnow64.S      \
133         ccomplex_dotprod_sse64.S        \
134         fcomplex_dotprod_3dnow64.S      \
135         fcomplex_dotprod_sse64.S        \
136         short_dotprod_mmx64.S           \
137         cpuid_x86_64.S
138
139 x86_qa_CODE =                           \
140         qa_dotprod_x86.cc               \
141         qa_float_dotprod_x86.cc         \
142         qa_complex_dotprod_x86.cc       \
143         qa_ccomplex_dotprod_x86.cc      
144
145 powerpc_CODE = \
146         sysconfig_powerpc.cc \
147         gr_fir_sysconfig_powerpc.cc \
148         gr_cpu_powerpc.cc \
149         gr_fir_fff_altivec.cc \
150         gr_altivec.c \
151         dotprod_fff_altivec.c
152
153 powerpc_qa_CODE = \
154         qa_dotprod_powerpc.cc
155
156 armv7_a_CODE = \
157         sysconfig_armv7_a.cc \
158         gr_fir_sysconfig_armv7_a.cc \
159         gr_cpu_armv7_a.cc \
160         gr_fir_fff_armv7_a.cc \
161         dotprod_fff_armv7_a.c
162
163 armv7_a_qa_CODE = \
164         qa_dotprod_armv7_a.cc
165
166 #
167 # include each <foo>_CODE entry here...
168 #
169 EXTRA_libfilter_la_SOURCES =            \
170         $(generic_CODE)                 \
171         $(generic_qa_CODE)              \
172         $(x86_CODE)                     \
173         $(x86_SUBCODE)                  \
174         $(x86_64_SUBCODE)               \
175         $(x86_qa_CODE)                  \
176         $(powerpc_CODE)                 \
177         $(powerpc_qa_CODE)              \
178         $(armv7_a_CODE)         \
179         $(armv7_a_qa_CODE)
180
181
182 EXTRA_DIST =                                    \
183         3dnow_float_dotprod_really_simple.S     \
184         3dnow_float_dotprod_simple.S            \
185         $(code_generator)
186
187 # work around automake deficiency
188 libfilter_la_common_SOURCES =           \
189         $(GENERATED_CC)                 \
190         gr_adaptive_fir_ccf.cc          \
191         gr_cma_equalizer_cc.cc          \
192         gri_fft_filter_fff_generic.cc   \
193         gri_fft_filter_ccc_generic.cc   \
194         gr_fft_filter_ccc.cc            \
195         gr_fft_filter_fff.cc            \
196         gr_goertzel_fc.cc               \
197         gr_filter_delay_fc.cc           \
198         gr_fractional_interpolator_ff.cc \
199         gr_fractional_interpolator_cc.cc \
200         gr_hilbert_fc.cc                \
201         gr_iir_filter_ffd.cc            \
202         gr_sincos.c                     \
203         gr_single_pole_iir_filter_ff.cc \
204         gr_single_pole_iir_filter_cc.cc \
205         gri_goertzel.cc                 \
206         gri_mmse_fir_interpolator.cc    \
207         gri_mmse_fir_interpolator_cc.cc \
208         complex_dotprod_generic.cc      \
209         ccomplex_dotprod_generic.cc     \
210         float_dotprod_generic.c         \
211         short_dotprod_generic.c         \
212         gr_pfb_channelizer_ccf.cc       \
213         gr_pfb_synthesis_filterbank_ccf.cc\
214         gr_pfb_decimator_ccf.cc         \
215         gr_pfb_interpolator_ccf.cc      \
216         gr_pfb_arb_resampler_ccf.cc     \
217         gr_pfb_clock_sync_ccf.cc        \
218         gr_pfb_clock_sync_fff.cc
219
220 libfilter_qa_la_common_SOURCES =        \
221         qa_filter.cc                    \
222         qa_gr_fir_ccf.cc                \
223         qa_gr_fir_fcc.cc                \
224         qa_gr_fir_fff.cc                \
225         qa_gr_fir_ccc.cc                \
226         qa_gr_fir_scc.cc                \
227         qa_gr_rotator.cc                \
228         qa_gri_mmse_fir_interpolator.cc \
229         qa_gri_mmse_fir_interpolator_cc.cc \
230         qa_gri_fir_filter_with_buffer_ccf.cc \
231         qa_gri_fir_filter_with_buffer_ccc.cc \
232         qa_gri_fir_filter_with_buffer_fcc.cc \
233         qa_gri_fir_filter_with_buffer_fff.cc \
234         qa_gri_fir_filter_with_buffer_fsf.cc \
235         qa_gri_fir_filter_with_buffer_scc.cc
236
237 if MD_CPU_generic
238 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(generic_CODE)
239 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(generic_qa_CODE)
240 endif
241
242 if MD_CPU_x86
243 if MD_SUBCPU_x86_64
244 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(x86_64_SUBCODE) $(x86_CODE)
245 else
246 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(x86_SUBCODE) $(x86_CODE)
247 endif
248
249 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(x86_qa_CODE)
250 endif
251
252 if MD_CPU_powerpc
253 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(powerpc_CODE)
254 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(powerpc_qa_CODE)
255 endif
256
257 if MD_CPU_armv7_a
258 libfilter_la_SOURCES = $(libfilter_la_common_SOURCES) $(armv7_a_CODE)
259 libfilter_qa_la_SOURCES = $(libfilter_qa_la_common_SOURCES) $(armv7_a_qa_CODE)
260 endif
261
262
263 grinclude_HEADERS =                     \
264         $(GENERATED_H)                  \
265         complex_dotprod_generic.h       \
266         complex_dotprod_x86.h           \
267         fcomplex_dotprod_x86.h          \
268         ccomplex_dotprod_generic.h      \
269         ccomplex_dotprod_x86.h          \
270         float_dotprod_generic.h         \
271         float_dotprod_x86.h             \
272         gr_adaptive_fir_ccf.h           \
273         gr_altivec.h                    \
274         gr_cma_equalizer_cc.h           \
275         gr_cpu.h                        \
276         gri_fft_filter_fff_generic.h    \
277         gri_fft_filter_ccc_generic.h    \
278         gr_fft_filter_ccc.h             \
279         gr_fft_filter_fff.h             \
280         gr_filter_delay_fc.h            \
281         gr_fir_sysconfig_x86.h          \
282         gr_fir_sysconfig_powerpc.h      \
283         gr_fractional_interpolator_ff.h \
284         gr_fractional_interpolator_cc.h \
285         gr_goertzel_fc.h                \
286         gr_hilbert_fc.h                 \
287         gr_iir_filter_ffd.h             \
288         gr_rotator.h                    \
289         gr_sincos.h                     \
290         gr_single_pole_iir.h            \
291         gr_single_pole_iir_filter_ff.h  \
292         gr_single_pole_iir_filter_cc.h  \
293         gr_vec_types.h                  \
294         gri_goertzel.h                  \
295         gri_iir.h                       \
296         gri_mmse_fir_interpolator.h     \
297         gri_mmse_fir_interpolator_cc.h  \
298         qa_filter.h                     \
299         short_dotprod_generic.h         \
300         short_dotprod_x86.h             \
301         sse_debug.h                     \
302         gr_pfb_channelizer_ccf.h        \
303         gr_pfb_synthesis_filterbank_ccf.h\
304         gr_pfb_decimator_ccf.h          \
305         gr_pfb_interpolator_ccf.h       \
306         gr_pfb_arb_resampler_ccf.h      \
307         gr_pfb_clock_sync_ccf.h         \
308         gr_pfb_clock_sync_fff.h
309
310 noinst_HEADERS =                        \
311         assembly.h                      \
312         dotprod_fff_altivec.h           \
313         dotprod_fff_armv7_a.h           \
314         gr_fir_scc_simd.h               \
315         gr_fir_scc_x86.h                \
316         gr_fir_fcc_simd.h               \
317         gr_fir_fcc_x86.h                \
318         gr_fir_ccf_simd.h               \
319         gr_fir_ccf_x86.h                \
320         gr_fir_ccc_simd.h               \
321         gr_fir_ccc_x86.h                \
322         gr_fir_fff_altivec.h            \
323         gr_fir_fff_armv7_a.h            \
324         gr_fir_fff_simd.h               \
325         gr_fir_fff_x86.h                \
326         gr_fir_fsf_simd.h               \
327         gr_fir_fsf_x86.h                \
328         interpolator_taps.h             \
329         qa_complex_dotprod_x86.h        \
330         qa_ccomplex_dotprod_x86.h       \
331         qa_dotprod.h                    \
332         qa_float_dotprod_x86.h          \
333         qa_gr_fir_ccf.h                 \
334         qa_gr_fir_fcc.h                 \
335         qa_gr_fir_fff.h                 \
336         qa_gr_fir_ccc.h                 \
337         qa_gr_fir_scc.h                 \
338         qa_gr_rotator.h                 \
339         qa_gri_mmse_fir_interpolator.h  \
340         qa_gri_mmse_fir_interpolator_cc.h \
341         qa_gri_fir_filter_with_buffer_ccf.h \
342         qa_gri_fir_filter_with_buffer_ccc.h \
343         qa_gri_fir_filter_with_buffer_fcc.h \
344         qa_gri_fir_filter_with_buffer_fff.h \
345         qa_gri_fir_filter_with_buffer_fsf.h \
346         qa_gri_fir_filter_with_buffer_scc.h
347
348
349 if PYTHON
350 swiginclude_HEADERS =                   \
351         filter.i                        \
352         filter_generated.i              \
353         gr_adaptive_fir_ccf.i           \
354         gr_cma_equalizer_cc.i           \
355         gr_fft_filter_ccc.i             \
356         gr_fft_filter_fff.i             \
357         gr_filter_delay_fc.i            \
358         gr_fractional_interpolator_ff.i \
359         gr_fractional_interpolator_cc.i \
360         gr_goertzel_fc.i                \
361         gr_hilbert_fc.i                 \
362         gr_iir_filter_ffd.i             \
363         gr_single_pole_iir_filter_ff.i  \
364         gr_single_pole_iir_filter_cc.i  \
365         gr_pfb_channelizer_ccf.i        \
366         gr_pfb_synthesis_filterbank_ccf.i\
367         gr_pfb_decimator_ccf.i          \
368         gr_pfb_interpolator_ccf.i       \
369         gr_pfb_arb_resampler_ccf.i      \
370         gr_pfb_clock_sync_ccf.i         \
371         gr_pfb_clock_sync_fff.i         \
372         $(GENERATED_I)
373 endif
374
375 # Do creation and inclusion of other Makefiles last
376
377 # include the srcdir's Makefile.gen; doing this creates an implicit
378 # dependency between $(srcdir)/Makefile.in and $(srcdir)/Makefile.gen.
379 include $(srcdir)/Makefile.gen
380
381 # common way for generating local Makefile.gen
382 makefile_gen_gen_command = PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) do_makefile=1 do_sources=0 $(PYTHON) $(srcdir)/generate_all.py
383 include $(top_srcdir)/Makefile.gen.gen
384
385 # common way for generating sources from templates when using
386 # BUILT_SOURCES, using parallel build protection.
387 gen_sources = $(BUILT_SOURCES)
388 gen_sources_deps = $(core_generator)
389 par_gen_command = PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_all.py
390 include $(top_srcdir)/Makefile.par.gen