On Thu, 15 Nov 2001, James Mastros wrote:

> Hey all.
>   This implements a platforms system similar to what we were discussing
> earlier: each interface is a sepperate file, independent of the others, the
> hints file specifies what interfaces we use.  This does create a large
> number of files, but minimizes code copying.  All the peices are cated
> (effectively) together into a platform.c file.  (We could make this a
> platform.h, if we want stuff to inline more easily.)

I like the idea of splitting out some things (such as dynaloading) into
separate directories, instead of a single monolithic platform.c file.
Whether *every* non-portable function needs its own directory is a
different question.  I suspect not, but it's clearly a matter of taste and
balance just where to draw the line.

The biggest conceptual problem I saw was this (encountered on Solaris):

    Nobody has rewritten the "hints" file for your platform yet,
    and nobody has written the configuration guesser yet.  Write a
    file hints/solaris.pl, using the existing files as examples
    if your platform is fairly normal, it shouldn't be too hard.

I see what you are doing and why you are doing it, but I think creating
hints/linux.pl at this point to do these tasks is a very bad precedent.
For my longer rant on this subject, see my earlier patch to this list
where I removed platform/linux.[ch] in favor of the nearly identical
platform/generic.[ch].

You really need to keep some sort of fall-back generic files.

Finally, there actually is a mostly-working Configuration guesser already
-- just look up the answers in Perl5's Config hash.  For example,
$Config{d_dlopen} will tell you if the system has the dlopen() function.
$Config{so} will give you the shared library suffix, etc.  If you use
those Config values now, it'll enable you exercise the dynamic
construction of platform.[ch] from all the little pieces.

-- 
    Andy Dougherty              [EMAIL PROTECTED]
    Dept. of Physics
    Lafayette College, Easton PA 18042

Reply via email to