#
# Laedt Entwicklungsumgebung msys, Bibliotheken gtkmm und gnet sowie FreeDoko
# und erstellt FreeDoko Programm
# Es werden etwa 80 MB heruntergeladen
# Getestet unter Microsoft Windows XP, wird wahrscheinlich nicht unter Windows 98 funktionieren.
#
# 2008-01-19 Diether Knof



#
# Umgebung
#
# uebergeordnetes Verzeichnis
# set FREEDOKO_DIRECTORY=C:\install\FreeDoko.build
#set FREEDOKO_DIRECTORY=%CD%
# Verzeichnis fuer die Programme
#set BIN_DIR=%FREEDOKO_DIRECTORY%\bin
# Verzeichnis fuer die download
#set DOWNLOAD_DIR=%FREEDOKO_DIRECTORY%\download
# Verzeichnis fuer MinGW32
#set MINGW_DIR=%FREEDOKO_DIRECTORY%\MinGW32
# Verzeichnis fuer den FreeDoko Quelltext
#set FREEDOKO_TRUNK_DIR=%FREEDOKO_DIRECTORY%\trunk
# Verzeichnis fuer die weiteren Datendateien von FreeDoko
#set FREEDOKO_DATA_DIR=%FREEDOKO_DIRECTORY%\more_data
# Verzeichnis fuer das FreeDoko Handbuch
#set FREEDOKO_MANUAL_DIR=%FREEDOKO_DIRECTORY%\manual
# Verzeichnis fuer die FreeDoko Installations-Dateien
#set FREEDOKO_INSTALL_DEV_DIR=%FREEDOKO_DIRECTORY%\install_dev

# Programme
#   wget
#set WGET=%BIN_DIR%\wget.exe --no-clobber --no-directories --directory-prefix=%DOWNLOAD_DIR%
#   Entpacker
#set UNCOMPRESS=%BIN_DIR%\7z.exe x -aoa -y
#   md5
#set MD5SUM=%BIN_DIR%\md5.exe
#   svn
#set SVN=%MINGW_DIR%\bin\svn.exe

VERSION=0.7.5

.PHONY: help
help :
	echo Aufruf:
	echo help:  gibt diese Hilfe aus
	echo info:  gibt Informationen ueber den Sinn aus
	echo clean: loescht alle erzeugten Dateien
	echo install: fuehrt die Installation durch
	echo install_mingw: installiert die MinGW-Umgebung
	echo install_svn: installiert subversion
	echo install_pthreads: installiert die Bibliothek pthreads
	echo install_gtk: installiert die Bibliothek gtk
	echo install_gtkmm: installiert die Bibliothek gtkmm
	echo install_gnet: installiert die Bibliothek gnet
	echo install_alut: installiert die Bibliothek alut
	echo install_FreeDoko: installiert FreeDoko
	echo install_FreeDoko_src: installiert den FreeDoko Quelltext
	echo install_FreeDoko_nonfree-cardsets: installiert unfreie Kartensaetze für FreeDoko
	echo install_FreeDoko_more_data: installiert weitere Datendateien von FreeDoko
	echo install_FreeDoko_manual: installiert das Handbuch von FreeDoko
	echo install_FreeDoko_shortcuts: erstellt Verknuepfungen von FreeDoko
	echo install_FreeDoko_update: erstellt das Aktualisierungsskript von FreeDoko
	echo update:  aktualisiert FreeDoko und ggf. die Entwicklungsumgebung
	echo update_FreeDoko_src: installiert zusaetzliche Kartensätze
	echo update_FreeDoko_more_data: installiert zusaetzliche Kartensätze
	echo update_FreeDoko_manual: installiert das Handbuch von FreeDoko
	echo compile: kompiliert FreeDoko

# Informationen ueber das Skript
.PHONY: info
info :
	echo ----
	echo Dieses Skript laedt die Entwicklungsumgebung msys, die Bibliotheken gtkmm und gnet sowie FreeDoko und erstellt das FreeDoko Programm.
	echo Es werden etwa 80 MB heruntergeladen
	echo Getestet unter Microsoft Windows XP, wird wahrscheinlich nicht unter Windows 98 funktionieren.
	echo ----


