
include config 
#MAKE=gmake
export INSTALL=install -c
export CP=cp -f
ifeq ($(CONFIG_PROGMAN),y)
all: $(CONFFILE) bed.menu
else
all: $(CONFFILE)
endif
	$(MAKE) -C utils
	$(MAKE) -C src bed
ifeq ($(CONFIG_PLUGIN),y)
	$(MAKE) -C plugins/examples  give
endif
ifeq ($(CONFIG_XBED),y)
	$(MAKE) -C x11 $(XPROGRAM)
endif
	$(MAKE) -C doc

	
LSMFILE=$(PROGRAM)-$(VERSION).lsm
SPECFILE=$(DISTPATH)/download/$(PROGRAM)-$(VERSION).spec

REMOVE=rm 
RMDIR=rmdir 
#SORT=LC_ALL=C sort
SORT=sort
STRIP=strip -s -R .note -R .comment -R .note.ABI-tag
export MKDIR=mkdir -p
SYMLINK=$(LN_S)

install:  $(CONFFILE)  $(LSMFILE)
ifneq ($(CYGWIN),)
	cd c:/
endif
	-$(MKDIR) $(BINDIR)
	-rm  $(BINDIR)/$(EXEPROGRAM)
	-$(MKDIR) $(BINDIR)
	$(CP) src/$(EXEPROGRAM) $(BINDIR)
	$(STRIP)  $(BINDIR)/$(EXEPROGRAM)
	-rm  $(CONFDIRLINK)
	-mv  $(CONFDIRLINK) $(CONFDIRLINK).bak
	-$(MKDIR) $(CONFDIR)
ifeq ($(CYGWIN),)
	$(SYMLINK)  $(CONFLASTDIR) $(CONFDIRLINK)
	-mv  $(CONFDIR)/$(CONFFILE) $(CONFDIR)/~$(CONFFILE)
endif
	$(CP) $(CONFFILE) $(CONFDIR)
	chmod 0644 	$(CONFDIR)/$(CONFFILE)
	-$(RM) $(CONFDIR)/.neededbybed 
	$(CP) .neededbybed $(CONFDIR)
	chmod 0444 	$(CONFDIR)/.neededbybed

	$(MAKE) -C doc install
	$(MAKE) -C misc install
ifeq ($(CONFIG_XBED),y)
	$(MAKE) -C x11 install
endif
ifeq ($(CONFIG_PLUGIN),y)
	$(MAKE) -C utils install
	$(MAKE) -C plugins install
endif
ifeq ($(CYGWIN),)
ifeq ($(CONFIG_PLUGIN),y)
	-ln -s $(BINDIR)/$(PROGRAM) $(CONFDIR)/utils/keyconfig
else
	-ln -s $(BINDIR)/$(PROGRAM) $(CONFDIR)/keyconfig
endif
else
ifeq ($(PDCURSES),)
	echo "$(EXEPROGRAM) -k %1 %2 %3 %4 %5 %6 %7 %8 %9" > $(CONFDIR)/keyconfig.bat
endif
endif
ifeq ($(PDCURSES),)
	$(MKDIR) $(CONFDIR)/terminfo
	$(MKDIR) $(CONFDIR)/terminfo/r
	cp   terminfo/r/rxvt $(CONFDIR)/terminfo/r
endif
	cp   $(LSMFILE) LICENSE $(CONFDIR)
	cp doc/datadir.txt $(CONFDIR)/README
ifeq ($(HAS_FILE),y)
	$(CP) testmarks.bedm bedmagic addmagic.sh $(CONFDIR)
	@bash ./addmagic.sh
endif
ifeq ($(CONFIG_PROGMAN),y)
#	cp bed.xpm $(ICONPATH)
#	cp bedsmall.xpm $(ICONPATH)/mini/bed.xpm
	cp bed.menu $(MENUPATH)/$(PROGRAM)
	chmod 0644 $(MENUPATH)/$(PROGRAM)

