Do not add twice a link to crt library

svn path=/trunk/; revision=31017
This commit is contained in:
Hervé Poussineau 2007-12-05 16:53:14 +00:00
parent b22abd272b
commit 603edfdfc1

View file

@ -2887,10 +2887,23 @@ MingwWin32OCXModuleHandler::MingwWin32OCXModuleHandler (
{ {
} }
static bool
LinksToCrt( Module &module )
{
for ( size_t i = 0; i < module.non_if_data.libraries.size (); i++ )
{
Library& library = *module.non_if_data.libraries[i];
if ( library.name == "libcntpr" || library.name == "crt" )
return true;
}
return false;
}
static void static void
MingwAddImplicitLibraries( Module &module ) MingwAddImplicitLibraries( Module &module )
{ {
Library* pLibrary; Library* pLibrary;
bool links_to_crt;
if ( module.type != Win32DLL if ( module.type != Win32DLL
&& module.type != Win32OCX && module.type != Win32OCX
@ -2902,20 +2915,21 @@ MingwAddImplicitLibraries( Module &module )
return; return;
} }
if ( module.name == "ntdll" ) links_to_crt = LinksToCrt ( module );
{
// no implicit libraries
return;
}
if ( !module.isDefaultEntryPoint ) if ( !module.isDefaultEntryPoint )
{ {
if ( module.GetEntryPoint(false) == "0" ) if ( module.GetEntryPoint(false) == "0" )
{ {
pLibrary = new Library ( module, "mingw_common" ); if ( !links_to_crt )
module.non_if_data.libraries.insert ( module.non_if_data.libraries.begin() , pLibrary ); {
pLibrary = new Library ( module, "msvcrt" ); pLibrary = new Library ( module, "mingw_common" );
module.non_if_data.libraries.push_back ( pLibrary ); module.non_if_data.libraries.insert ( module.non_if_data.libraries.begin() , pLibrary );
pLibrary = new Library ( module, "msvcrt" );
module.non_if_data.libraries.push_back ( pLibrary );
links_to_crt = true;
}
} }
return; return;
} }
@ -2934,7 +2948,7 @@ MingwAddImplicitLibraries( Module &module )
pLibrary = new Library ( module, "mingw_common" ); pLibrary = new Library ( module, "mingw_common" );
module.non_if_data.libraries.insert ( module.non_if_data.libraries.begin() + 1, pLibrary ); module.non_if_data.libraries.insert ( module.non_if_data.libraries.begin() + 1, pLibrary );
if ( module.name != "msvcrt" ) if ( !links_to_crt )
{ {
// always link in msvcrt to get the basic routines // always link in msvcrt to get the basic routines
pLibrary = new Library ( module, "msvcrt" ); pLibrary = new Library ( module, "msvcrt" );