1# This Makefile.am specifies a set of codelets, efficient transforms
2# of small sizes, that are used as building blocks (kernels) by FFTW
3# to build up large transforms, as well as the options for generating
4# and compiling them.
5
6# You can customize FFTW for special needs, e.g. to handle certain
7# sizes more efficiently, by adding new codelets to the lists of those
8# included by default.  If you change the list of codelets, any new
9# ones you added will be automatically generated when you run the
10# bootstrap script (see "Generating your own code" in the FFTW
11# manual).
12
13###########################################################################
14AM_CPPFLAGS = -I $(top_srcdir)
15noinst_LTLIBRARIES = librdft_scalar_r2cb.la
16
17###########################################################################
18# r2cb_<n> is a hard-coded complex-to-real FFT of size <n> (base cases
19# of real-output FFT recursion)
20R2CB = r2cb_2.c r2cb_3.c r2cb_4.c r2cb_5.c r2cb_6.c r2cb_7.c r2cb_8.c	\
21r2cb_9.c r2cb_10.c r2cb_11.c r2cb_12.c r2cb_13.c r2cb_14.c r2cb_15.c	\
22r2cb_16.c r2cb_32.c r2cb_64.c r2cb_128.c r2cb_20.c r2cb_25.c
23# r2cb_30.c r2cb_40.c r2cb_50.c
24
25###########################################################################
26# hb_<r> is a "twiddle" FFT of size <r>, implementing a radix-r DIF
27# step for a real-output FFT.  Every hb codelet must have a
28# corresponding r2cbIII codelet (see below)!
29HB = hb_2.c hb_3.c hb_4.c hb_5.c hb_6.c hb_7.c hb_8.c hb_9.c	\
30hb_10.c hb_12.c hb_15.c hb_16.c hb_32.c hb_64.c \
31hb_20.c hb_25.c # hb_30.c hb_40.c hb_50.c
32
33# like hb, but generates part of its trig table on the fly (good for large n)
34HB2 = hb2_4.c hb2_8.c hb2_16.c hb2_32.c \
35hb2_5.c hb2_20.c hb2_25.c
36
37# an r2cb transform where the output is shifted by half a sample (input
38# is multiplied by a phase).  This is needed as part of the DIF recursion;
39# every hb_<r> or hb2_<r> codelet should have a corresponding r2cbIII_<r>
40R2CBIII = r2cbIII_2.c r2cbIII_3.c r2cbIII_4.c r2cbIII_5.c r2cbIII_6.c	\
41r2cbIII_7.c r2cbIII_8.c r2cbIII_9.c r2cbIII_10.c r2cbIII_12.c		\
42r2cbIII_15.c r2cbIII_16.c r2cbIII_32.c r2cbIII_64.c \
43r2cbIII_20.c r2cbIII_25.c # r2cbIII_30.c r2cbIII_40.c r2cbIII_50.c
44
45###########################################################################
46# hc2cb_<r> is a "twiddle" FFT of size <r>, implementing a radix-r DIF
47# step for a real-input FFT with rdft2-style output.  <r> must be even.
48HC2CB = hc2cb_2.c hc2cb_4.c hc2cb_6.c hc2cb_8.c hc2cb_10.c hc2cb_12.c	\
49hc2cb_16.c hc2cb_32.c \
50hc2cb_20.c # hc2cb_30.c
51
52HC2CBDFT = hc2cbdft_2.c hc2cbdft_4.c hc2cbdft_6.c hc2cbdft_8.c	\
53hc2cbdft_10.c hc2cbdft_12.c hc2cbdft_16.c hc2cbdft_32.c \
54hc2cbdft_20.c # hc2cbdft_30.c
55
56# like hc2cb, but generates part of its trig table on the fly (good
57# for large n)
58HC2CB2 = hc2cb2_4.c hc2cb2_8.c hc2cb2_16.c hc2cb2_32.c \
59hc2cb2_20.c # hc2cb2_30.c
60HC2CBDFT2 = hc2cbdft2_4.c hc2cbdft2_8.c hc2cbdft2_16.c hc2cbdft2_32.c \
61hc2cbdft2_20.c # hc2cbdft2_30.c
62
63###########################################################################
64ALL_CODELETS = $(R2CB) $(HB) $(HB2) $(R2CBIII) $(HC2CB) $(HC2CB2)	\
65$(HC2CBDFT) $(HC2CBDFT2)
66
67BUILT_SOURCES= $(ALL_CODELETS) $(CODLIST)
68
69librdft_scalar_r2cb_la_SOURCES = $(BUILT_SOURCES)
70
71SOLVTAB_NAME = X(solvtab_rdft_r2cb)
72XRENAME=X
73
74# special rules for regenerating codelets.
75include $(top_srcdir)/support/Makefile.codelets
76
77if MAINTAINER_MODE
78FLAGS_R2CB=$(RDFT_FLAGS_COMMON) -sign 1
79FLAGS_HB=$(RDFT_FLAGS_COMMON) -sign 1
80FLAGS_HB2=$(RDFT_FLAGS_COMMON) -sign 1 -twiddle-log3 -precompute-twiddles
81FLAGS_HC2CB=$(RDFT_FLAGS_COMMON) -sign 1
82FLAGS_HC2CB2=$(RDFT_FLAGS_COMMON) -sign 1 -twiddle-log3 -precompute-twiddles
83FLAGS_R2CBIII=$(RDFT_FLAGS_COMMON) -sign 1
84
85r2cb_%.c:  $(CODELET_DEPS) $(GEN_R2CB)
86	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_R2CB) $(FLAGS_R2CB) -n $* -name r2cb_$* -include "rdft/scalar/r2cb.h") | $(ADD_DATE) | $(INDENT) >$@
87
88hb_%.c:  $(CODELET_DEPS) $(GEN_HC2HC)
89	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_HC2HC) $(FLAGS_HB) -n $* -dif -name hb_$* -include "rdft/scalar/hb.h") | $(ADD_DATE) | $(INDENT) >$@
90
91hb2_%.c:  $(CODELET_DEPS) $(GEN_HC2HC)
92	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_HC2HC) $(FLAGS_HB2) -n $* -dif -name hb2_$* -include "rdft/scalar/hb.h") | $(ADD_DATE) | $(INDENT) >$@
93
94r2cbIII_%.c:  $(CODELET_DEPS) $(GEN_R2CB)
95	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_R2CB) $(FLAGS_R2CB) -n $* -name r2cbIII_$* -dft-III -include "rdft/scalar/r2cbIII.h") | $(ADD_DATE) | $(INDENT) >$@
96
97hc2cb_%.c:  $(CODELET_DEPS) $(GEN_HC2C)
98	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_HC2C) $(FLAGS_HC2CB) -n $* -dif -name hc2cb_$* -include "rdft/scalar/hc2cb.h") | $(ADD_DATE) | $(INDENT) >$@
99
100hc2cb2_%.c:  $(CODELET_DEPS) $(GEN_HC2C)
101	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_HC2C) $(FLAGS_HC2CB2) -n $* -dif -name hc2cb2_$* -include "rdft/scalar/hc2cb.h") | $(ADD_DATE) | $(INDENT) >$@
102
103hc2cbdft_%.c:  $(CODELET_DEPS) $(GEN_HC2CDFT)
104	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_HC2CDFT) $(FLAGS_HC2CB) -n $* -dif -name hc2cbdft_$* -include "rdft/scalar/hc2cb.h") | $(ADD_DATE) | $(INDENT) >$@
105
106hc2cbdft2_%.c:  $(CODELET_DEPS) $(GEN_HC2CDFT)
107	($(PRELUDE_COMMANDS_RDFT); $(TWOVERS) $(GEN_HC2CDFT) $(FLAGS_HC2CB) -n $* -dif -name hc2cbdft2_$* -include "rdft/scalar/hc2cb.h") | $(ADD_DATE) | $(INDENT) >$@
108
109endif # MAINTAINER_MODE
110