# loescht alle erzeugten Dateien
.PHONY: clean
clean :
	if exist $(TARGET_DIR) rmdir /s /q $(TARGET_DIR)
	if exist $(MINGW_DIR) rmdir /s /q $(MINGW_DIR)
	if exist $(FREEDOKO_TRUNK_DIR) rmdir /s /q $(FREEDOKO_TRUNK_DIR)
	if exist $(FREEDOKO_DATA_DIR) rmdir /s /q $(FREEDOKO_DATA_DIR)
	if exist $(FREEDOKO_MANUAL_DIR) rmdir /s /q $(FREEDOKO_MANUAL_DIR)
	if exist $(FREEDOKO_INSTALL_DEV_DIR) rmdir /s /q $(FREEDOKO_INSTALL_DEV_DIR)

# fuehrt die Installation durch
.PHONY: install
install : directories
	$(MAKE) install_mingw \
	        install_svn \
		install_pthreads \
		install_gtkmm \
		install_gnet \
		install_FreeDoko \
		compile_FreeDoko \
		install_FreeDoko_shortcuts

# erstellt die verwendeten Verzeichnisse:
# download, target, MinGW
.PHONY: directories
directories :
	if not exist %DOWNLOAD_DIR% mkdir %DOWNLOAD_DIR%
	if not exist %MINGW_DIR% mkdir %MINGW_DIR%
	if not exist %TARGET_DIR% mkdir %TARGET_DIR%

# installiert die MinGW-Umgebung
.PHONY: install_mingw
install_mingw : $(TARGET_DIR)\install_mingw
$(TARGET_DIR)\install_mingw :
	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/mingw/" \
	        "FILE=mingw-runtime-3.9.tar.gz" \
	        "MD5SUM=0CB66B1071DA224EA2174F960C593E2E" \
	        fetch
#	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/mingw/" \
#	        "FILE=mingw32-make-3.80.0-3.tar.gz" \
#	        "MD5SUM=A68E5A25917EB1BB6AA1D359EEC47B4B" \
#	        fetch
	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/mingw/" \
	        "FILE=binutils-2.15.91-20040904-1.tar.gz" \
	        "MD5SUM=64E8A3A2AA3B780F56287E0B6144689C" \
	        fetch
	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/mingw/" \
	        "FILE=gcc-core-3.4.2-20040916-1.tar.gz" \
	        "MD5SUM=D9CD78F926FC31EF101C6FA7072FC65D" \
	        fetch
	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/mingw/" \
	        "FILE=gcc-g++-3.4.2-20040916-1.tar.gz" \
	        "MD5SUM=E5C7EB2C1E5F7E10842EAC03D1D6FCDC" \
	        fetch
	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/mingw/" \
	        "FILE=w32api-3.6.tar.gz" \
	        "MD5SUM=2F86EC42CAFD774EC82162FBC6E6808D" \
	        fetch
	$(MAKE) "FILE=mingw-runtime-3.9.tar.gz" \
	        extract_tar_gz
#	$(MAKE) "FILE=mingw32-make-3.80.0-3.tar.gz" \
#	        extract_tar_gz
	$(MAKE) "FILE=binutils-2.15.91-20040904-1.tar.gz" \
	        extract_tar_gz
	$(MAKE) "FILE=gcc-core-3.4.2-20040916-1.tar.gz" \
	        extract_tar_gz
	$(MAKE) "FILE=gcc-g++-3.4.2-20040916-1.tar.gz" \
	        extract_tar_gz
	$(MAKE) "FILE=w32api-3.6.tar.gz" \
	        extract_tar_gz
	echo $(VERSION) > $@

