Nick Glencross wrote:

There seem to be a few recent events which can now trigger a newish problem:

<snip>

The real problem is that -L/usr/local/lib is brought in from parrot, so we have a few choices:

* Just remove -Ls brought in from 'lddflags', which seems safe to me, or
   * remove the -L and add it to another config var, or
* rearrange the flags in root.in so that LINKFLAGS is after ALL_PARROT_LIBS

I've attached two patches, one does the first, and the other the 3rd.

Both should solve the problem; so it probably comes down to aesthetics. I prefer just removing -Ls, and if any problems are encountered, introduce them later in linking (as with ICU).

I don't think that the same problem can occur with -Is, as CFLAGS introduces -I./include early.

Nick

Index: config/init/defaults.pm
===================================================================
--- config/init/defaults.pm     (revision 11315)
+++ config/init/defaults.pm     (working copy)
@@ -30,6 +30,18 @@
 {
     my ($self, $conf) = @_;
 
+    # Remove all -Lxxx entries from lddlflags
+    my $lddlflags = $Config{lddlflags};
+    $lddlflags =~ s/-L\s*[^\s]+//g;
+    $lddlflags =~ s/^\s+//;
+    $lddlflags =~ s/\s+$//;
+
+    # Remove all -Lxxx entries from ldflags
+    my $ldflags = $Config{ldflags};
+    $ldflags =~ s/-L\s*[^\s]+//g;
+    $ldflags =~ s/^\s+//;
+    $ldflags =~ s/\s+$//;
+
     # We need a Glossary somewhere!
     $conf->data->set(
         debugging => $conf->options->get('debugging') ? 1 : 0,
@@ -62,7 +74,7 @@
         # Perl5's Configure doesn't distinguish linking from loading, so
         # make a reasonable guess at defaults.
         link      => $Config{cc},
-        linkflags => $Config{ldflags},
+        linkflags => $ldflags,
 
         # Linker Flags to have this binary work with the shared and dynamically
         # loadable libraries we're building.  On HP-UX, for example, we need to
@@ -73,16 +85,16 @@
         # modules. Often $cc on Unix-ish systems, but apparently sometimes
         # it's ld.
         ld      => $Config{ld},
-        ldflags => $Config{ldflags},
+        ldflags => $ldflags,
 
         # Some operating systems (e.g. Darwin) distinguish between shared
         # libraries and modules that can be dynamically loaded.  Flags to tell
         # ld to build a shared library, e.g.  -shared for GNU ld.
-        ld_share_flags => $Config{lddlflags},
+        ld_share_flags => $lddlflags,
 
         # Flags to tell ld to build a dynamically loadable module, e.g.
         # -shared for GNU ld.
-        ld_load_flags     => $Config{lddlflags},
+        ld_load_flags     => $lddlflags,
 
         libs => $Config{libs},
 
Index: config/gen/makefiles/root.in
===================================================================
--- config/gen/makefiles/root.in        (revision 11299)
+++ config/gen/makefiles/root.in        (working copy)
@@ -702,23 +702,23 @@
 $(PARROT) : $(IMCC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
        lib/Parrot/OpLib/core.pm $(SRC_DIR)/parrot_config$(O) \
        $(MINIPARROT)
-       $(LINK) @[EMAIL PROTECTED]@ $(LINKFLAGS) $(LINK_DYNAMIC) \
-       $(IMCC_DIR)/main$(O) @rpath_blib@ $(ALL_PARROT_LIBS) \
+       $(LINK) @[EMAIL PROTECTED]@ $(LINK_DYNAMIC) \
+       $(IMCC_DIR)/main$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) \
        $(SRC_DIR)/parrot_config$(O)
 #
 # TODO build the real miniparrot
 #
 $(MINIPARROT) : $(IMCC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
        lib/Parrot/OpLib/core.pm $(SRC_DIR)/null_config$(O)
-       $(LINK) @[EMAIL PROTECTED]@ $(LINKFLAGS) $(IMCC_DIR)/main$(O) \
-       @rpath_blib@ $(ALL_PARROT_LIBS) $(SRC_DIR)/null_config$(O)
+       $(LINK) @[EMAIL PROTECTED]@ $(IMCC_DIR)/main$(O) \
+       @rpath_blib@ $(ALL_PARROT_LIBS) $(SRC_DIR)/null_config$(O) $(LINKFLAGS)
 
 $(INSTALLABLEPARROT) : $(IMCC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
        lib/Parrot/OpLib/core.pm $(SRC_DIR)/install_config$(O) \
        $(PARROT)
-       $(LINK) @[EMAIL PROTECTED]@ $(LINKFLAGS) \
+       $(LINK) @[EMAIL PROTECTED]@ \
        $(IMCC_DIR)/main$(O) \
-       $(ALL_PARROT_LIBS) $(SRC_DIR)/install_config$(O)
+       $(ALL_PARROT_LIBS) $(SRC_DIR)/install_config$(O) $(LINKFLAGS)
 
 $(SRC_DIR)/parrot_config.c :  runtime/parrot/include/config.fpmc \
        $(BUILD_TOOLS_DIR)/parrot_config_c.pl
@@ -789,12 +789,12 @@
 $(PDB) : $(SRC_DIR)/pdb$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pdb$(O) \
-       $(LINKFLAGS) @rpath_blib@ $(ALL_PARROT_LIBS)
+       @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 $(INSTALLABLEPDB) : $(SRC_DIR)/pdb$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pdb$(O) \
-       $(LINKFLAGS) $(ALL_PARROT_LIBS)
+       $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 #
 # Parrot Disassembler
@@ -805,12 +805,12 @@
 $(DIS) : $(SRC_DIR)/disassemble$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/disassemble$(O) \
-       $(LINKFLAGS) @rpath_blib@ $(ALL_PARROT_LIBS)
+       @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 $(INSTALLABLEDIS) : $(SRC_DIR)/disassemble$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/disassemble$(O) \
-       $(LINKFLAGS) $(ALL_PARROT_LIBS)
+       $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 #
 # Parrot Dump
@@ -819,24 +819,24 @@
 $(PDUMP) : $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pdump$(O) \
-       $(SRC_DIR)/packdump$(O) $(LINKFLAGS) @rpath_blib@ $(ALL_PARROT_LIBS)
+       $(SRC_DIR)/packdump$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 $(INSTALLABLEPDUMP) : $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pdump$(O) \
-       $(SRC_DIR)/packdump$(O) $(LINKFLAGS) $(ALL_PARROT_LIBS)
+       $(SRC_DIR)/packdump$(O) $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 
 # pbc_info
 $(PINFO) : $(SRC_DIR)/pbc_info$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pbc_info$(O) \
-       $(LINKFLAGS) @rpath_blib@ $(ALL_PARROT_LIBS)
+       @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 $(INSTALLABLEPINFO) : $(SRC_DIR)/pbc_info$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pbc_info$(O) \
-       $(LINKFLAGS) $(ALL_PARROT_LIBS)
+       $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 #
 # Parrot Bytecode File Merger
@@ -846,13 +846,13 @@
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pbc_merge$(O) \
        $(SRC_DIR)/parrot_config$(O) \
-       $(LINKFLAGS) $(LINK_DYNAMIC) @rpath_blib@ $(ALL_PARROT_LIBS)
+       $(LINK_DYNAMIC) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 $(INSTALLABLEPBCMERGE) : $(SRC_DIR)/pbc_merge$(O) $(LIBPARROT)
        $(LINK) @[EMAIL PROTECTED]@ \
        $(SRC_DIR)/pbc_merge$(O) \
        $(SRC_DIR)/install_config$(O) \
-       $(LINKFLAGS) $(ALL_PARROT_LIBS)
+       $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 
 ###############################################################################
@@ -1636,7 +1636,7 @@
 ###############################################################################
 
 exec : $(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) $(LIBPARROT)
-       $(LINK) @[EMAIL PROTECTED](EXEC)$(EXE) $(LINKFLAGS) $(EXEC)$(O) 
$(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) @rpath_blib@ 
$(ALL_PARROT_LIBS)
+       $(LINK) @[EMAIL PROTECTED](EXEC)$(EXE) $(EXEC)$(O) 
$(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) @rpath_blib@ 
$(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 ###### OS depend targets ##########
 

Reply via email to