Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 669 lines (432 sloc) 15.445 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 perlcr...
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.pm ...
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 interface...
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 cal...
jkeenan authored
37 mode => (defined $ARGV[0] and $ARGV[0] =~ /^--file=/)
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
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.pm ...
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 interface...
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.pm ...
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 interface...
jkeenan authored
90 Configure.pl - Parrot's configuration script
a3cd162 Build enhancements. Originally to support building shared libraries, but...
Gregor N. Purdy authored
91
756762f *** empty log message ***
Michael Scott authored
92 =head1 SYNOPSIS
a3cd162 Build enhancements. Originally to support building shared libraries, but...
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 interface...
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, but...
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 by ...
Michael Scott authored
104
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
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 interface...
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 interface...
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 chec...
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 output f...
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 output f...
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 by ...
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 architect's...
jkeenan authored
170 This turns on the user prompts during configuration. Available only in
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
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 no l...
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 Fink ...
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 Fink ...
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 Fink ...
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, but...
Gregor N. Purdy authored
225
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
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 interface...
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 by ...
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 by ...
Michael Scott authored
330
331 --define=inet_aton
332
a4c21ab @jkeenan Applying patch supplied by bsdz in https://trac.parrot.org/parrot/ticket...
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 by ...
Michael Scott authored
338 =back
339
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
340 =head2 Parrot Options
b4b718e Update configuration system documentation (based on patches provided by ...
Michael Scott authored
341
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
342 =over 4
b4b718e Update configuration system documentation (based on patches provided by ...
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 interface...
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 interface...
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 interface...
jkeenan authored
396 =head2 Other Options
205f653 @brentdax Win32 compatibility, Configure hints, 5.005 compatibility, MANIFEST chec...
brentdax authored
397
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
398 =over 4
a3cd162 Build enhancements. Originally to support building shared libraries, but...
Gregor N. Purdy authored
399
b4b718e Update configuration system documentation (based on patches provided by ...
Michael Scott authored
400 =item C<--maintainer>
43a606a This patch allows parrot to mostly-build with tcc. It allows one to ski...
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, but...
Gregor N. Purdy authored
411
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
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
461 =back
462
463 =item * general
464
465 =over 4
466
467 =item *
468
469 Section begins with line C<=general> and must be followed by at least one
470 blank line. All other content in this section is optional.
471
472 =item *
473
474 This section is the location recommended for listing options whose impact is
475 not conceptually limited to a single step. It is also the location where the
476 variables defined in the I<=variables> section are assigned to particular
477 Parrot configuration options. Entries in this section must be either
478 I<option=value> pairs or be options which will be assigned a true value.
479
480 cc=$CC
481 link=$CX
482 ld=/usr/bin/g++
483 verbose
484
485 Note that when the value is a variable defined in the I<=variables> section,
486 it must be preceded by a C<$> sign.
487
488 =item *
489
490 You I<may> list options here which are I<conceptually> limited to a single
491 configuration step. For example, if you wished to skip validation of the
492 F<MANIFEST> during configuration and to configure without ICU, you I<could>,
493 in this section, say:
494
495 nomanicheck
496 without-icu
497
498 However, as we shall quickly see, it's conceptually clearer to place these
499 values next to those configuration steps that actually use them.
500
501 =back
502
503 =item * steps
504
505 =over 4
506
507 =item *
508
509 Section begins with line C<=steps> and must be followed by at least one
510 blank line, in turn followed by the list of configuration steps, followed by
511 another blank line followed by a line C<=cut> (just like POD).
512
513 =item *
514
515 The order in which you list the steps is the order in which they will be
516 executed. If you delete a step from the canonical list or comment a step out,
517 it will not be executed.
518
519 ...
520 auto::snprintf
521 # auto::perldoc
522 auto::ctags
523 ...
524
525 In the above example, step C<auto::perldoc> will be completely skipped. You
526 will not see it listed as C<....skipped> in F<Configure.pl>'s output; it will
527 simply not be there at all.
528
529 =item *
530
531 This is the recommended location to call options whose impact is
532 I<conceptually> limited to a single configuration step. Type the
533 configuration step's name, type a whitespace, type the option (with no leading
534 C<-->) and repeat as needed for additional step-specific options.
535
536 init::manifest nomanicheck
537 ...
538
539 =item *
540
541 This is also the location to call options whose impact is limited to one step
542 at a time but which may be applied to more than one configuration step. The
543 C<fatal-step> and C<verbose-step> options are the best examples of this case.
544 Rather than requesting verbose output from all configuration steps, you may,
545 for example, wish to designate only a few steps for verbose output:
546
547 ...
548 init::hints verbose-step
067bf3a @coke remove init::headers config step
coke authored
549 ...
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
550 inter::progs fatal-step
551 ...
552 auto::gcc verbose-step
553 ...
554
555 In the above example, F<Configure.pl> will grind to a halt if C<inter::progs>
556 does not complete successfully. You will get verbose output only from
557 C<init::hints> and C<auto::gcc>; the other 60+ steps will be terse.
558
559 =item *
560
561 Nothing prevents you from listing general options anywhere in this section.
562
563 init::manifest nomanicheck cc=$CC ld=/usr/bin/g++ verbose
564 init::defaults
565 ...
566
567 That will work -- but why would you want to do something that messy?
568
569 =back
570
571 =back
572
573 =head2 Example
574
575 Ignoring leading whitespace, this is an example of a correctly formed
576 configuration file.
577
578 =variables
579
580 CC=/usr/bin/gcc
581 CX=/usr/bin/g++
582
583 =general
584
585 cc=$CC
586 link=$CX
587 ld=/usr/bin/g++
588
589 =steps
590
591 init::manifest nomanicheck
592 init::defaults
593 init::install
594 init::hints verbose-step
595 inter::progs
596 inter::make
597 inter::lex
598 inter::yacc
599 auto::gcc
600 auto::glibc
601 auto::backtrace
602 auto::fink
603 auto::macports
604 auto::msvc
605 auto::attributes
606 auto::warnings
607 init::optimize
608 inter::shlibs
609 inter::libparrot
610 inter::types
611 auto::ops
612 auto::alignptrs
613 auto::headers
614 auto::sizes
615 auto::byteorder
616 auto::va_ptr
617 auto::format
618 auto::isreg
619 auto::arch
620 auto::jit
621 auto::cpu
622 auto::inline
623 auto::gc
624 auto::memalign
625 auto::signal
626 auto::socklen_t
627 auto::env
628 auto::gmp
629 auto::readline
630 auto::pcre
631 auto::opengl
632 auto::gettext
633 auto::snprintf
634 # auto::perldoc
635 auto::ctags
636 auto::revision
637 auto::icu
59fec7a @nwellnhof Move platform code from config to src
nwellnhof authored
638 auto::platform
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
639 gen::config_h
640 gen::core_pmcs
641 gen::opengl
642 gen::makefiles
643 gen::config_pm
644
645 =cut
646
647 You may see how this works in practice by calling:
648
c2f7ada @jkeenan Revise Configure.pl POD and other docs to reflect file movement.
jkeenan authored
649 perl Configure.pl --file=examples/config/file/configcompiler
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
650
651 or
652
c2f7ada @jkeenan Revise Configure.pl POD and other docs to reflect file movement.
jkeenan authored
653 perl Configure.pl --file=examples/config/file/configwithfatalstep
780cbd7 @jkeenan Merge newsc branch into trunk, implementing Configuration-File interface...
jkeenan authored
654
c9264be more config system add ons and docs
Leopold Toetsch authored
655 =head1 SEE ALSO
656
e478ac7 @jkeenan Merge fileconf branch into trunk per
jkeenan authored
657 F<lib/Parrot/Configure.pm>,
c9264be more config system add ons and docs
Leopold Toetsch authored
658 F<lib/Parrot/Configure/Step.pm>, F<docs/configuration.pod>
659
756762f *** empty log message ***
Michael Scott authored
660 =cut
aeeafc5 @brentdax Mention where all the files went.
brentdax authored
661
b91d268 @bschmalhofer #40278: [CAGE] perl coding standards coda.
bschmalhofer authored
662 # Local Variables:
663 # mode: cperl
664 # cperl-indent-level: 4
665 # fill-column: 100
666 # End:
667 # vim: expandtab shiftwidth=4:
25830bb @jkeenan Applying patch submitted in
jkeenan authored
668
Something went wrong with that request. Please try again.