# installiert subversion
.PHONY: install_svn
install_svn : $(TARGET_DIR)\install_svn
$(TARGET_DIR)\install_svn :
	$(MAKE) "LOCATION=http://subversion.tigris.org/downloads/" \
	        "FILE=svn-win32-1.4.2.zip" \
	        "MD5SUM=32DBFF085330BF23033A5215FB171911" \
	        fetch
	echo   Entpacke subversion: svn-win32-1.4.2.zip
	$(UNCOMPRESS) $(DOWNLOAD_DIR)\svn-win32-1.4.2.zip >NUL
	move /Y svn-win32-1.4.2\README.txt $(MINGW_DIR)\Subversion.README.txt >NUL
	xcopy /S /Y svn-win32-1.4.2 $(MINGW_DIR)\ >NUL
	rmdir /s /q svn-win32-1.4.2
	echo $(VERSION) > $@

# installiert die Bibliothek pthreads
.PHONY: install_pthreads
install_pthreads : $(TARGET_DIR)\install_pthreads
$(TARGET_DIR)\install_pthreads :
	$(MAKE) "LOCATION=ftp://sourceware.org/pub/pthreads-win32/" \
	        "FILE=pthreads-w32-2-8-0-release.tar.gz" \
	        "MD5SUM=6D30C693233B1464EF8983FEDD8CCB22" \
	        fetch
	echo   Erstelle und installiere die pthreads-Bibliothek
	$(UNCOMPRESS) $(DOWNLOAD_DIR)\pthreads-w32-2-8-0-release.tar.gz >NUL
	$(UNCOMPRESS) pthreads-w32-2-8-0-release.tar >NUL
	del pthreads-w32-2-8-0-release.tar >NUL
	$(MAKE) --silent -C pthreads-w32-2-8-0-release GC-inlined
	copy pthreads-w32-2-8-0-release\pthread.h $(MINGW_DIR)\include 
	copy pthreads-w32-2-8-0-release\libpthreadGC2.a $(MINGW_DIR)\lib 
	copy pthreads-w32-2-8-0-release\pthreadGC2.dll $(MINGW_DIR)\bin 
	rmdir /s /q pthreads-w32-2-8-0-release
	echo $(VERSION) > $@

# installiert die Bibliothek gtk
.PHONY: install_gtk
install_gtk : $(TARGET_DIR)\install_gtk
$(TARGET_DIR)\install_gtk :
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.12/" \
	        "FILE=glib-2.12.11.zip" \
	        "MD5SUM=04F58BB1C6DA05B33AF6B4596B47ED33" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.12/" \
	        "FILE=glib-dev-2.12.11.zip" \
	        "MD5SUM=B9905CBC058BEB83A1D07DBC2EA8E874" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.18/" \
	        "FILE=atk-1.18.0.zip" \
	        "MD5SUM=090C5FA305D7C542C136B14AD39E00EA" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.18/" \
	        "FILE=atk-dev-1.18.0.zip" \
	        "MD5SUM=E8CE4864D2D9FE822C4009A575A00712" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
	        "FILE=cairo-1.4.6.zip" \
	        "MD5SUM=B206371D6D6E90E238C4EEABF7493E60" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
	        "FILE=cairo-dev-1.4.6.zip" \
	        "MD5SUM=EE443122980A340AA59EE25741D9FE3E" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.16/" \
	        "FILE=pango-1.16.1.zip" \
	        "MD5SUM=4DF41C118B56B15B1764297B3153DF27" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.16/" \
	        "FILE=pango-dev-1.16.1.zip" \
	        "MD5SUM=3408544BCCA1B47D2308DA919B55ADDA" \
	        fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.10/" \
	        "FILE=gtk+-2.10.11.zip" \
	        "MD5SUM=3FC6B1287300C5E6E9D5DE2C4CCE1BB4" \
	       fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.10/" \
	        "FILE=gtk+-dev-2.10.11.zip" \
	        "MD5SUM=4AF595A2C61AA4198D77E7C228A0B19F" \
	       fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
		"FILE=libiconv-1.9.1.bin.woe32.zip" \
	        "MD5SUM=A18E9420D6A354B585A77230996B4171" \
	       fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
		"FILE=gettext-0.14.5.zip" \
	        "MD5SUM=E609B4FB01FA2C495D294DE442F13847" \
	       fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
		"FILE=libpng-1.2.8.zip" \
	        "MD5SUM=1450F8B4DDB7159A05D779F4B887A494" \
	       fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
		"FILE=libjpeg-6b-4.zip" \
	        "MD5SUM=DD7E44F7225DD9063A98D01AD2E49022" \
	       fetch
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/" \
		"FILE=zlib-1.2.3.zip" \
	        "MD5SUM=02D56C7570A67DE8552527DAAF742F62" \
	       fetch