#	@rpm -q $(PROGRAM)|| echo Warning!! Desktop entries not created if no package $(PROGRAM) exists
	update-menus
endif
ifeq ($(CYGWIN),)
	@cp uninstallhead $(CONFDIR)/uninstallbed.sh
	@FILES=`for afile in $(BINDIST); do  test -e $$afile&&echo $$afile ;done`; find  $$FILES ! -type d -print |xargs echo $(REMOVE) ' ' >> $(CONFDIR)/uninstallbed.sh ;find  $$FILES -type d  -a  -print |$(SORT) -r|xargs echo $(RMDIR) ' ' >> $(CONFDIR)/uninstallbed.sh
	@echo Uninstall with sh $(CONFDIR)/uninstallbed.sh
endif
	@echo Binary: '$(BINDIR)/$(EXEPROGRAM)'
	@echo Support files: $(CONFDIR)

clean:
	$(MAKE) -C src clean
	$(MAKE) -C utils clean
	$(MAKE) -C plugins clean
	$(MAKE) -C x11 clean


realclean: 
	-rm $(CONFFILE) $(SPECFILE) config.cache config.bak config.log config.status 
	$(MAKE) -C x11 clean
	$(MAKE) -C src realclean
	$(MAKE) -C doc realclean
	$(MAKE) -C utils realclean
	$(MAKE) -C plugins realclean


ifeq ($(CONFIG_XBED),y)
XBEDMAN=$(MANDIR)/xbed.1.gz $(BINDIR)/xbed
endif
ifeq ($(CONFIG_PROGMAN),y)
MENUBED=$(MENUPATH)/bed
PROGMANEXTRA=  $(KDEMENU)/$(XBEDMENU)/$(XMENUNAME).kdelnk $(KDEMENU)/$(BEDMENU)/$(MENUNAME).kdelnk $(GNOMEMENU)/$(XBEDMENU)/$(XMENUNAME).desktop $(GNOMEMENU)/$(BEDMENU)/$(MENUNAME).desktop 
endif
BINDIST=   $(CONFDIR) $(CONFDIRLINK) $(BINDIR)/bed $(MANDIR)/bed.1.gz   $(XBEDMAN) $(MENUBED) $(PROGMANEXTRA)
echo:
	echo $(BINDIST)
.PHONY: %.dist %.bindist %.srcdist %.html
HTMLPATH=../html
DISTPATH=$(HTMLPATH)

SRCBASE=$(PROGRAM)-$(VERSION).src
SRCARGFILE=$(SRCBASE).tar.gz
SRCLSMFILE=$(SRCBASE).lsm
SRCASCFILE=$(SRCBASE).asc

SOURCEFILE=$(DISTPATH)/download/$(PROGRAM)-$(VERSION).src.tar.gz 

ELFBASE=$(PROGRAM)-$(VERSION).bin.ELF
ELFARGFILE=$(ELFBASE).tar.gz 
ELFLSMFILE=$(ELFBASE).lsm
ELFASCFILE=$(ELFBASE).asc
WIN32ARGFILE=$(PROGRAM)-$(VERSION).win32.zip
FREEBSDARGFILE=$(PROGRAM)-$(VERSION).FreeBSD.tar.gz
STATICARGFILE=$(PROGRAM)-$(VERSION).bin.ELF-static.tar.gz

#LSMFILE=$(PROGRAM)-$(VERSION).lsm
FULLELFFILE=$(DISTPATH)/download/$(ELFARGFILE)
PGPSIGNPROG=gpg -s -a -b  
//PGPSIGNPROG= pgps -a -b 


mkuninstall:
	@cp uninstallhead $(CONFDIR)/uninstallbed.sh
	@FILES=`for afile in $(BINDIST); do  test -e $$afile&&echo $$afile ;done`; find  $$FILES ! -type d|xargs echo $(REMOVE) ' ' >> $(CONFDIR)/uninstallbed.sh ;find  $$FILES -type d|$(SORT) -r|xargs echo $(RMDIR) ' ' >> $(CONFDIR)/uninstallbed.sh
