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,
 

Reply via email to