diff -rbu Tcl-1.02/Makefile.PL Tcl-1.02-fix/Makefile.PL --- Tcl-1.02/Makefile.PL Fri Feb 11 12:00:35 2011 +++ Tcl-1.02-fix/Makefile.PL Fri Jun 3 13:37:45 2011 @@ -196,6 +196,9 @@ if ($^O eq 'MSWin32') { $tclver=~s/\.//; $defs .= " -DTCL_LIB_FILE=\\\"tcl$tclver.dll\\\"" if $usestubs; + + # Use g++ if using strawberry perl + @extraargs = (CC => 'g++') if $^X =~ /strawberry/; } elsif ($^O eq 'freebsd') { $tclver=~s/\.//; @@ -272,11 +275,6 @@ } } -sub MY::libscan { - my($self, $path) =@_; - return '' if $path =~ /\.pl$/i; - return $path; -} BEGIN { # compatibility with older versions of MakeMaker @@ -299,3 +297,20 @@ ExtUtils::MakeMaker::WriteMakefile(%arg); }; } + +package MY; # so that "SUPER" works right +sub libscan { + my($self, $path) =@_; + return '' if $path =~ /\.pl$/i; + return $path; +} + +sub c_o { + my $inherited = shift->SUPER::c_o(@_); + + # Fix for strawberry perl build + $inherited =~ s/\bgcc\b/\$(CCCMD)/g if $^X =~ /strawberry/; + + $inherited; +} + diff -rbu Tcl-1.02/Tcl.xs Tcl-1.02-fix/Tcl.xs --- Tcl-1.02/Tcl.xs Fri Feb 11 12:00:35 2011 +++ Tcl-1.02-fix/Tcl.xs Fri Jun 3 13:35:09 2011 @@ -602,7 +602,7 @@ STRLEN len; char *s = SvPV(sv, len); char *end = s + len; - while ((nul_start = memchr(s, '\300', len))) { + while ((nul_start = (char*)memchr(s, '\300', len))) { if (nul_start + 1 < end && nul_start[1] == '\200') { /* found it */ nul_start[0] = '\0'; @@ -692,7 +692,7 @@ char *s = SvPV(sv_copy, len); char *nul; - while ((nul = memchr(s, '\0', len))) { + while ((nul = (char*)memchr(s, '\0', len))) { STRLEN i = nul - SvPVX(sv_copy); s = SvGROW(sv_copy, SvCUR(sv_copy) + 2); nul = s + i; @@ -979,8 +979,8 @@ MODULE = Tcl PACKAGE = Tcl PREFIX = Tcl_ SV * -Tcl__new(class = "Tcl") - char * class +Tcl__new(Class = "Tcl") + char * Class CODE: RETVAL = newSV(0); /* @@ -995,7 +995,7 @@ (void) hv_store(hvInterps, (const char *) &interp, sizeof(Tcl), &PL_sv_undef, 0); } - sv_setref_pv(RETVAL, class, (void*)interp); + sv_setref_pv(RETVAL, Class, (void*)interp); } OUTPUT: RETVAL