# hicolor-icon-theme-0.5.zip
# icon-naming-utils-0.8.1.zip
# ToDo: check for windows version
	$(MAKE) "FILE=glib-2.12.11.zip" \
	        extract_zip
	$(MAKE) "FILE=glib-dev-2.12.11.zip" \
	        extract_zip
	$(MAKE) "FILE=cairo-1.4.6.zip" \
	        extract_zip
	$(MAKE) "FILE=cairo-dev-1.4.6.zip" \
	        extract_zip
	$(MAKE) "FILE=atk-1.18.0.zip" \
	        extract_zip
	$(MAKE) "FILE=atk-dev-1.18.0.zip" \
	        extract_zip
	$(MAKE) "FILE=pango-1.16.1.zip" \
	        extract_zip
	$(MAKE) "FILE=pango-dev-1.16.1.zip" \
	        extract_zip
	$(MAKE) "FILE=gtk+-2.10.11.zip" \
	        extract_zip
	$(MAKE) "FILE=gtk+-dev-2.10.11.zip" \
	        extract_zip
	$(MAKE) "FILE=libiconv-1.9.1.bin.woe32.zip" \
	        extract_zip
	$(MAKE) "FILE=gettext-0.14.5.zip" \
	        extract_zip
	$(MAKE) "FILE=libpng-1.2.8.zip" \
	        extract_zip
	$(MAKE) "FILE=libjpeg-6b-4.zip" \
	        extract_zip
	$(MAKE) "FILE=zlib-1.2.3.zip" \
	        extract_zip
# echo gtk-theme-name = "Default" > $$_OUTDIR\etc\gtk-2.0\gtkrc
	echo $(VERSION) > $@

