summaryrefslogtreecommitdiff
path: root/recipes/perl/files/letgcc-find-errno.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/perl/files/letgcc-find-errno.patch')
-rw-r--r--recipes/perl/files/letgcc-find-errno.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/recipes/perl/files/letgcc-find-errno.patch b/recipes/perl/files/letgcc-find-errno.patch
new file mode 100644
index 0000000000..24722ee964
--- /dev/null
+++ b/recipes/perl/files/letgcc-find-errno.patch
@@ -0,0 +1,42 @@
+This removes all the logic that perl uses to locate an appropriate
+errno.h for the target. Instead we simple create a file that does
+
+ #include "errno.h"
+
+and use that as the file to parse. This is needed when using an
+external toolchain since perl will search in ${STAGING_INCDIR} for
+errno.h (when using gcc) and that isn't where it's located - its
+wherever the external toolchain keeps it's headers.
+
+--- perl-5.8.8/ext/Errno/Errno_pm.PL 2007/04/30 14:10:10 1.1
++++ perl-5.8.8/ext/Errno/Errno_pm.PL 2007/04/30 14:21:35
+@@ -11,8 +11,18 @@
+ open OUT, ">Errno.pm" or die "Cannot open Errno.pm: $!";
+ select OUT;
+ my $file;
+-my @files = get_files();
+-if ($Config{gccversion} ne '' && $^O eq 'MSWin32') {
++#my @files = get_files();
++my @files = ("errno.h");
++
++if (1) {
++ open INCS, '>includes.c' or
++ die "Cannot open includes.c";
++ print INCS qq[#include "errno.h"\n];
++ close INCS;
++ process_file('includes.c');
++ unlink 'includes.c';
++}
++elsif ($Config{gccversion} ne '' && $^O eq 'MSWin32') {
+ # MinGW complains "warning: #pragma system_header ignored outside include
+ # file" if the header files are processed individually, so include them
+ # all in .c file and process that instead.
+@@ -44,7 +54,7 @@
+ chomp($file = `cygpath -w "$file"`);
+ }
+
+- return unless defined $file and -f $file;
++# return unless defined $file and -f $file;
+ # warn "Processing $file\n";
+
+ local *FH;