TOPDIR=../..
include $(TOPDIR)/src/Makefile.opt

CCC = g++
CC = gcc
CCFLAGS = -g -D_REENTRANT $(NOISY) -Wall -pedantic $(X11_CFLAGS) \
	 $(R2LLIB_CFLAGS) $(REFRESHD_INCLUDES) $(OPT_CFLAGS) $(SOCK_CFLAGS) -c

LDFLAGS = -g 
LIBS = -lpthread $(X11_LIBS) $(R2LLIB_LIBS) $(REFRESHD_LIBS) $(SOCKET_LIBS)
REFRESHD = refreshd
MAN_PAGES = refreshd.1
PROGS = $(REFRESHD)

OBJS = debug.o window_db.o auto_display.o\
	window_db_iterator.o traverse.o error_handler.o\
	refresher.o scavenger.o communication.o main.o

$(REFRESHD): $(OBJS)
	$(CCC) $(LDFLAGS) $(OBJS)  -o $@ $(LIBS)

clean:
	rm -f *.o *~ a.out core

debug.o: debug.c debug.h
	$(CC) $(CCFLAGS) debug.c

window_db.o: window_db.cc window_db.h auto_display.h debug.h
	$(CCC) $(CCFLAGS) window_db.cc

auto_display.o: auto_display.cc auto_display.h debug.h
	$(CCC) $(CCFLAGS) auto_display.cc

window_db_iterator.o: window_db_iterator.cc window_db_iterator.h\
			 window_db.h auto_display.h
	$(CCC) $(CCFLAGS) window_db_iterator.cc

traverse.o: traverse.cc traverse.h window_db_iterator.h  window_db.h debug.h
	$(CCC) $(CCFLAGS) traverse.cc

error_handler.o: error_handler.cc error_handler.h traverse.h
	$(CCC) $(CCFLAGS) error_handler.cc

refresher.o: refresher.cc refresher.h window_db_iterator.h  window_db.h debug.h
	$(CCC) $(CCFLAGS) refresher.cc

scavenger.o: scavenger.cc scavenger.h window_db_iterator.h  window_db.h debug.h
	$(CCC) $(CCFLAGS) scavenger.cc

communication.o: communication.cc communication.h refresher.h\
		window_db_iterator.h  window_db.h debug.h
	$(CCC) $(CCFLAGS) communication.cc

main.o: main.cc  window_db.h error_handler.h communication.h\
	refresher.h scavenger.h 
	$(CCC) $(CCFLAGS) main.cc

install: $(PROGS) $(MAN_PAGES)
	$(INSTALL) -d $(BINDIR)
	for prog in $(PROGS); do \
	  $(INSTALL) $$prog $(BINDIR); \
	done
	$(INSTALL) -d $(MANDIR)
	for man_page in $(MAN_PAGES); do \
	  $(INSTALL) $$man_page $(TARGET_MANDIR); \
	done

uninstall:
	for file in $(PROGS) ; \
	  do $(RM) $(BINDIR)/$$file; \
	done
	for file in $(MAN_PAGES) ; \
	  do $(RM) $(TARGET_MANDIR)/$$file; \
	done

