1 #ifndef PROJECT_TREE_BUILDER__TOOLS_IMPLEMENT__HPP
2 #define PROJECT_TREE_BUILDER__TOOLS_IMPLEMENT__HPP
52 template <
class ConfTrait>
57 const string& configuration_name,
69 #define SUPPORT_CONFIGURATION_OPTION(opt) \
70 virtual string opt(void) const \
72 return GetConfigurationOpt(m_MsvcMetaMakefile, \
73 m_MsvcProjectMakefile, \
78 virtual string Name(
void)
const
99 ConfTrait::ConfigurationType(),
"Configuration",
"ConfigurationType");
121 return "$(IntDir)BuildLog_$(TargetName).htm";
142 string defines =
config.m_Debug ?
"_DEBUG;" :
"NDEBUG;" ;
143 switch (target_type) {
145 defines +=
"WIN32;_LIB;";
148 defines +=
"WIN32;_CONSOLE;NCBI_APP_BUILT_AS=$(TargetName);";
151 defines +=
"WIN32;_WINDOWS;_USRDLL;";
174 const string& runtimeLibraryOption,
178 const list<string>& defines,
179 const string& project_id)
191 virtual string Name(
void)
const
193 return "VCCLCompilerTool";
196 #define SUPPORT_COMPILER_OPTION(opt) \
197 virtual string opt(void) const \
199 return GetCompilerOpt(m_MsvcMetaMakefile, \
200 m_MsvcProjectMakefile, \
219 const string& define = *p;
224 string opt(
"PreprocessorDefinitions");
238 defines +=
"%(PreprocessorDefinitions)";
257 "DebugInformationFormat",
306 template <class ConfTrait >
311 const string& additional_library_directories,
312 const string& project_id,
316 :m_AdditionalOptions (additional_options),
317 m_AdditionalLibraryDirectories(additional_library_directories),
324 virtual string Name(
void)
const
326 return "VCLinkerTool";
330 string options(m_AdditionalOptions);
335 options +=
" " + add;
340 options +=
" " + add;
345 #define SUPPORT_LINKER_OPTION(opt) \
346 virtual string opt(void) const \
348 return GetLinkerOpt(m_MsvcMetaMakefile, \
349 m_MsvcProjectMakefile, \
357 virtual
string GenerateDebugInformation(
void)
const
364 "GenerateDebugInformation",
379 virtual
string AdditionalLibraryDirectories(
void)
const
384 "AdditionalLibraryDirectories",
386 if (!add.empty() && !m_AdditionalLibraryDirectories.empty()) {
389 return add + m_AdditionalLibraryDirectories;
397 string m_AdditionalOptions;
398 string m_AdditionalLibraryDirectories;
411 #define SUPPORT_DUMMY_OPTION(opt) \
412 virtual string opt(void) const \
431 virtual string Name(
void)
const
433 return "VCLinkerTool";
480 virtual string Name(
void)
const
482 return "VCLibrarianTool";
485 #define SUPPORT_LIBRARIAN_OPTION(opt) \
486 virtual string opt(void) const \
488 return GetLibrarianOpt(m_MsvcMetaMakefile, \
489 m_MsvcProjectMakefile, \
528 virtual string Name(
void)
const
530 return "VCLibrarianTool";
553 virtual string Name(
void)
const
555 return "VCPreBuildEventTool";
569 : m_LibDepends(lib_depends), m_MakeType(maketype)
572 virtual string Name(
void)
const
574 return "VCPreBuildEventTool";
582 command_line +=
"@echo " + echo +
" project\n";
585 if ( !m_LibDepends.empty() ) {
587 ITERATE(list<CProjKey>, p, m_LibDepends) {
588 if (
tree->m_Projects.find(*p) ==
tree->m_Projects.
end()) {
589 command_line +=
"@echo ERROR: This project depends on missing " +
CreateProjectName(*p) +
"\n";
590 command_line +=
"exit 1\n";
622 if ( !m_LibDepends.empty() ) {
625 cmd +=
"asn_prebuild.bat\"";
626 cmd +=
" \"$(OutDir)\" \"$(ConfigurationName)\" \"$(SolutionPath)\"";
628 ITERATE(list<CProjKey>, p, m_LibDepends)
635 command_line +=
"@echo " +
cmd +
"\n" +
cmd;
648 #define DEFINE_NAME_ONLY_DUMMY_TOOL(C,I,N)\
655 virtual string Name(void) const\
661 C& operator= (const C&);\
666 "VCCustomBuildTool");
674 "VCPostBuildEventTool");
678 "VCPreBuildEventTool");
683 "VCPreLinkEventTool");
694 template <
class DebugReleaseTrait>
708 virtual string Name(
void)
const
710 return "VCResourceCompilerTool";
718 #define SUPPORT_RESOURCE_COMPILER_OPTION(opt) \
719 virtual string opt(void) const \
721 return GetResourceCompilerOpt(m_MsvcMetaMakefile, \
722 m_MsvcProjectMakefile, \
733 return DebugReleaseTrait::PreprocessorDefinitions();
762 virtual string Name(
void)
const
764 return "VCResourceCompilerTool";
784 "VCWebServiceProxyGeneratorTool");
788 "VCXMLDataGeneratorTool");
792 "VCManagedWrapperGeneratorTool");
796 "VCAuxiliaryManagedWrapperGeneratorTool");
CConfigurationImpl(const string &output_directory, const string &configuration_name, const IMsvcMetaMakefile &project_makefile, const IMsvcMetaMakefile &meta_makefile, const SConfigInfo &config)
const IMsvcMetaMakefile & m_MsvcMetaMakefile
virtual string BuildLogFile(void) const
virtual string CharacterSet(void) const
CConfigurationImpl & operator=(const CConfigurationImpl &)
CConfigurationImpl(const CConfigurationImpl &)
virtual string IntermediateDirectory(void) const
string m_ConfigurationName
virtual string OutputDirectory(void) const
virtual string Name(void) const
const IMsvcMetaMakefile & m_MsvcProjectMakefile
virtual string PlatformToolset(void) const
virtual string ConfigurationType(void) const
static EMsvcPlatform GetMsvcPlatform(void)
static string GetConfigNameKeyword(void)
static EMsvcVersion GetMsvcVersion(void)
const CProjectItemsTree * GetCurrentBuildTree(void) const
string GetProjectTreeRoot(void) const
pre_order_iterator end() const
string MakeFileTypeAsString(EMakeFileType type)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
static string AddTrailingPathSeparator(const string &path)
Add trailing path separator, if needed.
static string ConcatPath(const string &first, const string &second)
Concatenate two parts of the path for the current OS.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
string GetConfigurationOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Get option with taking into account 2 makefiles : matafile and project_file.
string GetCompilerOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Compiler.
string GetLinkerOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Linker.
string ConfigName(const string &config)
return <config>|Win32 as needed by MSVC compiler
string CreateProjectName(const CProjKey &project_id)
Project naming schema.
Defines unified interface to application:
CProjBulderApp & GetApp(void)
access to App singleton