MinGW
Find and install MinGW and MSYS. Start from http://www.mingw.org/
Install g++ but do not install MinGW make.
I suggest creating a dev.bat, where changes to PATH are collected:
PATH=c:\mingw\bin;%PATH%
Perl
Perl is the base of all higher level tools in Geoinformatica. The following assumes Perl 5.10.0
The makefile.mk in win32/ is the build configuration. I'm adding -mms-bitfields to line 525. see this discussion
BUILDOPT += -fno-strict-aliasing -DPERL_MSVCRT_READFIX -mms-bitfields
Also, I change INST_TOP to $(INST_DRV)\Geoinformatica
The build is easy, in dos command prompt:
dmake dmake install
Perl modules are always built in shell using dmake, which is available at CPAN as Perl itself.
lib/ExtUtils/Liblist/Kid.pm needs to be patched with Kid.pm.diff (works for EU::MM 6.52) to make it find import libraries that end with .dll.a
Save Kid.pm.diff to a file called diff, and issue command
patch -p0 Kid.pm <diff
in msys shell.
GTK+
GTK+
I'm not building these myself. We'll need both
ftp://ftp.gtk.org/pub/gtk/v2.10/win32/ and
http://gladewin32.sourceforge.net
since we need Gtk2::GladeWin
Glib, Cairo, Pango, Gtk2, and Gtk2-GladeXML modules
All these modules can be found from http://search.cpan.org/~tsch/
ExtUtils::Depends and ExtUtils::PkgConfig are prerequisites to these and also available at the above page. Currently the Depends.pm needs to be patched with a patch attached to this bug report
Also pango.exports needs (1.220)
gtk2perl_pango_attribute_register_custom_type gtk2perl_pango_attribute_get_type gtk2perl_pango_attr_iterator_get_type gtk2perl_pango_script_iter_get_type
and newSVPangoRectangle and SvPangoRectangle need to be removed from Gtk2.exports (1.220).
Data access and geo libraries
These are built in MSYS. Most are used by GDAL.
- pq to access data in PostgreSQL and PostGIS
- it's possible to use the libpq from the Windows ports of these
- expat, needed for curl
- there's a good Windows port with devel support available in it's home page
- curl, needed for WMS, WCS, WFS
- GEOS for simple features methods
- Proj4 for cartographic projections
- the DLL needs to be made manually:
cd src gcc -shared -o libproj.dll -Wl,--out-implib=libproj.dll.a \ -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive \ .libs/libproj.a -Wl,--no-whole-archive /c/mingw/lib/libmingw32.a
- GDAL
- GTK+ may cause problems because it contains libtiff, I move libtiff includes away and use the internal libtiff
- $(GDAL_ROOT)/ needs to be removed from GNUmakefile
- I've made a gdal.pc, which is used by Geo::Raster and Geo::Vector
prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: GDAL Description: Geospatial Data Abstraction Library Version: 1.7.0 Requires: libcurl xerces-c Libs: -L${exec_prefix}/lib -lgdal.dll -lgeos.dll -lgeos_c.dll -lexpat -lpq -ljpeg -lpng12 -lz Cflags: -I${prefix}/include
- libral
- there's a MinGW specific Makefile, use it The DLL's may be bloated because of debug code, use strip --strip-debug x.dll to remove it.
Perl interface to GDAL
In CPAN there is Geo::GDAL, whose latest version is for the latest version of GDAL. It is in practice the same as the one distributed with the GDAL source code. I recommend that you always build the Geo::GDAL module separately from GDAL itself, after you have built and installed GDAL. In the GDAL source directory, while in MSYS, say (this requires swig):
cd swig/perl rm *wrap* make generate
Then in dos command prompt
perl Makefile.PL make make test make install
Geo::Raster and Geo::Vector
These two modules are interdependent, so dmake install both before running dmake test in either (this is a bug that should be corrected).
Gtk2::Ex::Geo
In a case the image-base in Makefile had to be changed to the actual base, shown by the depends -tool.