Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 684 lines (442 sloc) 15.985 kb
3ace369 @particle #39826: [CAGE] convert C<perl -w> to C<use warnings;>
particle authored
1 #! perl
29b08db @bschmalhofer Require Perl 5.6.0, not 5.8.0, in Configure.pl.
bschmalhofer authored
2
110c52f @allisonrandal [build] Add a --disable-rpath option to allow Linux packagers to build
allisonrandal authored
3 # Copyright (C) 2001-2009, Parrot Foundation.
11b744f @simoncozens Configure system from Brent Dax <brentdax@cpan.org>
simoncozens authored
4
dc40427 @coke [codingstd] require version in a way that avoids a complaint from per…
coke authored
5 use 5.008;
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
6 use strict;
7 use warnings;
8 use lib 'lib';
9
10 use Parrot::Configure;
11 use Parrot::Configure::Options qw( process_options );
12 use Parrot::Configure::Options::Test;
a725b2f @jkeenan Refactor preparatory code found in lib/Parrot/Configure/Options/Test.…
jkeenan authored
13 use Parrot::Configure::Options::Test::Prepare qw(
14 get_preconfiguration_tests
15 get_postconfiguration_tests
16 );
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
17 use Parrot::Configure::Messages qw(
18 print_introduction
19 print_conclusion
20 );
b65b944 @NotFound Update .parrot_current_rev in Configure if possible
NotFound authored
21 use Parrot::Revision;
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
22
23 $| = 1; # $OUTPUT_AUTOFLUSH = 1;
24
25 # Install Option text was taken from:
26 #
27 # autoconf (GNU Autoconf) 2.59
28 # Written by David J. MacKenzie and Akim Demaille.
29 #
30 # Copyright (C) 2003 Free Software Foundation, Inc.
31 # This is free software; see the source for copying conditions. There is NO
32 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
33
34 # from Parrot::Configure::Options
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
35 my ($args, $steps_list_ref) = process_options(
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
36 {
468e958 @jkeenan Check for whether $ARGV[0] to avoid uninitialized value warning when …
jkeenan authored
37 mode => (defined $ARGV[0] and $ARGV[0] =~ /^--file=/)
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
38 ? 'file'
39 : 'configure',
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
40 argv => [@ARGV],
41 }
42 );
43 exit(1) unless defined $args;
44
45 my $opttest = Parrot::Configure::Options::Test->new($args);
46
47 # configuration tests will only be run if you requested them
48 # as command-line option
a725b2f @jkeenan Refactor preparatory code found in lib/Parrot/Configure/Options/Test.…
jkeenan authored
49 $opttest->run_configure_tests( get_preconfiguration_tests() );
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
50
51 my $parrot_version = $Parrot::Configure::Options::Conf::parrot_version;
52
53 # from Parrot::Configure::Messages
46c8406 @jkeenan Implement option of fully silent configuration.
jkeenan authored
54 print_introduction($parrot_version)
55 unless $args->{silent};
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
56
b65b944 @NotFound Update .parrot_current_rev in Configure if possible
NotFound authored
57 # Update revision number if needed
58 Parrot::Revision::update();
59
a5b614c @bschmalhofer [config]
bschmalhofer authored
60 my $conf = Parrot::Configure->new();
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
61
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
62 $conf->add_steps( @{ $steps_list_ref } );
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
63
64 # from Parrot::Configure::Data
65 $conf->options->set( %{$args} );
8963c6e @rurban [config] Enable make reconfig. RT #58034
rurban authored
66 # save the command-line for make reconfig
766efa7 @jkeenan Minor code reformatting.
jkeenan authored
67 $conf->data->set(configure_args => @ARGV
68 ? '"'.join("\" \"", map {qq($_)} @ARGV).'"'
69 : '');
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
70
d154d3a @jkeenan Reposition one inline comment; add another.
jkeenan authored
71 # Log files created by Configure.pl in MANIFEST.configure.generated
7bb2d0e @jkeenan Applying patch submitted in
jkeenan authored
72 $conf->{active_configuration} = 1;
20990ff @moritz [config] simplification suggested by DietCoke++
moritz authored
73 unlink 'MANIFEST.configure.generated';
d154d3a @jkeenan Reposition one inline comment; add another.
jkeenan authored
74
75 # Run the actual steps from Parrot::Configure
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
76 $conf->runsteps or exit(1);
77
78 # build tests will only be run if you requested them
79 # as command-line option
a725b2f @jkeenan Refactor preparatory code found in lib/Parrot/Configure/Options/Test.…
jkeenan authored
80 $opttest->run_build_tests( get_postconfiguration_tests() );
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
81
82 my $make = $conf->data->get('make');
83 # from Parrot::Configure::Messages
46c8406 @jkeenan Implement option of fully silent configuration.
jkeenan authored
84 ( print_conclusion( $conf, $make, $args ) ) ? exit 0 : exit 1;
3477cc0 @jkeenan Applying patch submitted in
jkeenan authored
85
86 ################### DOCUMENTATION ###################
87
756762f *** empty log message ***
Michael Scott authored
88 =head1 NAME
54d55b6 Patch from Nicholas Clark <nick@unfortu.net>: stops silly people
Josh Wilmes authored
89
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
90 Configure.pl - Parrot's configuration script
a3cd162 Build enhancements. Originally to support building shared libraries, …
Gregor N. Purdy authored
91
756762f *** empty log message ***
Michael Scott authored
92 =head1 SYNOPSIS
a3cd162 Build enhancements. Originally to support building shared libraries, …
Gregor N. Purdy authored
93
756762f *** empty log message ***
Michael Scott authored
94 % perl Configure.pl [options]
6d36c2d bunch of patches:
Leopold Toetsch authored
95
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
96 or:
97
98 % perl Configure.pl --file=/path/to/configuration/directives
99
756762f *** empty log message ***
Michael Scott authored
100 =head1 DESCRIPTION
a3cd162 Build enhancements. Originally to support building shared libraries, …
Gregor N. Purdy authored
101
d10b19e @petdance Perl programs are programs, not scripts
petdance authored
102 This is Parrot's configuration program. It should be run to create
103 the necessary system-specific files before building Parrot.
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
104
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
105 We now offer two interfaces to configuration:
106
107 =over 4
108
109 =item * Command-Line Interface
c15d8e5 Added 'reconfig' make target and corresponding --reconfig option to
Gregor N. Purdy authored
110
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
111 All configuration options are placed on the command-line. You may request
112 interactive configuration with the C<--ask> option. You may not use the
113 C<--file> option, as that is reserved for the Configuration-File interface.
c15d8e5 Added 'reconfig' make target and corresponding --reconfig option to
Gregor N. Purdy authored
114
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
115 =item * Configuration-File Interface
116
117 All configuration options are placed in a special configuration file whose
118 full path is invoked on the command-line as
119 C<--file=/path/to/configuration/directives> as the sole command-line option.
120 You may not request interactive configuration. For specific instructions, see
121 L</"CONFIGURATION-FILE INTERFACE"> below.
122
123 =back
124
125 =head2 General Options
126
127 =over 4
ad4983c add --optimize Configure option
Leopold Toetsch authored
128
756762f *** empty log message ***
Michael Scott authored
129 =item C<--help>
205f653 @brentdax Win32 compatibility, Configure hints, 5.005 compatibility, MANIFEST c…
brentdax authored
130
756762f *** empty log message ***
Michael Scott authored
131 Prints out a description of the options and exits.
ad4983c add --optimize Configure option
Leopold Toetsch authored
132
756762f *** empty log message ***
Michael Scott authored
133 =item C<--version>
0fc6ac6 @brentdax Configure.pl 2.0.
brentdax authored
134
756762f *** empty log message ***
Michael Scott authored
135 Prints out the version number of Configure.pl and exits.
c0142c7 memory allocation rework
Dan Sugalski authored
136
756762f *** empty log message ***
Michael Scott authored
137 =item C<--verbose>
c0142c7 memory allocation rework
Dan Sugalski authored
138
6f5b538 @jhoblitt podtidy configure files
jhoblitt authored
139 Tells Configure.pl to output extra information about the configuration data it
140 is setting.
c15d8e5 Added 'reconfig' make target and corresponding --reconfig option to
Gregor N. Purdy authored
141
ab81b8c @brentdax Configure output cleanup. Retasks --verbose to include the old outpu…
brentdax authored
142 =item C<--verbose=2>
143
dacbc40 ICU config patch - use systems ICU
Leopold Toetsch authored
144 Tells Configure.pl to output information about i<every> setting added or
ab81b8c @brentdax Configure output cleanup. Retasks --verbose to include the old outpu…
brentdax authored
145 changed.
146
d79c782 @jkeenan Applying patch submitted in
jkeenan authored
147 =item C<--verbose-step={N|regex}>
567c2b1 new Configure options: verbose-step
Leopold Toetsch authored
148
d79c782 @jkeenan Applying patch submitted in
jkeenan authored
149 Run C<--verbose=2> for step number C<N> or matching description.
567c2b1 new Configure options: verbose-step
Leopold Toetsch authored
150
a5e7643 @jkeenan Committing patch submitted for RT 45523 and 45525. Add --fatal and
jkeenan authored
151 =item C<--fatal>
152
153 Tells Configure.pl to halt completely if any configuration step fails.
154
155 =item C<--fatal-step={init::alpha,inter::beta,auto::gamma}>
156
157 Tells Configure.pl to halt completely if any configuration step in
158 comma-delimited string individually fails.
159
756762f *** empty log message ***
Michael Scott authored
160 =item C<--nomanicheck>
85a1fcc reenable debugging=1 default
Leopold Toetsch authored
161
756762f *** empty log message ***
Michael Scott authored
162 Tells Configure.pl not to run the MANIFEST check.
11b744f @simoncozens Configure system from Brent Dax <brentdax@cpan.org>
simoncozens authored
163
20fed4c Add a --prefix argument to Configure.pl to set the installation prefix
Nicholas Clark authored
164 =item C<--prefix>
165
166 Sets the location where parrot will be installed.
167
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
168 =item C<--ask>
de4d079 Add conditional configurations for testy code.
Melvin Smith authored
169
570f6d4 @jkeenan Remove configuration probe for asynchronous input/output per architec…
jkeenan authored
170 This turns on the user prompts during configuration. Available only in
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
171 Command-Line interface. Not available in Configuration-File interface.
6fba438 @simoncozens Abstract the argument and opcode packing types and functions out into
simoncozens authored
172
84c64a2 @jkeenan Applying to trunk patch submitted in RT 42690. particle requested a …
jkeenan authored
173 =item C<--test>
174
175 Run certain tests along with F<Configure.pl>:
176
177 =over 4
178
179 =item C<--test=configure>
180
181 Run tests found in F<t/configure/> I<before> beginning configuration. These
182 tests demonstrate that Parrot's configuration tools will work properly once
183 configuration has begun.
184
185 =item C<--test=build>
186
272ac52 @jkeenan Some prerequisites for successful operation of buildtools_tests are n…
jkeenan authored
187 Run tests found in F<t/steps/>, F<t/postconfigure/> and F<t/pharness>.
84c64a2 @jkeenan Applying to trunk patch submitted in RT 42690. particle requested a …
jkeenan authored
188
189 =item C<--test>
190
191 Run the tests described in C<--test=configure>, conduct configuration, then
192 run the tests described in C<--test=build>.
193
194 =back
195
52494c2 @jkeenan Merge darwin2hints branch into trunk. Functionality for detecting Fi…
jkeenan authored
196 =item C<--configure_trace>
197
198 Store the results of each configuration step in a Storable F<.sto> file on
199 disk, for later analysis by F<Parrot::Configure::Trace> methods.
200
d3bdc79 @jkeenan Add documentation for quickcover; link to Devel-Cover.
jkeenan authored
201 =item C<--coveragedir>
202
1bb6425 @pjcj Changed cover to fullcover and quickcover to cover
pjcj authored
203 In preparation for calling C<make cover> to perform coverage analysis,
d3bdc79 @jkeenan Add documentation for quickcover; link to Devel-Cover.
jkeenan authored
204 provide a user-specified directory for top level of HTML output.
205
52494c2 @jkeenan Merge darwin2hints branch into trunk. Functionality for detecting Fi…
jkeenan authored
206 =item Operating system-specific configuration options
207
208 =over 4
209
bc26b63 @darbelo Make the used hints file overridable on the Configure.pl command line.
darbelo authored
210 =item C<--hintsfile=filename>
211
212 Use filename as the hints file.
213
52494c2 @jkeenan Merge darwin2hints branch into trunk. Functionality for detecting Fi…
jkeenan authored
214 =item C<--darwin_no_fink>
215
216 On Darwin, do not probe for Fink libraries.
217
218 =item C<--darwin_no_macports>
219
220 On Darwin, do not probe for Macports libraries.
221
222 =back
223
756762f *** empty log message ***
Michael Scott authored
224 =back
a3cd162 Build enhancements. Originally to support building shared libraries, …
Gregor N. Purdy authored
225
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
226 =head2 Compile Options
9d000b4 Made the changes to figure out mask bits for various register and stack
Dan Sugalski authored
227
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
228 =over 4
19fa0d4 @tomhughes Stop Configure trying to make op_info.c and op.h as op_info.c no longer
tomhughes authored
229
756762f *** empty log message ***
Michael Scott authored
230 =item C<--debugging=0>
bc2ee1d @brentdax Minor cleanup and enhancements.
brentdax authored
231
756762f *** empty log message ***
Michael Scott authored
232 Debugging is turned on by default. Use this to disable it.
9d000b4 Made the changes to figure out mask bits for various register and stack
Dan Sugalski authored
233
82a8718 @particle config: add --parrot_is_shared option to docs
particle authored
234 =item C<--parrot_is_shared>
235
236 Link parrot dynamically.
237
2ddc05f [config] New Configure.pl option --m=32
Leopold Toetsch authored
238 =item C<--m=32>
239
fe05e8a @ambs Some enhancements on linelength.t
ambs authored
240 Create a 32-bit executable on 64-architectures like x86_64. This
fb5eae8 @jkeenan POD formatting corrections only.
jkeenan authored
241 option appends C<-m32> to compiler and linker programs and does
242 C<s/lib64/lib/g> on link flags.
2ddc05f [config] New Configure.pl option --m=32
Leopold Toetsch authored
243
244 This option is experimental. See F<config/init/defaults.pm> for more.
245
62c60b6 really speed up oo1.pasm by 2
Leopold Toetsch authored
246 =item C<--profile>
247
248 Turn on profiled compile (gcc only for now)
249
efd9dcb @paultcochrane Added --cage option. Part of patch (#39802) courtesy of Kevin Tew
paultcochrane authored
250 =item C<--cage>
251
252 [CAGE] compile includes many additional warnings
253
756762f *** empty log message ***
Michael Scott authored
254 =item C<--optimize>
9d000b4 Made the changes to figure out mask bits for various register and stack
Dan Sugalski authored
255
fb5eae8 @jkeenan POD formatting corrections only.
jkeenan authored
256 Add Perl 5's C<$Config{optimize}> to the compiler flags.
2fc8aec @bschmalhofer This patch makes it easier to compile parrot with a compiler other than
bschmalhofer authored
257
258 =item C<--optimize=flags>
259
260 Add C<flags> to the compiler flags.
756762f *** empty log message ***
Michael Scott authored
261
262 =item C<--inline>
263
264 Tell Configure that the compiler supports C<inline>.
265
266 =item C<--cc=(compiler)>
267
5792dce @jkeenan Add entry for '--cxx' to help.
jkeenan authored
268 Specify which C compiler to use.
269
270 =item C<--cxx=(compiler)>
271
272 Specify which C++ compiler to use.
756762f *** empty log message ***
Michael Scott authored
273
274 =item C<--ccflags=(flags)>
275
276 Use the given compiler flags.
277
278 =item C<--ccwarn=(flags)>
279
280 Use the given compiler warning flags.
281
282 =item C<--libs=(libs)>
283
284 Use the given libraries.
285
286 =item C<--link=(linker)>
287
288 Specify which linker to use.
289
290 =item C<--linkflags=(flags)>
291
292 Use the given linker flags
293
d716b34 @plobsing add --ar and --arflags options to Configure.pl
plobsing authored
294 =item C<--ar=(archiver)>
295
296 Specify which librarian to use for static libraries
297
298 =item C<--arflags=(flags)>
299
300 Use the given librarian flags for static libraris
301
756762f *** empty log message ***
Michael Scott authored
302 =item C<--ld=(linker)>
303
304 Specify which loader to use for shared libraries.
305
306 =item C<--ldflags=(flags)>
307
308 Use the given loader flags for shared libraries
309
110c52f @allisonrandal [build] Add a --disable-rpath option to allow Linux packagers to build
allisonrandal authored
310 =item C<--disable-rpath>
311
312 Specify that rpath should not be included in linking flags. With this
313 configuration option, you must append the library build directory
314 (usually blib/lib) to the LD_LIBRARY_PATH environment variable (or your
315 platform equivalent). This option is primarily used for building Linux
316 packages.
317
756762f *** empty log message ***
Michael Scott authored
318 =item C<--lex=(lexer)>
319
320 Specify which lexer to use.
321
322 =item C<--yacc=(parser)>
323
324 Specify which parser to use.
0846288 various patches 2
Leopold Toetsch authored
325
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
326 =item C<--define=val1[,val2]>
327
6f5b538 @jhoblitt podtidy configure files
jhoblitt authored
328 Generate "#define PARROT_DEF_VAL1 1" ... entries in has_header.h. Currently
329 needed to use inet_aton for systems that lack inet_pton:
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
330
331 --define=inet_aton
332
a4c21ab @jkeenan Applying patch supplied by bsdz in https://trac.parrot.org/parrot/tic…
jkeenan authored
333 =item C<--no-line-directives>
334
335 Disables the creation of C #line directives when generating C from PMCs and
336 ops. Useful when debugging internals.
3b2baf4 @coke Remove trailing whitespace
coke authored
337
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
338 =back
339
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
340 =head2 Parrot Options
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
341
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
342 =over 4
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
343
756762f *** empty log message ***
Michael Scott authored
344 =item C<--intval=(type)>
345
346 Use the given type for C<INTVAL>.
347
348 =item C<--floatval=(type)>
349
350 Use the given type for C<FLOATVAL>.
351
352 =item C<--opcode=(type)>
353
354 Use the given type for opcodes.
355
356 =item C<--ops=(files)>
357
358 Use the given ops files.
359
5a9e89c [PATCH] runConfigureICU usage
Leopold Toetsch authored
360 =back
361
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
362 =head2 International Components For Unicode (ICU) Options
5a9e89c [PATCH] runConfigureICU usage
Leopold Toetsch authored
363
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
364 =over 4
5a9e89c [PATCH] runConfigureICU usage
Leopold Toetsch authored
365
acf4fa4 autodetect and use system icu installations
Jens Rieks authored
366 =item C<--icu-config=/path/to/icu-config>
367
73ba72d [perl #36057] [PATCH] Fix some typos - 5
Leopold Toetsch authored
368 Use the specified icu-config script to determine the necessary ICU options.
acf4fa4 autodetect and use system icu installations
Jens Rieks authored
369
6f5b538 @jhoblitt podtidy configure files
jhoblitt authored
370 Use --icu-config=none to disable the autodetect feature. Parrot will then be
371 build without ICU.
acf4fa4 autodetect and use system icu installations
Jens Rieks authored
372
6f5b538 @jhoblitt podtidy configure files
jhoblitt authored
373 B<Note:> If you specify another ICU option than --icu-config, the autodetection
374 functionality will be disabled.
a194975 - removed error message if icu-config does not exists
Jens Rieks authored
375
dacbc40 ICU config patch - use systems ICU
Leopold Toetsch authored
376 =item C<--icushared=(linkeroption)>
377
5ec035c Config cleanup - icu
Leopold Toetsch authored
378 Linker command to link against ICU library.
dacbc40 ICU config patch - use systems ICU
Leopold Toetsch authored
379
380 E.g.
381
382 --icushared='-L /opt/openoffice/program -licudata -licuuc'
383
384 (The libs in openoffice are actually version 2.2 and do not work)
385
386 =item C<--icuheaders=(header_dir)>
387
6f5b538 @jhoblitt podtidy configure files
jhoblitt authored
388 Location of ICU header files without the /unicode suffix.
dacbc40 ICU config patch - use systems ICU
Leopold Toetsch authored
389
390 E.g.
391
392 --icuheaders='/home/lt/icu/'
393
756762f *** empty log message ***
Michael Scott authored
394 =back
395
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
396 =head2 Other Options
205f653 @brentdax Win32 compatibility, Configure hints, 5.005 compatibility, MANIFEST c…
brentdax authored
397
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
398 =over 4
a3cd162 Build enhancements. Originally to support building shared libraries, …
Gregor N. Purdy authored
399
b4b718e Update configuration system documentation (based on patches provided …
Michael Scott authored
400 =item C<--maintainer>
43a606a This patch allows parrot to mostly-build with tcc. It allows one to …
Dan Sugalski authored
401
6f5b538 @jhoblitt podtidy configure files
jhoblitt authored
402 Use this option if you want imcc's parser and lexer files to be generated.
403 Needs a working parser and lexer.
9d000b4 Made the changes to figure out mask bits for various register and stack
Dan Sugalski authored
404
370a418 @cotto Introduce --with-llvm option to explicitly link to LLVM
cotto authored
405 =item C<--with-llvm>
406
407 Use this option if you have a recent version of LLVM installed and wish Parrot
408 to link to it.
409
0fc6ac6 @brentdax Configure.pl 2.0.
brentdax authored
410 =back
a3cd162 Build enhancements. Originally to support building shared libraries, …
Gregor N. Purdy authored
411
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
412 =head1 CONFIGURATION-FILE INTERFACE
413
414 In the Configuration-File interface, unlike the Command-Line interface, you
415 may delete configuration steps or run them in an order different from that
416 listed in Parrot::Configure::Step::List.
417
418 A configuration file is a plain-text file located somewhere in or under your
419 top-level Parrot directory. Unless indicated otherwise, all lines in this
420 file must have no leading whitespace. As in Perl 5, lines beginning with C<#>
421 marks are comments and are ignored during parsing of the file. Unlike Perl 5,
422 you may not begin comments in the middle of a line.
423
424 The configuration file must contain these three sections:
425
426 =over 4
427
428 =item * variables
429
430 =over 4
431
432 =item *
433
434 Section begins with line C<=variables> and must be followed by at least one
435 blank line. All other content in this section is optional.
436
437 =item *
438
439 Section may contain one or more I<key=value> pairs which assign strings to
440 variables much in the way that you would do in a shell script wrapping around
441 F<Configure.pl>.
442
443 =variables
444
445 CC=/usr/bin/gcc
446 CX=/usr/bin/g++
447
448 So if you typically invoked F<Configure.pl> by wrapping it in a shell script
449 for the purpose of setting environmental variables used in options, like this:
450
451 CC="/usr/bin/gcc"
452 CX="/usr/bin/g++"
453 /usr/local/bin/perl Configure.pl \
454 --cc="$CC" \
455 --link="$CX" \
456 --ld="$CX"
457
458 ... you would now place the assignments to C<CC> and C<CX> in the
459 I<=variables> section of the configuration file (as above).
460
9691780 @jkeenan Modify documentation re file-based configuration to respond to proble…
jkeenan authored
461 In addition, should you wish to use an option whose value contains whitespace
f7cc9f9 @jkeenan [configure] Provide an additional pattern by which an entry in the 'g…
jkeenan authored
462 and would, if presented on the command-line, require quoting, you may
9691780 @jkeenan Modify documentation re file-based configuration to respond to proble…
jkeenan authored
463 assign that string to a variable and then use the variable in the C<general>
464 section below.
465
466 LONGLONG=long long
467
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
468 =back
469
470 =item * general
471
472 =over 4
473
474 =item *
475
476 Section begins with line C<=general> and must be followed by at least one
477 blank line. All other content in this section is optional.
478
479 =item *
480
481 This section is the location recommended for listing options whose impact is
482 not conceptually limited to a single step. It is also the location where the
483 variables defined in the I<=variables> section are assigned to particular
484 Parrot configuration options. Entries in this section must be either
485 I<option=value> pairs or be options which will be assigned a true value.
486
487 cc=$CC
488 link=$CX
489 ld=/usr/bin/g++
490 verbose
491
492 Note that when the value is a variable defined in the I<=variables> section,
493 it must be preceded by a C<$> sign.
494
9691780 @jkeenan Modify documentation re file-based configuration to respond to proble…
jkeenan authored
495 intval=$LONGLONG
496
f7cc9f9 @jkeenan [configure] Provide an additional pattern by which an entry in the 'g…
jkeenan authored
497 Alternatively, if assignment of a value to an option on the command-line would
498 require quoting due to the presence of whitespace in the value, you may assign
499 it to a value in the I<=general> section by double-quoting the value.
500
501 intval="long long"
502
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
503 =item *
504
505 You I<may> list options here which are I<conceptually> limited to a single
506 configuration step. For example, if you wished to skip validation of the
507 F<MANIFEST> during configuration and to configure without ICU, you I<could>,
508 in this section, say:
509
510 nomanicheck
511 without-icu
512
513 However, as we shall quickly see, it's conceptually clearer to place these
514 values next to those configuration steps that actually use them.
515
516 =back
517
518 =item * steps
519
520 =over 4
521
522 =item *
523
524 Section begins with line C<=steps> and must be followed by at least one
525 blank line, in turn followed by the list of configuration steps, followed by
526 another blank line followed by a line C<=cut> (just like POD).
527
528 =item *
529
530 The order in which you list the steps is the order in which they will be
531 executed. If you delete a step from the canonical list or comment a step out,
532 it will not be executed.
533
534 ...
535 auto::snprintf
536 # auto::perldoc
537 auto::ctags
538 ...
539
540 In the above example, step C<auto::perldoc> will be completely skipped. You
541 will not see it listed as C<....skipped> in F<Configure.pl>'s output; it will
542 simply not be there at all.
543
544 =item *
545
546 This is the recommended location to call options whose impact is
547 I<conceptually> limited to a single configuration step. Type the
548 configuration step's name, type a whitespace, type the option (with no leading
549 C<-->) and repeat as needed for additional step-specific options.
550
551 init::manifest nomanicheck
552 ...
553
554 =item *
555
556 This is also the location to call options whose impact is limited to one step
557 at a time but which may be applied to more than one configuration step. The
558 C<fatal-step> and C<verbose-step> options are the best examples of this case.
559 Rather than requesting verbose output from all configuration steps, you may,
560 for example, wish to designate only a few steps for verbose output:
561
562 ...
563 init::hints verbose-step
067bf3a @coke remove init::headers config step
coke authored
564 ...
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
565 inter::progs fatal-step
566 ...
567 auto::gcc verbose-step
568 ...
569
570 In the above example, F<Configure.pl> will grind to a halt if C<inter::progs>
571 does not complete successfully. You will get verbose output only from
572 C<init::hints> and C<auto::gcc>; the other 60+ steps will be terse.
573
574 =item *
575
576 Nothing prevents you from listing general options anywhere in this section.
577
578 init::manifest nomanicheck cc=$CC ld=/usr/bin/g++ verbose
579 init::defaults
580 ...
581
582 That will work -- but why would you want to do something that messy?
583
584 =back
585
586 =back
587
588 =head2 Example
589
590 Ignoring leading whitespace, this is an example of a correctly formed
591 configuration file.
592
593 =variables
594
595 CC=/usr/bin/gcc
596 CX=/usr/bin/g++
597
598 =general
599
600 cc=$CC
601 link=$CX
602 ld=/usr/bin/g++
603
604 =steps
605
606 init::manifest nomanicheck
607 init::defaults
608 init::install
609 init::hints verbose-step
610 inter::progs
611 inter::make
612 inter::lex
613 inter::yacc
614 auto::gcc
615 auto::glibc
616 auto::backtrace
617 auto::fink
618 auto::macports
619 auto::msvc
620 auto::attributes
621 auto::warnings
622 init::optimize
623 inter::shlibs
624 inter::libparrot
625 inter::types
626 auto::ops
627 auto::alignptrs
628 auto::headers
629 auto::sizes
630 auto::byteorder
631 auto::va_ptr
632 auto::format
633 auto::isreg
634 auto::arch
635 auto::jit
636 auto::cpu
637 auto::inline
638 auto::gc
639 auto::memalign
640 auto::signal
641 auto::socklen_t
642 auto::env
643 auto::gmp
644 auto::readline
645 auto::pcre
646 auto::opengl
647 auto::gettext
648 auto::snprintf
649 # auto::perldoc
650 auto::ctags
651 auto::revision
652 auto::icu
59fec7a @nwellnhof Move platform code from config to src
nwellnhof authored
653 auto::platform
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
654 gen::config_h
655 gen::core_pmcs
656 gen::opengl
657 gen::makefiles
658 gen::config_pm
659
660 =cut
661
662 You may see how this works in practice by calling:
663
c2f7ada @jkeenan Revise Configure.pl POD and other docs to reflect file movement.
jkeenan authored
664 perl Configure.pl --file=examples/config/file/configcompiler
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
665
666 or
667
c2f7ada @jkeenan Revise Configure.pl POD and other docs to reflect file movement.
jkeenan authored
668 perl Configure.pl --file=examples/config/file/configwithfatalstep
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interf…
jkeenan authored
669
c9264be more config system add ons and docs
Leopold Toetsch authored
670 =head1 SEE ALSO
671
e478ac7 @jkeenan Merge fileconf branch into trunk per
jkeenan authored
672 F<lib/Parrot/Configure.pm>,
c9264be more config system add ons and docs
Leopold Toetsch authored
673 F<lib/Parrot/Configure/Step.pm>, F<docs/configuration.pod>
674
756762f *** empty log message ***
Michael Scott authored
675 =cut
aeeafc5 @brentdax Mention where all the files went.
brentdax authored
676
b91d268 @bschmalhofer #40278: [CAGE] perl coding standards coda.
bschmalhofer authored
677 # Local Variables:
678 # mode: cperl
679 # cperl-indent-level: 4
680 # fill-column: 100
681 # End:
682 # vim: expandtab shiftwidth=4:
25830bb @jkeenan Applying patch submitted in
jkeenan authored
683
Something went wrong with that request. Please try again.