Hi,
You've built your Perl with -nostdinc - which is, I believe, a suggested
option by Apple. This means exception header files are not in the
include path when you build.
You need to:
Install ExtUtils::FakeConfig
Put the attached Config_osx.pm in your @INC somewhere.
Then,
perl -MConfig_osx Makefile.PL
make
make test
should work for you with the Wx source.
Mark
On 21/03/2010 21:52, Erik Colson wrote:
On 21 Mar 2010, at 22:21, Mark Dootson wrote:
Looks like you don't have required versions of ExtUtils::XSpp and
ExtUtils::ParseXS installed.
Hi Mark,
Corrected that, but now I get this error on en on for a bunch of lines
RichText.c
mini:Wx-0.9701 ec$ make
/usr/local/bin/perl script/make_v_cback.pl> cpp/v_cback_def.h
/usr/local/bin/perl script/copy_files.pl files.lst
cp cpp/overload.h blib/lib/Wx/cpp/overload.h
cp cpp/wxapi.h blib/lib/Wx/cpp/wxapi.h
cp cpp/constants.h blib/lib/Wx/cpp/constants.h
cp cpp/helpers.h blib/lib/Wx/cpp/helpers.h
cp cpp/setup.h blib/lib/Wx/cpp/setup.h
cp cpp/v_cback_def.h blib/lib/Wx/cpp/v_cback_def.h
cp cpp/streams.h blib/lib/Wx/cpp/streams.h
cp cpp/chkconfig.h blib/lib/Wx/cpp/chkconfig.h
cp cpp/compat.h blib/lib/Wx/cpp/compat.h
cp Opt blib/arch/Wx/build/Opt.pm
cp cpp/v_cback.h blib/lib/Wx/cpp/v_cback.h
cp cpp/event.h blib/lib/Wx/cpp/event.h
cp typemap blib/lib/Wx/typemap
cp cpp/e_cback.h blib/lib/Wx/cpp/e_cback.h
touch copy_files
cp lib/Wx/Event.pm blib/lib/Wx/Event.pm
cp build/Wx/build/MakeMaker/Win32_MinGW.pm
blib/lib/Wx/build/MakeMaker/Win32_MinGW.pm
cp build/Wx/build/MakeMaker.pm blib/lib/Wx/build/MakeMaker.pm
cp build/Wx/Overload/Driver.pm blib/lib/Wx/Overload/Driver.pm
cp build/Wx/Overload/Handle.pm blib/lib/Wx/Overload/Handle.pm
cp lib/Wx/App.pm blib/lib/Wx/App.pm
cp build/Wx/build/MakeMaker/Hacks.pm blib/lib/Wx/build/MakeMaker/Hacks.pm
cp lib/Wx/Mini.pm blib/lib/Wx/Mini.pm
cp build/Wx/build/MakeMaker/Any_wx_config.pm
blib/lib/Wx/build/MakeMaker/Any_wx_config.pm
cp build/Wx/build/MakeMaker/Core.pm blib/lib/Wx/build/MakeMaker/Core.pm
cp lib/Wx/Timer.pm blib/lib/Wx/Timer.pm
cp build/Wx/build/Options.pm blib/lib/Wx/build/Options.pm
cp lib/Wx/Locale.pm blib/lib/Wx/Locale.pm
cp build/Wx/build/Utils.pm blib/lib/Wx/build/Utils.pm
cp lib/Wx/Api.pod blib/lib/Wx/Api.pod
cp build/Wx/build/MakeMaker/MacOSX_GCC.pm
blib/lib/Wx/build/MakeMaker/MacOSX_GCC.pm
cp lib/Wx/Thread.pod blib/lib/Wx/Thread.pod
cp lib/Wx/ArtProvider.pm blib/lib/Wx/ArtProvider.pm
cp lib/Wx/Loader.pod blib/lib/Wx/Loader.pod
cp build/Wx/build/MakeMaker/Any_OS.pm blib/lib/Wx/build/MakeMaker/Any_OS.pm
cp lib/Wx/RadioBox.pm blib/lib/Wx/RadioBox.pm
cp lib/Wx/Menu.pm blib/lib/Wx/Menu.pm
cp Wx.pm blib/lib/Wx.pm
cp build/Wx/build/MakeMaker/Win32.pm blib/lib/Wx/build/MakeMaker/Win32.pm
cp build/Wx/build/MakeMaker/Win32_MSVC.pm
blib/lib/Wx/build/MakeMaker/Win32_MSVC.pm
/usr/local/bin/perl script/wxperl_overload cpp/ovl_const.cpp cpp/ovl_const.h
overload.lst
Writing 'cpp/ovl_const.h'.
Writing 'cpp/ovl_const.cpp'.
touch overload
cp lib/Wx/RichText.pm ../../blib/lib/Wx/RichText.pm
/usr/local/bin/perl /usr/local/lib/perl5/5.10.1/ExtUtils/xsubpp -noprototypes
-nolinenumbers -typemap /usr/local/lib/perl5/5.10.1/ExtUtils/typemap -typemap
../../typemap -typemap typemap RichText.xs> RichText.xsc&& mv RichText.xsc
RichText.c
g++ -UWX_PRECOMP -c -I. -I../..
-I/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Alien/wxWidgets/mac_2_8_10_uni/lib/wx/include/mac-unicode-release-2.8
-I/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Alien/wxWidgets/mac_2_8_10_uni/include/wx-2.8
-fno-common -DPERL_DARWIN -no-cpp-precomp -nostdinc
-B/Developer/SDKs/MacOSX10.6.sdk/usr/include/gcc
-B/Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc
-isystem/Developer/SDKs/MacOSX10.6.sdk/usr/include
-F/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include -I/opt/local/include -nostdinc
-B/Developer/SDKs/MacOSX10.6.sdk//usr/include/gcc
-B/Developer/SDKs/MacOSX10.6.sdk//usr/lib/gcc
-isystem/Developer/SDKs/MacOSX10.6.sdk//usr/include
-F/Developer/SDKs/MacOSX10.6.sdk//System/Library/Frameworks -nostdinc
-B/Developer/SDKs/MacOSX10.6.sdk//usr/include/gcc
-B/Developer/SDKs/MacOSX10.6.sdk//usr/lib/gcc
-isystem/Developer/SDKs/MacOSX10.6.sdk//usr/include -F/Devel
oper/SDKs/MacOSX10.6.sdk//System/Library/Frameworks -O3 -DVERSION=\"0.01\"
-DXS_VERSION=\"0.01\" "-I/usr/local/lib/perl5/5.10.1/darwin-2level/CORE" -DWXPL_EXT
-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXMAC__ RichText.c
In file included from RichText.c:23:
../../cpp/wxapi.h:147:21: error: exception: No such file or directory
RichText.c: In function ‘void XS_Wx__RichTextEvent_GetFlags(CV*)’:
RichText.c:209: error: expected type-specifier
RichText.c:209: error: expected unqualified-id before ‘&’ token
RichText.c:209: error: expected `)' before ‘&’ token
RichText.c:209: error: expected `{' before ‘&’ token
RichText.c:209: error: ‘e’ was not declared in this scope
RichText.c:209: error: expected `;' before ‘)’ token
RichText.c:211: error: expected primary-expression before ‘catch’
RichText.c:211: error: expected `;' before ‘catch’
#!/usr/bin/perl -w
package Config_osx;
require ExtUtils::FakeConfig;
require Config;
my $ccflags = $Config::Config{ccflags};
my $cppflags = $Config::Config{cppflags};
my $cc = $Config::Config{cc};
my $ccname = $Config::Config{ccname};
my $ld = $Config::Config{ld};
my $cpp = $Config::Config{cpp};
my $cpprun = $Config::Config{cpprun};
my $cppstdin = $Config::Config{cppstdin};
my $lddlflags = $Config::Config{lddlflags};
my $ldflags = $Config::Config{ldflags};
my $flavour = (defined &ActivePerl::BUILD) ? 'activeperl' : 'standard';
my $osxver = get_osx_major_version();
# Remove -nostdinc option
unless(exists($ENV{FAKECONFIG_USE_NOSTDINC}) && $ENV{FAKECONFIG_USE_NOSTDINC}) {
$ccflags =~ s/-nostdinc //g;
$cppflags =~ s/-nostdinc //g;
}
# ActivePerl on Snow Leopard +
if(($flavour eq 'activeperl') && ( $osxver >= 10 ) ) {
$cc = 'gcc-4.0';
$ccname = 'gcc-4.0';
$ld = 'g++-4.0';
$cpp = 'gcc-4.0 -E';
$cpprun = 'gcc-4.0 -E';
$cppstdin = 'gcc-4.0 -E';
}
# Architectures
if(exists($ENV{FAKECONFIG_USE_ARCHITECTURES}) &&
$ENV{FAKECONFIG_USE_ARCHITECTURES}) {
my @arches = qw( ppc i386 x86_64 );
# arch in $ccflags, $lddlflags, $ldflags
for my $arch ( @arches ) {
# remove exisiting
$ccflags =~ s/-arch $arch //g;
$ldflags =~ s/-arch $arch //g;
$lddlflags =~ s/-arch $arch //g;
# add required
if( $ENV{FAKECONFIG_USE_ARCHITECTURES} =~ /$arch/ ) {
print qq(Using architecture $arch\n);
$ccflags = qq(-arch $arch ) . $ccflags;
$ldflags = qq(-arch $arch ) . $ldflags;
$lddlflags = qq(-arch $arch ) . $lddlflags;
}
}
}
my %values =
( cc => $cc,
ccflags => $ccflags,
cppflags => $cppflags,
ccname => $ccname,
ld => $ld,
cpp => $cpp,
cpprun => $cpprun,
cppstdin => $cppstdin,
lddlflags => $lddlflags,
ldflags => $ldflags,
);
ExtUtils::FakeConfig->import( %values );
sub get_osx_major_version {
my $verstr = `uname -r`;
if( $verstr =~ /^(\d+)/ ) {
return $1;
} else {
die qq(Could not determine OSX version number);
}
}
1;
__DATA__
=head1 NAME
Config_osx - compile Mac OS X modules without '-nostdinc' flag
=head1 SYNOPSIS
perl -MConfig_osx Makefile.PL
make
make test
make install
with CPAN.pm/CPANPLUS.pm
set PERL5OPT=-MConfig_osx
cpanp
=head1 DESCRIPTION
This module is only useful at Makefile.PL invocation time. It modifies
some %Config values allowing compilation of Perl XS modules without passing
the '-nostdinc' flag. For current versions of ActivePerl, will also set
the required compiler version (gcc-4.0).
You may override the -nostdinc exclusion by setting environment variable
export FAKECONFIG_USE_NOSTDINC=1
The module also allows you to specify which architectures should be built
by setting the environment variable FAKECONFIG_USE_ARCHITECTURES.
Allowed architectures are ppc, i386, x86_64
For example, to specify universal 32 bit binaries
export FAKECONFIG_USE_ARCHITECTURES="i386 ppc"
to specify combined 32 and 64bit intel binaries
export FAKECONFIG_USE_ARCHITECTURES="i386 x86_64"
=head1 AUTHOR
Mark Dootson <mdoot...@cpan.org>
=cut