# installiert die Bibliothek gtkmm
.PHONY: install_gtkmm
install_gtkmm : install_gtk $(TARGET_DIR)\install_gtkmm
$(TARGET_DIR)\install_gtkmm :
	$(MAKE) "LOCATION=ftp://ftp.gnome.org/pub/gnome/binaries/win32/gtkmm/2.10/" \
               "FILE=	gtkmm-win32-devel-2.10.8-1.exe" \
	       "MD5SUM=8BCE3BC5ADC755A1B162FF93066CC1F4" \
	       fetch
	echo   Entpacke gtkmm: gtkmm-win32-devel-2.10.8-1.exe
	$(UNCOMPRESS) -o$(MINGW_DIR) $(DOWNLOAD_DIR)\gtkmm-win32-devel-2.10.8-1.exe >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\*.lib $(MINGW_DIR)\lib\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\atkmm-1.6 $(MINGW_DIR)\include\ >NUL
	move  $(MINGW_DIR)\\$$_OUTDIR\cairomm-1.0 $(MINGW_DIR)\include\ >NUL
	mkdir $(MINGW_DIR)\lib\gdkmm-2.4
	move  $(MINGW_DIR)\\$$_OUTDIR\gdkmm-2.4\include $(MINGW_DIR)\lib\gdkmm-2.4\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\gdkmm-2.4 $(MINGW_DIR)\include\ >NUL
	mkdir $(MINGW_DIR)\lib\glibmm-2.4
	move  $(MINGW_DIR)\$$_OUTDIR\glibmm-2.4\include $(MINGW_DIR)\lib\glibmm-2.4\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\glibmm-2.4\proc $(MINGW_DIR)\lib\glibmm-2.4\ >NUL
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR\glibmm-2.4\docs
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR\glibmm-2.4\examples
	move  $(MINGW_DIR)\$$_OUTDIR\glibmm-2.4 $(MINGW_DIR)\include\ >NUL
	mkdir $(MINGW_DIR)\lib\gtkmm-2.4
	move  $(MINGW_DIR)\$$_OUTDIR\gtkmm-2.4\include $(MINGW_DIR)\lib\gtkmm-2.4\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\gtkmm-2.4\proc $(MINGW_DIR)\lib\gtkmm-2.4\ >NUL
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR\gtkmm-2.4\docs
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR\gtkmm-2.4\tests
	move  $(MINGW_DIR)\$$_OUTDIR\gtkmm-2.4 $(MINGW_DIR)\include\ >NUL
	mkdir $(MINGW_DIR)\lib\libglademm-2.4
	move  $(MINGW_DIR)\$$_OUTDIR\libglademm-2.4\include $(MINGW_DIR)\lib\libglademm-2.4\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\libglademm-2.4\proc $(MINGW_DIR)\lib\libglademm-2.4\ >NUL
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR\libglademm-2.4\docs
	del /q $(MINGW_DIR)\$$_OUTDIR\libglademm-2.4\libglademm-2.4.devhelp
	move  $(MINGW_DIR)\$$_OUTDIR\libglademm-2.4 $(MINGW_DIR)\include\ >NUL
	mkdir $(MINGW_DIR)\lib\libxml++-2.6
	move  $(MINGW_DIR)\$$_OUTDIR\libxml++-2.6\include $(MINGW_DIR)\lib\libxml++-2.6\ >NUL
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR\libxml++-2.6\docs
	move  $(MINGW_DIR)\$$_OUTDIR\libxml++-2.6 $(MINGW_DIR)\include\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\pangomm-1.4 $(MINGW_DIR)\include\ >NUL
	mkdir $(MINGW_DIR)\lib\sigc++-2.0
	move  $(MINGW_DIR)\$$_OUTDIR\sigc++-2.0\include $(MINGW_DIR)\lib\sigc++-2.0\ >NUL
	move  $(MINGW_DIR)\$$_OUTDIR\sigc++-2.0 $(MINGW_DIR)\include\ >NUL
	rmdir /s /q $(MINGW_DIR)\$$PLUGINSDIR
	rmdir /s /q $(MINGW_DIR)\$$_OUTDIR
	echo $(VERSION) > $@

# installiert die Bibliothek gnet
.PHONY: install_gnet
install_gnet : $(TARGET_DIR)\install_gnet
$(TARGET_DIR)\install_gnet :
	$(MAKE) "LOCATION=http://www.gnetlibrary.org/win32/" \
	        "FILE=gnet-src-2.0-20030531.zip" \
	        "MD5SUM=A8E82916DCC3085B1BB0F901A426A43D" \
	        fetch
	echo   Erstelle und installiere die gnet-Bibliothek
	echo     (die 'dllwrap'-Ausgabe kann ignoriert werden)
	$(UNCOMPRESS) $(DOWNLOAD_DIR)\gnet-src-2.0-20030531.zip >NUL
	echo /**/>>gnet\gnetconfig.h
	$(MAKE) CC=$(MINGW_DIR)\bin\gcc DLLWRAP=$(MINGW_DIR)\bin\dllwrap FLAGS="-g -Wall -mno-cygwin -DGNET_EXPERIMENTAL=1" INCLUDE="-I. -I$(MINGW_DIR)/include/glib-2.0 -I$(MINGW_DIR)/lib/glib-2.0/include" LIBS="-L$(MINGW_DIR)/lib -lglib-2.0 -lws2_32" --silent -C gnet
	mkdir $(MINGW_DIR)\include\gnet
	copy gnet\*.h $(MINGW_DIR)\include\gnet\ >NUL
	copy gnet\libgnet-2.0.a $(MINGW_DIR)\lib\ >NUL
	copy gnet\gnet-2.0.dll $(MINGW_DIR)\bin\ >NUL
	rmdir /s /q gnet
	echo $(VERSION) > $@

