How to get a working DBD::Pg on Windows

Warning! This information is outdated. Please ask on the mailing list for help 
if you encounter any problems, or use the files here:

http://pgfoundry.org/frs/?group_id=1000199

Also see the notes about Strawberry Perl in the README file.

Start with:
MS VC++.Net Standard Edition
MS VC++ Toolkit 2003
Latest PostgreSQL (e.g. postgresql-8.00.rc2.tar.gz)
Latest Perl (e.g. perl-5.8.6.tar.gz)
Latest DBI (e.g. DBI-1.46.tar.gz)
Latest DBD::Pg (1.40 or higher)
Custom "win32.mak" file (included with DBD::Pg)

Unpack the .tar.gz files in c:\tmp

Save win32.mak as src\bin\pg_config\win32.mak in postgres tree.

1. In Windows command window, set up to compile:

set PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;%PATH%
set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;%PATH%
vcvars32

2. Run win32 make for postgresql:

cd \tmp\postgresql-8.0.0rc2\src
nmake -f win32.mak

3. Make pg_config.exe (not part of standard MSVC build), and copy it out:

cd bin\pg_config
nmake -f win32.mak
copy Release\pg_config.exe \tmp\DBD-Pg-1.42

4. Install lib and include to some permanent location like this:

mkdir c:\postgres
mkdir c:\postgres\lib
mkdir c:\postgres\include
cd ..\..\interfaces\libpq\Release
copy libpq* c:\postgres\lib
cd ..\..\..
xcopy /s include c:\postgres\include
xcopy \tmp\postgresql-8.0.3\src\interfaces\libpq\libpg-fe.h c:\postgres\include


5. Make a non-threaded perl, like this:

cd \tmp\perl-5.8.6\win32

in Makefile, 
.. change the install location thus:
      INST_TOP        = $(INST_DRV)\myperl
.. comment out the following lines
  USE_MULTI = define
  USE_ITHREADS = define
  USE_IMP_SYS = define
.. change both instances of deprecated '-Gf' flag to '-GF'

then just run:

nmake
nmake test
nmake install
  
5. Add new perl to path:

set PATH=c:\myperl\bin;%PATH%

6. Make and install DBI:

cd \tmp\DBI-1.46
perl Makefile.PL
nmake
nmake test
nmake install

7. Set up environment for DBD::Pg:

set POSTGRES_LIB=c:\postgres\lib
set POSTGRES_INCLUDE=c:\postgres\include

8. Build DBD::Pg:

cd \tmp\DBD-Pg1.42
perl Makefile.PL (when asked for pg_config path, say: .\pg_config.exe )
nmake

9. Test and install

You should now be able to set things up for normal DBD::Pg testing, 
which you can invoke via "nmake test"

Then install using "nmake install"

If you have any problems or questions, please email the DBD::Pg 
mailing list: dbd-pg@perl.org