On Sat, 10 Feb 2001, Thomas Wegner wrote:

> Short answer: I don't know :). I have no idea what this script does 
> and where/whether it gets called.

It could be that installperl is not invoked by the Mac Makefile.mk(?).

> A look at my build log shows two "For dir in ..." loops, one for a 
> 'Build of all', and one for a 'Build of install' for the
> ":macperl_src:perl:macos:ext:Mac" modules. The 'dirs' definition in the
> makefile ":macperl_src:perl:macos:ext:Mac:Makefile.mk" controls which
> modules get processed in the for loop. Actually, the extension modules
> DCon, ImageCompression, Navigation, Notification and SAT are not
> included in that definition list. This explains why they don't get built
> and installed.

Indeed.  On unix and other POSIX systems (e.g. EMX bash on OS/2 or cygwin
bash on NT) there is a make_ext script external to the makefile In the
utils/ directory on unix) that gets called with the list of :ext:
extensions that you asked Configure to build for you (I think that
Configure is set up to take the output of `ls ext/` and prompt you with an
option to build all of the extensions therein). On VMS there is also a
make_ext.com DCL script to run through most, but not all of the stuff in
the ext directory.  VMS's configure.com has a hard coded list of ext
modules that are known to build on most VMS C compilers (not all of them
do).

> Mac::AETE::*, Mac:: Apps::Launch and ExtUtils are standard Perl modules 
> and need not to be built. I really don't know why they don't get
> installed.
> 
> The modules in ":macperl_src:perl:macos:lib" are also plain Perl modules 
> (Config.pm, ExtUtils::Miniperl.pm, ExtUtils::MM_MacOS.pm and re.pm) and
> should be installed, I guess, although an older module re.pm already
> exists in ":macperl_src:perl:lib:".

Yes the :lib: stuff ought to be installed, Config.pm is critical.  Note
that re.pm is very tricky.  The perl kit ships with two distinct
implementations of re.pm.  There is a pure perl implementation in re.pm
that can be used by miniperl, and indeed _is_ used by miniperl and
MakeMaker during the building of the :ext: extensions.  There is a more
extensive version of re in the :ext:re:re.xs that is an extension.  Hence
(mini)perl needs re(.pm) to build extensions with and one of the
extensiones that gets built is re(.xs).  This is a chicken and egg or
bootstrapping problem that confounded several the non Unix ports for a
bit.  The unix Makefile (derived from Makefile.SH) has an early dependency
on lib/re.pm and will execute a rule like `cat ext/re/re.pm > $@` early on
in the Unix build (before the attempt to make_ext, and no I don't
know why cat was used instead of the $(CP) macro).  It later goes through
the ext/ directories and builds the extensions, including ext/re/*.

The VMS make file (descrip.mms is derived from
:vms:descrip_mms.template) does a similar thing with re.pm using the DCL
COPY command.

Peter Prymmer


Reply via email to