fix bug in env settings

This commit is contained in:
Ken Martin 2003-01-09 12:18:22 -05:00
parent bd217452cd
commit 05955d6403
4 changed files with 40 additions and 38 deletions

View File

@ -21,46 +21,11 @@
cmGlobalGenerator::cmGlobalGenerator()
{
// Save the environment variables CXX and CC
m_CXXEnvironment = getenv("CXX");
m_CCEnvironment = getenv("CC");
// do nothing duh
}
cmGlobalGenerator::~cmGlobalGenerator()
{
// restore the original environment variables CXX and CC
// Restor CC
static char envCC[5000];
std::string env = "CC=";
if(m_CCEnvironment)
{
env += m_CCEnvironment;
}
std::string::size_type size = env.size();
if(size > 4999)
{
size = 4999;
}
strncpy(envCC, env.c_str(), size);
envCC[4999] = 0;
putenv(envCC);
// Restore CXX
static char envCXX[5000];
env = "CXX=";
if(m_CXXEnvironment)
{
env += m_CXXEnvironment;
}
size = env.size();
if(size > 4999)
{
size = 4999;
}
strncpy(envCXX, env.c_str(), size);
envCXX[4999] = 0;
putenv(envCXX);
// Delete any existing cmLocalGenerators
unsigned int i;
for (i = 0; i < m_LocalGenerators.size(); ++i)

View File

@ -109,8 +109,6 @@ protected:
private:
std::map<cmStdString, bool> m_LanguageEnabled;
const char* m_CXXEnvironment;
const char* m_CCEnvironment;
};
#endif

View File

@ -708,9 +708,46 @@ void cmake::SetGlobalGenerator(cmGlobalGenerator *gg)
if (m_GlobalGenerator)
{
delete m_GlobalGenerator;
// restore the original environment variables CXX and CC
// Restor CC
static char envCC[5000];
std::string env = "CC=";
if(m_CCEnvironment)
{
env += m_CCEnvironment;
}
std::string::size_type size = env.size();
if(size > 4999)
{
size = 4999;
}
strncpy(envCC, env.c_str(), size);
envCC[4999] = 0;
putenv(envCC);
// Restore CXX
static char envCXX[5000];
env = "CXX=";
if(m_CXXEnvironment)
{
env += m_CXXEnvironment;
}
size = env.size();
if(size > 4999)
{
size = 4999;
}
strncpy(envCXX, env.c_str(), size);
envCXX[4999] = 0;
putenv(envCXX);
}
// set the new
m_GlobalGenerator = gg;
// Save the environment variables CXX and CC
m_CXXEnvironment = getenv("CXX");
m_CCEnvironment = getenv("CC");
// set the cmake instance just to be sure
gg->SetCMakeInstance(this);
}

View File

@ -266,5 +266,7 @@ private:
bool m_Local;
bool m_InTryCompile;
std::string m_CMakeCommand;
const char* m_CXXEnvironment;
const char* m_CCEnvironment;
};