[Cmake-commits] CMake branch, next, updated. v2.8.12.1-5201-g09dbdc5

Stephen Kelly steveire at gmail.com
Sun Nov 17 11:16:17 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  09dbdc547842518244418d80cc83bde0878b33ac (commit)
       via  a8fd3361f389ab8ef87dfda2097c44329bc14118 (commit)
      from  d1230d409e813f951d5eeb4325e25670933feb75 (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=09dbdc547842518244418d80cc83bde0878b33ac
commit 09dbdc547842518244418d80cc83bde0878b33ac
Merge: d1230d4 a8fd336
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Nov 17 11:16:15 2013 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Sun Nov 17 11:16:15 2013 -0500

    Merge topic 'cross-compiling-toolchain-variables' into next
    
    a8fd336 Add test.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a8fd3361f389ab8ef87dfda2097c44329bc14118
commit a8fd3361f389ab8ef87dfda2097c44329bc14118
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Nov 17 16:37:05 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Sun Nov 17 17:04:46 2013 +0100

    Add test.

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:
 Tests/CMakeLists.txt                             |    3 +
 Tests/ToolchainSettings/CMakeLists.txt           |  111 ++++++++++++++++++++++
 Tests/ToolchainSettings/Clang-Toolchain.cmake.in |   16 +++
 Tests/ToolchainSettings/Consumer/CMakeLists.txt  |   21 ++++
 Tests/ToolchainSettings/Consumer/main.cpp        |   11 ++
 Tests/ToolchainSettings/GNU-Toolchain.cmake.in   |   13 +++
 Tests/ToolchainSettings/Producer/CMakeLists.txt  |   19 ++++
 Tests/ToolchainSettings/Producer/fakezlib.cpp    |    7 ++
 Tests/ToolchainSettings/Producer/fakezlib.h      |    9 ++
 Tests/ToolchainSettings/main.cpp                 |   61 ++++++++++++
 10 files changed, 271 insertions(+), 0 deletions(-)
 create mode 100644 Tests/ToolchainSettings/CMakeLists.txt
 create mode 100644 Tests/ToolchainSettings/Clang-Toolchain.cmake.in
 create mode 100644 Tests/ToolchainSettings/Consumer/CMakeLists.txt
 create mode 100644 Tests/ToolchainSettings/Consumer/main.cpp
 create mode 100644 Tests/ToolchainSettings/GNU-Toolchain.cmake.in
 create mode 100644 Tests/ToolchainSettings/Producer/CMakeLists.txt
 create mode 100644 Tests/ToolchainSettings/Producer/fakezlib.cpp
 create mode 100644 Tests/ToolchainSettings/Producer/fakezlib.h
 create mode 100644 Tests/ToolchainSettings/main.cpp


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list