Quantum GIS + GRASS Windows Native Binary Building Guide


Edited by: Marco Pasetti
Last Update: 15 July 2008

Table of Contents

Introduction

  1. MSYS
  2. MinGW
  3. Flex
  4. Bison
  5. Zlib
  6. Libpng
  7. Libjpeg
  8. Libtiff
  9. Xdr
  10. Freetype
  11. FFTW
  12. PDCurses
  13. PROJ.4
  14. GEOS
  15. GSL
  16. Expat
  17. PostgreSQL
  18. SQLite
  19. GDAL - Step One
  20. AVCE00
  21. E00compr
  22. GPSBabel
  23. Tcl/Tk
  24. GRASS
  25. GDAL - Step Two
  26. Qt Open Source
  27. Python
  28. SIP
  29. PyQt
  30. CMake
  31. Quantum GIS

Important Note Beginners Note
Download Developers Note


Introduction

This document is a basic guide to a Windows Native Binary building of both GRASS and Quantum GIS. It is mainly based on the following articles:

  • Quantum GIS Wiki - BuildingFromSource
  • WinGRASS Current Status
  • GRASS 6.3 Install
  • GRASS 6.3 Requirements
  • Paul Kelly's winGRASS Extralibs Documentation
  • It tries to summarise all the previous documents in a brand new "all in one" guide, written specially for beginners.

    Any library or application used in this guide is intended as the latest stable release available. Otherwise, developers notes will be added, explaining why I decided to not use the latest stable release.

    In order to avoid mistakes or misunderstandings, I suggest to read each paragraph entirely before to perform any action. It's very important to follow each step and command explained exactly in the same order as they are written in the guide.
    The following instruction have been succesfully tested on both Windwows XP and Windows Vista operative systems.

    1. MSYS (1.0.11)

    Download the MSYS installer

    Install to c:\msys

    At the command prompt question for post install, type n and then enter.

  • MSYS supplies many utilities from UNIX world in Windows; this document could help to know more about UNIX commands;
  • If you want to check or post some MSYS screen outputs, just right click on MSYS text area that you want to select, and selected text will be automatically copied into Windows clipboard; now it's ready to be pasted in every other document, just using the CRTL+V keyboard shortcut.
  • Download the MSYS coreutils package (required by some GRASS modules and scripts):

    Download the MSYS coreutils package

    Unpack it to a temporary folder, then copy all the content of the coreutils-5.97 folder to c:\msys (overwrite the existing files when asked)

    2. MinGW (5.1.4)

    Download the MinGW installer

    Select "Download and Install Current Version";

    Install only "g++ compiler" and "MinGW Make";

    Install to c:\msys\mingw

    3. Flex (2.5.4a-1)

    Download the Flex prebuilt binaries package

    Unpack to c:\msys\local

    The latest release of Flex is (2.5.34), but it has not still ported to Windows.

    4. Bison (2.1)

    Download the following archives:

  • Bison prebuilt binaries package
  • Bison prebuilt dependencies package
  • Unpack all to c:\msys\local (overwrite the existing files when asked)

    The latest release of Bison is (2.3), but it has not still ported to Windows.

    5. Zlib (1.2.3)

    Download the Zlib source code

    Unpack to c:\msys\local\src

    Open c:\msys\local\src\zlib-1.2.3\win32\Makefile.gcc

    Replace line 102 with:

    INCLUDE_PATH=/usr/local/include
    LIBRARY_PATH=/usr/local/lib
    SHARED_LIBRARY_PATH=/usr/local/bin

    At lines 109-110 delete:

    -@if not exist $(INCLUDE_PATH)/nul mkdir $(INCLUDE_PATH)
    -@if not exist $(LIBRARY_PATH)/nul mkdir $(LIBRARY_PATH)

    After line 111 add:

    -$(INSTALL) $(SHAREDLIB) $(SHARED_LIBRARY_PATH)

    After line 118 add:

    -$(RM) $(SHARED_LIBRARY_PATH)/$(SHAREDLIB)

    Open MSYS console (double click on MSYS icon on your desktop) and type:

    cd /usr/local/src/zlib-1.2.3
    make -f win32/Makefile.gcc
    make install -f win32/Makefile.gcc
    For unknown reasons, zlib1.dll information label displays that it is 1.2.2.0 version, while actually it is 1.2.3.

    6. Libpng (1.2.29)

    Download the Libpng source code

    Unpack to c:\msys\local\src

    Open c:\msys\local\src\libpng-1.2.29\scripts\makefile.mingw

    After line 40 add:

    prefix=/usr/local

    At lines 52-53 edit:

    ZLIBLIB=/usr/local/lib
    ZLIBINC=/usr/local/include

    In MSYS console, type:

    cd /usr/local/src/libpng-1.2.29
    cp scripts/makefile.mingw ./Makefile
    make

    Because make install procedure fails, we need to install it manually:

    mkdir /usr/local/lib/pkgconfig
    mkdir /usr/local/man/man3
    mkdir /usr/local/man/man5
    install -m 644 libpng.a /usr/local/lib
    install -m 644 libpng.dll.a /usr/local/lib
    install -s -m 755 libpng12.dll /usr/local/bin
    install -m 644 libpng.pc /usr/local/lib/pkgconfig
    install -m 644 png.h pngconf.h /usr/local/include
    install -m 644 libpngpf.3 libpng.3 /usr/local/man/man3
    install -m 644 png.5 /usr/local/man/man5
    cp libpng-config /usr/local/bin
    chmod 755 /usr/local/bin/libpng-config
    An easy way to do that is to copy the previous code and and paste it in a new document; name it install-libpng.sh and save it into Libpng source code directory; then go to MSYS console and type: install-libpng.sh

    7. Libjpeg (6b)

    Download the Libjpeg source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/jpeg-6b
    ./configure --prefix=/usr/local --enable-shared
    make
    mkdir /usr/local/man/man1
    make install

    Because make procedure doesn't create the shared library (even if enabled by configure), we need to build it manually:

    COMOBJECTS="jcomapi.o jutils.o jerror.o jmemmgr.o jmemnobs.o"
    CLIBOBJECTS="jcapimin.o jcapistd.o jctrans.o jcparam.o \
    jdatadst.o jcinit.o jcmaster.o jcmarker.o jcmainct.o \
    jcprepct.o jccoefct.o jccolor.o jcsample.o jchuff.o \
    jcphuff.o jcdctmgr.o jfdctfst.o jfdctflt.o jfdctint.o"
    DLIBOBJECTS="jdapimin.o jdapistd.o jdtrans.o jdatasrc.o \
    jdmaster.o jdinput.o jdmarker.o jdhuff.o jdphuff.o \
    jdmainct.o jdcoefct.o jdpostct.o jddctmgr.o \
    jidctfst.o jidctflt.o jidctint.o jidctred.o \
    jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o"
    LIBOBJECTS="$CLIBOBJECTS $DLIBOBJECTS $COMOBJECTS"
    COBJECTS="cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o cdjpeg.o"
    DOBJECTS="djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o cdjpeg.o"
    TROBJECTS="jpegtran.o rdswitch.o cdjpeg.o transupp.o"
    for i in *.exe ; do rm /usr/local/bin/$i ; done
    rm *.exe
    cd .libs
    rm libjpeg.a
    rm /usr/local/lib/libjpeg.a
    cd ..
    gcc -shared -s -o ./.libs/libjpeg.dll -lm -Wl,--out-implib,./.libs/libjpeg.a  $LIBOBJECTS
    gcc -s -g -O2 -o cjpeg.exe $COBJECTS -L./.libs/ -ljpeg
    gcc -s -g -O2 -o djpeg.exe $DOBJECTS -L./.libs/ -ljpeg
    gcc -s -g -O2 -o jpegtran.exe $TROBJECTS -L./.libs/ -ljpeg
    gcc -s -g -O2 -o rdjpgcom.exe rdjpgcom.o -L./.libs/ -ljpeg
    gcc -s -g -O2 -o wrjpgcom.exe wrjpgcom.o -L./.libs/ -ljpeg
    cd .libs
    install libjpeg.a /usr/local/lib
    install libjpeg.dll /usr/local/bin
    cd ..
    for i in *.exe ; do install $i /usr/local/bin ; done

    Referring to the MinGW and GCC Documetation (Compiling and Building with MinGW and GCC Command Options - Options for Linking), I guess that the right procedure to build shared libraries (and executables that use them) with MinGW/MSYS should be as follows:

    First of all we need to delete the static import library built by the standard make procedure, and then all the executables built linking against the static libraries. After that, we will build a shared library with the related import static one, and then all the needed executables, that will be linked against the new shared library.

    8. Libtiff (3.8.2)

    Download the Libtiff source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/tiff-3.8.2
    ./configure --prefix=/usr/local \
    --with-zlib-lib-dir=/usr/local/lib \
    --with-zlib-include-dir=/usr/local/include \
    --with-jpeg-lib-dir=/usr/local/bin \
    --with-jpeg-include-dir=/usr/local/include

    Libtiff should be thus configured as follows:

    Libtiff is now configured for i686-pc-mingw32
    
      Installation directory:             /usr/local
      Documentation directory:            ${prefix}/share/doc/tiff-3.8.2
      C compiler:                         gcc -g -O2 -Wall -W
      C++ compiler:                       g++ -g -O2
      Enable runtime linker paths:        no
      Support Microsoft Document Imaging: yes
    
     Support for internal codecs:
      CCITT Group 3 & 4 algorithms:       yes
      Macintosh PackBits algorithm:       yes
      LZW algorithm:                      yes
      ThunderScan 4-bit RLE algorithm:    yes
      NeXT 2-bit RLE algorithm:           yes
      LogLuv high dynamic range encoding: yes
    
     Support for external codecs:
      ZLIB support:                       yes
      Pixar log-format algorithm:         yes
      JPEG support:                       yes
      Old JPEG support:                   no
    
      C++ support:                        yes
    
      OpenGL support:                     no
    Now build Libtiff:
    make
    make install

    9. Xdr (4.0)

    Download the Xdr source code (special stripped-down version with networking code removed)

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/xdr-4.0-mingw2
    ./configure --prefix=/usr/local --build=i686-pc-mingw32
    make
    make install
    Must compile this only as a static library, because of obscure problems with GRASS using shared one!

    10. Freetype (2.3.5)

    Download the Freetype source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/freetype-2.3.5
    ./configure --prefix=/usr/local
    make
    make install

    To complete the installation type:

    cd /usr/local/include
    mkdir freetype
    mkdir ./freetype/config
    cd ./freetype2/freetype/config
    mv * /usr/local/include/freetype/config
    cd ..
    rmdir config
    mv * /usr/local/include/freetype
    cd ..
    rmdir freetype
    cd ..
    rmdir freetype2

    Open c:\msys\local\lib\pkgconfig\freetype2.pc

    At line 11 replace:

    Cflags: -I${includedir}/freetype2 -I${includedir}

    with:

    Cflags: -I${includedir}

    11. FFTW (3.1.2)

    Download the FFTW source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/fftw-3.1.2
    ./configure --prefix=/usr/local \
    --disable-fortran \
    --with-our-malloc16 \
    --enable-shared \
    --disable-static \
    --enable-threads \
    --with-combined-threads \
    --enable-portable-binary \
    --enable-sse2
    make
    make install

    12. PDCurses (3.3)

    Download the PDCurses source code

    Unpack to c:\msys\local\src

    Open c:\msys\local\src\PDCurses-3.3\win32\mingwin32.mak

    At line 80 replace:

    -copy pdcurses.a panel.a

    with:

    -cp pdcurses.a panel.a

    In MSYS console, type:

    cd /usr/local/src/PDCurses-3.3
    cd win32
    make -f mingwin32.mak DLL=Y all
    cp pdcurses.a libcurses.a
    install libcurses.a /usr/local/lib
    install pdcurses.dll /usr/local/bin
    cd ..
    install -m 644 curses.h /usr/local/include

    13. PROJ.4 (4.6.0)

    Download the PROJ.4 source code

    Unpack to c:\msys\local\src

    Download the US, Canadian and New Zealand datum shift grids

    Unpack to c:\msys\local\src\proj-4.6.0\nad

    In MSYS console, type:

    cd /usr/local/src/proj-4.6.0
    ./configure --prefix=/usr/local --enable-shared --disable-static
    make
    make install

    Because make procedure doesn't create shared library (even if enabled by configure), we need to build it manually:

    cd src
    for i in *.exe ; do rm /usr/local/bin/$i ; done
    rm /usr/local/bin/invgeod.exe
    rm /usr/local/bin/invproj.exe
    rm *.exe
    cd .libs
    rm libproj.a
    rm /usr/local/lib/libproj.a
    gcc -shared -s -o libproj.dll -lm -Wl,--out-implib,libproj.a *.o
    cd ..
    gcc -s -g -O2 -o cs2cs.exe cs2cs.o gen_cheb.o p_series.o .libs/emess.o -L./.libs/ -lproj
    gcc -s -g -O2 -o geod.exe geod.o geod_set.o geod_for.o geod_inv.o .libs/emess.o -L./.libs/ -lproj
    gcc -s -g -O2 -o nad2bin.exe nad2bin.o -L./.libs/ -lproj
    gcc -s -g -O2 -o nad2nad.exe nad2nad.o .libs/emess.o -L./.libs/ -lproj
    gcc -s -g -O2 -o proj.exe proj.o gen_cheb.o p_series.o .libs/emess.o -L./.libs/ -lproj
    cp proj.exe invproj.exe
    cp geod.exe invgeod.exe
    cd .libs
    install libproj.a /usr/local/lib
    install libproj.dll /usr/local/bin
    cd ..
    for i in *.exe ; do install $i /usr/local/bin ; done

    14. GEOS (3.0.0)

    Download the GEOS source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/geos-3.0.0
    ./configure --prefix=/usr/local
    make
    make install

    15. GSL (1.11)

    Download the GSL source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/gsl-1.11
    ./configure --prefix=/usr/local
    make
    make install

    16. Expat (2.0.1)

    Download the Expat source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/expat-2.0.1
    ./configure --prefix=/usr/local
    make
    make install

    17. PostgreSQL (8.3.1)

    Download the PostgreSQL source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/postgresql-8.3.1
    ./configure --prefix=/usr/local/pgsql \
    --with-includes=/usr/local/include \
    --with-libraries=/usr/local/lib \
    --without-readline
    make
    make install
    Even if a prebuilt PostgreSQL Windows binary package is available, it generates problems with GDAL building. This because the Windows release of PostgreSQL is built using Visual Studio, while MinGW (and specially GDAL built with MinGW) has problems linking against VS built libraries.

    18. SQLite (3.5.9)

    Download the SQLite source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/sqlite-amalgamation-3.5.9
    ./configure --prefix=/usr/local/sqlite
    make
    make install

    19. GDAL (1.5.2) - Step One

    Since Quantum GIS needs GDAL with GRASS support, we will do as follows:

    1. Build and install GDAL without GRASS support
    2. Build and install GRASS
    3. Rebuild and install GDAL with GRASS support

    According to the previous items, now we will build and install GDAL without GRASS support:

    Download the GDAL source code

    Unpack to c:\msys\local\src

    Open c:\msys\local\src\gdal-1.5.2\configure

    At line 23832 replace:

    expat_lib_flags="-L$expat_prefix/lib -lexpat"

    with:

    LIBS="$LIBS -L$expat_prefix/lib -lexpat"

    In MSYS console, type:

    cd /usr/local/src/gdal-1.5.2
    ./configure --prefix=/usr/local \
    --without-grass \
    --with-sqlite3=/usr/local/sqlite \
    --with-pg=/usr/local/pgsql/bin/pg_config.exe

    When finished, you should have the following screen output:

    GDAL is now configured for i686-pc-mingw32
    
      Installation directory:    	/usr/local
      C compiler:                	gcc -g -O2
      C++ compiler:              	g++ -g -O2
    
      LIBTOOL support:           	yes
    
      LIBZ support:              	internal
      GRASS support:             	no
      CFITSIO support:           	no
      PCRaster support:          	internal
      NetCDF support:            	no
      LIBPNG support:            	internal
      LIBTIFF support:           	internal (BigTIFF=yes)
      LIBGEOTIFF support:        	internal
      LIBJPEG support:           	internal
      LIBGIF support:            	internal
      OGDI support:              	no
      HDF4 support:              	no
      HDF5 support:              	no
      Kakadu support:            	no
      JasPer support:            	no
      ECW support:               	no
      MrSID support:             	no
      GRIB support:              	no
      cURL support (wms/wcs/...):	no
      PostgreSQL support:        	yes
      MySQL support:             	no
      Xerces-C support:          	no
      Expat support:             	yes
      ODBC support:              	no
      PGeo support:              	no
      OCI support:               	no
      SDE support:               	no
      DODS support:              	no
      SQLite support:            	yes
      DWGdirect support          	no
      PANORAMA GIS support:      	no
      INFORMIX DataBlade support:	no
      GEOS support:              	yes
    
    
      Old-gen python          	no
      SWIG Bindings:          	no
    
      Statically link PROJ.4:    	no
      enable OGR building:       	yes
      enable pthread support:    	no
      hide internal symbols:     	no

    Open c:\msys\local\src\gdal-1.5.2\GNUmakefile

    After line 4 add:

    GDAL_ROOT=.

    Finally build and install GDAL:

    make
    make install
  • Enabling external support for Zlib, Libpng, Libjpeg and Libtiff makes GDAL's build procedure to fail;
  • The distributed Windows binary package of Python is built using Visual Studio, while GDAL (if built with MinGW) requires a MinGW built version of Python; this means that, if you want to enable Python bindings in GDAL, you'll need to build Python from source using MinGW;
  • The same problem applies to the OGDI support.
  • 20. AVCE00 (2.0.0)

    Download the AVCE00 source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/avce00-2.0.0
    make
    install avcexport.exe /usr/local/bin
    install avcimport.exe /usr/local/bin

    21. E00compr (1.0.0)

    Download the E00compr source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/e00compr-1.0.0
    make
    install e00conv.exe /usr/local/bin

    22. GPSBabel (1.3.5)

    Download the GPSBabel binary package

    Unpack to c:\msys\local\gpsbabel

    23. Tcl/Tk (8.5.2)

    Download the Tcl source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/tcl8.5.2/win
    ./configure --prefix=/usr/local/tcl-tk --enable-shared
    make
    make install
    cd /usr/local/tcl-tk/bin
    mv tclsh85.exe tclsh.exe
    Download the Tk source code

    Unpack to c:\msys\local\src

    In MSYS console, type:

    cd /usr/local/src/tk8.5.2/win
    ./configure --prefix=/usr/local/tcl-tk --with-tcl=/usr/local/src/tcl8.5.2/win --enable-shared
    make
    make install
    cd /usr/local/tcl-tk/bin
    mv wish85.exe wish.exe

    24. GRASS (6.3.0)

    Download the GRASS source code

    Unpack to c:\msys\local\src

    Open c:\msys\local\src\grass-6.3.0\man\Makefile

    At line 13, replace:

    default: $(MANPAGES)

    with:

    default:

    In MSYS console, type:

    cd /usr/local/src/grass-6.3.0
    ./configure \
    --prefix=/usr/local \
    --with-includes=/usr/local/include \
    --with-libs=/usr/local/lib \
    --disable-x11 \
    --without-x \
    --with-cxx \
    --enable-shared \
    --enable-largefile \
    --with-opengl=windows \
    --with-fftw \
    --with-freetype \
    --with-proj-share=/usr/local/share/proj \
    --with-gdal=/usr/local/bin/gdal-config \
    --with-tcltk --with-tcltk-includes=/usr/local/tcl-tk/include --with-tcltk-libs=/usr/local/tcl-tk/bin \
    --with-sqlite --with-sqlite-includes=/usr/local/sqlite/include --with-sqlite-libs=/usr/local/sqlite/lib \
    --with-postgres --with-postgres-includes=/usr/local/pgsql/include --with-postgres-libs=/usr/local/pgsql/lib

    When finished, you should have the following screen output:

    GRASS is now configured for:  i686-pc-mingw32
    
     Source directory:            /usr/local/src/grass-6.3.0
     Build directory:             /usr/local/src/grass-6.3.0
     Installation directory:      ${prefix}/grass-6.3.0
     Startup script in directory: ${exec_prefix}/bin
     C compiler:                  gcc -g -O2 
     C++ compiler:                c++ -g -O2
     Building shared libraries:   yes
     64bit support:               no
     OpenGL platform:             Windows
    
      NVIZ:                       yes
    
      BLAS support:               no
      C++ support:                yes
      DWG support:                no
      FFMPEG support:             no
      FFTW support:               yes
      FreeType support:           yes
      GDAL support:               yes
      GLw support:                no
      JPEG support:               yes
      LAPACK support:             no
      Large File Support (LFS):   yes
      Motif support:              no
      MySQL support:              no
      NLS support:                no
      ODBC support:               no
      OGR support:                yes
      OpenGL support:             yes
      PNG support:                yes
      PostgreSQL support:         yes
      Python support:             no
      Readline support:           no
      SQLite support:             yes
      Tcl/Tk support:             yes
      wxWidgets support:          no
      TIFF support:               yes
      X11 support:                no
      MacOSX application:         no
    Having GRASS successfully configured, now you can build it:
    export PATH="/usr/local/bin:/usr/local/tcl-tk/bin:/usr/local/sqlite/bin:/usr/local/pgsql/lib:$PATH"
    make

    When finished, you should have the following compilation log:

    GRASS GIS compilation log
    -------------------------
    Started compilation: Mon Jun 16 09:08:19 GMT 2008
    --
    Errors in:
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.daemon
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.edgedensity
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.patchdensity
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.patchnum
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.shape
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.simpson
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.shannon
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.mps
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.mpa
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.padcv
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.padsd
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.padrange
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.cwed
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.richness
    /usr/local/src/grass-6.3.0/raster/r.li/r.li.dominance
    --
    In case of errors please change into the directory with error and run 'make'.
    If you get multiple errors, you need to deal with them in the order they
    appear in the error log. If you get an error building a library, you will
    also get errors from anything which uses the library.
    --
    Finished compilation: Mon Jun 16 10:11:17 GMT 2008
    make: *** [default] Error 1
    The best way to check it, is to open c:\msys\local\src\grass-6.3.0\error.log using your favourite web client.

    Then install GRASS:

    make install

    Now GRASS should be installed in c:\msys\local\grass-6.3.0

    25. GDAL (1.5.2) - Step Two

    Open the MSYS console and type:

    cd /usr/local/src/gdal-1.5.2
    ./configure --prefix=/usr/local \
    --with-local=/usr/local \
    --with-libz=internal \
    --with-png=internal \
    --with-libtiff=internal \
    --with-jpeg=internal \
    --with-grass=/usr/local/grass-6.3.0 \
    --with-sqlite3=/usr/local/sqlite \
    --with-pg=/usr/local/pgsql/bin/pg_config.exe

    When finished, you should have the following screen output:

    GDAL is now configured for i686-pc-mingw32
    
      Installation directory:    	/usr/local
      C compiler:                	gcc -g -O2
      C++ compiler:              	g++ -g -O2
    
      LIBTOOL support:           	yes
    
      LIBZ support:              	internal
      GRASS support:             	grass57+
      CFITSIO support:           	no
      PCRaster support:          	internal
      NetCDF support:            	no
      LIBPNG support:            	internal
      LIBTIFF support:           	internal (BigTIFF=yes)
      LIBGEOTIFF support:        	internal
      LIBJPEG support:           	internal
      LIBGIF support:            	internal
      OGDI support:              	no
      HDF4 support:              	no
      HDF5 support:              	no
      Kakadu support:            	no
      JasPer support:            	no
      ECW support:               	no
      MrSID support:             	no
      GRIB support:              	no
      cURL support (wms/wcs/...):	no
      PostgreSQL support:        	yes
      MySQL support:             	no
      Xerces-C support:          	no
      Expat support:             	yes
      ODBC support:              	no
      PGeo support:              	no
      OCI support:               	no
      SDE support:               	no
      DODS support:              	no
      SQLite support:            	yes
      DWGdirect support          	no
      PANORAMA GIS support:      	no
      INFORMIX DataBlade support:	no
      GEOS support:              	yes
    
    
      Old-gen python          	no
      SWIG Bindings:          	no
    
      Statically link PROJ.4:    	no
      enable OGR building:       	yes
      enable pthread support:    	no
      hide internal symbols:     	no

    Finally build and install GDAL:

    make
    make install

    26. Qt OpenSource (4.4.0)

    Download the Qt OpenSource installer

    Install to C:\DevTools\Qt-OpenSource

    When the installer will ask for MinGW, you don't need to download and install it, just point the installer to c:\msys\mingw

    At the alert message "The installer could not found a valid c:\msys\mingw\include\w32api.h", press "Yes" and continue.

    When Qt installation is complete, edit C:\DevTools\Qt-OpenSource\bin\qtvars.bat and do as follows:

    At line 8 replace:

    echo -- PATH set to C:\DevTools\Qt-OpenSource\bin

    with:

    echo -- Adding MSYS environment directories to PATH

    At line 14 replace:

    set PATH=C:\DevTools\Qt-OpenSource\bin

    with:

    set PATH=%PATH%;c:\msys\local\bin;c:\msys\local\sqlite\bin;c:\msys\local\pgsql\lib

    Finally, add C:\DevTools\Qt-OpenSource\bin to your PATH system variable.

    27. Python (2.5.2)

    Download the Python installer

    Install to C:\DevTools\Python

    Add C:\DevTools\Python to your PATH system variable.

    28. SIP (4.7.6)

    Download SIP source code

    Unpack to c:\msys\local\src

    Open a Windows terminal and type:

    cd c:\msys\local\src\sip-4.7.6
    qtvars
    python configure.py -p win32-g++
    make
    make install

    29. PyQt (4.4.2)

    Download PyQt source code

    Unpack to c:\msys\local\src

    Open a Windows terminal and type:

    cd c:\msys\local\src\PyQt-win-gpl-4.4.2
    qtvars
    python configure.py
    make
    make install

    30. CMake (2.6.0)

    Download CMake installer

    Launch CMake installer and do as follows:

    Select "Add CMake to the system PATH for all users"

    Install to C:\DevTools\CMake

    31. Quantum GIS (0.11.0)

    Download Quantum GIS source code

    Unpack to c:\msys\local\src

    Open a Windows terminal and type:

    cd c:\msys\local\src\qgis_0.11.0
    md build
    cd build
    qtvars
    cmakesetup ..

    In CMake Setup utility press "Configure" button and, when asked, choose "MinGW Makefiles" as generator.

    CMake Setup will alert you for missing dependencies; don't care, press OK and continue.

    When finished, select "Show Advanced Values" checkbox.

    For each item listed below, select the related box in the CMake Setup utility, type in the suggested value and then press enter (we will perform a "bottom-up" procedure, editing last values of the CMake Setup list as first):

    SQLITE3_LIBRARY = c:/msys/local/sqlite/bin/libsqlite3-0.dll
    SQLITE3_INCLUDE_DIR = c:/msys/local/sqlite/include
    POSTGRES_INCLUDE_DIR = c:/msys/local/pgsql/include
    GRASS_PREFIX = c:/msys/local/grass-6.3.0
    CMAKE_INSTALL_PREFIX = c:/msys/local/qgis-0.11.0
    CMAKE_CXX_FLAGS = -DGEOS_INLINE
    CMAKE_BUILD_TYPE = Release

    When finished press OK button.

    Finally, in the same terminal session, type:

    make
    make install