ENH: change to work with nmake

This commit is contained in:
Bill Hoffman 2001-11-05 15:39:37 -05:00
parent b22e2de8e5
commit a033bf3972
1 changed files with 56 additions and 80 deletions

View File

@ -341,7 +341,7 @@ void cmUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
std::vector<cmSourceFile> classes = l->second.GetSourceFiles();
if (classes.begin() != classes.end())
{
fout << "${" << l->first << "_SRC_OBJS} ";
fout << "$(" << l->first << "_SRC_OBJS) ";
}
}
fout << "\n\n";
@ -517,17 +517,17 @@ void cmUnixMakefileGenerator::OutputSharedLibraryRule(std::ostream& fout,
const cmTarget &t)
{
std::string target = m_LibraryOutputPath + "lib" + name + "$(SHLIB_SUFFIX)";
std::string depend = "${";
std::string depend = "$(";
depend += name;
depend += "_SRC_OBJS} ${" + std::string(name) + "_DEPEND_LIBS}";
depend += "_SRC_OBJS) $(" + std::string(name) + "_DEPEND_LIBS)";
std::string command = "rm -f lib";
command += name;
command += "$(SHLIB_SUFFIX)";
std::string command2 = "$(CMAKE_CXX_COMPILER) ${CMAKE_SHLIB_LINK_FLAGS} "
"${CMAKE_SHLIB_BUILD_FLAGS} ${CMAKE_CXXFLAGS} -o \\\n";
std::string command2 = "$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) "
"$(CMAKE_SHLIB_BUILD_FLAGS) $(CMAKE_CXXFLAGS) -o \\\n";
command2 += "\t ";
command2 += m_LibraryOutputPath + "lib" + std::string(name) + "$(SHLIB_SUFFIX) \\\n";
command2 += "\t ${" + std::string(name) + "_SRC_OBJS} ";
command2 += "\t $(" + std::string(name) + "_SRC_OBJS) ";
std::strstream linklibs;
this->OutputLinkLibraries(linklibs, name, t);
linklibs << std::ends;
@ -545,14 +545,14 @@ void cmUnixMakefileGenerator::OutputModuleLibraryRule(std::ostream& fout,
const cmTarget &t)
{
std::string target = m_LibraryOutputPath + "lib" + std::string(name) + "$(MODULE_SUFFIX)";
std::string depend = "${";
depend += std::string(name) + "_SRC_OBJS} ${" + std::string(name) + "_DEPEND_LIBS}";
std::string depend = "$(";
depend += std::string(name) + "_SRC_OBJS) $(" + std::string(name) + "_DEPEND_LIBS)";
std::string command = "rm -f lib" + std::string(name) + "$(MODULE_SUFFIX)";
std::string command2 = "$(CMAKE_CXX_COMPILER) ${CMAKE_MODULE_LINK_FLAGS} "
"${CMAKE_MODULE_BUILD_FLAGS} ${CMAKE_CXXFLAGS} -o \\\n";
std::string command2 = "$(CMAKE_CXX_COMPILER) $(CMAKE_MODULE_LINK_FLAGS) "
"$(CMAKE_MODULE_BUILD_FLAGS) $(CMAKE_CXXFLAGS) -o \\\n";
command2 += "\t ";
command2 += m_LibraryOutputPath + "lib" + std::string(name) + "$(MODULE_SUFFIX) \\\n";
command2 += "\t ${" + std::string(name) + "_SRC_OBJS} ";
command2 += "\t $(" + std::string(name) + "_SRC_OBJS) ";
std::strstream linklibs;
this->OutputLinkLibraries(linklibs, std::string(name).c_str(), t);
linklibs << std::ends;
@ -571,15 +571,15 @@ void cmUnixMakefileGenerator::OutputStaticLibraryRule(std::ostream& fout,
const cmTarget & t)
{
std::string target = m_LibraryOutputPath + "lib" + std::string(name) + ".a";
std::string depend = "${";
depend += std::string(name) + "_SRC_OBJS}";
std::string command = "${CMAKE_AR} ${CMAKE_AR_ARGS} ";
std::string depend = "$(";
depend += std::string(name) + "_SRC_OBJS)";
std::string command = "$(CMAKE_AR) $(CMAKE_AR_ARGS) ";
command += m_LibraryOutputPath;
command += "lib";
command += name;
command += ".a ${";
command += std::string(name) + "_SRC_OBJS}";
std::string command2 = "${CMAKE_RANLIB} ";
command += ".a $(";
command += std::string(name) + "_SRC_OBJS)";
std::string command2 = "$(CMAKE_RANLIB) ";
command2 += m_LibraryOutputPath;
command2 += "lib";
command2 += std::string(name) + ".a";
@ -598,11 +598,11 @@ void cmUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
const cmTarget & t)
{
std::string target = m_ExecutableOutputPath + name;
std::string depend = "${";
depend += std::string(name) + "_SRC_OBJS} ${" + std::string(name) + "_DEPEND_LIBS}";
std::string depend = "$(";
depend += std::string(name) + "_SRC_OBJS) $(" + std::string(name) + "_DEPEND_LIBS)";
std::string command =
"${CMAKE_CXX_COMPILER} ${CMAKE_SHLIB_LINK_FLAGS} ${CMAKE_CXXFLAGS} ";
command += "${" + std::string(name) + "_SRC_OBJS} ";
"$(CMAKE_CXX_COMPILER) $(CMAKE_SHLIB_LINK_FLAGS) $(CMAKE_CXXFLAGS) ";
command += "$(" + std::string(name) + "_SRC_OBJS) ";
std::strstream linklibs;
this->OutputLinkLibraries(linklibs, 0, t);
linklibs << std::ends;
@ -758,7 +758,7 @@ void cmUnixMakefileGenerator::OutputDependLibs(std::ostream& fout)
// put out a rule to build the library if it does not exist
fout << libpath.c_str()
<< ":\n\tcd " << cacheValue
<< "; ${MAKE} " << m_LibraryOutputPath << library.c_str() << "\n\n";
<< "; $(MAKE) " << m_LibraryOutputPath << library.c_str() << "\n\n";
}
}
}
@ -841,8 +841,8 @@ void cmUnixMakefileGenerator::OutputMakeFlags(std::ostream& fout)
"Default target executed when no arguments are given to make",
"default_target",
0,
"${MAKE} -${MAKEFLAGS} cmake.depends",
"${MAKE} -${MAKEFLAGS} all");
"$(MAKE) -$(MAKEFLAGS) cmake.depends",
"$(MAKE) -$(MAKEFLAGS) all");
}
@ -911,14 +911,14 @@ OutputSubDirectoryVars(std::ostream& fout,
fout << "\n";
if(target1)
{
fout << "\t@if test ! -d " << SubDirectories[i].c_str() << "; then ${MAKE} rebuild_cache; fi\n"
fout << "\t@if test ! -d " << SubDirectories[i].c_str() << "; then $(MAKE) rebuild_cache; fi\n"
"\tcd " << SubDirectories[i].c_str()
<< "; ${MAKE} -${MAKEFLAGS} " << target1 << "\n";
<< "; $(MAKE) -$(MAKEFLAGS) " << target1 << "\n";
}
if(target2)
{
fout << "\t@cd " << SubDirectories[i].c_str()
<< "; ${MAKE} -${MAKEFLAGS} " << target2 << "\n";
<< "; $(MAKE) -$(MAKEFLAGS) " << target2 << "\n";
}
}
fout << "\n\n";
@ -1160,7 +1160,7 @@ void cmUnixMakefileGenerator::OutputMakeVariables(std::ostream& fout)
"THREAD_LIBS = @CMAKE_THREAD_LIBS@\n"
"\n"
"# set up the path to the rulesgen program\n"
"CMAKE_COMMAND = ${CMAKE_COMMAND}\n"
"CMAKE_COMMAND = ${CMAKE_COMMAND}"
"\n"
"\n"
"\n";
@ -1170,6 +1170,8 @@ void cmUnixMakefileGenerator::OutputMakeVariables(std::ostream& fout)
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";
}
@ -1178,11 +1180,11 @@ void cmUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
const char* root
= m_Makefile->GetDefinition("CMAKE_ROOT");
fout << "INSTALL = " << root << "/Templates/install-sh -c\n";
fout << "INSTALL_PROGRAM = ${INSTALL}\n";
fout << "INSTALL_DATA = ${INSTALL} -m 644\n";
fout << "INSTALL_PROGRAM = $(INSTALL)\n";
fout << "INSTALL_DATA = $(INSTALL) -m 644\n";
const cmTargets &tgts = m_Makefile->GetTargets();
fout << "install: ${SUBDIR_INSTALL}\n";
fout << "install: $(SUBDIR_INSTALL)\n";
fout << "\t@echo \"Installing ...\"\n";
const char* prefix
@ -1256,7 +1258,7 @@ void cmUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
}
fout << *i
<< " " << prefix << l->second.GetInstallPath() << "; \\\n";
fout << "\t elif [ -f ${srcdir}/" << *i << " ] ; then \\\n";
fout << "\t elif [ -f $(srcdir)/" << *i << " ] ; then \\\n";
// avoid using install-sh to install install-sh
// does not work on windows....
if(*i == "install-sh")
@ -1267,7 +1269,7 @@ void cmUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
{
fout << "\t $(INSTALL_DATA) ";
}
fout << "${srcdir}/" << *i
fout << "$(srcdir)/" << *i
<< " " << prefix << l->second.GetInstallPath() << "; \\\n";
fout << "\telse \\\n";
fout << "\t echo \" ERROR!!! Unable to find: " << *i
@ -1296,7 +1298,7 @@ void cmUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
}
fout << *i
<< " " << prefix << l->second.GetInstallPath() << "; \\\n";
fout << "\t elif [ -f ${srcdir}/" << *i << " ] ; then \\\n";
fout << "\t elif [ -f $(srcdir)/" << *i << " ] ; then \\\n";
// avoid using install-sh to install install-sh
// does not work on windows....
if(*i == "install-sh")
@ -1307,7 +1309,7 @@ void cmUnixMakefileGenerator::OutputInstallRules(std::ostream& fout)
{
fout << "\t $(INSTALL_PROGRAM) ";
}
fout << "${srcdir}/" << *i
fout << "$(srcdir)/" << *i
<< " " << prefix << l->second.GetInstallPath() << "; \\\n";
fout << "\telse \\\n";
fout << "\t echo \" ERROR!!! Unable to find: " << *i
@ -1331,38 +1333,38 @@ void cmUnixMakefileGenerator::OutputMakeRules(std::ostream& fout)
this->OutputMakeRule(fout,
"Default build rule",
"all",
"cmake.depends ${TARGETS} ${SUBDIR_BUILD} ${CMAKE_COMMAND}",
"cmake.depends $(TARGETS) $(SUBDIR_BUILD)",
0);
this->OutputMakeRule(fout,
"remove generated files",
"clean",
"${SUBDIR_CLEAN}",
"rm -f ${CLEAN_OBJECT_FILES} ${EXECUTABLES} ${TARGETS}");
"$(SUBDIR_CLEAN)",
"rm -f $(CLEAN_OBJECT_FILES) $(EXECUTABLES) $(TARGETS)");
this->OutputMakeRule(fout,
"Rule to build the cmake.depends and Makefile as side effect",
"cmake.depends",
"${CMAKE_COMMAND} ${CMAKE_MAKEFILE_SOURCES} ",
"${CMAKE_COMMAND} "
"-S${CMAKE_CURRENT_SOURCE} -O${CMAKE_CURRENT_BINARY} "
"$(CMAKE_MAKEFILE_SOURCES) ",
"$(CMAKE_COMMAND) "
"-S$(CMAKE_CURRENT_SOURCE) -O$(CMAKE_CURRENT_BINARY) "
"-H${CMAKE_SOURCE_DIR} -B${CMAKE_BINARY_DIR}");
this->OutputMakeRule(fout,
"Rule to force the build of cmake.depends",
"depend",
"${SUBDIR_DEPEND}",
"${CMAKE_COMMAND} "
"-S${CMAKE_CURRENT_SOURCE} -O${CMAKE_CURRENT_BINARY} "
"$(SUBDIR_DEPEND)",
"$(CMAKE_COMMAND) "
"-S$(CMAKE_CURRENT_SOURCE) -O$(CMAKE_CURRENT_BINARY) "
"-H${CMAKE_SOURCE_DIR} -B${CMAKE_BINARY_DIR}");
this->OutputMakeRule(fout,
"Rebuild the cache",
"Rebuild CMakeCache.txt file",
"rebuild_cache",
"${CMAKE_BINARY_DIR}/CMakeCache.txt",
"${CMAKE_COMMAND} "
"$(CMAKE_COMMAND) "
"-H${CMAKE_SOURCE_DIR} -B${CMAKE_BINARY_DIR}");
this->OutputMakeRule(fout,
"Rebuild the cache",
"Create CMakeCache.txt file",
"${CMAKE_BINARY_DIR}/CMakeCache.txt",
0,
"${CMAKE_COMMAND} "
"$(CMAKE_COMMAND) "
"-H${CMAKE_SOURCE_DIR} -B${CMAKE_BINARY_DIR}");
this->OutputMakeRule(fout,
@ -1373,33 +1375,6 @@ void cmUnixMakefileGenerator::OutputMakeRules(std::ostream& fout)
0);
this->OutputSourceObjectBuildRules(fout);
// see if there is already a target for a cmake executable in this
// makefile
bool buildingCMake = false;
std::map<cmStdString, cmTarget>& targets = m_Makefile->GetTargets();
for(cmTargets::const_iterator l = targets.begin();
l != targets.end(); l++)
{
if ((l->second.GetType() == cmTarget::EXECUTABLE ||
l->second.GetType() == cmTarget::WIN32_EXECUTABLE) &&
l->second.IsInAll())
{
if(l->first == "cmake")
{
buildingCMake = true;
}
}
}
// do not put this command in for the cmake project
if(!buildingCMake)
{
this->OutputMakeRule(fout,
"Rebuild cmake dummy rule",
"${CMAKE_COMMAND}",
0,
"echo \"cmake might be out of date\"");
}
// find ctest
std::string ctest = m_Makefile->GetDefinition("CMAKE_COMMAND");
ctest = cmSystemTools::GetFilenamePath(ctest.c_str());
@ -1474,18 +1449,19 @@ void cmUnixMakefileGenerator::OutputSourceObjectBuildRules(std::ostream& fout)
if(rules.find(shortName) == rules.end())
{
rules.insert(shortName);
fout << shortName.c_str() << ".o : " << sourceName.c_str() << "\n";
fout << shortName.c_str() << ".o : " << source->GetFullPath().c_str() << "\n";
std::string ext = source->GetSourceExtension();
if ( ext == "cxx" || ext == "cc" || ext == "cpp" || ext == "C" ||
ext =="m" || ext == "M" || ext == "mm")
{
fout << "\t${CMAKE_CXX_COMPILER} ${CMAKE_CXXFLAGS} " << exportsDef.c_str()
<< (shared? "${CMAKE_SHLIB_CFLAGS} ":"") << "${INCLUDE_FLAGS} -c $< -o $@\n\n";
fout << "\t$(CMAKE_CXX_COMPILER) $(CMAKE_CXXFLAGS) " << exportsDef.c_str()
<< (shared? "$(CMAKE_SHLIB_CFLAGS) ":"")
<< "$(INCLUDE_FLAGS) -c $< -o $@\n\n ";
}
else if ( ext == "c" )
{
fout << "\t${CMAKE_C_COMPILER} ${CMAKE_CFLAGS} " << exportsDef.c_str()
<< (shared? "${CMAKE_SHLIB_CFLAGS} ":"") << "${INCLUDE_FLAGS} -c $< -o $@\n\n";
fout << "\t$(CMAKE_C_COMPILER) $(CMAKE_CFLAGS) " << exportsDef.c_str()
<< (shared? "$(CMAKE_SHLIB_CFLAGS) ":"") << "$(INCLUDE_FLAGS) -c $< -o $@\n\n";
}
}
}