in reply to Building Perl with the free MSVC tools

I finished building it earlier this afternoon. The key is that the MS .NET SDK insists on installing some files onto the system drive, even if you change the default installation drive.

It took longer to satisfy nmake than it did to build! I took a few quick notes as I installed. Here's a quick recipe:

  1. Install MSVC free compiler
  2. Install the Platform SDK from:
  3. Download and install .NET SDK in order to satisfy msvcrt.lib requirement.

    Note: The .NET SDK installs files into two directories: one is user configurable and one isn't. I used "D:\Program Files\Microsoft Visual Studio .NET 2003", but the installer installed "lib" and "inc" into "C:\Program Files\Microsoft Visual Studio .NET 2003"

  4. Edit win32/Makefile - (patch inside the readmore)

    23,24c23,24 < INST_DRV = c: < INST_TOP = $(INST_DRV)\perl --- > INST_DRV = d: > INST_TOP = $(INST_DRV)\perl5.9.1 87c87 < CCTYPE = MSVC60 --- > #CCTYPE = MSVC60 #get rid of vc 6 specific stuff 154,155c154,155 < #CCHOME = f:\msvc20 < CCHOME = $(MSVCDIR) --- > CCHOME = d:\program files\microsoft visual c++ toolki +t 2003 > #CCHOME = $(MSVCDIR) 396c396 < CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOC +DEFS) \ --- > CFLAGS = -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOC +DEFS) \ 820c820,821 < perlglob$(o) setargv$(o) --- > perlglob$(o) > #setargv$(o)
  5. Fire up command prompt using Platform SDK shortcut
  6. run vcvars32.bat from compiler installation
  7. set LIB=%LIB%;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib (In order to satisfy msvcrt req.)
  8. path=%PATH%;PATH_TO_SDK\Bin\Win64 (at the END of existing path, required for resource converter)
  9. unpack perl source and cd PATH_TO_UNPACKED_PERL\win32
  10. nmake
  11. nmake test # all tests passed - except skipped tests, of course
  12. nmake install

Fresh, steamin' hot perl 5.9.1, ready to enjoy!

I'll try to replicate the build with bleadperl over the next couple of days and post any fixes or corrections.

Update: corrected LIB path (added Vc7\lib to LIB, see #7 above)