DIRS += ../shared
INCDIRS += -I../shared
LIBS += -lm

C_SRC = $(foreach DIR, $(DIRS), $(wildcard $(DIR)/*.c))
CPP_SRC = $(foreach DIR, $(DIRS), $(wildcard $(DIR)/*.cpp))
VCL_SRC = $(foreach DIR, $(DIRS), $(wildcard $(DIR)/*.vcl))
OBJS = $(CPP_SRC:.cpp=.o) $(C_SRC:.c=.o) $(VCL_SRC:.vcl=.o)
CFLAGS = -O2 -Wall -fno-common -ffast-math $(INCDIRS)
	
$(TARGET): $(OBJS)
	gcc -o $(TARGET) $(OBJS) $(LIBS)
	strip $(TARGET)

%.o: %.c
	makedepend -- $(CFLAGS) -- $*.c -f- > $(*D)/.$(*F).depend
	gcc $(CFLAGS) -c $*.c -o $*.o

%.o: %.cpp
	makedepend -- $(CFLAGS) -- $*.cpp -f- > $(*D)/.$(*F).depend
	gcc $(CFLAGS) -c $*.cpp -o $*.o

%.o: %.vcl ../shared/bin2as/bin2as
	makedepend -- $(CFLAGS) -- $*.vcl -f- > $(*D)/.$(*F).depend
	../shared/pp.py $*.vcl > $*.t2_
	vcl -o$*.t1_ -g $*.t2_
	ee-dvp-as -o $*.t2_ $*.t1_
	objcopy -Obinary $*.t2_ $*.t1_
	../shared/bin2as/bin2as $(*F)_vu $*.t1_ > $*.t2_
	as -KPIC -o $*.o $*.t2_
	rm $*.t1_ $*.t2_

../shared/bin2as/bin2as: ../shared/bin2as/bin2as.c
	gcc -o ../shared/bin2as/bin2as ../shared/bin2as/bin2as.c
	strip ../shared/bin2as/bin2as

clean:
	rm -f $(TARGET)
	rm -f $(foreach DIR, $(DIRS), $(DIR)/*.o)
	rm -f $(foreach DIR, $(DIRS), $(DIR)/.*.depend)

DEPENDENCIES = $(foreach DIR, $(DIRS), $(wildcard $(DIR)/.*.depend))
ifneq ($(strip $(DEPENDENCIES)),)
	include $(DEPENDENCIES)
endif

