diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2002-12-03 20:24:03 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2002-12-03 20:24:03 (GMT) |
commit | de316cac0502503882c04a6c4172296f2abf2877 (patch) | |
tree | 2642462023ac8bcf702ed564c47902da1c06413d /Source | |
parent | e802482b27400e16be9936b716c80cf952a5c2c5 (diff) | |
download | CMake-de316cac0502503882c04a6c4172296f2abf2877.zip CMake-de316cac0502503882c04a6c4172296f2abf2877.tar.gz CMake-de316cac0502503882c04a6c4172296f2abf2877.tar.bz2 |
remove unused files
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Source/cmLocalBorlandMakefileGenerator.cxx | 432 | ||||
-rw-r--r-- | Source/cmLocalBorlandMakefileGenerator.h | 60 | ||||
-rw-r--r-- | Source/cmLocalNMakeMakefileGenerator.cxx | 707 | ||||
-rw-r--r-- | Source/cmLocalNMakeMakefileGenerator.h | 90 |
5 files changed, 0 insertions, 1291 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 1cb7e1e..755aafb 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -63,9 +63,7 @@ IF (WIN32) cmGlobalVisualStudio7Generator.cxx cmLocalVisualStudio7Generator.cxx cmGlobalBorlandMakefileGenerator.h - cmLocalBorlandMakefileGenerator.h cmGlobalNMakeMakefileGenerator.h - cmLocalNMakeMakefileGenerator.h cmGlobalVisualStudio6Generator.h cmLocalVisualStudio6Generator.h cmGlobalVisualStudio7Generator.h diff --git a/Source/cmLocalBorlandMakefileGenerator.cxx b/Source/cmLocalBorlandMakefileGenerator.cxx deleted file mode 100644 index cbc2737..0000000 --- a/Source/cmLocalBorlandMakefileGenerator.cxx +++ /dev/null @@ -1,432 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#include "cmLocalBorlandMakefileGenerator.h" -#include "cmMakefile.h" -#include "cmStandardIncludes.h" -#include "cmSystemTools.h" -#include "cmSourceFile.h" -#include "cmMakeDepend.h" -#include "cmCacheManager.h" -#include "cmGeneratedFileStream.h" -#include "windows.h" -#include <stdio.h> - -cmLocalBorlandMakefileGenerator::cmLocalBorlandMakefileGenerator() -{ - this->SetLibraryPathOption("-L"); - this->SetLibraryLinkOption(""); -} - -cmLocalBorlandMakefileGenerator::~cmLocalBorlandMakefileGenerator() -{ -} - - -void cmLocalBorlandMakefileGenerator::OutputMakeVariables(std::ostream& fout) -{ - fout << "# NMake Makefile generated by cmake\n"; - const char* variables = - "# general varibles used in the makefile\n" - "\n" - "CMAKE_STANDARD_WINDOWS_LIBRARIES = @CMAKE_STANDARD_WINDOWS_LIBRARIES@\n" - "CMAKE_C_FLAGS = @CMAKE_C_FLAGS@ @BUILD_FLAGS@\n" - "CMAKE_OBJECT_FILE_SUFFIX = @CMAKE_OBJECT_FILE_SUFFIX@\n" - "CMAKE_EXECUTABLE_SUFFIX = @CMAKE_EXECUTABLE_SUFFIX@\n" - "CMAKE_STATICLIB_SUFFIX = @CMAKE_STATICLIB_SUFFIX@\n" - "CMAKE_SHLIB_SUFFIX = @CMAKE_SHLIB_SUFFIX@\n" - "CMAKE_SHLIB_CFLAGS = -tWR\n" - "CMAKE_LINKER_FLAGS = @CMAKE_LINKER_FLAGS@ @LINKER_BUILD_FLAGS@\n" - "CMAKE_CXX_FLAGS = -P @CMAKE_CXX_FLAGS@ @BUILD_FLAGS@\n" - "!IF \"$(OS)\" == \"Windows_NT\"\n" - "NULL=\n" - "!ELSE \n" - "NULL=nul\n" - "!ENDIF \n"; - std::string buildType = "CMAKE_CXX_FLAGS_"; - buildType += m_Makefile->GetDefinition("CMAKE_BUILD_TYPE"); - buildType = cmSystemTools::UpperCase(buildType); - m_Makefile->AddDefinition("BUILD_FLAGS", - m_Makefile->GetDefinition( - buildType.c_str())); - - buildType = "CMAKE_LINKER_FLAGS_"; - buildType += m_Makefile->GetDefinition("CMAKE_BUILD_TYPE"); - buildType = cmSystemTools::UpperCase(buildType); - m_Makefile->AddDefinition("LINKER_BUILD_FLAGS", - m_Makefile->GetDefinition( - buildType.c_str())); - - std::string replaceVars = variables; - m_Makefile->ExpandVariablesInString(replaceVars); - std::string ccompiler = m_Makefile->GetDefinition("CMAKE_C_COMPILER"); - fout << "CMAKE_C_COMPILER = " - << cmSystemTools::ConvertToOutputPath(ccompiler.c_str()) - << "\n"; - std::string cxxcompiler = m_Makefile->GetDefinition("CMAKE_CXX_COMPILER"); - fout << "CMAKE_CXX_COMPILER = " - << cmSystemTools::ConvertToOutputPath(cxxcompiler.c_str()) - << "\n"; - - if(m_Makefile->GetDefinition("CMAKE_EDIT_COMMAND")) - { - fout << "CMAKE_EDIT_COMMAND = " - << this->ShortPath(m_Makefile->GetDefinition("CMAKE_EDIT_COMMAND")) - << "\n"; - } - - std::string cmakecommand = m_Makefile->GetDefinition("CMAKE_COMMAND"); - fout << "CMAKE_COMMAND = " - << this->ShortPath(cmakecommand.c_str()) << "\n"; - fout << "RM = " << this->ShortPath(cmakecommand.c_str()) << " -E remove -f\n"; - - fout << replaceVars.c_str(); - fout << "CMAKE_CURRENT_SOURCE = " - << ShortPath(m_Makefile->GetStartDirectory() ) - << "\n"; - fout << "CMAKE_CURRENT_BINARY = " - << ShortPath(m_Makefile->GetStartOutputDirectory()) - << "\n"; - fout << "CMAKE_SOURCE_DIR = " - << ShortPath(m_Makefile->GetHomeDirectory()) << "\n"; - fout << "CMAKE_BINARY_DIR = " - << ShortPath(m_Makefile->GetHomeOutputDirectory() ) - << "\n"; - // Output Include paths - fout << "INCLUDE_FLAGS = "; - std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories(); - std::vector<std::string>::iterator i; - fout << "-I" << - this->ShortPath(m_Makefile->GetStartDirectory()) << " "; - for(i = includes.begin(); i != includes.end(); ++i) - { - std::string include = *i; - // Don't output a -I for the standard include path "/usr/include". - // This can cause problems with certain standard library - // implementations because the wrong headers may be found first. - fout << "-I" << cmSystemTools::ConvertToOutputPath(i->c_str()).c_str() << " "; - } - fout << m_Makefile->GetDefineFlags(); - fout << "\n\n"; -} - - - -void -cmLocalBorlandMakefileGenerator:: -OutputBuildObjectFromSource(std::ostream& fout, - const char* shortName, - const cmSourceFile& source, - const char* extraCompileFlags, - bool shared) -{ - // force shared flag if building shared libraries - if(cmSystemTools::IsOn(m_Makefile->GetDefinition("BUILD_SHARED_LIBS"))) - { - shared = true; - } - // Header files shouldn't have build rules. - if(source.GetPropertyAsBool("HEADER_FILE_ONLY")) - { - return; - } - - - - std::string comment = "Build "; - std::string objectFile = std::string(shortName) + - this->GetOutputExtension(source.GetSourceExtension().c_str()); - objectFile = cmSystemTools::ConvertToOutputPath(objectFile.c_str()); - comment += objectFile + " From "; - comment += source.GetFullPath(); - std::string compileCommand; - std::string ext = source.GetSourceExtension(); - if(ext == "c" ) - { - compileCommand = "$(CMAKE_C_COMPILER) $(CMAKE_C_FLAGS) "; - compileCommand += extraCompileFlags; - if(shared) - { - compileCommand += "$(CMAKE_SHLIB_CFLAGS) "; - } - compileCommand += " -o"; - compileCommand += objectFile; - compileCommand += " $(INCLUDE_FLAGS) -c "; - compileCommand += - cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str()); - } - else if (ext == "rc") - { - compileCommand = "$(RC) $(INCLUDE_FLAGS) -o\""; - compileCommand += objectFile; - compileCommand += "\" "; - compileCommand += - cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str()); - } - else if (ext == "def") - { - // no rule to output for this one - return; - } - // assume c++ if not c rc or def - else - { - compileCommand = "$(CMAKE_CXX_COMPILER) $(CMAKE_CXX_FLAGS) "; - compileCommand += extraCompileFlags; - if(shared) - { - compileCommand += "$(CMAKE_SHLIB_CFLAGS) "; - } - compileCommand += " -o"; - compileCommand += objectFile; - compileCommand += " $(INCLUDE_FLAGS) -c "; - compileCommand += - cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str()); - } - this->OutputMakeRule(fout, - comment.c_str(), - objectFile.c_str(), - cmSystemTools::ConvertToOutputPath( - source.GetFullPath().c_str()).c_str(), - compileCommand.c_str()); -} - -void cmLocalBorlandMakefileGenerator::OutputSharedLibraryRule(std::ostream& fout, - const char* name, - const cmTarget &t) -{ - std::string target = m_LibraryOutputPath + name; - std::string libpath = target + ".lib"; - target += ".dll"; - target = cmSystemTools::ConvertToOutputPath(target.c_str()); - libpath = cmSystemTools::ConvertToOutputPath(libpath.c_str()); - std::string depend = "$("; - depend += this->CreateMakeVariable(name, "_SRC_OBJS"); - depend += ") $(" + this->CreateMakeVariable(name, "_DEPEND_LIBS") + ")"; - std::string command = "$(CMAKE_CXX_COMPILER) -tWD $(CMAKE_SHLIB_CFLAGS) $(CMAKE_LINKER_FLAGS) @&&|\n"; - // must be executable name - command += "-e"; - command += target; - command += " "; - cmOStringStream linklibs; - this->OutputLinkLibraries(linklibs, name, t); - // then the linker options -L and libraries (any other order will fail!) - command += linklibs.str(); - // then list of object files - command += " $(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") "; - std::string command2 = "implib -w "; - command2 += libpath + " " + target; - const std::vector<cmSourceFile*>& sources = t.GetSourceFiles(); - for(std::vector<cmSourceFile*>::const_iterator i = sources.begin(); - i != sources.end(); ++i) - { - if((*i)->GetSourceExtension() == "def") - { - command += ""; - command += (*i)->GetFullPath(); - } - } - command += "\n|\n"; - - std::string customCommands = this->CreateTargetRules(t, name); - const char* cc = 0; - if(customCommands.size() > 0) - { - cc = customCommands.c_str(); - } - this->OutputMakeRule(fout, "rules for a shared library", - target.c_str(), - depend.c_str(), - command.c_str(), - command2.c_str(), - cc); -} - -void cmLocalBorlandMakefileGenerator::OutputModuleLibraryRule(std::ostream& fout, - const char* name, - const cmTarget &target) -{ - this->OutputSharedLibraryRule(fout, name, target); -} - -void cmLocalBorlandMakefileGenerator::OutputStaticLibraryRule(std::ostream& fout, - const char* name, - const cmTarget &t) -{ - std::string target = m_LibraryOutputPath + std::string(name) + ".lib"; - target = cmSystemTools::ConvertToOutputPath(target.c_str()); - std::string depend = "$("; - depend += this->CreateMakeVariable(name, "_SRC_OBJS") + ") "; - std::string command = "tlib @&&|\n\t /p512 /a "; - command += target; - command += " "; - std::string deleteCommand = "if exist "; - deleteCommand += target; - deleteCommand += " del "; - deleteCommand += target; - - command += " $("; - command += this->CreateMakeVariable(name, "_SRC_OBJS_QUOTED") + ")"; - command += "\n|"; - std::string comment = "rule to build static library: "; - comment += name; - std::string customCommands = this->CreateTargetRules(t, name); - const char* cc = 0; - if(customCommands.size() > 0) - { - cc = customCommands.c_str(); - } - this->OutputMakeRule(fout, - comment.c_str(), - target.c_str(), - depend.c_str(), - deleteCommand.c_str(), - command.c_str(), cc); -} - -void cmLocalBorlandMakefileGenerator::OutputExecutableRule(std::ostream& fout, - const char* name, - const cmTarget &t) -{ - std::string target = m_ExecutableOutputPath + name + m_ExecutableExtension; - target = cmSystemTools::ConvertToOutputPath(target.c_str()); - std::string depend = "$("; - depend += this->CreateMakeVariable(name, "_SRC_OBJS") + ") $(" + - this->CreateMakeVariable(name, "_DEPEND_LIBS") + ")"; - std::string command = - "$(CMAKE_CXX_COMPILER) @&&|\n"; - command += " $(CMAKE_LINKER_FLAGS) -e" + target; - if(cmSystemTools::IsOn(m_Makefile->GetDefinition("BUILD_SHARED_LIBS"))) - { - command += " $(CMAKE_SHLIB_CFLAGS) "; - } - if(t.GetType() == cmTarget::WIN32_EXECUTABLE) - { - command += "-tW -tWM "; - } - else - { - command += " -tWC "; - } - cmOStringStream linklibs; - this->OutputLinkLibraries(linklibs, 0, t); - command += linklibs.str(); - command += " $(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ")"; - command += "\n|"; - std::string comment = "rule to build executable: "; - comment += name; - std::string customCommands = this->CreateTargetRules(t, name); - const char* cc = 0; - if(customCommands.size() > 0) - { - cc = customCommands.c_str(); - } - this->OutputMakeRule(fout, - comment.c_str(), - target.c_str(), - depend.c_str(), - command.c_str(), cc); -} - - - - -std::string cmLocalBorlandMakefileGenerator::GetOutputExtension(const char* s) -{ - std::string sourceExtension = s; - if(sourceExtension == "def") - { - return ""; - } - if(sourceExtension == "ico" || sourceExtension == "rc2") - { - return ""; - } - if(sourceExtension == "rc") - { - return ".res"; - } - return ".obj"; -} - - - -bool cmLocalBorlandMakefileGenerator::SamePath(const char* path1, const char* path2) -{ - // first check to see if they are the same anyway - if (strcmp(path1, path2) == 0) - { - return true; - } - // next short path and lower case both of them for the compare - return - cmSystemTools::LowerCase(ShortPath(path1)) == - cmSystemTools::LowerCase(ShortPath(path2)); -} - - -// borland make does not support variables that are longer than 32 -// so use this function to rename any long ones -std::string cmLocalBorlandMakefileGenerator::CreateMakeVariable(const char* s, const char* s2) -{ - std::string unmodified = s; - unmodified += s2; - // see if th - std::map<cmStdString, cmStdString>::iterator i = m_MakeVariableMap.find(unmodified); - if(i != m_MakeVariableMap.end()) - { - return i->second; - } - std::string ret = unmodified; - // if the string is greater the 32 chars it is an invalid vairable name - // for borland make - if(ret.size() > 32) - { - std::string str1 = s; - std::string str2 = s2; - // we must shorten the combined string by 4 charactors - // keep no more than 24 charactors from the second string - if(str2.size() > 24) - { - str2 = str2.substr(0, 24); - } - if(str1.size() + str2.size() > 27) - { - str1 = str1.substr(0, 27 - str2.size()); - } - char buffer[5]; - int i = 0; - sprintf(buffer, "%04d", i); - ret = str1 + str2 + buffer; - while(m_ShortMakeVariableMap.count(ret) && i < 1000) - { - ++i; - sprintf(buffer, "%04d", i); - ret = str1 + str2 + buffer; - } - if(i == 1000) - { - cmSystemTools::Error("Borland makefile varible length too long"); - return unmodified; - } - // once an unused variable is found - m_ShortMakeVariableMap[ret] = "1"; - } - // always make an entry into the unmodified to varible map - m_MakeVariableMap[unmodified] = ret; - return ret; -} - diff --git a/Source/cmLocalBorlandMakefileGenerator.h b/Source/cmLocalBorlandMakefileGenerator.h deleted file mode 100644 index 5f03c93..0000000 --- a/Source/cmLocalBorlandMakefileGenerator.h +++ /dev/null @@ -1,60 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#ifndef cmBorlandMakefileGenerator_h -#define cmBorlandMakefileGenerator_h - -#include "cmLocalNMakeMakefileGenerator.h" - -/** \class cmLocalBorlandMakefileGenerator - * \brief Write an Borland makefile. - * - * cmLocalBorlandMakefileGenerator produces a Unix makefile from its - * member m_Makefile. - */ -class cmLocalBorlandMakefileGenerator : public cmLocalNMakeMakefileGenerator -{ -public: - ///! Set cache only and recurse to false by default. - cmLocalBorlandMakefileGenerator(); - - virtual ~cmLocalBorlandMakefileGenerator(); - -protected: - virtual void OutputMakeVariables(std::ostream&); - - virtual void OutputBuildObjectFromSource(std::ostream& fout, - const char* shortName, - const cmSourceFile& source, - const char* extraCompileFlags, - bool sharedTarget); - virtual void OutputSharedLibraryRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputModuleLibraryRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputStaticLibraryRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputExecutableRule(std::ostream&, const char* name, - const cmTarget &); - virtual std::string GetOutputExtension(const char* sourceExtension); - ///! return true if the two paths are the same (checks short paths) - virtual bool SamePath(const char* path1, const char* path2); - virtual std::string CreateMakeVariable(const char* s, const char* s2); - std::map<cmStdString, cmStdString> m_MakeVariableMap; - std::map<cmStdString, cmStdString> m_ShortMakeVariableMap; -}; - -#endif diff --git a/Source/cmLocalNMakeMakefileGenerator.cxx b/Source/cmLocalNMakeMakefileGenerator.cxx deleted file mode 100644 index da8edbf..0000000 --- a/Source/cmLocalNMakeMakefileGenerator.cxx +++ /dev/null @@ -1,707 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#include "cmLocalNMakeMakefileGenerator.h" -#include "cmMakefile.h" -#include "cmStandardIncludes.h" -#include "cmSystemTools.h" -#include "cmSourceFile.h" -#include "cmMakeDepend.h" -#include "cmCacheManager.h" -#include "cmGeneratedFileStream.h" -#include "windows.h" - - -cmLocalNMakeMakefileGenerator::cmLocalNMakeMakefileGenerator() -{ - this->SetLibraryPathOption("@CMAKE_C_LIBPATH_FLAG@"); // Use @ here - this->SetObjectFileExtension("$(CMAKE_OBJECT_FILE_SUFFIX)"); - this->SetExecutableExtension("$(CMAKE_EXECUTABLE_SUFFIX)"); - this->SetLibraryPrefix(""); - this->SetStaticLibraryExtension("$(CMAKE_STATICLIB_SUFFIX)"); - this->SetSharedLibraryExtension("$(CMAKE_SHLIB_SUFFIX)"); -} - -cmLocalNMakeMakefileGenerator::~cmLocalNMakeMakefileGenerator() -{ -} - -// convert to windows short paths if there are spaces -// in path -std::string cmLocalNMakeMakefileGenerator::ShortPath(const char* path) -{ - std::string ret = path; - // if there are no spaces in path, then just - // call ConvertToOutputPath - if(ret.find(' ') == std::string::npos) - { - return cmSystemTools::ConvertToOutputPath(path); - } - - // if there are spaces then call GetShortPathName to get rid of them - if(!cmSystemTools::GetShortPath(path, ret)) - { - // if GetShortPathName failed for some reason use - // ConvertToOutputPath instead which will at least escape the spaces - ret = cmSystemTools::ConvertToOutputPath(path); - return ret; - } - ret = cmSystemTools::ConvertToOutputPath(ret.c_str()); - return ret; -} - - -// convert a command to a short path if it has spaces -// this separates the arguments from the command and puts -// them back together -std::string cmLocalNMakeMakefileGenerator::ShortPathCommand(const char* command) -{ - if (!command) - { - return ""; - } - if(!strchr(command, ' ')) - { - return command; - } - cmRegularExpression reg("^\"([^\"]*)\"(.*)"); - if(reg.find(command)) - { - std::string c = reg.match(1); - cmRegularExpression removeIntDir("(.*)(/|\\\\)\\$\\(IntDir\\)(.*)"); - if(removeIntDir.find(c)) - { - c = removeIntDir.match(1) + removeIntDir.match(3); - } - std::string unixPath = c; - // since the command may already be a windows path, convert it - // to unix so we can use SplitProgramPath on it. - cmSystemTools::ConvertToUnixSlashes(unixPath); - std::string path, file; - cmSystemTools::SplitProgramPath(unixPath.c_str(), path, file); - // do a short path on the directory, because ShortPath will - // not work for files that do not exist - path = this->ShortPath(path.c_str()); - // now put the two back together - path += "\\"; - path += file; - std::string ret = path; - std::string args = reg.match(2); - ret += args; - return ret; - } - return command; -} - -void cmLocalNMakeMakefileGenerator::OutputMakeVariables(std::ostream& fout) -{ - fout << "# NMake Makefile generated by cmake\n"; - const char* variables = - "# general variables used in the makefile\n" - "\n" - "# Path to cmake\n" - "MAKESILENT = /nologo\n" - "CMAKE_STANDARD_WINDOWS_LIBRARIES = @CMAKE_STANDARD_WINDOWS_LIBRARIES@\n" - "CMAKE_C_FLAGS = @CMAKE_C_FLAGS@ @BUILD_FLAGS@ -DWIN32\n" - "CMAKE_C_LINK_EXECUTABLE_FLAG = @CMAKE_C_LINK_EXECUTABLE_FLAG@\n" - "CMAKE_CXX_FLAGS = @CMAKE_CXX_FLAGS@ -DWIN32 @BUILD_FLAGS@\n" - "CMAKE_LINKER_FLAGS = @CMAKE_LINKER_FLAGS@ @LINKER_BUILD_FLAGS@\n" - "CMAKE_LINKER_SHARED_LIBRARY_FLAG = @CMAKE_LINKER_SHARED_LIBRARY_FLAG@\n" - "CMAKE_LIBRARY_MANAGER_FLAGS = @CMAKE_LIBRARY_MANAGER_FLAGS@\n" - "CMAKE_OBJECT_FILE_SUFFIX = @CMAKE_OBJECT_FILE_SUFFIX@\n" - "CMAKE_EXECUTABLE_SUFFIX = @CMAKE_EXECUTABLE_SUFFIX@\n" - "CMAKE_STATICLIB_SUFFIX = @CMAKE_STATICLIB_SUFFIX@\n" - "CMAKE_SHLIB_SUFFIX = @CMAKE_SHLIB_SUFFIX@\n" - "!IF \"$(OS)\" == \"Windows_NT\"\n" - "NULL=\n" - "!ELSE \n" - "NULL=nul\n" - "!ENDIF \n"; - - std::string buildType = "CMAKE_CXX_FLAGS_"; - buildType += m_Makefile->GetDefinition("CMAKE_BUILD_TYPE"); - buildType = cmSystemTools::UpperCase(buildType); - m_Makefile->AddDefinition("BUILD_FLAGS", - m_Makefile->GetDefinition( - buildType.c_str())); - - buildType = "CMAKE_LINKER_FLAGS_"; - buildType += m_Makefile->GetDefinition("CMAKE_BUILD_TYPE"); - buildType = cmSystemTools::UpperCase(buildType); - m_Makefile->AddDefinition("LINKER_BUILD_FLAGS", - m_Makefile->GetDefinition( - buildType.c_str())); - - std::string replaceVars = variables; - m_Makefile->ExpandVariablesInString(replaceVars); - fout << replaceVars.c_str(); - std::string ccompiler = m_Makefile->GetDefinition("CMAKE_C_COMPILER"); - fout << "CMAKE_C_COMPILER = " - << this->ShortPath(ccompiler.c_str()) << "\n"; - - std::string cxxcompiler = m_Makefile->GetDefinition("CMAKE_CXX_COMPILER"); - fout << "CMAKE_CXX_COMPILER = " - << this->ShortPath(cxxcompiler.c_str()) << "\n"; - - std::string linker = m_Makefile->GetDefinition("CMAKE_LINKER"); - fout << "CMAKE_LINKER = " << - this->ShortPath(linker.c_str()) << "\n"; - - std::string lib_manager = m_Makefile->GetDefinition("CMAKE_LIBRARY_MANAGER"); - fout << "CMAKE_LIBRARY_MANAGER = " - << this->ShortPath(lib_manager.c_str()) << "\n"; - - std::string cmakecommand = m_Makefile->GetDefinition("CMAKE_COMMAND"); - fout << "CMAKE_COMMAND = " - << this->ShortPath(cmakecommand.c_str()) << "\n"; - fout << "RM = " << this->ShortPath(cmakecommand.c_str()) << " -E remove -f\n"; - - if(m_Makefile->GetDefinition("CMAKE_EDIT_COMMAND")) - { - fout << "CMAKE_EDIT_COMMAND = " - << this->ShortPath(m_Makefile->GetDefinition("CMAKE_EDIT_COMMAND")) - << "\n"; - } - - fout << "CMAKE_CURRENT_SOURCE = " - << this->ShortPath(m_Makefile->GetStartDirectory() ) - << "\n"; - fout << "CMAKE_CURRENT_BINARY = " - << this->ShortPath(m_Makefile->GetStartOutputDirectory()) - << "\n"; - fout << "CMAKE_SOURCE_DIR = " - << this->ShortPath(m_Makefile->GetHomeDirectory()) << "\n"; - fout << "CMAKE_BINARY_DIR = " - << this->ShortPath(m_Makefile->GetHomeOutputDirectory() ) - << "\n"; - - // Output Include paths - fout << "INCLUDE_FLAGS = "; - std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories(); - std::vector<std::string>::iterator i; - fout << "-I" << - cmSystemTools::ConvertToOutputPath(m_Makefile->GetStartDirectory()) << " "; - for(i = includes.begin(); i != includes.end(); ++i) - { - std::string include = *i; - // Don't output a -I for the standard include path "/usr/include". - // This can cause problems with certain standard library - // implementations because the wrong headers may be found first. - fout << "-I" << cmSystemTools::ConvertToOutputPath(i->c_str()).c_str() << " "; - } - - fout << m_Makefile->GetDefineFlags(); - fout << "\n\n"; -} - - -void cmLocalNMakeMakefileGenerator::BuildInSubDirectory(std::ostream& fout, - const char* directory, - const char* target1, - const char* target2, - bool silent) -{ - if(target1) - { - std::string dir = cmSystemTools::ConvertToOutputPath(directory); - fout << "\tif not exist \"" << dir << "\\$(NULL)\"" - << " " - << "$(MAKE) $(MAKESILENT) rebuild_cache\n"; - if (!silent) - { - fout << "\techo " << directory << ": building " << target1 << "\n"; - } - fout << "\tcd " << dir << "\n" - << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) " << target1 << "\n"; - } - if(target2) - { - if (!silent) - { - fout << "\techo " << directory << ": building " << target2 << "\n"; - } - fout << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) " << target2 << "\n"; - } - std::string currentDir = m_Makefile->GetCurrentOutputDirectory(); - fout << "\tcd " << cmSystemTools::ConvertToOutputPath(currentDir.c_str()) << "\n\n"; -} - - - - -// This needs to be overriden because nmake requires commands to be quoted -// if the are full paths to the executable???? - -void cmLocalNMakeMakefileGenerator::OutputMakeRule(std::ostream& fout, - const char* comment, - const char* target, - const char* depends, - const char* command, - const char* command2, - const char* command3, - const char* command4) -{ - std::string short_command; - if (command) - { - short_command = ShortPathCommand(command); - command = short_command.c_str(); - } - - std::string short_command2; - if (command2) - { - short_command2 = ShortPathCommand(command2); - command2 = short_command2.c_str(); - } - - std::string short_command3; - if (command3) - { - short_command3 = ShortPathCommand(command3); - command3 = short_command3.c_str(); - } - - std::string short_command4; - if (command4) - { - short_command4 = ShortPathCommand(command4); - command4 = short_command4.c_str(); - } - - cmLocalUnixMakefileGenerator::OutputMakeRule(fout, comment, - target, depends, - command, command2, - command3, command4); - return; -} - -void -cmLocalNMakeMakefileGenerator:: -OutputBuildObjectFromSource(std::ostream& fout, - const char* shortName, - const cmSourceFile& source, - const char* extraCompileFlags, - bool shared) -{ - // Header files shouldn't have build rules. - if(source.GetPropertyAsBool("HEADER_FILE_ONLY")) - { - return; - } - - std::string comment = "Build "; - std::string objectFile = std::string(shortName) + - this->GetOutputExtension(source.GetSourceExtension().c_str()); - - comment += objectFile + " From "; - comment += source.GetFullPath(); - std::string compileCommand; - std::string ext = source.GetSourceExtension(); - if(ext == "c" ) - { - compileCommand = "$(CMAKE_C_COMPILER) $(CMAKE_C_FLAGS) "; - compileCommand += extraCompileFlags; - if(shared) - { - compileCommand += "$(CMAKE_SHLIB_CFLAGS) "; - } - compileCommand += "$(INCLUDE_FLAGS) -c "; - compileCommand += - cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str()); - - // Need to get the definition here because this value might have - // trailing space (since it is directly prepended to the filename) - std::string output_object_file_flag = - m_Makefile->GetDefinition("CMAKE_C_OUTPUT_OBJECT_FILE_FLAG"); - m_Makefile->ExpandVariablesInString(output_object_file_flag); - - compileCommand += " " + output_object_file_flag; - compileCommand += objectFile; - } - else if (ext == "rc") - { - compileCommand = "$(RC) $(INCLUDE_FLAGS) /fo\""; - compileCommand += objectFile; - compileCommand += "\" "; - compileCommand += - cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str()); - } - else if (ext == "def") - { - // no rule to output for this one - return; - } - // assume c++ if not c rc or def - else - { - - compileCommand = "$(CMAKE_CXX_COMPILER) $(CMAKE_CXX_FLAGS) "; - compileCommand += extraCompileFlags; - if(shared) - { - compileCommand += "$(CMAKE_SHLIB_CFLAGS) "; - } - compileCommand += "$(INCLUDE_FLAGS) -c "; - compileCommand += - cmSystemTools::ConvertToOutputPath(source.GetFullPath().c_str()); - - // Need to get the definition here because this value might have - // trailing space (since it is directly prepended to the filename) - std::string output_object_file_flag = - m_Makefile->GetDefinition("CMAKE_C_OUTPUT_OBJECT_FILE_FLAG"); - m_Makefile->ExpandVariablesInString(output_object_file_flag); - - compileCommand += " " + output_object_file_flag; - compileCommand += objectFile; - } - - this->OutputMakeRule(fout, - comment.c_str(), - objectFile.c_str(), - cmSystemTools::ConvertToOutputPath( - source.GetFullPath().c_str()).c_str(), - compileCommand.c_str()); -} - -void cmLocalNMakeMakefileGenerator::OutputSharedLibraryRule(std::ostream& fout, - const char* name, - const cmTarget &t) -{ - std::string target = m_LibraryOutputPath + name + m_SharedLibraryExtension; - std::string depend = "$("; - depend += this->CreateMakeVariable(name, "_SRC_OBJS"); - depend += ") $(" + this->CreateMakeVariable(name, "_DEPEND_LIBS") + ")"; - - // Need to get the definition here because this value might have - // trailing space (since it is directly prepended to the filename) - std::string linker_output_file_flag = - m_Makefile->GetDefinition("CMAKE_LINKER_OUTPUT_FILE_FLAG"); - m_Makefile->ExpandVariablesInString(linker_output_file_flag); - - std::string command = "$(CMAKE_LINKER) $(CMAKE_LINKER_SHARED_LIBRARY_FLAG)"; - - bool hide_param = m_Makefile->IsOn("CMAKE_LINKER_HIDE_PARAMETERS"); - if (hide_param) - { - command += " @<<\n\t"; - } - - command += " $(CMAKE_LINKER_FLAGS) " + linker_output_file_flag; - - std::string dllpath = m_LibraryOutputPath + std::string(name) + m_SharedLibraryExtension; - command += cmSystemTools::ConvertToOutputPath(dllpath.c_str()); - - command += " $(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") "; - - cmOStringStream linklibs; - this->OutputLinkLibraries(linklibs, name, t); - command += linklibs.str(); - - const std::vector<cmSourceFile*>& sources = t.GetSourceFiles(); - for(std::vector<cmSourceFile*>::const_iterator i = sources.begin(); - i != sources.end(); ++i) - { - if((*i)->GetSourceExtension() == "def") - { - command += "/DEF:"; - command += (*i)->GetFullPath(); - } - } - - command += "\n"; - if (hide_param) - { - command += "<<\n"; - } - - std::string customCommands = this->CreateTargetRules(t, name); - const char* cc = 0; - if(customCommands.size() > 0) - { - cc = customCommands.c_str(); - } - this->OutputMakeRule(fout, "rules for a shared library", - target.c_str(), - depend.c_str(), - command.c_str(), cc); -} - -void cmLocalNMakeMakefileGenerator::OutputModuleLibraryRule(std::ostream& fout, - const char* name, - const cmTarget &target) -{ - this->OutputSharedLibraryRule(fout, name, target); -} - -void cmLocalNMakeMakefileGenerator::OutputStaticLibraryRule(std::ostream& fout, - const char* name, - const cmTarget &t) -{ - std::string target = m_LibraryOutputPath + std::string(name) + m_StaticLibraryExtension; - std::string depend = "$("; - depend += this->CreateMakeVariable(name, "_SRC_OBJS") + ") "; - - // Need to get the definition here because this value might have - // trailing space (since it is directly prepended to the filename) - std::string library_manager_output_file_flag = - m_Makefile->GetDefinition("CMAKE_LIBRARY_MANAGER_OUTPUT_FILE_FLAG"); - m_Makefile->ExpandVariablesInString(library_manager_output_file_flag); - - std::string command = "$(CMAKE_LIBRARY_MANAGER) $(CMAKE_LIBRARY_MANAGER_FLAGS) @<<\n\t " + library_manager_output_file_flag; - - std::string libpath = m_LibraryOutputPath + std::string(name) + m_StaticLibraryExtension; - command += cmSystemTools::ConvertToOutputPath(libpath.c_str()); - - command += " $("; - command += this->CreateMakeVariable(name, "_SRC_OBJS") + ")"; - command += "\n<<\n"; - - std::string comment = "rule to build static library: "; - comment += name; - - std::string customCommands = this->CreateTargetRules(t, name); - const char* cc = 0; - if(customCommands.size() > 0) - { - cc = customCommands.c_str(); - } - this->OutputMakeRule(fout, - comment.c_str(), - target.c_str(), - depend.c_str(), - command.c_str(), cc); -} - -void cmLocalNMakeMakefileGenerator::OutputExecutableRule(std::ostream& fout, - const char* name, - const cmTarget &t) -{ - std::string target = m_ExecutableOutputPath + name; - target += m_ExecutableExtension; - std::string depend = "$("; - depend += this->CreateMakeVariable(name, "_SRC_OBJS") + ") $(" + - this->CreateMakeVariable(name, "_DEPEND_LIBS") + ")"; - std::string command; - if(t.HasCxx()) - { - command = "$(CMAKE_CXX_COMPILER) $(CMAKE_CXX_FLAGS) "; - } - else - { - command = "${CMAKE_C_COMPILER} $(CMAKE_C_FLAGS) "; - } - bool hide_param = m_Makefile->IsOn("CMAKE_LINKER_HIDE_PARAMETERS"); - if (hide_param) - { - command += " @<<\n\t"; - } - - command += "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") "; - std::string path = m_ExecutableOutputPath + name + m_ExecutableExtension; - - // Need to get the definition here because this value might have - // trailing space (since it is directly prepended to the filename) - std::string output_executable_file_flag = - m_Makefile->GetDefinition("CMAKE_C_OUTPUT_EXECUTABLE_FILE_FLAG"); - m_Makefile->ExpandVariablesInString(output_executable_file_flag); - - command += " " + output_executable_file_flag + - cmSystemTools::ConvertToOutputPath(path.c_str()); - - command += " $(CMAKE_C_LINK_EXECUTABLE_FLAG) $(CMAKE_LINKER_FLAGS) "; - if(t.GetType() == cmTarget::WIN32_EXECUTABLE) - { - command += " /subsystem:windows "; - } - - cmOStringStream linklibs; - this->OutputLinkLibraries(linklibs, 0, t); - command += linklibs.str(); - - std::string comment = "rule to build executable: "; - comment += name; - - std::string customCommands = this->CreateTargetRules(t, name); - const char* cc = 0; - if(customCommands.size() > 0) - { - cc = customCommands.c_str(); - } - if (hide_param) - { - command += "\n"; - command += "<<\n"; - } - this->OutputMakeRule(fout, - comment.c_str(), - target.c_str(), - depend.c_str(), - command.c_str(), cc); -} - - -void cmLocalNMakeMakefileGenerator::OutputLinkLibraries(std::ostream& fout, - const char* targetLibrary, - const cmTarget &tgt) -{ - // Try to emit each search path once - std::set<std::string> emitted; - - // Embed runtime search paths if possible and if required. - // collect all the flags needed for linking libraries - // Do not try if there is no library path option (it is set to -L or - // -LIBPATH for some linker, but some others do not even support link - // search path). - std::string linkLibs; - - // Expand content because this value might have - // trailing space (since it is directly prepended to the filename) - std::string lib_path_opt = m_LibraryPathOption; - m_Makefile->ExpandVariablesInString(lib_path_opt); - - if (lib_path_opt.size()) - { - const std::vector<std::string>& libdirs = tgt.GetLinkDirectories(); - for(std::vector<std::string>::const_iterator libDir = libdirs.begin(); - libDir != libdirs.end(); ++libDir) - { - std::string libpath = ShortPath(libDir->c_str()); - if(emitted.insert(libpath).second) - { - linkLibs += lib_path_opt; - cmSystemTools::ConvertToOutputPath(libpath.c_str()); - linkLibs += libpath; - linkLibs += " "; - } - } - } - - std::string librariesLinked; - const cmTarget::LinkLibraries& libs = tgt.GetLinkLibraries(); - for(cmTarget::LinkLibraries::const_iterator lib = libs.begin(); - lib != libs.end(); ++lib) - { - // Don't link the library against itself! - if(targetLibrary && (lib->first == targetLibrary)) continue; - -// ** should fix this later, it should check to see if this is -// a debug build and add the library -// don't look at debug libraries -// if (lib->second == cmTarget::DEBUG) continue; - // skip zero size library entries, this may happen - // if a variable expands to nothing. - if (lib->first.size() == 0) continue; - if(emitted.insert(lib->first).second) - { - std::string regexp = ".*\\"; - regexp += m_Makefile->GetDefinition("CMAKE_STATICLIB_SUFFIX"); - regexp += "$"; - cmRegularExpression reg(regexp.c_str()); - // if it ends in .lib, then it is a full path and should - // be escaped, and does not need .lib added - if(reg.find(lib->first)) - { - librariesLinked += ShortPath(lib->first.c_str()); - librariesLinked += " "; - } - else - { - librariesLinked += m_LibraryLinkOption; - librariesLinked += lib->first; - librariesLinked += m_StaticLibraryExtension + " "; - } - } - } - linkLibs += librariesLinked; - fout << linkLibs; - fout << "$(CMAKE_STANDARD_WINDOWS_LIBRARIES) "; -} - - -std::string cmLocalNMakeMakefileGenerator::GetOutputExtension(const char* s) -{ - std::string sourceExtension = s; - if(sourceExtension == "def") - { - return ""; - } - if(sourceExtension == "ico" || sourceExtension == "rc2") - { - return ""; - } - if(sourceExtension == "rc") - { - return ".res"; - } - return m_ObjectFileExtension; -} - - -void cmLocalNMakeMakefileGenerator::OutputIncludeMakefile(std::ostream& fout, - const char* file) -{ - fout << "!include " << file << "\n"; -} - -bool cmLocalNMakeMakefileGenerator::SamePath(const char* path1, const char* path2) -{ - // first check to see if they are the same anyway - if (strcmp(path1, path2) == 0) - { - return true; - } - // next short path and lower case both of them for the compare - return - cmSystemTools::LowerCase(ShortPath(path1)) == - cmSystemTools::LowerCase(ShortPath(path2)); -} - -void cmLocalNMakeMakefileGenerator::OutputBuildTargetInDir(std::ostream& fout, - const char* path, - const char* library, - const char* fullpath, - const char* libOutPath) -{ - const char* makeTarget = library; - std::string currentDir = - cmSystemTools::ConvertToOutputPath(m_Makefile->GetCurrentOutputDirectory()); - std::string wpath = cmSystemTools::ConvertToOutputPath(path); - std::string wfullpath = cmSystemTools::ConvertToOutputPath(fullpath); - if(libOutPath && strcmp( libOutPath, "" ) != 0) - { - makeTarget = wfullpath.c_str(); - } - fout << wfullpath - << ":\n\tcd " << wpath << "\n" - << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) cmake.depends\n" - << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) cmake.check_depends\n" - << "\t$(MAKE) -$(MAKEFLAGS) $(MAKESILENT) -f cmake.check_depends\n" - << "\t$(MAKE) $(MAKESILENT) " << makeTarget - << "\n\tcd " << currentDir << "\n"; -} - -std::string cmLocalNMakeMakefileGenerator::CreateMakeVariable(const char* s, const char* s2) -{ - std::string ret= std::string(s) + std::string(s2); - cmSystemTools::ReplaceString(ret, "-", "_"); - return ret; -} - -std::string cmLocalNMakeMakefileGenerator::LowerCasePath(const char* path) -{ - return cmSystemTools::LowerCase(path); -} diff --git a/Source/cmLocalNMakeMakefileGenerator.h b/Source/cmLocalNMakeMakefileGenerator.h deleted file mode 100644 index 6322b1f..0000000 --- a/Source/cmLocalNMakeMakefileGenerator.h +++ /dev/null @@ -1,90 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#ifndef cmNMakeMakefileGenerator_h -#define cmNMakeMakefileGenerator_h - -#include "cmLocalUnixMakefileGenerator.h" - -/** \class cmLocalNMakeMakefileGenerator - * \brief Write an NMake makefile. - * - * cmLocalNMakeMakefileGenerator produces a Unix makefile from its - * member m_Makefile. - */ -class cmLocalNMakeMakefileGenerator : public cmLocalUnixMakefileGenerator -{ -public: - ///! Set cache only and recurse to false by default. - cmLocalNMakeMakefileGenerator(); - - virtual ~cmLocalNMakeMakefileGenerator(); - -protected: - std::string ShortPath(const char* path); - std::string ShortPathCommand(const char* command); - virtual void OutputMakeVariables(std::ostream&); - virtual void BuildInSubDirectory(std::ostream& fout, - const char* directory, - const char* target1, - const char* target2, - bool silent = false); - void OutputMakeRule(std::ostream& fout, - const char* comment, - const char* target, - const char* depends, - const char* command, - const char* command2=0, - const char* command3=0, - const char* command4=0); - - - virtual void OutputBuildObjectFromSource(std::ostream& fout, - const char* shortName, - const cmSourceFile& source, - const char* extraCompileFlags, - bool sharedTarget); - virtual void OutputSharedLibraryRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputModuleLibraryRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputStaticLibraryRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputExecutableRule(std::ostream&, const char* name, - const cmTarget &); - virtual void OutputLinkLibraries(std::ostream& fout, - const char* targetLibrary, - const cmTarget &tgt); - virtual std::string GetOutputExtension(const char* sourceExtension); - virtual void OutputIncludeMakefile(std::ostream&, const char* file); - virtual void OutputBuildTargetInDir(std::ostream& fout, - const char* path, - const char* library, - const char* fullpath, - const char* outputPath); - ///! return true if the two paths are the same (checks short paths) - virtual bool SamePath(const char* path1, const char* path2); - void SetLibraryPathOption(const char* lib){ m_LibraryPathOption = lib;} - void SetLibraryLinkOption(const char* lib){ m_LibraryLinkOption = lib;} - - virtual std::string CreateMakeVariable(const char* s, const char* s2); - virtual std::string LowerCasePath(const char* path); -private: - std::string m_LibraryPathOption;// option to specifiy a link path -LIBPATH - std::string m_LibraryLinkOption; // option to specify a library (like -l, empty for nmake) -}; - -#endif |