# gnutls4win Makefile --- build GnuTLS Windows installer using MinGW and NSIS
#
# Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation
#
# Written by Simon Josefsson
#
# This file is part of GNUTLS.
#
# GNUTLS is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# GNUTLS is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA

CFGFLAGS=--host=i586-mingw32msvc --build=i686-pc-linux-gnu \
	--disable-ld-version-script \
	--prefix=$(PWD)/inst \
	--with-gpg-error-prefix=$(PWD)/inst	\
	--with-libgcrypt-prefix=$(PWD)/inst	\
	--with-libtasn1-prefix=$(PWD)/inst

LIBGPGERROR_VERSION=1.8
LIBGPGERROR_DLL_VERSION=0

LIBGCRYPT_VERSION=1.4.6
LIBGCRYPT_DLL_VERSION=11

LIBTASN1_VERSION=2.8
LIBTASN1_DLL_VERSION=3

GNUTLS_VERSION=2.10.1
GNUTLS_DLL_VERSION=26

LIBIDN_VERSION=1.19
LIBIDN_DLL_VERSION=11

SHISHI_VERSION=0.0.43
SHISHI_DLL_VERSION=0

GSS_VERSION=1.0.1
GSS_DLL_VERSION=3

LIBNTLM_VERSION=1.2
LIBNTLM_DLL_VERSION=0

GSASL_VERSION=1.5.2
GSASL_DLL_VERSION=7

LIBSSH2_VERSION=1.2.7
LIBSSH2_DLL_VERSION=1

all: add-pgp-keys gnutls-$(GNUTLS_VERSION).exe.sig gnutls-$(GNUTLS_VERSION).zip.sig mingw32-gnutls_$(GNUTLS_VERSION)-1_all.deb

clean:
	rm -rf src build inst

.PHONY: add-pgp-keys
add-pgp-keys:
	gpg --import PGP-KEYS

# Libgpg-error

dist/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2 ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2.sig
	gpg tmp/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2.sig
	-mkdir dist
	mv tmp/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2 tmp/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2.sig dist/
	rm -rf tmp

src/libgpg-error-$(LIBGPGERROR_VERSION)/configure: dist/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2
	-mkdir src
	cd src && tar xfj ../dist/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2
	touch src/libgpg-error-$(LIBGPGERROR_VERSION)/configure

build/libgpg-error-$(LIBGPGERROR_VERSION)/Makefile: src/libgpg-error-$(LIBGPGERROR_VERSION)/configure
	rm -rf build/libgpg-error-$(LIBGPGERROR_VERSION)
	mkdir -p build/libgpg-error-$(LIBGPGERROR_VERSION) && \
	cd build/libgpg-error-$(LIBGPGERROR_VERSION) && \
	../../src/libgpg-error-$(LIBGPGERROR_VERSION)/configure --enable-static $(CFGFLAGS)
	perl -pi -e 's/.run .LTCC/cc/' build/libgcrypt-$(LIBGCRYPT_VERSION)/libtool

