Two problems found so far.

1. The compiler can not find the header file when run.

This is because last /INCLUDE directive on the command line is the only one used, and there was already an /INCLUDE in the configuration options.

The same is the case for /DEFINE and the other qualifiers.

A quick fix is to change the order of the items in the @flags array as below. A more robust fix would be to rebuild the parameters, a task I am not currently up to in Perl.

This get the test lib/ExtUtils/ParseXS/t/basic.t to the linker step where it fails because it does not generate the linker option file. And I have not yet gotten past that step.

On ALPHA and I64, the linker option files do two things, one it lists the global symbols to be exported for a later link or dynamic load, and secondly it specifies the shared images that should also be linked in.

On VAX, the option files specifies the shared images, and also optionally a transfer_vector object module that is used to make upward compatible shared images.

Multiple option files can be used. The Perl build procedure leaves a file PerlShr.Opt in the base directory where it is built.

Including this PerlShr.Opt file will make the link succeed, but unless another option file is use, on Alpha/I64 the test to run the newly linked routine will fail.

I am not in a position to test what would happen on a VAX if the transfer vector object module is not present on a shared image.


I also notice that the build procedures are putting in the full file specifications for the shared images they are linked against in the option file instead of just putting in the bare image name such as "DBGPERLSHR", and then using a logical name to point to the actual file.

At run time, if the logical name is not present, the image activator will look in SYS$SHARE: for the image. So the logical name is going to be needed anyway during the build/test phase, and will be needed after the installation.

This means that the when you do a MMS INSTALL step, all the option files generated during the build need to be edited. If the logical name method was used instead, the option files would only be need to be written once and never edited.

-John
[EMAIL PROTECTED]
Personal Opinion Only



EAGLE> gdiff "lib/ExtUtils/CBuilder/Base.pm_25305" "lib/ExtUtils/CBuilder/Base.pm"
--- lib/ExtUtils/CBuilder/Base.pm_25305 Thu Aug 18 22:45:10 2005
+++ lib/ExtUtils/CBuilder/Base.pm       Thu Aug 18 22:23:47 2005
@@ -90,9 +90,9 @@
   my @cccdlflags = $self->split_like_shell($cf->{cccdlflags});
   my @ccflags = $self->split_like_shell($cf->{ccflags});
   my @optimize = $self->split_like_shell($cf->{optimize});
-  my @flags = (@include_dirs, @cccdlflags, @extra_compiler_flags,
+  my @flags = (@cccdlflags, @extra_compiler_flags,
               $self->arg_nolink,
-              @ccflags, @optimize,
+              @ccflags, @optimize, @include_dirs,
               $self->arg_object_file($args{object_file}),
              );

Reply via email to