SHELL=/bin/sh
CC = gcc
CFLAGS = -Wall -O2 -fno-strength-reduce #-g -pedantic
GTK_CFLAGS = `gtk-config --cflags`
GTK_LIBS = `gtk-config --libs`
LFLAGS = $(GTK_LIBS) -lXmu -lXt -lSM -lICE
PROGNAME-STATIC = LinPopUp-static
PROGNAME = LinPopUp
PROGNAME_LNK = linpopup
VERSION = 1.2.0
VERSION_DATE = 2000
DESTDIR = /usr/local
INSTALL_BINPATH = $(DESTDIR)/bin
INSTALL_MANPATH = $(DESTDIR)/man
DOC_DIR = $(DESTDIR)/doc/$(PROGNAME)-$(VERSION)
SHARE_DIR = $(DESTDIR)/share/$(PROGNAME)
DATA_DIR = /var/lib/linpopup
DATA_FILE = $(DATA_DIR)/messages.dat

RPM_RELEASE = 1
RPM_BUILDPATH = /usr/src/redhat
RPM_ICONNAME = linpopup.gif


$(PROGNAME): version.o dialog.o main.o text.o menu.o toolbar.o io.o send.o recept.o\
	custom.o string.o GTKmisc.o docs.o netscape_remote.o execute.o	     
	$(CC) $(CFLAGS) -v $^ -o $(PROGNAME) $(GTK_CFLAGS) $(LFLAGS)


install : 
	@echo 
	/usr/bin/install -s -m 755 $(PROGNAME) $(INSTALL_BINPATH)
	/usr/bin/install -m 644 ../$(PROGNAME).1 $(INSTALL_MANPATH)/man1
	ln -fs $(PROGNAME) $(INSTALL_BINPATH)/$(PROGNAME_LNK)
	ln -fs $(PROGNAME).1 $(INSTALL_MANPATH)/man1/$(PROGNAME_LNK).1	
	mkdir -p -m0755 $(DATA_DIR)
	mkdir -p -m0755 $(DOC_DIR)
	mkdir -p -m0755 $(SHARE_DIR)
	mkdir -p -m0755 $(SHARE_DIR)/pixmaps
	/usr/bin/install -m 644 ../AUTHORS ../BUGS ../COPYING ../ChangeLog ../INSTALL \
	../MANUAL ../NEWS ../README ../TODO ../THANKS  $(DOC_DIR)
	/usr/bin/install -m 644 ../pixmaps/little_igloo.xpm  $(SHARE_DIR)/pixmaps/
	/usr/bin/install -m 644 ../extra/gtkrc  $(SHARE_DIR)
	@if ! test -f $(DATA_FILE); then \
	  echo "Creating $(DATA_FILE), and chmod it 0666.";\
	  touch $(DATA_FILE); \
	  chmod 0666 $(DATA_FILE);\
	else :;fi;
	@echo
	@echo "======================================================================"
	@echo "=                                                                    ="	
	@echo "=  To be able to receive messages that are sent to you, you have to  ="
	@echo "=  edit your smb.conf file (generally found in /etc directory)       ="   
	@echo "=                                                                    ="
	@echo "=  Please, refer to the INSTALL file for more details.               ="
	@echo "=                                                                    ="
	@echo "======================================================================"
	@echo


uninstall : 
	@echo
	rm -f $(INSTALL_BINPATH)/$(PROGNAME) 
	rm -f $(INSTALL_MANPATH)/man1/$(PROGNAME).1
	rm -f $(INSTALL_BINPATH)/$(PROGNAME_LNK) 
	rm -f $(INSTALL_MANPATH)/man1/$(PROGNAME_LNK).1
	rm -Rf $(DOC_DIR) 
	rm -Rf $(SHARE_DIR) 
	@echo
	@echo "======================================================"    
	@echo "=                                                    ="
	@echo "=  You may now remove by hand any .linpopuprc files  =" 
	@echo "=  that resides in users home directories...         ="
	@echo "=  As well as the directory below :                  ="
	@echo "=  $(DATA_DIR)                                 ="
	@echo "=                                                    ="
	@echo "======================================================"
	@echo 


.c.o:
	$(CC) -c $(CFLAGS) -DDATA_FILE=\"$(DATA_FILE)\"  -DDOC_DIR=\"$(DOC_DIR)\" -DSHARE_DIR=\"$(SHARE_DIR)\"  $< $(GTK_CFLAGS) 

version.o: version.c version.h 

netscape_remote.o : ../lib/netscape_remote.c
	$(CC) -c $(C_FLAGS) $< $(GTK_CFLAGS)



docs:
	@if test -x /usr/bin/pod2man; then \
	    touch ../extra/$(PROGNAME).pod;\
	    pod2man ../extra/$(PROGNAME).pod \
		--center="$(PROGNAME) User's Manual" \
		--release="$(PROGNAME) Version $(VERSION)" \
		> ../extra/$(PROGNAME).1.in; \
		fi;
	@sed -e s,THIS_DATA_FILE,$(DATA_FILE), \
	     -e s,THIS_DESTDIR,$(DESTDIR), \
	     -e s,THIS_VERSION,$(VERSION), \
	      ../extra/$(PROGNAME).1.in >  ../$(PROGNAME).1
	@sed -e s,THIS_DESTDIR,$(DESTDIR), ../extra/install.in > ../INSTALL
	@nroff -mandoc -Tlatin1 ../$(PROGNAME).1 | col -bx > ../MANUAL 


