| parrotcode: Parrot's configuration script | |
| Contents | Configuration |

Configure.pl - Parrot's configuration script

% perl Configure.pl [options]
or:
% perl Configure.pl --file=/path/to/configuration/directives

This is Parrot's configuration program. It should be run to create the necessary system-specific files before building Parrot.
We now offer two interfaces to configuration:
All configuration options are placed on the command-line. You may request interactive configuration with the --ask option. You may not use the --file option, as that is reserved for the Configuration-File interface.
All configuration options are placed in a special configuration file whose full path is invoked on the command-line as --file=/path/to/configuration/directives as the sole command-line option. You may not request interactive configuration. For specific instructions, see "CONFIGURATION-FILE INTERFACE" below.

--help--version--verbose--verbose=2--verbose-step={N|regex}--verbose=2 for step number N or matching description.--fatal--fatal-step={init::alpha,inter::beta,auto::gamma}--nomanicheck--prefix--languages="list of languages"--step=gen::languages to regenerate makefiles.--ask--test--test=configure--test=build--test--test=configure, conduct configuration, then run the tests described in --test=build.
--debugging=0--parrot_is_shared--m=32--profile--cage--optimize--optimize=flagsflags to the compiler flags.--inlineinline.--cc=(compiler)--ccflags=(flags)--ccwarn=(flags)--cxx=(compiler)--libs=(libs)--link=(linker)--linkflags=(flags)--ld=(linker)--ldflags=(flags)--lex=(lexer)--yacc=(parser)--define=val1[,val2] --define=inet_aton

--intval=(type)INTVAL.--floatval=(type)FLOATVAL.--opcode=(type)--ops=(files)--pmc=(files)--cgoto=0--jitcapable--execcapable--gc=(type)type should be one of: gc, libc, malloc or malloc-trace. The default is gc.
--icu-config=/path/to/icu-config--icushared=(linkeroption) --icushared='-L /opt/openoffice/program -licudata -licuuc'
--icuheaders=(header_dir)
--maintainer--miniparrot
In the Configuration-File interface, unlike the Command-Line interface, you may delete configuration steps or run them in an order different from that listed in Parrot::Configure::Step::List.
A configuration file is a plain-text file located somewhere in or under your top-level Parrot directory. Unless indicated otherwise, all lines in this file must have no leading whitespace. As in Perl 5, lines beginning with # marks are comments and are ignored during parsing of the file. Unlike Perl 5, you may not begin comments in the middle of a line.
The configuration file must contain these three sections:
=variables and must be followed by at least one blank line. All other content in this section is optional. =variables
CC=/usr/bin/gcc
CX=/usr/bin/g++
So if you typically invoked Configure.pl by wrapping it in a shell script for the purpose of setting environmental variables used in options, like this:
CC="/usr/bin/gcc"
CX="/usr/bin/g++"
/usr/local/bin/perl Configure.pl \
--cc="$CC" \
--cxx="$CX" \
--link="$CX" \
--ld="$CX"
... you would now place the assignments to CC and CX in the =variables section of the configuration file (as above).
=general and must be followed by at least one blank line. All other content in this section is optional. cc=$CC
cxx=$CX
link=$CX
ld=/usr/bin/g++
verbose
Note that when the value is a variable defined in the =variables section, it must be preceded by a $ sign.
nomanicheck
without-icu
However, as we shall quickly see, it's conceptually clearer to place these values next to those configuration steps that actually use them.
=steps and must be followed by at least one blank line, in turn followed by the list of configuration steps, followed by another blank line followed by a line =cut (just like POD). ...
auto::snprintf
# auto::perldoc
auto::ctags
...
In the above example, step auto::perldoc will be completely skipped. You will not see it listed as ....skipped in Configure.pl's output; it will simply not be there at all.
--) and repeat as needed for additional step-specific options. init::manifest nomanicheck
...
fatal-step and verbose-step options are the best examples of this case. Rather than requesting verbose output from all configuration steps, you may, for example, wish to designate only a few steps for verbose output: ...
init::hints verbose-step
init::headers
inter::progs fatal-step
...
auto::gcc verbose-step
...
In the above example, Configure.pl will grind to a halt if inter::progs does not complete successfully. You will get verbose output only from init::hints and auto::gcc; the other 60+ steps will be terse.
init::manifest nomanicheck cc=$CC ld=/usr/bin/g++ verbose
init::defaults
...
That will work -- but why would you want to do something that messy?

Ignoring leading whitespace, this is an example of a correctly formed configuration file.
=variables
CC=/usr/bin/gcc
CX=/usr/bin/g++
=general
cc=$CC
cxx=$CX
link=$CX
ld=/usr/bin/g++
=steps
init::manifest nomanicheck
init::defaults
init::install
init::miniparrot
init::hints verbose-step
init::headers
inter::progs
inter::make
inter::lex
inter::yacc
auto::gcc
auto::glibc
auto::backtrace
auto::fink
auto::macports
auto::msvc
auto::attributes
auto::warnings
init::optimize
inter::shlibs
inter::libparrot
inter::charset
inter::encoding
inter::types
auto::ops
auto::pmc
auto::alignptrs
auto::headers
auto::sizes
auto::byteorder
auto::va_ptr
auto::format
auto::isreg
auto::arch
auto::jit
auto::cpu
auto::funcptr
auto::cgoto
auto::inline
auto::gc
auto::memalign
auto::signal
auto::socklen_t
auto::env
auto::aio
auto::gmp
auto::readline
auto::gdbm
auto::pcre
auto::opengl
auto::crypto
auto::gettext
auto::snprintf
# auto::perldoc
auto::ctags
auto::revision
auto::icu
gen::config_h
gen::core_pmcs
gen::crypto
gen::parrot_include
gen::opengl
gen::call_list
gen::languages
gen::makefiles
gen::platform
gen::config_pm
=cut
You may see how this works in practice by calling:
perl Configure.pl --file=xconf/samples/yourfoobar
or
perl Configure.pl --file=xconf/samples/testfoobar

lib/Parrot/Configure.pm, lib/Parrot/Configure/Step.pm, docs/configuration.pod
|
|
|