VERSION=$(shell awk '/Version:/ { print $$2 }' Xconfigurator.spec)
RELEASE=$(shell awk '/Release:/ { print $$2 }' Xconfigurator.spec)
ARCH=$(patsubst sparc64,sparc,$(patsubst i%86,i386,$(shell uname -m)))
CVSTAG = r$(subst .,-,$(VERSION))
CVSROOT = $(shell cat CVS/Root)
CARDSDIR = /usr/X11R6/lib/X11
SHAREDIR = /usr/X11R6/share/Xconfigurator
SCREENSDIR = $(SHAREDIR)/pixmaps
CFLAGS = -Wall -I/usr/include/kudzu -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" -DCARD_DATABASE_FILE='"$(CARDSDIR)/Cards"' -DMONITOR_DATABASE_FILE='"/usr/share/hwdata/MonitorsDB"' -DMONITORCARDCOMBO_DATABASE_FILE='"/usr/share/hwdata/CardMonitorCombos"' -DSAMPLESCREENS_DIR='"$(SCREENSDIR)"'  $(RPM_OPT_FLAGS)  `glib-config --cflags`
PROGS = Xconfigurator Xtest
BINDIR = /usr/X11R6/bin
MANDIR = /usr/X11R6/man
XCONF_LOADLIBES =  `glib-config --libs` -lnewt -lpopt -lkudzu -lpci 

XTEST_LOADLIBES =  `gnome-config --libs gdk_pixbuf`  -lpopt
SUBDIRS = po
INSTSUBDIRS = po


#--------------------------------------------------------------------------

XCONF_OBJS = Xconfigurator.o cards.o combo.o
XCONF_SOURCES = $(subst .o,.c,$(XCONF_OBJS) $(LIBOBJS))

XTEST_OBJS = Xtest.o
XTEST_SOURCES = $(subst .o,.c,$(XTEST_OBJS) $(LIBOBJS))

ifeq ($(RPM_OPT_FLAGS),)
CFLAGS += -g
LDFLAGS = -g
endif

ifeq (.depend,$(wildcard .depend))
TARGET=$(PROGS)
else
TARGET=depend $(PROGS)
endif

RCSVERSION = $(subst .,-,$(VERSION))

all: make-subdirs $(TARGET)

Xconfigurator: $(XCONF_OBJS)
	$(CC) $(LDFLAGS) -o Xconfigurator $(XCONF_OBJS) $(XCONF_LOADLIBES)

Xtest: $(XTEST_OBJS)
	$(CC) -o Xtest $(XTEST_OBJS) `gtk-config --libs` $(XTEST_LOADLIBES)

Xtest.o: Xtest.c
	$(CC) $(CFLAGS) -c Xtest.c `gtk-config --cflags` `gdk-pixbuf-config --cflags`

make-subdirs:
	for d in $(SUBDIRS); do \
		(cd $$d; $(MAKE)) \
		  || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac;\
	done && test -z "$$fail"

clean:
	rm -f *.o $(PROGS) core*
	for d in $(SUBDIRS); do \
		(cd $$d; $(MAKE) clean) \
		  || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac;\
	done && test -z "$$fail"
	@rm -rf .depend

depend:
	$(CPP) $(CFLAGS) -M $(XCONF_SOURCES) $(XTEST_SOURCES) `gtk-config --cflags` `gdk-pixbuf-config --cflags` > .depend

install:
	[ -d $(PREFIX)/$(BINDIR) ] || mkdir -p $(PREFIX)/$(BINDIR)
	[ -d $(PREFIX)/$(SHAREDIR) ] || mkdir -p $(PREFIX)/$(SHAREDIR)
	[ -d $(PREFIX)/usr/X11R6/lib/X11/doc ] || mkdir -p $(PREFIX)/usr/X11R6/lib/X11/doc
	[ -d $(PREFIX)/$(MANDIR)/man1 ] || mkdir -p $(PREFIX)/$(MANDIR)/man1
	[ -d $(PREFIX)/$(CARDSDIR) ] || mkdir -p $(PREFIX)/$(CARDSDIR)
	[ -d $(PREFIX)/$(SCREENSDIR) ] || mkdir -p $(PREFIX)/$(SCREENSDIR)
	install -m 755 $(PROGS) $(PREFIX)/$(BINDIR)
	install -m 644 Xconfigurator.man $(PREFIX)/$(MANDIR)/man1/Xconfigurator.1x
	install -m 644 misc/README.Config  $(PREFIX)/usr/X11R6/lib/X11/doc

	cd samplescreens; for d in 'panel*.png' 'desktop*.png'; do \
	    install -m 644 $$d $(PREFIX)/$(SCREENSDIR); \
	done

	for d in $(INSTSUBDIRS); do \
	(cd $$d; $(MAKE) install) \
	    || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac;\
	done && test -z "$$fail"

co:
	co RCS/*,v
	(cd examples; co RCS/*,v)

cvstag:
	cvs tag -F $(CVSTAG) .

archive:
	@rm -rf /tmp/Xconfigurator-$(VERSION) /tmp/Xconfigurator
	@cd /tmp; cvs -d $(CVSROOT) export -r $(CVSTAG) Xconfigurator
	@mv /tmp/Xconfigurator /tmp/Xconfigurator-$(VERSION)
	@dir=$$PWD; cd /tmp; tar cvf - Xconfigurator-$(VERSION) | bzip2 -9 - > $$dir/Xconfigurator-$(VERSION).tar.bz2
	@rm -rf /tmp/Xconfigurator-$(VERSION)
	@echo "The archive is in Xconfigurator-$(VERSION).tar.bz2"

srpm:
	@echo Creating src.rpm
	@mkdir -p $(HOME)/rpmbuild/Xconfigurator-$(VERSION)
	@mv Xconfigurator-$(VERSION).tar.bz2 $(HOME)/rpmbuild/Xconfigurator-$(VERSION)/
	@cp Xconfigurator.spec $(HOME)/rpmbuild/Xconfigurator-$(VERSION)/
	@pushd $(HOME)/rpmbuild/Xconfigurator-$(VERSION) &> /dev/null ; rpm --nodeps -bs Xconfigurator.spec ; popd &> /dev/null
	@echo SRPM is: $(HOME)/rpmbuild/SRPMS/Xconfigurator-$(VERSION)-$(RELEASE).src.rpm
	
ifeq (.depend,$(wildcard .depend))
include .depend
endif