version.h : FORCE	
	@echo "/* this header is automatically generated */" > version.h
	@echo "/* and recreated for each new compilation */" >> version.h
	@echo "#define PROG_NAME \"$(PROGNAME)\"" >> version.h
	@echo "#define PROG_AUTHOR \"`cat ../AUTHORS`\"">>version.h
	@echo "#define PROG_VERSION \"$(VERSION)\"" >> version.h
	@echo "#define VERSION_DATE \"$(VERSION_DATE)\"">> version.h
	@echo "#define COMPILE_DATE \"`date +%D`\"" >> version.h
	@echo "#define COMPILE_TIME \"`date +%T`\"" >> version.h
	@echo "#define COMPILE_BY \"`whoami`\"" >> version.h
	@echo "#define COMPILE_HOST \"`hostname`\"" >> version.h
	@echo "#define GTK_VERSION \"GTK+ `gtk-config --version`\"" >> version.h
	@echo "#define CC_VERSION \"`$(CC) -v 2>&1 | tail -1`\"">>version.h
	@echo "#define CODE_LINES `cat *.c protos.h | grep -ch -e \"[[:alpha:]|[:punct:]]\"`">>version.h

FORCE:	


clean: dist_clean
	rm -f $(PROGNAME) $(PROGNAME-STATIC) 

dist_clean:
	rm -f *~ *.o version.h core build/* 




###### ONLY FOR BUILDING DISTRIBUTION USAGE ##########
 

$(PROGNAME-STATIC): 	     
	$(CC) $(CFLAGS) -v *.o -o $(PROGNAME-STATIC) $(GTK_CFLAGS) $(LFLAGS) -static 
	strip $(PROGNAME-STATIC)	


dist:  docs $(PROGNAME) $(PROGNAME-STATIC) dist_clean
	strip $(PROGNAME-STATIC)
	strip $(PROGNAME)	
	mkdir $(PROGNAME)-$(VERSION)
	mkdir $(PROGNAME)-$(VERSION)/extra
	mkdir $(PROGNAME)-$(VERSION)/lib
	mkdir $(PROGNAME)-$(VERSION)/pixmaps
	mkdir $(PROGNAME)-$(VERSION)/src
	mkdir $(PROGNAME)-$(VERSION)/screenshots
	cp ../extra/* $(PROGNAME)-$(VERSION)/extra
	cp ../screenshots/* $(PROGNAME)-$(VERSION)/screenshots
	cp ../lib/*.* $(PROGNAME)-$(VERSION)/lib		
	cp pixmaps/*.* $(PROGNAME)-$(VERSION)/pixmaps
	cp *.c *.h Makefile  $(PROGNAME)-$(VERSION)/src
	cp ../AUTHORS ../THANKS ../BUGS ../INSTALL ../NEWS ../TODO ../COPYING ../README ../MANUAL ../ChangeLog \
	 ../LinPopUp.1 ../*.lsm  ../scripts/*  $(PROGNAME)-$(VERSION)
	ln -fs ../pixmaps  $(PROGNAME)-$(VERSION)/src/pixmaps
	tar cvf $(PROGNAME)-$(VERSION).src.tar $(PROGNAME)-$(VERSION)
	gzip -9 $(PROGNAME)-$(VERSION).src.tar 
	mv $(PROGNAME)-$(VERSION).src.tar.gz build/
	rm -Rf $(PROGNAME)-$(VERSION)/src
	rm -Rf $(PROGNAME)-$(VERSION)/lib	
	rm -f $(PROGNAME)-$(VERSION)/pixmaps/*.xpm
	cp pixmaps/little_igloo.xpm $(PROGNAME)-$(VERSION)/pixmaps
	rm -f $(PROGNAME)-$(VERSION)/Make
	mkdir $(PROGNAME)-$(VERSION)/bin
	cp $(PROGNAME-STATIC) $(PROGNAME)-$(VERSION)/bin/$(PROGNAME)
	cp Makefile $(PROGNAME)-$(VERSION)/bin/
	tar cvf $(PROGNAME)-$(VERSION).bin.tar $(PROGNAME)-$(VERSION)
	gzip -9 $(PROGNAME)-$(VERSION).bin.tar
	mv $(PROGNAME)-$(VERSION).bin.tar.gz build/
	cp ../$(PROGNAME).lsm build/
	rm -Rf $(PROGNAME)-$(VERSION)
	du -k build/*

rpm:  
	sed -e s,THIS_VERSION,$(VERSION), \
	    -e s,THIS_RPM_RELEASE,$(RPM_RELEASE), \
	    -e s,THIS_DATA_FILE,$(DATA_FILE), \
	    -e s,THIS_DATA_DIR,$(DATA_DIR), \
	  -e s,THIS_SHARE_DIR,$(SHARE_DIR), \
	    ../extra/$(PROGNAME).spec > $(RPM_BUILDPATH)/SPECS/$(PROGNAME)-$(VERSION).spec
	cp -f build/$(PROGNAME)-$(VERSION).src.tar.gz $(RPM_BUILDPATH)/SOURCES
	cp -f ../extra/$(RPM_ICONNAME) $(RPM_BUILDPATH)/SOURCES
	rpm -ba --clean $(RPM_BUILDPATH)/SPECS/$(PROGNAME)-$(VERSION).spec
	mv $(RPM_BUILDPATH)/RPMS/i386/$(PROGNAME)-$(VERSION)-$(RPM_RELEASE)* build/
	mv $(RPM_BUILDPATH)/SRPMS/$(PROGNAME)-$(VERSION)-$(RPM_RELEASE)* build/

all-dist: dist rpm
