CC = gcc
CPP = g++
LD = $(CPP)
LDFLAGS = `sdl-config --libs` `xml2-config --libs` -lSDL_image -lSDL_ttf -lm -lxml2 -rdynamic -ljpeg -ldl
PROG = SDLcam

FEATURES = -DMMX -DTIMER

MMXFLAGS =     -Wshadow -Wall -Wstrict-prototypes `sdl-config --cflags` `xml2-config --cflags` -DPROG_VERSION=\"0.7.3\" $(FEATURES)
CFLAGS = $(MMXFLAGS) -g


OBJS = main.o init.o SDL_v4l.o SDL_v4l_filters.o webcam.o interface.o configuration.o config_file.o SDL_v4l_filters_thomas.o dump_thomas.o capture.o ftp-upload.o logo.o parser.o misc.o xml_theme.o dyn_misc.o

# $(wildcard filter/*.c)
FILTERS=$(patsubst %.c,%.so,$(wildcard filter/*.c))  $(patsubst %.cpp,%.so,$(wildcard filter/*.cpp))  
CAPTURE=$(patsubst %.c,%.so,$(wildcard capture/*.c)) $(patsubst %.cpp,%.so,$(wildcard capture/*.cpp))
SOURCES=$(patsubst %.c,%.so,$(wildcard sources/*.c)) $(patsubst %.cpp,%.so,$(wildcard sources/*.cpp))
MODULES=$(FILTERS) $(CAPTURE) $(SOURCES)

.PHONY : clean install

all: $(PROG) $(MODULES)

clean:
	rm -f SDLcam *.o *.core core *.bak *~ *.so install $(MODULES)

install: 
	cat install.sh > install
	chmod a+x install
	./install

%.o: %.cpp
	$(CC) $(CFLAGS) -c $<

%.o: %.c
	$(CPP) $(CFLAGS) -c $<

sources/%.so: sources/%.cpp
	$(CPP) $(FEATURES) -g -fPIC -shared -o $@ $?

sources/jpeg.so: sources/jpeg.cpp
	$(CPP) $(FEATURES) -g -fPIC -shared -o $@ $? -ljpeg

filter/%.so: filter/%.c
	$(CC) $(FEATURES) -g -fPIC -shared -o $@ $?

capture/mpeg.so: capture/mpeg.c
	- $(CC) $(FEATURES) -g -fPIC -shared -o $@ $? -lfame

capture/divx.so: capture/divx.c
	- $(CC) $(FEATURES) -g -fPIC -shared -o $@ $? -ldivxencore

capture/divx2.so: capture/divx2.cpp
	- $(CPP) $(FEATURES) -g -fPIC -shared -o $@ $?

SDLcam: $(OBJS)
	$(LD) $(LDFLAGS) $(OBJS) -o $(PROG) 
#	$(LD) $(LDFLAGS) $(OBJS) -o $(PROG) -laviplay

SDL_v4l_filters_thomas.o: SDL_v4l_filters_thomas.c
	$(CC) $(MMXFLAGS) -c SDL_v4l_filters_thomas.c
