
CFLAGS:=-g -Wall  -fno-inline-functions-called-once
#CFLAGS+=-O2 -march=pentium-m -fno-inline-functions-called-once
#CFLAGS+=-O3 -march=pentium-m

# Uncomment these line, if you want to profile the library
#CFLAGS  += -g -pg
#LDFLAGS += -g -pg

# Uncomment these lines, if you want to profile branches
#CFLAGS += -g -fprofile-arcs -ftest-coverage -fbranch-probabilities
#LDFLAGS += -fprofile-arcs -ftest-coverage

CFLAGS_STATIC=$(CFLAGS)
CFLAGS_DYNAMIC=$(CFLAGS) -fPIC -DPIC

OBJECTS=libpwc.o pwc-dec23.o pwc-kiara.o pwc-timon.o pwc-raw.o convert.o
SOURCES=libpwc.c pwc-dec23.c pwc-kiara.c pwc-timon.c pwc-raw.c convert.c
HEADERS=libpwc.h

all: static testlibpwc

testlibpwc: testlibpwc.o libpwc.a
	$(CC) -o $@ $< $(LDFLAGS) -L. -lpwc -Wl,-rpath=. -lm

static: libpwc.a

shared: libpwc.so.0.0.1

libpwc.a: $(SOURCES)
	$(RM) $(OBJECTS)
	$(CC) -c $(CFLAGS_STATIC) $(SOURCES)
	$(AR) rc $@ $(OBJECTS)
	ranlib $@

libpwc.so.0.0.1: $(SOURCES)
	$(RM) $(OBJECTS)
	$(CC) -c $(CFLAGS_DYNAMIC) $(SOURCES)
	$(CC) -shared -Wl,-soname,libpwc.so.0 -o $@ $(OBJECTS)

clean:
	$(RM) $(OBJECTS)
	$(RM) libpwc.a libpwc.so.0.0.1 testlibpwc testlibpwc.o

bench: testlibpwc
	# md5sum 
	@./testlibpwc -i pwc-rawimage.raw \
                     -o /tmp/webcam-00000.yuv \
                     -O yuv420p
	# 7cbfbffd0231cd20bd4a0984c91d3531  /tmp/webcam-00000.yuv
	@echo -n "  " ; md5sum /tmp/webcam-00000.yuv | grep 7cbfbffd0231cd20bd4a0984c91d3531 || exit 1
	./testlibpwc -i pwc-rawimage.raw \
		     -o /tmp/webcam-00000.yuv \
		     -O yuv420p \
		     --benchmark
	./testlibpwc -i pwc-rawimage.raw \
		     -o /tmp/webcam-00000.tga \
		     -O tga \
		     --benchmark

check: yuyv uyvy

tga: testlibpwc
	./testlibpwc -v -I tga -O yuv420p -i image-1600x1200.tga -o /tmp/toto.yuv -S 320x240


yuyv: testlibpwc
	./testlibpwc -v -I yuyv -O yuv420p -i image-1280x960.yuyv -o /tmp/toto.yuv -S 320x240
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-320x240.tga
	./testlibpwc -v -I yuyv -O yuv420p -i image-1280x960.yuyv -o /tmp/toto.yuv -S 512x384
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-512x384.tga
	./testlibpwc -v -I yuyv -O yuv420p -i image-1280x960.yuyv -o /tmp/toto.yuv -S 640x480
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-640x480.tga
	./testlibpwc -v -I yuyv -O yuv420p -i image-1280x960.yuyv -o /tmp/toto.yuv -S 960x720
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-960x720.tga
	./testlibpwc -v -I yuyv -O yuv420p -i image-1280x960.yuyv -o /tmp/toto.yuv -S 1280x960
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-1280x960.tga
	feh /tmp/toto-320x240.tga /tmp/toto-512x384.tga /tmp/toto-640x480.tga /tmp/toto-960x720.tga /tmp/toto-1280x960.tga


uyvy: testlibpwc
	./testlibpwc -v -I uyvy -O yuv420p -i image-1280x960.uyvy -o /tmp/toto.yuv -S 320x240
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-320x240.tga
	./testlibpwc -v -I uyvy -O yuv420p -i image-1280x960.uyvy -o /tmp/toto.yuv -S 512x384
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-512x384.tga
	./testlibpwc -v -I uyvy -O yuv420p -i image-1280x960.uyvy -o /tmp/toto.yuv -S 640x480
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-640x480.tga
	./testlibpwc -v -I uyvy -O yuv420p -i image-1280x960.uyvy -o /tmp/toto.yuv -S 960x720
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-960x720.tga
	./testlibpwc -v -I uyvy -O yuv420p -i image-1280x960.uyvy -o /tmp/toto.yuv -S 1280x960
	./testlibpwc -v -I yuv420p -O tga -i /tmp/toto.yuv -o /tmp/toto-1280x960.tga
	feh /tmp/toto-320x240.tga /tmp/toto-512x384.tga /tmp/toto-640x480.tga /tmp/toto-960x720.tga /tmp/toto-1280x960.tga




.PHONY: check uyvy yuvy