inst/bin/libgpg-error-$(LIBGPGERROR_DLL_VERSION).dll: build/libgpg-error-$(LIBGPGERROR_VERSION)/Makefile
	make -C build/libgpg-error-$(LIBGPGERROR_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

libgpg-error-$(LIBGPGERROR_VERSION).zip: inst/bin/libgpg-error-$(LIBGPGERROR_DLL_VERSION).dll
	rm -f libgpg-error-$(LIBGPGERROR_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../libgpg-error-$(LIBGPGERROR_VERSION).zip *

libgpg-error-$(LIBGPGERROR_VERSION).zip.sig: libgpg-error-$(LIBGPGERROR_VERSION).zip
	rm -f libgpg-error-$(LIBGPGERROR_VERSION).zip.sig
	gpg -b libgpg-error-$(LIBGPGERROR_VERSION).zip

mingw32-libgpg-error_$(LIBGPGERROR_VERSION)-1_all.deb: libgpg-error-$(LIBGPGERROR_VERSION).zip.sig
	rm -f mingw32-libgpg-error_$(LIBGPGERROR_VERSION)-1_all.deb
	./debify.sh libgpg-error $(LIBGPGERROR_VERSION)

libgpg-error:
	if test -f libgpg-error-$(LIBGPGERROR_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../libgpg-error-$(LIBGPGERROR_VERSION).zip; \
	else \
		make mingw32-libgpg-error_$(LIBGPGERROR_VERSION)-1_all.deb; \
	fi

clean-libgpg-error:
	-make -C build/libgpg-error-$(LIBGPGERROR_VERSION) uninstall
	rm -rf src/libgpg-error-$(LIBGPGERROR_VERSION)
	rm -rf build/libgpg-error-$(LIBGPGERROR_VERSION)

# Libgcrypt

dist/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2 ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2.sig
	gpg tmp/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2.sig
	-mkdir dist
	mv tmp/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2 tmp/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2.sig dist/
	rm -rf tmp

src/libgcrypt-$(LIBGCRYPT_VERSION)/configure: dist/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2
	-mkdir src
	cd src && tar xfj ../dist/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2
	touch src/libgcrypt-$(LIBGCRYPT_VERSION)/configure

build/libgcrypt-$(LIBGCRYPT_VERSION)/Makefile: src/libgcrypt-$(LIBGCRYPT_VERSION)/configure
	rm -rf build/libgcrypt-$(LIBGCRYPT_VERSION)
	mkdir -p build/libgcrypt-$(LIBGCRYPT_VERSION) && \
	cd build/libgcrypt-$(LIBGCRYPT_VERSION) && \
	../../src/libgcrypt-$(LIBGCRYPT_VERSION)/configure $(CFGFLAGS)
	perl -pi -e 's/.run .LTCC/cc/' build/libgcrypt-$(LIBGCRYPT_VERSION)/libtool

inst/bin/libgcrypt-$(LIBGCRYPT_DLL_VERSION).dll: build/libgcrypt-$(LIBGCRYPT_VERSION)/Makefile
	make -C build/libgcrypt-$(LIBGCRYPT_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

libgcrypt-$(LIBGCRYPT_VERSION).zip: inst/bin/libgcrypt-$(LIBGCRYPT_DLL_VERSION).dll
	rm -f libgcrypt-$(LIBGCRYPT_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../libgcrypt-$(LIBGCRYPT_VERSION).zip *

libgcrypt-$(LIBGCRYPT_VERSION).zip.sig: libgcrypt-$(LIBGCRYPT_VERSION).zip
	rm -f libgcrypt-$(LIBGCRYPT_VERSION).zip.sig
	gpg -b libgcrypt-$(LIBGCRYPT_VERSION).zip

mingw32-libgcrypt_$(LIBGCRYPT_VERSION)-1_all.deb: libgcrypt-$(LIBGCRYPT_VERSION).zip.sig
	rm -f mingw32-libgcrypt_$(LIBGCRYPT_VERSION)-1_all.deb
	./debify.sh libgcrypt $(LIBGCRYPT_VERSION)

libgcrypt:
	if test -f libgcrypt-$(LIBGCRYPT_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../libgcrypt-$(LIBGCRYPT_VERSION).zip; \
	else \
		make libgpg-error mingw32-libgcrypt_$(LIBGCRYPT_VERSION)-1_all.deb; \
	fi

clean-libgcrypt:
	-make -C build/libgcrypt-$(LIBGCRYPT_VERSION) uninstall
	rm -rf src/libgcrypt-$(LIBGCRYPT_VERSION)
	rm -rf build/libgcrypt-$(LIBGCRYPT_VERSION)

# Libtasn1

dist/libtasn1-$(LIBTASN1_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://ftp.gnu.org/gnu/libtasn1/libtasn1-$(LIBTASN1_VERSION).tar.gz ftp://ftp.gnu.org/gnu/libtasn1/libtasn1-$(LIBTASN1_VERSION).tar.gz.sig
	gpg tmp/libtasn1-$(LIBTASN1_VERSION).tar.gz.sig
	-mkdir dist
	mv tmp/libtasn1-$(LIBTASN1_VERSION).tar.gz tmp/libtasn1-$(LIBTASN1_VERSION).tar.gz.sig dist/
	rm -rf tmp

src/libtasn1-$(LIBTASN1_VERSION)/configure: dist/libtasn1-$(LIBTASN1_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/libtasn1-$(LIBTASN1_VERSION).tar.gz
	touch src/libtasn1-$(LIBTASN1_VERSION)/configure

build/libtasn1-$(LIBTASN1_VERSION)/Makefile: src/libtasn1-$(LIBTASN1_VERSION)/configure
	rm -rf build/libtasn1-$(LIBTASN1_VERSION)
	mkdir -p build/libtasn1-$(LIBTASN1_VERSION) && \
	cd build/libtasn1-$(LIBTASN1_VERSION) && \
	../../src/libtasn1-$(LIBTASN1_VERSION)/configure $(CFGFLAGS)

inst/bin/libtasn1-$(LIBTASN1_DLL_VERSION).dll: build/libtasn1-$(LIBTASN1_VERSION)/Makefile
	make -C build/libtasn1-$(LIBTASN1_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

libtasn1-$(LIBTASN1_VERSION).zip: inst/bin/libtasn1-$(LIBTASN1_DLL_VERSION).dll
	rm -f libtasn1-$(LIBTASN1_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../libtasn1-$(LIBTASN1_VERSION).zip *

libtasn1-$(LIBTASN1_VERSION).zip.sig: libtasn1-$(LIBTASN1_VERSION).zip
	rm -f libtasn1-$(LIBTASN1_VERSION).zip.sig
	gpg -b libtasn1-$(LIBTASN1_VERSION).zip

mingw32-libtasn1_$(LIBTASN1_VERSION)-1_all.deb: libtasn1-$(LIBTASN1_VERSION).zip.sig
	rm -f mingw32-libtasn1_$(LIBTASN1_VERSION)-1_all.deb
	./debify.sh libtasn1 $(LIBTASN1_VERSION)

libtasn1:
	if test -f libtasn1-$(LIBTASN1_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../libtasn1-$(LIBTASN1_VERSION).zip; \
	else \
		make mingw32-libtasn1_$(LIBTASN1_VERSION)-1_all.deb; \
	fi

clean-libtasn1:
	-make -C build/libtasn1-$(LIBTASN1_VERSION) uninstall
	rm -rf src/libtasn1-$(LIBTASN1_VERSION)
	rm -rf build/libtasn1-$(LIBTASN1_VERSION)

# GnuTLS

dist/gnutls-$(GNUTLS_VERSION).tar.bz2:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://ftp.gnu.org/gnu/gnutls/gnutls-$(GNUTLS_VERSION).tar.bz2 ftp://ftp.gnu.org/gnu/gnutls/gnutls-$(GNUTLS_VERSION).tar.bz2.sig
	gpg tmp/gnutls-$(GNUTLS_VERSION).tar.bz2.sig
	-mkdir dist
	mv tmp/gnutls-$(GNUTLS_VERSION).tar.bz2 tmp/gnutls-$(GNUTLS_VERSION).tar.bz2.sig dist/
	rm -rf tmp

src/gnutls-$(GNUTLS_VERSION)/configure: dist/gnutls-$(GNUTLS_VERSION).tar.bz2
	-mkdir src
	cd src && tar xfj ../dist/gnutls-$(GNUTLS_VERSION).tar.bz2
	cd src/gnutls-$(GNUTLS_VERSION) && patch -p0 < ../../patch-gnutls2911.diff
	touch src/gnutls-$(GNUTLS_VERSION)/configure

build/gnutls-$(GNUTLS_VERSION)/Makefile: src/gnutls-$(GNUTLS_VERSION)/configure
	rm -rf build/gnutls-$(GNUTLS_VERSION)
	mkdir -p build/gnutls-$(GNUTLS_VERSION) && \
	cd build/gnutls-$(GNUTLS_VERSION) && \
	../../src/gnutls-$(GNUTLS_VERSION)/configure $(CFGFLAGS) --disable-openpgp-authentication

inst/bin/libgnutls-$(GNUTLS_DLL_VERSION).dll: build/gnutls-$(GNUTLS_VERSION)/Makefile
	make -C build/gnutls-$(GNUTLS_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

gnutls-$(GNUTLS_VERSION).zip: inst/bin/libgnutls-$(GNUTLS_DLL_VERSION).dll
	rm -f gnutls-$(GNUTLS_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../gnutls-$(GNUTLS_VERSION).zip *

gnutls-$(GNUTLS_VERSION).zip.sig: gnutls-$(GNUTLS_VERSION).zip
	rm -f gnutls-$(GNUTLS_VERSION).zip.sig
	gpg -b gnutls-$(GNUTLS_VERSION).zip

mingw32-gnutls_$(GNUTLS_VERSION)-1_all.deb: gnutls-$(GNUTLS_VERSION).zip.sig
	rm -f mingw32-gnutls_$(GNUTLS_VERSION)-1_all.deb
	./debify.sh gnutls $(GNUTLS_VERSION)

gnutls:
	if test -f gnutls-$(GNUTLS_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../gnutls-$(GNUTLS_VERSION).zip; \
	else \
		make libtasn1 libgcrypt mingw32-gnutls_$(GNUTLS_VERSION)-1_all.deb; \
	fi

clean-gnutls:
	-make -C build/gnutls-$(GNUTLS_VERSION) uninstall
	rm -rf src/gnutls-$(GNUTLS_VERSION)
	rm -rf build/gnutls-$(GNUTLS_VERSION)

# GNU LibIDN

dist/libidn-$(LIBIDN_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://ftp.gnu.org/gnu/libidn/libidn-$(LIBIDN_VERSION).tar.gz ftp://ftp.gnu.org/gnu/libidn/libidn-$(LIBIDN_VERSION).tar.gz.sig
	gpg tmp/libidn-$(LIBIDN_VERSION).tar.gz.sig
	-mkdir dist
	mv tmp/libidn-$(LIBIDN_VERSION).tar.gz tmp/libidn-$(LIBIDN_VERSION).tar.gz.sig dist/
	rm -rf tmp

src/libidn-$(LIBIDN_VERSION)/configure: dist/libidn-$(LIBIDN_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/libidn-$(LIBIDN_VERSION).tar.gz
	touch src/libidn-$(LIBIDN_VERSION)/configure

build/libidn-$(LIBIDN_VERSION)/Makefile: src/libidn-$(LIBIDN_VERSION)/configure
	rm -rf build/libidn-$(LIBIDN_VERSION)
	mkdir -p build/libidn-$(LIBIDN_VERSION) && \
	cd build/libidn-$(LIBIDN_VERSION) && \
	../../src/libidn-$(LIBIDN_VERSION)/configure $(CFGFLAGS)

inst/bin/libidn-$(LIBIDN_DLL_VERSION).dll: build/libidn-$(LIBIDN_VERSION)/Makefile
	make -C build/libidn-$(LIBIDN_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

libidn-$(LIBIDN_VERSION).zip: inst/bin/libidn-$(LIBIDN_DLL_VERSION).dll
	rm -f libidn-$(LIBIDN_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../libidn-$(LIBIDN_VERSION).zip *

libidn-$(LIBIDN_VERSION).zip.sig: libidn-$(LIBIDN_VERSION).zip
	rm -f libidn-$(LIBIDN_VERSION).zip.sig
	gpg -b libidn-$(LIBIDN_VERSION).zip

mingw32-libidn_$(LIBIDN_VERSION)-1_all.deb: libidn-$(LIBIDN_VERSION).zip.sig
	rm -f mingw32-libidn_$(LIBIDN_VERSION)-1_all.deb
	./debify.sh libidn $(LIBIDN_VERSION)

libidn:
	if test -f libidn-$(LIBIDN_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../libidn-$(LIBIDN_VERSION).zip; \
	else \
		make mingw32-libidn_$(LIBIDN_VERSION)-1_all.deb; \
	fi

clean-libidn:
	-make -C build/libidn-$(LIBIDN_VERSION) uninstall
	rm -rf src/libidn-$(LIBIDN_VERSION)
	rm -rf build/libidn-$(LIBIDN_VERSION)

# GNU Shishi

dist/shishi-$(SHISHI_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://alpha.gnu.org/gnu/shishi/shishi-$(SHISHI_VERSION).tar.gz ftp://alpha.gnu.org/gnu/shishi/shishi-$(SHISHI_VERSION).tar.gz.sig
	gpg tmp/shishi-$(SHISHI_VERSION).tar.gz.sig
	-mkdir dist
	mv tmp/shishi-$(SHISHI_VERSION).tar.gz tmp/shishi-$(SHISHI_VERSION).tar.gz.sig dist/
	rm -rf tmp

src/shishi-$(SHISHI_VERSION)/configure: dist/shishi-$(SHISHI_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/shishi-$(SHISHI_VERSION).tar.gz
	touch src/shishi-$(SHISHI_VERSION)/configure

build/shishi-$(SHISHI_VERSION)/Makefile: src/shishi-$(SHISHI_VERSION)/configure
	rm -rf build/shishi-$(SHISHI_VERSION)
	mkdir -p build/shishi-$(SHISHI_VERSION) && \
	cd build/shishi-$(SHISHI_VERSION) && \
	../../src/shishi-$(SHISHI_VERSION)/configure $(CFGFLAGS)

inst/bin/libshishi-$(SHISHI_DLL_VERSION).dll: build/shishi-$(SHISHI_VERSION)/Makefile
	make -C build/shishi-$(SHISHI_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

shishi-$(SHISHI_VERSION).zip: inst/bin/libshishi-$(SHISHI_DLL_VERSION).dll
	rm -f shishi-$(SHISHI_VERSION).zip
	rm -rf inst/share/info/dir inst/etc/shishi/shishi.keys inst/var/shishi
	cd inst && zip -r ../shishi-$(SHISHI_VERSION).zip *

shishi-$(SHISHI_VERSION).zip.sig: shishi-$(SHISHI_VERSION).zip
	rm -f shishi-$(SHISHI_VERSION).zip.sig
	gpg -b shishi-$(SHISHI_VERSION).zip

mingw32-shishi_$(SHISHI_VERSION)-1_all.deb: shishi-$(SHISHI_VERSION).zip.sig
	rm -f mingw32-shishi_$(SHISHI_VERSION)-1_all.deb
	./debify.sh shishi $(SHISHI_VERSION)

shishi:
	if test -f shishi-$(SHISHI_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../shishi-$(SHISHI_VERSION).zip; \
	else \
		make gnutls libidn mingw32-shishi_$(SHISHI_VERSION)-1_all.deb; \
	fi

clean-shishi:
	-make -C build/shishi-$(SHISHI_VERSION) uninstall
	rm -rf src/shishi-$(SHISHI_VERSION)
	rm -rf build/shishi-$(SHISHI_VERSION)

# GNU GSS

dist/gss-$(GSS_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://ftp.gnu.org/gnu/gss/gss-$(GSS_VERSION).tar.gz ftp://ftp.gnu.org/gnu/gss/gss-$(GSS_VERSION).tar.gz.sig
	gpg tmp/gss-$(GSS_VERSION).tar.gz.sig
	-mkdir dist
	mv tmp/gss-$(GSS_VERSION).tar.gz tmp/gss-$(GSS_VERSION).tar.gz.sig dist/
	rm -rf tmp

src/gss-$(GSS_VERSION)/configure: dist/gss-$(GSS_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/gss-$(GSS_VERSION).tar.gz
	touch src/gss-$(GSS_VERSION)/configure

build/gss-$(GSS_VERSION)/Makefile: src/gss-$(GSS_VERSION)/configure
	rm -rf build/gss-$(GSS_VERSION)
	mkdir -p build/gss-$(GSS_VERSION) && \
	cd build/gss-$(GSS_VERSION) && \
	../../src/gss-$(GSS_VERSION)/configure $(CFGFLAGS)

inst/bin/libgss-$(GSS_DLL_VERSION).dll: build/gss-$(GSS_VERSION)/Makefile
	make -C build/gss-$(GSS_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

gss-$(GSS_VERSION).zip: inst/bin/libgss-$(GSS_DLL_VERSION).dll
	rm -f gss-$(GSS_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../gss-$(GSS_VERSION).zip *

gss-$(GSS_VERSION).zip.sig: gss-$(GSS_VERSION).zip
	rm -f gss-$(GSS_VERSION).zip.sig
	gpg -b gss-$(GSS_VERSION).zip

mingw32-gss_$(GSS_VERSION)-1_all.deb: gss-$(GSS_VERSION).zip.sig
	rm -f mingw32-gss_$(GSS_VERSION)-1_all.deb
	./debify.sh gss $(GSS_VERSION)

gss:
	if test -f gss-$(GSS_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../gss-$(GSS_VERSION).zip; \
	else \
		make shishi mingw32-gss_$(GSS_VERSION)-1_all.deb; \
	fi

clean-gss:
	-make -C build/gss-$(GSS_VERSION) uninstall
	rm -rf src/gss-$(GSS_VERSION)
	rm -rf build/gss-$(GSS_VERSION)

# Libntlm

dist/libntlm-$(LIBNTLM_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q http://www.nongnu.org/libntlm/releases/libntlm-$(LIBNTLM_VERSION).tar.gz http://www.nongnu.org/libntlm/releases/libntlm-$(LIBNTLM_VERSION).tar.gz.sig
	gpg tmp/libntlm-$(LIBNTLM_VERSION).tar.gz.sig
	-mkdir dist
	mv tmp/libntlm-$(LIBNTLM_VERSION).tar.gz tmp/libntlm-$(LIBNTLM_VERSION).tar.gz.sig dist/
	rm -rf tmp

src/libntlm-$(LIBNTLM_VERSION)/configure: dist/libntlm-$(LIBNTLM_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/libntlm-$(LIBNTLM_VERSION).tar.gz
	touch src/libntlm-$(LIBNTLM_VERSION)/configure

build/libntlm-$(LIBNTLM_VERSION)/Makefile: src/libntlm-$(LIBNTLM_VERSION)/configure
	rm -rf build/libntlm-$(LIBNTLM_VERSION)
	mkdir -p build/libntlm-$(LIBNTLM_VERSION) && \
	cd build/libntlm-$(LIBNTLM_VERSION) && \
	../../src/libntlm-$(LIBNTLM_VERSION)/configure $(CFGFLAGS)

inst/bin/libntlm-$(LIBNTLM_DLL_VERSION).dll: build/libntlm-$(LIBNTLM_VERSION)/Makefile
	make -C build/libntlm-$(LIBNTLM_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

libntlm-$(LIBNTLM_VERSION).zip: inst/bin/libntlm-$(LIBNTLM_DLL_VERSION).dll
	rm -f libntlm-$(LIBNTLM_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../libntlm-$(LIBNTLM_VERSION).zip *

libntlm-$(LIBNTLM_VERSION).zip.sig: libntlm-$(LIBNTLM_VERSION).zip
	rm -f libntlm-$(LIBNTLM_VERSION).zip.sig
	gpg -b libntlm-$(LIBNTLM_VERSION).zip

mingw32-libntlm_$(LIBNTLM_VERSION)-1_all.deb: libntlm-$(LIBNTLM_VERSION).zip.sig
	rm -f mingw32-libntlm_$(LIBNTLM_VERSION)-1_all.deb
	./debify.sh libntlm $(LIBNTLM_VERSION)

libntlm:
	if test -f libntlm-$(LIBNTLM_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../libntlm-$(LIBNTLM_VERSION).zip; \
	else \
		make mingw32-libntlm_$(LIBNTLM_VERSION)-1_all.deb; \
	fi

clean-libntlm:
	-make -C build/libntlm-$(LIBNTLM_VERSION) uninstall
	rm -rf src/libntlm-$(LIBNTLM_VERSION)
	rm -rf build/libntlm-$(LIBNTLM_VERSION)

# GNU SASL

dist/gsasl-$(GSASL_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q ftp://alpha.gnu.org/gnu/gsasl/gsasl-$(GSASL_VERSION).tar.gz ftp://alpha.gnu.org/gnu/gsasl/gsasl-$(GSASL_VERSION).tar.gz.sig
	gpg tmp/gsasl-$(GSASL_VERSION).tar.gz.sig
	-mkdir dist
	mv tmp/gsasl-$(GSASL_VERSION).tar.gz tmp/gsasl-$(GSASL_VERSION).tar.gz.sig dist/
	rm -rf tmp

src/gsasl-$(GSASL_VERSION)/configure: dist/gsasl-$(GSASL_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/gsasl-$(GSASL_VERSION).tar.gz
	cd src/gsasl-$(GSASL_VERSION) && patch -p2 < ../../patch-gsasl152.diff
	touch src/gsasl-$(GSASL_VERSION)/configure

build/gsasl-$(GSASL_VERSION)/Makefile: src/gsasl-$(GSASL_VERSION)/configure
	rm -rf build/gsasl-$(GSASL_VERSION)
	mkdir -p build/gsasl-$(GSASL_VERSION) && \
	cd build/gsasl-$(GSASL_VERSION) && \
	../../src/gsasl-$(GSASL_VERSION)/configure $(CFGFLAGS)

inst/bin/libgsasl-$(GSASL_DLL_VERSION).dll: build/gsasl-$(GSASL_VERSION)/Makefile
	make -C build/gsasl-$(GSASL_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

gsasl-$(GSASL_VERSION).zip: inst/bin/libgsasl-$(GSASL_DLL_VERSION).dll
	rm -f gsasl-$(GSASL_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../gsasl-$(GSASL_VERSION).zip *

gsasl-$(GSASL_VERSION).zip.sig: gsasl-$(GSASL_VERSION).zip
	rm -f gsasl-$(GSASL_VERSION).zip.sig
	gpg -b gsasl-$(GSASL_VERSION).zip

mingw32-gsasl_$(GSASL_VERSION)-1_all.deb: gsasl-$(GSASL_VERSION).zip.sig
	rm -f mingw32-gsasl_$(GSASL_VERSION)-1_all.deb
	./debify.sh gsasl $(GSASL_VERSION)

gsasl:
	if test -f gsasl-$(GSASL_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../gsasl-$(GSASL_VERSION).zip; \
	else \
		make gss mingw32-gsasl_$(GSASL_VERSION)-1_all.deb; \
	fi

clean-gsasl:
	-make -C build/gsasl-$(GSASL_VERSION) uninstall
	rm -rf src/gsasl-$(GSASL_VERSION)
	rm -rf build/gsasl-$(GSASL_VERSION)

gsasl-$(GSASL_VERSION).exe: gsasl gsasl.nsi
	makensis \
		-DLIBGPGERROR_VERSION=$(LIBGPGERROR_VERSION) \
		-DLIBGPGERROR_DLL_VERSION=$(LIBGPGERROR_DLL_VERSION) \
		-DLIBGCRYPT_VERSION=$(LIBGCRYPT_VERSION) \
		-DLIBGCRYPT_DLL_VERSION=$(LIBGCRYPT_DLL_VERSION) \
		-DGSASL_VERSION=$(GSASL_VERSION) \
		-DGSASL_DLL_VERSION=$(GSASL_DLL_VERSION) \
		gsasl.nsi
	chmod +x gsasl-$(GSASL_VERSION).exe

gsasl-$(GSASL_VERSION).exe.sig: gsasl-$(GSASL_VERSION).exe
	rm -f gsasl-$(GSASL_VERSION).exe.sig
	gpg -b gsasl-$(GSASL_VERSION).exe

# Libssh2

dist/libssh2-$(LIBSSH2_VERSION).tar.gz:
	rm -rf tmp
	mkdir tmp
	cd tmp && wget -q http://www.libssh2.org/download/libssh2-$(LIBSSH2_VERSION).tar.gz
	-mkdir dist
	mv tmp/libssh2-$(LIBSSH2_VERSION).tar.gz dist/
	rm -rf tmp

src/libssh2-$(LIBSSH2_VERSION)/configure: dist/libssh2-$(LIBSSH2_VERSION).tar.gz
	-mkdir src
	cd src && tar xfz ../dist/libssh2-$(LIBSSH2_VERSION).tar.gz
	touch src/libssh2-$(LIBSSH2_VERSION)/configure

build/libssh2-$(LIBSSH2_VERSION)/Makefile: src/libssh2-$(LIBSSH2_VERSION)/configure
	rm -rf build/libssh2-$(LIBSSH2_VERSION)
	mkdir -p build/libssh2-$(LIBSSH2_VERSION) && \
	cd build/libssh2-$(LIBSSH2_VERSION) && \
	../../src/libssh2-$(LIBSSH2_VERSION)/configure $(CFGFLAGS)

inst/bin/libssh2-$(LIBSSH2_DLL_VERSION).dll: build/libssh2-$(LIBSSH2_VERSION)/Makefile
	make -C build/libssh2-$(LIBSSH2_VERSION) install check
	find inst \( -name \*.la -o -name \*-config \) -exec sed s?/home/jas/gnutls4win/inst?/usr/i586-mingw32msvc?g -i {} \;

libssh2-$(LIBSSH2_VERSION).zip: inst/bin/libssh2-$(LIBSSH2_DLL_VERSION).dll
	rm -f libssh2-$(LIBSSH2_VERSION).zip
	rm -f inst/share/info/dir
	cd inst && zip -r ../libssh2-$(LIBSSH2_VERSION).zip *

libssh2-$(LIBSSH2_VERSION).zip.sig: libssh2-$(LIBSSH2_VERSION).zip
	rm -f libssh2-$(LIBSSH2_VERSION).zip.sig
	gpg -b libssh2-$(LIBSSH2_VERSION).zip

mingw32-libssh2_$(LIBSSH2_VERSION)-1_all.deb: libssh2-$(LIBSSH2_VERSION).zip.sig
	rm -f mingw32-libssh2_$(LIBSSH2_VERSION)-1_all.deb
	./debify.sh libssh2 $(LIBSSH2_VERSION)

libssh2:
	if test -f libssh2-$(LIBSSH2_VERSION).zip; then \
		mkdir -p inst && cd inst && unzip ../libssh2-$(LIBSSH2_VERSION).zip; \
	else \
		make libgcrypt mingw32-libssh2_$(LIBSSH2_VERSION)-1_all.deb; \
	fi

clean-libssh2:
	-make -C build/libssh2-$(LIBSSH2_VERSION) uninstall
	rm -rf src/libssh2-$(LIBSSH2_VERSION)
	rm -rf build/libssh2-$(LIBSSH2_VERSION)

# Deliverables

gnutls-$(GNUTLS_VERSION).exe: gnutls dist/libgpg-error-$(LIBGPGERROR_VERSION).tar.bz2 dist/libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2 dist/libtasn1-$(LIBTASN1_VERSION).tar.gz
	makensis \
		-DLIBTASN1_VERSION=$(LIBTASN1_VERSION) \
		-DLIBTASN1_DLL_VERSION=$(LIBTASN1_DLL_VERSION) \
		-DLIBGPGERROR_VERSION=$(LIBGPGERROR_VERSION) \
		-DLIBGPGERROR_DLL_VERSION=$(LIBGPGERROR_DLL_VERSION) \
		-DLIBGCRYPT_VERSION=$(LIBGCRYPT_VERSION) \
		-DLIBGCRYPT_DLL_VERSION=$(LIBGCRYPT_DLL_VERSION) \
		-DGNUTLS_VERSION=$(GNUTLS_VERSION) \
		-DGNUTLS_DLL_VERSION=$(GNUTLS_DLL_VERSION) \
		gnutls.nsi
	chmod +x gnutls-$(GNUTLS_VERSION).exe

gnutls-$(GNUTLS_VERSION).exe.sig: gnutls-$(GNUTLS_VERSION).exe
	rm -f gnutls-$(GNUTLS_VERSION).exe.sig
	gpg -b gnutls-$(GNUTLS_VERSION).exe

gnutls.exe: gnutls-$(GNUTLS_VERSION).exe.sig

# Cruft

README.html: README Makefile
	-asciidoc --attribute icons --attribute iconsdir=../graphics/ --attribute imagesdir=./ README
	-cvs commit -m Auto-update. README.html
