(To use Simon's nomenclature)

The long term goal of the Parrot build system (of which configuring is
the major part) is to bootstrap itself from ground zero, a la Parrot
von Münchausen.

Ground zero is here defined as a simple C file (possibly augmented by
one or more simple C headers) and a C compiler.

We should not assume a certain build driver (make).

We should not assume a native compilation or execution
(think cross-compilation).

All the above mean that neither Configure nor autoconf/automake
are right.  Those assume too much UNIX-like environment.
We should not.

The bootstrapping may take several rounds as Parrot learns
more about its environment.  "It's a-a-l-i-i-i-v-e!"

What should be be in the very first C file?
Something along the lines:
- write to a file
- compile (collect output)
- execute (collect output) (note that execution may not be native)
This should be enough to figure out existence and size of various
types, structs, and functions, headers, and libraries.  You know,
the standard Configure/autoconf stuff.

At some point Parrot should have enough brain cells to solve
directed graph dependency problems (also known as "make").

On keeping your nose portability-clean: I think reading perlport
carefully will keep one reasonably scared.

As Simon mentioned studying microperl (get Perl 5.7.2) and say
"make -f Makefile.micro" is useful: you can get 85% operational
Perl even when completely ignoring anything that's not ANSI C.

P.S.  Maybe the "long term" discussion should take place in
perl6-build, to draw fire from the "short term"?

-- 
$jhi++; # http://www.iki.fi/jhi/
        # There is this special biologist word we use for 'stable'.
        # It is 'dead'. -- Jack Cohen

Reply via email to