[Cmake-commits] CMake branch, next, updated. v2.8.12.1-5203-g6d12531

Stephen Kelly steveire at gmail.com
Sun Nov 17 11:20:59 EST 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  6d12531a7f83747067a66231d8afa44144d3a5fa (commit)
       via  620c529adddddd0c7322e04d28745606ab58d1c8 (commit)
      from  09dbdc547842518244418d80cc83bde0878b33ac (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d12531a7f83747067a66231d8afa44144d3a5fa
commit 6d12531a7f83747067a66231d8afa44144d3a5fa
Merge: 09dbdc5 620c529
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Nov 17 11:20:54 2013 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Sun Nov 17 11:20:54 2013 -0500

    Merge topic 'cross-compiling-toolchain-variables' into next
    
    620c529 Introduce CMAKE_STAGING_PREFIX variable.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=620c529adddddd0c7322e04d28745606ab58d1c8
commit 620c529adddddd0c7322e04d28745606ab58d1c8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Nov 14 12:04:40 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Sun Nov 17 17:16:43 2013 +0100

    Introduce CMAKE_STAGING_PREFIX variable.
    
    This variable can be useful in cross-compiling contexts where the
    sysroot is read-only or where the sysroot should otherwise remain
    pristine.
    
    If the new CMAKE_STAGING_PREFIX variable is set, it is used instead
    of CMAKE_INSTALL_PREFIX when generating the installation rules in
    cmake_install.cmake.
    
    This way, the CMAKE_INSTALL_PREFIX variable
    always refers to the installation prefix on the target device, regardless
    of whether host==target.
    
    If any -rpath paths passed to the linker contain the CMAKE_STAGING_PREFIX,
    the matching path fragments are replaced with the CMAKE_INSTALL_PREFIX.
    Matching paths in the -rpath-link are not transformed.
    
    The cross-prefix usr-move workaround is assumed not to require extension
    regarding CMAKE_STAGING_PREFIX. The staging area is a single prefix, so
    there is no scope for cross-prefix symlinks. The CMAKE_INSTALL_PREFIX
    is still used to determine the workaround path, and that variable
    remains the relevant one even if CMAKE_STAGING_PREFIX is used. If the
    generated export files are deployed to the target, the workaround
    will still be in place, and still be employed if required.

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index dd82b40..a46539f 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -110,6 +110,7 @@ Variables that Change Behavior
    /variable/CMAKE_PREFIX_PATH
    /variable/CMAKE_PROGRAM_PATH
    /variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
+   /variable/CMAKE_STAGING_PREFIX
    /variable/CMAKE_SYSTEM_IGNORE_PATH
    /variable/CMAKE_SYSTEM_INCLUDE_PATH
    /variable/CMAKE_SYSTEM_LIBRARY_PATH
diff --git a/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst b/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
index 91231b0..70d920b 100644
--- a/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
+++ b/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
@@ -3,11 +3,13 @@ CMAKE_FIND_NO_INSTALL_PREFIX
 
 Ignore the :variable:`CMAKE_INSTALL_PREFIX` when searching for assets.
 
-CMake adds the :variable:`CMAKE_INSTALL_PREFIX` to the
+CMake adds the :variable:`CMAKE_INSTALL_PREFIX` and the
+:variable:`CMAKE_STAGING_PREFIX` variable to the
 :variable:`CMAKE_SYSTEM_PREFIX_PATH` by default. This variable may be set
 on the command line to control that behavior.
 
 Set :variable:`CMAKE_FIND_NO_INSTALL_PREFIX` to TRUE to tell find_package not
-to search in the :variable:`CMAKE_INSTALL_PREFIX` by default.  Note that the
+to search in the :variable:`CMAKE_INSTALL_PREFIX` or
+:variable:`CMAKE_STAGING_PREFIX` by default.  Note that the
 prefix may still be searched for other reasons, such as being the same prefix
 as the CMake installation, or for being a built-in system prefix.
diff --git a/Help/variable/CMAKE_STAGING_PREFIX.rst b/Help/variable/CMAKE_STAGING_PREFIX.rst
new file mode 100644
index 0000000..c4de7da
--- /dev/null
+++ b/Help/variable/CMAKE_STAGING_PREFIX.rst
@@ -0,0 +1,13 @@
+CMAKE_STAGING_PREFIX
+--------------------
+
+This variable may be set to a path to install to when cross-compiling. This can
+be useful if the path in :variable:`CMAKE_SYSROOT` is read-only, or otherwise
+should remain pristine.
+
+The CMAKE_STAGING_PREFIX location is also used as a search prefix by the ``find_*``
+commands. This can be controlled by setting the :variable:`CMAKE_FIND_NO_INSTALL_PREFIX`
+variable.
+
+If any RPATH/RUNPATH entries passed to the linker contain the CMAKE_STAGING_PREFIX,
+the matching path fragments are replaced with the :variable:`CMAKE_INSTALL_PREFIX`.
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index 3152c2a..894e75d 100644
--- a/Source/cmComputeLinkInformation.cxx
+++ b/Source/cmComputeLinkInformation.cxx
@@ -1902,6 +1902,10 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
   if(use_build_rpath || use_link_rpath)
     {
     std::string rootPath = this->Makefile->GetSafeDefinition("CMAKE_SYSROOT");
+    const char *stagePath
+                  = this->Makefile->GetDefinition("CMAKE_STAGING_PREFIX");
+    const char *installPrefix
+                  = this->Makefile->GetSafeDefinition("CMAKE_INSTALL_PREFIX");
     cmSystemTools::ConvertToUnixSlashes(rootPath);
     std::vector<std::string> const& rdirs = this->GetRuntimeSearchPath();
     for(std::vector<std::string>::const_iterator ri = rdirs.begin();
@@ -1916,6 +1920,14 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
           {
           d = d.substr(rootPath.size());
           }
+        else if (stagePath && d.find(stagePath) == 0)
+          {
+          std::string suffix = d.substr(strlen(stagePath));
+          d = installPrefix;
+          d += "/";
+          d += suffix;
+          cmSystemTools::ConvertToUnixSlashes(d);
+          }
         if(emitted.insert(d).second)
           {
           runtimeDirs.push_back(d);
@@ -1936,6 +1948,14 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs,
             {
             d = d.substr(rootPath.size());
             }
+          else if (stagePath && d.find(stagePath) == 0)
+            {
+            std::string suffix = d.substr(strlen(stagePath));
+            d = installPrefix;
+            d += "/";
+            d += suffix;
+            cmSystemTools::ConvertToUnixSlashes(d);
+            }
           if(emitted.insert(d).second)
             {
             runtimeDirs.push_back(d);
diff --git a/Source/cmFindCommon.cxx b/Source/cmFindCommon.cxx
index 8c42811..233e0f9 100644
--- a/Source/cmFindCommon.cxx
+++ b/Source/cmFindCommon.cxx
@@ -440,6 +440,15 @@ void cmFindCommon::ComputeFinalPaths()
   // Expand list of paths inside all search roots.
   this->RerootPaths(paths);
 
+  if(const char* stagePrefix =
+      this->Makefile->GetDefinition("CMAKE_STAGING_PREFIX"))
+    {
+    if (!this->Makefile->IsOn("CMAKE_FIND_NO_INSTALL_PREFIX"))
+      {
+      paths.push_back(stagePrefix);
+      }
+    }
+
   // Add a trailing slash to all paths to aid the search process.
   for(std::vector<std::string>::iterator i = paths.begin();
       i != paths.end(); ++i)
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 851ff2e..b736307 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -372,6 +372,11 @@ void cmLocalGenerator::GenerateInstallRules()
 #endif
   std::string sysrootted
                   = this->Makefile->GetSafeDefinition("CMAKE_SYSROOT");
+  if (const char *stagingPrefix
+                  = this->Makefile->GetDefinition("CMAKE_STAGING_PREFIX"))
+    {
+    prefix = stagingPrefix;
+    }
 
   // Compute the set of configurations.
   std::vector<std::string> configurationTypes;
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 6426b3a..48554c2 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -250,6 +250,9 @@ if(BUILD_TESTING)
   ADD_TEST_MACRO(CompatibleInterface CompatibleInterface)
   ADD_TEST_MACRO(AliasTarget AliasTarget)
   ADD_TEST_MACRO(InterfaceLibrary InterfaceLibrary)
+  if(UNIX AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+    ADD_TEST_MACRO(ToolchainSettings ToolchainSettings)
+  endif()
   set_tests_properties(EmptyLibrary PROPERTIES
     PASS_REGULAR_EXPRESSION "CMake Error: CMake can not determine linker language for target: test")
   ADD_TEST_MACRO(CrossCompile CrossCompile)
diff --git a/Tests/ToolchainSettings/CMakeLists.txt b/Tests/ToolchainSettings/CMakeLists.txt
new file mode 100644
index 0000000..2f6bee1
--- /dev/null
+++ b/Tests/ToolchainSettings/CMakeLists.txt
@@ -0,0 +1,111 @@
+cmake_minimum_required(VERSION 2.8.12)
+cmake_policy(SET CMP0025 NEW)
+project(ToolchainSettings)
+
+# Wipe out the install tree
+add_custom_command(
+  OUTPUT ${CMAKE_BINARY_DIR}/CleanupProject
+  COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/Consumer
+  COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/Producer
+  COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/sysroot
+  COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/stage
+  )
+add_custom_target(CleanupTarget ALL DEPENDS ${CMAKE_BINARY_DIR}/CleanupProject)
+set_property(
+  SOURCE ${CMAKE_BINARY_DIR}/CleanupProject
+  PROPERTY SYMBOLIC 1
+  )
+
+if(CMAKE_CONFIGURATION_TYPES)
+  set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
+else()
+  if(CMAKE_BUILD_TYPE)
+    set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
+  else()
+    set(NESTED_CONFIG_TYPE)
+  endif()
+endif()
+
+execute_process(COMMAND
+  "${CMAKE_CXX_COMPILER}" -dumpmachine
+  OUTPUT_VARIABLE triple
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+macro(write_make_script name)
+  file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/Make${name}.sh"
+    "#!/bin/sh\n${CMAKE_MAKE_PROGRAM} install > \"${CMAKE_BINARY_DIR}/make_${name}_output\"\n"
+  )
+  file(COPY "${CMAKE_BINARY_DIR}/CMakeFiles/Make${name}.sh"
+    DESTINATION "${CMAKE_BINARY_DIR}"
+    FILE_PERMISSIONS
+      OWNER_READ OWNER_EXECUTE
+  )
+endmacro()
+
+write_make_script(Producer)
+
+# Build and install the producer.
+add_custom_command(
+  OUTPUT ${CMAKE_BINARY_DIR}/ProducerProject
+  COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
+    --build-and-test
+    ${CMAKE_SOURCE_DIR}/Producer
+    ${CMAKE_BINARY_DIR}/Producer
+    --build-noclean
+    --build-project Producer
+    --build-generator ${CMAKE_GENERATOR}
+    --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
+    --build-makeprogram "${CMAKE_BINARY_DIR}/MakeProducer.sh"
+    --build-options
+      -Dtriple=${triple}
+      -Dsysroot=${CMAKE_BINARY_DIR}/sysroot
+      -DCMAKE_VERBOSE_MAKEFILE=1
+  VERBATIM
+  )
+
+add_custom_target(ProducerTarget ALL DEPENDS ${CMAKE_BINARY_DIR}/ProducerProject)
+add_dependencies(ProducerTarget CleanupTarget)
+set_property(
+  SOURCE ${CMAKE_BINARY_DIR}/ProducerProject
+  PROPERTY SYMBOLIC 1
+  )
+
+configure_file(${CMAKE_SOURCE_DIR}/${CMAKE_CXX_COMPILER_ID}-Toolchain.cmake.in
+               ${CMAKE_BINARY_DIR}/${CMAKE_CXX_COMPILER_ID}-Toolchain.cmake @ONLY)
+
+write_make_script(Consumer)
+
+# Build and install the consumer.
+add_custom_command(
+  OUTPUT ${CMAKE_BINARY_DIR}/ConsumerProject
+  COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
+   --build-and-test
+   ${CMAKE_SOURCE_DIR}/Consumer
+   ${CMAKE_BINARY_DIR}/Consumer
+   --build-noclean
+   --build-project Consumer
+   --build-generator ${CMAKE_GENERATOR}
+   --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
+   --build-makeprogram "${CMAKE_BINARY_DIR}/MakeConsumer.sh"
+   --build-options
+      -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/Prefix1
+      -DCMAKE_TOOLCHAIN_FILE=${CMAKE_BINARY_DIR}/${CMAKE_CXX_COMPILER_ID}-Toolchain.cmake
+      -Dtriple=${triple}
+      -DCMAKE_VERBOSE_MAKEFILE=1
+  VERBATIM
+  )
+add_custom_target(ToolchainSettingsTest ALL DEPENDS ${CMAKE_BINARY_DIR}/ConsumerProject)
+add_dependencies(ToolchainSettingsTest ProducerTarget)
+set_property(
+  SOURCE ${CMAKE_BINARY_DIR}/ConsumerProject
+  PROPERTY SYMBOLIC 1
+  )
+
+add_executable(ToolchainSettings main.cpp)
+target_compile_definitions(ToolchainSettings
+  PRIVATE
+    "-DMAKE_OUTPUT=\"${CMAKE_BINARY_DIR}/make_Consumer_output\""
+    "-DCOMPILER=\"${CMAKE_CXX_COMPILER}\""
+)
+add_dependencies(ToolchainSettings ToolchainSettingsTest)
diff --git a/Tests/ToolchainSettings/Clang-Toolchain.cmake.in b/Tests/ToolchainSettings/Clang-Toolchain.cmake.in
new file mode 100644
index 0000000..534b120
--- /dev/null
+++ b/Tests/ToolchainSettings/Clang-Toolchain.cmake.in
@@ -0,0 +1,16 @@
+
+set(CMAKE_SYSTEM_NAME Linux)
+
+set(CMAKE_SYSROOT "@CMAKE_BINARY_DIR@/sysroot")
+set(CMAKE_STAGING_PREFIX "@CMAKE_BINARY_DIR@/stage")
+
+set(CMAKE_C_COMPILER_TARGET @triple@)
+set(CMAKE_CXX_COMPILER_TARGET @triple@)
+
+set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
+set(CMAKE_CXX_COMPILER "@CMAKE_CXX_COMPILER@")
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/Tests/ToolchainSettings/Consumer/CMakeLists.txt b/Tests/ToolchainSettings/Consumer/CMakeLists.txt
new file mode 100644
index 0000000..86bff1c
--- /dev/null
+++ b/Tests/ToolchainSettings/Consumer/CMakeLists.txt
@@ -0,0 +1,21 @@
+
+cmake_minimum_required (VERSION 2.8.12)
+project(Consumer)
+
+foreach(_lang C CXX)
+  set(_existing ${CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES})
+  set(CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES)
+  foreach(_dir ${_existing})
+    if(_dir MATCHES ${CMAKE_SYSROOT})
+      list(APPEND CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES ${_dir})
+    endif()
+  endforeach()
+endforeach()
+
+find_package(ZLIB REQUIRED)
+set(CMAKE_CXX_LINK_FLAGS "-L${CMAKE_SYSROOT}/usr/lib/${triple}")
+
+add_executable(executable main.cpp)
+target_link_libraries(executable ${ZLIB_LIBRARIES})
+
+install(TARGETS executable DESTINATION bin)
diff --git a/Tests/ToolchainSettings/Consumer/main.cpp b/Tests/ToolchainSettings/Consumer/main.cpp
new file mode 100644
index 0000000..a395ca9
--- /dev/null
+++ b/Tests/ToolchainSettings/Consumer/main.cpp
@@ -0,0 +1,11 @@
+
+#include "zlib.h"
+
+#ifndef FAKE_ZLIB
+#error Expected FAKE_ZLIB
+#endif
+
+int main(int ,char **)
+{
+  return fakezlib();
+}
diff --git a/Tests/ToolchainSettings/GNU-Toolchain.cmake.in b/Tests/ToolchainSettings/GNU-Toolchain.cmake.in
new file mode 100644
index 0000000..27b04cf
--- /dev/null
+++ b/Tests/ToolchainSettings/GNU-Toolchain.cmake.in
@@ -0,0 +1,13 @@
+
+set(CMAKE_SYSTEM_NAME Linux)
+
+set(CMAKE_SYSROOT "@CMAKE_BINARY_DIR@/sysroot")
+set(CMAKE_STAGING_PREFIX "@CMAKE_BINARY_DIR@/stage")
+
+set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
+set(CMAKE_CXX_COMPILER "@CMAKE_CXX_COMPILER@")
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/Tests/ToolchainSettings/Producer/CMakeLists.txt b/Tests/ToolchainSettings/Producer/CMakeLists.txt
new file mode 100644
index 0000000..b4f1d3f
--- /dev/null
+++ b/Tests/ToolchainSettings/Producer/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+cmake_minimum_required (VERSION 2.8.12)
+project(Producer)
+
+add_library(fakezlib SHARED fakezlib.cpp)
+set_property(TARGET fakezlib PROPERTY SOVERSION 1)
+set_property(TARGET fakezlib PROPERTY VERSION 1.2.7)
+set_property(TARGET fakezlib PROPERTY LIBRARY_OUTPUT_DIRECTORY ${sysroot}/lib/${triple})
+set_property(TARGET fakezlib PROPERTY OUTPUT_NAME z)
+
+file(MAKE_DIRECTORY "${sysroot}/usr/lib/${triple}/")
+add_custom_command(TARGET fakezlib POST_BUILD
+  COMMAND ${CMAKE_COMMAND} -E remove "${sysroot}/lib/${triple}/libz.so"
+  COMMAND ${CMAKE_COMMAND} -E create_symlink "${sysroot}/lib/${triple}/libz.so.1.2.7" "${sysroot}/usr/lib/${triple}/libz.so"
+)
+file(COPY "fakezlib.h" DESTINATION "${CMAKE_BINARY_DIR}")
+file(RENAME "${CMAKE_BINARY_DIR}/fakezlib.h" "${CMAKE_BINARY_DIR}/zlib.h")
+
+install(FILES "${CMAKE_BINARY_DIR}/zlib.h" DESTINATION "${sysroot}/usr/include/")
diff --git a/Tests/ToolchainSettings/Producer/fakezlib.cpp b/Tests/ToolchainSettings/Producer/fakezlib.cpp
new file mode 100644
index 0000000..0712ffe
--- /dev/null
+++ b/Tests/ToolchainSettings/Producer/fakezlib.cpp
@@ -0,0 +1,7 @@
+
+#include "fakezlib.h"
+
+int fakezlib(void)
+{
+  return 0;
+}
diff --git a/Tests/ToolchainSettings/Producer/fakezlib.h b/Tests/ToolchainSettings/Producer/fakezlib.h
new file mode 100644
index 0000000..5d25657
--- /dev/null
+++ b/Tests/ToolchainSettings/Producer/fakezlib.h
@@ -0,0 +1,9 @@
+
+#ifndef FAKE_ZLIB
+#define FAKE_ZLIB
+
+#define ZLIB_VERSION "1.2.7"
+
+int fakezlib(void);
+
+#endif
diff --git a/Tests/ToolchainSettings/main.cpp b/Tests/ToolchainSettings/main.cpp
new file mode 100644
index 0000000..6afcdae
--- /dev/null
+++ b/Tests/ToolchainSettings/main.cpp
@@ -0,0 +1,61 @@
+
+#include <string>
+#include <fstream>
+#include <iostream>
+
+int main(void)
+{
+  std::ifstream f;
+  f.open(MAKE_OUTPUT);
+  if (!f.is_open())
+    {
+    return -1;
+    }
+  std::string content;
+
+  bool gotCompilation = false;
+  bool gotLink = false;
+  while (!f.eof())
+    {
+    std::string output;
+    getline(f,output);
+    if (output.find(COMPILER) != std::string::npos)
+      {
+      if (output.find("-sysroot") == std::string::npos)
+        {
+        return -1;
+        }
+      if (output.find(" -c ") != std::string::npos)
+        {
+        gotCompilation = true;
+        if (output.find(" -I") != std::string::npos)
+          {
+          return -1;
+          }
+        if (output.find(" -isystem") != std::string::npos)
+          {
+          return -1;
+          }
+        }
+      else
+        {
+        gotLink = true;
+        if (output.find("zlib.so") != std::string::npos)
+          {
+          return -1;
+          }
+        if (output.find("-lz") == std::string::npos)
+          {
+          return -1;
+          }
+        }
+      }
+    }
+  if (!gotCompilation || !gotLink)
+    {
+    return -1;
+    }
+  f.close();
+
+  return 0;
+}

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list