#	find  $(BINDIST) -type f|xargs 'echo rm -f '
#	find  $(BINDIST) -type d|$(SORT) -r|xargs 'echo rmdir '

%.bindist: $(BINARIES)
	mkdir -p $*/download
	tar -z -cf $*/download/$(ELFARGFILE)   $(BINDIST) 
#	env VERSION=$(VERSION) ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) DISTPATH=$*/download sh ./mklsmelf > $*/download/$(ELFLSMFILE)
%.srcdist:
	mkdir -p $*/download
	tar -z -cf  $*/download/$(PROGRAM)-$(VERSION).src.tar.gz  -C ../  $(PROGRAM)-$(VERSION) 
#	env  ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) VERSION=$(VERSION) DISTPATH=$*/download bash ./mklsm > $*/download/$(SRCLSMFILE)
%.html: mkbed
	mkdir -p $*
	env CONFDIRLINK=$(CONFDIRLINK) LSMFILE=$(LSMFILE) ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) VERSION=$(VERSION) DISTPATH=$*/download bash ./mkbed > $*/text.html
	env  LSMFILE=$(LSMFILE)  ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) VERSION=$(VERSION) DISTPATH=$*/download bash ./mktripod.sh > $*/tripodindex.html
	env   LSMFILE=$(LSMFILE) ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) VERSION=$(VERSION) DISTPATH=$*/download bash ./mkmedia.sh > $*/mediaindex.html
	$(MAKE) -C doc bed.html
	cp doc/bed.html $*/bed.1.html
%.dist: %.srcdist %.bindist %.sign
	echo $*
%.sign: %.html
	$(PGPSIGNPROG)  $*/download/$(ELFARGFILE)
	$(PGPSIGNPROG)  $*/download/$(SRCARGFILE)
	$(PGPSIGNPROG)  $*/download/$(WIN32ARGFILE)
	$(PGPSIGNPROG)  $*/download/$(FREEBSDARGFILE)
	$(PGPSIGNPROG)  $*/download/$(STATICARGFILE)
	env  WIN32ARGFILE=$(WIN32ARGFILE)  FREEBSDARGFILE=$(FREEBSDARGFILE) STATICARGFILE=$(STATICARGFILE) ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) VERSION=$(VERSION) DISTPATH=$*/download bash ./mknewlsm > $*/download/$(LSMFILE)

%.lsm: ./settings
	env  WIN32ARGFILE=$(WIN32ARGFILE)  FREEBSDARGFILE=$(FREEBSDARGFILE) STATICARGFILE=$(STATICARGFILE) ELFBASE=$(ELFBASE) SRCBASE=$(SRCBASE) VERSION=$(VERSION) DISTPATH=../html/download bash ./mknewlsm > $(LSMFILE)
	echo did

lsm: $(LSMFILE)
	echo lsm

BEDTMP=c:/tmp/bed-$(VERSION)

winbindist:
	zip -r bed-$(VERSION).win32.zip  $(BINDIR)/$(EXEPROGRAM) $(CONFDIR)

#	-mkdir $(BEDTMP)
#	cp  $(BINDIR)/$(EXEPROGRAM) $(BEDTMP)
#	cp  $(CONFDIR)/misc/*.bedda $(BEDTMP)
#	cp  $(CONFDIR)/doc/bed* $(BEDTMP)
#	cp  $(CONFDIR)/* $(BEDTMP)
#	cd $(BEDTMP); pkzip  -r bedzip *.*

#	pkzip  -r bedzip $(BINDIR)/$(EXEPROGRAM) $(CONFDIR)
#	find $(CONFDIR) ! -type f -a -printf "\"%p\" " -a


