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 ##########