Corion has asked for the wisdom of the Perl Monks concerning the following question:
I saw the MS VC7 compiler offered, downloaded it, posted the news, downloaded the necessary libraries, and tried to build Perl with it. I had to patch Makefile so that the build process for miniperl works:
- msvcrt.lib seems gone, so I substituted libc.lib for that
- The delayed loading of winsock.dll doesn't seem to work, so I removed it
- The compiler wants a special command line switch, /ML, if it should link to libc, so I changed that too.
This is the diff of my 5.9.1 Makefile, as downloaded from perl.com :
< DELAYLOAD = -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayi +mp.lib --- > #DELAYLOAD = -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayi +mp.lib > DELAYLOAD = 347c348,349 < LIBC = msvcrt.lib --- > #LIBC = msvcrt.lib > LIBC = libc.lib 356c358,359 < OPTIMIZE = -Od -MD -Zi -DDEBUGGING --- > #OPTIMIZE = -Od -MD -Zi -DDEBUGGING > OPTIMIZE = -Od -ML -Zi -DDEBUGGING 360c363,364 < OPTIMIZE = -MD -DNDEBUG --- > #OPTIMIZE = -MD -DNDEBUG > OPTIMIZE = -ML -DNDEBUG 396c400 < CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOC +DEFS) \ --- > CFLAGS = -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOC +DEFS) \ 569c573 < # We need this for miniperl build unless we override canned --- > # We need this for miniperl build unless we override canned 788c792 < "ccflags=-nologo -Gf -W3 $(OPTIMIZE:"=\") $(DEFINES) $ +(BUILDOPT)" \ --- > "ccflags=-nologo -GF -W3 $(OPTIMIZE:"=\") $(DEFINES) $ +(BUILDOPT)" \ 820c824 < perlglob$(o) setargv$(o) --- > perlglob$(o) $(SETARGV_OBJ)
Miniperl builds OK, but when I do nmake test, I get an access violation in the newly created perl.exe for some instruction at 0x77892373, which tried to read memory at 0x000000000f - so I did something wrong while slashing around in the Makefile. But what?
Update: Rephrased the last paragraph
Back to Seekers of Perl Wisdom