Michael G Schwern <[EMAIL PROTECTED]> wrote on 03/04/2005 06:12:36 PM:

> CC/DECC -Iperl_root:[lib.VMS_AXP.5_8_0.CORE] -c
/Include=[]/Standard=Relaxed_ANS
> I/Prefix=All/Obj=.obj /NOANSI_ALIAS/float=ieee/ieee=denorm_results
/NoList -o US
> ER1:[SCHWERN]compilet.obj USER1:[SCHWERN]compilet.c
> %DCL-W-MAXPARM, too many parameters - reenter command with fewer
parameters
> %DCL-W-MAXPARM, too many parameters - reenter command with fewer
parameters
> error building USER1:[SCHWERN]compilet.obj from
'USER1:[SCHWERN]compilet.c' at b
> lib/lib/ExtUtils/CBuilder/Base.pm line 65.

<snip>

> There's some assumptions there which aren't going to fly.  Pretty much
> anything of the -foo form is likely to be wrong on VMS.  Looks like most
> of ExtUtils::CBuilder::Base->compile() will have to be overridden.  You
> can probably figure it out from ExtUtils::MM_VMS though it won't be
pretty.
>
> And at this point I kick this over to the vmsperl folks.

Yes the -foo switches have caused trouble. In going over the first example
that could either be given as:

CC/DECC
/Include=(perl_root:[lib.VMS_AXP.5_8_0.CORE],[])/Standard=Relaxed_ANSI
/Prefix=All/Obj=.obj /NOANSI_ALIAS/float=ieee/ieee=denorm_results
/NoList USER1:[SCHWERN]compilet.c

or as:

CC/DECC
/Include=(perl_root:[lib.VMS_AXP.5_8_0.CORE],[])/Standard=Relaxed_ANSI
/Prefix=All/Obj=USER1:[SCHWERN]compilet.obj /NOANSI_ALIAS/float=ieee
/ieee=denorm_results /NoList USER1:[SCHWERN]compilet.c


In particular the following comments pertain to the unixy type
switches cited in the example:

cc -c by which is meant compile only to produce an .o file do not link.
on VMS using cc will only compile a .c file to a .obj file
a separate utility (either link or cxxlink) is needed to link .obj files
into .exe files.

cc -I<dir1> -I<dir2> - gets replaced in this example by
cc /include=(<dir1>,<dir2>)

cc -o (optional .o file spec) get replaced either by
/object=.obj or by /object=user1:[scwhern]compilet.obj
or could even be omitted under many circumstances (though I
do not recommend that you omit the /object qualifier spec).

On unix they may be called switches and are often specified like -o or
somesuch.  On VMS they are called qualifiers and are given by /OBJECT
or somesuch.  In order to shorten DCL shell command lines it is
always possible to abbreviate the qualifiers to the shortest unique form.
As an example instead of CC /OBJECT=FOO.OBJ it is possible to
say CC /OBJ=FOO.OBJ using /OBJ instead of /OBJECT.

Er, sorry at this time I do not have a patch :-)

Peter Prymmer

Reply via email to