From ce4fefe22a821b295b0cbde3506ae5ac3148e703 Mon Sep 17 00:00:00 2001 From: František Dvořák Date: Nov 14 2016 21:39:37 +0000 Subject: Initial import (#1279112) --- diff --git a/.gitignore b/.gitignore index e69de29..fff06c4 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/kiss_fft130.zip diff --git a/Makefile.libs b/Makefile.libs new file mode 100644 index 0000000..af064d5 --- /dev/null +++ b/Makefile.libs @@ -0,0 +1,65 @@ +prefix=/usr +srcdir=. +libdir=$(prefix)/lib +VPATH=$(srcdir):$(srcdir)/tools + +ifeq "$(DATATYPE)" "" + DATATYPE=double +endif + +SUFFIX=_$(DATATYPE) +TYPEFLAGS=-Dkiss_fft_scalar=$(DATATYPE) +ifeq "$(DATATYPE)" "int32" + TYPEFLAGS=-DFIXED_POINT=32 +endif +ifeq "$(DATATYPE)" "int16" + TYPEFLAGS=-DFIXED_POINT=16 +endif +ifeq "$(DATATYPE)" "simd" + TYPEFLAGS=-DUSE_SIMD=1 -msse +endif + +CFLAGS:=$(TYPEFLAGS) -W -Wall -static -fPIC -ffast-math -fomit-frame-pointer $(CFLAGS) +HEADERS= \ + $(srcdir)/kiss_fft.h \ + $(srcdir)/kissfft.hh \ + $(srcdir)/tools/kfc.h \ + $(srcdir)/tools/kiss_fftnd.h \ + $(srcdir)/tools/kiss_fftndr.h \ + $(srcdir)/tools/kiss_fftr.h +LIBRARIES= \ + libkiss_fft$(SUFFIX).a \ + libkiss_fftnd$(SUFFIX).a \ + libkiss_fftndr$(SUFFIX).a \ + libkiss_fftr$(SUFFIX).a \ + libkiss_kfc$(SUFFIX).a + +CC=gcc +COMPILE=libtool --mode=compile $(CC) $(CFLAGS) $(CXXFLAGS) +LINK=libtool --mode=link $(CC) $(CFLAGS) $(LDFLAGS) +INSTALL=libtool --mode=install install -p +CLEAN=libtool --mode=clean rm -f + +all: $(LIBRARIES) + +install: $(LIBRARIES) + -mkdir -p $(DESTDIR)$(libdir) $(DESTDIR)$(prefix)/include/kissfft + install -p -m 0644 $(HEADERS) $(DESTDIR)$(prefix)/include/kissfft + $(INSTALL) $+ $(DESTDIR)$(libdir) + +clean: + $(CLEAN) *.o *.a *.lo *.la + +%$(SUFFIX).o %$(SUFFIX).lo: %.c + $(COMPILE) -I$(srcdir) -o $@ -c $< + +%.a %.la: + $(LINK) -o $@ $+ + +libkiss_fft$(SUFFIX).a: kiss_fft$(SUFFIX).lo +libkiss_fftnd$(SUFFIX).a: kiss_fftnd$(SUFFIX).lo +libkiss_fftndr$(SUFFIX).a: kiss_fftndr$(SUFFIX).lo +libkiss_fftr$(SUFFIX).a: kiss_fftr$(SUFFIX).lo +libkiss_kfc$(SUFFIX).a: kfc$(SUFFIX).lo + +.PHONY: install clean all diff --git a/README.Fedora b/README.Fedora new file mode 100644 index 0000000..6bbde80 --- /dev/null +++ b/README.Fedora @@ -0,0 +1,18 @@ +KISS FFT is built as static libraries. + +Available libraries: + +-lkiss_fft_${TYPE} +-lkiss_fftnd_${TYPE} +-lkiss_fftndr_${TYPE} +-lkiss_fftr_${TYPE} +-lkiss_kfc_${TYPE} + +where ${TYPE} is float, double, int16, or int32. + +Use proper CPPFLAGS for the code using KISS FFT: + +float: -Dkiss_fft_scalar=float +double: -Dkiss_fft_scalar=double +int16: -DFIXED_POINT=16 +int32: -DFIXED_POINT=32 diff --git a/kiss-fft-header.patch b/kiss-fft-header.patch new file mode 100644 index 0000000..e7123d7 --- /dev/null +++ b/kiss-fft-header.patch @@ -0,0 +1,7 @@ +--- a/kissfft.hh ++++ b/kissfft.hh +@@ -1,4 +1,5 @@ + #ifndef KISSFFT_CLASS_HH ++#define KISSFFT_CLASS_HH + #include + #include diff --git a/kiss-fft-library.patch b/kiss-fft-library.patch new file mode 100644 index 0000000..228d531 --- /dev/null +++ b/kiss-fft-library.patch @@ -0,0 +1,88 @@ +commit 64438c454655df9ec0b57cfee755005957562d1e +Author: František Dvořák +Date: Sat Nov 7 20:48:06 2015 +0100 + + Use the library in all tools and tests. + +diff --git a/test/Makefile b/test/Makefile +index c204511..367db9f 100644 +--- a/test/Makefile ++++ b/test/Makefile +@@ -55,9 +55,11 @@ else + FFTWLIB=-lfftw3 + endif + +-FFTWLIBDIR=-L/usr/local/lib/ ++FFTWLIBDIR= ++KISSFFT_LIBS=-L../build$(SUFFIX) -lkiss_fft$(SUFFIX) -lkiss_fftnd$(SUFFIX) -lkiss_fftr$(SUFFIX) -lkiss_fftndr$(SUFFIX) + +-SRCFILES=../kiss_fft.c ../tools/kiss_fftnd.c ../tools/kiss_fftr.c pstats.c ../tools/kfc.c ../tools/kiss_fftndr.c ++ ++SRCFILES=pstats.c ../tools/kfc.c + + all: tools $(BENCHKISS) $(SELFTEST) $(BENCHFFTW) $(TESTREAL) $(TESTKFC) + +@@ -66,16 +68,16 @@ tools: + + + $(SELFTEST): $(SELFTESTSRC) $(SRCFILES) +- $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm ++ $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm $(KISSFFT_LIBS) + + $(TESTKFC): $(SRCFILES) +- $(CC) -o $@ $(CFLAGS) -DKFC_TEST $(TYPEFLAGS) $+ -lm ++ $(CC) -o $@ $(CFLAGS) -DKFC_TEST $(TYPEFLAGS) $+ -lm $(KISSFFT_LIBS) + + $(TESTREAL): test_real.c $(SRCFILES) +- $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm ++ $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm $(KISSFFT_LIBS) + + $(BENCHKISS): benchkiss.c $(SRCFILES) +- $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm ++ $(CC) -o $@ $(CFLAGS) $(TYPEFLAGS) $+ -lm $(KISSFFT_LIBS) + + $(BENCHFFTW): benchfftw.c pstats.c + @echo "======attempting to build FFTW benchmark" +diff --git a/tools/Makefile b/tools/Makefile +index ae7646b..963109d 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -27,6 +27,7 @@ ifneq ("$(KISS_FFT_USE_ALLOCA)","") + endif + CFLAGS+= $(CFLAGADD) + ++KISSFFT_LIBS=-L../build$(SUFFIX) + + FFTUTIL=fft_$(DATATYPE) + FASTFILT=fastconv_$(DATATYPE) +@@ -43,20 +44,20 @@ all: $(FFTUTIL) $(FASTFILT) $(FASTFILTREAL) + CFLAGS=-Wall -O3 $(WARNINGS) + # tip: try -openmp or -fopenmp to use multiple cores + +-$(FASTFILTREAL): ../kiss_fft.c kiss_fastfir.c kiss_fftr.c +- $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) -DREAL_FASTFIR $+ -DFAST_FILT_UTIL -lm ++$(FASTFILTREAL): kiss_fastfir.c ++ $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) -DREAL_FASTFIR $+ -DFAST_FILT_UTIL -lm $(KISSFFT_LIBS) -lkiss_fftr$(SUFFIX) -lkiss_fft$(SUFFIX) + +-$(FASTFILT): ../kiss_fft.c kiss_fastfir.c +- $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -DFAST_FILT_UTIL -lm ++$(FASTFILT): kiss_fastfir.c ++ $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -DFAST_FILT_UTIL -lm $(KISSFFT_LIBS) -lkiss_fft$(SUFFIX) + +-$(FFTUTIL): ../kiss_fft.c fftutil.c kiss_fftnd.c kiss_fftr.c kiss_fftndr.c +- $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm ++$(FFTUTIL): fftutil.c ++ $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm $(KISSFFT_LIBS) -lkiss_fftnd$(SUFFIX) -lkiss_fftr$(SUFFIX) -lkiss_fftndr$(SUFFIX) -lkiss_fft$(SUFFIX) + +-$(PSDPNG): ../kiss_fft.c psdpng.c kiss_fftr.c +- $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lpng -lm ++$(PSDPNG): psdpng.c ++ $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lpng -lm $(KISSFFT_LIBS) -lkiss_fftr$(SUFFIX) -lkiss_fft$(SUFFIX) + +-$(DUMPHDR): ../kiss_fft.c dumphdr.c +- $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm ++$(DUMPHDR): dumphdr.c ++ $(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm $(KISSFFT_LIBS) -lkiss_fft$(SUFFIX) + + clean: + rm -f *~ fft fft_* fastconv fastconv_* fastconvr fastconvr_* psdpng psdpng_* diff --git a/kiss-fft.spec b/kiss-fft.spec new file mode 100644 index 0000000..4146af0 --- /dev/null +++ b/kiss-fft.spec @@ -0,0 +1,113 @@ +# debuginfo not supported for static libraries, RB #209316 +%global debug_package %{nil} + +%global srcname kiss_fft + +Name: kiss-fft +Version: 1.3.0 +%global srcver %(echo %{version} | sed -e 's/\\.//g') +Release: 1%{?dist} +Summary: Fast Fourier Transform library + +License: BSD +URL: https://sourceforge.net/projects/kissfft +Source0: http://downloads.sourceforge.net/kissfft/%{srcname}%{srcver}.zip +# build static library +Source1: Makefile.libs +Source2: README.Fedora +# use the libraries in tests (not intended for upstream) +Patch1: %{name}-library.patch +# https://sourceforge.net/p/kissfft/code/ci/fbe1bb0bc7b94ec252842b8b7e3f3347ec75d92f/tree/kissfft.hh?diff=effd3ec61a1c4a2141fb04ab9a76d78be0459cce +Patch2: %{name}-header.patch + +# only for benchmark tests (GPLv2+ library) +BuildRequires: fftw-devel +BuildRequires: libtool +# for tests +BuildRequires: numpy +BuildRequires: python2 +%if 0%{?rhel} && 0%{?rhel} <= 6 +BuildRequires: procps +%else +BuildRequires: procps-ng +%endif + +%description +A Fast Fourier Transform based up on the principle, "Keep It Simple, Stupid". +Kiss FFT is a very small, reasonably efficient, mixed radix FFT library that +can use either fixed or floating point data types. + + +%package devel +Summary: Fast Fourier Transform library +Provides: %{name}-static = %{version}-%{release} + +%description devel +A Fast Fourier Transform based up on the principle, "Keep It Simple, Stupid". +Kiss FFT is a very small, reasonably efficient, mixed radix FFT library that +can use either fixed or floating point data types. + +Header files and static library are provided. + + +%prep +%setup -q -n %{srcname}%{srcver} +cp -p %{SOURCE2} . +%patch1 -p1 +%patch2 -p1 + + +%build +for type in float double int16 int32; do + mkdir build_${type} + pushd build_${type} + CFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" \ + DATATYPE=${type} \ + make %{?_smp_mflags} -f %{SOURCE1} libdir=%{_libdir} srcdir=.. + popd +done + + +%install +for type in float double int16 int32; do + pushd build_${type} + CFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" \ + DATATYPE=${type} \ + DESTDIR=%{buildroot} \ + make %{?_smpflags} -f %{SOURCE1} libdir=%{_libdir} srcdir=.. install + popd +done + + +%check +while read type suffix; do + DATATYPE=${type} \ + SUFFIX=${suffix} \ + make -C tools clean all CFLAGS="%{optflags}" + + CFLAGADD="%{optflags}" \ + DATATYPE=${type} \ + SUFFIX=${suffix} \ + make -C test clean test +done << EOF +float _float +double _double +int16_t _int16 +int32_t _int32 +EOF + + +%files devel +%license COPYING +%doc CHANGELOG README README.Fedora +%{_includedir}/kissfft/ +%{_libdir}/libkiss_fft_*.a +%{_libdir}/libkiss_fftnd_*.a +%{_libdir}/libkiss_fftndr_*.a +%{_libdir}/libkiss_fftr_*.a +%{_libdir}/libkiss_kfc_*.a + + +%changelog +* Mon Nov 14 2016 František Dvořák - 1.3.0-1 +- Initial package diff --git a/sources b/sources index e69de29..5d5a936 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +b91b85ca92001f4598e5a8c4bd476412 kiss_fft130.zip