CC=gcc
CFLAGS=-Wall -Wstrict-prototypes -Wmissing-prototypes -ansi

musica: fst.o musica.o taufreq.o

fst.o: fst.c fst.h
musica.o: musica.c fst.h taufreq.h
taufreq.o: taufreq.c taufreq.h

.PHONY: all
all: genseq musica

#
# make clean
#	Neteja el directori de treball
#

.PHONY: clean
clean:
	rm -f *~ *.o musica *.tgz

#
# make musica.tar
#	Genera el fitxer tar comprimit que cal lliurar
#

musica.tgz: WHO Makefile musica.c fst.c fst.h taufreq.c taufreq.h
	tar zcvf $@ $^

#
# make test
#	Executa els tests proporcionats
#

PROGRAM=musica
TESTS=1 2 3
TESTINPUT=vots.txt
TESTOUTPUT=top10.txt

TESTIO=$(TESTINPUT) $(TESTOUTPUT)

genfiles=$(join $(addsuffix -$(1),$(basename $(2))),$(suffix $(2)))

TESTFILES=$(foreach t,$(TESTS),$(call genfiles,$(t),$(TESTIO)))

.PHONY: test
test: $(PROGRAM) $(TESTFILES)
	for t in $(TESTS); \
	do \
	    echo Test $$t: inici; \
	    $(foreach f,$(TESTINPUT),cp $(call genfiles,$$t,$(f)) $(f);) \
	    $(PROGRAM); \
	    $(foreach f,$(TESTOUTPUT),diff $(call genfiles,$$t,$(f)) $(f) &&) \
	    echo Test $$t: correcte; \
	done

#
# make material
#

.PHONY: material
material: Makefile taufreq.c taufreq.h fst.c fst.h $(TESTFILES)
	cp $^ ../fitxersMusica
