some bug fixes

This commit is contained in:
Ken Martin 2001-04-12 15:34:09 -04:00
parent fb6c4b8710
commit e40aaa57c3
7 changed files with 38 additions and 20 deletions

View File

@ -26,7 +26,7 @@ cmCustomCommand.o \
cmCacheManager.o \ cmCacheManager.o \
cmSourceGroup.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) cmCollectFlags.o : $(DEPENDS)
CMakeBuildTargets.o : $(DEPENDS) CMakeBuildTargets.o : $(DEPENDS)

View File

@ -14,6 +14,7 @@
=========================================================================*/ =========================================================================*/
#include "cmAddLibraryCommand.h" #include "cmAddLibraryCommand.h"
#include "cmCacheManager.h"
// cmLibraryCommand // cmLibraryCommand
bool cmAddLibraryCommand::Invoke(std::vector<std::string>& args) bool cmAddLibraryCommand::Invoke(std::vector<std::string>& args)
@ -28,6 +29,12 @@ bool cmAddLibraryCommand::Invoke(std::vector<std::string>& args)
std::vector<std::string> srclists(++s, args.end()); std::vector<std::string> srclists(++s, args.end());
m_Makefile->AddLibrary(args[0].c_str(),srclists); 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; return true;
} }

View File

@ -25,6 +25,7 @@ const char* cmCacheManagerTypes[] =
"PATH", "PATH",
"FILEPATH", "FILEPATH",
"STRING", "STRING",
"INTERNAL",
0 0
}; };

View File

@ -35,7 +35,7 @@ public:
* text entry box, FILEPATH is a full path to a file which * text entry box, FILEPATH is a full path to a file which
* can be different than just a path input * 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*); static CacheEntryType StringToType(const char*);
//! Singleton pattern get instance of the cmCacheManager. //! Singleton pattern get instance of the cmCacheManager.
static cmCacheManager* GetInstance(); static cmCacheManager* GetInstance();

View File

@ -97,7 +97,9 @@ public:
void AddExecutable(const char *exename, const std::vector<std::string> &srcs); void AddExecutable(const char *exename, const std::vector<std::string> &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*); void AddUtility(const char*);

View File

@ -19,6 +19,7 @@
#include "cmSystemTools.h" #include "cmSystemTools.h"
#include "cmClassFile.h" #include "cmClassFile.h"
#include "cmMakeDepend.h" #include "cmMakeDepend.h"
#include "cmCacheManager.h"
void cmUnixMakefileGenerator::GenerateMakefile() void cmUnixMakefileGenerator::GenerateMakefile()
{ {
@ -69,6 +70,7 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
// for each target add to the list of targets // for each target add to the list of targets
fout << "TARGETS = "; fout << "TARGETS = ";
const cmTargets &tgts = m_Makefile->GetTargets(); const cmTargets &tgts = m_Makefile->GetTargets();
// libraries
for(cmTargets::const_iterator l = tgts.begin(); for(cmTargets::const_iterator l = tgts.begin();
l != tgts.end(); l++) l != tgts.end(); l++)
{ {
@ -76,7 +78,12 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
{ {
fout << " \\\nlib" << l->first.c_str() << "${CMAKE_LIB_EXT}"; 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(); fout << "\\\n" << l->first.c_str();
} }
@ -216,21 +223,18 @@ void cmUnixMakefileGenerator::OutputDependencies(std::ostream& fout)
{ {
bool found = false; bool found = false;
// loop over the list of directories that the libraries might // loop over the list of directories that the libraries might
// be in, looking for a LIBRARY=(lib) line. // be in, looking for an ADD_LIBRARY(lib...) line. This would
for(dir = libdirs.begin(); dir != libdirs.end() && !found; ++dir) // be stored in the cache
const char* cacheValue
= cmCacheManager::GetInstance()->GetCacheValue(lib->c_str());
if(cacheValue)
{ {
std::string expression = "LIBRARY.*=.*"; std::string libpath = cacheValue;
expression += lib->c_str(); libpath += "/lib";
if(cmSystemTools::Grep(dir->c_str(), "CMakeTargets.make", libpath += *lib;
expression.c_str())) libpath += "${CMAKE_LIB_EXT}";
{ fout << libpath << " ";
std::string libpath = *dir; found = true;
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; bool found = false;
// loop over the list of directories that the utilities might // 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) for(dir = utildirs.begin(); dir != utildirs.end() && !found; ++dir)
{ {
std::string expression = "EXECUTABLES.*=.*"; std::string expression = "TARGETS =.*";
expression += util->c_str(); expression += util->c_str();
if(cmSystemTools::Grep(dir->c_str(), "CMakeTargets.make", if(cmSystemTools::Grep(dir->c_str(), "CMakeTargets.make",
expression.c_str())) expression.c_str()))
@ -267,6 +271,7 @@ void cmUnixMakefileGenerator::OutputMakeFlags(std::ostream& fout)
fout << "INCLUDE_FLAGS = "; fout << "INCLUDE_FLAGS = ";
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories(); std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
std::vector<std::string>::iterator i; std::vector<std::string>::iterator i;
fout << "-I" << m_Makefile->GetStartDirectory() << " ";
for(i = includes.begin(); i != includes.end(); ++i) for(i = includes.begin(); i != includes.end(); ++i)
{ {
std::string include = *i; std::string include = *i;

View File

@ -44,6 +44,9 @@ bool cmWrapTclCommand::Invoke(std::vector<std::string>& args)
} }
} }
// add in a depend in the vtkWrapTcl executable
m_Makefile->AddUtility("vtkWrapTcl");
// what is the current source dir // what is the current source dir
std::string cdir = m_Makefile->GetCurrentDirectory(); std::string cdir = m_Makefile->GetCurrentDirectory();