From 74f7a28011a0b185dd6ce8c5156855e0e79362e2 Mon Sep 17 00:00:00 2001 From: crop Date: Sat, 26 Oct 2024 15:18:14 +0200 Subject: [PATCH] improve rust impule_test makefile --- tests/impulse-tests/Make.interp | 5 +- tests/impulse-tests/Make.rust | 142 +++++++++----------------------- tests/impulse-tests/Makefile | 17 ++-- 3 files changed, 50 insertions(+), 114 deletions(-) diff --git a/tests/impulse-tests/Make.interp b/tests/impulse-tests/Make.interp index 39f562c30f..4e6b469994 100644 --- a/tests/impulse-tests/Make.interp +++ b/tests/impulse-tests/Make.interp @@ -37,7 +37,7 @@ help: @echo " 'interp' (default): check the double output using the interp backend" @echo @echo "Options:" - @echo " 'outdir' : define the output directory (default to 'llvm')" + @echo " 'outdir' : define the output directory (default to 'llvm')" @echo " 'FAUSTOPTIONS' : define additional faust options (empty by default)" @echo " 'precision' : define filesCompare expected precision (empty by default)" @@ -62,7 +62,8 @@ impulseinterp: $(SRCDIR)/impulseinterp.cpp $(LIB) ######################################################################### # rules for interp -# Specific rule to test 'control' primitive that currently uses the -lang ocpp backend (still compiling in scalar mode...) +# Specific rule to test 'control' primitive that currently uses the -lang ocpp backend +# (still compiling in scalar mode...) ir/$(outdir)/control.ir: dsp/control.dsp reference/control.ir @echo "Cannot be tested with the Interp backend" diff --git a/tests/impulse-tests/Make.rust b/tests/impulse-tests/Make.rust index eed72dacc1..5b76dcc826 100644 --- a/tests/impulse-tests/Make.rust +++ b/tests/impulse-tests/Make.rust @@ -20,109 +20,49 @@ precision ?= # filesCompare precision (empty by default) .PHONY: test .DELETE_ON_ERROR: -alldspfiles := $(wildcard dsp/*.dsp) -allirfiles = $(alldspfiles:dsp/%.dsp=ir/rust/%.ir) - -all: filesCompare - -# Currently this lists all dependencies manually to allow for easily enabling/disabling -# individual test cases. Later this can be replaced by the wildcard dependency: -# all: $(allirfiles) - -all: ir/rust/APF.ir -all: ir/rust/BPF.ir -all: ir/rust/HPF.ir -all: ir/rust/LPF.ir -all: ir/rust/UITester.ir -all: ir/rust/bandfilter.ir -all: ir/rust/bargraph.ir -# all: ir/rust/bs.ir -all: ir/rust/capture.ir -all: ir/rust/carre_volterra.ir -all: ir/rust/comb_bug_exp.ir -all: ir/rust/comb_delay1.ir -all: ir/rust/comb_delay2.ir -all: ir/rust/constant.ir -all: ir/rust/cubic_distortion.ir -all: ir/rust/dbmeter.ir -all: ir/rust/delays.ir -all: ir/rust/echo_bug.ir -all: ir/rust/echo.ir -all: ir/rust/freeverb.ir -all: ir/rust/gate_compressor.ir -all: ir/rust/harpe.ir -all: ir/rust/highShelf.ir -all: ir/rust/karplus.ir -all: ir/rust/karplus32.ir -all: ir/rust/lfboost.ir -all: ir/rust/logical.ir -all: ir/rust/lowboost.ir -all: ir/rust/lowcut.ir -all: ir/rust/lowShelf.ir -all: ir/rust/math.ir -all: ir/rust/math_simp.ir -all: ir/rust/matrix.ir -all: ir/rust/midi_tester.ir -all: ir/rust/mixer.ir -all: ir/rust/modulations.ir -all: ir/rust/multibandfilter.ir -all: ir/rust/noise.ir -all: ir/rust/noiseabs.ir -all: ir/rust/noisemetadata.ir -all: ir/rust/notch.ir -all: ir/rust/osc_enable.ir -all: ir/rust/osc.ir -all: ir/rust/osci.ir -all: ir/rust/panpot.ir -all: ir/rust/parametric_eq.ir -all: ir/rust/peakingEQ.ir -all: ir/rust/peakNotch.ir -all: ir/rust/phaser_flanger.ir -all: ir/rust/pitch_shifter.ir -all: ir/rust/pow.ir -all: ir/rust/precision.ir -#all: ir/rust/prefix.ir -all: ir/rust/priority.ir -all: ir/rust/priority1.ir -all: ir/rust/quadecho.ir -all: ir/rust/reverb_designer.ir -all: ir/rust/reverb_tester.ir -all: ir/rust/smoothdelay.ir -#all: ir/rust/sound.ir -all: ir/rust/spat.ir -all: ir/rust/spectral_level.ir -all: ir/rust/spectral_tilt.ir -all: ir/rust/stereoecho.ir -all: ir/rust/switcher.ir -all: ir/rust/table.ir -all: ir/rust/table1.ir -all: ir/rust/table2.ir -all: ir/rust/tapiir.ir -all: ir/rust/tester.ir -all: ir/rust/tester2.ir -all: ir/rust/tf_exp.ir -all: ir/rust/thru_zero_flanger.ir -all: ir/rust/UITester.ir -all: ir/rust/vcf_wah_pedals.ir -all: ir/rust/virtual_analog_oscillators.ir -all: ir/rust/volume.ir -all: ir/rust/vumeter.ir -all: ir/rust/waveform1.ir -all: ir/rust/waveform2.ir -all: ir/rust/waveform3.ir -all: ir/rust/waveform4.ir -all: ir/rust/waveform5.ir -all: ir/rust/waveform6.ir -all: ir/rust/zita_rev1.ir - -filesCompare: +dspfiles := $(wildcard dsp/*.dsp) +listfiles = $(dspfiles:dsp/%.dsp=ir/$1/%.ir) + +######################################################################### +all: filesCompare ir/$(outdir) $(call listfiles,$(outdir)) + +######################################################################### +# output directories +ir/$(outdir): + mkdir -p ir/$(outdir) + + +######################################################################### +# tools +filesCompare: $(MAKE) filesCompare ######################################################################### # rules -ir/$(outdir)/%.ir: reference/%.ir - mkdir -p ir/$(outdir) - $(FAUST) -lang rust $(FAUSTOPTIONS) -i -A ../../architecture dsp/$*.dsp -o archs/rust/src/bin/$*.rs - #cd archs/rust/ && cargo run --bin $* ../../$@ + +ir/$(outdir)/sound.ir: dsp/sound.dsp + $(FAUST) -lang rust $(FAUSTOPTIONS) dsp/sound.dsp -o archs/rust/src/bin/sound.rs > $@ 2>&1 || (echo "expected failure") + grep "ERROR : 'soundfile' primitive not yet supported for Rust" $@ + +ir/rust/ec/bs.ir: dsp/bs.dsp + $(FAUST) -lang rust $(FAUSTOPTIONS) dsp/bs.dsp -o archs/rust/src/bin/bs.rs > $@ 2>&1 || (echo "expected failure") + grep "ERROR : accessing foreign variable 'count' is not allowed in this compilation mode" $@ + +ir/rust/vec4/osc_enable.ir: dsp/osc_enable.dsp + $(FAUST) -lang rust $(FAUSTOPTIONS) dsp/osc_enable.dsp -o archs/rust/src/bin/osc_enable.rs > $@ 2>&1 || (echo "expected failure") + grep "ERROR : 'control/enable' can only be used in scalar mode" $@ + +ir/rust/vec32/osc_enable.ir: dsp/osc_enable.dsp + $(FAUST) -lang rust $(FAUSTOPTIONS) dsp/osc_enable.dsp -o archs/rust/src/bin/osc_enable.rs > $@ 2>&1 || (echo "expected failure") + grep "ERROR : 'control/enable' can only be used in scalar mode" $@ + +ir/rust/vec4/prefix.ir: + echo "todo fix bug #1071 to test dsp/prefix.dsp" + +ir/rust/vec32/prefix.ir: + echo "todo fix bug #1071 to test dsp/prefix.dsp" + +ir/$(outdir)/%.ir: dsp/%.dsp reference/%.ir + $(FAUST) -lang rust $(FAUSTOPTIONS) dsp/$*.dsp -o archs/rust/src/bin/$*.rs cd archs/rust/ && cargo run --release --bin $* ../../$@ - $(COMPARE) $@ reference/$(notdir $@) $(precision) + $(COMPARE) $@ reference/$(notdir $@) $(precision) || (rm -f $@; false) diff --git a/tests/impulse-tests/Makefile b/tests/impulse-tests/Makefile index 37686d001f..1b360ee6f2 100644 --- a/tests/impulse-tests/Makefile +++ b/tests/impulse-tests/Makefile @@ -362,17 +362,12 @@ interp1: ######################################################################### # Rust backend rust: - $(MAKE) -f Make.rust FAUSTOPTIONS="-I dsp -double -cm -a archs/rust/architecture_cm.rs" - rm -rf ir/rust - $(MAKE) -f Make.rust FAUSTOPTIONS="-I dsp -double -ec -a archs/rust/architecture.rs" - rm -rf ir/rust - $(MAKE) -f Make.rust FAUSTOPTIONS="-I dsp -double -a archs/rust/architecture_normal.rs" - rm -rf ir/rust - $(MAKE) -f Make.rust FAUSTOPTIONS="-I dsp -double -fp -a archs/rust/architecture_normal.rs" - rm -rf ir/rust - $(MAKE) -f Make.rust FAUSTOPTIONS="-I dsp -double -vec -vs 4 -a archs/rust/architecture_normal.rs" - rm -rf ir/rust - $(MAKE) -f Make.rust FAUSTOPTIONS="-I dsp -double -vec -vs 32 -a archs/rust/architecture_normal.rs" + $(MAKE) -f Make.rust outdir=rust/ec FAUSTOPTIONS="-I ../../libraries/ -double -ec -a archs/rust/architecture.rs" + $(MAKE) -f Make.rust outdir=rust/cm FAUSTOPTIONS="-I ../../libraries/ -double -cm -a archs/rust/architecture_cm.rs" + $(MAKE) -f Make.rust outdir=rust/no FAUSTOPTIONS="-I ../../libraries/ -double -a archs/rust/architecture_normal.rs" + $(MAKE) -f Make.rust outdir=rust/fp FAUSTOPTIONS="-I ../../libraries/ -double -fp -a archs/rust/architecture_normal.rs" + $(MAKE) -f Make.rust outdir=rust/vec4 FAUSTOPTIONS="-I ../../libraries/ -double -vec -vs 4 -a archs/rust/architecture_normal.rs" + $(MAKE) -f Make.rust outdir=rust/vec32 FAUSTOPTIONS="-I ../../libraries/ -double -vec -vs 32 -a archs/rust/architecture_normal.rs" ######################################################################### # Cmajor backend