This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
s/ar rcu/ar rc/ during linking
[perl5.git] / Cross / generate_config_sh
CommitLineData
6a809565
JH
1#!/usr/bin/perl
2
3##############################################################################
4#
136febd5
JH
5# generate_config_sh
6# Process that takes an automatically generated config.sh
7# file and allows the environment to overload the values
8# automatically discovered by Configure on our target platform.
6a809565 9#
136febd5 10# Author Redvers Davies <red@criticalintegration.com>
6a809565
JH
11#
12##############################################################################
13
14my $config = shift;
15
16my $sys = $ENV{SYS};
17
18my $callbacks = {};
19$callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]];
20$callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
21$callbacks->{'cc'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
22$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
23$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
24$callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
25$callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
26$callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
27$callbacks->{'cpp'} = [\&simple_process, ["CCP", "arm-linux-cpp"]];
28$callbacks->{'cppflags'} = [\&simple_process, ["CCPFLAGS", "-fno-strict-aliasing"]];
29$callbacks->{'cpprun'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
30$callbacks->{'cppstdin'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
31$callbacks->{'full_ar'} = [\&backtick, ["AR", "which $ENV{AR}", "/usr/local/arm/2.95.3/bin/arm-linux-ar"]];
32$callbacks->{'ld'} = [\&simple_process, ["LD", "arm-linux-ld"]];
33$callbacks->{'ldflags'} = [\&simple_process, ["LDFLAGS", ""]];
34$callbacks->{'ldflags_uselargefiles'} = [\&simple_process, ["LDFLAGS", ""]];
35$callbacks->{'myarchname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
36$callbacks->{'archlib'} = [\&library_munge, ["SYS", "armv4l-linux"]];
37$callbacks->{'archlibexp'} = [\&library_munge, ["SYS", "armv4l-linux"]];
38$callbacks->{'installarchlib'} = [\&library_munge, ["SYS", "armv4l-linux"]];
39$callbacks->{'installsitearch'} = [\&library_munge, ["SYS", "armv4l-linux"]];
40$callbacks->{'sitearch'} = [\&library_munge, ["SYS", "armv4l-linux"]];
41$callbacks->{'sitearchexp'} = [\&library_munge, ["SYS", "armv4l-linux"]];
42
43if ($config eq "") {
44 die("Please run me as generate_config_sh path/to/original/config.sh");
45}
46
47open(FILE, "$config") || die("Unable to open $config");
48
49my $line_in;
50while ($line_in = <FILE>) {
51 if ($line_in =~ /^#/) {
52 next;
53 }
54
55 if ($line_in !~ /./) {
56 next;
57 }
58
59 $line_in =~ /^([^=]+)=(.*)/;
60 my $key = $1;
61 my $value = $2;
62 if (ref($callbacks->{$key}) eq "ARRAY") {
63 ($callbacks->{$key}[0])->($key,$value);
64 } else {
65 print($line_in);
66 }
67}
68
69sub backtick {
70 my $key = shift;
71 my $value = shift;
72 my $envvar = $callbacks->{$key}->[1][0];
73
74 if ($ENV{$envvar}) {
75 my $rawtext = `$callbacks->{$key}->[1][1]`;
76 chomp($rawtext);
77 print("$key=\'$rawtext\'\n");
78 } else {
79 print("$key=\'$callbacks->{$key}->[1][2]\'\n");
80 }
81}
82
83
84sub simple_process {
85 my $key = shift;
86 my $envvar = $callbacks->{$key}->[1][0];
87
88 if ($ENV{$envvar}) {
89 print("$key=\"$ENV{$envvar}\"\n");
90 } else {
91 print("$key=\'$callbacks->{$key}->[1][1]\'\n");
92 }
93
94}
95
96sub simple_process_append {
97 my $key = shift;
98 my $envvar = $callbacks->{$key}->[1][0];
99
100 if ($ENV{$envvar}) {
101 print("$key=\"$ENV{$envvar} $callbacks->{$key}->[1][2]\"\n");
102 } else {
103 print("$key=\'$callbacks->{$key}->[1][1]\'\n");
104 }
105
106}
107
108sub library_munge {
109 my $key = shift;
110 my $value = shift;
111 my $envvar = $callbacks->{$key}->[1][0];
112
113 if ($ENV{$envvar}) {
114 $value =~ s/$callbacks->{$key}->[1][1]/$ENV{$envvar}/g;
115 print("$key=$value\n");
116 } else {
117 print("$key=$value\n");
118 }
119
120}
121
e42fa77b
JH
122
123
124
125
126
127
128
129
130
131
132