#!/usr/bin/make -f
#
# Wichert: removed all comments about previous versions, this was rewriten
# so much (and often) that they don't apply anyway :)

CC	= gcc
# Need to compile without debugging symbols.
CFLAGS	= -g -O2
tmpdir	:= $(shell pwd)/debian/tmp


cfgflags=--prefix=/usr
optflags=--enable-langmap --enable-multibyte --enable-gpm
guiflags=--with-x --enable-gui=gtk --enable-xim

src/vim-normal:
	./configure $(cfgflags) $(optflags) --without-x --enable-gui=no
	make clean && make CFLAGS="$(CFLAGS) -DHAVE_LANGMAP"
	mv src/vim src/vim-normal

src/vim-gtk:
	./configure $(cfgflags) $(optflags) $(guiflags)
	make clean && make CFLAGS="$(CFLAGS) -DHAVE_LANGMAP -DRIGHTLEFT"
	mv src/vim src/vim-gtk

src/vim-perl:
	./configure $(cfgflags) $(optflags) $(guiflags) --enable-perlinterp
	make clean && make CFLAGS="$(CFLAGS) -DHAVE_LANGMAP -DRIGHTLEFT"
	mv src/vim src/vim-perl

src/vim-python:
	./configure $(cfgflags) $(optflags) $(guiflags) --enable-pythoninterp
	make clean && make CFLAGS="$(CFLAGS) -DHAVE_LANGMAP -DRIGHTLEFT"
	mv src/vim src/vim-python

src/vim-tcl:
	./configure $(cfgflags) $(optflags) $(guiflags) --enable-tclinterp
	make clean && make CFLAGS="$(CFLAGS) -DHAVE_LANGMAP -DRIGHTLEFT"
	mv src/vim src/vim-tcl

src/vim-tiny:
	./configure $(cfgflags) --without-x --disable-gui --enable-min-features
	make clean && make CFLAGS="$(CFLAGS) -DAUTOCMD -DWANT_EVAL"
	mv src/vim src/vim-tiny

build: src/vim-perl src/vim-python src/vim-tcl src/vim-tiny src/vim-normal src/vim-gtk
	touch build

clean:
	make distclean
	-rm binary-prepare build src/vim-*
	dh_clean


# Target shared by binary-arch and binary-indep
binary-prepare: build
# Initialize the building procedure
	dh_testdir
	dh_clean

# Setup the directory structure
	install -d -g root -m 755 -o root debian/tmp
	cd debian/tmp && install -o root -g root -m 755 -d `cat ../dirs`

# Do the real install
	# copy vim-normal to vim otherwise make goes crazy (don't move
	# since that will make testing builds awful)
	cp -p src/vim-normal src/vim
	make install prefix=`pwd`/debian/tmp/usr PREFIX=`pwd`/debian/tmp/usr

# Remove things which are handled via alternatives
	rm debian/tmp/usr/bin/{view,ex}

