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(NOT UNIX)
ENDIF (WIN32) 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) 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(ctest ctest.cxx cmSystemTools.cxx cmRegularExpression.cxx)
ADD_EXECUTABLE(ccommand ccommand.cxx cmSystemTools.cxx cmMakefile.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) IF (NOT DART_ROOT)
SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM}) SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM})
ENDIF (NOT DART_ROOT) ENDIF (NOT DART_ROOT)

View File

@ -665,7 +665,16 @@ void cmMakefile::AddLibrary(const char* lname, int shared,
default: default:
target.SetType(cmTarget::STATIC_LIBRARY); 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.SetInAll(true);
target.GetSourceLists() = srcs; target.GetSourceLists() = srcs;
std::vector<std::string>::iterator j; std::vector<std::string>::iterator j;
@ -723,14 +732,6 @@ void cmMakefile::AddLibrary(const char* lname, int shared,
cmCacheManager::INTERNAL); 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, 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) ); 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 ); mf.AddDependencyToCache( target, lib );
} }
@ -127,7 +146,7 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf )
// if a variable expands to nothing. // if a variable expands to nothing.
if (lib->first.size() == 0) continue; if (lib->first.size() == 0) continue;
std::string cname = CanonicalLibraryName(lib->first); std::string cname = this->CanonicalLibraryName(lib->first);
lib_order.push_back( cname ); lib_order.push_back( cname );
if( lib_map.end() == lib_map.find( cname ) ) if( lib_map.end() == lib_map.find( cname ) )
{ {
@ -140,7 +159,7 @@ cmTarget::AnalyzeLibDependencies( const cmMakefile& mf )
// have specified them // have specified them
for( LinkLine::iterator i = orig_libs.begin(); i != orig_libs.end(); ++i ) 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 // 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. // for all the new libraries added by the dependency analysis.
const char* libOutPath = mf.GetDefinition("LIBRARY_OUTPUT_PATH"); const char* libOutPath = mf.GetDefinition("LIBRARY_OUTPUT_PATH");
bool addLibDirs = (libOutPath==0 || strcmp(libOutPath,"")==0); bool addLibDirs = (libOutPath==0 || strcmp(libOutPath,"")==0);
m_LinkLibraries.clear(); m_LinkLibraries.clear();
for( std::vector<std::string>::reverse_iterator i = link_line.rbegin(); for( std::vector<std::string>::reverse_iterator i = link_line.rbegin();
i != link_line.rend(); ++i ) 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 else
{ {
@ -247,10 +280,10 @@ std::string cmTarget::CanonicalLibraryName( const std::string& lib ) const
{ {
return libname_noprefix.match(1); return libname_noprefix.match(1);
} }
else else
{ {
return file; return file;
} }
} }
else else
{ {

View File

@ -20,6 +20,17 @@ SOURCE_FILES(LibrarySources
SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file) SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file)
ADD_LIBRARY(CMakeTestLibrary LibrarySources) 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 # Create shared library
# #

View File

@ -20,6 +20,17 @@ SOURCE_FILES(LibrarySources
SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file) SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file)
ADD_LIBRARY(CMakeTestLibrary LibrarySources) 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 # Create shared library
# #

View File

@ -20,6 +20,17 @@ SOURCE_FILES(LibrarySources
SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file) SOURCE_FILES_REMOVE(LibrarySources create_file.cxx GENERATED nonexisting_file)
ADD_LIBRARY(CMakeTestLibrary LibrarySources) 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 # Create shared library
# #