# gsasl4win Makefile --- build GSASL for Windows
#
# 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

GSASL_VERSION=1.5.2
GSASL_DLL_VERSION=7

ZIPS=\
	gsasl-$(GSASL_VERSION)-x86.zip \
	gsasl-$(GSASL_VERSION)-x64.zip \
	gsasl-$(GSASL_VERSION)-x86-kfw322.zip

all: add-pgp-keys $(ZIPS)

clean:
	rm -rf src build inst kfw322x86 kfw323x86

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

# KfW 3.2.2

install-kfw322:
	rm -rf tmp && \
	mkdir tmp && \
	cd tmp && \
	wget http://web.mit.edu/kerberos/dist/kfw/3.2/kfw-3.2.2/kfw-3-2-2.zip && \
	unzip kfw-3-2-2.zip && \
	cp -v kfw-3-2-2-final/bin/i386/*.dll $(HOME)/.wine/drive_c/windows/system32/

dist/kfw-3-2-2-sdk.zip:
	-mkdir dist
	cd dist && wget http://web.mit.edu/kerberos/dist/kfw/3.2/kfw-3.2.2/kfw-3-2-2-sdk.zip

kfw322x86/kfw-3-2-2-final/inc/krb5/win-mac.h: dist/kfw-3-2-2-sdk.zip
	-mkdir kfw322x86
	cd kfw322x86 && unzip ../dist/kfw-3-2-2-sdk.zip
	perl -pi -e 's,sys\\,sys/,' kfw322x86/kfw-3-2-2-final/inc/krb5/win-mac.h

# KfW 3.2.3 x86

install-x86-kfw323:
	rm -rf tmp && \
	mkdir tmp && \
	cd tmp && \
	wget http://web.mit.edu/kerberos/dist/kfw/3.2/kfw-3.2.3-alpha1/kfw-3-2-3-i386.zip && \
	unzip kfw-3-2-3-i386.zip && \
	cp -v kfw-3-2-3-final/bin/i386/*.dll $(HOME)/.wine/drive_c/windows/system32/

dist/kfw-3-2-3-i386-sdk.zip:
	-mkdir dist
	cd dist && wget http://web.mit.edu/kerberos/dist/kfw/3.2/kfw-3.2.3-alpha1/kfw-3-2-3-i386-sdk.zip

kfw323x86/kfw-3-2-3-final/inc/krb5/win-mac.h: dist/kfw-3-2-3-i386-sdk.zip
	-mkdir kfw323x86
	cd kfw323x86 && unzip ../dist/kfw-3-2-3-i386-sdk.zip
	perl -pi -e 's,sys\\,sys/,' kfw323x86/kfw-3-2-3-final/inc/krb5/win-mac.h

# 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

# x86 vanilla

build-x86/gsasl-$(GSASL_VERSION)/Makefile: src/gsasl-$(GSASL_VERSION)/configure
	rm -rf build-x86/gsasl-$(GSASL_VERSION)
	mkdir -p build-x86/gsasl-$(GSASL_VERSION) && \
	cd build-x86/gsasl-$(GSASL_VERSION) && \
	../../src/gsasl-$(GSASL_VERSION)/configure --host=i686-w64-mingw32 --build=i686-pc-linux-gnu --prefix=$(PWD)/inst-x86 --without-libgcrypt

inst-x86/bin/libgsasl-$(GSASL_DLL_VERSION).dll: build-x86/gsasl-$(GSASL_VERSION)/Makefile
	make -C build-x86/gsasl-$(GSASL_VERSION) install check

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

# x64 vanilla

build-x64/gsasl-$(GSASL_VERSION)/Makefile: src/gsasl-$(GSASL_VERSION)/configure
	rm -rf build-x64/gsasl-$(GSASL_VERSION)
	mkdir -p build-x64/gsasl-$(GSASL_VERSION) && \
	cd build-x64/gsasl-$(GSASL_VERSION) && \
	../../src/gsasl-$(GSASL_VERSION)/configure --host=i686-w64-mingw32 --build=i686-pc-linux-gnu --prefix=$(PWD)/inst-x64 --without-libgcrypt

inst-x64/bin/libgsasl-$(GSASL_DLL_VERSION).dll: build-x64/gsasl-$(GSASL_VERSION)/Makefile
	make -C build-x64/gsasl-$(GSASL_VERSION) install

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

# x86 KfW 3.2.2 flavor

build-x86-kfw322/gsasl-$(GSASL_VERSION)/Makefile: src/gsasl-$(GSASL_VERSION)/configure kfw322x86/kfw-3-2-2-final/inc/krb5/win-mac.h install-kfw322
	rm -rf build-x86-kfw322/gsasl-$(GSASL_VERSION)
	mkdir -p build-x86-kfw322/gsasl-$(GSASL_VERSION) && \
	cd build-x86-kfw322/gsasl-$(GSASL_VERSION) && \
	lt_cv_deplibs_check_method=pass_all ../../src/gsasl-$(GSASL_VERSION)/configure --host=i686-w64-mingw32 --build=i686-pc-linux-gnu --prefix=$(PWD)/inst-x86-kfw322 --without-libgcrypt --with-gssapi-impl=kfw LDFLAGS="-L$(PWD)/kfw322x86/kfw-3-2-2-final/lib/i386" CPPFLAGS="-I$(PWD)/kfw322x86/kfw-3-2-2-final/inc/krb5 -DSSIZE_T_DEFINED"

inst-x86-kfw322/bin/libgsasl-$(GSASL_DLL_VERSION).dll: build-x86-kfw322/gsasl-$(GSASL_VERSION)/Makefile
	make -C build-x86-kfw322/gsasl-$(GSASL_VERSION) install check

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

# x86 KfW 3.2.3 flavor (not built right now due to crashes)

build-x86-kfw323/gsasl-$(GSASL_VERSION)/Makefile: src/gsasl-$(GSASL_VERSION)/configure kfw323x86/kfw-3-2-3-final/inc/krb5/win-mac.h install-x86-kfw323
	rm -rf build-x86-kfw323/gsasl-$(GSASL_VERSION)
	mkdir -p build-x86-kfw323/gsasl-$(GSASL_VERSION) && \
	cd build-x86-kfw323/gsasl-$(GSASL_VERSION) && \
	lt_cv_deplibs_check_method=pass_all ../../src/gsasl-$(GSASL_VERSION)/configure --host=i686-w64-mingw32 --build=i686-pc-linux-gnu --prefix=$(PWD)/inst-x86-kfw323 --without-libgcrypt --with-gssapi-impl=kfw LDFLAGS="-L$(PWD)/kfw323x86/kfw-3-2-3-final/lib/i386" CPPFLAGS="-I$(PWD)/kfw323x86/kfw-3-2-3-final/inc/krb5 -DSSIZE_T_DEFINED"

inst-x86-kfw323/bin/libgsasl-$(GSASL_DLL_VERSION).dll: build-x86-kfw323/gsasl-$(GSASL_VERSION)/Makefile
	make -C build-x86-kfw323/gsasl-$(GSASL_VERSION) install check

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

# Upload rules

upload:
	gnupload --to ftp.gnu.org:gsasl $(ZIPS)
	cp $(ZIPS) *.sig ../releases/gsasl/

# Cruft

README.html: README Makefile
	-asciidoc --attribute icons --attribute iconsdir=../graphics/ --attribute imagesdir=./ README
