On 2011-07-01, Jan Stary <h...@stare.cz> wrote:
> On Jul 01 18:09:53, Stuart Henderson wrote:
>> On 2011-07-01, Jan Stary <h...@stare.cz> wrote:
>> >> It builds fine with USE_LIBTOOL=gnu.
>> >
>> > Yes it does. Thank you.
>> >
>> > I didn't know I could use USE_LIBTOOL=gnu.
>> 
>> I forgot to comment on this earlier; it's available in cases where
>> something doesn't package with ports libtool and a fix can't be
>> found, but it's really a last resort.
>
> Well, does anyone know how to fix the USE_LIBTOOL issue
> described in the original post? It seems it puts '-x c'
> in front of *.o files, but I don't know libtool enough
> to spot and fix the exact bug.

cc'ing steven as the person who probably knows ports libtool the best ;)
quick summary: new port opencore-amr is having problems with our libtool.
port isn't committed yet, see http://junkpile.org/opencore-amr.tgz

it's setting "-x c" in flags to libtool for both compiler and linker.

/usr/ports/infrastructure/bin/libtool  --tag=CXX    --mode=link c++ -I<blah 
blah, bunch of include paths> -x c -std=c99  -O2 -pipe -version-info 0:2:0  -o 
libopencore-amrwb.la -rpath /usr/local/lib wrapper.lo <blah blah, bunch of 
.lo's> -lm

libtool passes this to the linker and this breaks the build.

For --mode=link, GNU libtool only include the specific flags relevant
to the linker, and strips out anything else. I think this behaviour
makes sense, diff below seems to work for opencore-amr but hasn't
been thoroughly tested and I don't really understand libtool well
enough to know if it will cause other problems.

So this needs more testing (a full bulk build would be good), and
review by somebody who knows how libtool is supposed to work.

Index: LibTool/Parser.pm
===================================================================
RCS file: /cvs/ports/infrastructure/lib/LibTool/Parser.pm,v
retrieving revision 1.1
diff -u -p -r1.1 Parser.pm
--- LibTool/Parser.pm   5 Dec 2010 16:37:50 -0000       1.1
+++ LibTool/Parser.pm   4 Jul 2011 10:24:07 -0000
@@ -295,7 +295,7 @@ sub parse_linkargs2
                                push(@$result, "-Wl,$f");
                        }
                } else {
-                       push(@$result, $a);
+                       Trace::debug {"ignoring $a\n"};
                }
        }
        Trace::debug {"end parse_linkargs2\n"};

Reply via email to