Incorporated Martins msys from scratch notes

git-svn-id: http://svn.osgeo.org/qgis/trunk@7047 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
timlinux 2007-06-26 01:34:27 +00:00
parent 7b54ee2260
commit bb937c5e4a

View File

@ -54,6 +54,9 @@ windows application for creating and decompressing files here:
http://www.7-zip.org/
If you wish to prepare your msys environment yourself rather than using
our pre-made one, detailed instructions are provdided elsewhere in this
document.
== Qt4.3 ==
@ -747,6 +750,248 @@ $HOME/apps/bin/qgis
If all has worked properly the QGIS application should start up and appear
on your screen.
= Creation of MSYS environment for compilation of Quantum GIS
(including all dark magic involved) =
== Initial setup ==
=== MSYS ===
This is the environment that supplies many utilities from UNIX world in Windows and is needed
by many dependencies to be able to compile.
Download from here:
http://puzzle.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.11-2004.04.30-1.exe
Install to ``c:\msys``
All stuff we're going to compile is going to get to this directory (resp. its subdirs).
=== MinGW ===
Download from here:
http://puzzle.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe
Install to ``c:\msys\mingw``
It suffices to download and install only ``g++`` and ``mingw-make`` components.
=== Flex and Bison ===
Flex and Bison are tools for generation of parsers, they're needed for GRASS and also QGIS compilation.
Download the following packages:
http://gnuwin32.sourceforge.net/downlinks/flex-bin-zip.php
http://gnuwin32.sourceforge.net/downlinks/bison-bin-zip.php
http://gnuwin32.sourceforge.net/downlinks/bison-dep-zip.php
Unpack them all to ``c:\msys\local``
== Installing dependencies ==
=== Getting ready ===
Paul Kelly did a great job and prepared a package of precompiled libraries for GRASS.
The package currently includes:
- zlib-1.2.3
- libpng-1.2.16-noconfig
- xdr-4.0-mingw2
- freetype-2.3.4
- fftw-2.1.5
- PDCurses-3.1
- proj-4.5.0
- gdal-1.4.1
It's available for download here:
http://www.stjohnspoint.co.uk/grass/wingrass-extralibs.tar.gz
Moreover he also left the notes how to compile it (for those interested):
http://www.stjohnspoint.co.uk/grass/README.extralibs
Unpack the whole package to ``c:\msys\local``
=== GDAL level one ===
Since Quantum GIS needs GDAL with GRASS support, we need to compile GDAL
from source - Paul Kelly's package doesn't include GRASS support in GDAL.
The idea is following:
+ compile GDAL without GRASS
+ compile GRASS
+ compile GDAL with GRASS
So, start with downloading GDAL sources:
http://download.osgeo.org/gdal/gdal141.zip
Unpack it to some directory, preferably ``c:\msys\local\src``.
Start MSYS console, go to gdal-1.4.1 directory and run the commands below.
You can put them all to a script, e.g. build-gdal.sh and run them at once.
The recipe is taken from Paul Kelly's instructions - basically they
just make sure that the library will be created as DLL and the utility
programs will be dynamically linked to it...
```
CFLAGS="-O2 -s" CXXFLAGS="-O2 -s" LDFLAGS=-s ./configure --without-libtool --prefix=/usr/local --enable-shared --disable-static --with-libz=/usr/local --with-png=/usr/local
make
make install
rm /usr/local/lib/libgdal.a
g++ -s -shared -o ./libgdal.dll -L/usr/local/lib -lz -lpng ./frmts/o/*.o ./gcore/*.o ./port/*.o ./alg/*.o ./ogr/ogrsf_frmts/o/*.o ./ogr/ogrgeometryfactory.o ./ogr/ogrpoint.o ./ogr/ogrcurve.o ./ogr/ogrlinestring.o ./ogr/ogrlinearring.o ./ogr/ogrpolygon.o ./ogr/ogrutils.o ./ogr/ogrgeometry.o ./ogr/ogrgeometrycollection.o ./ogr/ogrmultipolygon.o ./ogr/ogrsurface.o ./ogr/ogrmultipoint.o ./ogr/ogrmultilinestring.o ./ogr/ogr_api.o ./ogr/ogrfeature.o ./ogr/ogrfeaturedefn.o ./ogr/ogrfeaturequery.o ./ogr/ogrfeaturestyle.o ./ogr/ogrfielddefn.o ./ogr/ogrspatialreference.o ./ogr/ogr_srsnode.o ./ogr/ogr_srs_proj4.o ./ogr/ogr_fromepsg.o ./ogr/ogrct.o ./ogr/ogr_opt.o ./ogr/ogr_srs_esri.o ./ogr/ogr_srs_pci.o ./ogr/ogr_srs_usgs.o ./ogr/ogr_srs_dict.o ./ogr/ogr_srs_panorama.o ./ogr/swq.o ./ogr/ogr_srs_validate.o ./ogr/ogr_srs_xml.o ./ogr/ograssemblepolygon.o ./ogr/ogr2gmlgeometry.o ./ogr/gml2ogrgeometry.o
install libgdal.dll /usr/local/lib
cd ogr
g++ -s ogrinfo.o -o ogrinfo.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s ogr2ogr.o -o ogr2ogr.exe -lgdal -L/usr/local/lib -lpng -lz -lgdal
g++ -s ogrtindex.o -o ogrtindex.exe -lgdal -L/usr/local/lib -lpng -lz -lgdal
install ogrinfo.exe ogr2ogr.exe ogrtindex.exe /usr/local/bin
cd ../apps
g++ -s gdalinfo.o -o gdalinfo.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s gdal_translate.o -o gdal_translate.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s gdaladdo.o -o gdaladdo.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s gdalwarp.o -o gdalwarp.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s gdal_contour.o -o gdal_contour.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s gdaltindex.o -o gdaltindex.exe -L/usr/local/lib -lpng -lz -lgdal
g++ -s gdal_rasterize.o -o gdal_rasterize.exe -L/usr/local/lib -lpng -lz -lgdal
install gdalinfo.exe gdal_translate.exe gdaladdo.exe gdalwarp.exe gdal_contour.exe gdaltindex.exe gdal_rasterize.exe /usr/local/bin
```
Finally, manually edit ``gdal-config`` in ``c:\msys\local\bin`` to replace the static library reference with -lgdal:
```
CONFIG_LIBS="-L/usr/local/lib -lpng -lz -lgdal"
```
=== GRASS ===
Grab sources from CVS or use a weekly snapshot, see:
http://grass.itc.it/devel/cvs.php
In MSYS console go to the directory where you've unpacked or checked out sources
(e.g. ``c:\msys\local\src\grass-6.3.cvs``)
Run these commands:
```
export PATH="/usr/local/bin:/usr/local/lib:$PATH"
./configure --prefix=/usr/local --bindir=/usr/local --with-includes=/usr/local/include --with-libs=/usr/local/lib --with-cxx --without-jpeg --without-tiff --without-postgres --with-opengl=windows --with-fftw --with-freetype --with-freetype-includes=/usr/local/include/freetype2 --without-x --without-tcltk --enable-x11=no --enable-shared=yes --with-proj-share=/usr/local/share/proj
make
make install
```
It should get installed to ``c:\msys\local\grass-6.3.cvs``
By the way, these pages might be useful:
- http://grass.gdf-hannover.de/wiki/WinGRASS_Current_Status
- http://geni.ath.cx/grass.html
=== GDAL level two ===
At this stage, we'll use GDAL sources we've used before, only the compilation will be a bit different.
But first in order to be able to compile GDAL sources with current GRASS CVS, you need to patch them, here's what you need to change:
http://trac.osgeo.org/gdal/attachment/ticket/1587/plugin_patch_grass63.diff
(you can patch it by hand or use patch.exe in ``c:\msys\bin``)
Now in MSYS console go to the GDAL sources directory and run the same commands as in level one, only with these differences:
+ when running ``./configure`` add this argument: ``--with-grass=/usr/local/grass-6.3.cvs``
+ when calling ``g++`` on line 5 (which creates libgdal.dll), add these arguments: ``-L/usr/local/grass-6.3.cvs/lib -lgrass_vect -lgrass_dig2 -lgrass_dgl -lgrass_rtree -lgrass_linkm -lgrass_dbmiclient -lgrass_dbmibase -lgrass_I -lgrass_gproj -lgrass_vask -lgrass_gmath -lgrass_gis -lgrass_datetime``
Then again, edit ``gdal-config`` and change line with CONFIG_LIBS
```
CONFIG_LIBS="-L/usr/local/lib -lpng -L/usr/local/grass-6.3.cvs/lib -lgrass_vect -lgrass_dig2 -lgrass_dgl -lgrass_rtree -lgrass_linkm -lgrass_dbmiclient -lgrass_dbmibase -lgrass_I -lgrass_gproj -lgrass_vask -lgrass_gmath -lgrass_gis -lgrass_datetime -lz -L/usr/local/lib -lgdal"
```
Now, GDAL should be able to work also with GRASS raster layers.
=== GEOS ===
Download the sources:
http://geos.refractions.net/geos-2.2.3.tar.bz2
Unpack to e.g. ``c:\msys\local\src``
To compile, I had to patch the sources: in file ``source/headers/timeval.h`` line 13.
Change it from:
```
#ifdef _WIN32
```
to:
```
#if defined(_WIN32) && defined(_MSC_VER)
```
Now, in MSYS console, go to the source directory and run:
```
./configure --prefix=/usr/local
make
make install
```
=== SQLITE ===
You can use precompiled DLL, no need to compile from source:
Download this archive:
http://www.sqlite.org/sqlitedll-3_3_17.zip
and copy sqlite3.dll from it to ``c:\msys\local\lib``
Then download this archive:
http://www.sqlite.org/sqlite-source-3_3_17.zip
and copy sqlite3.h to ``c:\msys\local\include``
=== GSL ===
Download sources:
ftp://ftp.gnu.org/gnu/gsl/gsl-1.9.tar.gz
Unpack to ``c:\msys\local\src``
Run from MSYS console in the source directory:
```
./configure
make
make install
```
=== EXPAT ===
Download sources:
http://dfn.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz
Unpack to ``c:\msys\local\src``
Run from MSYS console in the source directory:
```
./configure
make
make install
```
=== POSTGRES ===
We're going to use precompiled binaries. Use the link below for download:
http://wwwmaster.postgresql.org/download/mirrors-ftp?file=%2Fbinary%2Fv8.2.4%2Fwin32%2Fpostgresql-8.2.4-1-binaries-no-installer.zip
copy contents of pgsql directory from the archive to ``c:\msys\local``
== Cleanup ==
We're done with preparation of MSYS environment. Now you can delete all stuff in ``c:\msys\local\src`` - it takes quite a lot
of space and it's not necessary at all.
= Further help and information =