include config.mak

SRCS = src/analyse.c src/common.c src/decoder.c src/dsp.c \
       src/encoder.c src/macroblock.c src/me.c src/param.c \
       src/rangecoder.c src/rdo.c src/rdo2.c src/read.c \
       src/tables.c src/write.c \

ifeq ($(HAVE_LINALG),yes)
SRCS += src/lookahead.c
endif

CLISRCS = xlsc.c muxers.c

ifeq ($(ARCH),X86_64)
SRCS += src/x86_64/dsp-a.c
ASMSRCS = src/x86_64/cpu-a.asm src/x86_64/dct-a.asm src/x86_64/mc-a.asm src/x86_64/pixel-a.asm
ASFLAGS += -Isrc/x86_64
endif

OBJS = $(SRCS:%.c=%.o) $(ASMSRCS:%.asm=%.o)
CLIOBJS = $(CLISRCS:%.c=%.o)

all: .depend libxlsc.a xlsc

ifneq ($(wildcard .depend),)
include .depend
endif

.PHONY: .depend clean distclean
depend: .depend
.depend: config.mak
	@ rm -f .depend
	-@ $(foreach SRC, $(SRCS) $(CLISRCS), $(CC) $(CFLAGS) $(SRC) -MM -MT $(SRC:%.c=%.o) -g0 >> .depend;)

config.mak: $(wildcard .svn/entries */.svn/entries */*/.svn/entries)
	./configure $(CONFIGURE_ARGS)

distclean: clean
	rm -f .depend config.mak

clean:
	rm -f xlsc libxlsc.a $(OBJS) $(CLIOBJS)

%.o: %.asm
	$(AS) $(ASFLAGS) -o $@ $<
	-@ strip -x $@

libxlsc.a: $(OBJS)
	$(AR) rc $@ $(OBJS)

xlsc: $(CLIOBJS) libxlsc.a
	$(CC) $(LDFLAGS) -o $@ $+
