*** a/src/pl/plperl/GNUmakefile
--- b/src/pl/plperl/GNUmakefile
***************
*** 55,60 **** endif
--- 55,63 ----
  # where to find psql for running the tests
  PSQLDIR = $(bindir)
  
+ # where to find xsubpp for building XS.
+ XSUBPPDIR = $(shell $(PERL) -e 'use List::Util qw(first); print first { -r "$$_/ExtUtils/xsubpp" } @INC')
+ 
  include $(top_srcdir)/src/Makefile.shlib
  
  plperl.o: perlchunks.h plperl_opmask.h
***************
*** 71,81 **** all: all-lib
  
  SPI.c: SPI.xs
  	@if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi
! 	$(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
  
  Util.c: Util.xs
  	@if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi
! 	$(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
  
  
  install: all install-lib install-data
--- 74,84 ----
  
  SPI.c: SPI.xs
  	@if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi
! 	$(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
  
  Util.c: Util.xs
  	@if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi
! 	$(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@
  
  
  install: all install-lib install-data
*** a/src/tools/msvc/Mkvcbuild.pm
--- b/src/tools/msvc/Mkvcbuild.pm
***************
*** 13,18 **** use Project;
--- 13,20 ----
  use Solution;
  use Cwd;
  use File::Copy;
+ use Config;
+ use List::Util qw(first);
  
  use Exporter;
  our (@ISA, @EXPORT_OK);
***************
*** 106,116 **** sub mkvcbuild
              (my $xsc = $xs) =~ s/\.xs/.c/;
              if (Solution::IsNewer("$plperlsrc$xsc","$plperlsrc$xs"))
              {
                  print "Building $plperlsrc$xsc...\n";
                  system( $solution->{options}->{perl}
                        . '/bin/perl '
                        . $solution->{options}->{perl}
!                       . '/lib/ExtUtils/xsubpp -typemap '
                        . $solution->{options}->{perl}
                        . '/lib/ExtUtils/typemap '
                        . "$plperlsrc$xs "
--- 108,119 ----
              (my $xsc = $xs) =~ s/\.xs/.c/;
              if (Solution::IsNewer("$plperlsrc$xsc","$plperlsrc$xs"))
              {
+                 my $xsubppdir = first { -e "$_\\ExtUtils\\xsubpp.BAT" } @INC;
                  print "Building $plperlsrc$xsc...\n";
                  system( $solution->{options}->{perl}
                        . '/bin/perl '
                        . $solution->{options}->{perl}
!                       . "$xsubppdir/ExtUtils/xsubpp -typemap "
                        . $solution->{options}->{perl}
                        . '/lib/ExtUtils/typemap '
                        . "$plperlsrc$xs "
