mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-07-22 15:04:25 -04:00
Overhaul Make makefiles
* Header files and correspondent C sources that define functions recently added to public API moved from 'tools' directory to root * By default, install prefix is '/usr/local/', and header install path is '${PREFIX}/include/kissfft' * Added detection of external libraries like FFTW or libPNG Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
This commit is contained in:
137
tools/Makefile
137
tools/Makefile
@ -1,62 +1,101 @@
|
||||
WARNINGS=-W -Wall -Wstrict-prototypes -Wmissing-prototypes \
|
||||
#
|
||||
# Warnings
|
||||
#
|
||||
|
||||
WARNINGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes \
|
||||
-Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast \
|
||||
-Wwrite-strings
|
||||
|
||||
ifeq "$(DATATYPE)" ""
|
||||
DATATYPE=float
|
||||
endif
|
||||
#
|
||||
# Compile-time definitions
|
||||
#
|
||||
|
||||
ifeq "$(DATATYPE)" "int32_t"
|
||||
TYPEFLAGS=-DFIXED_POINT=32
|
||||
endif
|
||||
|
||||
ifeq "$(DATATYPE)" "int16_t"
|
||||
TYPEFLAGS=-DFIXED_POINT=16
|
||||
endif
|
||||
|
||||
ifeq "$(DATATYPE)" "simd"
|
||||
TYPEFLAGS=-DUSE_SIMD=1 -msse
|
||||
endif
|
||||
|
||||
ifeq "$(TYPEFLAGS)" ""
|
||||
TYPEFLAGS=-Dkiss_fft_scalar=$(DATATYPE)
|
||||
endif
|
||||
|
||||
ifneq ("$(KISS_FFT_USE_ALLOCA)","")
|
||||
CFLAGS+= -DKISS_FFT_USE_ALLOCA=1
|
||||
endif
|
||||
CFLAGS+= $(CFLAGADD)
|
||||
|
||||
|
||||
FFTUTIL=fft_$(DATATYPE)
|
||||
FASTFILT=fastconv_$(DATATYPE)
|
||||
FASTFILTREAL=fastconvr_$(DATATYPE)
|
||||
PSDPNG=psdpng_$(DATATYPE)
|
||||
DUMPHDR=dumphdr_$(DATATYPE)
|
||||
|
||||
all: $(FFTUTIL) $(FASTFILT) $(FASTFILTREAL)
|
||||
# $(PSDPNG)
|
||||
# $(DUMPHDR)
|
||||
|
||||
#CFLAGS=-Wall -O3 -pedantic -march=pentiumpro -ffast-math -fomit-frame-pointer $(WARNINGS)
|
||||
CFLAGS = -Wall -O3 $(WARNINGS)
|
||||
#CFLAGS = -Wall -O3 -pedantic -march=pentiumpro -ffast-math -fomit-frame-pointer $(WARNINGS)
|
||||
# If the above flags do not work, try the following
|
||||
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
|
||||
CFLAGS += $(CFLAGADD)
|
||||
|
||||
$(FASTFILT): ../kiss_fft.c kiss_fastfir.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -DFAST_FILT_UTIL -lm
|
||||
#
|
||||
# Check missing external libraries
|
||||
#
|
||||
|
||||
$(FFTUTIL): ../kiss_fft.c fftutil.c kiss_fftnd.c kiss_fftr.c kiss_fftndr.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
LIBPNG_MISSING = $(shell echo "int main(){return 0;}" > _test_library_dummy.c; \
|
||||
$(CC) -o _test_library_dummy _test_library_dummy.c -lpng; \
|
||||
echo $$?; \
|
||||
rm -f _test_library_dummy.c _test_library_dummy)
|
||||
endif
|
||||
|
||||
$(PSDPNG): ../kiss_fft.c psdpng.c kiss_fftr.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lpng -lm
|
||||
#
|
||||
# Tool names
|
||||
#
|
||||
|
||||
$(DUMPHDR): ../kiss_fft.c dumphdr.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $+ -lm
|
||||
ifneq ($(KISSFFT_OPENMP),1)
|
||||
FFTUTIL = fft-$(KISSFFT_DATATYPE)
|
||||
FASTFILT = fastconv-$(KISSFFT_DATATYPE)
|
||||
FASTFILTREAL = fastconvr-$(KISSFFT_DATATYPE)
|
||||
PSDPNG = psdpng-$(KISSFFT_DATATYPE)
|
||||
DUMPHDR = dumphdr-$(KISSFFT_DATATYPE)
|
||||
else
|
||||
FFTUTIL = fft-$(KISSFFT_DATATYPE)-openmp
|
||||
FASTFILT = fastconv-$(KISSFFT_DATATYPE)-openmp
|
||||
FASTFILTREAL = fastconvr-$(KISSFFT_DATATYPE)-openmp
|
||||
PSDPNG = psdpng-$(KISSFFT_DATATYPE)-openmp
|
||||
DUMPHDR = dumphdr-$(KISSFFT_DATATYPE)-openmp
|
||||
endif
|
||||
|
||||
#
|
||||
# Target: "make all"
|
||||
#
|
||||
|
||||
all: $(FFTUTIL) $(FASTFILT) $(FASTFILTREAL) $(PSDPNG)
|
||||
# $(DUMPHDR)
|
||||
|
||||
#
|
||||
# Individual tool make rules
|
||||
#
|
||||
|
||||
$(FASTFILTREAL): kiss_fastfir.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) -DREAL_FASTFIR $< -DFAST_FILT_UTIL -L.. -l$(KISSFFTLIB_SHORTNAME) -lm
|
||||
|
||||
$(FASTFILT): kiss_fastfir.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $< -DFAST_FILT_UTIL -L.. -l$(KISSFFTLIB_SHORTNAME) -lm
|
||||
|
||||
$(FFTUTIL): fftutil.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $< -L.. -l$(KISSFFTLIB_SHORTNAME) -lm
|
||||
|
||||
$(PSDPNG): psdpng.c
|
||||
ifeq "$(KISSFFT_DATATYPE)" "simd"
|
||||
$(warning WARNING: psdpng can not utilize SIMD!)
|
||||
else ifeq ($(LIBPNG_MISSING), 0)
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $< -L.. -l$(KISSFFTLIB_SHORTNAME) -lpng -lm
|
||||
else
|
||||
$(error ERROR: no libpng development files found!)
|
||||
endif
|
||||
|
||||
$(DUMPHDR): dumphdr.c
|
||||
$(CC) -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) $< -L.. -l$(KISSFFTLIB_SHORTNAME) -lm
|
||||
|
||||
#
|
||||
# Target: "make install"
|
||||
#
|
||||
|
||||
install: all
|
||||
$(INSTALL) -Dt $(ABS_BINDIR) -m 755 \
|
||||
$(FFTUTIL) \
|
||||
$(FASTFILT) \
|
||||
$(FASTFILTREAL)
|
||||
|
||||
ifneq "$(KISSFFT_DATATYPE)" "simd"
|
||||
$(INSTALL) -Dt $(ABS_BINDIR) -m 755 \
|
||||
$(PSDPNG)
|
||||
endif
|
||||
|
||||
#
|
||||
# Target: "make clean"
|
||||
#
|
||||
|
||||
clean:
|
||||
rm -f *~ fft fft_* fastconv fastconv_* fastconvr fastconvr_* psdpng psdpng_*
|
||||
rm -f *~ fft fft-* fastconv fastconv-* fastconvr fastconvr-* psdpng psdpng-* _test_library_dummy _test_library_dummy.c
|
||||
|
Reference in New Issue
Block a user