summaryrefslogtreecommitdiffstats
path: root/Source/cmNMakeMakefileGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-11-13 23:23:45 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-11-13 23:23:45 (GMT)
commitdc839f80f01dd547e1685a252f218aac0f0e769b (patch)
tree0ffdeece08e5a109acc6dfe9e6421960fb6e31c9 /Source/cmNMakeMakefileGenerator.cxx
parent6220a187ba1e500442ce05efc16a3c0f016ed5cd (diff)
downloadCMake-dc839f80f01dd547e1685a252f218aac0f0e769b.zip
CMake-dc839f80f01dd547e1685a252f218aac0f0e769b.tar.gz
CMake-dc839f80f01dd547e1685a252f218aac0f0e769b.tar.bz2
start work on nmake generator
Diffstat (limited to 'Source/cmNMakeMakefileGenerator.cxx')
-rw-r--r--Source/cmNMakeMakefileGenerator.cxx117
1 files changed, 117 insertions, 0 deletions
diff --git a/Source/cmNMakeMakefileGenerator.cxx b/Source/cmNMakeMakefileGenerator.cxx
new file mode 100644
index 0000000..8a25dde
--- /dev/null
+++ b/Source/cmNMakeMakefileGenerator.cxx
@@ -0,0 +1,117 @@
+/*=========================================================================
+
+ Program: Insight Segmentation & Registration Toolkit
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+Copyright (c) 2001 Insight Consortium
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * The name of the Insight Consortium, nor the names of any consortium members,
+ nor of any contributors, may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ * Modified source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=========================================================================*/
+#include "cmNMakeMakefileGenerator.h"
+#include "cmMakefile.h"
+#include "cmStandardIncludes.h"
+#include "cmSystemTools.h"
+#include "cmSourceFile.h"
+#include "cmMakeDepend.h"
+#include "cmCacheManager.h"
+#include "cmGeneratedFileStream.h"
+
+cmNMakeMakefileGenerator::cmNMakeMakefileGenerator()
+{
+}
+
+cmNMakeMakefileGenerator::~cmNMakeMakefileGenerator()
+{
+}
+
+void cmNMakeMakefileGenerator::ComputeSystemInfo()
+{
+}
+
+void cmNMakeMakefileGenerator::OutputMakeVariables(std::ostream& fout)
+{
+ fout << "# NMake Makefile generated by cmake\n";
+ const char* variables =
+ "# general varibles used in the makefile\n"
+ "\n"
+ "# Path to cmake\n"
+ "CMAKE_COMMAND = ${CMAKE_COMMAND}\n";
+ std::string replaceVars = variables;
+ m_Makefile->ExpandVariablesInString(replaceVars);
+ fout << replaceVars.c_str();
+ fout << "CMAKE_CURRENT_SOURCE = " << m_Makefile->GetStartDirectory()
+ << "\n";
+ fout << "CMAKE_CURRENT_BINARY = " << m_Makefile->GetStartOutputDirectory()
+ << "\n";
+ fout << "CMAKE_SOURCE_DIR = " << m_Makefile->GetHomeDirectory() << "\n";
+ fout << "CMAKE_BINARY_DIR = " << 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" << 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.
+ if(include != "/usr/include")
+ {
+ fout << "-I" << cmSystemTools::EscapeSpaces(i->c_str()).c_str() << " ";
+ }
+ }
+ fout << m_Makefile->GetDefineFlags();
+ fout << "\n\n";
+}
+
+
+void cmNMakeMakefileGenerator::BuildInSubDirectory(std::ostream& fout,
+ const char* directory,
+ const char* target1,
+ const char* target2)
+{
+ if(target1)
+ {
+ fout << "\tif not exist " << directory << " "
+ << "$(MAKE) rebuild_cache\n"
+ << "\tcd \".\\" << directory << "\"\n"
+ << "\t$(MAKE) -$(MAKEFLAGS) " << target1 << "\n";
+ }
+ if(target2)
+ {
+ fout << "\t$(MAKE) -$(MAKEFLAGS) " << target2 << "\n";
+ }
+}