[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