# installiert die Bibliothek alut
.PHONY: install_alut
install_alut : $(TARGET_DIR)\install_alut
$(TARGET_DIR)\install_alut :
	$(MAKE) "LOCATION=http://www.openal.org/openal_webstf/downloads/" \
	        "FILE=freealut-1.1.0-bin.zip" \
	        "MD5SUM=4B3BBCAB56B47F7BBF75BE89D593C1BD" \
	        fetch
	echo   Entpacke alut: freealut-1.1.0-bin.zip
	$(UNCOMPRESS) $(DOWNLOAD_DIR)\freealut-1.1.0-bin.zip >NUL
	if ERRORLEVEL 1 (
	echo Fehler beim Entpacken von $(DOWNLOAD_DIR)\freealut-1.1.0-bin.zip
	call :error_message "Fehler beim Entpacken von $(DOWNLOAD_DIR)\freealut-1.1.0-bin.zip"
	exit /b 1
	)
	move freealut-1.1.0-bin\include\AL $(MINGW_DIR)\include\
	move freealut-1.1.0-bin\lib\*.* $(MINGW_DIR)\lib\ >NUL
	mkdir $(MINGW_DIR)\doc\alut
	move freealut-1.1.0-bin\doc\*.* $(MINGW_DIR)\doc\alut\ >NUL
	mkdir $(MINGW_DIR)\examples\alut
	move freealut-1.1.0-bin\examples\* $(MINGW_DIR)\examples\alut >NUL
	REM rmdir /s /q freealut-1.1.0-bin
	echo $(VERSION) > $@

# installiert FreeDoko
.PHONY: install_FreeDoko
install_FreeDoko : $(TARGET_DIR)\install_FreeDoko \
	           install_FreeDoko_src \
                   install_FreeDoko_nonfree_cardsets \
                   install_FreeDoko_more_data \
                   install_FreeDoko_manual \
                   install_FreeDoko_update
$(TARGET_DIR)\install_FreeDoko :
	echo $(VERSION) > $@

# installiert den FreeDoko Quelltext
.PHONY: install_FreeDoko_src
install_FreeDoko_src : $(TARGET_DIR)\install_FreeDoko_src
$(TARGET_DIR)\install_FreeDoko_src :
	echo Lade FreeDoko aus dem Internet herunter
	echo   Lade den Quelltext: svn://svn.gna.org/svn/freedoko/trunk
	$(SVN) checkout svn://svn.gna.org/svn/freedoko/trunk $(FREEDOKO_TRUNK_DIR)
#	$(UNCOMPRESS) $(DOWNLOAD_DIR)\FreeDoko.trunk.zip >NUL
	echo   Lade Installationsskripte: svn://svn.gna.org/svn/freedoko/more_data/setup/Windows/install_dev
	$(SVN) checkout svn://svn.gna.org/svn/freedoko/more_data/setup/Windows/install_dev $(FREEDOKO_INSTALL_DEV_DIR)
	echo $(VERSION) > $@

# installiert unfreie Kartensaetze
.PHONY: install_FreeDoko_nonfree_cardsets
install_FreeDoko_nonfree_cardsets : $(TARGET_DIR)\install_FreeDoko_nonfree_cardsets
$(TARGET_DIR)\install_FreeDoko_nonfree_cardsets :
	echo   Lade zusaetzliche Kartensaetze: http://mesh.dl.sourceforge.net/sourceforge/free-doko/FreeDoko_0.7.4.Windows.zip
	$(MAKE) "LOCATION=http://mesh.dl.sourceforge.net/sourceforge/free-doko/" \
		"MD5SUM=BF6AD4E56C3746C50AE69C4243E23D3C" \
	        "FILE=FreeDoko_0.7.4.Windows.zip" \
	        fetch
