# Makefile for QCAM under Linux

# Where you want to install all of this.

INSTALLPATH=/usr/local
BINPATH=$(INSTALLPATH)/bin
CONFFILE=$(INSTALLPATH)/etc/qcam.conf

# Note: Using gcc 2.7.0 under Linux, I get the best speeds with -O.
# Using -O2 or -O6 slows xqcam down ~10%.  Using the -g flag makes no
# measurable speed difference.

CC=gcc
CFLAGS=-Wall -O4 -i486
DEFINES=-DCONFIG_FILE=\"$(CONFFILE)\"

LDFLAGS=$(CFLAGS)

XLIBS=-L/usr/X11R6/lib -lXext -lX11

OTHERLIBS=-lc

#### You shouldn't have to edit below here.

LIBS=$(XLIBS) $(OTHERLIBS)

C_SRCS=qcam.c qcam-os.c qcam-lib.c xdiff.c xqcam.c probeqcam.c qcam-simple.c

TARGETS=qcam xdiff xqcam probeqcam qcam-simple #xfqcam xtqcam


all:: libqcam.a $(TARGETS)

qcam: qcam.o libqcam.a
	rm -f qcam
	$(CC) $(LDFLAGS) -o qcam qcam.o -L. -lqcam

qcam-os.h:
	ln -sf qcam-`uname`.h qcam-os.h

qcam-os.c:
	ln -sf qcam-`uname`.c qcam-os.c

qcam-os.o: qcam-os.c qcam-os.h
	$(CC) $(CFLAGS) -c -o qcam-os.o qcam-os.c

qcam-lib.o:
	$(CC) $(CFLAGS) $(DEFINES) -c -o qcam-lib.o qcam-lib.c

xqcam: xqcam.o libqcam.a
	rm -f xqcam
	$(CC) $(LDFLAGS) -o xqcam xqcam.o -L. -lqcam $(LIBS)

xdiff: xdiff.o libqcam.a
	rm -f xdiff
	$(CC) $(LDFLAGS) -o xdiff xdiff.o -L. -lqcam $(LIBS)

xfqcam: xfqcam.o controlpanel.o libqcam.a
	rm -f xfqcam
	$(CC) $(LDFLAGS) -o xfqcam xfqcam.o controlpanel.o -L. -lqcam -lforms $(LIBS) -lm

qcam-simple: qcam-simple.o libqcam.a

probeqcam: probeqcam.o libqcam.a
	rm -f probeqcam
	$(CC) $(LDFLAGS) -o probeqcam probeqcam.o -L. -lqcam
	

libqcam.a: qcam-os.o qcam-lib.o
	rm -f libqcam.a
	ar rcs $@ $^ 


install:: all
	install -s -m 4755 -o root qcam $(BINPATH)
	install -s -m 4755 -o root xqcam $(BINPATH)
	install -m 755 -o root tkqcam $(BINPATH)

install-conf::
	cp qcam.conf $(CONFFILE)

clean:: 
	rm -f *.o $(TARGETS) *.pgm *~ qcam-os.[ch] *.a

depend:: $(C_SRCS)
	sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
	$(CC) $(CFLAGS) -MM $(C_SRCS) >> tmp_make
	mv tmp_make Makefile

### Dependencies:
qcam.o: qcam.c qcam.h
qcam-lib.o: qcam-lib.c qcam.h qcam-os.h
xqcam.o: xqcam.c qcam.h qcam-os.h
probeqcam.o: probeqcam.c qcam.h
qcam-simple.o: qcam-simple.c qcam.h
