#############################################################################
# default: generate all
all:	mined help manual mnemodoc


#############################################################################
# generation
mined:	src/version.h
	./makemined

minced:	src/version.h
	./makemined minced

help:	usrshare/package_doc/VERSION
	./makemined help

mnemodoc:
	./makemined mnemodoc

generate:
	./makemined generate

clean:
	./makemined clean

manual:
	cd man; make

VER=$(shell sed -e 's,^[^0-9]*,,' -e 's,[^0-9][^0-9]*,.,g' -e q VERSION )
UNIVER=$(shell sed -e '/^\# Blocks-/ b ver' -e d -e ': ver' -e 's,^[^0-9]*\([0-9].*[0-9]\).*,\1,g' -e 's,\.0$$,,' src/Blocks.txt )

ver:
	echo mined $(VER)
	echo Unicode $(UNIVER)

src/version.h:	VERSION
	echo '#define VERSION "$(VER)"' > src/version.h
	echo '#define UNICODE_VERSION "$(UNIVER)"' >> src/version.h

usrshare/package_doc/VERSION:	VERSION
	echo $(VER) > usrshare/package_doc/VERSION


#############################################################################
# description
#SUMMARY=Powerful text editor with extensive Unicode and CJK support.
SUMMARY=$(shell sed -e 's,<meta *name="*description"* content="*\([^"]*\)"* *>,\1,' -e t -e d doc/overview.html )

descriptions:	description.summary description.medium description.long

description.summary:	doc/overview.html makefile
	echo $(SUMMARY) > description.summary

description.medium:	DESCR
	sed -n -e "/Overview/ q" -e p DESCR > description.medium
	echo "For an overview and further information see http://mined.sourceforge.net/" >> description.medium

description.long:	DESCR
	cp DESCR description.long


wiki:	mined.wiki

wikisrc=doc/overview.html doc/design.html
DATE=` sed -e "s,.*-> mined $(VER) (\(.*\)),\1," -e t -e d doc/changes.html `

mined.wiki:	$(wikisrc) wiki.sed wiki.add makefile
	sed -e "/^$$/,$$ d" -e "s,VERSION,$(VER)," -e "s,DATE,$(DATE)," wiki.add > mined.wiki
	cat $(wikisrc) | tidy -utf8 -o -wrap 999 2> /dev/null | sed -f wiki.sed >> mined.wiki
	sed -e "/^$$/,$$ b" -e d wiki.add >> mined.wiki

announcements:	DESCR doc/changes.html
	DATE=$(DATE) sh -c "cd announcement; ./makeann > announcement-update"
	DATE=$(DATE) sh -c "cd announcement; ./makeann cygwin > cygwin-announce"
	cd announcement; ./makeupload > cygwin-upload


#############################################################################
# installation
install:
	./makemined install root=$(root) prefix=$(prefix) lprefix=$(lprefix) rundir=$(rundir) lrundir=$(lrundir)

localinstall:
	./makemined localinstall root=$(root) prefix=$(prefix) lprefix=$(lprefix) rundir=$(rundir) lrundir=$(lrundir)

optinstall:
	./makemined optinstall root=$(root) prefix=$(prefix) lprefix=$(lprefix) rundir=$(rundir) lrundir=$(lrundir)


