The attached patch removes '-flat_namespace' and consistently uses
'-undefined dynamic_lookup'. It also restricts the changes to just the
darwin config hints file, which seems like a more appropriate place. It
resolves all the test failures related to undefined symbols on OS X.
(t/src/intlist.t is still failing the 4th test, but it fails the same
way on Linux when I unTODO it.) It also runs 'make perl6' without errors.
If you're running some flavor of OS X, please test this patch. (Let me
know if you're running a version before 10.3. It was released October
2003, which is significantly before our "versions released in the past 2
years" cutoff of support for the 1.0 release of Parrot.)
I've wanted to get rid of the '-flat_namespace' hack for a long time now.
Index: config/init/hints/darwin.pm
===================================================================
--- config/init/hints/darwin.pm (revision 25264)
+++ config/init/hints/darwin.pm (working copy)
@@ -24,9 +24,6 @@
my $lib_dir = $conf->data->get('build_dir') . "/blib/lib";
$ldflags .= " -L$lib_dir";
$ccflags .= " -pipe -fno-common -Wno-long-double ";
- $ccflags =~ s/-flat_namespace\s*//;
- $ldflags =~ s/-flat_namespace\s*//;
- $ldflags .= " -flat_namespace ";
$conf->data->set(
darwin => 1,
@@ -37,9 +34,10 @@
share_ext => '.dylib',
load_ext => '.bundle',
link => 'c++',
+ linkflags => '-undefined dynamic_lookup',
ld => 'c++',
- ld_share_flags => '-dynamiclib -undefined suppress',
- ld_load_flags => '-bundle -undefined suppress',
+ ld_share_flags => '-dynamiclib -undefined dynamic_lookup',
+ ld_load_flags => '-bundle -undefined dynamic_lookup',
memalign => 'some_memalign',
has_dynamic_linking => 1,