1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
|
#
# Makefile for testing the Faust compiler output
#
system := $(shell uname -s)
system := $(shell echo $(system) | grep MINGW > /dev/null && echo MINGW || echo $(system))
ifeq ($(system), MINGW)
FAUST ?= ../../build/bin/faust.exe
COMPARE := ./filesCompare.exe
else
FAUST ?= ../../build/bin/faust
COMPARE := ./filesCompare
endif
MAKE ?= make
GCCOPTIONS := -O3 -I../../architecture -I/usr/local/include/ap_fixed -Iarchs -pthread -std=c++11
outdir ?= cpp/double
lang ?= cpp
ext ?= cpp
arch ?= impulsearch.cpp
precision ?= # filesCompare precision (empty by default)
FAUSTOPTIONS := -double
ifeq ($(lang), c)
# CXX = gcc
ext = c
endif
.PHONY: test
.DELETE_ON_ERROR:
dspfiles := $(wildcard dsp/*.dsp)
listfiles = $(dspfiles:dsp/%.dsp=ir/$1/%.ir)
listintermediate = $(dspfiles:dsp/%.dsp=ir/$1/%) $(dspfiles:dsp/%.dsp=ir/$1/%.cpp)
TOOLSOPTIONS := -std=c++11 -O3 -I../../architecture
LIB ?= ../../build/lib/libfaust.a
SRCDIR := tools
all: filesCompare ir/$(outdir) $(call listfiles,$(outdir))
test:
# $(file > faustoptions.txt, "some text")
@echo $(call listwebfiles,$(asmjsdir))
help:
@echo "-------- FAUST impulse response tests --------"
@echo "Available targets are:"
@echo " 'all' (default): generate ir for all the dsp files using the given options"
@echo
@echo "Options:"
@echo " 'outdir' : define the output directory (default to '$(outdir)')"
@echo " 'lang' : used for faust -lang option (default to '$(lang)')"
@echo " 'arch' : used for faust -a option (default to '$(arch)')"
@echo " 'FAUSTOPTIONS' : define additional faust options (default to $(FAUSTOPTIONS))"
@echo " 'precision' : define filesCompare expected precision (empty by default)"
#########################################################################
# output directories
ir/$(outdir):
mkdir -p ir/$(outdir)
filesCompare:
$(MAKE) filesCompare
#########################################################################
# precision issues
ir/$(lang)/float/omp/zita_rev1.ir: precision=0.00001
ir/$(lang)/float/omp/virtual_analog_oscillators.ir: precision=0.00004
ir/$(lang)/float/omp/thru_zero_flanger.ir: precision=0.002
ir/$(lang)/float/omp/tester2.ir: precision=0.000003
ir/$(lang)/float/omp/tester.ir: precision=0.00008
ir/$(lang)/float/omp/spectral_tilt.ir: precision=0.003
ir/$(lang)/float/omp/phaser_flanger.ir: precision=0.005
ir/$(lang)/float/omp/parametric_eq.ir: precision=0.015
ir/$(lang)/float/omp/osci.ir: precision=0.005
ir/$(lang)/float/omp/osc.ir: precision=0.002
ir/$(lang)/float/omp/lowcut.ir: precision=0.000005
ir/$(lang)/float/omp/lfboost.ir: precision=0.000005
ir/$(lang)/float/omp/cubic_distortion.ir: precision=0.03
ir/$(lang)/float/omp/comb_delay2.ir: precision=0.065
ir/$(lang)/float/omp/comb_delay1.ir: precision=0.065
ir/$(lang)/float/omp/carre_volterra.ir: precision=0.002
ir/$(lang)/float/sched/zita_rev1.ir: precision=0.00001
ir/$(lang)/float/sched/virtual_analog_oscillators.ir: precision=0.00004
ir/$(lang)/float/sched/thru_zero_flanger.ir: precision=0.002
ir/$(lang)/float/sched/tester2.ir: precision=0.000003
ir/$(lang)/float/sched/tester.ir: precision=0.00008
ir/$(lang)/float/sched/spectral_tilt.ir: precision=0.003
ir/$(lang)/float/sched/phaser_flanger.ir: precision=0.005
ir/$(lang)/float/sched/parametric_eq.ir: precision=0.015
ir/$(lang)/float/sched/osci.ir: precision=0.005
ir/$(lang)/float/sched/osc.ir: precision=0.002
ir/$(lang)/float/sched/lowcut.ir: precision=0.000005
ir/$(lang)/float/sched/lfboost.ir: precision=0.000005
ir/$(lang)/float/sched/cubic_distortion.ir: precision=0.03
ir/$(lang)/float/sched/comb_delay2.ir: precision=0.065
ir/$(lang)/float/sched/comb_delay1.ir: precision=0.065
ir/$(lang)/float/sched/carre_volterra.ir: precision=0.002
ir/$(lang)/float/vec/zita_rev1.ir: precision=0.00001
ir/$(lang)/float/vec/virtual_analog_oscillators.ir: precision=0.00004
ir/$(lang)/float/vec/thru_zero_flanger.ir: precision=0.002
ir/$(lang)/float/vec/tester2.ir: precision=0.000003
ir/$(lang)/float/vec/tester.ir: precision=0.00008
ir/$(lang)/float/vec/spectral_tilt.ir: precision=0.003
ir/$(lang)/float/vec/phaser_flanger.ir: precision=0.005
ir/$(lang)/float/vec/parametric_eq.ir: precision=0.015
ir/$(lang)/float/vec/osci.ir: precision=0.005
ir/$(lang)/float/vec/osc.ir: precision=0.002
ir/$(lang)/float/vec/lowcut.ir: precision=0.000005
ir/$(lang)/float/vec/lfboost.ir: precision=0.000005
ir/$(lang)/float/vec/cubic_distortion.ir: precision=0.03
ir/$(lang)/float/vec/comb_delay2.ir: precision=0.065
ir/$(lang)/float/vec/comb_delay1.ir: precision=0.065
ir/$(lang)/float/vec/carre_volterra.ir: precision=0.002
ir/$(lang)/float/zita_rev1.ir: precision=0.00001
ir/$(lang)/float/virtual_analog_oscillators.ir: precision=0.00004
ir/$(lang)/float/thru_zero_flanger.ir: precision=0.002
ir/$(lang)/float/tester2.ir: precision=0.000003
ir/$(lang)/float/tester.ir: precision=0.00008
ir/$(lang)/float/spectral_tilt.ir: precision=0.003
ir/$(lang)/float/phaser_flanger.ir: precision=0.005
ir/$(lang)/float/parametric_eq.ir: precision=0.015
ir/$(lang)/float/osci.ir: precision=0.005
ir/$(lang)/float/osc.ir: precision=0.002
ir/$(lang)/float/lowcut.ir: precision=1e-05
ir/$(lang)/float/lfboost.ir: precision=5e-05
ir/$(lang)/float/cubic_distortion.ir: precision=0.03
ir/$(lang)/float/comb_delay2.ir: precision=0.065
ir/$(lang)/float/comb_delay1.ir: precision=0.065
ir/$(lang)/float/carre_volterra.ir: precision=0.0015
ir/c/double/sched/parametric_eq.ir: precision=0.004
ir/cpp/double/sched/parametric_eq.ir: precision=0.04
#########################################################################
# rules
ir/$(outdir)/%.ir: ir/$(outdir)/% reference/%.ir
$< -n 60000 > $@
$(COMPARE) $@ reference/$(notdir $@) $(precision)
ir/$(outdir)/% : ir/$(outdir)/%.$(ext)
$(CXX) $(GCCOPTIONS) $< -o $@
# Specific rule to test 'control' primitive that currently uses the -lang ocpp backend (still compiling in scalar mode...)
ir/$(outdir)/control.cpp : dsp/control.dsp
@echo "Can only be tested in scalar mode"
$(FAUST) -lang $(lang) -double -i -A ../../architecture -a archs/$(arch) $< -o $@
ir/cpp/double/os/osc_enable.ir:
@echo "osc_enable test is broken with flag -os"
# Specific rule to test 'enable/control' primitives that currently only work in scalar mode, used for 'cpp', 'c' and 'travis'
ir/$(outdir)/osc_enable.$(ext) : dsp/osc_enable.dsp
@echo "Can only be tested in scalar mode"
$(FAUST) -lang $(lang) -double -i -A ../../architecture -a archs/$(arch) $< -o $@
# Three rules for -c1 (= -os) mode
# Specific rule to test 'enable/control' primitives that currently only work in scalar mode
ir/c1/double/osc_enable.c : dsp/osc_enable.dsp
@echo "Can only be tested in scalar mode"
$(FAUST) -lang $(lang) -double -os -i -A ../../architecture -a archs/$(arch) $< -o $@
# Specific rule to test 'enable/control' primitives that currently only work in scalar mode
ir/c1/double/dlt0/osc_enable.c : dsp/osc_enable.dsp
@echo "Can only be tested in scalar mode"
$(FAUST) -lang $(lang) -double -os -i -A ../../architecture -a archs/$(arch) $< -o $@
# Specific rule to test 'enable/control' primitives that currently only work in scalar mode
ir/c1/double/dlt256/osc_enable.c : dsp/osc_enable.dsp
@echo "Can only be tested in scalar mode"
$(FAUST) -lang $(lang) -double -os -i -A ../../architecture -a archs/$(arch) $< -o $@
ir/$(outdir)/prefix.ir:
echo "todo fix bug #1071 to test dsp/prefix.dsp"
ir/cpp/double/mapp/constant.ir:
echo "todo fix bug #1074 to test dsp/constant.dsp"
ir/cpp/double/os/bs.ir:
@echo "accessing foreign variable 'count' is not allowed in this compilation mode"
ir/$(outdir)/%.$(ext) : dsp/%.dsp
$(FAUST) -lang $(lang) $(FAUSTOPTIONS) -i -A ../../architecture -a archs/$(arch) $< -o $@
|