PREFIX=/usr/local
SHARE_PATH=$(PREFIX)/lib/peruser
LIBEXEC_PATH=$(PREFIX)/libexec/peruser
EXEC_PATH=$(PREFIX)/bin
UUDEVIEW_PATH=/usr/local/src/uudeview-0.5.13
CC=gcc
INSTALL=install -c

PIXMAPS=next_group.xpm prev_group.xpm next_article.xpm prev_article.xpm \
	next_unread.xpm prev_unread.xpm next_server.xpm prev_server.xpm \
	next_non_empty_group.xpm prev_non_empty_group.xpm jimmy-fish0.xpm \
	jimmy-fish0.xpm jimmy-fish1.xpm jimmy-fish2.xpm jimmy-fish5.xpm \
	jimmy-fish6.xpm jimmy-fish7.xpm jimmy-fish8.xpm jimmy-fish11.xpm \
	title.xpm

all: libnews peruser nplister

PERUSER_OPTS= -g -Wall 
PERUSER_LIBS= -L/usr/X11R6/lib -L/usr/lib -L/usr/local/lib -lEZ -ljpeg -lX11 -lXext -lm
PERUSER_INCS= -Ilibnews -I$(UUDEVIEW_PATH)/uulib
PERUSER_OBJS= peruser.o newsreader.o tree.o summary.o message.o buttons.o \
      newsrc.o search.o update.o configure.o folders.o edit.o \
		libnews/libnews.a $(UUDEVIEW_PATH)/uulib/libuu.a

peruser.o: peruser.c peruser.h newsreader.h
	$(CC) $(PERUSER_OPTS) -c peruser.c $(PERUSER_INCS)

newsreader.o: newsreader.c peruser.h peruser.xpm 
	$(CC) $(PERUSER_OPTS) -c newsreader.c $(PERUSER_INCS)

tree.o: tree.c peruser.h tree.h summary.h message.h buttons.h \
	folder.xpm virtual.xpm news.xpm inbox.xpm
	$(CC) $(PERUSER_OPTS) -c tree.c $(PERUSER_INCS)

summary.o: summary.c summary.h peruser.h 
	$(CC) $(PERUSER_OPTS) -c summary.c $(PERUSER_INCS)

message.o: message.c message.h peruser.h
	$(CC) $(PERUSER_OPTS) -c message.c $(PERUSER_INCS)

buttons.o: $(PIXMAPS) buttons.c buttons.h \
	update.h search.h newsrc.h edit.h peruser.h 
	$(CC) $(PERUSER_OPTS) -DSHARE_PATH=\"$(SHARE_PATH)\" $(PERUSER_INCS) \
	-c buttons.c 

update.o: update.c update.h peruser.h
	$(CC) $(PERUSER_OPTS) -c update.c $(PERUSER_INCS)

configure.o: configure.c configure.h peruser.h
	$(CC) $(PERUSER_OPTS) -c configure.c $(PERUSER_INCS)

newsrc.o: newsrc.c newsrc.h peruser.h confirm.xpm query.xpm \
	animate_0.xpm animate_1.xpm animate_2.xpm animate_3.xpm animate_4.xpm \
	animate_5.xpm animate_6.xpm
	$(CC) $(PERUSER_OPTS) -DLIBEXEC_PATH=\"$(LIBEXEC_PATH)\" \
	$(PERUSER_INCS) -c newsrc.c

search.o: search.c search.h peruser.h
	$(CC) $(PERUSER_OPTS) -c search.c $(PERUSER_INCS)

folders.o: folders.c folders.h peruser.h
	$(CC) $(PERUSER_OPTS) -c folders.c $(PERUSER_INCS)

edit.o: edit.c edit.h peruser.h
	$(CC) $(PERUSER_OPTS) -c edit.c $(PERUSER_INCS)

peruser: $(PERUSER_OBJS) peruser.h
	$(CC) $(PERUSER_OPTS) $(PERUSER_LIBS) -o peruser $(PERUSER_OBJS)

nplister: nplister.o libnews/libnews.a
	$(CC) $(PERUSER_OPTS) $(PERUSER_LIBS) -o nplister nplister.o \
	libnews/libnews.a $(PERUSER_INCS) 

nplister.o: nplister.c libnews/libnews.h
	$(CC) $(PERUSER_OPTS) -c nplister.c $(PERUSER_INCS)

# Phony targets

.PHONY: install
install: all
	$(INSTALL) -m 0555 peruser $(EXEC_PATH)
	$(INSTALL) -m 0555 -d $(SHARE_PATH) $(LIBEXEC_PATH)
	$(INSTALL) -m 0555 nplister $(LIBEXEC_PATH)
	$(INSTALL) -m 0444 main.help config.help \
	newsrc.help virtual.help folders.help create.help \
	inboxes.help addresses.help $(SHARE_PATH)

.PHONY: uninstall
uninstall:
	rm -f $(EXEC_PATH)/peruser
	rm -f $(SHARE_PATH)/main.help $(SHARE_PATH)/config.help \
			$(SHARE_PATH)/newsrc.help $(SHARE_PATH)/virtual.help \
			$(SHARE_PATH)/folders.help
	rm -f $(LIBEXEC_PATH)/nplister

.PHONY: not
not:  
	rm -f peruser
	make

.PHONY: testing
testing: libnews $(PERUSER_OBJS) peruser.h
	$(CC) $(PERUSER_OPTS) $(PERUSER_LIBS) -ldl -o peruser \
	/usr/local/lib/libccmalloc.a $(PERUSER_OBJS)

.PHONY: libnews
libnews: 
	$(MAKE) -C libnews

.PHONY: clean
clean: 
	rm -f peruser nplister *.bak *~ *.o core tags TAGS

.PHONY: realclean
realclean: clean
	$(MAKE) -C libnews clean

.PHONY: ctags
ctags:
	ctags *.c *.h
	$(MAKE) -C libnews ctags

.PHONY: etags
etags:
	etags *.c *.h
	$(MAKE) -C libnews etags
