I have managed to build Parrot::Embed on Windows/VC8, and judging from
the test output it works.  There are two warnings, but I guess those are
no problem?

    $ ./Build test
    t\interp....ok 1/31Parrot VM: Can't stat no file here, code 2.
    error:imcc:syntax error, unexpected IDENTIFIER
            in file 'EVAL_2' line 1
    t\interp....ok
    All tests successful.
    Files=1, Tests=31,  0 wallclock secs ( 0.00 cusr +  0.00 csys =
     0.00 CPU)

There are three steps necessary (four using VC8).

1) Two additional functions need to be exported.
    Parrot_register_pmc
    Parrot_unregister_pmc

2) Change the compiler and linker flags.

3) Add the path to parrot.dll to Path, so it can be found during (test)
execution.


Step 2 is the hard part, and I'd like to ask for some advice.  The flags
seem to come from F<parrot.pc>, generated from the input file
F<config/gen/makefiles/parrot.pc.in>.  The relevant entries are:

    Libs: -L${libdir} -lparrot
    Cflags: -I${includedir}

The C<Cflags> seem to be added correctly in Module::Build (version
0.2805) to the C<extra_compiler_flags>, but they don't get passed to the
compiler.  I needed to change C<incpath> for this.  This seems to be an
issue with Module::Build, but I need to double check this.

Second, C<Libs> is not right for Visual C++ (but added to
C<extra_linker_flags> and passed to the linker.)

F<config/gen/makefiles/parrot.pc.in> says:

    Libs: -L${libdir} -lparrot @icu_shared@ @libs@

Visual C++ needs:

    ${libdir}/libparrot.lib @icu_shared@ @libs@
or
    /LIBPATH:${libdir} libparrot.lib @icu_shared@ @libs@

Any recommended way to get there?

Thanks,
Ron

Reply via email to