#############################################################################
# source distribution and private archives
beta:	all
	if egrep -e "^printf" -e "^#define debug" src/*.[hc]; then false; fi
	./makearch -

LSM=release/mined.lsm
SPEC=release/mined.spec


lsm:	$(LSM)

rpm:	$(SPEC)

$(SPEC):	DESCR makefile
	echo $(VER)
	echo "# partial spec file for mined" > $(SPEC)
	echo "Name:         mined" >> $(SPEC)
	echo "Group:        Productivity/Editors/Other" >> $(SPEC)
	echo "Version:      $(VER)" >> $(SPEC)
	echo "URL:          http://towo.net/mined/" >> $(SPEC)
	echo "Summary:      $(SUMMARY)" >> $(SPEC)
	echo "" >> $(SPEC)
	echo "%description" >> $(SPEC)
	sed -e "s,^,	," DESCR >> $(SPEC)
	echo "" >> $(SPEC)


distribution:	release lsm

.PHONY: release

release:
	$(MAKE) generate
	$(MAKE) all
	$(MAKE) DESCR
	$(MAKE) release/mined-$(VER).tar.gz

release/mined-$(VER).tar.gz:	src/mined usrshare/help/mined.hlp doc/mnemodoc.html man/*.1
	#if egrep -e "^printf" -e "^#define debug" src/*.[hc]; then false; fi
	#if sed -e "/-- test/,$$ b" -e d src/keymaps.cfg | egrep '^[^#]'; then false; else true; fi
	./makemined checksrc
	./makemined checkchar
	./makemined pc
	./makemined vms
	./makearch


#############################################################################
# specific distribution packages

packages:	cygwin

REL=$(shell sed -e 's,.*[Rr]elease *\([0-9]*\).*,\1,' -e 's,^$$,0,' -e q README.cygwin )

rel:
	echo cygwin package release $(REL)

cygrel=release/cygwin

cygwin:
	$(MAKE) release/mined-$(VER).tar.gz
	$(MAKE) cygwinbin
	$(MAKE) cygwinsrc

cygwinsrc:
	echo making cygwin source package release $(REL) of mined $(VER)
	mkdir -p $(cygrel)/
	gunzip -c release/mined-$(VER).tar.gz | bzip2 -c > $(cygrel)/mined-$(VER)-$(REL)-src.tar.bz2

cygwinbin:	$(cygrel)/setup.hint cygwinexe
	echo making cygwin package release $(REL) of mined $(VER)
	cd src; rm -fr tmp.cyg; mkdir tmp.cyg
	cd src; make -f makefile.cygwin install root=tmp.cyg
	cd src/tmp.cyg; tar -cf mined-$(VER)-$(REL).tar *
	cd src/tmp.cyg; bzip2 mined-$(VER)-$(REL).tar
	mv src/tmp.cyg/mined-$(VER)-$(REL).tar.bz2 $(cygrel)/

cygwinexe:
	cd src; make -f makefile.cygwin mined.exe

$(cygrel)/setup.hint:	description.medium makefile
	mkdir -p $(cygrel)
	echo '# cygwin setup file' > $(cygrel)/setup.hint
	echo 'sdesc: $(SUMMARY)' >> $(cygrel)/setup.hint
	echo 'category: Editors' >> $(cygrel)/setup.hint
	echo 'requires: cygwin' >> $(cygrel)/setup.hint
	echo 'ldesc: "' >> $(cygrel)/setup.hint
	cat description.medium >> $(cygrel)/setup.hint
	echo '"' >> $(cygrel)/setup.hint

$(LSM):	DESCR makefile # release/mined-$(VER).tar.gz
	mkdir -p release
	echo $(VER)
	echo "Begin4" > $(LSM)
	echo "Title:		mined" >> $(LSM)
	echo "Version:	$(VER)" >> $(LSM)
	echo "Entered-date:	`date +%Y-%m-%d`" >> $(LSM)
	echo "Description:	$(SUMMARY)" >> $(LSM)
	sed -e "s,^,	," -e "s,:,;,g" DESCR >> $(LSM)
	echo "Keywords:	text editor, Unicode editor, UTF-8 editor, CJK editor" >> $(LSM)
	echo "Author:		mined@towo.net (Thomas Wolff)" >> $(LSM)
	echo "Primary-site:	http://towo.net/mined/" >> $(LSM)
	(cd release; ls -l mined-$(VER).tar.gz) | sed -e "s,[^ ]* *[^ ]* *[^ ]* *[^ ]* *\([^ ]*\).* \([^ ]*\)$$,		\1 \2," >> $(LSM)
	echo "Alternate-site:	http://www.ibiblio.org/pub/Linux/apps/editors/mined-$(VER).tar.gz" >> $(LSM)
	echo "Platforms:	Unix (Linux/Sun/HP/BSD/Mac and more), DOS (djgpp), Windows (cygwin)" >> $(LSM)
	echo "Copying-policy:	GPL with comments" >> $(LSM)
	echo "End" >> $(LSM)

# NetBSD pkgsrc entry
DESCR:	doc/overview.html descr.sed makefile
	sed -f descr.sed doc/overview.html | sed -e "/./ b" -e "$$ d" > DESCR


# PC binary archives (development target, doesn't currently work locally)
bin:	release/mined-$(VER)-cygwin.zip release/mined-$(VER)-dj.zip

release/mined-$(VER)-cygwin.zip:	src/cyg/mined.exe src/cyg/cyg*.dll usrshare/help/mined.hlp README README.cygwin
	mkdir -p release
	cd src/cyg; chmod +x mined.exe cyg*.dll
	cd src/cyg; zip mined-$(VER)-cygwin.zip mined.exe cyg*.dll
	mv -f src/cyg/mined-$(VER)-cygwin.zip release/
	cd usrshare/help; zip ../../release/mined-$(VER)-cygwin.zip mined.hlp
	cd usrshare/bin; zip ../../release/mined-$(VER)-cygwin.zip minedmar.bat wined.bat
	cp -fp README release/mined.txt
	cp -fp README.cygwin release/minedcyg.txt
	cd release; zip mined-$(VER)-cygwin.zip mined.txt minedcyg.txt
	rm -f release/mined.txt release/minedcyg.txt

release/mined-$(VER)-dj.zip:	src/dj/mined.exe usrshare/help/mined.hlp README
	mkdir -p release
	cd src/dj; chmod +x mined.exe
	cd src/dj; zip mined-$(VER)-dj.zip mined.exe
	mv -f src/dj/mined-$(VER)-dj.zip release/
	cd usrshare/help; zip ../../release/mined-$(VER)-dj.zip mined.hlp
	cd usrshare/bin; zip ../../release/mined-$(VER)-dj.zip minedmar.bat
	cp -fp README release/mined.txt
	cd release; zip mined-$(VER)-dj.zip mined.txt
	rm -f release/mined.txt


#############################################################################
# end
