# Makefile for indiserver, sample simulated drivers and other misc INDI tools.

.SUFFIXES: .1 .man

# relative path to dir with libraries
LIBROOT = ../../../..

# compiler and linker flags
CC = gcc
CLDFLAGS = -g
GCCFLAGS = -ffast-math -Wall
CFLAGS = $(CLDFLAGS) $(GCCFLAGS) -I$(LIBROOT)/libastro -I$(LIBROOT)/liblilxml -I$(LIBROOT)/libz  -I$(LIBROOT)/libip
LDFLAGS = $(CLDFLAGS) -L$(LIBROOT)/libastro -L$(LIBROOT)/liblilxml -L$(LIBROOT)/libz -L$(LIBROOT)/libip
LIBS = -lastro -llilxml -lz -lm

# list each sample device
DRVS = tmount ota wx cam security

# supporting files comprising the INDI driver framework implementation
IDAI = indidrivermain.o eventloop.o

# build everything
all: indiserver drivers getINDI setINDI evalINDI getINDI.1 setINDI.1 evalINDI.1 indiserver.1 indidevapi.1

# build everything and start indiserver with all sample drivers
run: all
	indiserver $(DRVS) > x.err 2>&1 &

# build server
indiserver: indiserver.o fq.o
	$(CC) $(LDFLAGS) -o $@ indiserver.o fq.o $(LIBS) -lpthread

# build each sample driver
drivers: $(DRVS)

# build each INDI driver process
tmount: $(IDAI) tmount.o
	$(CC) $(LDFLAGS) -o $@ $(IDAI) tmount.o $(LIBS)

ota: $(IDAI) ota.o
	$(CC) $(LDFLAGS) -o $@ $(IDAI) ota.o $(LIBS)

wx: $(IDAI) wx.o
	$(CC) $(LDFLAGS) -o $@ $(IDAI) wx.o $(LIBS)

cam: $(IDAI) cam.o
	$(CC) $(LDFLAGS) -o $@ $(IDAI) cam.o -lip $(LIBS)

security: $(IDAI) security.o
	$(CC) $(LDFLAGS) -o $@ $(IDAI) security.o $(LIBS)

getINDI: getINDI.o
	$(CC) $(LDFLAGS) -o $@ $? $(LIBS)

setINDI: setINDI.o
	$(CC) $(LDFLAGS) -o $@ $? $(LIBS)

evalINDI: evalINDI.o compiler.o
	$(CC) $(LDFLAGS) -o $@ evalINDI.o compiler.o $(LIBS)

.man.1:
	nroff -man $< > $@


# clean up
clobber:
	touch x.o x.1
	rm -f *.o indiserver $(DRVS) x.err *.1

# For RCS Only -- Do Not Edit
# @(#) $RCSfile: Makefile,v $ $Date: 2006/03/19 03:14:17 $ $Revision: 1.21 $ $Name:  $
