[Cmake] Patch: Unix Makefile staged install
William A. Hoffman
bill.hoffman at kitware.com
Fri Dec 21 09:15:36 EST 2001
Thanks for the patch, I have just checked in the changes to cvs.
It seemed to work OK.
Also, we have added a CMAKE_SKIP_RPATH variable, that can be set in the
cache to disable
the use of rpath.
-Bill
At 04:13 PM 12/19/2001 -0500, Maitland Bottoms wrote:
>Hi,
>
>This patch gives cmake the ability to do staged installs, as I
>described them in some of my earlier posts to this list.
>
>Submitted for your examination and consideration for inclusion into
>the cmake CVS and future releases.
>
>-Maitland
>
>--- cmake-0.98.orig/Source/cmUnixMakefileGenerator.cxx
>+++ cmake-0.98/Source/cmUnixMakefileGenerator.cxx
>@@ -1274,13 +1274,13 @@
> if (l->second.GetInstallPath() != "")
> {
> // first make the directories for each target
>- fout << "\t at if [ ! -d " << prefix << l->second.GetInstallPath() <<
>+ fout << "\t at if [ ! -d $(DESTDIR)" << prefix <<
>l->second.GetInstallPath() <<
> " ] ; then \\\n";
>- fout << "\t echo \"Making directory " << prefix
>+ fout << "\t echo \"Making directory $(DESTDIR)" << prefix
> << l->second.GetInstallPath() << " \"; \\\n";
>- fout << "\t mkdir -p " << prefix << l->second.GetInstallPath()
>+ fout << "\t mkdir -p $(DESTDIR)" << prefix <<
>l->second.GetInstallPath()
> << "; \\\n";
>- fout << "\t chmod 755 " << prefix << l->second.GetInstallPath()
>+ fout << "\t chmod 755 $(DESTDIR)" << prefix <<
>l->second.GetInstallPath()
> << "; \\\n";
> fout << "\t else true; \\\n";
> fout << "\t fi\n";
>@@ -1291,26 +1291,26 @@
> fout << "\t$(INSTALL_DATA) " << m_LibraryOutputPath << "lib"
> << l->first;
> fout << ".a";
>- fout << " " << prefix << l->second.GetInstallPath() << "\n";
>+ fout << " $(DESTDIR)" << prefix << l->second.GetInstallPath() <<
>"\n";
> break;
> case cmTarget::SHARED_LIBRARY:
> fout << "\t$(INSTALL_DATA) " << m_LibraryOutputPath << "lib"
> << l->first;
> fout << m_Makefile->GetDefinition("CMAKE_SHLIB_SUFFIX");
>- fout << " " << prefix << l->second.GetInstallPath() << "\n";
>+ fout << " $(DESTDIR)" << prefix << l->second.GetInstallPath() <<
>"\n";
> break;
> case cmTarget::MODULE_LIBRARY:
> fout << "\t$(INSTALL_DATA) " << m_LibraryOutputPath << "lib"
> << l->first;
> fout << m_Makefile->GetDefinition("CMAKE_MODULE_SUFFIX");
>- fout << " " << prefix << l->second.GetInstallPath() << "\n";
>+ fout << " $(DESTDIR)" << prefix << l->second.GetInstallPath() <<
>"\n";
> break;
> case cmTarget::WIN32_EXECUTABLE:
> case cmTarget::EXECUTABLE:
> fout << "\t$(INSTALL_PROGRAM) " << m_ExecutableOutputPath
> << l->first
> << cmSystemTools::GetExecutableExtension()
>- << " " << prefix << l->second.GetInstallPath() << "\n";
>+ << " $(DESTDIR)" << prefix << l->second.GetInstallPath() <<
>"\n";
> break;
> case cmTarget::INSTALL_FILES:
> {
>@@ -1331,7 +1331,7 @@
> fout << "\t $(INSTALL_DATA) ";
> }
> fout << *i
>- << " " << prefix << l->second.GetInstallPath() << "; \\\n";
>+ << " $(DESTDIR)" << prefix << l->second.GetInstallPath()
><< "; \\\n";
> fout << "\t elif [ -f $(CMAKE_CURRENT_SOURCE)/" << *i << " ]
> ; then \\\n";
> // avoid using install-sh to install install-sh
> // does not work on windows....
>@@ -1344,7 +1344,7 @@
> fout << "\t $(INSTALL_DATA) ";
> }
> fout << "$(CMAKE_CURRENT_SOURCE)/" << *i
>- << " " << prefix << l->second.GetInstallPath() << "; \\\n";
>+ << " $(DESTDIR)" << prefix << l->second.GetInstallPath()
><< "; \\\n";
> fout << "\telse \\\n";
> fout << "\t echo \" ERROR!!! Unable to find: " << *i
> << " \"; \\\n";
>@@ -1371,7 +1371,7 @@
> fout << "\t $(INSTALL_PROGRAM) ";
> }
> fout << *i
>- << " " << prefix << l->second.GetInstallPath() << "; \\\n";
>+ << " $(DESTDIR)" << prefix << l->second.GetInstallPath()
><< "; \\\n";
> fout << "\t elif [ -f $(CMAKE_CURRENT_SOURCE)/" << *i << " ]
> ; then \\\n";
> // avoid using install-sh to install install-sh
> // does not work on windows....
>@@ -1384,7 +1384,7 @@
> fout << "\t $(INSTALL_PROGRAM) ";
> }
> fout << "$(CMAKE_CURRENT_SOURCE)/" << *i
>- << " " << prefix << l->second.GetInstallPath() << "; \\\n";
>+ << " $(DESTDIR)" << prefix << l->second.GetInstallPath()
><< "; \\\n";
> fout << "\telse \\\n";
> fout << "\t echo \" ERROR!!! Unable to find: " << *i
> << " \"; \\\n";
More information about the CMake
mailing list