# Vim can handle compressed documentation
	(	cd debian/tmp/usr/share/vim/*/doc ; \
		sed -e 's/\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*\(.*\)/\1	\2.gz	\3/' tags > tags.fixed ;\
		mv tags.fixed tags ; \
		gzip *.txt )

# Remove some unwanted stuff
	rm debian/tmp/usr/bin/[ce]tags
	rm debian/tmp/usr/man/man1/[ce]tags*

# Move some stuff to the documentation-directory
	mv debian/tmp/usr/share/vim/*/macros debian/tmp/usr/share/doc/vim/
	mv debian/tmp/usr/share/vim/*/tools debian/tmp/usr/share/doc/vim/
	rm debian/tmp/usr/share/vim/*/doc/vim2html.pl

# Fix some permissions
	chmod 755 debian/tmp/usr/share/doc/vim/tools/*.{pl,sh,awk}
	chmod 755 debian/tmp/usr/share/doc/vim/tools/tcltags

# Fixup manapges
	for i in debian/tmp/usr/man/man1/* ; do \
		sh debian/remove-tmp $(tmpdir) $$i ; \
	done

# Install our own examples
	install -d -m 755 -o root -g root debian/tmp/usr/share/doc/vim/examples
	install -p -m 644 -o root -g root debian/runtime/examples/* \
		debian/tmp/usr/share/doc/vim/examples/

# Install the icons (for menu-support)
	install -p -o root -g root -m 644 runtime/vim*.xpm \
			debian/tmp/usr/X11R6/include/X11/pixmaps/

# install some updates
	-install -p -o root -g root -m 644 debian/runtim/syntax* \
			debian/tmp/usr/share/vim/*/syntax/

# Fix the configuration files
	install -d -o root -g root -m 755 debian/tmp/etc
	mv debian/tmp/usr/share/vim/*/menu.vim debian/tmp/etc/
	rm debian/tmp/usr/share/vim/*/*example*
	install -p -o root -g root -m 644 debian/runtime/vimrc debian/tmp/etc
	install -p -o root -g root -m 644 debian/runtime/gvimrc debian/tmp/etc
	ln -s /etc/vimrc debian/tmp/usr/share/vim/vimrc
	ln -s /etc/gvimrc debian/tmp/usr/share/vim/gvimrc
	ln -s /etc/menu.vim debian/tmp/usr/share/vim/*/

# Add the update-mime stuff
	install -p -o root -g root -m 644 debian/mime \
			debian/tmp/usr/lib/mime/packages/vim

# Install the other (Debian) stuff
	dh_installdocs -pvim -Pdebian/tmp
	dh_installchangelogs -pvim -Pdebian/tmp
	dh_strip -pvim -Pdebian/tmp
	dh_compress -pvim -Pdebian/tmp

# Now that everything is installed and ready to go, now split out the 
# vim-rt package
	install -d -o root -g root -m 755 debian/vim-rt/DEBIAN
	install -d -o root -g root -m 755 debian/vim-rt/usr/share/doc/vim
	install -d -o root -g root -m 755 debian/vim-rt/usr/lib/menu
	mv debian/tmp/etc debian/vim-rt/
	mv debian/tmp/usr/share/vim debian/vim-rt/usr/share
	mv debian/tmp/usr/share/doc/vim/tools debian/vim-rt/usr/share/doc/vim/
	mv debian/tmp/usr/share/doc/vim/macros debian/vim-rt/usr/share/doc/vim/
	mv debian/tmp/usr/share/doc/vim/examples debian/vim-rt/usr/share/doc/vim/
	mv debian/tmp/usr/X11R6 debian/vim-rt/usr/
	ln -s vim debian/vim-rt/usr/share/doc/vim-rt
	# empty call to installdocs just to get the symlink-trick working
	dh_installdocs -pvim-rt
	# We want the trick, but not the copyright
	rm -f debian/vim-rt/usr/share/doc/vim/copyright

	touch binary-prepare

# No binary independant packages from this.
binary-indep: binary-prepare
	dh_installdeb -pvim-rt
	dh_gencontrol -pvim-rt
	dh_md5sums -pvim-rt
	dh_builddeb -pvim-rt

binary-arch: binary-prepare
# Move on the the vim-gtk package
	install -p -o root -g root -m 644 debian/menu.gvim debian/tmp/usr/lib/menu/vim
	install -s -o root -g root -m 755 src/vim-gtk debian/tmp/usr/bin/vim
	ln -s vim debian/tmp/usr/share/doc/vim-gtk
	dh_installdeb -pvim -Pdebian/tmp
	dh_shlibdeps -pvim-gtk -Pdebian/tmp
	dh_gencontrol -pvim-gtk -Pdebian/tmp
	dh_md5sums -pvim-gtk -Pdebian/tmp
	dh_builddeb -pvim-gtk -Pdebian/tmp
	rm -f debian/tmp/usr/share/doc/vim-gtk

# Move on the the vim-perl package
	install -s -o root -g root -m 755 src/vim-perl debian/tmp/usr/bin/vim
	ln -s vim debian/tmp/usr/share/doc/vim-perl
	dh_shlibdeps -pvim-perl -Pdebian/tmp
	dh_gencontrol -pvim-perl -Pdebian/tmp
	dh_md5sums -pvim-perl -Pdebian/tmp
	dh_builddeb -pvim-perl -Pdebian/tmp
	rm -f debian/tmp/usr/share/doc/vim-perl

# Move on the the vim-python package
	install -s -o root -g root -m 755 src/vim-python debian/tmp/usr/bin/vim
	ln -s vim debian/tmp/usr/share/doc/vim-python
	dh_shlibdeps -pvim-python -Pdebian/tmp
	dh_gencontrol -pvim-python -Pdebian/tmp
	dh_md5sums -pvim-python -Pdebian/tmp
	dh_builddeb -pvim-python -Pdebian/tmp
	rm -f debian/tmp/usr/share/doc/vim-python

# Move on the the vim-tcl package
	install -s -o root -g root -m 755 src/vim-tcl debian/tmp/usr/bin/vim
	dh_shlibdeps -pvim-tcl -Pdebian/tmp
	ln -s vim debian/tmp/usr/share/doc/vim-tcl
	dh_gencontrol -pvim-tcl -Pdebian/tmp
	dh_md5sums -pvim-tcl -Pdebian/tmp
	dh_builddeb -pvim-tcl -Pdebian/tmp
	rm -f debian/tmp/usr/share/doc/vim-tcl

# Remove some stuff the non-X versions don't need
	-rm debian/tmp/usr/bin/{gvim,gview,rgvim,rgview}
	install -p -o root -g root -m 644 debian/mime-noX \
			debian/tmp/usr/lib/mime/packages/vim
	install -p -o root -g root -m 644 debian/menu.vim debian/tmp/usr/lib/menu/vim

# Move on the the vim-tiny package
	install -s -o root -g root -m 755 src/vim-tiny debian/tmp/usr/bin/vim
	ln -s vim debian/tmp/usr/share/doc/vim-tiny
	dh_shlibdeps -pvim-tiny -Pdebian/tmp
	dh_gencontrol -pvim-tiny -Pdebian/tmp
	dh_md5sums -pvim-tiny -Pdebian/tmp
	dh_builddeb -pvim-tiny -Pdebian/tmp
	rm -f debian/tmp/usr/share/doc/vim-tiny

# Do the standard vim package
	install -s -o root -g root -m 755 src/vim-normal debian/tmp/usr/bin/vim
	dh_installdeb -pvim -Pdebian/tmp
	dh_shlibdeps -pvim -Pdebian/tmp
	dh_gencontrol -pvim -Pdebian/tmp
	dh_md5sums -pvim -Pdebian/tmp
	dh_builddeb -pvim -Pdebian/tmp

binary: binary-arch binary-indep

.PHONY: clean binary binary-arch binary-indep