#	tar -cf bedtar $(BINDIR)/$(EXEPROGRAM) $(CONFDIR)
#	gzip  bedtar
#	mv bedtar.gz bed-$(VERSION).win32.tar.gz

#	tar -cf bedtar $(BINDIR)/$(EXEPROGRAM) $(CONFDIR)
#	gzip  bedtar
#	mv bedtar.gz bed-$(VERSION).win32.tar.gz

#	mv bedwin32.zip bed-$(VERSION).win32.zip
#	zip -9 -r bedwin32.zip  $(BINDIR)/$(EXEPROGRAM) $(CONFDIR)
#	mv bedwin32.zip bed-$(VERSION).win32.zip




sign: $(DISTPATH).sign 
dist: $(DISTPATH).dist
srcdist: $(DISTPATH).srcdist
bindist: $(DISTPATH).bindist
html:$(DISTPATH).html
spec: 
#	tar -z -tf $(FULLELFFILE)|sed -e 's/^/\//'> files
	ICONPATH=$(ICONPATH) MENUPATH=$(MENUPATH) KDEMENU=$(KDEMENU) GNOMEMENU=$(GNOMEMENU) XBEDMENU=$(XBEDMENU) BEDMENU=$(BEDMENU) VERSION=$(VERSION) DISTPATH=$(HTMLPATH)/download bash ./mkspec > $(PROGRAM)-$(VERSION).spec
mount:
	-mount /mnt/floppy
flop: mount /mnt/floppy.dist


RPMROOT=/usr/src/redhat
#RPMROOT=/usr/src/RPM
RPM = rpm
RPMFLAGS =  --sign -ba

rpm: spec
#	tar -z -tf $(FULLELFFILE)|sed -e 's/^/\//'> files
	cp $(SOURCEFILE) $(RPMROOT)/SOURCES/$(PROGRAM)-$(VERSION).src.tar.gz
	cp  $(PROGRAM)-$(VERSION).spec $(RPMROOT)/SPECS/$(PROGRAM)-$(VERSION).spec 
	$(RPM) $(RPMFLAGS) $(PROGRAM)-$(VERSION).spec 

package: Makefile
	$(RPM) --short-circuit $(RPMFLAGS) $(PROGRAM)-$(VERSION).spec 

installrpm:
	$(RPM) --short-circuit  --sign  -bi $(PROGRAM)-$(VERSION).spec 


ifeq ($(CYGWIN),)
CONFFILESH=mkbedrc.sh
else
CONFFILESH=mkbedrc95.sh
endif
$(CONFFILE):$(CONFFILESH) plugins/examples/Makefile config
	$(MAKE) -C plugins/examples ingive
	env HAS_X=$(HAS_X) CONFIG_PLUGIN=$(CONFIG_PLUGIN) CONFIG_THREADS=$(CONFIG_THREADS) PDCURSES="$(PDCURSES)" CONFDIRLINK=$(CONFDIRLINK) CONFDIR=$(CONFDIR) bash $(CONFFILESH)> $(CONFFILE)
DATE=`date +"%M-%H-%d-%m-%Y"`

backup: 
	date > ../backup/backupfile.start
	tar -zcf ../backup/$(PROGRAM)-$(VERSION).backup.tgz-$(DATE) -N "`cat ../backup/backupfile`" `find . ! -name "*.o*" -a ! -name "core" -a ! -name "*.plug" -a ! -type d -a ! -path ./src/$(PROGRAM) -a -printf "%p "`
	move  ../backup/backupfile.start ../backup/backupfile
fullbackup: 
	date > ../backup/backupfile.start
	tar -zcf ../backup/$(PROGRAM)-$(VERSION).backup.tgz-$(DATE) `find . ! -name "*.o*" -a ! -name "core" -a ! -name "*.plug" -a ! -type d -a ! -path ./src/$(PROGRAM) -a -printf "%p "`
	move  ../backup/backupfile.start ../backup/backupfile
try:
	 echo $(TESTVAR)

