Hi, My first post here. First up, is there a better place to ask questions relating to the building of parrot ? If so ... where ? If not ... read on.
I'm on Windows 2000, and parrot-0.4.1 builds straight out of the box using MSVC++ 7.0 (.NET) and nmake. But there's a couple of issues when using MinGW (gcc-3.4.4) and mingw32-make. In config/gen/makefiles/root.in I find the line: MINIPARROT = $(CUR_DIR)/miniparrot$(EXE) Using MSVC++ and nmake, somewhere along the way, that forward slash gets converted to a backslash (which is what needs to happen). But using gcc and mingw32-make, the backslash stays as is. Put simply the problem is that, in the cmd.exe shell, while '.\some.exe' works fine, './some.exe' always produces the error: '.' is not recognized as an internal or external command, operable program or batch file. How is that '/' to '\' conversion effected - so that I might apply it to the MinGW build ? As a quick hack, when building with MinGW, I simply first change the above line in 'root.in' to: MINIPARROT = miniparrot$(EXE) That avoids the './miniparrot.exe ....' problem I initially experienced, but the mingw32-make process still fails. Here's how it finishes: miniparrot.exe config_lib.pasm > runtime/parrot/include/config.fpmc F:\Perl58_M\5.8.8\bin\perl.exe tools/build/parrot_config_c.pl > \ src/parrot_config.c src/parrot_config.c F:\Perl58_M\5.8.8\bin\perl.exe tools/build/parrotdef.pl gcc -o rrot.exe -s -L"F:\Perl58_M\5.8.8\lib\CORE" -L"F:\MinGW\lib" -Wl,--out-impl ib,parrot.a \ compilers/imcc/main.o blib/lib/libparrot.a -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwins pool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -l ws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lgmp \ src/parrot_config.o parrot.def Cannot export Parrot_PMC_get_intval: symbol not defined Cannot export Parrot_PMC_typenum: symbol not defined Cannot export Parrot_call_method: symbol not defined Cannot export Parrot_call_sub: symbol not defined Creating library file: parrot.a collect2: ld returned 1 exit status mingw32-make: *** [parrot.exe] Error 1 The failing command invokes 'gcc' because that's how 'root.in' evaluates ${link}. As a guess, I set ${link} to 'g++', but the error is still the same. When building with MSVC++ and nmake, the corresponding command is: link -out:.\parrot.exe -nologo -nodefaultlib -debug -machine:x86 -debug compilers\imcc\main.obj blib\lib\libparrot_s.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib src\parrot_config.obj -def:parrot.def Comparing the two, I can't really see why the former would fail while the latter succeeds. I don't think the forward slashes in the former should matter ... and I don't think the absence of '-lgmp' in the latter accounts for the difference. Any advice on how to proceed with this ? Cheers, Rob