This organizes PIR files into the pir/ directory, which allows it to compile on OS X
[parrot-plumage:kid51-parrot-plumage.git] / Configure.nqp
1 # Purpose: Use Parrot's config info to configure our Makefile.
2 #
3 # Usage:
4 #     parrot_nqp Configure.nqp [input_makefile [output_makefile]]
5 #
6 # input_makefile  defaults to 'Makefile.in';
7 # output_makefile defaults to 'Makefile'.
8
9 our @ARGS;
10 our %VM;
11 our $OS;
12
13 MAIN();
14
15 sub MAIN () {
16     # Load Parrot config and glue functions
17     load_bytecode('pir/Glue.pir');
18
19     # Slurp in the unconfigured Makefile text
20     my $unconfigured := slurp(@ARGS[0] || 'Makefile.in');
21
22     # Replace all of the @foo@ markers
23     my $replaced := subst($unconfigured, '\@<ident>\@', replacement);
24
25     # Fix paths on Windows
26     if ($OS eq 'MSWin32') {
27         $replaced := subst($replaced, '/', '\\');
28     }
29
30     # Spew out the final makefile
31     spew(@ARGS[1] || 'Makefile', $replaced);
32
33     # Give the user a hint of next action
34     say("Configure completed for platform '" ~ $OS ~ "'.");
35     say("You probably want to run '" ~ %VM<config><make> ~ "' next.");
36 }
37
38 sub replacement ($match) {
39     my $key    := $match<ident>;
40     my $config := %VM<config>{$key} || '';
41
42     return $config;
43 }