[mythtv-commits] Ticket #2402: qmake build system has bad dependencies which causes --as-needed and future binutils to fail to link
MythTV
mythtv at cvs.mythtv.org
Mon Sep 18 01:06:52 UTC 2006
#2402: qmake build system has bad dependencies which causes --as-needed and future
binutils to fail to link
-------------------------------+--------------------------------------------
Reporter: cardoe at gentoo.org | Owner: ijr
Type: defect | Status: new
Priority: minor | Milestone: unknown
Component: mythtv | Version: 0.20
Severity: medium | Resolution:
-------------------------------+--------------------------------------------
Comment (by nigel):
Hi Doug. I have never used '--as-needed' (it is not an option in my ld),
but yes, the dependencies need fixing. Sadly, your re-ordering of SUBDIRS
causes link failure on Mac OS X:
{{{
rm -f libmythui-0.20.0.20.0.dylib libmythui-0.20.dylib
libmythui-0.20.0.dylib libmythui-0.20.0.20.dylib
g++ -headerpad_max_install_names -Wl,-search_paths_first -prebind
-dynamiclib -seg1addr 0xCC000000 -compatibility_version 0.20
-current_version 0.20.0 -install_name libmythui-0.20.0.dylib -o
libmythui-0.20.0.20.0.dylib mythmainwindow.o mythpainter.o mythimage.o
myththemebase.o mythpainter_qt.o xmlparsebase.o mythscreenstack.o
mythscreentype.o mythgesture.o mythuitype.o mythuiimage.o mythuitext.o
mythuistatetype.o mythlistbutton.o mythfontproperties.o mythuibutton.o
myththemedmenu.o mythdialogbox.o moc_mythmainwindow.o moc_mythuitype.o
moc_mythlistbutton.o moc_myththemedmenu.o moc_mythdialogbox.o
-L/Users/nigel/.osx-packager/src/qt-mac-free-3.3.6/lib -L/usr/lib
-L/Users/nigel/.osx-packager/build/lib -framework Carbon -framework OpenGL
-lqt-mt
ld: warning prebinding disabled because dependent library: libqt-
mt.3.dylib is not prebound
ld: Undefined symbols:
__ZN11AppleRemote11setListenerEPNS_8ListenerE
__ZN11AppleRemote13stopListeningEv
__ZN11AppleRemote14startListeningEv
__ZN11AppleRemote19isListeningToRemoteEv
__ZN11AppleRemote7runLoopEv
__ZN11AppleRemote8instanceEv
__ZN11MythContext10GetSettingERK7QStringS2_
__ZN11MythContext11GetHostNameEv
__ZN11MythContext11ThemeWidgetEP7QWidget
__ZN11MythContext13GetMediumFontEv
__ZN11MythContext13GetNumSettingERK7QStringi
__ZN11MythContext13verbose_mutexE
__ZN11MythContext16ResetScreensaverEv
__ZN11MythContext17GetScreenIsAsleepEv
__ZN11MythContext17GetScreenSettingsERiS0_RfS0_S0_S1_
__ZN11MythContext18DoResetScreensaverEv
__ZN11MythContext20DoDisableScreensaverEv
__ZN11MythContext20DoRestoreScreensaverEv
__ZN11MythContext7DBErrorERK7QStringRK9QSqlQuery
__ZN12MediaMonitor15GetMediaMonitorEv
__ZN12MediaMonitor15ValidateAndLockEP15MythMediaDevice
__ZN12MediaMonitor25MonitorRegisterExtensionsEjRK7QString
__ZN12MediaMonitor6UnlockEP15MythMediaDevice
__ZN19AppleRemoteListenerC1EP7QObject
__ZN9MSqlQuery7InitConEv
__ZN9MSqlQuery7prepareERK7QString
__ZN9MSqlQueryC1ERK14_MSqlQueryInfo
__ZN9MSqlQueryD1Ev
__ZTI10MythDialog
_gContext
_print_verbose_messages
__ZN11MythContext14LoadScaleImageE7QStringb
__ZN11MythContext11GetThemeDirEv
__ZN11MythContext8qtconfigEv
__ZN8Settings10GetSettingE7QStringS0_
__ZN11MythContext18GetThemeSearchPathEv
__ZN11MythContext11GetLanguageEv
__ZN11MythContext21GetLanguageAndVariantEv
_globalFontMap
__Z11myth_systemRK7QStringi
__ZN10MythDialog4execEv
__ZN11MythContext10FindPluginERK7QString
__ZN11MythContext10GetConfDirEv
__ZN11MythContext10SetSettingERK7QStringS2_
__ZN11MythContext11GetShareDirEv
__ZN11MythContext11SaveSettingERK7QStringS2_
__ZN11MythContext13GetMainWindowEv
__ZN11MythContext15GetMenuThemeDirEv
__ZN11MythContext16getPluginManagerEv
__ZN11MythContext21SendReceiveStringListER11QStringListbb
__ZN12MediaMonitor19ChooseAndEjectMediaEv
__ZN17MythPluginManager10run_pluginERK7QString
__ZN17MythPluginManager13config_pluginERK7QString
__ZN18MythPasswordDialogC1E7QStringPbS0_P14MythMainWindowPKcb
__ZN3LCD12switchToMenuEP8QPtrListI11LCDMenuItemE7QStringb
__ZN3LCD12switchToTimeEv
__ZN3LCD3GetEv
/usr/bin/libtool: internal link edit command failed
make[2]: *** [libmythui-0.20.0.20.0.dylib] Error 1
make[1]: *** [sub-libmythui] Error 2
}}}
because there are actually circular dependencies. I am not a C++ expert,
so I have been thinking about this for several months (since libmythui
started being used) and can only think of three fixes:
1. Re-engineer the classes so that !MythDialog is moved into libmythui,
and there is yet another source directory and library for all the
fundamental Myth stuff (like MSqlQuery, !MythContext, MythMediaMonitor,
!MythPluginManager), or
2. Change the build system to make one big library, or
3. Use late binding on Mac OS X
Only the first option is a '''''proper''''' fix
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/2402#comment:1>
MythTV <http://www.mythtv.org/>
MythTV
More information about the mythtv-commits
mailing list