From e40aaa57c36387fdd8ecf6ffab0021a086dad969 Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Thu, 12 Apr 2001 15:34:09 -0400 Subject: some bug fixes --- Source/Makefile.in | 2 +- Source/cmAddLibraryCommand.cxx | 7 +++++++ Source/cmCacheManager.cxx | 1 + Source/cmCacheManager.h | 2 +- Source/cmMakefile.h | 4 +++- Source/cmUnixMakefileGenerator.cxx | 39 +++++++++++++++++++++----------------- Source/cmWrapTclCommand.cxx | 3 +++ 7 files changed, 38 insertions(+), 20 deletions(-) diff --git a/Source/Makefile.in b/Source/Makefile.in index 5bf6fe5..89c8c9f 100644 --- a/Source/Makefile.in +++ b/Source/Makefile.in @@ -26,7 +26,7 @@ cmCustomCommand.o \ cmCacheManager.o \ cmSourceGroup.o -DEPENDS = $(srcdir)/*.h ${CMAKE_CONFIG_DIR}/CMake/Source/cmConfigure.h +DEPENDS = $(srcdir)/*.h $(srcdir)/*.cxx ${CMAKE_CONFIG_DIR}/CMake/Source/cmConfigure.h cmCollectFlags.o : $(DEPENDS) CMakeBuildTargets.o : $(DEPENDS) diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx index 68845e4..736d567 100644 --- a/Source/cmAddLibraryCommand.cxx +++ b/Source/cmAddLibraryCommand.cxx @@ -14,6 +14,7 @@ =========================================================================*/ #include "cmAddLibraryCommand.h" +#include "cmCacheManager.h" // cmLibraryCommand bool cmAddLibraryCommand::Invoke(std::vector& args) @@ -28,6 +29,12 @@ bool cmAddLibraryCommand::Invoke(std::vector& args) std::vector srclists(++s, args.end()); m_Makefile->AddLibrary(args[0].c_str(),srclists); + + // Add an entry into the cache + cmCacheManager::GetInstance()-> + AddCacheEntry(args[0].c_str(), + m_Makefile->GetCurrentOutputDirectory(), + cmCacheManager::INTERNAL); return true; } diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 0dbdd9d..62762e2 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -25,6 +25,7 @@ const char* cmCacheManagerTypes[] = "PATH", "FILEPATH", "STRING", + "INTERNAL", 0 }; diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h index 7ed5f92..11cd592 100644 --- a/Source/cmCacheManager.h +++ b/Source/cmCacheManager.h @@ -35,7 +35,7 @@ public: * text entry box, FILEPATH is a full path to a file which * can be different than just a path input */ - enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING }; + enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL }; static CacheEntryType StringToType(const char*); //! Singleton pattern get instance of the cmCacheManager. static cmCacheManager* GetInstance(); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 5d50371..f72a6ed 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -97,7 +97,9 @@ public: void AddExecutable(const char *exename, const std::vector &srcs); /** - * Add a utility on which this project depends. + * Add a utility on which this project depends. A utility is an executable + * name as would be specified to the ADD_EXECUTABLE or UTILITY_SOURCE + * commands. It is not a full path nor does it have an extension. */ void AddUtility(const char*); diff --git a/Source/cmUnixMakefileGenerator.cxx b/Source/cmUnixMakefileGenerator.cxx index 6d4bcd9..8e67000 100644 --- a/Source/cmUnixMakefileGenerator.cxx +++ b/Source/cmUnixMakefileGenerator.cxx @@ -19,6 +19,7 @@ #include "cmSystemTools.h" #include "cmClassFile.h" #include "cmMakeDepend.h" +#include "cmCacheManager.h" void cmUnixMakefileGenerator::GenerateMakefile() { @@ -69,6 +70,7 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout) // for each target add to the list of targets fout << "TARGETS = "; const cmTargets &tgts = m_Makefile->GetTargets(); + // libraries for(cmTargets::const_iterator l = tgts.begin(); l != tgts.end(); l++) { @@ -76,7 +78,12 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout) { fout << " \\\nlib" << l->first.c_str() << "${CMAKE_LIB_EXT}"; } - else + } + // executables + for(cmTargets::const_iterator l = tgts.begin(); + l != tgts.end(); l++) + { + if (!l->second.m_IsALibrary) { fout << "\\\n" << l->first.c_str(); } @@ -216,21 +223,18 @@ void cmUnixMakefileGenerator::OutputDependencies(std::ostream& fout) { bool found = false; // loop over the list of directories that the libraries might - // be in, looking for a LIBRARY=(lib) line. - for(dir = libdirs.begin(); dir != libdirs.end() && !found; ++dir) + // be in, looking for an ADD_LIBRARY(lib...) line. This would + // be stored in the cache + const char* cacheValue + = cmCacheManager::GetInstance()->GetCacheValue(lib->c_str()); + if(cacheValue) { - std::string expression = "LIBRARY.*=.*"; - expression += lib->c_str(); - if(cmSystemTools::Grep(dir->c_str(), "CMakeTargets.make", - expression.c_str())) - { - std::string libpath = *dir; - libpath += "/lib"; - libpath += *lib; - libpath += "${CMAKE_LIB_EXT}"; - fout << libpath << " "; - found = true; - } + std::string libpath = cacheValue; + libpath += "/lib"; + libpath += *lib; + libpath += "${CMAKE_LIB_EXT}"; + fout << libpath << " "; + found = true; } } @@ -243,10 +247,10 @@ void cmUnixMakefileGenerator::OutputDependencies(std::ostream& fout) { bool found = false; // loop over the list of directories that the utilities might - // be in, looking for an EXECUTABLES=(util) line. + // be in, looking for an ADD_EXECUTABLE(util ...) line. for(dir = utildirs.begin(); dir != utildirs.end() && !found; ++dir) { - std::string expression = "EXECUTABLES.*=.*"; + std::string expression = "TARGETS =.*"; expression += util->c_str(); if(cmSystemTools::Grep(dir->c_str(), "CMakeTargets.make", expression.c_str())) @@ -267,6 +271,7 @@ void cmUnixMakefileGenerator::OutputMakeFlags(std::ostream& fout) fout << "INCLUDE_FLAGS = "; std::vector& includes = m_Makefile->GetIncludeDirectories(); std::vector::iterator i; + fout << "-I" << m_Makefile->GetStartDirectory() << " "; for(i = includes.begin(); i != includes.end(); ++i) { std::string include = *i; diff --git a/Source/cmWrapTclCommand.cxx b/Source/cmWrapTclCommand.cxx index 931af36..a7c0c12 100644 --- a/Source/cmWrapTclCommand.cxx +++ b/Source/cmWrapTclCommand.cxx @@ -44,6 +44,9 @@ bool cmWrapTclCommand::Invoke(std::vector& args) } } + // add in a depend in the vtkWrapTcl executable + m_Makefile->AddUtility("vtkWrapTcl"); + // what is the current source dir std::string cdir = m_Makefile->GetCurrentDirectory(); -- cgit v0.12