On Sat, Jun 6, 2009 at 11:30 PM, Jonathan Matthew<jonat...@d14n.org> wrote:
> On Sat, Jun 06, 2009 at 09:08:56PM +1000, Nguyen Thai Ngoc Duy wrote:
>> On Sat, Jun 6, 2009 at 9:04 PM, Jonathan Matthew<jonat...@d14n.org> wrote:
>> > On Sat, Jun 06, 2009 at 08:28:02PM +1000, Nguyen Thai Ngoc Duy wrote:
>> >> On Sun, Mar 8, 2009 at 8:04 PM, Brecht Sanders<bre...@sanders.org> wrote:
>> >> > Anyway, after addressing all this points (admittedly sometimes in a 
>> >> > dirty
>> >> > way by commenting out some things) I was able compile everything. 
>> >> > However
>> >> > linking failed with the output below. Basically there are a lot of 
>> >> > undefined
>> >> > references. Any idea why this happens?
>> >>
>> >> I think I have spotted the problem.  Building corelib with
>> >> -no-undefined, I got the below errors. Now a question to Rhythmbox
>> >> developers: why does librhythmbox-core need something from rb-shell*?
>> >
>> > Because this isn't a cleanly separated code base.  Everything calls
>> > everything, which then calls back into everything.  The way the code is
>> > currently split between the rhythmbox binary and librhythmbox-core was
>> > more about getting it to link on common systems without having to move
>> > too many things around than about getting it right.
>>
>> So what if I make librhythmbox-core a noinst library and link it
>> internally to rhythmbox binary? I'm wondering if plugins still work..
>> That way I could avoid creating an incomlete dll (which libtool
>> refuses to do)
>
> I don't think that would help.  What we should do is first build
> librhythmbox-core, containing everything except main.c, then the
> rhythmbox binary, then the plugins.  The main thing we'd need to do is
> to move the plugin management code to a different directory (or use an
> external library for instead) and rearrange some makefiles.

Yeah.. after a few tries I can finally make a 4 MB
librhythmbox-core.dll and 80k rhythmbox.exe. And of course it's broken
;-) Some plugins build too, with -no-undefined. Let's see if I can
make rhythmbox GUI show up in the next few days. DBus looks scary. And
it'd be great if someone can come up with a patch to eliminate
gnome-media-profiles (I think it is used to build gstreamer pipelines,
a fixed pipeline is fine to me, for testing purposes).

Anyway the patch to make it build:

diff --git a/configure.ac b/configure.ac
index ceef9cc..7f7223f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -600,7 +600,7 @@ dnl
================================================================
 dnl Plugins
 dnl ================================================================

-PLUGIN_LIBTOOL_FLAGS="-module -avoid-version"
+PLUGIN_LIBTOOL_FLAGS="-module -avoid-version -no-undefined"
 AC_SUBST(PLUGIN_LIBTOOL_FLAGS)

 PLUGINDIR='${libdir}/rhythmbox/plugins'
diff --git a/corelib/Makefile.am b/corelib/Makefile.am
index 856f357..b3b0424 100644
--- a/corelib/Makefile.am
+++ b/corelib/Makefile.am
@@ -6,12 +6,16 @@ lib_LTLIBRARIES = librhythmbox-core.la
 librhythmbox_core_la_SOURCES =

 librhythmbox_core_la_LIBADD =                          \
+       $(top_builddir)/sources/libsourcesimpl.la       \
+       $(top_builddir)/shell/librbshell.la             \
        $(top_builddir)/sources/libsources.la           \
        $(top_builddir)/metadata/librbmetadata.la       \
        $(top_builddir)/widgets/librbwidgets.la         \
        $(top_builddir)/rhythmdb/librhythmdb.la         \
        $(top_builddir)/backends/librbbackends.la       \
-       $(top_builddir)/lib/librb.la
+       $(top_builddir)/podcast/librbpodcast.la         \
+       $(top_builddir)/plugins/librbplugins.la         \
+       $(TOTEM_PLPARSER_LIBS)

 librhythmbox_core_la_LDFLAGS = -export-dynamic -no-undefined

diff --git a/podcast/Makefile.am b/podcast/Makefile.am
index 2e15edd..7fa6e28 100644
--- a/podcast/Makefile.am
+++ b/podcast/Makefile.am
@@ -14,8 +14,6 @@ librbpodcast_la_SOURCES =                             \
        rb-feed-podcast-properties-dialog.h             \
        rb-podcast-properties-dialog.c                  \
        rb-podcast-properties-dialog.h                  \
-       rb-podcast-parse.c                              \
-       rb-podcast-parse.h                              \
        rb-podcast-manager.c                            \
        rb-podcast-manager.h
 librbpodcast_la_LIBADD =                               \
diff --git a/shell/Makefile.am b/shell/Makefile.am
index cc5504b..4332a1b 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -92,11 +92,7 @@ librbshell_la_SOURCES =                                      
\
        rb-missing-plugins.h

 rhythmbox_LDADD =                                      \
-       librbshell.la                                   \
        $(top_builddir)/corelib/librhythmbox-core.la    \
-       $(top_builddir)/sources/libsourcesimpl.la       \
-       $(top_builddir)/podcast/librbpodcast.la         \
-       $(top_builddir)/plugins/librbplugins.la         \
        -lgstpbutils-0.10

 if USE_NOTIFY

-- 
Duy
_______________________________________________
rhythmbox-devel mailing list
rhythmbox-devel@gnome.org
http://mail.gnome.org/mailman/listinfo/rhythmbox-devel

Reply via email to