./configure:./configure.in src/defines.h.in
	autoconf


uninstall:
	-rm -i $(BINDIR)/$(EXEPROGRAM)
ifeq ($(CONFIG_XBED),y)
	-rm -i $(BINDIR)/$(XPROGRAM)
endif
	-rm  -i $(CONFDIRLINK)
	-rm  -i $(MANDIR)/$(PROGRAM).1.gz
	-rm  -i $(MANDIR)/$(XPROGRAM).1.gz
	-rm -fr $(CONFDIR)
ifeq ($(CONFIG_PROGMAN),y)
	-rm -i $(ICONPATH)/mini/bed.xpm $(ICONPATH)/bed.xpm $(MENUPATH)/$(PROGRAM) $(KDEMENU)/$(XBEDMENU)/XBed.kdelnk $(KDEMENU)/$(BEDMENU)/Bed.kdelnk $(GNOMEMENU)/$(XBEDMENU)/XBed.desktop $(GNOMEMENU)/$(BEDMENU)/Bed.desktop
endif

bed.menu:mkmenu.sh config
	CONDIRLINK=$(CONFDIRLINK) MENUNAME=$(MENUNAME) XMENUNAME=$(XMENUNAME) BEDMENU=$(BEDMENU) XBEDMENU=$(XBEDMENU) BINDIR=$(BINDIR) PROGRAM=$(PROGRAM)  XPROGRAM=$(XPROGRAM) bash ./mkmenu.sh > bed.menu

cprpm:
	cp /usr/src/redhat/RPMS/i386/bed-$(VERSION)*.rpm ../html/download
	cp /usr/src/redhat/SRPMS/bed-$(VERSION)*src*.rpm ../html/download


CONFDIRLINKER=$(shell echo '$(CONFDIRLINK)'| sed -e 's/\//\\\//g' )
README: .start.txt .common.txt
	cat .start.txt > README
	sed 's/CONFDIRLINK/$(CONFDIRLINKER)/g' < .common.txt >>README
	

pkg/pkg-plist:
	-rm $@
	@FILES=`for afile in $(BINDIST); do  test -e $$afile&&echo $$afile ;done`;PREFIXX=`echo $(prefix)|sed -e 's/\\//\\\\\\//g' `;find  $$FILES ! -type d ! -name "*bed.1.gz" -print | sed -e s/$$PREFIXX'\///g' >> $@  ;find  $$FILES -type d  -a  -print |$(SORT) -r|sed -e s/$$PREFIXX'\//\@dirrm\ /g' >> $@ 
	echo '@unexec rm %D/share/bed' >> $@
#;echo $(CONFDIRLINK) |sed -e s/$$PREFIXX'\///g'>>$@
#sed -e 's/$$PREFIXX/\@dirrm/g'

dep:
	$(MAKE) -C src dep

undos:
	file `find .	 -type f`|grep CRLF|cut -d : -f 1|xargs d2u

linuxconfig: 
	bash ./configure
	mv ./config ./config.bak
	sed -e '{s/^CONFIG_DEBUG=.*/CONFIG_DEBUG=n/g;s/^CONFIG_MMAP=.*/CONFIG_MMAP=y/g;s/^prefix=.*/prefix=\/usr/g;}' < ./config.bak > ./config

winconfig: 
	echo 'CURSESLIB=pdcurses' >> settings
	bash ./configure
	mv ./config ./config.bak
	sed -e '{s/^CONFIG_DEBUG=.*/CONFIG_DEBUG=n/g;s/LINKINDYN.*file.plug/#&/g;}' < ./config.bak > ./config
src/defines.h.in: configure.in	
	echo '#ifndef DEFINES_H' >src/defines.h.in
	echo '#define DEFINES_H' >>src/defines.h.in
	sed -f mkdefs.sed < configure.in|grep '^#undef'|sort|uniq>> src/defines.h.in
	echo '#endif' >>src/defines.h.in
