# New Ticket Created by Geoffrey Broadwell # Please include the string: [perl #55978] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=55978 >
The attached patch is courtesy of donaldh++. It has been tested on cygwin and Debian/i686. Please someone test on Mac OS X, so that I can commit it. -'f
Index: src/dynext.c =================================================================== --- src/dynext.c (revision 28459) +++ src/dynext.c (working copy) @@ -276,12 +276,10 @@ /* And on cygwin replace a leading "lib" by "cyg". */ #ifdef __CYGWIN__ if (!STRING_IS_EMPTY(lib) && memcmp(lib->strstart, "lib", 3) == 0) { - strcpy(path->strstart, lib->strstart); + path = string_append(interp, + string_from_cstring(interp, "cyg", 3), + string_substr(interp, lib, 3, lib->strlen - 3, NULL, 0)); - path->strstart[0] = 'c'; - path->strstart[1] = 'y'; - path->strstart[2] = 'g'; - *handle = Parrot_dlopen(path->strstart); if (*handle) Index: lib/Parrot/Configure/Step/Methods.pm =================================================================== --- lib/Parrot/Configure/Step/Methods.pm (revision 28459) +++ lib/Parrot/Configure/Step/Methods.pm (working copy) @@ -198,7 +198,8 @@ my $args = shift; croak "_add_to_libs() takes hashref: $!" unless ref($args) eq 'HASH'; my $platform = - ($args->{osname} =~ /mswin32/i && + (($args->{osname} =~ /mswin32/i || + $args->{osname} =~ /cygwin/i) && $args->{cc} =~ /^gcc/i) ? 'win32_gcc' : $args->{osname} =~ /mswin32/i ? 'win32_nongcc' : $args->{osname} =~ /darwin/i ? 'darwin' Index: config/gen/opengl.pm =================================================================== --- config/gen/opengl.pm (revision 28459) +++ config/gen/opengl.pm (working copy) @@ -410,6 +410,9 @@ '/System/Library/Frameworks/OpenGL.framework/Headers/*.h', '/System/Library/Frameworks/GLUT.framework/Headers/*.h', + # Cygwin + '/usr/include/w32api/GL/*.h', + # Windows/MSVC (map "$_/gl/*.h" => @include_paths_win32), @@ -444,11 +447,19 @@ # "$ENV{HOME}/src/osx-insane/usr/X11R6 1/include/GL/*.h", ); + print "\nChecking for OpenGL headers using the following globs:\n\t", + join("\n\t", @header_globs), "\n" + if $verbose; + my @header_files = sort map {File::Glob::bsd_glob($_)} @header_globs; my %skip = map {($_ => 1)} @SKIP; @header_files = grep {my ($file) = m{([^/]+)$}; !$skip{$file}} @header_files; + print "\nFound the following OpenGL headers:\n\t", + join("\n\t", @header_files), "\n" + if $verbose; + die "OpenGL enabled and detected, but no OpenGL headers found!" unless @header_files;