Merge topic 'windows-ce-env-helper'
dce54b1
Add command to generate environment for a Windows CE SDK
This commit is contained in:
commit
4df341b041
|
@ -15,18 +15,23 @@
|
||||||
|
|
||||||
int cmVisualStudioWCEPlatformParser::ParseVersion(const char* version)
|
int cmVisualStudioWCEPlatformParser::ParseVersion(const char* version)
|
||||||
{
|
{
|
||||||
std::string vskey = cmGlobalVisualStudioGenerator::GetRegistryBase(version);
|
const std::string registryBase =
|
||||||
vskey += "\\Setup\\VS;ProductDir";
|
cmGlobalVisualStudioGenerator::GetRegistryBase(version);
|
||||||
|
const std::string vckey = registryBase + "\\Setup\\VC;ProductDir";
|
||||||
|
const std::string vskey = registryBase + "\\Setup\\VS;ProductDir";
|
||||||
|
|
||||||
std::string vsInstallPath;
|
if(!cmSystemTools::ReadRegistryValue(vckey.c_str(), this->VcInstallDir) ||
|
||||||
if(!cmSystemTools::ReadRegistryValue(vskey.c_str(), vsInstallPath))
|
!cmSystemTools::ReadRegistryValue(vskey.c_str(), this->VsInstallDir))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
cmSystemTools::ConvertToUnixSlashes(vsInstallPath);
|
cmSystemTools::ConvertToUnixSlashes(this->VcInstallDir);
|
||||||
|
cmSystemTools::ConvertToUnixSlashes(this->VsInstallDir);
|
||||||
|
this->VcInstallDir.append("/");
|
||||||
|
this->VsInstallDir.append("/");
|
||||||
|
|
||||||
const std::string configFilename =
|
const std::string configFilename =
|
||||||
vsInstallPath + "/VC/vcpackages/WCE.VCPlatform.config";
|
this->VcInstallDir + "vcpackages/WCE.VCPlatform.config";
|
||||||
|
|
||||||
return this->ParseFile(configFilename.c_str());
|
return this->ParseFile(configFilename.c_str());
|
||||||
}
|
}
|
||||||
|
@ -93,6 +98,24 @@ void cmVisualStudioWCEPlatformParser::StartElement(const char* name,
|
||||||
this->Macros[macroName] = macroValue;
|
this->Macros[macroName] = macroValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(strcmp(name, "Directories") == 0)
|
||||||
|
{
|
||||||
|
for(const char** attr = attributes; *attr; attr += 2)
|
||||||
|
{
|
||||||
|
if(strcmp(attr[0], "Include") == 0)
|
||||||
|
{
|
||||||
|
this->Include = attr[1];
|
||||||
|
}
|
||||||
|
else if(strcmp(attr[0], "Library") == 0)
|
||||||
|
{
|
||||||
|
this->Library = attr[1];
|
||||||
|
}
|
||||||
|
else if(strcmp(attr[0], "Path") == 0)
|
||||||
|
{
|
||||||
|
this->Path = attr[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmVisualStudioWCEPlatformParser::EndElement(const char* name)
|
void cmVisualStudioWCEPlatformParser::EndElement(const char* name)
|
||||||
|
@ -137,3 +160,16 @@ void cmVisualStudioWCEPlatformParser::CharacterDataHandler(const char* data,
|
||||||
{
|
{
|
||||||
this->CharacterData.append(data, length);
|
this->CharacterData.append(data, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string cmVisualStudioWCEPlatformParser::FixPaths(
|
||||||
|
const std::string& paths) const
|
||||||
|
{
|
||||||
|
std::string ret = paths;
|
||||||
|
cmSystemTools::ReplaceString(ret, "$(PATH)", "%PATH%");
|
||||||
|
cmSystemTools::ReplaceString(ret, "$(VCInstallDir)", VcInstallDir.c_str());
|
||||||
|
cmSystemTools::ReplaceString(ret, "$(VSInstallDir)", VsInstallDir.c_str());
|
||||||
|
cmSystemTools::ReplaceString(ret, "\\", "/");
|
||||||
|
cmSystemTools::ReplaceString(ret, "//", "/");
|
||||||
|
cmSystemTools::ReplaceString(ret, "/", "\\");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -31,6 +31,12 @@ public:
|
||||||
bool Found() const {return this->FoundRequiredName;}
|
bool Found() const {return this->FoundRequiredName;}
|
||||||
const char* GetArchitectureFamily() const;
|
const char* GetArchitectureFamily() const;
|
||||||
std::string GetOSVersion() const;
|
std::string GetOSVersion() const;
|
||||||
|
std::string GetIncludeDirectories() const {
|
||||||
|
return this->FixPaths(this->Include); }
|
||||||
|
std::string GetLibraryDirectories() const {
|
||||||
|
return this->FixPaths(this->Library); }
|
||||||
|
std::string GetPathDirectories() const {
|
||||||
|
return this->FixPaths(this->Path); }
|
||||||
const std::vector<std::string>& GetAvailablePlatforms() const {
|
const std::vector<std::string>& GetAvailablePlatforms() const {
|
||||||
return this->AvailablePlatforms; }
|
return this->AvailablePlatforms; }
|
||||||
|
|
||||||
|
@ -40,8 +46,13 @@ protected:
|
||||||
void CharacterDataHandler(const char* data, int length);
|
void CharacterDataHandler(const char* data, int length);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::string FixPaths(const std::string& paths) const;
|
||||||
|
|
||||||
std::string CharacterData;
|
std::string CharacterData;
|
||||||
|
|
||||||
|
std::string Include;
|
||||||
|
std::string Library;
|
||||||
|
std::string Path;
|
||||||
std::string PlatformName;
|
std::string PlatformName;
|
||||||
std::string OSMajorVersion;
|
std::string OSMajorVersion;
|
||||||
std::string OSMinorVersion;
|
std::string OSMinorVersion;
|
||||||
|
@ -50,6 +61,8 @@ private:
|
||||||
|
|
||||||
const char* RequiredName;
|
const char* RequiredName;
|
||||||
bool FoundRequiredName;
|
bool FoundRequiredName;
|
||||||
|
std::string VcInstallDir;
|
||||||
|
std::string VsInstallDir;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -82,6 +82,7 @@
|
||||||
|
|
||||||
#if defined(CMAKE_HAVE_VS_GENERATORS)
|
#if defined(CMAKE_HAVE_VS_GENERATORS)
|
||||||
#include "cmCallVisualStudioMacro.h"
|
#include "cmCallVisualStudioMacro.h"
|
||||||
|
#include "cmVisualStudioWCEPlatformParser.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(CMAKE_BOOT_MINGW)
|
#if !defined(CMAKE_BOOT_MINGW)
|
||||||
|
@ -1143,6 +1144,10 @@ void CMakeCommandUsage(const char* program)
|
||||||
<< "Available on Windows only:\n"
|
<< "Available on Windows only:\n"
|
||||||
<< " comspec - on windows 9x use this for RunCommand\n"
|
<< " comspec - on windows 9x use this for RunCommand\n"
|
||||||
<< " delete_regv key - delete registry value\n"
|
<< " delete_regv key - delete registry value\n"
|
||||||
|
<< " env_vs8_wince sdkname - displays a batch file which sets the "
|
||||||
|
"environment for the provided Windows CE SDK installed in VS2005\n"
|
||||||
|
<< " env_vs9_wince sdkname - displays a batch file which sets the "
|
||||||
|
"environment for the provided Windows CE SDK installed in VS2008\n"
|
||||||
<< " write_regv key value - write registry value\n"
|
<< " write_regv key value - write registry value\n"
|
||||||
#else
|
#else
|
||||||
<< "Available on UNIX only:\n"
|
<< "Available on UNIX only:\n"
|
||||||
|
@ -1808,6 +1813,14 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
|
||||||
}
|
}
|
||||||
return cmWin32ProcessExecution::Windows9xHack(command.c_str());
|
return cmWin32ProcessExecution::Windows9xHack(command.c_str());
|
||||||
}
|
}
|
||||||
|
else if (args[1] == "env_vs8_wince" && args.size() == 3)
|
||||||
|
{
|
||||||
|
return cmake::WindowsCEEnvironment("8.0", args[2]);
|
||||||
|
}
|
||||||
|
else if (args[1] == "env_vs9_wince" && args.size() == 3)
|
||||||
|
{
|
||||||
|
return cmake::WindowsCEEnvironment("9.0", args[2]);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4001,6 +4014,29 @@ static bool cmakeCheckStampList(const char* stampList)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
int cmake::WindowsCEEnvironment(const char* version, const std::string& name)
|
||||||
|
{
|
||||||
|
#if defined(CMAKE_HAVE_VS_GENERATORS)
|
||||||
|
cmVisualStudioWCEPlatformParser parser(name.c_str());
|
||||||
|
parser.ParseVersion(version);
|
||||||
|
if (parser.Found())
|
||||||
|
{
|
||||||
|
std::cout << "@echo off" << std::endl;
|
||||||
|
std::cout << "echo Environment Selection: " << name << std::endl;
|
||||||
|
std::cout << "set PATH=" << parser.GetPathDirectories() << std::endl;
|
||||||
|
std::cout << "set INCLUDE=" << parser.GetIncludeDirectories() <<std::endl;
|
||||||
|
std::cout << "set LIB=" << parser.GetLibraryDirectories() <<std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
(void)version;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::cerr << "Could not find " << name;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// For visual studio 2005 and newer manifest files need to be embeded into
|
// For visual studio 2005 and newer manifest files need to be embeded into
|
||||||
// exe and dll's. This code does that in such a way that incremental linking
|
// exe and dll's. This code does that in such a way that incremental linking
|
||||||
// still works.
|
// still works.
|
||||||
|
|
|
@ -445,6 +445,8 @@ protected:
|
||||||
std::string const& link);
|
std::string const& link);
|
||||||
static int ExecuteEchoColor(std::vector<std::string>& args);
|
static int ExecuteEchoColor(std::vector<std::string>& args);
|
||||||
static int ExecuteLinkScript(std::vector<std::string>& args);
|
static int ExecuteLinkScript(std::vector<std::string>& args);
|
||||||
|
static int WindowsCEEnvironment(const char* version,
|
||||||
|
const std::string& name);
|
||||||
static int VisualStudioLink(std::vector<std::string>& args, int type);
|
static int VisualStudioLink(std::vector<std::string>& args, int type);
|
||||||
static int VisualStudioLinkIncremental(std::vector<std::string>& args,
|
static int VisualStudioLinkIncremental(std::vector<std::string>& args,
|
||||||
int type,
|
int type,
|
||||||
|
|
Loading…
Reference in New Issue