SRCS := \
	audio.c \
	audio_internal.c \
	audio_source_file.c \
	audio_source_testtone.c \
	audio_demuxer_mp3.c \
	audio_decoder_mp3.c \
	audio_demuxer_adts.c \
	audio_decoder_aac.c \
	audio_filter_param_eq.c \
	audio_filter_resample.c \
	audio_sink_file.c \
	audio_sink_libao.c

INCLUDES := -Iinclude `pkg-config --cflags ao`

BUILDDIR = .build
TARGET := $(BUILDDIR)/libaudio.a
OBJS := $(addprefix $(BUILDDIR)/, $(patsubst %.c,%.o, $(SRCS)))

CC = gcc
AR = ar
CFLAGS = --std=gnu99 -Wall -Os

all: $(TARGET) $(BUILDDIR)/libmad/libmad.a $(BUILDDIR)/speexdsp/libspeexresampler.a $(BUILDDIR)/libfaad2/libfaad2.a

$(TARGET): $(OBJS)
	$(AR) -cr $(TARGET) $(OBJS)

$(BUILDDIR)/libmad/libmad.a:
	(cd deps/mp3; make BUILDDIR=$(abspath $(BUILDDIR)/libmad))

$(BUILDDIR)/speexdsp/libspeexresampler.a:
	(cd deps/resampler; make BUILDDIR=$(abspath $(BUILDDIR)/speexdsp))

$(BUILDDIR)/libfaad2/libfaad2.a:
	(cd deps/aac; make BUILDDIR=$(abspath $(BUILDDIR)/libfaad2))

$(BUILDDIR)/%.o: %.c %.h
	$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@

$(OBJS): | $(BUILDDIR)

$(BUILDDIR):
	mkdir -p $(BUILDDIR)

.PHONY: clean

clean:
	-rm $(OBJS)
	-rm $(TARGET)
	(cd deps/mp3; make BUILDDIR=$(abspath $(BUILDDIR)/libmad) clean)
	(cd deps/resampler; make BUILDDIR=$(abspath $(BUILDDIR)/speexdsp) clean)
	(cd deps/aac; make BUILDDIR=$(abspath $(BUILDDIR)/libfaad2) clean)