#	        "MD5SUM=264FB1A3E5CCA4EB2B6817944A992F08"
	echo   Entpacke zusaetzliche Kartensaetze: FreeDoko_0.7.4.Windows.zip
	$(UNCOMPRESS) $(DOWNLOAD_DIR)\FreeDoko_0.7.4.Windows.zip >NUL
	echo move /y FreeDoko_0.7.4\cardsets\Altenburg $(FREEDOKO_TRUNK_DIR)\data\cardsets >t.bat
	echo move /y FreeDoko_0.7.4\cardsets\InnoCard $(FREEDOKO_TRUNK_DIR)\data\cardsets >>t.bat
	echo move /y FreeDoko_0.7.4\cardsets\Elite $(FREEDOKO_TRUNK_DIR)\data\cardsets >>t.bat
	echo move /y FreeDoko_0.7.4\logo.png $(FREEDOKO_TRUNK_DIR)\src\logo.png >NUL >>t.bat
	echo rmdir /s /q FreeDoko_0.7.4 >>t.bat
	call t.bat
	del t.bat
	echo $(VERSION) > $@

# installiert weitere Datendateien
.PHONY: install_FreeDoko_more_data
install_FreeDoko_more_data : $(TARGET_DIR)\install_FreeDoko_more_data
$(TARGET_DIR)\install_FreeDoko_more_data :
	echo   Lade zusaetzliche Datendateien: svn://svn.gna.org/svn/freedoko/more_data
	$(SVN) checkout svn://svn.gna.org/svn/freedoko/more_data $(FREEDOKO_DATA_DIR)
	echo $(VERSION) > $@

# installiert das Handbuch von FreeDoko
.PHONY: install_FreeDoko_manual
install_FreeDoko_manual : $(TARGET_DIR)\install_FreeDoko_manual
$(TARGET_DIR)\install_FreeDoko_manual :
	echo   Lade das Handbuch: svn://svn.gna.org/svn/freedoko/manual
	$(SVN) checkout svn://svn.gna.org/svn/freedoko/manual $(FREEDOKO_MANUAL_DIR)
#	$(UNCOMPRESS) $(DOWNLOAD_DIR)\FreeDoko.manual.zip >NUL
	echo $(VERSION) > $@

# erstellt Verknuepfungen von FreeDoko
.PHONY: install_FreeDoko_shortcuts
install_FreeDoko_shortcuts : $(TARGET_DIR)\install_FreeDoko_shortcuts
$(TARGET_DIR)\install_FreeDoko_shortcuts :
	echo   Erstelle Verknuepfungen fuer FreeDoko
	echo @ECHO off >FreeDoko.bat
	echo REM If your path variable is full and you do use the DOS-Box only for FreeDoko >>FreeDoko.bat
	echo REM PATH C:\Windows\Command >>FreeDoko.bat
	echo SETLOCAL >>FreeDoko.bat
	echo call init.bat >>FreeDoko.bat
	echo cd %%FREEDOKO_TRUNK_DIR%%\src >>FreeDoko.bat
	echo echo Starte FreeDoko >>FreeDoko.bat
	echo .\FreeDoko.exe %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9 >>FreeDoko.bat
	echo ENDLOCAL >> FreeDoko.bat
	cscript //nologo create_shortcut_on_desktop.vbs FreeDoko "$(FREEDOKO_DIRECTORY)\FreeDoko.bat" "$(FREEDOKO_DIRECTORY)" "FreeDoko spielen" "$(FREEDOKO_DIRECTORY)\trunk\src\FreeDoko.ico" 
	cscript //nologo create_shortcut_on_desktop.vbs "FreeDoko aktualisieren" "$(FREEDOKO_DIRECTORY)\update.bat" "$(FREEDOKO_DIRECTORY)" "FreeDoko aktualisieren" "$(FREEDOKO_DIRECTORY)\trunk\src\FreeDoko.update.ico" 
	echo $(VERSION) > $@

