include ../../make.include
include ../../make.pkgs

CXXFLAGS = $(CXXOPT) -I. -I.. -I../vector -I../util \
	-I../../include -I$(X11INCLUDE) \
	-I../../$(FUNTOOLSDIR)/filter -I../../$(FUNTOOLSDIR)/fitsy \
	-I../../$(FUNTOOLSDIR)/util

SS	= \
	alloc.C \
	allocgz.C \
	analysis.C \
	card.C \
	channel.C \
	column.C \
	compress.C \
	gzip.C \
	gzraw.C \
	iis.C \
	hcompress.C \
	hdu.C \
	head.C \
	hist.C \
	hpx.C \
	file.C \
	map.C \
	mapincr.C \
	mmap.C \
	mmapincr.C \
	nrrd.C \
	nrrdgzip.C \
	outchannel.C \
	outfile.C \
	outfits.C \
	outsocket.C \
	photo.C \
	plio.C \
	rice.C \
	savefits.C \
	share.C \
	sshare.C \
	smap.C \
	smmap.C \
	socket.C \
	socketgz.C \
	strm.C \
	var.C

SRC	= $(SS) \
	parser.C \
	lex.C \
	nrrdparser.C \
	nrrdlex.C

INCLS	= $(wildcard *.h)
OBJS	= $(SRC:%.C=%.o)

all	: $(OBJS) TAGS

clean	: FORCE
	rm -f core *~ *#

distclean : clean
	rm -f TAGS *.o parser.output nrrdparser.output

ifdef DEPENDS
TAGS	: $(SS) $(INCLS)
	etags $+
else
TAGS	: FORCE
endif

parsers	: parser nrrdparser

parser	: FORCE
	bison -d -p ff -o parser.C parser.Y
	flex -Pff -olex.C lex.L

nrrdparser : FORCE
	bison -d -p nrrd -o nrrdparser.C nrrdparser.Y
	flex -Pnrrd -onrrdlex.C nrrdlex.L

shmload	: shmload.C
	$(RM) $@
	$(CXX) $(CXXOPT) -o $@ $<
	cp $@ ../../bin/.

FORCE	:

ifdef DEPENDS
%.d: %.C
	set -e; $(CXX) -MM $(CXXFLAGS) $< \
	| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
	[ -s $@ ] || rm -f $@

include $(SS:.C=.d)
endif
