[Rhythmbox-devel] building rhythmbox for win32 with MinGW/MSYS



Hi,
I was just trying if rhythmbox can be built on Windows using the MinGW compiler under the MSYS build environment.
I was able to build the minimum dependancies and was able to run configure.
When compiling there were some obstacles which I believe should be possible to solve.

- The most common problem is that DATADIR is defined in both gnome and MinGW's objidl.h. I was able to work around this by putting #include <windows.h> as the first line on each source file that had this problem. However the DATADIR in shell/main.c won't work then because it won't be a string anymore.

- mkdir() only takes one parameter on Windows

- I got an undefined reference to gnome_authentication_manager_init() in metadata/rb-metadata-dbus-service.c

- kill() doesn't exist on Windows, but it's used in metadata/rb-metadata-dbus-client.c right before g_spawn_close_pid(), is this necessary?

- some files include gdk/gdkx.h and use XID which doesn't exist on Windows

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?

Regards
   Brecht Sanders

/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -export-dynamic -no-undefined -o rhythmbox.exe main.o librbshell.la ../corelib/librhythmbox-core.la ../sources/libsourcesimpl.la ../podcast/librbpodcast.la ../plugins/librbplugins.la -L/mingw/lib -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -lgstpbutils-0.10 -L/mingw/lib -ldbus-glib-1 -ldbus-1.dll -lgobject-2.0 -lglib-2.0 -lintl ../backends/librbbackends.la -L/mingw/lib -ltotem-plparser -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -L/mingw/lib -lgnomeui-2 -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lglade-2.0 -lgtk-win32-2.0 -lxml2 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgnomevfs-2 -lgconf-2 -lgthread-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0 -lintl -L/mingw/lib -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lxml2 -lglib-2.0 -lintl -lgstcontroller-0.10 -lz gcc -g -O2 -o rhythmbox.exe main.o -Wl,--export-dynamic ./.libs/librbshell.a ../corelib/.libs/librhythmbox-core.a -L/mingw/lib -L/home/bsanders/inst_libgcrypt-1.4.3/lib -L/home/bsanders/inst_libgcrypt-1.4.4/lib ../sources/.libs/libsourcesimpl.a ../podcast/.libs/librbpodcast.a ../plugins/.libs/librbplugins.a /mingw/lib/libsoup-2.4.dll.a /mingw/lib/libgnutls.dll.a /mingw/lib/libgcrypt.dll.a /mingw/lib/libgpg-error.dll.a /mingw/lib/libdbus-glib-1.dll.a -ldbus-1.dll ../backends/.libs/librbbackends.a /mingw/lib/libgstpbutils-0.10.dll.a /mingw/lib/libtotem-plparser.dll.a -lgnomeui-2 -lbonoboui-2 -lgnomecanvas-2 -lgnome-2 /mingw/lib/libpopt.dll.a -lbonobo-2 -lbonobo-activation -lORBit-2 /mingw/lib/libart_lgpl_2.dll.a -lglade-2.0 -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 /mingw/lib/libgio-2.0.dll.a -lshlwapi -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgnomevfs-2 -lgconf-2 /mingw/lib/libgstbase-0.10.dll.a /mingw/lib/libgstcontroller-0.10.dll.a /mingw/lib/libgstreamer-0.10.dll.a /mingw/lib/libxml2.dll.a -ldl -lpthread /mingw/lib/libiconv.dll.a /mingw/lib/libgobject-2.0.dll.a /mingw/lib/libgthread-2.0.dll.a /mingw/lib/libgmodule-2.0.dll.a /mingw/lib/libglib-2.0.dll.a -lws2_32 -lole32 -lintl -lz -L/mingw/lib -L/mingw/lib
main.o: In function `main':
C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/shell/main.c:172: undefined reference to `gnome_authentication_manager_init' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/shell/main.c:305: undefined reference to `gdk_x11_display_get_user_time' ./.libs/librbshell.a(rb-removable-media-manager.o): In function `rb_removable_media_manager_cmd_eject_medium': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/shell/rb-removable-media-manager.c:567: undefined reference to `gnome_vfs_volume_eject' ../corelib/.libs/librhythmbox-core.a(rb-cut-and-paste-code.o): In function `rb_utf_friendly_time': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:263: undefined reference to `localtime_r' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:264: undefined reference to `localtime_r' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:276: undefined reference to `localtime_r' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/lib/rb-cut-and-paste-code.c:292: undefined reference to `localtime_r' ../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In function `rb_static_playlist_source_do_query': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:571: undefined reference to `rb_library_browser_set_model' ../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In function `impl_reset_filters': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:466: undefined reference to `rb_library_browser_reset' ../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In function `rb_static_playlist_source_constructor': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:299: undefined reference to `rb_library_browser_new' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:307: undefined reference to `rb_library_browser_set_model' ../sources/.libs/libsourcesimpl.a(rb-static-playlist-source.o): In function `impl_get_property_views': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-static-playlist-source.c:515: undefined reference to `rb_library_browser_get_property_views' ../sources/.libs/libsourcesimpl.a(rb-podcast-source.o): In function `rb_podcast_source_constructor': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:726: undefined reference to `rb_property_view_new' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:729: undefined reference to `rb_property_view_get_type' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:729: undefined reference to `rb_property_view_set_selection_mode' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:733: undefined reference to `rb_property_view_get_type' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:733: undefined reference to `rb_property_view_get_model' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:759: undefined reference to `rb_property_view_append_column_custom' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:785: undefined reference to `rb_property_view_append_column_custom' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:796: undefined reference to `rb_property_view_set_search_func' ../sources/.libs/libsourcesimpl.a(rb-podcast-source.o): In function `rb_podcast_source_cmd_new_podcast': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-podcast-source.c:2121: undefined reference to `rb_uri_dialog_new' ../sources/.libs/libsourcesimpl.a(rb-sourcelist.o): In function `rb_sourcelist_init': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-sourcelist.c:803: undefined reference to `gossip_cell_renderer_expander_new' ../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In function `rb_auto_playlist_source_constructor': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sourcInfo: resolving ___gst_debug_min by linking to __imp____gst_debug_min (auto-import) Info: resolving _GST_CAT_DEFAULT by linking to __imp__GST_CAT_DEFAULT (auto-import) Info: resolving __SOUP_URI_SCHEME_HTTP by linking to __imp___SOUP_URI_SCHEME_HTTP (auto-import) es/rb-auto-playlist-source.c:260: undefined reference to `rb_library_browser_new' ../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In function `rb_auto_playlist_source_do_query': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:747: undefined reference to `rb_library_browser_set_model' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:773: undefined reference to `rb_library_browser_set_model' ../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In function `impl_reset_filters': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:476: undefined reference to `rb_library_browser_reset' ../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In function `rb_auto_playlist_source_set_query': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:839: undefined reference to `rb_library_browser_set_model' ../sources/.libs/libsourcesimpl.a(rb-auto-playlist-source.o): In function `impl_get_property_views': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-auto-playlist-source.c:535: undefined reference to `rb_library_browser_get_property_views' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `rb_browser_source_cmd_choose_genre': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:577: undefined reference to `rb_library_browser_get_property_view' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:579: undefined reference to `rb_property_view_set_selection' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `rb_browser_source_cmd_choose_artist': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:597: undefined reference to `rb_library_browser_get_property_view' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:599: undefined reference to `rb_property_view_set_selection' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `rb_browser_source_cmd_choose_album': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:617: undefined reference to `rb_library_browser_get_property_view' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:619: undefined reference to `rb_property_view_set_selection' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `rb_browser_source_constructor': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:427: undefined reference to `rb_library_browser_new' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:515: undefined reference to `rb_library_browser_set_model' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `rb_browser_source_do_query': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:904: undefined reference to `rb_library_browser_set_model' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:940: undefined reference to `rb_library_browser_set_model' C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:934: undefined reference to `rb_library_browser_set_model' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `impl_reset_filters': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:700: undefined reference to `rb_library_browser_reset' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `impl_get_property_views': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:688: undefined reference to `rb_library_browser_get_property_views' ../sources/.libs/libsourcesimpl.a(rb-browser-source.o): In function `impl_browser_toggled': C:/Prog/MinGW-mSys/home/bsanders/rhythmbox-0.11.6/sources/rb-browser-source.c:814: undefined reference to `rb_library_browser_reset'
collect2: ld returned 1 exit status
make[3]: *** [rhythmbox.exe] Error 1
make[3]: Leaving directory `/home/bsanders/rhythmbox-0.11.6/shell'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/bsanders/rhythmbox-0.11.6/shell'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/bsanders/rhythmbox-0.11.6'
make: *** [all] Error 2



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]