summaryrefslogtreecommitdiff
path: root/Cross/generate_config_sh
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2003-04-21 16:24:36 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2003-04-21 16:24:36 +0000
commit6a809565f92f58eb2e23772b87ab5c4f45ee1dd0 (patch)
tree52b211eaf82fe28a744ae30c254ec94310953b30 /Cross/generate_config_sh
parent9c98058e3a5614fae5d400e2119d67d3c97a64d1 (diff)
downloadperl-6a809565f92f58eb2e23772b87ab5c4f45ee1dd0.tar.gz
Add OpenZaurus cross-compilation patches.
p4raw-id: //depot/perl@19297
Diffstat (limited to 'Cross/generate_config_sh')
-rwxr-xr-xCross/generate_config_sh131
1 files changed, 131 insertions, 0 deletions
diff --git a/Cross/generate_config_sh b/Cross/generate_config_sh
new file mode 100755
index 0000000000..4461b8c797
--- /dev/null
+++ b/Cross/generate_config_sh
@@ -0,0 +1,131 @@
+#!/usr/bin/perl
+
+##############################################################################
+#
+# Ok, so there is this buildsystem that has variables set in shell
+# like this:
+#
+# cc='gcc'
+#
+# This means we can go
+#
+# if test "${CC+set}" != set; then
+# ar='arm-linux-ar'
+# else
+# ar=${AR}
+# fi
+#
+# Right??? WRONG!
+#
+# Damn perl installation *PARSES* and *PATTERN MATCHES* this file.
+#
+##############################################################################
+
+my $config = shift;
+
+my $sys = $ENV{SYS};
+
+my $callbacks = {};
+$callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]];
+$callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
+$callbacks->{'cc'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
+$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+$callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+$callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+$callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
+$callbacks->{'cpp'} = [\&simple_process, ["CCP", "arm-linux-cpp"]];
+$callbacks->{'cppflags'} = [\&simple_process, ["CCPFLAGS", "-fno-strict-aliasing"]];
+$callbacks->{'cpprun'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
+$callbacks->{'cppstdin'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
+$callbacks->{'full_ar'} = [\&backtick, ["AR", "which $ENV{AR}", "/usr/local/arm/2.95.3/bin/arm-linux-ar"]];
+$callbacks->{'ld'} = [\&simple_process, ["LD", "arm-linux-ld"]];
+$callbacks->{'ldflags'} = [\&simple_process, ["LDFLAGS", ""]];
+$callbacks->{'ldflags_uselargefiles'} = [\&simple_process, ["LDFLAGS", ""]];
+$callbacks->{'myarchname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
+$callbacks->{'archlib'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'archlibexp'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'installarchlib'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'installsitearch'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'sitearch'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'sitearchexp'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+
+if ($config eq "") {
+ die("Please run me as generate_config_sh path/to/original/config.sh");
+}
+
+open(FILE, "$config") || die("Unable to open $config");
+
+my $line_in;
+while ($line_in = <FILE>) {
+ if ($line_in =~ /^#/) {
+ next;
+ }
+
+ if ($line_in !~ /./) {
+ next;
+ }
+
+ $line_in =~ /^([^=]+)=(.*)/;
+ my $key = $1;
+ my $value = $2;
+ if (ref($callbacks->{$key}) eq "ARRAY") {
+ ($callbacks->{$key}[0])->($key,$value);
+ } else {
+ print($line_in);
+ }
+}
+
+sub backtick {
+ my $key = shift;
+ my $value = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ my $rawtext = `$callbacks->{$key}->[1][1]`;
+ chomp($rawtext);
+ print("$key=\'$rawtext\'\n");
+ } else {
+ print("$key=\'$callbacks->{$key}->[1][2]\'\n");
+ }
+}
+
+
+sub simple_process {
+ my $key = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ print("$key=\"$ENV{$envvar}\"\n");
+ } else {
+ print("$key=\'$callbacks->{$key}->[1][1]\'\n");
+ }
+
+}
+
+sub simple_process_append {
+ my $key = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ print("$key=\"$ENV{$envvar} $callbacks->{$key}->[1][2]\"\n");
+ } else {
+ print("$key=\'$callbacks->{$key}->[1][1]\'\n");
+ }
+
+}
+
+sub library_munge {
+ my $key = shift;
+ my $value = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ $value =~ s/$callbacks->{$key}->[1][1]/$ENV{$envvar}/g;
+ print("$key=$value\n");
+ } else {
+ print("$key=$value\n");
+ }
+
+}
+