CMake/Source/cmGlobalVisualStudio7Genera...

177 lines
6.3 KiB
C
Raw Normal View History

Simplify CMake per-source license notices Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
2016-09-27 22:01:08 +03:00
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
2002-09-04 23:23:56 +04:00
#ifndef cmGlobalVisualStudio7Generator_h
#define cmGlobalVisualStudio7Generator_h
#include "cmGlobalVisualStudioGenerator.h"
#include "cmGlobalGeneratorFactory.h"
2002-09-04 23:23:56 +04:00
class cmTarget;
struct cmIDEFlagTable;
2002-09-04 23:23:56 +04:00
/** \class cmGlobalVisualStudio7Generator
* \brief Write a Unix makefiles.
*
* cmGlobalVisualStudio7Generator manages UNIX build process for a tree
*/
class cmGlobalVisualStudio7Generator : public cmGlobalVisualStudioGenerator
2002-09-04 23:23:56 +04:00
{
public:
cmGlobalVisualStudio7Generator(cmake* cm,
const std::string& platformName = "");
~cmGlobalVisualStudio7Generator();
///! Get the name for the platform.
std::string const& GetPlatformName() const;
2002-09-04 23:23:56 +04:00
///! Create a local generator appropriate to this Global Generator
virtual cmLocalGenerator* CreateLocalGenerator(cmMakefile* mf);
2002-09-04 23:23:56 +04:00
virtual bool SetSystemName(std::string const& s, cmMakefile* mf);
virtual bool SetGeneratorPlatform(std::string const& p, cmMakefile* mf);
/**
* Utilized by the generator factory to determine if this generator
* supports toolsets.
*/
static bool SupportsToolset() { return false; }
/**
* Utilized by the generator factory to determine if this generator
* supports platforms.
*/
static bool SupportsPlatform() { return false; }
2002-09-04 23:23:56 +04:00
/**
2014-10-10 03:22:45 +04:00
* Try to determine system information such as shared library
2011-10-13 21:51:18 +04:00
* extension, pthreads, byte order etc.
2002-09-04 23:23:56 +04:00
*/
virtual void EnableLanguage(std::vector<std::string> const& languages,
cmMakefile*, bool optional);
2002-09-04 23:23:56 +04:00
/**
2011-03-19 13:41:00 +03:00
* Try running cmake and building a file. This is used for dynamically
2002-09-04 23:23:56 +04:00
* loaded commands, not as part of the usual build process.
*/
virtual void GenerateBuildCommand(
std::vector<std::string>& makeCommand, const std::string& makeProgram,
const std::string& projectName, const std::string& projectDir,
const std::string& targetName, const std::string& config, bool fast,
bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>());
2002-09-04 23:23:56 +04:00
/**
* Generate the DSW workspace file.
*/
virtual void OutputSLNFile();
///! Lookup a stored GUID or compute one deterministically.
std::string GetGUID(std::string const& name);
/** Append the subdirectory for the given configuration. */
virtual void AppendDirectoryForConfig(const std::string& prefix,
const std::string& config,
const std::string& suffix,
std::string& dir);
2006-02-25 01:35:35 +03:00
///! What is the configurations directory variable called?
virtual const char* GetCMakeCFGIntDir() const
{
return "$(ConfigurationName)";
}
2006-02-25 01:35:35 +03:00
/** Return true if the target project file should have the option
LinkLibraryDependencies and link to .sln dependencies. */
virtual bool NeedLinkLibraryDependencies(cmGeneratorTarget*)
{
return false;
}
const char* GetIntelProjectVersion();
virtual void FindMakeProgram(cmMakefile*);
/** Is the Microsoft Assembler enabled? */
bool IsMasmEnabled() const { return this->MasmEnabled; }
// Encoding for Visual Studio files
virtual std::string Encoding();
2015-05-17 12:33:04 +03:00
cmIDEFlagTable const* ExtraFlagTable;
2003-05-09 00:59:27 +04:00
protected:
virtual void Generate();
virtual const char* GetIDEVersion() = 0;
std::string const& GetDevEnvCommand();
virtual std::string FindDevEnvCommand();
static const char* ExternalProjectType(const char* location);
2011-10-13 21:51:18 +04:00
virtual void OutputSLNFile(cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators);
virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators) = 0;
virtual void WriteProject(std::ostream& fout, const std::string& name,
const char* path, const cmGeneratorTarget* t) = 0;
virtual void WriteProjectDepends(std::ostream& fout, const std::string& name,
const char* path,
cmGeneratorTarget const* t) = 0;
virtual void WriteProjectConfigurations(
std::ostream& fout, const std::string& name, cmState::TargetType type,
std::vector<std::string> const& configs,
const std::set<std::string>& configsPartOfDefaultBuild,
const std::string& platformMapping = "") = 0;
virtual void WriteSLNGlobalSections(std::ostream& fout,
cmLocalGenerator* root);
2003-05-09 00:59:27 +04:00
virtual void WriteSLNFooter(std::ostream& fout);
virtual void WriteSLNHeader(std::ostream& fout) = 0;
virtual std::string WriteUtilityDepend(const cmGeneratorTarget* target);
2003-05-09 00:59:27 +04:00
virtual void WriteTargetsToSolution(
std::ostream& fout, cmLocalGenerator* root,
2009-07-10 17:12:39 +04:00
OrderedTargetDependSet const& projectTargets);
virtual void WriteTargetDepends(
std::ostream& fout, OrderedTargetDependSet const& projectTargets);
virtual void WriteTargetConfigurations(
std::ostream& fout, std::vector<std::string> const& configs,
OrderedTargetDependSet const& projectTargets);
2011-10-13 21:51:18 +04:00
virtual void WriteExternalProject(
std::ostream& fout, const std::string& name, const char* path,
const char* typeGuid, const std::set<std::string>& dependencies) = 0;
2002-09-04 23:23:56 +04:00
std::string ConvertToSolutionPath(const char* path);
2006-02-25 01:35:35 +03:00
std::set<std::string> IsPartOfDefaultBuild(
std::vector<std::string> const& configs,
OrderedTargetDependSet const& projectTargets,
cmGeneratorTarget const* target);
bool IsDependedOn(OrderedTargetDependSet const& projectTargets,
cmGeneratorTarget const* target);
std::map<std::string, std::string> GUIDMap;
virtual void WriteFolders(std::ostream& fout);
virtual void WriteFoldersContent(std::ostream& fout);
std::map<std::string, std::set<std::string> > VisualStudioFolders;
// Set during OutputSLNFile with the name of the current project.
// There is one SLN file per project.
2006-03-15 19:02:08 +03:00
std::string CurrentProject;
std::string GeneratorPlatform;
std::string DefaultPlatformName;
bool MasmEnabled;
private:
char* IntelProjectVersion;
std::string DevEnvCommand;
bool DevEnvCommandInitialized;
virtual std::string GetVSMakeProgram() { return this->GetDevEnvCommand(); }
2002-09-04 23:23:56 +04:00
};
#define CMAKE_CHECK_BUILD_SYSTEM_TARGET "ZERO_CHECK"
2002-09-04 23:23:56 +04:00
#endif