.PHONY: install_FreeDoko_update
install_FreeDoko_update : $(TARGET_DIR)\install_FreeDoko_update
$(TARGET_DIR)\install_FreeDoko_update :
	echo @ECHO off >update.bat
	echo SETLOCAL >>update.bat
	echo call init.bat  >>update.bat
	echo %%SVN%% update %%FREEDOKO_INSTALL_DEV_DIR%% >>update.bat
	echo copy %%FREEDOKO_INSTALL_DEV_DIR%%\Makefile . >>update.bat
	echo %%MAKE%% update >>update.bat
	echo ENDLOCAL >>update.bat
	echo $(VERSION) > $@

#  aktualisiert FreeDoko und ggf. die Entwicklungsumgebung
.PHONY: compile_FreeDoko
compile_FreeDoko :
	echo Kompiliere FreeDoko (dauert einige Zeit -- Zeit, das Handbuch unter $(FREEDOKO_MANUAL_DIR)\de\index.html zu lesen)
	$(MAKE) -C $(FREEDOKO_TRUNK_DIR)\src

#  aktualisiert FreeDoko und ggf. die Entwicklungsumgebung
.PHONY: update
update : update_FreeDoko_src \
	 update_FreeDoko_more_data \
	 update_FreeDoko_manual \
	 compile_FreeDoko
	 

# aktualisiert den FreeDoko Quelltext
.PHONY: update_FreeDoko_src
update_FreeDoko_src :
	echo Aktualisiere FreeDoko Quelltext
	$(SVN) update $(FREEDOKO_TRUNK_DIR)

# aktualisiert die weiteren FreeDoko Datendateien
.PHONY: update_FreeDoko_more_data
update_FreeDoko_more_data :
	echo Aktualisiere FreeDoko Datendateien
	$(SVN) update $(FREEDOKO_MORE_DATA_DIR)

# aktualisiert das Handbuch von FreeDoko
.PHONY: update_FreeDoko_manual
update_FreeDoko_manual :
	echo Aktualisiere FreeDoko Handbuch
	$(SVN) update $(FREEDOKO_MANUAL_DIR)


# Laedt die angegebene Datei aus dem Internet
# LOCATION: Internetadresse (ohne Datei)
# FILE:     Dateiname
# MD5SUM:   md5sum
.PHONY: fetch
fetch :
	if exist $(DOWNLOAD_DIR)\$(FILE) echo   Datei $(FILE) schon heruntergeladen
	if not exist $(DOWNLOAD_DIR)\$(FILE) echo   Lade $(LOCATION)/$(FILE) aus dem Internet herunter
	if not exist $(DOWNLOAD_DIR)\$(FILE) $(WGET) $(LOCATION)/$(FILE) >NUL
	echo   Ueberpruefe MD5SUM von $(FILE) ...
	$(MD5) $(DOWNLOAD_DIR)\$(FILE)
	$(MD5) -c$(MD5SUM) $(DOWNLOAD_DIR)\$(FILE)
	echo   ... IO

# entpackt die angegebene zip-Datei
# FILE: Datei
.PHONY: extract_zip
extract_zip :
	echo   Entpacke $(FILE)
	$(UNCOMPRESS) -o$(MINGW_DIR) $(DOWNLOAD_DIR)\$(FILE) >NUL

# entpackt die angegebene tar.gz-Datei
# FILE: Datei
.PHONY: extract_tar_gz
extract_tar_gz :
	echo   Entpacke $(FILE)
	$(UNCOMPRESS) -o$(MINGW_DIR) $(DOWNLOAD_DIR)\$(FILE) >NUL
	$(UNCOMPRESS) -o$(MINGW_DIR) $(MINGW_DIR)\$(FILE:.tar.gz=.tar) >NUL
	del $(MINGW_DIR)\$(FILE:.tar.gz=.tar)

# Zeigt eine Fehlernachricht (nutze Visual Basic Script)
# MESSAGE: Fehlernachricht
.PHONY: error_message
error_message :
	echo MsgBox %1, 16, "Fehler" > message.vbs
	cscript //nologo message.vbs
	del message.vbs
	exit 1
