annotate ext/kissfft/test/Makefile @ 409:1f1999b0f577

Bring in kissfft into this repo (formerly a subrepo, but the remote is not responding)
author Chris Cannam <c.cannam@qmul.ac.uk>
date Tue, 21 Jul 2015 07:34:15 +0100
parents
children
rev   line source
c@409 1
c@409 2 WARNINGS=-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return \
c@409 3 -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast \
c@409 4 -Wwrite-strings
c@409 5
c@409 6 CFLAGS=-O3 -I.. -I../tools $(WARNINGS)
c@409 7 CFLAGS+=-ffast-math -fomit-frame-pointer
c@409 8 #CFLAGS+=-funroll-loops
c@409 9 #CFLAGS+=-march=prescott
c@409 10 #CFLAGS+= -mtune=native
c@409 11 # TIP: try adding -openmp or -fopenmp to enable OPENMP directives and use of multiple cores
c@409 12 #CFLAGS+=-fopenmp
c@409 13 CFLAGS+= $(CFLAGADD)
c@409 14
c@409 15
c@409 16 ifeq "$(NFFT)" ""
c@409 17 NFFT=1800
c@409 18 endif
c@409 19 ifeq "$(NUMFFTS)" ""
c@409 20 NUMFFTS=10000
c@409 21 endif
c@409 22
c@409 23 ifeq "$(DATATYPE)" ""
c@409 24 DATATYPE=float
c@409 25 endif
c@409 26
c@409 27 BENCHKISS=bm_kiss_$(DATATYPE)
c@409 28 BENCHFFTW=bm_fftw_$(DATATYPE)
c@409 29 SELFTEST=st_$(DATATYPE)
c@409 30 TESTREAL=tr_$(DATATYPE)
c@409 31 TESTKFC=tkfc_$(DATATYPE)
c@409 32 FASTFILTREAL=ffr_$(DATATYPE)
c@409 33 SELFTESTSRC=twotonetest.c
c@409 34
c@409 35
c@409 36 TYPEFLAGS=-Dkiss_fft_scalar=$(DATATYPE)
c@409 37
c@409 38 ifeq "$(DATATYPE)" "int16_t"
c@409 39 TYPEFLAGS=-DFIXED_POINT=16
c@409 40 endif
c@409 41
c@409 42 ifeq "$(DATATYPE)" "int32_t"
c@409 43 TYPEFLAGS=-DFIXED_POINT=32
c@409 44 endif
c@409 45
c@409 46 ifeq "$(DATATYPE)" "simd"
c@409 47 TYPEFLAGS=-DUSE_SIMD=1 -msse
c@409 48 endif
c@409 49
c@409 50
c@409 51 ifeq "$(DATATYPE)" "float"
c@409 52 # fftw needs to be built with --enable-float to build this lib
c@409 53 FFTWLIB=-lfftw3f
c@409 54 else
c@409 55 FFTWLIB=-lfftw3
c@409 56 endif
c@409 57
c@409 58 FFTWLIBDIR=-L/usr/local/lib/
c@409 59
c@409 60 SRCFILES=../kiss_fft.c ../tools/kiss_fftnd.c ../tools/kiss_fftr.c pstats.c ../tools/kfc.c ../tools/kiss_fftndr.c
c@409 61
c@409 62 all: tools $(BENCHKISS) $(SELFTEST) $(BENCHFFTW) $(TESTREAL) $(TESTKFC)
c@409 63
c@409 64 tools:
c@409 65 cd ../tools && make all
c@409 66
c@409 67
c@409 68 $(SELFTEST): $(SELFTESTSRC) $(SRCFILES)
c@409 69 $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm
c@409 70
c@409 71 $(TESTKFC): $(SRCFILES)
c@409 72 $(CC) -o $@ $(CFLAGS) -DKFC_TEST $(TYPEFLAGS) $+ -lm
c@409 73
c@409 74 $(TESTREAL): test_real.c $(SRCFILES)
c@409 75 $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm
c@409 76
c@409 77 $(BENCHKISS): benchkiss.c $(SRCFILES)
c@409 78 $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm
c@409 79
c@409 80 $(BENCHFFTW): benchfftw.c pstats.c
c@409 81 @echo "======attempting to build FFTW benchmark"
c@409 82 @$(CC) -o $@ $(CFLAGS) -DDATATYPE$(DATATYPE) $+ $(FFTWLIB) $(FFTWLIBDIR) -lm || echo "FFTW not available for comparison"
c@409 83
c@409 84 test: all
c@409 85 @./$(TESTKFC)
c@409 86 @echo "======1d & 2-d complex fft self test (type= $(DATATYPE) )"
c@409 87 @./$(SELFTEST)
c@409 88 @echo "======real FFT (type= $(DATATYPE) )"
c@409 89 @./$(TESTREAL)
c@409 90 @echo "======timing test (type=$(DATATYPE))"
c@409 91 @./$(BENCHKISS) -x $(NUMFFTS) -n $(NFFT)
c@409 92 @[ -x ./$(BENCHFFTW) ] && ./$(BENCHFFTW) -x $(NUMFFTS) -n $(NFFT) ||true
c@409 93 @echo "======higher dimensions type=$(DATATYPE))"
c@409 94 @./testkiss.py
c@409 95
c@409 96 selftest.c:
c@409 97 ./mk_test.py 10 12 14 > selftest.c
c@409 98 selftest_short.c:
c@409 99 ./mk_test.py -s 10 12 14 > selftest_short.c
c@409 100
c@409 101
c@409 102 CXXFLAGS=-O3 -ffast-math -fomit-frame-pointer -I.. -I../tools -W -Wall
c@409 103 testcpp: testcpp.cc ../kissfft.hh
c@409 104 $(CXX) -o $@ $(CXXFLAGS) testcpp.cc -lm
c@409 105
c@409 106
c@409 107 clean:
c@409 108 rm -f *~ bm_* st_* tr_* kf_* tkfc_* ff_* ffr_* *.pyc *.pyo *.dat testcpp