Debug optimized cache fixes

This commit is contained in:
Bill Hoffman 2002-05-02 15:10:19 -04:00
parent 4fe8947bcc
commit 2242006ca1
6 changed files with 92 additions and 24 deletions

View File

@ -67,14 +67,6 @@ IF (WIN32)
ENDIF(NOT UNIX)
ENDIF (WIN32)
IF (UNIX)
INCLUDE (${CMake_SOURCE_DIR}/Modules/FindCurses.cmake OPTIONAL)
IF (CURSES_LIBRARY)
SUBDIRS(CursesDialog/form)
INCLUDE(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
ENDIF (CURSES_LIBRARY)
ENDIF (UNIX)
SET(SRCS ${SRCS} cmUnixMakefileGenerator.cxx cmUnixMakefileGenerator.h)
@ -91,6 +83,15 @@ ADD_EXECUTABLE(DumpDocumentation cmDumpDocumentation)
ADD_EXECUTABLE(ctest ctest.cxx cmSystemTools.cxx cmRegularExpression.cxx)
ADD_EXECUTABLE(ccommand ccommand.cxx cmSystemTools.cxx cmMakefile.cxx)
IF (UNIX)
INCLUDE (${CMake_SOURCE_DIR}/Modules/FindCurses.cmake OPTIONAL)
IF (CURSES_LIBRARY)
SUBDIRS(CursesDialog/form)
INCLUDE(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
ENDIF (CURSES_LIBRARY)
ENDIF (UNIX)
IF (NOT DART_ROOT)
SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM})
ENDIF (NOT DART_ROOT)

View File

@ -665,7 +665,16 @@ void cmMakefile::AddLibrary(const char* lname, int shared,
default:
target.SetType(cmTarget::STATIC_LIBRARY);
}
// Clear its dependencies. Otherwise, dependencies might persist
// over changes in CMakeLists.txt, making the information stale and
// hence useless.
std::string depname = lname;
depname += "_LIB_DEPENDS";
cmCacheManager::GetInstance()->
AddCacheEntry(depname.c_str(), "",
"Dependencies for target", cmCacheManager::INTERNAL);
target.SetInAll(true);
target.GetSourceLists() = srcs;
std::vector<std::string>::iterator j;
@ -723,14 +732,6 @@ void cmMakefile::AddLibrary(const char* lname, int shared,
cmCacheManager::INTERNAL);
}
// Clear its dependencies. Otherwise, dependencies might persist
// over changes in CMakeLists.txt, making the information stale and
// hence useless.
std::string depname = lname;
depname += "_LIB_DEPENDS";
cmCacheManager::GetInstance()->
AddCacheEntry(depname.c_str(), "",
"Dependencies for target", cmCacheManager::INTERNAL);
}
void cmMakefile::AddExecutable(const char *exeName,

View File

@ -80,6 +80,25 @@ void cmTarget::AddLinkLibrary(cmMakefile& mf,
{
m_LinkLibraries.push_back( std::pair<std::string, cmTarget::LinkLibraryType>(lib,llt) );
if(llt != cmTarget::GENERAL)
{
std::string linkTypeName = this->CanonicalLibraryName(lib);
linkTypeName += "_LINK_TYPE";
switch(llt)
{
case cmTarget::DEBUG:
mf.AddCacheDefinition(linkTypeName.c_str(),
"debug", "Library is used for debug links only",
cmCacheManager::INTERNAL);
break;
case cmTarget::OPTIMIZED:
mf.AddCacheDefinition(linkTypeName.c_str(),
"optimized", "Library is used for debug links only",
cmCacheManager::INTERNAL);
break;
}
}
mf.AddDependencyToCache( target, lib );
}
@ -127,7 +146,7 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf )
// if a variable expands to nothing.
if (lib->first.size() == 0) continue;
std::string cname = CanonicalLibraryName(lib->first);
std::string cname = this->CanonicalLibraryName(lib->first);
lib_order.push_back( cname );
if( lib_map.end() == lib_map.find( cname ) )
{
@ -140,7 +159,7 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf )
// have specified them
for( LinkLine::iterator i = orig_libs.begin(); i != orig_libs.end(); ++i )
{
GatherDependencies( mf, *i, dep_map, lib_map );
this->GatherDependencies( mf, *i, dep_map, lib_map );
}
// For the rest, get implicit dependencies. A library x depends
@ -193,7 +212,6 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf )
// for all the new libraries added by the dependency analysis.
const char* libOutPath = mf.GetDefinition("LIBRARY_OUTPUT_PATH");
bool addLibDirs = (libOutPath==0 || strcmp(libOutPath,"")==0);
m_LinkLibraries.clear();
for( std::vector<std::string>::reverse_iterator i = link_line.rbegin();
i != link_line.rend(); ++i )
@ -217,7 +235,22 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf )
}
}
}
m_LinkLibraries.push_back( std::make_pair(*i,GENERAL) );
std::string linkType = *i;
linkType += "_LINK_TYPE";
cmTarget::LinkLibraryType llt = cmTarget::GENERAL;
const char* linkTypeString = mf.GetDefinition( linkType.c_str() );
if(linkTypeString)
{
if(strcmp(linkTypeString, "debug") == 0)
{
llt = cmTarget::DEBUG;
}
if(strcmp(linkTypeString, "optimized") == 0)
{
llt = cmTarget::OPTIMIZED;
}
}
m_LinkLibraries.push_back( std::make_pair(*i,llt) );
}
else
{
@ -247,10 +280,10 @@ std::string cmTarget::CanonicalLibraryName( const std::string& lib ) const
{
return libname_noprefix.match(1);
}
else
{
return file;
}
else
{
return file;
}
}
else
{

View File

@ -20,6 +20,17 @@ SOURCE_FILES(LibrarySources
SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file)
ADD_LIBRARY(CMakeTestLibrary LibrarySources)
IF(WIN32)
IF(NOT CYGWIN)
TARGET_LINK_LIBRARIES(CMakeTestLibrary
debug
user32.lib)
TARGET_LINK_LIBRARIES(CMakeTestLibrary
optimized
kernel32.lib)
ENDIF(NOT CYGWIN)
ENDIF(WIN32)
#
# Create shared library
#

View File

@ -20,6 +20,17 @@ SOURCE_FILES(LibrarySources
SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file)
ADD_LIBRARY(CMakeTestLibrary LibrarySources)
IF(WIN32)
IF(NOT CYGWIN)
TARGET_LINK_LIBRARIES(CMakeTestLibrary
debug
user32.lib)
TARGET_LINK_LIBRARIES(CMakeTestLibrary
optimized
kernel32.lib)
ENDIF(NOT CYGWIN)
ENDIF(WIN32)
#
# Create shared library
#

View File

@ -20,6 +20,17 @@ SOURCE_FILES(LibrarySources
SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file)
ADD_LIBRARY(CMakeTestLibrary LibrarySources)
IF(WIN32)
IF(NOT CYGWIN)
TARGET_LINK_LIBRARIES(CMakeTestLibrary
debug
user32.lib)
TARGET_LINK_LIBRARIES(CMakeTestLibrary
optimized
kernel32.lib)
ENDIF(NOT CYGWIN)
ENDIF(WIN32)
#
# Create shared library
#