CC            = gcc
CFLAGS        = -g -Wall -Iinclude
LDFLAGS       = -shared -Llib
CONVERT_OBJS  = $(addprefix libv4lconvert/,libv4lconvert.o tinyjpeg.o \
                  jidctflt.o spca561-decompress.o rgbyuv.o spca501.o \
                  bayer.o)
CONVERT_LIB   = libv4lconvert.so.0
V4L1_OBJS     = $(addprefix libv4l1/,libv4l1.o log.o)
V4L1_LIB      = libv4l1.so.0
V4L1COMPAT    = v4l1compat.so
V4L1COMPAT_O  = $(addprefix libv4l1/,v4l1compat.o)
V4L2_OBJS     = $(addprefix libv4l2/,libv4l2.o log.o)
V4L2_LIB      = libv4l2.so.0
V4L2CONVERT   = v4l2convert.so
V4L2CONVERT_O = $(addprefix libv4l2/,v4l2convert.o)
TARGETS       = lib/$(CONVERT_LIB) lib/$(V4L1_LIB) lib/$(V4L2_LIB) \
                lib/$(V4L1COMPAT) lib/$(V4L2CONVERT)

all: $(TARGETS)


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


lib/$(CONVERT_LIB): $(CONVERT_OBJS)
	$(CC) $(LDFLAGS) -Wl,-soname,$(CONVERT_LIB) -o $@ $^
	ln -f -s $(CONVERT_LIB) lib/$(basename $(CONVERT_LIB))

lib/$(V4L1_LIB): $(V4L1_OBJS) lib/$(V4L2_LIB)
	$(CC) $(LDFLAGS) -Wl,-soname,$(V4L1_LIB) -o $@ $^
	ln -f -s $(V4L1_LIB) lib/$(basename $(V4L1_LIB))

lib/$(V4L2_LIB): $(V4L2_OBJS) lib/$(CONVERT_LIB)
	$(CC) $(LDFLAGS) -Wl,-soname,$(V4L2_LIB) -o $@ $^
	ln -f -s $(V4L2_LIB) lib/$(basename $(V4L2_LIB))

lib/$(V4L1COMPAT): $(V4L1COMPAT_O) lib/$(V4L1_LIB)
	$(CC) $(LDFLAGS) -o $@ $^

lib/$(V4L2CONVERT): $(V4L2CONVERT_O) lib/$(V4L2_LIB)
	$(CC) $(LDFLAGS) -o $@ $^


clean:
	rm -f lib/*.so* */*.o log *~ */*~
