From kwrobot at kitware.com Mon Jun 1 00:01:07 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 1 Jun 2015 00:01:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1357-gd617dc6 Message-ID: <20150601040107.F0F4AB04FA@public.kitware.com> 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, master has been updated via d617dc6af4db944f05b6cd2bd1e71276cb3c52eb (commit) from ab756293bf128858565b6d7c528e15ecc002b23b (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=d617dc6af4db944f05b6cd2bd1e71276cb3c52eb commit d617dc6af4db944f05b6cd2bd1e71276cb3c52eb Author: Kitware Robot AuthorDate: Mon Jun 1 00:01:06 2015 -0400 Commit: Kitware Robot CommitDate: Mon Jun 1 00:01:06 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index f9a7d95..26c9e44 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 2) -set(CMake_VERSION_PATCH 20150531) +set(CMake_VERSION_PATCH 20150601) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:15:32 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:15:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3254-gef586dc Message-ID: <20150601131532.9FB32AF295@public.kitware.com> 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 ef586dcdca725f32b803692730554430bb708290 (commit) via 9504d7a99bdb1a1c4b50ce8dc6ceced89f1fdb48 (commit) from 4bb795b709ebbd2b53d841bb810f4d1a7e6505aa (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=ef586dcdca725f32b803692730554430bb708290 commit ef586dcdca725f32b803692730554430bb708290 Merge: 4bb795b 9504d7a Author: Brad King AuthorDate: Mon Jun 1 09:15:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:15:31 2015 -0400 Merge topic 'doc-add_dependencies-no-install' into next 9504d7a9 Help: Explicitly mention lack of 'install' support in add_dependencies http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9504d7a99bdb1a1c4b50ce8dc6ceced89f1fdb48 commit 9504d7a99bdb1a1c4b50ce8dc6ceced89f1fdb48 Author: Brad King AuthorDate: Mon Jun 1 09:13:23 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:13:23 2015 -0400 Help: Explicitly mention lack of 'install' support in add_dependencies CMake-generated targets are not supported by add_dependencies. State this explicitly and use 'install' as an example since this may be commonly attempted. diff --git a/Help/command/add_dependencies.rst b/Help/command/add_dependencies.rst index c3583cf..7a66143 100644 --- a/Help/command/add_dependencies.rst +++ b/Help/command/add_dependencies.rst @@ -10,7 +10,8 @@ Add a dependency between top-level targets. Make a top-level ```` depend on other top-level targets to ensure that they build before ```` does. A top-level target is one created by one of the :command:`add_executable`, -:command:`add_library`, or :command:`add_custom_target` commands. +:command:`add_library`, or :command:`add_custom_target` commands +(but not targets generated by CMake like ``install``). Dependencies added to an :ref:`imported target ` or an :ref:`interface library ` are followed ----------------------------------------------------------------------- Summary of changes: Help/command/add_dependencies.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:17:52 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:17:52 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3256-g2693c45 Message-ID: <20150601131752.61141AFB28@public.kitware.com> 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 2693c45e6237acba2514626ae794386f0a63525e (commit) via 820c7e29699a0e13d79ee410afa85dd73b3b951c (commit) from ef586dcdca725f32b803692730554430bb708290 (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=2693c45e6237acba2514626ae794386f0a63525e commit 2693c45e6237acba2514626ae794386f0a63525e Merge: ef586dc 820c7e2 Author: Brad King AuthorDate: Mon Jun 1 09:17:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:17:51 2015 -0400 Merge topic 'imported-interface-libname' into next 820c7e29 Revert "Tests: Add verbose output from InterfaceLibrary for remote debugging" http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=820c7e29699a0e13d79ee410afa85dd73b3b951c commit 820c7e29699a0e13d79ee410afa85dd73b3b951c Author: Brad King AuthorDate: Mon Jun 1 09:17:28 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:17:28 2015 -0400 Revert "Tests: Add verbose output from InterfaceLibrary for remote debugging" This reverts commit 14303e4fa55e1613068e74e5f0e09714c0a3560a. diff --git a/Tests/InterfaceLibrary/CMakeLists.txt b/Tests/InterfaceLibrary/CMakeLists.txt index 50baf6b..3db210a 100644 --- a/Tests/InterfaceLibrary/CMakeLists.txt +++ b/Tests/InterfaceLibrary/CMakeLists.txt @@ -3,8 +3,6 @@ cmake_minimum_required(VERSION 2.8) project(InterfaceLibrary) -set(CMAKE_VERBOSE_MAKEFILE 1) - add_library(iface_nodepends INTERFACE) target_compile_definitions(iface_nodepends INTERFACE IFACE_DEFINE) ----------------------------------------------------------------------- Summary of changes: Tests/InterfaceLibrary/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:18:50 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:18:50 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3258-gaaa9af3 Message-ID: <20150601131850.AF995AFB9A@public.kitware.com> 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 aaa9af32fa233cb1497c65e912ea3d27c3dcf430 (commit) via 238e6ce77a316468f712e9ace25290bae10a8a10 (commit) from 2693c45e6237acba2514626ae794386f0a63525e (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=aaa9af32fa233cb1497c65e912ea3d27c3dcf430 commit aaa9af32fa233cb1497c65e912ea3d27c3dcf430 Merge: 2693c45 238e6ce Author: Brad King AuthorDate: Mon Jun 1 09:18:49 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:18:49 2015 -0400 Merge topic 'imported-interface-libname' into next 238e6ce7 Allow imported INTERFACE libraries to specify a link library name http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=238e6ce77a316468f712e9ace25290bae10a8a10 commit 238e6ce77a316468f712e9ace25290bae10a8a10 Author: Brad King AuthorDate: Tue May 19 15:36:28 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:18:20 2015 -0400 Allow imported INTERFACE libraries to specify a link library name Add an IMPORTED_LIBNAME[_] target property to specify a library name to be placed on the link line in place of an interface library since it has no library file of its own. Restrict use of the property to imported INTERFACE libraries. This will be particularly useful for find modules that need to provide imported libraries from system SDKs where the full path to the library file is not known. Now such find modules will be able to provide an imported interface library and set IMPORTED_LIBNAME to refer to the SDK library by name. See issue 15267. The IMPORTED_LIBNAME[_] property also allows us to implement MAP_IMPORTED_CONFIG_ for interface libraries. Drop some of the special cases added by commit v3.0.0-rc1~301^2~1 (INTERFACE_LIBRARY: Avoid codepaths which set unneeded properties, 2013-11-20) and commit v3.0.0-rc1~237^2 (Don't search for IMPORTED_LOCATION of INTERFACE_LIBRARY, 2013-12-09). Ensure the test added by commit v3.0.0-rc1~150^2 (InterfaceLibrary: Add test requiring MAP_IMPORTED_CONFIG whitelisting, 2014-01-09) still passes. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 615254e..9bbecec 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -142,6 +142,8 @@ Properties on Targets /prop_tgt/IMPORTED_CONFIGURATIONS /prop_tgt/IMPORTED_IMPLIB_CONFIG /prop_tgt/IMPORTED_IMPLIB + /prop_tgt/IMPORTED_LIBNAME_CONFIG + /prop_tgt/IMPORTED_LIBNAME /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES /prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG diff --git a/Help/prop_tgt/IMPORTED_LIBNAME.rst b/Help/prop_tgt/IMPORTED_LIBNAME.rst new file mode 100644 index 0000000..1943dba --- /dev/null +++ b/Help/prop_tgt/IMPORTED_LIBNAME.rst @@ -0,0 +1,23 @@ +IMPORTED_LIBNAME +---------------- + +Specify the link library name for an :ref:`imported ` +:ref:`Interface Library `. + +An interface library builds no library file itself but does specify +usage requirements for its consumers. The ``IMPORTED_LIBNAME`` +property may be set to specify a single library name to be placed +on the link line in place of the interface library target name as +a requirement for using the interface. + +This property is intended for use in naming libraries provided by +a platform SDK for which the full path to a library file may not +be known. The value may be a plain library name such as ``foo`` +but may *not* be a path (e.g. ``/usr/lib/libfoo.so``) or a flag +(e.g. ``-Wl,...``). The name is never treated as a library target +name even if it happens to name one. + +The ``IMPORTED_LIBNAME`` property is allowed only on +:ref:`imported ` :ref:`Interface Libraries` +and is rejected on targets of other types (for which +the :prop_tgt:`IMPORTED_LOCATION` target property may be used). diff --git a/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst b/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst new file mode 100644 index 0000000..a28b838 --- /dev/null +++ b/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst @@ -0,0 +1,7 @@ +IMPORTED_LIBNAME_ +------------------------- + +-specific version of :prop_tgt:`IMPORTED_LIBNAME` property. + +Configuration names correspond to those provided by the project from +which the target is imported. diff --git a/Help/release/dev/imported-interface-libname.rst b/Help/release/dev/imported-interface-libname.rst new file mode 100644 index 0000000..fdbae78 --- /dev/null +++ b/Help/release/dev/imported-interface-libname.rst @@ -0,0 +1,7 @@ +imported-interface-libname +-------------------------- + +* :ref:`Imported ` :ref:`Interface Libraries` learned new + :prop_tgt:`IMPORTED_LIBNAME` and :prop_tgt:`IMPORTED_LIBNAME_` + target properties to specify a link library name since interface libraries + do not build their own library files. diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index e6cbe60..53abb10 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -658,6 +658,13 @@ void cmComputeLinkInformation::AddItem(std::string const& item, // of COMPATIBLE_INTERFACE_ enforcement. The generators will ignore // this for the actual link line. this->Items.push_back(Item(std::string(), true, tgt)); + + // Also add the item the interface specifies to be used in its place. + std::string const& libName = tgt->GetImportedLibName(config); + if (!libName.empty()) + { + this->AddItem(libName, 0); + } } else { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 88ec61b..ac70138 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -77,6 +77,7 @@ struct cmTarget::ImportInfo std::string Location; std::string SOName; std::string ImportLibrary; + std::string LibName; std::string Languages; std::string Libraries; std::string LibrariesProp; @@ -364,11 +365,6 @@ void cmTarget::SetMakefile(cmMakefile* mf) std::string configUpper = cmSystemTools::UpperCase(*ci); for(const char** p = configProps; *p; ++p) { - if (this->TargetTypeValue == INTERFACE_LIBRARY - && strcmp(*p, "MAP_IMPORTED_CONFIG_") != 0) - { - continue; - } std::string property = *p; property += configUpper; this->SetPropertyDefault(property, 0); @@ -1675,7 +1671,10 @@ static bool whiteListedInterfaceProperty(const std::string& prop) return true; } - if (cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) + if (prop == "IMPORTED_CONFIGURATIONS" || + prop == "IMPORTED_LIBNAME" || + cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME_") || + cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) { return true; } @@ -1745,6 +1744,11 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) << this->Name << "\")\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } + else if(cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME") && + !this->CheckImportedLibName(prop, value? value:"")) + { + /* error was reported by check method */ + } else if (prop == "LINK_LIBRARIES") { this->Internal->LinkImplementationPropertyEntries.clear(); @@ -1832,6 +1836,11 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value, << this->Name << "\")\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } + else if(cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME")) + { + this->Makefile->IssueMessage(cmake::FATAL_ERROR, + prop + " property may not be APPENDed."); + } else if (prop == "LINK_LIBRARIES") { cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); @@ -3837,6 +3846,16 @@ void cmTarget::GetFullNameComponents(std::string& prefix, std::string& base, } //---------------------------------------------------------------------------- +std::string cmTarget::GetImportedLibName(std::string const& config) const +{ + if (cmTarget::ImportInfo const* info = this->GetImportInfo(config)) + { + return info->LibName; + } + return std::string(); +} + +//---------------------------------------------------------------------------- std::string cmTarget::GetFullPath(const std::string& config, bool implib, bool realname) const { @@ -5393,15 +5412,9 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, const char** imp, std::string& suffix) const { - if (this->GetType() == INTERFACE_LIBRARY) - { - // This method attempts to find a config-specific LOCATION for the - // IMPORTED library. In the case of INTERFACE_LIBRARY, there is no - // LOCATION at all, so leaving *loc and *imp unchanged is the appropriate - // and valid response. - return true; - } - std::string const locPropBase = "IMPORTED_LOCATION"; + std::string const locPropBase = + this->GetType() == INTERFACE_LIBRARY? + "IMPORTED_LIBNAME" : "IMPORTED_LOCATION"; // Track the configuration-specific property suffix. suffix = "_"; @@ -5451,7 +5464,9 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, // any other configuration. if(!mappedConfigs.empty() && !*loc && !*imp) { - return false; + // Interface libraries are always available because their + // library name is optional so it is okay to leave *loc empty. + return this->GetType() == cmTarget::INTERFACE_LIBRARY; } // If we have not yet found it then there are no mapped @@ -5515,7 +5530,9 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, // If we have not yet found it then the target location is not available. if(!*loc && !*imp) { - return false; + // Interface libraries are always available because their + // library name is optional so it is okay to leave *loc empty. + return this->GetType() == cmTarget::INTERFACE_LIBRARY; } return true; @@ -5568,6 +5585,10 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config, } if(this->GetType() == INTERFACE_LIBRARY) { + if (loc) + { + info.LibName = loc; + } return; } @@ -5692,6 +5713,37 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config, } //---------------------------------------------------------------------------- +bool cmTarget::CheckImportedLibName(std::string const& prop, + std::string const& value) const +{ + if (this->GetType() != cmTarget::INTERFACE_LIBRARY || + !this->IsImported()) + { + this->Makefile->IssueMessage(cmake::FATAL_ERROR, prop + + " property may be set only on imported INTERFACE library targets."); + return false; + } + if (!value.empty()) + { + if (value[0] == '-') + { + this->Makefile->IssueMessage(cmake::FATAL_ERROR, prop + + " property value\n " + value + "\nmay not start with '-'."); + return false; + } + std::string::size_type bad = value.find_first_of(":/\\;"); + if (bad != value.npos) + { + this->Makefile->IssueMessage(cmake::FATAL_ERROR, prop + + " property value\n " + value + "\nmay not contain '" + + value.substr(bad,1) + "'."); + return false; + } + } + return true; +} + +//---------------------------------------------------------------------------- cmTarget::LinkInterface const* cmTarget::GetLinkInterface( const std::string& config, cmTarget const* head) const diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 2150b83..f5700dc 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -435,6 +435,9 @@ public: no soname at all. */ bool IsImportedSharedLibWithoutSOName(const std::string& config) const; + /** Get the library name for an imported interface library. */ + std::string GetImportedLibName(std::string const& config) const; + /** Get the full path to the target according to the settings in its makefile and the configuration type. */ std::string GetFullPath(const std::string& config="", bool implib = false, @@ -792,6 +795,9 @@ private: void ComputeImportInfo(std::string const& desired_config, ImportInfo& info) const; + bool CheckImportedLibName(std::string const& prop, + std::string const& value) const; + // Cache target compile paths for each configuration. struct CompileInfo; CompileInfo const* GetCompileInfo(const std::string& config) const; diff --git a/Tests/InterfaceLibrary/CMakeLists.txt b/Tests/InterfaceLibrary/CMakeLists.txt index ee81419..3db210a 100644 --- a/Tests/InterfaceLibrary/CMakeLists.txt +++ b/Tests/InterfaceLibrary/CMakeLists.txt @@ -25,8 +25,25 @@ target_sources(iface_objlib INTERFACE $) add_library(intermediate INTERFACE) target_link_libraries(intermediate INTERFACE iface_objlib) +add_library(item_fake_tgt STATIC item_fake.cpp) +set_property(TARGET item_fake_tgt PROPERTY OUTPUT_NAME item_fake) +add_library(item_real STATIC item.cpp) +add_library(item_iface INTERFACE IMPORTED) +set_property(TARGET item_iface PROPERTY IMPORTED_LIBNAME item_real) +add_dependencies(item_iface item_real) +link_directories(${CMAKE_CURRENT_BINARY_DIR}) + add_executable(InterfaceLibrary definetestexe.cpp) -target_link_libraries(InterfaceLibrary iface_nodepends headeriface subiface intermediate) +target_link_libraries(InterfaceLibrary + iface_nodepends + headeriface + subiface + intermediate + + item_iface + item_fake # ensure that 'item_real' is ordered in place of item_iface + ) +add_dependencies(InterfaceLibrary item_fake_tgt) add_subdirectory(libsdir) diff --git a/Tests/InterfaceLibrary/definetestexe.cpp b/Tests/InterfaceLibrary/definetestexe.cpp index 9044076..e6b7f58 100644 --- a/Tests/InterfaceLibrary/definetestexe.cpp +++ b/Tests/InterfaceLibrary/definetestexe.cpp @@ -17,8 +17,9 @@ extern int obj(); extern int sub(); +extern int item(); int main(int,char**) { - return obj() + sub(); + return obj() + sub() + item(); } diff --git a/Tests/InterfaceLibrary/item.cpp b/Tests/InterfaceLibrary/item.cpp new file mode 100644 index 0000000..be612c9 --- /dev/null +++ b/Tests/InterfaceLibrary/item.cpp @@ -0,0 +1 @@ +int item() { return 0; } diff --git a/Tests/InterfaceLibrary/item_fake.cpp b/Tests/InterfaceLibrary/item_fake.cpp new file mode 100644 index 0000000..3944710 --- /dev/null +++ b/Tests/InterfaceLibrary/item_fake.cpp @@ -0,0 +1,2 @@ +extern int item_undefined(); +int item() { return item_undefined(); } diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt new file mode 100644 index 0000000..454c655 --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt @@ -0,0 +1,44 @@ +^CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property value + + -flag + + may not start with '-'. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property value + + item1;item2 + + may not contain ';'. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property value + + /path/to/item1 + + may not contain '/'. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property value + + \\path\\to\\item1 + + may not contain '\\'. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property value + + c:\\path\\to\\item1 + + may not contain ':'. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake new file mode 100644 index 0000000..1af65b4 --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake @@ -0,0 +1,6 @@ +add_library(MyTarget INTERFACE IMPORTED) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME -flag) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME item1 item2) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME /path/to/item1) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME \\path\\to\\item1) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME c:\\path\\to\\item1) diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt new file mode 100644 index 0000000..3a329d2 --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt @@ -0,0 +1,45 @@ +^CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may be set only on imported INTERFACE library + targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may not be APPENDed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME_DEBUG property may be set only on imported INTERFACE + library targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME_DEBUG property may not be APPENDed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may be set only on imported INTERFACE library + targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may be set only on imported INTERFACE library + targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may be set only on imported INTERFACE library + targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may be set only on imported INTERFACE library + targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake new file mode 100644 index 0000000..fe6841a --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake @@ -0,0 +1,17 @@ +add_custom_target(MyCustom) +set_property(TARGET MyCustom PROPERTY IMPORTED_LIBNAME item1) +set_property(TARGET MyCustom APPEND PROPERTY IMPORTED_LIBNAME item2) +set_property(TARGET MyCustom PROPERTY IMPORTED_LIBNAME_DEBUG item1) +set_property(TARGET MyCustom APPEND PROPERTY IMPORTED_LIBNAME_DEBUG item2) + +add_library(MyStatic STATIC IMPORTED) +set_property(TARGET MyStatic PROPERTY IMPORTED_LIBNAME item1) + +add_library(MyShared SHARED IMPORTED) +set_property(TARGET MyShared PROPERTY IMPORTED_LIBNAME item1) + +add_library(MyModule MODULE IMPORTED) +set_property(TARGET MyModule PROPERTY IMPORTED_LIBNAME item1) + +add_executable(MyExe IMPORTED) +set_property(TARGET MyExe PROPERTY IMPORTED_LIBNAME item1) diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt new file mode 100644 index 0000000..e9d94cf --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt @@ -0,0 +1,21 @@ +^CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may be set only on imported INTERFACE library + targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME property may not be APPENDed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME_DEBUG property may be set only on imported INTERFACE + library targets. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): + IMPORTED_LIBNAME_DEBUG property may not be APPENDed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake new file mode 100644 index 0000000..07a67d7 --- /dev/null +++ b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake @@ -0,0 +1,5 @@ +add_library(MyTarget INTERFACE) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME item1) +set_property(TARGET MyTarget APPEND PROPERTY IMPORTED_LIBNAME item2) +set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME_DEBUG item1) +set_property(TARGET MyTarget APPEND PROPERTY IMPORTED_LIBNAME_DEBUG item2) diff --git a/Tests/RunCMake/interface_library/RunCMakeTest.cmake b/Tests/RunCMake/interface_library/RunCMakeTest.cmake index 201daa7..5a6af1d 100644 --- a/Tests/RunCMake/interface_library/RunCMakeTest.cmake +++ b/Tests/RunCMake/interface_library/RunCMakeTest.cmake @@ -8,3 +8,6 @@ run_cmake(invalid_signature) run_cmake(global-interface) run_cmake(genex_link) run_cmake(add_custom_command-TARGET) +run_cmake(IMPORTED_LIBNAME-bad-value) +run_cmake(IMPORTED_LIBNAME-non-iface) +run_cmake(IMPORTED_LIBNAME-non-imported) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:19:33 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:19:33 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3260-g419cba0 Message-ID: <20150601131933.90882AFBC7@public.kitware.com> 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 419cba0e392565b3d24c0be7a4d7a27416df0075 (commit) via d3d2ded3f8a4fc117241b2212a5fd6b9bb616a3c (commit) from aaa9af32fa233cb1497c65e912ea3d27c3dcf430 (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=419cba0e392565b3d24c0be7a4d7a27416df0075 commit 419cba0e392565b3d24c0be7a4d7a27416df0075 Merge: aaa9af3 d3d2ded Author: Brad King AuthorDate: Mon Jun 1 09:19:32 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:19:32 2015 -0400 Merge topic 'imported-interface-libname' into next d3d2ded3 Revert topic 'imported-interface-libname' http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3d2ded3f8a4fc117241b2212a5fd6b9bb616a3c commit d3d2ded3f8a4fc117241b2212a5fd6b9bb616a3c Author: Brad King AuthorDate: Mon Jun 1 09:19:13 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:19:13 2015 -0400 Revert topic 'imported-interface-libname' It will be revised and restored after more design discussion. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 9bbecec..615254e 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -142,8 +142,6 @@ Properties on Targets /prop_tgt/IMPORTED_CONFIGURATIONS /prop_tgt/IMPORTED_IMPLIB_CONFIG /prop_tgt/IMPORTED_IMPLIB - /prop_tgt/IMPORTED_LIBNAME_CONFIG - /prop_tgt/IMPORTED_LIBNAME /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES /prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG diff --git a/Help/prop_tgt/IMPORTED_LIBNAME.rst b/Help/prop_tgt/IMPORTED_LIBNAME.rst deleted file mode 100644 index 1943dba..0000000 --- a/Help/prop_tgt/IMPORTED_LIBNAME.rst +++ /dev/null @@ -1,23 +0,0 @@ -IMPORTED_LIBNAME ----------------- - -Specify the link library name for an :ref:`imported ` -:ref:`Interface Library `. - -An interface library builds no library file itself but does specify -usage requirements for its consumers. The ``IMPORTED_LIBNAME`` -property may be set to specify a single library name to be placed -on the link line in place of the interface library target name as -a requirement for using the interface. - -This property is intended for use in naming libraries provided by -a platform SDK for which the full path to a library file may not -be known. The value may be a plain library name such as ``foo`` -but may *not* be a path (e.g. ``/usr/lib/libfoo.so``) or a flag -(e.g. ``-Wl,...``). The name is never treated as a library target -name even if it happens to name one. - -The ``IMPORTED_LIBNAME`` property is allowed only on -:ref:`imported ` :ref:`Interface Libraries` -and is rejected on targets of other types (for which -the :prop_tgt:`IMPORTED_LOCATION` target property may be used). diff --git a/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst b/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst deleted file mode 100644 index a28b838..0000000 --- a/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst +++ /dev/null @@ -1,7 +0,0 @@ -IMPORTED_LIBNAME_ -------------------------- - --specific version of :prop_tgt:`IMPORTED_LIBNAME` property. - -Configuration names correspond to those provided by the project from -which the target is imported. diff --git a/Help/release/dev/imported-interface-libname.rst b/Help/release/dev/imported-interface-libname.rst deleted file mode 100644 index fdbae78..0000000 --- a/Help/release/dev/imported-interface-libname.rst +++ /dev/null @@ -1,7 +0,0 @@ -imported-interface-libname --------------------------- - -* :ref:`Imported ` :ref:`Interface Libraries` learned new - :prop_tgt:`IMPORTED_LIBNAME` and :prop_tgt:`IMPORTED_LIBNAME_` - target properties to specify a link library name since interface libraries - do not build their own library files. diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 53abb10..e6cbe60 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -658,13 +658,6 @@ void cmComputeLinkInformation::AddItem(std::string const& item, // of COMPATIBLE_INTERFACE_ enforcement. The generators will ignore // this for the actual link line. this->Items.push_back(Item(std::string(), true, tgt)); - - // Also add the item the interface specifies to be used in its place. - std::string const& libName = tgt->GetImportedLibName(config); - if (!libName.empty()) - { - this->AddItem(libName, 0); - } } else { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index ac70138..70005b4 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -77,7 +77,6 @@ struct cmTarget::ImportInfo std::string Location; std::string SOName; std::string ImportLibrary; - std::string LibName; std::string Languages; std::string Libraries; std::string LibrariesProp; @@ -365,6 +364,11 @@ void cmTarget::SetMakefile(cmMakefile* mf) std::string configUpper = cmSystemTools::UpperCase(*ci); for(const char** p = configProps; *p; ++p) { + if (this->TargetTypeValue == INTERFACE_LIBRARY + && strcmp(*p, "MAP_IMPORTED_CONFIG_") != 0) + { + continue; + } std::string property = *p; property += configUpper; this->SetPropertyDefault(property, 0); @@ -1671,10 +1675,7 @@ static bool whiteListedInterfaceProperty(const std::string& prop) return true; } - if (prop == "IMPORTED_CONFIGURATIONS" || - prop == "IMPORTED_LIBNAME" || - cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME_") || - cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) + if (cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) { return true; } @@ -1744,11 +1745,6 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) << this->Name << "\")\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } - else if(cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME") && - !this->CheckImportedLibName(prop, value? value:"")) - { - /* error was reported by check method */ - } else if (prop == "LINK_LIBRARIES") { this->Internal->LinkImplementationPropertyEntries.clear(); @@ -1836,11 +1832,6 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value, << this->Name << "\")\n"; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } - else if(cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME")) - { - this->Makefile->IssueMessage(cmake::FATAL_ERROR, - prop + " property may not be APPENDed."); - } else if (prop == "LINK_LIBRARIES") { cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); @@ -3846,16 +3837,6 @@ void cmTarget::GetFullNameComponents(std::string& prefix, std::string& base, } //---------------------------------------------------------------------------- -std::string cmTarget::GetImportedLibName(std::string const& config) const -{ - if (cmTarget::ImportInfo const* info = this->GetImportInfo(config)) - { - return info->LibName; - } - return std::string(); -} - -//---------------------------------------------------------------------------- std::string cmTarget::GetFullPath(const std::string& config, bool implib, bool realname) const { @@ -5412,9 +5393,14 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, const char** imp, std::string& suffix) const { - std::string const locPropBase = - this->GetType() == INTERFACE_LIBRARY? - "IMPORTED_LIBNAME" : "IMPORTED_LOCATION"; + if (this->GetType() == INTERFACE_LIBRARY) + { + // This method attempts to find a config-specific LOCATION for the + // IMPORTED library. In the case of INTERFACE_LIBRARY, there is no + // LOCATION at all, so leaving *loc and *imp unchanged is the appropriate + // and valid response. + return true; + } // Track the configuration-specific property suffix. suffix = "_"; @@ -5441,7 +5427,7 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, { // Look for this configuration. std::string mcUpper = cmSystemTools::UpperCase(*mci); - std::string locProp = locPropBase + "_"; + std::string locProp = "IMPORTED_LOCATION_"; locProp += mcUpper; *loc = this->GetProperty(locProp); if(allowImp) @@ -5460,20 +5446,18 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, } // If we needed to find one of the mapped configurations but did not - // then the target location is not found. The project does not want - // any other configuration. + // then the target is not found. The project does not want any + // other configuration. if(!mappedConfigs.empty() && !*loc && !*imp) { - // Interface libraries are always available because their - // library name is optional so it is okay to leave *loc empty. - return this->GetType() == cmTarget::INTERFACE_LIBRARY; + return false; } // If we have not yet found it then there are no mapped // configurations. Look for an exact-match. if(!*loc && !*imp) { - std::string locProp = locPropBase; + std::string locProp = "IMPORTED_LOCATION"; locProp += suffix; *loc = this->GetProperty(locProp); if(allowImp) @@ -5493,7 +5477,7 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, // Look for a configuration-less location. This may be set by // manually-written code. - *loc = this->GetProperty(locPropBase); + *loc = this->GetProperty("IMPORTED_LOCATION"); if(allowImp) { *imp = this->GetProperty("IMPORTED_IMPLIB"); @@ -5515,7 +5499,7 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, { suffix = "_"; suffix += cmSystemTools::UpperCase(*aci); - std::string locProp = locPropBase; + std::string locProp = "IMPORTED_LOCATION"; locProp += suffix; *loc = this->GetProperty(locProp); if(allowImp) @@ -5526,13 +5510,10 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, } } } - - // If we have not yet found it then the target location is not available. + // If we have not yet found it then the target is not available. if(!*loc && !*imp) { - // Interface libraries are always available because their - // library name is optional so it is okay to leave *loc empty. - return this->GetType() == cmTarget::INTERFACE_LIBRARY; + return false; } return true; @@ -5585,10 +5566,6 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config, } if(this->GetType() == INTERFACE_LIBRARY) { - if (loc) - { - info.LibName = loc; - } return; } @@ -5713,37 +5690,6 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config, } //---------------------------------------------------------------------------- -bool cmTarget::CheckImportedLibName(std::string const& prop, - std::string const& value) const -{ - if (this->GetType() != cmTarget::INTERFACE_LIBRARY || - !this->IsImported()) - { - this->Makefile->IssueMessage(cmake::FATAL_ERROR, prop + - " property may be set only on imported INTERFACE library targets."); - return false; - } - if (!value.empty()) - { - if (value[0] == '-') - { - this->Makefile->IssueMessage(cmake::FATAL_ERROR, prop + - " property value\n " + value + "\nmay not start with '-'."); - return false; - } - std::string::size_type bad = value.find_first_of(":/\\;"); - if (bad != value.npos) - { - this->Makefile->IssueMessage(cmake::FATAL_ERROR, prop + - " property value\n " + value + "\nmay not contain '" + - value.substr(bad,1) + "'."); - return false; - } - } - return true; -} - -//---------------------------------------------------------------------------- cmTarget::LinkInterface const* cmTarget::GetLinkInterface( const std::string& config, cmTarget const* head) const diff --git a/Source/cmTarget.h b/Source/cmTarget.h index f5700dc..2150b83 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -435,9 +435,6 @@ public: no soname at all. */ bool IsImportedSharedLibWithoutSOName(const std::string& config) const; - /** Get the library name for an imported interface library. */ - std::string GetImportedLibName(std::string const& config) const; - /** Get the full path to the target according to the settings in its makefile and the configuration type. */ std::string GetFullPath(const std::string& config="", bool implib = false, @@ -795,9 +792,6 @@ private: void ComputeImportInfo(std::string const& desired_config, ImportInfo& info) const; - bool CheckImportedLibName(std::string const& prop, - std::string const& value) const; - // Cache target compile paths for each configuration. struct CompileInfo; CompileInfo const* GetCompileInfo(const std::string& config) const; diff --git a/Tests/InterfaceLibrary/CMakeLists.txt b/Tests/InterfaceLibrary/CMakeLists.txt index 3db210a..ee81419 100644 --- a/Tests/InterfaceLibrary/CMakeLists.txt +++ b/Tests/InterfaceLibrary/CMakeLists.txt @@ -25,25 +25,8 @@ target_sources(iface_objlib INTERFACE $) add_library(intermediate INTERFACE) target_link_libraries(intermediate INTERFACE iface_objlib) -add_library(item_fake_tgt STATIC item_fake.cpp) -set_property(TARGET item_fake_tgt PROPERTY OUTPUT_NAME item_fake) -add_library(item_real STATIC item.cpp) -add_library(item_iface INTERFACE IMPORTED) -set_property(TARGET item_iface PROPERTY IMPORTED_LIBNAME item_real) -add_dependencies(item_iface item_real) -link_directories(${CMAKE_CURRENT_BINARY_DIR}) - add_executable(InterfaceLibrary definetestexe.cpp) -target_link_libraries(InterfaceLibrary - iface_nodepends - headeriface - subiface - intermediate - - item_iface - item_fake # ensure that 'item_real' is ordered in place of item_iface - ) -add_dependencies(InterfaceLibrary item_fake_tgt) +target_link_libraries(InterfaceLibrary iface_nodepends headeriface subiface intermediate) add_subdirectory(libsdir) diff --git a/Tests/InterfaceLibrary/definetestexe.cpp b/Tests/InterfaceLibrary/definetestexe.cpp index e6b7f58..9044076 100644 --- a/Tests/InterfaceLibrary/definetestexe.cpp +++ b/Tests/InterfaceLibrary/definetestexe.cpp @@ -17,9 +17,8 @@ extern int obj(); extern int sub(); -extern int item(); int main(int,char**) { - return obj() + sub() + item(); + return obj() + sub(); } diff --git a/Tests/InterfaceLibrary/item.cpp b/Tests/InterfaceLibrary/item.cpp deleted file mode 100644 index be612c9..0000000 --- a/Tests/InterfaceLibrary/item.cpp +++ /dev/null @@ -1 +0,0 @@ -int item() { return 0; } diff --git a/Tests/InterfaceLibrary/item_fake.cpp b/Tests/InterfaceLibrary/item_fake.cpp deleted file mode 100644 index 3944710..0000000 --- a/Tests/InterfaceLibrary/item_fake.cpp +++ /dev/null @@ -1,2 +0,0 @@ -extern int item_undefined(); -int item() { return item_undefined(); } diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt deleted file mode 100644 index 454c655..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt +++ /dev/null @@ -1,44 +0,0 @@ -^CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property value - - -flag - - may not start with '-'. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property value - - item1;item2 - - may not contain ';'. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property value - - /path/to/item1 - - may not contain '/'. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property value - - \\path\\to\\item1 - - may not contain '\\'. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-bad-value.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property value - - c:\\path\\to\\item1 - - may not contain ':'. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake deleted file mode 100644 index 1af65b4..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake +++ /dev/null @@ -1,6 +0,0 @@ -add_library(MyTarget INTERFACE IMPORTED) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME -flag) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME item1 item2) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME /path/to/item1) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME \\path\\to\\item1) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME c:\\path\\to\\item1) diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt deleted file mode 100644 index 3a329d2..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt +++ /dev/null @@ -1,45 +0,0 @@ -^CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may be set only on imported INTERFACE library - targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may not be APPENDed. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME_DEBUG property may be set only on imported INTERFACE - library targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME_DEBUG property may not be APPENDed. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may be set only on imported INTERFACE library - targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may be set only on imported INTERFACE library - targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may be set only on imported INTERFACE library - targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-iface.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may be set only on imported INTERFACE library - targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake deleted file mode 100644 index fe6841a..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake +++ /dev/null @@ -1,17 +0,0 @@ -add_custom_target(MyCustom) -set_property(TARGET MyCustom PROPERTY IMPORTED_LIBNAME item1) -set_property(TARGET MyCustom APPEND PROPERTY IMPORTED_LIBNAME item2) -set_property(TARGET MyCustom PROPERTY IMPORTED_LIBNAME_DEBUG item1) -set_property(TARGET MyCustom APPEND PROPERTY IMPORTED_LIBNAME_DEBUG item2) - -add_library(MyStatic STATIC IMPORTED) -set_property(TARGET MyStatic PROPERTY IMPORTED_LIBNAME item1) - -add_library(MyShared SHARED IMPORTED) -set_property(TARGET MyShared PROPERTY IMPORTED_LIBNAME item1) - -add_library(MyModule MODULE IMPORTED) -set_property(TARGET MyModule PROPERTY IMPORTED_LIBNAME item1) - -add_executable(MyExe IMPORTED) -set_property(TARGET MyExe PROPERTY IMPORTED_LIBNAME item1) diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt deleted file mode 100644 index e9d94cf..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt +++ /dev/null @@ -1,21 +0,0 @@ -^CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may be set only on imported INTERFACE library - targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME property may not be APPENDed. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME_DEBUG property may be set only on imported INTERFACE - library targets. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error at IMPORTED_LIBNAME-non-imported.cmake:[0-9]+ \(set_property\): - IMPORTED_LIBNAME_DEBUG property may not be APPENDed. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake b/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake deleted file mode 100644 index 07a67d7..0000000 --- a/Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake +++ /dev/null @@ -1,5 +0,0 @@ -add_library(MyTarget INTERFACE) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME item1) -set_property(TARGET MyTarget APPEND PROPERTY IMPORTED_LIBNAME item2) -set_property(TARGET MyTarget PROPERTY IMPORTED_LIBNAME_DEBUG item1) -set_property(TARGET MyTarget APPEND PROPERTY IMPORTED_LIBNAME_DEBUG item2) diff --git a/Tests/RunCMake/interface_library/RunCMakeTest.cmake b/Tests/RunCMake/interface_library/RunCMakeTest.cmake index 5a6af1d..201daa7 100644 --- a/Tests/RunCMake/interface_library/RunCMakeTest.cmake +++ b/Tests/RunCMake/interface_library/RunCMakeTest.cmake @@ -8,6 +8,3 @@ run_cmake(invalid_signature) run_cmake(global-interface) run_cmake(genex_link) run_cmake(add_custom_command-TARGET) -run_cmake(IMPORTED_LIBNAME-bad-value) -run_cmake(IMPORTED_LIBNAME-non-iface) -run_cmake(IMPORTED_LIBNAME-non-imported) ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-properties.7.rst | 2 - Help/prop_tgt/IMPORTED_LIBNAME.rst | 23 ----- Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst | 7 -- Help/release/dev/imported-interface-libname.rst | 7 -- Source/cmComputeLinkInformation.cxx | 7 -- Source/cmTarget.cxx | 100 +++++--------------- Source/cmTarget.h | 6 -- Tests/InterfaceLibrary/CMakeLists.txt | 19 +--- Tests/InterfaceLibrary/definetestexe.cpp | 3 +- Tests/InterfaceLibrary/item.cpp | 1 - Tests/InterfaceLibrary/item_fake.cpp | 2 - .../IMPORTED_LIBNAME-bad-value-result.txt | 1 - .../IMPORTED_LIBNAME-bad-value-stderr.txt | 44 --------- .../IMPORTED_LIBNAME-bad-value.cmake | 6 -- .../IMPORTED_LIBNAME-non-iface-result.txt | 1 - .../IMPORTED_LIBNAME-non-iface-stderr.txt | 45 --------- .../IMPORTED_LIBNAME-non-iface.cmake | 17 ---- .../IMPORTED_LIBNAME-non-imported-result.txt | 1 - .../IMPORTED_LIBNAME-non-imported-stderr.txt | 21 ---- .../IMPORTED_LIBNAME-non-imported.cmake | 5 - .../RunCMake/interface_library/RunCMakeTest.cmake | 3 - 21 files changed, 25 insertions(+), 296 deletions(-) delete mode 100644 Help/prop_tgt/IMPORTED_LIBNAME.rst delete mode 100644 Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst delete mode 100644 Help/release/dev/imported-interface-libname.rst delete mode 100644 Tests/InterfaceLibrary/item.cpp delete mode 100644 Tests/InterfaceLibrary/item_fake.cpp delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-result.txt delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value-stderr.txt delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-bad-value.cmake delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-result.txt delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface-stderr.txt delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-iface.cmake delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-result.txt delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported-stderr.txt delete mode 100644 Tests/RunCMake/interface_library/IMPORTED_LIBNAME-non-imported.cmake hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:24:59 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:24:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3264-g4bfcad0 Message-ID: <20150601132459.99AACAFE2A@public.kitware.com> 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 4bfcad0d9156e20761fcb8ef630eee4885d34371 (commit) via 8444809c47b0c2d6b9b2b57bd62d9a51fc5fa498 (commit) via 5752e558053261bdefc6294d9f13918e1233cd9e (commit) via 221a02635ef3097992ab7896b7da6f3274addfd0 (commit) from 419cba0e392565b3d24c0be7a4d7a27416df0075 (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=4bfcad0d9156e20761fcb8ef630eee4885d34371 commit 4bfcad0d9156e20761fcb8ef630eee4885d34371 Merge: 419cba0 8444809 Author: Brad King AuthorDate: Mon Jun 1 09:24:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:24:58 2015 -0400 Merge topic 'FindMatlab-fix-visibility-and-reconfiguration' into next 8444809c FindMatlab: fix reconfiguration of Matlab_ROOT_DIR 5752e558 FindMatlab: fix header visibility of the generated mex files 221a0263 FindMatlab: Drop incorrect usage option from test helper script http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8444809c47b0c2d6b9b2b57bd62d9a51fc5fa498 commit 8444809c47b0c2d6b9b2b57bd62d9a51fc5fa498 Author: Raffi Enficiaud AuthorDate: Fri May 29 17:44:19 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 09:24:06 2015 -0400 FindMatlab: fix reconfiguration of Matlab_ROOT_DIR diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index 939f796..028bf5a 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -134,7 +134,8 @@ # returns the suffix to be used for the mex files # (platform/architecture dependant) # :command:`matlab_get_version_from_matlab_run` -# returns the version of Matlab, given the full directory of the Matlab program. +# returns the version of Matlab, given the full directory of the Matlab +# program. # # # Known issues @@ -1064,7 +1065,7 @@ if(Matlab_ROOT_DIR) endif() else() # NOTFOUND indicates the code below to search for the version automatically - if(NOT DEFINED Matlab_VERSION_STRING_INTERNAL) + if("${Matlab_VERSION_STRING_INTERNAL}" STREQUAL "") list(APPEND _matlab_possible_roots "NOTFOUND" ${Matlab_ROOT_DIR}) # empty version else() list(APPEND _matlab_possible_roots ${Matlab_VERSION_STRING_INTERNAL} ${Matlab_ROOT_DIR}) # cached version diff --git a/Tests/RunCMake/FindMatlab/MatlabTest2-result.txt b/Tests/RunCMake/FindMatlab/MatlabTest2-result.txt new file mode 100644 index 0000000..573541a --- /dev/null +++ b/Tests/RunCMake/FindMatlab/MatlabTest2-result.txt @@ -0,0 +1 @@ +0 diff --git a/Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt b/Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt new file mode 100644 index 0000000..9abb766 --- /dev/null +++ b/Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt @@ -0,0 +1 @@ +.* \ No newline at end of file diff --git a/Tests/RunCMake/FindMatlab/MatlabTest2.cmake b/Tests/RunCMake/FindMatlab/MatlabTest2.cmake new file mode 100644 index 0000000..d5b0e6d --- /dev/null +++ b/Tests/RunCMake/FindMatlab/MatlabTest2.cmake @@ -0,0 +1,9 @@ +cmake_minimum_required (VERSION 2.8.12) +enable_testing() +project(findmatlab_runcmake_test2) + +if(NOT DEFINED matlab_required) + set(matlab_required REQUIRED) +endif() + +find_package(Matlab ${matlab_required} COMPONENTS MX_LIBRARY) diff --git a/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake b/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake index 33dbb77..f0eb6b4 100644 --- a/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake +++ b/Tests/RunCMake/FindMatlab/RunCMakeTest.cmake @@ -1,3 +1,51 @@ include(RunCMake) run_cmake(MatlabTest1) + +if(RunCMake_GENERATOR MATCHES "Make" AND UNIX) + # Use a single build tree for a few tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunFindMatlab-build-init) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + message(STATUS "RerunFindMatlab: first configuration to extract real Matlab_ROOT_DIR") + set(RunCMake_TEST_OPTIONS "-Dmatlab_required=REQUIRED") + run_cmake(MatlabTest2) + + message(STATUS "RerunFindMatlab: flushing the variables") + execute_process(COMMAND + ${CMAKE_COMMAND} -L ${RunCMake_TEST_BINARY_DIR} + RESULT_VARIABLE _MatlabTest2_error + OUTPUT_VARIABLE _MatlabTest2_output) + if(NOT _MatlabTest2_error EQUAL 0) + message(FATAL_ERROR "RerunFindMatlab: cannot list the variables ...") + endif() + + string(REGEX MATCH "Matlab_ROOT_DIR.+=([^\r\n]+)" _matched ${_MatlabTest2_output}) + + set(Matlab_ROOT_DIR_correct "${CMAKE_MATCH_1}") + if(Matlab_ROOT_DIR_correct STREQUAL "") + message(FATAL_ERROR "RerunFindMatlab: cannot extract Matlab_ROOT_DIR") + endif() + message(STATUS "RerunFindMatlab: detected correct Matlab_ROOT_DIR=${Matlab_ROOT_DIR_correct}") + + message(STATUS "RerunFindMatlab: change configuration, incorrect Matlab_ROOT_DIR setting") + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunFindMatlab-build-second) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + set(RunCMake_TEST_OPTIONS "-DMatlab_ROOT_DIR=/" "-Dmatlab_required=") + run_cmake(MatlabTest2) + + message(STATUS "RerunFindMatlab: fixing configuration with correct Matlab_ROOT_DIR setting") + set(RunCMake_TEST_OPTIONS "-DMatlab_ROOT_DIR=${Matlab_ROOT_DIR_correct}") # required this time? + run_cmake(MatlabTest2) + + # no target on this test + run_cmake_command(MatlabTest2 ${CMAKE_COMMAND} --build .) + + unset(RunCMake_TEST_BINARY_DIR) + unset(RunCMake_TEST_NO_CLEAN) +endif() http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5752e558053261bdefc6294d9f13918e1233cd9e commit 5752e558053261bdefc6294d9f13918e1233cd9e Author: Raffi Enficiaud AuthorDate: Fri May 29 17:37:04 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 09:24:06 2015 -0400 FindMatlab: fix header visibility of the generated mex files diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index b4beec3..939f796 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -918,7 +918,7 @@ function(matlab_add_mex ) PROPERTIES CXX_VISIBILITY_PRESET "hidden" C_VISIBILITY_PRESET "hidden" - VISIBILITY_INLINES_HIDDEN "hidden" + VISIBILITY_INLINES_HIDDEN ON ) # get_target_property( http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=221a02635ef3097992ab7896b7da6f3274addfd0 commit 221a02635ef3097992ab7896b7da6f3274addfd0 Author: Raffi Enficiaud AuthorDate: Fri May 29 17:37:04 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 09:23:54 2015 -0400 FindMatlab: Drop incorrect usage option from test helper script There is no 'working_directory' option. diff --git a/Modules/MatlabTestsRedirect.cmake b/Modules/MatlabTestsRedirect.cmake index ebccbf6..77b7afe 100644 --- a/Modules/MatlabTestsRedirect.cmake +++ b/Modules/MatlabTestsRedirect.cmake @@ -17,7 +17,6 @@ # Usage: cmake # -Dtest_timeout=180 -# -Dworking_directory="." # -Doutput_directory= # -Dadditional_paths="" # -Dno_unittest_framework="" ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:23 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1360-g8247186 Message-ID: <20150601133723.5933AB03D0@public.kitware.com> 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, master has been updated via 8247186281ec8c7adf78429d4c8a29ae22eb517e (commit) via bf365792a11ce84426c8fc61738891c8e14fee43 (commit) via ee71b75133d3e515172b5fbe3dccf7d3906f5a19 (commit) from d617dc6af4db944f05b6cd2bd1e71276cb3c52eb (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=8247186281ec8c7adf78429d4c8a29ae22eb517e commit 8247186281ec8c7adf78429d4c8a29ae22eb517e Merge: d617dc6 bf36579 Author: Brad King AuthorDate: Mon Jun 1 09:37:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:37:22 2015 -0400 Merge topic 'update-kwsys' bf365792 Merge branch 'upstream-kwsys' into update-kwsys ee71b751 KWSys 2015-05-27 (61e0419f) ----------------------------------------------------------------------- Summary of changes: Source/kwsys/CMakeLists.txt | 3 +++ Source/kwsys/SystemTools.cxx | 44 ++++++++++++++++++++++++++------------ Source/kwsys/testSystemTools.cxx | 18 ++++++++++++++++ 3 files changed, 51 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:25 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:25 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1365-g1992aaa Message-ID: <20150601133728.7F05EB03D1@public.kitware.com> 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, master has been updated via 1992aaa96ef3e98e46b5ac548202d5502c401e82 (commit) via eba12a43615ee603f7e90a8e4e8c7669e7d63cf8 (commit) via 7e10f1691f61949430180882e3a2484d0859b9e2 (commit) via 0d37dcd33534be17ac0ae13cb59b18743dbdb4f1 (commit) via 43c01e07504e2ab61e7a30b428c1c9601791f948 (commit) from 8247186281ec8c7adf78429d4c8a29ae22eb517e (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=1992aaa96ef3e98e46b5ac548202d5502c401e82 commit 1992aaa96ef3e98e46b5ac548202d5502c401e82 Merge: 8247186 eba12a4 Author: Brad King AuthorDate: Mon Jun 1 09:37:24 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:37:24 2015 -0400 Merge topic 'file-log-less-data' eba12a43 cmFileCommand: Do not log raw protocol data from curl (#15589) 7e10f169 cmFileCommand: Clarify logic for populating LOG variable 0d37dcd3 cmFileCommand: Rename variable verboseLog => logVar 43c01e07 cmFileCommand: Remove leftover no-op debugging logic ----------------------------------------------------------------------- Summary of changes: Source/cmFileCommand.cxx | 51 ++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 20 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:30 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:30 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1367-gf663e9d Message-ID: <20150601133730.6B50DB03D7@public.kitware.com> 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, master has been updated via f663e9d0a07ca5a86f04873060049ac6859eba1a (commit) via a9b1838f97af5fbc377a4cceb2bb503b57ce5eb4 (commit) from 1992aaa96ef3e98e46b5ac548202d5502c401e82 (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=f663e9d0a07ca5a86f04873060049ac6859eba1a commit f663e9d0a07ca5a86f04873060049ac6859eba1a Merge: 1992aaa a9b1838 Author: Brad King AuthorDate: Mon Jun 1 09:37:29 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:37:29 2015 -0400 Merge topic 'doc-cmake-compile-features-typo' a9b1838f Help: Fix typo in cmake-compile-features(7) manual (#15594) ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-compile-features.7.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:32 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1369-g40bad51 Message-ID: <20150601133732.33EADB03DB@public.kitware.com> 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, master has been updated via 40bad5149054c7e9efdc9fdd645e5ce024225b4f (commit) via 9504d7a99bdb1a1c4b50ce8dc6ceced89f1fdb48 (commit) from f663e9d0a07ca5a86f04873060049ac6859eba1a (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=40bad5149054c7e9efdc9fdd645e5ce024225b4f commit 40bad5149054c7e9efdc9fdd645e5ce024225b4f Merge: f663e9d 9504d7a Author: Brad King AuthorDate: Mon Jun 1 09:37:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:37:31 2015 -0400 Merge topic 'doc-add_dependencies-no-install' 9504d7a9 Help: Explicitly mention lack of 'install' support in add_dependencies ----------------------------------------------------------------------- Summary of changes: Help/command/add_dependencies.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:34 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1373-g02c4aa1 Message-ID: <20150601133734.29F64B03D9@public.kitware.com> 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, master has been updated via 02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f (commit) via 8444809c47b0c2d6b9b2b57bd62d9a51fc5fa498 (commit) via 5752e558053261bdefc6294d9f13918e1233cd9e (commit) via 221a02635ef3097992ab7896b7da6f3274addfd0 (commit) from 40bad5149054c7e9efdc9fdd645e5ce024225b4f (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=02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f commit 02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f Merge: 40bad51 8444809 Author: Brad King AuthorDate: Mon Jun 1 09:37:32 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:37:32 2015 -0400 Merge topic 'FindMatlab-fix-visibility-and-reconfiguration' 8444809c FindMatlab: fix reconfiguration of Matlab_ROOT_DIR 5752e558 FindMatlab: fix header visibility of the generated mex files 221a0263 FindMatlab: Drop incorrect usage option from test helper script ----------------------------------------------------------------------- Summary of changes: Modules/FindMatlab.cmake | 7 +-- Modules/MatlabTestsRedirect.cmake | 1 - .../MatlabTest2-result.txt} | 0 Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt | 1 + Tests/RunCMake/FindMatlab/MatlabTest2.cmake | 9 ++++ Tests/RunCMake/FindMatlab/RunCMakeTest.cmake | 48 ++++++++++++++++++++ 6 files changed, 62 insertions(+), 4 deletions(-) copy Tests/RunCMake/{CMP0022/CMP0022-WARN-empty-old-result.txt => FindMatlab/MatlabTest2-result.txt} (100%) create mode 100644 Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt create mode 100644 Tests/RunCMake/FindMatlab/MatlabTest2.cmake hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:36 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:36 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1375-g836c4e9 Message-ID: <20150601133736.1E44EB03D7@public.kitware.com> 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, master has been updated via 836c4e9314f5afbde132ae34ed5cbfd5e422f905 (commit) via d4c6531a945564d230200512c680ca8570b10a6c (commit) from 02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f (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=836c4e9314f5afbde132ae34ed5cbfd5e422f905 commit 836c4e9314f5afbde132ae34ed5cbfd5e422f905 Merge: 02c4aa1 d4c6531 Author: Brad King AuthorDate: Mon Jun 1 09:37:34 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:37:34 2015 -0400 Merge topic 'FindPkgConfig_fix_extra_path' d4c6531a FindPkgConfig: Fix extra paths for CMAKE_{FRAMEWORK,APPBUNDLE}_PATH vars ----------------------------------------------------------------------- Summary of changes: Modules/FindPkgConfig.cmake | 2 +- ...ONFIG_PATH.cmake => FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake} | 6 +++--- ...ONFIG_PATH.cmake => FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake} | 6 +++--- Tests/RunCMake/FindPkgConfig/RunCMakeTest.cmake | 5 +++++ 4 files changed, 12 insertions(+), 7 deletions(-) copy Tests/RunCMake/FindPkgConfig/{FindPkgConfig_PKGCONFIG_PATH.cmake => FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake} (87%) copy Tests/RunCMake/FindPkgConfig/{FindPkgConfig_PKGCONFIG_PATH.cmake => FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake} (87%) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:37:52 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:37:52 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3274-g60d6f66 Message-ID: <20150601133752.C4C65B03D5@public.kitware.com> 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 60d6f66fb2bdd8bded288a6f28549c2aa80a59c8 (commit) via 836c4e9314f5afbde132ae34ed5cbfd5e422f905 (commit) via 02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f (commit) via 40bad5149054c7e9efdc9fdd645e5ce024225b4f (commit) via f663e9d0a07ca5a86f04873060049ac6859eba1a (commit) via 1992aaa96ef3e98e46b5ac548202d5502c401e82 (commit) via 8247186281ec8c7adf78429d4c8a29ae22eb517e (commit) via d617dc6af4db944f05b6cd2bd1e71276cb3c52eb (commit) via ab756293bf128858565b6d7c528e15ecc002b23b (commit) via fc01247f31951c558a23af5e69b7eebe8ee73b28 (commit) from 4bfcad0d9156e20761fcb8ef630eee4885d34371 (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=60d6f66fb2bdd8bded288a6f28549c2aa80a59c8 commit 60d6f66fb2bdd8bded288a6f28549c2aa80a59c8 Merge: 4bfcad0 836c4e9 Author: Brad King AuthorDate: Mon Jun 1 09:37:43 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:37:43 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 09:40:49 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 09:40:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3277-g15074cd Message-ID: <20150601134049.CBF91AE75A@public.kitware.com> 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 15074cd72e26b94d69f8bb4cf450e1bf2d45dc35 (commit) via 6593ccfcbe91e8958525e730f1f4b1b869bbc195 (commit) via 32264d3930f4c38d08eadecbbf6ef6161a38a541 (commit) from 60d6f66fb2bdd8bded288a6f28549c2aa80a59c8 (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=15074cd72e26b94d69f8bb4cf450e1bf2d45dc35 commit 15074cd72e26b94d69f8bb4cf450e1bf2d45dc35 Merge: 60d6f66 6593ccf Author: Brad King AuthorDate: Mon Jun 1 09:40:49 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 09:40:49 2015 -0400 Merge topic 'test-release' into next 6593ccfc Merge branch 'release' into test-release 32264d39 CMake 3.2.3 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6593ccfcbe91e8958525e730f1f4b1b869bbc195 commit 6593ccfcbe91e8958525e730f1f4b1b869bbc195 Merge: 836c4e9 32264d3 Author: Brad King AuthorDate: Mon Jun 1 09:40:07 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:40:07 2015 -0400 Merge branch 'release' into test-release http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=32264d3930f4c38d08eadecbbf6ef6161a38a541 commit 32264d3930f4c38d08eadecbbf6ef6161a38a541 Author: Brad King AuthorDate: Mon Jun 1 09:39:26 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 09:39:26 2015 -0400 CMake 3.2.3 diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 27bebc8..34ceaf2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 2) -set(CMake_VERSION_PATCH 2) +set(CMake_VERSION_PATCH 3) #set(CMake_VERSION_RC 0) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 10:14:46 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 10:14:46 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3279-gce8abdf Message-ID: <20150601141446.E8E22AF642@public.kitware.com> 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 ce8abdf145ae5d8dd4ec232fa4b25fd21c5f3f4c (commit) via b3df1e9f709df1e06e8c25be295a40ecd551103e (commit) from 15074cd72e26b94d69f8bb4cf450e1bf2d45dc35 (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=ce8abdf145ae5d8dd4ec232fa4b25fd21c5f3f4c commit ce8abdf145ae5d8dd4ec232fa4b25fd21c5f3f4c Merge: 15074cd b3df1e9 Author: Brad King AuthorDate: Mon Jun 1 10:14:46 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 10:14:46 2015 -0400 Merge topic 'FindBoost-per-config-libraries' into next b3df1e9f FindBoost: Fix Boost_LIBRARY_DIR_{RELEASE,DEBUG} cache entry configuration http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b3df1e9f709df1e06e8c25be295a40ecd551103e commit b3df1e9f709df1e06e8c25be295a40ecd551103e Author: Brad King AuthorDate: Mon Jun 1 10:07:55 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 10:10:08 2015 -0400 FindBoost: Fix Boost_LIBRARY_DIR_{RELEASE,DEBUG} cache entry configuration These cache entries introduced by commit 892b854f (FindBoost: Search for debug and release libraries separately, 2015-01-26) should be marked as advanced just as Boost_LIBRARY_DIR was. Also their _LAST values should be tracked so changes can be detected reliably. Both of these are handled by code looking in _Boost_VARS_LIB for a list of relevant variables. Fix construction of this list that was broken by the above commit. Reported-by: Sylvain Joubert diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index 466090b..bf37e03 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -879,8 +879,10 @@ endif() # Begin finding boost libraries # ------------------------------------------------------------------------ +set(_Boost_VARS_LIB "") foreach(c DEBUG RELEASE) set(_Boost_VARS_LIB_${c} BOOST_LIBRARYDIR Boost_LIBRARY_DIR_${c}) + list(APPEND _Boost_VARS_LIB ${_Boost_VARS_LIB_${c}}) _Boost_CHANGE_DETECT(_Boost_CHANGE_LIBDIR_${c} ${_Boost_VARS_DIR} ${_Boost_VARS_LIB_${c}} Boost_INCLUDE_DIR) # Clear Boost_LIBRARY_DIR_${c} if it did not change but other input affecting the # location did. We will find a new one based on the new inputs. ----------------------------------------------------------------------- Summary of changes: Modules/FindBoost.cmake | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:01:32 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:01:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3286-g2b3579c Message-ID: <20150601150132.D37A9B02BA@public.kitware.com> 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 2b3579cacf628d83a3c715087b81c4fe22785fe7 (commit) via d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314 (commit) via 8bd9505976731a24d07ee7d52e130e3d6521d1ed (commit) via a68e9b7cae123d8388b5aa55d991df86aaf18d43 (commit) via cc3aee048c7bfee40cca43257e66140f158f032a (commit) via 6a2851a1449eea9c42d6482c242fb0ca0ba01b12 (commit) via b7ca6f90371e5f748148531f228c03dd1a13f5e4 (commit) from ce8abdf145ae5d8dd4ec232fa4b25fd21c5f3f4c (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=2b3579cacf628d83a3c715087b81c4fe22785fe7 commit 2b3579cacf628d83a3c715087b81c4fe22785fe7 Merge: ce8abdf d4fd30d Author: Brad King AuthorDate: Mon Jun 1 11:01:32 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 11:01:32 2015 -0400 Merge topic 'FindPostgreSQL-updates' into next d4fd30d8 FindPostgreSQL: Search some more common packaging locations 8bd95059 FindPostgreSQL: Add help text for PostgreSQL_LIBRARY cache entry a68e9b7c FindPostgreSQL: Document PostgreSQL_LIBRARY_DIRS result variable cc3aee04 FindPostgreSQL: Search for versions 9.2, 9.3, and 9.4 6a2851a1 FindPostgreSQL: Remove extra whitespace after command open parens b7ca6f90 FindPostgreSQL: Remove unused lines http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314 commit d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314 Author: Tamar Kranenburg AuthorDate: Sat May 30 15:17:47 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 11:01:00 2015 -0400 FindPostgreSQL: Search some more common packaging locations Use PATH_SUFFIXES to search more common packaging locations. On Windows, we can use suffixes to search in the standard Program Files locations without hard-coding the C:/ path. On Ubuntu/Debian, starting with PostgreSQL 9.3 the header file pg_type.h is moved to a separate package (from libpq-dev to postgresql-server-dev) and consequently the file pg_type.h is moved to a new location: /usr/include/postgresql//server/catalog/pg_type.h While at it, use separate PATH_SUFFIXES variables for library, type and include (this is merely an optimization). diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index e3541bc..3ce2c73 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -4,9 +4,6 @@ # # Find the PostgreSQL installation. # -# In Windows, we make the assumption that, if the PostgreSQL files are -# installed, the default directory will be C:\Program Files\PostgreSQL. -# # This module defines # # :: @@ -87,16 +84,24 @@ set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS} "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0") # Define additional search paths for root directories. -if ( WIN32 ) - foreach (suffix ${PostgreSQL_KNOWN_VERSIONS} ) - set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "C:/Program Files/PostgreSQL/${suffix}" ) - endforeach() -endif() set( PostgreSQL_ROOT_DIRECTORIES ENV PostgreSQL_ROOT ${PostgreSQL_ROOT} - ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} ) +foreach(suffix ${PostgreSQL_KNOWN_VERSIONS}) + if(WIN32) + list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES + "PostgreSQL/${suffix}/lib") + list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES + "PostgreSQL/${suffix}/include") + list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES + "PostgreSQL/${suffix}/include/server") + endif() + if(UNIX) + list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES + "postgresql/${suffix}/server") + endif() +endforeach() # # Look for an installation. @@ -110,6 +115,7 @@ find_path(PostgreSQL_INCLUDE_DIR pgsql postgresql include + ${PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES} # Help the user find it if we cannot. DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}" ) @@ -124,6 +130,7 @@ find_path(PostgreSQL_TYPE_INCLUDE_DIR pgsql/server postgresql/server include/server + ${PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES} # Help the user find it if we cannot. DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}" ) @@ -143,6 +150,7 @@ find_library(PostgreSQL_LIBRARY ${PostgreSQL_ROOT_DIRECTORIES} PATH_SUFFIXES lib + ${PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES} # Help the user find it if we cannot. DOC "The ${PostgreSQL_LIBRARY_DIR_MESSAGE}" ) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8bd9505976731a24d07ee7d52e130e3d6521d1ed commit 8bd9505976731a24d07ee7d52e130e3d6521d1ed Author: Tamar Kranenburg AuthorDate: Sat May 30 15:17:47 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 10:50:27 2015 -0400 FindPostgreSQL: Add help text for PostgreSQL_LIBRARY cache entry The PostgreSQL_LIBRARY_DIR_MESSAGE variable was set with the needed text but never referenced. diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index fba0ca0..e3541bc 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -143,6 +143,8 @@ find_library(PostgreSQL_LIBRARY ${PostgreSQL_ROOT_DIRECTORIES} PATH_SUFFIXES lib + # Help the user find it if we cannot. + DOC "The ${PostgreSQL_LIBRARY_DIR_MESSAGE}" ) get_filename_component(PostgreSQL_LIBRARY_DIR ${PostgreSQL_LIBRARY} PATH) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a68e9b7cae123d8388b5aa55d991df86aaf18d43 commit a68e9b7cae123d8388b5aa55d991df86aaf18d43 Author: Tamar Kranenburg AuthorDate: Sat May 30 15:17:47 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 10:47:59 2015 -0400 FindPostgreSQL: Document PostgreSQL_LIBRARY_DIRS result variable diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index b0af817..fba0ca0 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -13,6 +13,7 @@ # # PostgreSQL_LIBRARIES - the PostgreSQL libraries needed for linking # PostgreSQL_INCLUDE_DIRS - the directories of the PostgreSQL headers +# PostgreSQL_LIBRARY_DIRS - the link directories for PostgreSQL libraries # PostgreSQL_VERSION_STRING - the version of PostgreSQL found (since CMake 2.8.8) #============================================================================= http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cc3aee048c7bfee40cca43257e66140f158f032a commit cc3aee048c7bfee40cca43257e66140f158f032a Author: Tamar Kranenburg AuthorDate: Sat May 30 15:17:47 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 10:47:02 2015 -0400 FindPostgreSQL: Search for versions 9.2, 9.3, and 9.4 diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index a3ecebd..b0af817 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -39,7 +39,7 @@ # In Windows the default installation of PostgreSQL uses that as part of the path. # E.g C:\Program Files\PostgreSQL\8.4. # Currently, the following version numbers are known to this module: -# "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0" +# "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0" # # To use this variable just do something like this: # set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4") @@ -83,7 +83,7 @@ set(PostgreSQL_ROOT_DIR_MESSAGE "Set the PostgreSQL_ROOT system variable to wher set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS} - "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0") + "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0") # Define additional search paths for root directories. if ( WIN32 ) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6a2851a1449eea9c42d6482c242fb0ca0ba01b12 commit 6a2851a1449eea9c42d6482c242fb0ca0ba01b12 Author: Tamar Kranenburg AuthorDate: Sat May 30 15:17:47 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 10:46:12 2015 -0400 FindPostgreSQL: Remove extra whitespace after command open parens diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index 9e9f864..a3ecebd 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -133,10 +133,10 @@ set (PostgreSQL_LIBRARY_TO_FIND pq) set (PostgreSQL_LIB_PREFIX "") if ( WIN32 ) set (PostgreSQL_LIB_PREFIX ${PostgreSQL_LIB_PREFIX} "lib") - set ( PostgreSQL_LIBRARY_TO_FIND ${PostgreSQL_LIB_PREFIX}${PostgreSQL_LIBRARY_TO_FIND}) + set (PostgreSQL_LIBRARY_TO_FIND ${PostgreSQL_LIB_PREFIX}${PostgreSQL_LIBRARY_TO_FIND}) endif() -find_library( PostgreSQL_LIBRARY +find_library(PostgreSQL_LIBRARY NAMES ${PostgreSQL_LIBRARY_TO_FIND} PATHS ${PostgreSQL_ROOT_DIRECTORIES} @@ -169,7 +169,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) find_package_handle_standard_args(PostgreSQL REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR VERSION_VAR PostgreSQL_VERSION_STRING) -set( PostgreSQL_FOUND ${POSTGRESQL_FOUND}) +set(PostgreSQL_FOUND ${POSTGRESQL_FOUND}) # Now try to get the include and library path. if(PostgreSQL_FOUND) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b7ca6f90371e5f748148531f228c03dd1a13f5e4 commit b7ca6f90371e5f748148531f228c03dd1a13f5e4 Author: Tamar Kranenburg AuthorDate: Sat May 30 15:17:47 2015 +0200 Commit: Brad King CommitDate: Mon Jun 1 10:44:25 2015 -0400 FindPostgreSQL: Remove unused lines diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake index 97666c8..9e9f864 100644 --- a/Modules/FindPostgreSQL.cmake +++ b/Modules/FindPostgreSQL.cmake @@ -173,14 +173,9 @@ set( PostgreSQL_FOUND ${POSTGRESQL_FOUND}) # Now try to get the include and library path. if(PostgreSQL_FOUND) - set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} ${PostgreSQL_TYPE_INCLUDE_DIR} ) set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} ) set(PostgreSQL_LIBRARIES ${PostgreSQL_LIBRARY_TO_FIND}) - - #message("Final PostgreSQL include dir: ${PostgreSQL_INCLUDE_DIRS}") - #message("Final PostgreSQL library dir: ${PostgreSQL_LIBRARY_DIRS}") - #message("Final PostgreSQL libraries: ${PostgreSQL_LIBRARIES}") endif() mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR PostgreSQL_LIBRARY ) ----------------------------------------------------------------------- Summary of changes: Modules/FindPostgreSQL.cmake | 44 ++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 19 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:09:47 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:09:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1378-g05845ac Message-ID: <20150601150947.1DD29187FC@public.kitware.com> 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, master has been updated via 05845ac10ff4ce50449e94f38c97d6e57f433b64 (commit) via 1d2ae2b307af884fde8124136a57d961d88dbdf7 (commit) via bfa57c5f80278abc044b7342e81e5aaad82bffab (commit) from 836c4e9314f5afbde132ae34ed5cbfd5e422f905 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/cmMakefileTargetGenerator.cxx | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:09:47 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:09:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3290-gd8ada56 Message-ID: <20150601150947.40FE46F6BD@public.kitware.com> 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 d8ada560d08b0e4591701e31e295c38f639042a6 (commit) via 05845ac10ff4ce50449e94f38c97d6e57f433b64 (commit) via 1d2ae2b307af884fde8124136a57d961d88dbdf7 (commit) via bfa57c5f80278abc044b7342e81e5aaad82bffab (commit) from 2b3579cacf628d83a3c715087b81c4fe22785fe7 (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=d8ada560d08b0e4591701e31e295c38f639042a6 commit d8ada560d08b0e4591701e31e295c38f639042a6 Merge: 2b3579c 05845ac Author: Brad King AuthorDate: Mon Jun 1 11:09:35 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 11:09:35 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/cmMakefileTargetGenerator.cxx | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:09:47 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:09:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.2.2-10-g1d2ae2b Message-ID: <20150601150947.57839AB6D2@public.kitware.com> 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, release has been updated via 1d2ae2b307af884fde8124136a57d961d88dbdf7 (commit) via bfa57c5f80278abc044b7342e81e5aaad82bffab (commit) from cf86696ae8f0499f74656a8845df510e07cefbc2 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/cmMakefileTargetGenerator.cxx | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:34:11 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:34:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3292-g952349d Message-ID: <20150601153411.76CA3B02F4@public.kitware.com> 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 952349dd2c8da06810871801e7f03d0e85eb548e (commit) via 7dd4a12c301b95512aec62e5e533a9c63aedfdc7 (commit) from d8ada560d08b0e4591701e31e295c38f639042a6 (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=952349dd2c8da06810871801e7f03d0e85eb548e commit 952349dd2c8da06810871801e7f03d0e85eb548e Merge: d8ada56 7dd4a12 Author: Brad King AuthorDate: Mon Jun 1 11:34:10 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 11:34:10 2015 -0400 Merge topic 'mingw32-make-backslash-workaround' into next 7dd4a12c Revert "Makefile: Fix compilation after parent commit was backported" http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7dd4a12c301b95512aec62e5e533a9c63aedfdc7 commit 7dd4a12c301b95512aec62e5e533a9c63aedfdc7 Author: Brad King AuthorDate: Mon Jun 1 11:33:24 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 11:33:24 2015 -0400 Revert "Makefile: Fix compilation after parent commit was backported" This reverts commit bfa57c5f80278abc044b7342e81e5aaad82bffab. This change should not be part of 'master', only in 'release' for CMake 3.2. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index e983546..b7e4e37 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -23,6 +23,7 @@ #include "cmComputeLinkInformation.h" #include "cmCustomCommandGenerator.h" #include "cmGeneratorExpression.h" +#include "cmAlgorithms.h" #include "cmMakefileExecutableTargetGenerator.h" #include "cmMakefileLibraryTargetGenerator.h" ----------------------------------------------------------------------- Summary of changes: Source/cmMakefileTargetGenerator.cxx | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:34:15 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:34:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1380-gfe168ea Message-ID: <20150601153415.406DAB0310@public.kitware.com> 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, master has been updated via fe168ea4d2a63607ac4ae1b1dc0a13000ce99d84 (commit) via 7dd4a12c301b95512aec62e5e533a9c63aedfdc7 (commit) from 05845ac10ff4ce50449e94f38c97d6e57f433b64 (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=fe168ea4d2a63607ac4ae1b1dc0a13000ce99d84 commit fe168ea4d2a63607ac4ae1b1dc0a13000ce99d84 Merge: 05845ac 7dd4a12 Author: Brad King AuthorDate: Mon Jun 1 11:34:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 11:34:14 2015 -0400 Merge topic 'mingw32-make-backslash-workaround' 7dd4a12c Revert "Makefile: Fix compilation after parent commit was backported" ----------------------------------------------------------------------- Summary of changes: Source/cmMakefileTargetGenerator.cxx | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:34:36 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:34:36 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3294-gfbd1d93 Message-ID: <20150601153436.0C7DCB0311@public.kitware.com> 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 fbd1d93aa31fffe4575b2cf7f9c5a5a5fde328b5 (commit) via fe168ea4d2a63607ac4ae1b1dc0a13000ce99d84 (commit) from 952349dd2c8da06810871801e7f03d0e85eb548e (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=fbd1d93aa31fffe4575b2cf7f9c5a5a5fde328b5 commit fbd1d93aa31fffe4575b2cf7f9c5a5a5fde328b5 Merge: 952349d fe168ea Author: Brad King AuthorDate: Mon Jun 1 11:34:29 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 11:34:29 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 11:37:12 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 11:37:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3297-gfb0cbaf Message-ID: <20150601153712.53DF1B0350@public.kitware.com> 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 fb0cbafbcb0637050489ac52dc3fa6dc450c7fac (commit) via c532ec17a678b16888d375ded86c88bd3ed5fd17 (commit) via b3de2a8e6451c9138948c23a974740823ade8263 (commit) from fbd1d93aa31fffe4575b2cf7f9c5a5a5fde328b5 (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=fb0cbafbcb0637050489ac52dc3fa6dc450c7fac commit fb0cbafbcb0637050489ac52dc3fa6dc450c7fac Merge: fbd1d93 c532ec1 Author: Brad King AuthorDate: Mon Jun 1 11:37:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 1 11:37:11 2015 -0400 Merge topic 'test-release' into next c532ec17 Merge branch 'release' into test-release b3de2a8e CMake 3.2.3 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c532ec17a678b16888d375ded86c88bd3ed5fd17 commit c532ec17a678b16888d375ded86c88bd3ed5fd17 Merge: fe168ea b3de2a8 Author: Brad King AuthorDate: Mon Jun 1 11:36:44 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 11:36:44 2015 -0400 Merge branch 'release' into test-release http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b3de2a8e6451c9138948c23a974740823ade8263 commit b3de2a8e6451c9138948c23a974740823ade8263 Author: Brad King AuthorDate: Mon Jun 1 09:39:26 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 11:36:29 2015 -0400 CMake 3.2.3 diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 27bebc8..34ceaf2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 2) -set(CMake_VERSION_PATCH 2) +set(CMake_VERSION_PATCH 3) #set(CMake_VERSION_RC 0) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 14:27:20 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 14:27:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.2-1382-g8b8baf5 Message-ID: <20150601182720.9058EAFEBA@public.kitware.com> 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, master has been updated via 8b8baf5f95790866277ede63b8107cbf58974034 (commit) via b3de2a8e6451c9138948c23a974740823ade8263 (commit) from fe168ea4d2a63607ac4ae1b1dc0a13000ce99d84 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 14:27:20 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 14:27:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.2-3299-g316232d Message-ID: <20150601182720.AF8D5AFEBB@public.kitware.com> 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 316232d5f5957182ab9baed2c05d91f1e6c59a4a (commit) via 8b8baf5f95790866277ede63b8107cbf58974034 (commit) from fb0cbafbcb0637050489ac52dc3fa6dc450c7fac (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=316232d5f5957182ab9baed2c05d91f1e6c59a4a commit 316232d5f5957182ab9baed2c05d91f1e6c59a4a Merge: fb0cbaf 8b8baf5 Author: Brad King AuthorDate: Mon Jun 1 14:26:17 2015 -0400 Commit: Brad King CommitDate: Mon Jun 1 14:26:17 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 1 14:27:20 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 1 Jun 2015 14:27:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.2.2-11-gb3de2a8 Message-ID: <20150601182720.C3E78AFEBC@public.kitware.com> 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, release has been updated via b3de2a8e6451c9138948c23a974740823ade8263 (commit) from 1d2ae2b307af884fde8124136a57d961d88dbdf7 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From robert.maynard at kitware.com Mon Jun 1 17:12:58 2015 From: robert.maynard at kitware.com (Robert Maynard) Date: Mon, 1 Jun 2015 17:12:58 -0400 (EDT) Subject: [Cmake-commits] CMake annotated tag, v3.2.3, created. v3.2.3 Message-ID: <20150601211258.86081AE771@public.kitware.com> 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 annotated tag, v3.2.3 has been created at 0a569d18496d4d384971d0c42be4300949896dc2 (tag) tagging b3de2a8e6451c9138948c23a974740823ade8263 (commit) replaces v3.2.2 tagged by Brad King on Mon Jun 1 13:11:11 2015 -0400 - Log ----------------------------------------------------------------- CMake 3.2.3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVbJIvAAoJEOyP7zp7+07aK2QQAIBHVo+Nbn1GhUTPczDRP1BI 9fYQwGx/truU7JVWKiK3244u7QdqMy18CnVM3uDIi1gNkWLF8XOEIs6QudRQv3Dn USSptpMiOTG7BwOaoinYGKDZzLQ3kJsvQseS42ghIaiCpcu3JP6p37MdgeOver4M ZgT+rKPXhLnzEnQn4HIyqoQMk/R38tIt3YzguP/JJnkdO3mXPNKRR2XF1q3uskEC AsX1uxxmYb0eqHMXdd4Vy3z65bf7dki9ziw3TRh3Uz3M5zmAekaF+aSWqfLB2V2i Sex8DFAGkZ3RPtjfrfcsVU7ETL1b4S2XC2zxsRE3+K+RFnWp5PdQzemnCnqv1KrG w+GNkPFZRN/PFr2NBnzAVG6c4Z6n9Xm7AxvaxBvuv/S/Mtw/eF7Ej3zWXCZS/B+8 o1WTEa5CKr+ZLvO4f39qjKlAWwYo4joCKd1dIvgLC0uEQ7t1mBNOj2U2k/jUC1Iq YpxWrfLRiaVspBEu7OHnMiifKjnSrPkYEIidjGQ+2X77LKwGNR5xHjtbycIjnbng 2kyygJVtwf5rk8bYQ4gs6e+U7HEnsfmr46AJBs/3hqMWBPEfbQNRwkaIx31GE84E yUl17rm4ju/2i00PVD5DIkpEArIzn677h/GxwYmrYs6pZLHImMWAcyLZLE90+maq eE9oaGEhIwng7XP8DJg3 =3fEX -----END PGP SIGNATURE----- Brad King (10): Makefile: Workaround mingw32-make trailing backslash trouble (#15546) Merge branch 'mingw32-make-backslash-workaround' into release InstallRequiredSystemLibraries: Update for VS 2015 (#15552) Merge branch 'InstallRequiredSystemLibraries-vs2015' into release Fix assertion failure on unmatched foreach in function (#15572) Merge branch 'fix-function-missing-endforeach' into release Merge branch 'ctest-update-gmake-error-match' into release Makefile: Fix compilation after parent commit was backported Merge branch 'mingw32-make-backslash-workaround' into release CMake 3.2.3 Zack Galbreath (1): ctest_build: Fix regression in GNU make error message matching ----------------------------------------------------------------------- hooks/post-receive -- CMake From kwrobot at kitware.com Tue Jun 2 00:01:10 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 2 Jun 2015 00:01:10 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1372-gd9f630a Message-ID: <20150602040110.9F705B023B@public.kitware.com> 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, master has been updated via d9f630a171044789029d5496b4fd3ff6023647ec (commit) from 8b8baf5f95790866277ede63b8107cbf58974034 (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=d9f630a171044789029d5496b4fd3ff6023647ec commit d9f630a171044789029d5496b4fd3ff6023647ec Author: Kitware Robot AuthorDate: Tue Jun 2 00:01:09 2015 -0400 Commit: Kitware Robot CommitDate: Tue Jun 2 00:01:09 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 26c9e44..4db774f 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 2) -set(CMake_VERSION_PATCH 20150601) +set(CMake_VERSION_PATCH 20150602) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 09:03:54 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 09:03:54 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1374-ge14e1f2 Message-ID: <20150602130354.03AD0B03E6@public.kitware.com> 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, master has been updated via e14e1f273adaba11d9eb2fc019fb36fc215d99dc (commit) via b3df1e9f709df1e06e8c25be295a40ecd551103e (commit) from d9f630a171044789029d5496b4fd3ff6023647ec (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=e14e1f273adaba11d9eb2fc019fb36fc215d99dc commit e14e1f273adaba11d9eb2fc019fb36fc215d99dc Merge: d9f630a b3df1e9 Author: Brad King AuthorDate: Tue Jun 2 09:03:52 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 09:03:52 2015 -0400 Merge topic 'FindBoost-per-config-libraries' b3df1e9f FindBoost: Fix Boost_LIBRARY_DIR_{RELEASE,DEBUG} cache entry configuration ----------------------------------------------------------------------- Summary of changes: Modules/FindBoost.cmake | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 09:03:56 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 09:03:56 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1381-g3bcd2f5 Message-ID: <20150602130356.0F656B03A7@public.kitware.com> 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, master has been updated via 3bcd2f538f7c20fe25532bf41c8b78c511c03be5 (commit) via d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314 (commit) via 8bd9505976731a24d07ee7d52e130e3d6521d1ed (commit) via a68e9b7cae123d8388b5aa55d991df86aaf18d43 (commit) via cc3aee048c7bfee40cca43257e66140f158f032a (commit) via 6a2851a1449eea9c42d6482c242fb0ca0ba01b12 (commit) via b7ca6f90371e5f748148531f228c03dd1a13f5e4 (commit) from e14e1f273adaba11d9eb2fc019fb36fc215d99dc (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=3bcd2f538f7c20fe25532bf41c8b78c511c03be5 commit 3bcd2f538f7c20fe25532bf41c8b78c511c03be5 Merge: e14e1f2 d4fd30d Author: Brad King AuthorDate: Tue Jun 2 09:03:54 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 09:03:54 2015 -0400 Merge topic 'FindPostgreSQL-updates' d4fd30d8 FindPostgreSQL: Search some more common packaging locations 8bd95059 FindPostgreSQL: Add help text for PostgreSQL_LIBRARY cache entry a68e9b7c FindPostgreSQL: Document PostgreSQL_LIBRARY_DIRS result variable cc3aee04 FindPostgreSQL: Search for versions 9.2, 9.3, and 9.4 6a2851a1 FindPostgreSQL: Remove extra whitespace after command open parens b7ca6f90 FindPostgreSQL: Remove unused lines ----------------------------------------------------------------------- Summary of changes: Modules/FindPostgreSQL.cmake | 44 ++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 19 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 09:04:15 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 09:04:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-3292-gde58af4 Message-ID: <20150602130415.2126BB03EB@public.kitware.com> 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 de58af455ae2a6c078502470b83c043d2376fb8a (commit) via 3bcd2f538f7c20fe25532bf41c8b78c511c03be5 (commit) via e14e1f273adaba11d9eb2fc019fb36fc215d99dc (commit) via d9f630a171044789029d5496b4fd3ff6023647ec (commit) from 316232d5f5957182ab9baed2c05d91f1e6c59a4a (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=de58af455ae2a6c078502470b83c043d2376fb8a commit de58af455ae2a6c078502470b83c043d2376fb8a Merge: 316232d 3bcd2f5 Author: Brad King AuthorDate: Tue Jun 2 09:04:05 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 09:04:05 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 11:09:12 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 11:09:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-3295-g26069d5 Message-ID: <20150602150912.ECB8EC01@public.kitware.com> 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 26069d516883b7487f0bc43a495d4420bd061ce3 (commit) via c952d790de477cc6bde99b9c1415f6f6f7bca16d (commit) via 8ce87ac6ef95c244978756f78154f239705aa986 (commit) from de58af455ae2a6c078502470b83c043d2376fb8a (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=26069d516883b7487f0bc43a495d4420bd061ce3 commit 26069d516883b7487f0bc43a495d4420bd061ce3 Merge: de58af4 c952d79 Author: Brad King AuthorDate: Tue Jun 2 11:09:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 11:09:11 2015 -0400 Merge topic 'doc-3.3-relnotes' into next c952d790 Help: Organize and revise 3.3 release notes 8ce87ac6 Help: Consolidate 3.3 release notes http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c952d790de477cc6bde99b9c1415f6f6f7bca16d commit c952d790de477cc6bde99b9c1415f6f6f7bca16d Author: Brad King AuthorDate: Tue Jun 2 09:30:57 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 11:08:33 2015 -0400 Help: Organize and revise 3.3 release notes Add section headers similar to the 3.2 release notes and move each individual bullet into an appropriate section. Revise and consolidate some bullets covering related areas. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index 7114008..15127cc 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -7,14 +7,20 @@ CMake 3.3 Release Notes Changes made since CMake 3.2 include the following. -* The :module:`CheckFortranCompilerFlag` module was introduced - to check ``Fortran`` compiler flags, much like the - :module:`CheckCCompilerFlag` module already does for ``C``. +New Features +============ -* The :command:`add_dependencies` command learned to allow dependencies - to be added to :ref:`interface libraries `. - Dependencies added to an interface library are followed transitively - in its place since the target itself does not build. +Generators +---------- + +* The :ref:`Makefile Generators` now add ``.DELETE_ON_ERROR`` to the + makefiles that contain the actual build rules for files on disk. + This tells GNU make to remove rule outputs when their recipe + modifies an output but fails. + +* The :ref:`Visual Studio Generators` learned to support ``.xaml`` + source files and automatically associate them with corresponding + ``.h`` and ``.cpp`` sources. * A new experimental :generator:`Green Hills MULTI` generator was added on Windows. `Green Hills MULTI`_ is an IDE for embedded @@ -22,65 +28,76 @@ Changes made since CMake 3.2 include the following. .. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html -* On OS X the :manual:`cmake-gui(1)` no longer has the - ``Install For Command Line Use`` menu item. Instead there - is a ``How to Install For Command Line Use`` menu item - that shows an informational dialog box explaining how to - make the command line tools available. For example:: +Commands +-------- - /Applications/CMake.app/Contents/bin/cmake-gui --install +* The :command:`add_dependencies` command learned to allow dependencies + to be added to :ref:`interface libraries `. + Dependencies added to an interface library are followed transitively + in its place since the target itself does not build. -* The version of some Fortran compilers is now detected and stored in the - :variable:`CMAKE_Fortran_COMPILER_VERSION _COMPILER_VERSION>` - variable. +* The :command:`execute_process` command learned to support specifying + the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``. -* The :module:`CPackDeb` module learned a new - :variable:`CPACK_DEBIAN__PACKAGE_SHLIBDEPS` - variable to specify per-component use of ``dpkg-shlibdeps``. +* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands + learned a new ``LIST_DIRECTORIES `` option to specify whether + the glob result should include directories. -* The :module:`CPackDeb` module learned a new - :variable:`CPACK_DEBIAN__PACKAGE_DEPENDS` - option to specify per-component dependencies. +* The :command:`find_library`, :command:`find_path`, and :command:`find_file` + commands now search in installation prefixes derived from the ``PATH`` + environment variable. -* The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW` - module learned to support Qt Framework Installer 2.0 tools. +* The :command:`if` command learned a new ``IN_LIST`` operator that + evaluates to true if a given element is contained in a named list. -* The :module:`CPackRPM` module learned to package symbolic links - more cleanly and now supports directory symlinks with recent - ``rpmbuild`` versions. +* The :command:`install(EXPORT)` and :command:`export()` commands + learned to export targets that populate the :prop_tgt:`INTERFACE_SOURCES` + target property. -* The :module:`CPackRPM` module learned a new - :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify - directories containing man pages for the brp-compress RPM macro. +* The :command:`install(TARGETS)` command learned to support + generator expressions in the ``DESTINATION`` value. -* The :command:`ctest_build` and :command:`build_command` commands - no longer tell ``make`` tools to ignore errors with the ``-i`` option. - Previously this was done for :ref:`Makefile Generators` but not others. - See policy :policy:`CMP0061`. +Variables +--------- -* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail `` - option to help find sporadic test failures. +* The version of some Fortran compilers is now detected and stored in the + :variable:`CMAKE_Fortran_COMPILER_VERSION _COMPILER_VERSION>` + variable. -* Using the output of :command:`export()` with the :command:`install(FILES)` - command is no longer allowed. See policy :policy:`CMP0062` for details. +* The :ref:`Visual Studio Generators` learned a new + :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option + to put the ``INSTALL`` target in the default build of a + solution (``.sln``) file. + +Properties +---------- * A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced to allow target platform binaries to run on the host during cross compiling. -* The :command:`execute_process` command learned to support specifying - the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``. - -* It is now possible to export targets which populate the - :prop_tgt:`INTERFACE_SOURCES` target property using the - :command:`install(EXPORT)` and :command:`export()` commands. +* A :prop_tgt:`_INCLUDE_WHAT_YOU_USE` target property and supporting + :variable:`CMAKE__INCLUDE_WHAT_YOU_USE` variable were introduced + to tell the :ref:`Makefile Generators` and the :generator:`Ninja` generator + to run ``include-what-you-use`` along with the compiler for ``C`` and + ``CXX`` languages. * The :prop_tgt:`_VISIBILITY_PRESET` and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now affect compilation in sources of all target types. See policy :policy:`CMP0063`. +* The :prop_tgt:`XCODE_ATTRIBUTE_` target property learned + to support generator expressions. + +Modules +------- + +* The :module:`CheckFortranCompilerFlag` module was introduced + to check ``Fortran`` compiler flags, much like the + :module:`CheckCCompilerFlag` module already does for ``C``. + * The :module:`ExternalData` module learned a new :variable:`ExternalData_NO_SYMLINKS` option to disable use of symbolic links to populate the real data files and use copies @@ -104,17 +121,9 @@ Changes made since CMake 3.2 include the following. :manual:`generator expressions ` when using ``LOG_*`` options and in CMake initial cache options. -* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands - learned a new ``LIST_DIRECTORIES `` option to specify whether - the glob result should include directories. - * The :module:`FindBoost` module now tracks the directories containing libraries separately for RELEASE and DEBUG configurations. -* The :command:`find_library`, :command:`find_path`, and :command:`find_file` - commands now search in installation prefixes derived from the ``PATH`` - environment variable. - * The :module:`FindCUDA` module now defaults to using the static CUDA runtime library if it is available. A new ``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control @@ -125,98 +134,101 @@ Changes made since CMake 3.2 include the following. multiplatform way. The module now offers APIs to create mex extensions, documentation, and unit tests. -* The :command:`find_package` command no longer considers project - build trees recently configured in a :manual:`cmake-gui(1)`. - This was previously done only on Windows and is now never done. - The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given - and effectively always on. - Projects may populate the :ref:`User Package Registry` to aid - users building multiple dependent projects one after another. - * The :module:`FindPackageHandleStandardArgs` module ``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now - always populates the both ``_FOUND`` + always populates both the ``_FOUND`` and ``_FOUND`` variables (the latter for backwards compatibility). The ``FOUND_VAR`` option is now ignored except to enforce its allowed values. -* The :module:`CTestCoverageCollectGCOV` module learned to support - the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the - :command:`ctest_coverage` command. - -* Add a new IN_LIST operator to if() that evaluates true - if a given element is contained in a named list. - -* The :command:`install(TARGETS)` command learned to support - generator expressions in the ``DESTINATION`` value. - * The :module:`InstallRequiredSystemLibraries` module learned a new ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the installation component. -* Linking to library files by a full path in an implicit linker search - directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to - search for the library (e.g. ``-lfoo``). See policy :policy:`CMP0060`. +Generator Expressions +--------------------- -* The Makefile generators now add ``.DELETE_ON_ERROR`` to the - makefiles that contain the actual build rules for files on disk. - This tells GNU make to remove rule outputs when their recipe - modifies an output but fails. +* A new ``COMPILE_LANGUAGE`` generator expression was introduced to + allow specification of compile options for target files based on the + :prop_sf:`LANGUAGE` of each source file. Due to limitations of the + underlying native build tools, this feature has varying support across + generators. See the :manual:`cmake-generator-expressions(7)` manual + for details. -* With Makefile generators, the build-time progress output has been improved. - It no longer mixes progress and build rule messages during parallel builds. - The link rule messages now have progress and are displayed as bold green - instead of bold red (since red is often associated with an error message). +CTest +----- -* The :manual:`Compile Features ` functionality - is now aware of features supported by GNU compilers on Windows, versions - 4.4 through 5.0. +* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail `` + option to help find sporadic test failures. -* When building with GNU tools on Windows (MinGW tools), the - :command:`find_library` command will no longer consider - ``.dll`` files to be linkable libraries. All dynamic link - libraries are expected to provide separate ``.dll.a`` or - ``.lib`` import libraries. +* The :module:`CTestCoverageCollectGCOV` module learned to support + the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the + :command:`ctest_coverage` command. -* The :generator:`Ninja` generator now requires that calls to the - :command:`add_custom_command` and :command:`add_custom_target` - commands use the ``BYPRODUCTS`` option to explicitly specify any - files generated by the custom commands that are not listed as - outputs (perhaps because their timestamps are allowed to be older - than the inputs). See policy :policy:`CMP0058`. +CPack +----- -* The :command:`add_definitions()` command no longer causes a - :prop_dir:`DEFINITIONS` directory property to be populated. See policy - :policy:`CMP0059`. +* The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW` + module learned to support Qt Framework Installer 2.0 tools. + +* The :module:`CPackDeb` module learned a new + :variable:`CPACK_DEBIAN__PACKAGE_SHLIBDEPS` + variable to specify per-component use of ``dpkg-shlibdeps``. + +* The :module:`CPackDeb` module learned a new + :variable:`CPACK_DEBIAN__PACKAGE_DEPENDS` + option to specify per-component dependencies. + +* The :module:`CPackRPM` module learned to package symbolic links + more cleanly and now supports directory symlinks with recent + ``rpmbuild`` versions. + +* The :module:`CPackRPM` module learned a new + :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify + directories containing man pages for the brp-compress RPM macro. * The :module:`CPackRPM` module learned a new :variable:`CPACK_RPM__PACKAGE_ARCHITECTURE` variable to specify a component-specific package architecture. -* The :ref:`Makefile Generators` and the :generator:`Ninja` generator - learned to optionally run ``include-what-you-use`` along with the - compiler for ``C`` and ``CXX`` languages. See the - :variable:`CMAKE__INCLUDE_WHAT_YOU_USE` variable and - :prop_tgt:`_INCLUDE_WHAT_YOU_USE` target property for details. +* The CPack WIX generator learned the new + :prop_inst:`CPACK_START_MENU_SHORTCUTS`, + :prop_inst:`CPACK_DESKTOP_SHORTCUTS` and + :prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can + be used to install shorcuts in the Start Menu, on the Desktop and + in the Startup Folder respectively. -* A new ``COMPILE_LANGUAGE`` generator expression was introduced to - allow specification of compile options for target files based on the - :prop_sf:`LANGUAGE` of each source file. Due to limitations of the - underlying native build tools, this feature has varying support across - generators. See the :manual:`cmake-generator-expressions(7)` manual - for details. +Other +----- + +* The :manual:`Compile Features ` functionality + is now aware of features supported by GNU compilers on Windows, versions + 4.4 through 5.0. * The :manual:`cmake(1)` ``-E tar`` command learned a new ``--format`` option to specify the archive format to be written. -* The :module:`UseSWIG` module ``SWIG_ADD_MODULE`` macro no - longer attaches the swig invocation custom command to the - ``.i`` source file in IDE projects. This is because only - one custom command can be safely attached to a given source - file, and adding multiple modules with the same ``.i`` file - for different languages requires more than one such command. +* On OS X, CMake learned to create XCTest bundles to test Frameworks + and App Bundles within Xcode. The :module:`FindXCTest` module + provides convenience functions to handle :prop_tgt:`XCTEST` bundles. + +Deprecated and Removed Features +=============================== + +* On OS X the :manual:`cmake-gui(1)` no longer has the + ``Install For Command Line Use`` menu item. Instead there + is a ``How to Install For Command Line Use`` menu item + that shows an informational dialog box explaining how to + make the command line tools available. For example:: + + /Applications/CMake.app/Contents/bin/cmake-gui --install + +* The :command:`ctest_build` and :command:`build_command` commands + no longer tell ``make`` tools to ignore errors with the ``-i`` option. + Previously this was done for :ref:`Makefile Generators` but not others. + See policy :policy:`CMP0061`. * The :generator:`Visual Studio 10 2010` generator no longer checks for running VS IDEs with the project open or asks them to reload. @@ -225,39 +237,57 @@ Changes made since CMake 3.2 include the following. Since VS >= 10 allow the whole solution to reload at once they do not need CMake to help them. +* The :generator:`Visual Studio 7` generator (.NET 2002) is now + deprecated and will be removed in a future version of CMake. + * The :generator:`Visual Studio 6` generator is now deprecated and will be removed in a future version of CMake. -* The :generator:`Visual Studio 7` generator (.NET 2002) is now - deprecated and will be removed in a future version of CMake. +* The :command:`find_package` command no longer considers project + build trees recently configured in a :manual:`cmake-gui(1)`. + This was previously done only on Windows and is now never done. + The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given + and effectively always on. + Projects may populate the :ref:`User Package Registry` to aid + users building multiple dependent projects one after another. -* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio - 7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``. - This should have no effect on the intended use cases of the variable. +* When building with GNU tools on Windows (MinGW tools), the + :command:`find_library` command will no longer consider + ``.dll`` files to be linkable libraries. All dynamic link + libraries are expected to provide separate ``.dll.a`` or + ``.lib`` import libraries. + +* The :command:`add_definitions()` command no longer causes a + :prop_dir:`DEFINITIONS` directory property to be populated. See policy + :policy:`CMP0059`. * With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)`` placeholder no longer evaluates to the configuration name. Projects should use ``$(ConfigurationName)`` for that instead. -* The :ref:`Visual Studio Generators` learned a new - :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option - to put the ``INSTALL`` target in the default build of a - solution (``.sln``) file. +* Using the output of :command:`export()` with the :command:`install(FILES)` + command is no longer allowed. See policy :policy:`CMP0062` for details. -* The :ref:`Visual Studio Generators` learned to support ``.xaml`` - source files and automatically associate them with corresponding - ``.h`` and ``.cpp`` sources. +Other Changes +============= -* The CPack WIX generator learned the new - :prop_inst:`CPACK_START_MENU_SHORTCUTS`, - :prop_inst:`CPACK_DESKTOP_SHORTCUTS` and - :prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can - be used to install shorcuts in the Start Menu, on the Desktop and - in the Startup Folder respectively. +* The :generator:`Ninja` generator now requires that calls to the + :command:`add_custom_command` and :command:`add_custom_target` + commands use the ``BYPRODUCTS`` option to explicitly specify any + files generated by the custom commands that are not listed as + outputs (perhaps because their timestamps are allowed to be older + than the inputs). See policy :policy:`CMP0058`. -* The :prop_tgt:`XCODE_ATTRIBUTE_` target property learned - to support generator expressions. +* Build-time progress output of :ref:`Makefile Generators` has been improved. + It no longer mixes progress and build rule messages during parallel builds. + The link rule messages now have progress and are displayed as bold green + instead of bold red (since red is often associated with an error message). -* On OS X, CMake learned to create XCTest bundles to test Frameworks - and App Bundles within Xcode. The :module:`FindXCTest` module - provides convenience functions to handle :prop_tgt:`XCTEST` bundles. +* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio + 7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``. + This should have no effect on the intended use cases of the variable. + +* Linking to library files by a full path in an implicit linker search + directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to + search for the library (e.g. ``-lfoo``) and now links by full path. + See policy :policy:`CMP0060`. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ce87ac6ef95c244978756f78154f239705aa986 commit 8ce87ac6ef95c244978756f78154f239705aa986 Author: Brad King AuthorDate: Tue Jun 2 09:09:53 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 09:10:30 2015 -0400 Help: Consolidate 3.3 release notes Move all development release notes into a new version-specific document: tail -q -n +3 Help/release/dev/* > Help/release/3.3.rst git rm -- Help/release/dev/* except the sample topic: git checkout HEAD -- Help/release/dev/0-sample-topic.rst Reference the new document from the release notes index document. Add a title and intro sentence to the new document by hand. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst new file mode 100644 index 0000000..7114008 --- /dev/null +++ b/Help/release/3.3.rst @@ -0,0 +1,263 @@ +CMake 3.3 Release Notes +*********************** + +.. only:: html + + .. contents:: + +Changes made since CMake 3.2 include the following. + +* The :module:`CheckFortranCompilerFlag` module was introduced + to check ``Fortran`` compiler flags, much like the + :module:`CheckCCompilerFlag` module already does for ``C``. + +* The :command:`add_dependencies` command learned to allow dependencies + to be added to :ref:`interface libraries `. + Dependencies added to an interface library are followed transitively + in its place since the target itself does not build. + +* A new experimental :generator:`Green Hills MULTI` generator was + added on Windows. `Green Hills MULTI`_ is an IDE for embedded + real-time systems. + +.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html + +* On OS X the :manual:`cmake-gui(1)` no longer has the + ``Install For Command Line Use`` menu item. Instead there + is a ``How to Install For Command Line Use`` menu item + that shows an informational dialog box explaining how to + make the command line tools available. For example:: + + /Applications/CMake.app/Contents/bin/cmake-gui --install + +* The version of some Fortran compilers is now detected and stored in the + :variable:`CMAKE_Fortran_COMPILER_VERSION _COMPILER_VERSION>` + variable. + +* The :module:`CPackDeb` module learned a new + :variable:`CPACK_DEBIAN__PACKAGE_SHLIBDEPS` + variable to specify per-component use of ``dpkg-shlibdeps``. + +* The :module:`CPackDeb` module learned a new + :variable:`CPACK_DEBIAN__PACKAGE_DEPENDS` + option to specify per-component dependencies. + +* The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW` + module learned to support Qt Framework Installer 2.0 tools. + +* The :module:`CPackRPM` module learned to package symbolic links + more cleanly and now supports directory symlinks with recent + ``rpmbuild`` versions. + +* The :module:`CPackRPM` module learned a new + :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify + directories containing man pages for the brp-compress RPM macro. + +* The :command:`ctest_build` and :command:`build_command` commands + no longer tell ``make`` tools to ignore errors with the ``-i`` option. + Previously this was done for :ref:`Makefile Generators` but not others. + See policy :policy:`CMP0061`. + +* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail `` + option to help find sporadic test failures. + +* Using the output of :command:`export()` with the :command:`install(FILES)` + command is no longer allowed. See policy :policy:`CMP0062` for details. + +* A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting + :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced + to allow target platform binaries to run on the host during cross + compiling. + +* The :command:`execute_process` command learned to support specifying + the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``. + +* It is now possible to export targets which populate the + :prop_tgt:`INTERFACE_SOURCES` target property using the + :command:`install(EXPORT)` and :command:`export()` commands. + +* The :prop_tgt:`_VISIBILITY_PRESET` and + :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now + affect compilation in sources of all target types. See + policy :policy:`CMP0063`. + +* The :module:`ExternalData` module learned a new + :variable:`ExternalData_NO_SYMLINKS` option to disable use of + symbolic links to populate the real data files and use copies + instead. + +* The :module:`ExternalData` module learned a new ``RECURSE:`` + option in ``DATA{}`` references specifying directories. + This allows an entire directory tree of associated files + to be matched. + +* The :module:`ExternalData` module learned a new URL template + placeholder ``%(algo:)`` to allow custom mapping from + algorithm name to URL component through configuration of new + :variable:`ExternalData_URL_ALGO__` variables. + This allows more flexibility in remote URLs. + +* The :module:`ExternalProject` module learned to replace tokens + like ```` in the ``BYPRODUCTS`` of each step. + +* The :module:`ExternalProject` module APIs learned to support + :manual:`generator expressions ` + when using ``LOG_*`` options and in CMake initial cache options. + +* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands + learned a new ``LIST_DIRECTORIES `` option to specify whether + the glob result should include directories. + +* The :module:`FindBoost` module now tracks the directories containing + libraries separately for RELEASE and DEBUG configurations. + +* The :command:`find_library`, :command:`find_path`, and :command:`find_file` + commands now search in installation prefixes derived from the ``PATH`` + environment variable. + +* The :module:`FindCUDA` module now defaults to using the static + CUDA runtime library if it is available. A new + ``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control + this behavior. + +* The :module:`FindMatlab` module was completely rewritten. It learned + about versions and components and to find Matlab in a more precise and + multiplatform way. The module now offers APIs to create mex extensions, + documentation, and unit tests. + +* The :command:`find_package` command no longer considers project + build trees recently configured in a :manual:`cmake-gui(1)`. + This was previously done only on Windows and is now never done. + The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given + and effectively always on. + Projects may populate the :ref:`User Package Registry` to aid + users building multiple dependent projects one after another. + +* The :module:`FindPackageHandleStandardArgs` module + ``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now + always populates the both ``_FOUND`` + and ``_FOUND`` variables (the latter + for backwards compatibility). The ``FOUND_VAR`` + option is now ignored except to enforce its allowed + values. + +* The :module:`CTestCoverageCollectGCOV` module learned to support + the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the + :command:`ctest_coverage` command. + +* Add a new IN_LIST operator to if() that evaluates true + if a given element is contained in a named list. + +* The :command:`install(TARGETS)` command learned to support + generator expressions in the ``DESTINATION`` value. + +* The :module:`InstallRequiredSystemLibraries` module learned a new + ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the + installation component. + +* Linking to library files by a full path in an implicit linker search + directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to + search for the library (e.g. ``-lfoo``). See policy :policy:`CMP0060`. + +* The Makefile generators now add ``.DELETE_ON_ERROR`` to the + makefiles that contain the actual build rules for files on disk. + This tells GNU make to remove rule outputs when their recipe + modifies an output but fails. + +* With Makefile generators, the build-time progress output has been improved. + It no longer mixes progress and build rule messages during parallel builds. + The link rule messages now have progress and are displayed as bold green + instead of bold red (since red is often associated with an error message). + +* The :manual:`Compile Features ` functionality + is now aware of features supported by GNU compilers on Windows, versions + 4.4 through 5.0. + +* When building with GNU tools on Windows (MinGW tools), the + :command:`find_library` command will no longer consider + ``.dll`` files to be linkable libraries. All dynamic link + libraries are expected to provide separate ``.dll.a`` or + ``.lib`` import libraries. + +* The :generator:`Ninja` generator now requires that calls to the + :command:`add_custom_command` and :command:`add_custom_target` + commands use the ``BYPRODUCTS`` option to explicitly specify any + files generated by the custom commands that are not listed as + outputs (perhaps because their timestamps are allowed to be older + than the inputs). See policy :policy:`CMP0058`. + +* The :command:`add_definitions()` command no longer causes a + :prop_dir:`DEFINITIONS` directory property to be populated. See policy + :policy:`CMP0059`. + +* The :module:`CPackRPM` module learned a new + :variable:`CPACK_RPM__PACKAGE_ARCHITECTURE` variable + to specify a component-specific package architecture. + +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator + learned to optionally run ``include-what-you-use`` along with the + compiler for ``C`` and ``CXX`` languages. See the + :variable:`CMAKE__INCLUDE_WHAT_YOU_USE` variable and + :prop_tgt:`_INCLUDE_WHAT_YOU_USE` target property for details. + +* A new ``COMPILE_LANGUAGE`` generator expression was introduced to + allow specification of compile options for target files based on the + :prop_sf:`LANGUAGE` of each source file. Due to limitations of the + underlying native build tools, this feature has varying support across + generators. See the :manual:`cmake-generator-expressions(7)` manual + for details. + +* The :manual:`cmake(1)` ``-E tar`` command learned a new + ``--format`` option to specify the archive format to + be written. + +* The :module:`UseSWIG` module ``SWIG_ADD_MODULE`` macro no + longer attaches the swig invocation custom command to the + ``.i`` source file in IDE projects. This is because only + one custom command can be safely attached to a given source + file, and adding multiple modules with the same ``.i`` file + for different languages requires more than one such command. + +* The :generator:`Visual Studio 10 2010` generator no longer checks + for running VS IDEs with the project open or asks them to reload. + This was originally done for VS 10 because it had been done for + VS 7 through 9 to avoid prompting for every project in a solution. + Since VS >= 10 allow the whole solution to reload at once they + do not need CMake to help them. + +* The :generator:`Visual Studio 6` generator is now deprecated + and will be removed in a future version of CMake. + +* The :generator:`Visual Studio 7` generator (.NET 2002) is now + deprecated and will be removed in a future version of CMake. + +* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio + 7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``. + This should have no effect on the intended use cases of the variable. + +* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)`` + placeholder no longer evaluates to the configuration name. Projects + should use ``$(ConfigurationName)`` for that instead. + +* The :ref:`Visual Studio Generators` learned a new + :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option + to put the ``INSTALL`` target in the default build of a + solution (``.sln``) file. + +* The :ref:`Visual Studio Generators` learned to support ``.xaml`` + source files and automatically associate them with corresponding + ``.h`` and ``.cpp`` sources. + +* The CPack WIX generator learned the new + :prop_inst:`CPACK_START_MENU_SHORTCUTS`, + :prop_inst:`CPACK_DESKTOP_SHORTCUTS` and + :prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can + be used to install shorcuts in the Start Menu, on the Desktop and + in the Startup Folder respectively. + +* The :prop_tgt:`XCODE_ATTRIBUTE_` target property learned + to support generator expressions. + +* On OS X, CMake learned to create XCTest bundles to test Frameworks + and App Bundles within Xcode. The :module:`FindXCTest` module + provides convenience functions to handle :prop_tgt:`XCTEST` bundles. diff --git a/Help/release/dev/ExternalData-no-symlinks.rst b/Help/release/dev/ExternalData-no-symlinks.rst deleted file mode 100644 index 9323cca..0000000 --- a/Help/release/dev/ExternalData-no-symlinks.rst +++ /dev/null @@ -1,7 +0,0 @@ -ExternalData-no-symlinks ------------------------- - -* The :module:`ExternalData` module learned a new - :variable:`ExternalData_NO_SYMLINKS` option to disable use of - symbolic links to populate the real data files and use copies - instead. diff --git a/Help/release/dev/ExternalData-recursive-match.rst b/Help/release/dev/ExternalData-recursive-match.rst deleted file mode 100644 index 4d8c789..0000000 --- a/Help/release/dev/ExternalData-recursive-match.rst +++ /dev/null @@ -1,7 +0,0 @@ -ExternalData-recursive-match ----------------------------- - -* The :module:`ExternalData` module learned a new ``RECURSE:`` - option in ``DATA{}`` references specifying directories. - This allows an entire directory tree of associated files - to be matched. diff --git a/Help/release/dev/ExternalData-url-algo-map.rst b/Help/release/dev/ExternalData-url-algo-map.rst deleted file mode 100644 index baf661f..0000000 --- a/Help/release/dev/ExternalData-url-algo-map.rst +++ /dev/null @@ -1,8 +0,0 @@ -ExternalData-url-algo-map -------------------------- - -* The :module:`ExternalData` module learned a new URL template - placeholder ``%(algo:)`` to allow custom mapping from - algorithm name to URL component through configuration of new - :variable:`ExternalData_URL_ALGO__` variables. - This allows more flexibility in remote URLs. diff --git a/Help/release/dev/ExternalProject-byproducts-tokens.rst b/Help/release/dev/ExternalProject-byproducts-tokens.rst deleted file mode 100644 index 20b4dd4..0000000 --- a/Help/release/dev/ExternalProject-byproducts-tokens.rst +++ /dev/null @@ -1,5 +0,0 @@ -ExternalProject-byproducts-tokens ---------------------------------- - -* The :module:`ExternalProject` module learned to replace tokens - like ```` in the ``BYPRODUCTS`` of each step. diff --git a/Help/release/dev/ExternalProject-genex.rst b/Help/release/dev/ExternalProject-genex.rst deleted file mode 100644 index 2c7bf8a..0000000 --- a/Help/release/dev/ExternalProject-genex.rst +++ /dev/null @@ -1,6 +0,0 @@ -ExternalProject-genex ---------------------- - -* The :module:`ExternalProject` module APIs learned to support - :manual:`generator expressions ` - when using ``LOG_*`` options and in CMake initial cache options. diff --git a/Help/release/dev/FPHSA-ExactCase-name.rst b/Help/release/dev/FPHSA-ExactCase-name.rst deleted file mode 100644 index 675547c..0000000 --- a/Help/release/dev/FPHSA-ExactCase-name.rst +++ /dev/null @@ -1,10 +0,0 @@ -FPHSA-ExactCase-name --------------------- - -* The :module:`FindPackageHandleStandardArgs` module - ``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now - always populates the both ``_FOUND`` - and ``_FOUND`` variables (the latter - for backwards compatibility). The ``FOUND_VAR`` - option is now ignored except to enforce its allowed - values. diff --git a/Help/release/dev/FindBoost-per-config-libraries.rst b/Help/release/dev/FindBoost-per-config-libraries.rst deleted file mode 100644 index e6ef70f..0000000 --- a/Help/release/dev/FindBoost-per-config-libraries.rst +++ /dev/null @@ -1,5 +0,0 @@ -FindBoost-per-config-libraries ------------------------------- - -* The :module:`FindBoost` module now tracks the directories containing - libraries separately for RELEASE and DEBUG configurations. diff --git a/Help/release/dev/FindCUDA-StaticRuntime.rst b/Help/release/dev/FindCUDA-StaticRuntime.rst deleted file mode 100644 index 112596c..0000000 --- a/Help/release/dev/FindCUDA-StaticRuntime.rst +++ /dev/null @@ -1,7 +0,0 @@ -FindCUDA-StaticRuntime ----------------------- - -* The :module:`FindCUDA` module now defaults to using the static - CUDA runtime library if it is available. A new - ``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control - this behavior. diff --git a/Help/release/dev/FindMatlab-rewrite.rst b/Help/release/dev/FindMatlab-rewrite.rst deleted file mode 100644 index 07727b8..0000000 --- a/Help/release/dev/FindMatlab-rewrite.rst +++ /dev/null @@ -1,7 +0,0 @@ -FindMatlab-rewrite ------------------- - -* The :module:`FindMatlab` module was completely rewritten. It learned - about versions and components and to find Matlab in a more precise and - multiplatform way. The module now offers APIs to create mex extensions, - documentation, and unit tests. diff --git a/Help/release/dev/InstallRequiredSystemLibraries-COMPONENT.rst b/Help/release/dev/InstallRequiredSystemLibraries-COMPONENT.rst deleted file mode 100644 index e6ebc2d..0000000 --- a/Help/release/dev/InstallRequiredSystemLibraries-COMPONENT.rst +++ /dev/null @@ -1,6 +0,0 @@ -InstallRequiredSystemLibraries-COMPONENT ----------------------------------------- - -* The :module:`InstallRequiredSystemLibraries` module learned a new - ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the - installation component. diff --git a/Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst b/Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst deleted file mode 100644 index 5311cf1..0000000 --- a/Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst +++ /dev/null @@ -1,9 +0,0 @@ -UseSWIG-no-MAIN_DEPENDENCY --------------------------- - -* The :module:`UseSWIG` module ``SWIG_ADD_MODULE`` macro no - longer attaches the swig invocation custom command to the - ``.i`` source file in IDE projects. This is because only - one custom command can be safely attached to a given source - file, and adding multiple modules with the same ``.i`` file - for different languages requires more than one such command. diff --git a/Help/release/dev/add-CheckFortranCompilerFlag.rst b/Help/release/dev/add-CheckFortranCompilerFlag.rst deleted file mode 100644 index 718b53e..0000000 --- a/Help/release/dev/add-CheckFortranCompilerFlag.rst +++ /dev/null @@ -1,6 +0,0 @@ -add-CheckFortranCompilerFlag ----------------------------- - -* The :module:`CheckFortranCompilerFlag` module was introduced - to check ``Fortran`` compiler flags, much like the - :module:`CheckCCompilerFlag` module already does for ``C``. diff --git a/Help/release/dev/add-GreenHills-MULTI-generator.rst b/Help/release/dev/add-GreenHills-MULTI-generator.rst deleted file mode 100644 index b4c5c5a..0000000 --- a/Help/release/dev/add-GreenHills-MULTI-generator.rst +++ /dev/null @@ -1,8 +0,0 @@ -add-GreenHills-MULTI-generator ------------------------------- - -* A new experimental :generator:`Green Hills MULTI` generator was - added on Windows. `Green Hills MULTI`_ is an IDE for embedded - real-time systems. - -.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html diff --git a/Help/release/dev/add_dependencies-INTERFACE-libraries.rst b/Help/release/dev/add_dependencies-INTERFACE-libraries.rst deleted file mode 100644 index dfac2af..0000000 --- a/Help/release/dev/add_dependencies-INTERFACE-libraries.rst +++ /dev/null @@ -1,7 +0,0 @@ -add_dependencies-INTERFACE-libraries ------------------------------------- - -* The :command:`add_dependencies` command learned to allow dependencies - to be added to :ref:`interface libraries `. - Dependencies added to an interface library are followed transitively - in its place since the target itself does not build. diff --git a/Help/release/dev/cmake-gui-osx-install-command-line.rst b/Help/release/dev/cmake-gui-osx-install-command-line.rst deleted file mode 100644 index e0f0369..0000000 --- a/Help/release/dev/cmake-gui-osx-install-command-line.rst +++ /dev/null @@ -1,10 +0,0 @@ -cmake-gui-osx-install-command-line ----------------------------------- - -* On OS X the :manual:`cmake-gui(1)` no longer has the - ``Install For Command Line Use`` menu item. Instead there - is a ``How to Install For Command Line Use`` menu item - that shows an informational dialog box explaining how to - make the command line tools available. For example:: - - /Applications/CMake.app/Contents/bin/cmake-gui --install diff --git a/Help/release/dev/compiler-version-Fortran.rst b/Help/release/dev/compiler-version-Fortran.rst deleted file mode 100644 index e10b206..0000000 --- a/Help/release/dev/compiler-version-Fortran.rst +++ /dev/null @@ -1,6 +0,0 @@ -compiler-version-Fortran ------------------------- - -* The version of some Fortran compilers is now detected and stored in the - :variable:`CMAKE_Fortran_COMPILER_VERSION _COMPILER_VERSION>` - variable. diff --git a/Help/release/dev/cpack-deb-component-auto-discovery.rst b/Help/release/dev/cpack-deb-component-auto-discovery.rst deleted file mode 100644 index cc74db2..0000000 --- a/Help/release/dev/cpack-deb-component-auto-discovery.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpack-deb-component-auto-discovery ----------------------------------- - -* The :module:`CPackDeb` module learned a new - :variable:`CPACK_DEBIAN__PACKAGE_SHLIBDEPS` - variable to specify per-component use of ``dpkg-shlibdeps``. diff --git a/Help/release/dev/cpack-deb-component-dependencies.rst b/Help/release/dev/cpack-deb-component-dependencies.rst deleted file mode 100644 index de9f457..0000000 --- a/Help/release/dev/cpack-deb-component-dependencies.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpack-deb-component-dependencies --------------------------------- - -* The :module:`CPackDeb` module learned a new - :variable:`CPACK_DEBIAN__PACKAGE_DEPENDS` - option to specify per-component dependencies. diff --git a/Help/release/dev/cpack-ifw-updates.rst b/Help/release/dev/cpack-ifw-updates.rst deleted file mode 100644 index c01f04b..0000000 --- a/Help/release/dev/cpack-ifw-updates.rst +++ /dev/null @@ -1,5 +0,0 @@ -cpack-ifw-updates ------------------ - -* The :manual:`cpack(1)` ``IFW`` generator and the :module:`CPackIFW` - module learned to support Qt Framework Installer 2.0 tools. diff --git a/Help/release/dev/cpack-rpm-basic-symlink-handling.rst b/Help/release/dev/cpack-rpm-basic-symlink-handling.rst deleted file mode 100644 index 3af4cf1..0000000 --- a/Help/release/dev/cpack-rpm-basic-symlink-handling.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpack-rpm-basic-symlink-handling --------------------------------- - -* The :module:`CPackRPM` module learned to package symbolic links - more cleanly and now supports directory symlinks with recent - ``rpmbuild`` versions. diff --git a/Help/release/dev/cpack-rpm-refactored-file-listing.rst b/Help/release/dev/cpack-rpm-refactored-file-listing.rst deleted file mode 100644 index b4a5025..0000000 --- a/Help/release/dev/cpack-rpm-refactored-file-listing.rst +++ /dev/null @@ -1,6 +0,0 @@ -cpack-rpm-refactored-file-listing ---------------------------------- - -* The :module:`CPackRPM` module learned a new - :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify - directories containing man pages for the brp-compress RPM macro. diff --git a/Help/release/dev/ctest-no-make-i.rst b/Help/release/dev/ctest-no-make-i.rst deleted file mode 100644 index 96da0bd..0000000 --- a/Help/release/dev/ctest-no-make-i.rst +++ /dev/null @@ -1,7 +0,0 @@ -ctest-no-make-i ---------------- - -* The :command:`ctest_build` and :command:`build_command` commands - no longer tell ``make`` tools to ignore errors with the ``-i`` option. - Previously this was done for :ref:`Makefile Generators` but not others. - See policy :policy:`CMP0061`. diff --git a/Help/release/dev/ctest-repeat-until-fail.rst b/Help/release/dev/ctest-repeat-until-fail.rst deleted file mode 100644 index 8a679c6..0000000 --- a/Help/release/dev/ctest-repeat-until-fail.rst +++ /dev/null @@ -1,5 +0,0 @@ -ctest-repeat-until-fail ------------------------ - -* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail `` - option to help find sporadic test failures. diff --git a/Help/release/dev/disallow-install-of-export.rst b/Help/release/dev/disallow-install-of-export.rst deleted file mode 100644 index baee26d..0000000 --- a/Help/release/dev/disallow-install-of-export.rst +++ /dev/null @@ -1,5 +0,0 @@ -disallow-install-of-export --------------------------- - -* Using the output of :command:`export()` with the :command:`install(FILES)` - command is no longer allowed. See policy :policy:`CMP0062` for details. diff --git a/Help/release/dev/emulator-property.rst b/Help/release/dev/emulator-property.rst deleted file mode 100644 index 1bc2f2d..0000000 --- a/Help/release/dev/emulator-property.rst +++ /dev/null @@ -1,7 +0,0 @@ -emulator-property ------------------ - -* A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting - :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced - to allow target platform binaries to run on the host during cross - compiling. diff --git a/Help/release/dev/execute_process-merge-output.rst b/Help/release/dev/execute_process-merge-output.rst deleted file mode 100644 index 4c80cdd..0000000 --- a/Help/release/dev/execute_process-merge-output.rst +++ /dev/null @@ -1,5 +0,0 @@ -execute_process-merge-output ----------------------------- - -* The :command:`execute_process` command learned to support specifying - the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``. diff --git a/Help/release/dev/export-interface-source-files.rst b/Help/release/dev/export-interface-source-files.rst deleted file mode 100644 index 00dcd25..0000000 --- a/Help/release/dev/export-interface-source-files.rst +++ /dev/null @@ -1,6 +0,0 @@ -export-interface-source-files ------------------------------ - -* It is now possible to export targets which populate the - :prop_tgt:`INTERFACE_SOURCES` target property using the - :command:`install(EXPORT)` and :command:`export()` commands. diff --git a/Help/release/dev/extend-visibility-properties.rst b/Help/release/dev/extend-visibility-properties.rst deleted file mode 100644 index 6b4489d..0000000 --- a/Help/release/dev/extend-visibility-properties.rst +++ /dev/null @@ -1,7 +0,0 @@ -extend-visibility-properties ----------------------------- - -* The :prop_tgt:`_VISIBILITY_PRESET` and - :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now - affect compilation in sources of all target types. See - policy :policy:`CMP0063`. diff --git a/Help/release/dev/file-globbing-directory-listing.rst b/Help/release/dev/file-globbing-directory-listing.rst deleted file mode 100644 index c4d7ba5..0000000 --- a/Help/release/dev/file-globbing-directory-listing.rst +++ /dev/null @@ -1,6 +0,0 @@ -file-globbing-directory-listing -------------------------------- - -* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands - learned a new ``LIST_DIRECTORIES `` option to specify whether - the glob result should include directories. diff --git a/Help/release/dev/find-command-prefix-from-PATH.rst b/Help/release/dev/find-command-prefix-from-PATH.rst deleted file mode 100644 index f9aae2a..0000000 --- a/Help/release/dev/find-command-prefix-from-PATH.rst +++ /dev/null @@ -1,6 +0,0 @@ -find-command-prefix-from-PATH ------------------------------ - -* The :command:`find_library`, :command:`find_path`, and :command:`find_file` - commands now search in installation prefixes derived from the ``PATH`` - environment variable. diff --git a/Help/release/dev/find_package-no-cmake-gui-paths.rst b/Help/release/dev/find_package-no-cmake-gui-paths.rst deleted file mode 100644 index 3914559..0000000 --- a/Help/release/dev/find_package-no-cmake-gui-paths.rst +++ /dev/null @@ -1,10 +0,0 @@ -find_package-no-cmake-gui-paths -------------------------------- - -* The :command:`find_package` command no longer considers project - build trees recently configured in a :manual:`cmake-gui(1)`. - This was previously done only on Windows and is now never done. - The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given - and effectively always on. - Projects may populate the :ref:`User Package Registry` to aid - users building multiple dependent projects one after another. diff --git a/Help/release/dev/gcov-module-coverage-exclude.rst b/Help/release/dev/gcov-module-coverage-exclude.rst deleted file mode 100644 index ee4ebae..0000000 --- a/Help/release/dev/gcov-module-coverage-exclude.rst +++ /dev/null @@ -1,6 +0,0 @@ -gcov-module-coverage-exclude ----------------------------- - -* The :module:`CTestCoverageCollectGCOV` module learned to support - the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the - :command:`ctest_coverage` command. diff --git a/Help/release/dev/if-IN_LIST.rst b/Help/release/dev/if-IN_LIST.rst deleted file mode 100644 index 9dd0725..0000000 --- a/Help/release/dev/if-IN_LIST.rst +++ /dev/null @@ -1,5 +0,0 @@ -if-IN_LIST ----------- - -* Add a new IN_LIST operator to if() that evaluates true - if a given element is contained in a named list. diff --git a/Help/release/dev/install-DESTINATION-genex.rst b/Help/release/dev/install-DESTINATION-genex.rst deleted file mode 100644 index 4c4bbed..0000000 --- a/Help/release/dev/install-DESTINATION-genex.rst +++ /dev/null @@ -1,5 +0,0 @@ -install-DESTINATION-genex -------------------------- - -* The :command:`install(TARGETS)` command learned to support - generator expressions in the ``DESTINATION`` value. diff --git a/Help/release/dev/link-implicit-libs-full-path.rst b/Help/release/dev/link-implicit-libs-full-path.rst deleted file mode 100644 index 7ed7245..0000000 --- a/Help/release/dev/link-implicit-libs-full-path.rst +++ /dev/null @@ -1,6 +0,0 @@ -link-implicit-libs-full-path ----------------------------- - -* Linking to library files by a full path in an implicit linker search - directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to - search for the library (e.g. ``-lfoo``). See policy :policy:`CMP0060`. diff --git a/Help/release/dev/makefile-DELETE_ON_ERROR.rst b/Help/release/dev/makefile-DELETE_ON_ERROR.rst deleted file mode 100644 index c7c45fd..0000000 --- a/Help/release/dev/makefile-DELETE_ON_ERROR.rst +++ /dev/null @@ -1,7 +0,0 @@ -makefile-DELETE_ON_ERROR ------------------------- - -* The Makefile generators now add ``.DELETE_ON_ERROR`` to the - makefiles that contain the actual build rules for files on disk. - This tells GNU make to remove rule outputs when their recipe - modifies an output but fails. diff --git a/Help/release/dev/makefile-progress-improvements.rst b/Help/release/dev/makefile-progress-improvements.rst deleted file mode 100644 index 9cc9706..0000000 --- a/Help/release/dev/makefile-progress-improvements.rst +++ /dev/null @@ -1,7 +0,0 @@ -makefile-progress-improvements ------------------------------- - -* With Makefile generators, the build-time progress output has been improved. - It no longer mixes progress and build rule messages during parallel builds. - The link rule messages now have progress and are displayed as bold green - instead of bold red (since red is often associated with an error message). diff --git a/Help/release/dev/mingw-compile-features.rst b/Help/release/dev/mingw-compile-features.rst deleted file mode 100644 index e2ed30b..0000000 --- a/Help/release/dev/mingw-compile-features.rst +++ /dev/null @@ -1,6 +0,0 @@ -mingw-compile-features ----------------------- - -* The :manual:`Compile Features ` functionality - is now aware of features supported by GNU compilers on Windows, versions - 4.4 through 5.0. diff --git a/Help/release/dev/mingw-no-find_library-dll.rst b/Help/release/dev/mingw-no-find_library-dll.rst deleted file mode 100644 index 1b0c19b..0000000 --- a/Help/release/dev/mingw-no-find_library-dll.rst +++ /dev/null @@ -1,8 +0,0 @@ -mingw-no-find_library-dll -------------------------- - -* When building with GNU tools on Windows (MinGW tools), the - :command:`find_library` command will no longer consider - ``.dll`` files to be linkable libraries. All dynamic link - libraries are expected to provide separate ``.dll.a`` or - ``.lib`` import libraries. diff --git a/Help/release/dev/ninja-require-byproducts.rst b/Help/release/dev/ninja-require-byproducts.rst deleted file mode 100644 index ccde4bc..0000000 --- a/Help/release/dev/ninja-require-byproducts.rst +++ /dev/null @@ -1,9 +0,0 @@ -ninja-require-byproducts ------------------------- - -* The :generator:`Ninja` generator now requires that calls to the - :command:`add_custom_command` and :command:`add_custom_target` - commands use the ``BYPRODUCTS`` option to explicitly specify any - files generated by the custom commands that are not listed as - outputs (perhaps because their timestamps are allowed to be older - than the inputs). See policy :policy:`CMP0058`. diff --git a/Help/release/dev/remove-DEFINITIONS-directory-property.rst b/Help/release/dev/remove-DEFINITIONS-directory-property.rst deleted file mode 100644 index d8e50f0..0000000 --- a/Help/release/dev/remove-DEFINITIONS-directory-property.rst +++ /dev/null @@ -1,6 +0,0 @@ -remove-DEFINITIONS-property ---------------------------- - -* The :command:`add_definitions()` command no longer causes a - :prop_dir:`DEFINITIONS` directory property to be populated. See policy - :policy:`CMP0059`. diff --git a/Help/release/dev/rpm_package_architecture.rst b/Help/release/dev/rpm_package_architecture.rst deleted file mode 100644 index 5bec51d..0000000 --- a/Help/release/dev/rpm_package_architecture.rst +++ /dev/null @@ -1,6 +0,0 @@ -rpm_package_architecture ------------------------- - -* The :module:`CPackRPM` module learned a new - :variable:`CPACK_RPM__PACKAGE_ARCHITECTURE` variable - to specify a component-specific package architecture. diff --git a/Help/release/dev/run-include-what-you-use.rst b/Help/release/dev/run-include-what-you-use.rst deleted file mode 100644 index baac21f..0000000 --- a/Help/release/dev/run-include-what-you-use.rst +++ /dev/null @@ -1,8 +0,0 @@ -run-include-what-you-use ------------------------- - -* The :ref:`Makefile Generators` and the :generator:`Ninja` generator - learned to optionally run ``include-what-you-use`` along with the - compiler for ``C`` and ``CXX`` languages. See the - :variable:`CMAKE__INCLUDE_WHAT_YOU_USE` variable and - :prop_tgt:`_INCLUDE_WHAT_YOU_USE` target property for details. diff --git a/Help/release/dev/tar-write-format.rst b/Help/release/dev/tar-write-format.rst deleted file mode 100644 index 004df21..0000000 --- a/Help/release/dev/tar-write-format.rst +++ /dev/null @@ -1,6 +0,0 @@ -tar-write-format ----------------- - -* The :manual:`cmake(1)` ``-E tar`` command learned a new - ``--format`` option to specify the archive format to - be written. diff --git a/Help/release/dev/target-language-genex.rst b/Help/release/dev/target-language-genex.rst deleted file mode 100644 index ed4cb5e..0000000 --- a/Help/release/dev/target-language-genex.rst +++ /dev/null @@ -1,9 +0,0 @@ -target-language-genex ---------------------- - -* A new ``COMPILE_LANGUAGE`` generator expression was introduced to - allow specification of compile options for target files based on the - :prop_sf:`LANGUAGE` of each source file. Due to limitations of the - underlying native build tools, this feature has varying support across - generators. See the :manual:`cmake-generator-expressions(7)` manual - for details. diff --git a/Help/release/dev/vs-install-in-default-build.rst b/Help/release/dev/vs-install-in-default-build.rst deleted file mode 100644 index b57592e..0000000 --- a/Help/release/dev/vs-install-in-default-build.rst +++ /dev/null @@ -1,7 +0,0 @@ -vs-install-in-default-build ---------------------------- - -* The :ref:`Visual Studio Generators` learned a new - :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option - to put the ``INSTALL`` target in the default build of a - solution (``.sln``) file. diff --git a/Help/release/dev/vs-xaml.rst b/Help/release/dev/vs-xaml.rst deleted file mode 100644 index 575899f..0000000 --- a/Help/release/dev/vs-xaml.rst +++ /dev/null @@ -1,6 +0,0 @@ -vs-xaml -------- - -* The :ref:`Visual Studio Generators` learned to support ``.xaml`` - source files and automatically associate them with corresponding - ``.h`` and ``.cpp`` sources. diff --git a/Help/release/dev/vs10-no-macros.rst b/Help/release/dev/vs10-no-macros.rst deleted file mode 100644 index 89377dc..0000000 --- a/Help/release/dev/vs10-no-macros.rst +++ /dev/null @@ -1,9 +0,0 @@ -vs10-no-macros --------------- - -* The :generator:`Visual Studio 10 2010` generator no longer checks - for running VS IDEs with the project open or asks them to reload. - This was originally done for VS 10 because it had been done for - VS 7 through 9 to avoid prompting for every project in a solution. - Since VS >= 10 allow the whole solution to reload at once they - do not need CMake to help them. diff --git a/Help/release/dev/vs6-deprecate.rst b/Help/release/dev/vs6-deprecate.rst deleted file mode 100644 index 83f9afb..0000000 --- a/Help/release/dev/vs6-deprecate.rst +++ /dev/null @@ -1,5 +0,0 @@ -vs6-deprecate -------------- - -* The :generator:`Visual Studio 6` generator is now deprecated - and will be removed in a future version of CMake. diff --git a/Help/release/dev/vs7-OutputDirectory.rst b/Help/release/dev/vs7-OutputDirectory.rst deleted file mode 100644 index 2725d0c..0000000 --- a/Help/release/dev/vs7-OutputDirectory.rst +++ /dev/null @@ -1,10 +0,0 @@ -vs7-OutputDirectory -------------------- - -* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio - 7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``. - This should have no effect on the intended use cases of the variable. - -* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)`` - placeholder no longer evaluates to the configuration name. Projects - should use ``$(ConfigurationName)`` for that instead. diff --git a/Help/release/dev/vs70-deprecate.rst b/Help/release/dev/vs70-deprecate.rst deleted file mode 100644 index fb94110..0000000 --- a/Help/release/dev/vs70-deprecate.rst +++ /dev/null @@ -1,5 +0,0 @@ -vs70-deprecate --------------- - -* The :generator:`Visual Studio 7` generator (.NET 2002) is now - deprecated and will be removed in a future version of CMake. diff --git a/Help/release/dev/wix-shortcut-properties.rst b/Help/release/dev/wix-shortcut-properties.rst deleted file mode 100644 index bdd6485..0000000 --- a/Help/release/dev/wix-shortcut-properties.rst +++ /dev/null @@ -1,9 +0,0 @@ -wix-shortcut-properties ------------------------ - -* The CPack WIX generator learned the new - :prop_inst:`CPACK_START_MENU_SHORTCUTS`, - :prop_inst:`CPACK_DESKTOP_SHORTCUTS` and - :prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can - be used to install shorcuts in the Start Menu, on the Desktop and - in the Startup Folder respectively. diff --git a/Help/release/dev/xcode-attribute-genex.rst b/Help/release/dev/xcode-attribute-genex.rst deleted file mode 100644 index 3fd5b1c..0000000 --- a/Help/release/dev/xcode-attribute-genex.rst +++ /dev/null @@ -1,5 +0,0 @@ -xcode-attribute-genex ---------------------- - -* The :prop_tgt:`XCODE_ATTRIBUTE_` target property learned - to support generator expressions. diff --git a/Help/release/dev/xcode-xctest.rst b/Help/release/dev/xcode-xctest.rst deleted file mode 100644 index 7a2f07b..0000000 --- a/Help/release/dev/xcode-xctest.rst +++ /dev/null @@ -1,6 +0,0 @@ -xcode-xctest ------------- - -* On OS X, CMake learned to create XCTest bundles to test Frameworks - and App Bundles within Xcode. The :module:`FindXCTest` module - provides convenience functions to handle :prop_tgt:`XCTEST` bundles. diff --git a/Help/release/index.rst b/Help/release/index.rst index 45d0a69..b558e9d 100644 --- a/Help/release/index.rst +++ b/Help/release/index.rst @@ -13,6 +13,7 @@ Releases .. toctree:: :maxdepth: 1 + 3.3 <3.3> 3.2 <3.2> 3.1 <3.1> 3.0 <3.0> ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 293 ++++++++++++++++++++ Help/release/dev/ExternalData-no-symlinks.rst | 7 - Help/release/dev/ExternalData-recursive-match.rst | 7 - Help/release/dev/ExternalData-url-algo-map.rst | 8 - .../dev/ExternalProject-byproducts-tokens.rst | 5 - Help/release/dev/ExternalProject-genex.rst | 6 - Help/release/dev/FPHSA-ExactCase-name.rst | 10 - .../release/dev/FindBoost-per-config-libraries.rst | 5 - Help/release/dev/FindCUDA-StaticRuntime.rst | 7 - Help/release/dev/FindMatlab-rewrite.rst | 7 - .../InstallRequiredSystemLibraries-COMPONENT.rst | 6 - Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst | 9 - Help/release/dev/add-CheckFortranCompilerFlag.rst | 6 - .../release/dev/add-GreenHills-MULTI-generator.rst | 8 - .../dev/add_dependencies-INTERFACE-libraries.rst | 7 - .../dev/cmake-gui-osx-install-command-line.rst | 10 - Help/release/dev/compiler-version-Fortran.rst | 6 - .../dev/cpack-deb-component-auto-discovery.rst | 6 - .../dev/cpack-deb-component-dependencies.rst | 6 - Help/release/dev/cpack-ifw-updates.rst | 5 - .../dev/cpack-rpm-basic-symlink-handling.rst | 6 - .../dev/cpack-rpm-refactored-file-listing.rst | 6 - Help/release/dev/ctest-no-make-i.rst | 7 - Help/release/dev/ctest-repeat-until-fail.rst | 5 - Help/release/dev/disallow-install-of-export.rst | 5 - Help/release/dev/emulator-property.rst | 7 - Help/release/dev/execute_process-merge-output.rst | 5 - Help/release/dev/export-interface-source-files.rst | 6 - Help/release/dev/extend-visibility-properties.rst | 7 - .../dev/file-globbing-directory-listing.rst | 6 - Help/release/dev/find-command-prefix-from-PATH.rst | 6 - .../dev/find_package-no-cmake-gui-paths.rst | 10 - Help/release/dev/gcov-module-coverage-exclude.rst | 6 - Help/release/dev/if-IN_LIST.rst | 5 - Help/release/dev/install-DESTINATION-genex.rst | 5 - Help/release/dev/link-implicit-libs-full-path.rst | 6 - Help/release/dev/makefile-DELETE_ON_ERROR.rst | 7 - .../release/dev/makefile-progress-improvements.rst | 7 - Help/release/dev/mingw-compile-features.rst | 6 - Help/release/dev/mingw-no-find_library-dll.rst | 8 - Help/release/dev/ninja-require-byproducts.rst | 9 - .../dev/remove-DEFINITIONS-directory-property.rst | 6 - Help/release/dev/rpm_package_architecture.rst | 6 - Help/release/dev/run-include-what-you-use.rst | 8 - Help/release/dev/tar-write-format.rst | 6 - Help/release/dev/target-language-genex.rst | 9 - Help/release/dev/vs-install-in-default-build.rst | 7 - Help/release/dev/vs-xaml.rst | 6 - Help/release/dev/vs10-no-macros.rst | 9 - Help/release/dev/vs6-deprecate.rst | 5 - Help/release/dev/vs7-OutputDirectory.rst | 10 - Help/release/dev/vs70-deprecate.rst | 5 - Help/release/dev/wix-shortcut-properties.rst | 9 - Help/release/dev/xcode-attribute-genex.rst | 5 - Help/release/dev/xcode-xctest.rst | 6 - Help/release/index.rst | 1 + 56 files changed, 294 insertions(+), 363 deletions(-) create mode 100644 Help/release/3.3.rst delete mode 100644 Help/release/dev/ExternalData-no-symlinks.rst delete mode 100644 Help/release/dev/ExternalData-recursive-match.rst delete mode 100644 Help/release/dev/ExternalData-url-algo-map.rst delete mode 100644 Help/release/dev/ExternalProject-byproducts-tokens.rst delete mode 100644 Help/release/dev/ExternalProject-genex.rst delete mode 100644 Help/release/dev/FPHSA-ExactCase-name.rst delete mode 100644 Help/release/dev/FindBoost-per-config-libraries.rst delete mode 100644 Help/release/dev/FindCUDA-StaticRuntime.rst delete mode 100644 Help/release/dev/FindMatlab-rewrite.rst delete mode 100644 Help/release/dev/InstallRequiredSystemLibraries-COMPONENT.rst delete mode 100644 Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst delete mode 100644 Help/release/dev/add-CheckFortranCompilerFlag.rst delete mode 100644 Help/release/dev/add-GreenHills-MULTI-generator.rst delete mode 100644 Help/release/dev/add_dependencies-INTERFACE-libraries.rst delete mode 100644 Help/release/dev/cmake-gui-osx-install-command-line.rst delete mode 100644 Help/release/dev/compiler-version-Fortran.rst delete mode 100644 Help/release/dev/cpack-deb-component-auto-discovery.rst delete mode 100644 Help/release/dev/cpack-deb-component-dependencies.rst delete mode 100644 Help/release/dev/cpack-ifw-updates.rst delete mode 100644 Help/release/dev/cpack-rpm-basic-symlink-handling.rst delete mode 100644 Help/release/dev/cpack-rpm-refactored-file-listing.rst delete mode 100644 Help/release/dev/ctest-no-make-i.rst delete mode 100644 Help/release/dev/ctest-repeat-until-fail.rst delete mode 100644 Help/release/dev/disallow-install-of-export.rst delete mode 100644 Help/release/dev/emulator-property.rst delete mode 100644 Help/release/dev/execute_process-merge-output.rst delete mode 100644 Help/release/dev/export-interface-source-files.rst delete mode 100644 Help/release/dev/extend-visibility-properties.rst delete mode 100644 Help/release/dev/file-globbing-directory-listing.rst delete mode 100644 Help/release/dev/find-command-prefix-from-PATH.rst delete mode 100644 Help/release/dev/find_package-no-cmake-gui-paths.rst delete mode 100644 Help/release/dev/gcov-module-coverage-exclude.rst delete mode 100644 Help/release/dev/if-IN_LIST.rst delete mode 100644 Help/release/dev/install-DESTINATION-genex.rst delete mode 100644 Help/release/dev/link-implicit-libs-full-path.rst delete mode 100644 Help/release/dev/makefile-DELETE_ON_ERROR.rst delete mode 100644 Help/release/dev/makefile-progress-improvements.rst delete mode 100644 Help/release/dev/mingw-compile-features.rst delete mode 100644 Help/release/dev/mingw-no-find_library-dll.rst delete mode 100644 Help/release/dev/ninja-require-byproducts.rst delete mode 100644 Help/release/dev/remove-DEFINITIONS-directory-property.rst delete mode 100644 Help/release/dev/rpm_package_architecture.rst delete mode 100644 Help/release/dev/run-include-what-you-use.rst delete mode 100644 Help/release/dev/tar-write-format.rst delete mode 100644 Help/release/dev/target-language-genex.rst delete mode 100644 Help/release/dev/vs-install-in-default-build.rst delete mode 100644 Help/release/dev/vs-xaml.rst delete mode 100644 Help/release/dev/vs10-no-macros.rst delete mode 100644 Help/release/dev/vs6-deprecate.rst delete mode 100644 Help/release/dev/vs7-OutputDirectory.rst delete mode 100644 Help/release/dev/vs70-deprecate.rst delete mode 100644 Help/release/dev/wix-shortcut-properties.rst delete mode 100644 Help/release/dev/xcode-attribute-genex.rst delete mode 100644 Help/release/dev/xcode-xctest.rst hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 11:11:32 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 11:11:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1384-ga6916a6 Message-ID: <20150602151132.20B95AEA55@public.kitware.com> 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, master has been updated via a6916a6c6e397bda8b381f65dbfc59d3c52f8525 (commit) via c952d790de477cc6bde99b9c1415f6f6f7bca16d (commit) via 8ce87ac6ef95c244978756f78154f239705aa986 (commit) from 3bcd2f538f7c20fe25532bf41c8b78c511c03be5 (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=a6916a6c6e397bda8b381f65dbfc59d3c52f8525 commit a6916a6c6e397bda8b381f65dbfc59d3c52f8525 Merge: 3bcd2f5 c952d79 Author: Brad King AuthorDate: Tue Jun 2 11:11:30 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 11:11:30 2015 -0400 Merge topic 'doc-3.3-relnotes' c952d790 Help: Organize and revise 3.3 release notes 8ce87ac6 Help: Consolidate 3.3 release notes ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 293 ++++++++++++++++++++ Help/release/dev/ExternalData-no-symlinks.rst | 7 - Help/release/dev/ExternalData-recursive-match.rst | 7 - Help/release/dev/ExternalData-url-algo-map.rst | 8 - .../dev/ExternalProject-byproducts-tokens.rst | 5 - Help/release/dev/ExternalProject-genex.rst | 6 - Help/release/dev/FPHSA-ExactCase-name.rst | 10 - .../release/dev/FindBoost-per-config-libraries.rst | 5 - Help/release/dev/FindCUDA-StaticRuntime.rst | 7 - Help/release/dev/FindMatlab-rewrite.rst | 7 - .../InstallRequiredSystemLibraries-COMPONENT.rst | 6 - Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst | 9 - Help/release/dev/add-CheckFortranCompilerFlag.rst | 6 - .../release/dev/add-GreenHills-MULTI-generator.rst | 8 - .../dev/add_dependencies-INTERFACE-libraries.rst | 7 - .../dev/cmake-gui-osx-install-command-line.rst | 10 - Help/release/dev/compiler-version-Fortran.rst | 6 - .../dev/cpack-deb-component-auto-discovery.rst | 6 - .../dev/cpack-deb-component-dependencies.rst | 6 - Help/release/dev/cpack-ifw-updates.rst | 5 - .../dev/cpack-rpm-basic-symlink-handling.rst | 6 - .../dev/cpack-rpm-refactored-file-listing.rst | 6 - Help/release/dev/ctest-no-make-i.rst | 7 - Help/release/dev/ctest-repeat-until-fail.rst | 5 - Help/release/dev/disallow-install-of-export.rst | 5 - Help/release/dev/emulator-property.rst | 7 - Help/release/dev/execute_process-merge-output.rst | 5 - Help/release/dev/export-interface-source-files.rst | 6 - Help/release/dev/extend-visibility-properties.rst | 7 - .../dev/file-globbing-directory-listing.rst | 6 - Help/release/dev/find-command-prefix-from-PATH.rst | 6 - .../dev/find_package-no-cmake-gui-paths.rst | 10 - Help/release/dev/gcov-module-coverage-exclude.rst | 6 - Help/release/dev/if-IN_LIST.rst | 5 - Help/release/dev/install-DESTINATION-genex.rst | 5 - Help/release/dev/link-implicit-libs-full-path.rst | 6 - Help/release/dev/makefile-DELETE_ON_ERROR.rst | 7 - .../release/dev/makefile-progress-improvements.rst | 7 - Help/release/dev/mingw-compile-features.rst | 6 - Help/release/dev/mingw-no-find_library-dll.rst | 8 - Help/release/dev/ninja-require-byproducts.rst | 9 - .../dev/remove-DEFINITIONS-directory-property.rst | 6 - Help/release/dev/rpm_package_architecture.rst | 6 - Help/release/dev/run-include-what-you-use.rst | 8 - Help/release/dev/tar-write-format.rst | 6 - Help/release/dev/target-language-genex.rst | 9 - Help/release/dev/vs-install-in-default-build.rst | 7 - Help/release/dev/vs-xaml.rst | 6 - Help/release/dev/vs10-no-macros.rst | 9 - Help/release/dev/vs6-deprecate.rst | 5 - Help/release/dev/vs7-OutputDirectory.rst | 10 - Help/release/dev/vs70-deprecate.rst | 5 - Help/release/dev/wix-shortcut-properties.rst | 9 - Help/release/dev/xcode-attribute-genex.rst | 5 - Help/release/dev/xcode-xctest.rst | 6 - Help/release/index.rst | 1 + 56 files changed, 294 insertions(+), 363 deletions(-) create mode 100644 Help/release/3.3.rst delete mode 100644 Help/release/dev/ExternalData-no-symlinks.rst delete mode 100644 Help/release/dev/ExternalData-recursive-match.rst delete mode 100644 Help/release/dev/ExternalData-url-algo-map.rst delete mode 100644 Help/release/dev/ExternalProject-byproducts-tokens.rst delete mode 100644 Help/release/dev/ExternalProject-genex.rst delete mode 100644 Help/release/dev/FPHSA-ExactCase-name.rst delete mode 100644 Help/release/dev/FindBoost-per-config-libraries.rst delete mode 100644 Help/release/dev/FindCUDA-StaticRuntime.rst delete mode 100644 Help/release/dev/FindMatlab-rewrite.rst delete mode 100644 Help/release/dev/InstallRequiredSystemLibraries-COMPONENT.rst delete mode 100644 Help/release/dev/UseSWIG-no-MAIN_DEPENDENCY.rst delete mode 100644 Help/release/dev/add-CheckFortranCompilerFlag.rst delete mode 100644 Help/release/dev/add-GreenHills-MULTI-generator.rst delete mode 100644 Help/release/dev/add_dependencies-INTERFACE-libraries.rst delete mode 100644 Help/release/dev/cmake-gui-osx-install-command-line.rst delete mode 100644 Help/release/dev/compiler-version-Fortran.rst delete mode 100644 Help/release/dev/cpack-deb-component-auto-discovery.rst delete mode 100644 Help/release/dev/cpack-deb-component-dependencies.rst delete mode 100644 Help/release/dev/cpack-ifw-updates.rst delete mode 100644 Help/release/dev/cpack-rpm-basic-symlink-handling.rst delete mode 100644 Help/release/dev/cpack-rpm-refactored-file-listing.rst delete mode 100644 Help/release/dev/ctest-no-make-i.rst delete mode 100644 Help/release/dev/ctest-repeat-until-fail.rst delete mode 100644 Help/release/dev/disallow-install-of-export.rst delete mode 100644 Help/release/dev/emulator-property.rst delete mode 100644 Help/release/dev/execute_process-merge-output.rst delete mode 100644 Help/release/dev/export-interface-source-files.rst delete mode 100644 Help/release/dev/extend-visibility-properties.rst delete mode 100644 Help/release/dev/file-globbing-directory-listing.rst delete mode 100644 Help/release/dev/find-command-prefix-from-PATH.rst delete mode 100644 Help/release/dev/find_package-no-cmake-gui-paths.rst delete mode 100644 Help/release/dev/gcov-module-coverage-exclude.rst delete mode 100644 Help/release/dev/if-IN_LIST.rst delete mode 100644 Help/release/dev/install-DESTINATION-genex.rst delete mode 100644 Help/release/dev/link-implicit-libs-full-path.rst delete mode 100644 Help/release/dev/makefile-DELETE_ON_ERROR.rst delete mode 100644 Help/release/dev/makefile-progress-improvements.rst delete mode 100644 Help/release/dev/mingw-compile-features.rst delete mode 100644 Help/release/dev/mingw-no-find_library-dll.rst delete mode 100644 Help/release/dev/ninja-require-byproducts.rst delete mode 100644 Help/release/dev/remove-DEFINITIONS-directory-property.rst delete mode 100644 Help/release/dev/rpm_package_architecture.rst delete mode 100644 Help/release/dev/run-include-what-you-use.rst delete mode 100644 Help/release/dev/tar-write-format.rst delete mode 100644 Help/release/dev/target-language-genex.rst delete mode 100644 Help/release/dev/vs-install-in-default-build.rst delete mode 100644 Help/release/dev/vs-xaml.rst delete mode 100644 Help/release/dev/vs10-no-macros.rst delete mode 100644 Help/release/dev/vs6-deprecate.rst delete mode 100644 Help/release/dev/vs7-OutputDirectory.rst delete mode 100644 Help/release/dev/vs70-deprecate.rst delete mode 100644 Help/release/dev/wix-shortcut-properties.rst delete mode 100644 Help/release/dev/xcode-attribute-genex.rst delete mode 100644 Help/release/dev/xcode-xctest.rst hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 11:11:53 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 11:11:53 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-3297-g3ccd5f4 Message-ID: <20150602151153.111EAAEC3F@public.kitware.com> 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 3ccd5f4099aa63d7a0dc09f6e8f7143a697335aa (commit) via a6916a6c6e397bda8b381f65dbfc59d3c52f8525 (commit) from 26069d516883b7487f0bc43a495d4420bd061ce3 (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=3ccd5f4099aa63d7a0dc09f6e8f7143a697335aa commit 3ccd5f4099aa63d7a0dc09f6e8f7143a697335aa Merge: 26069d5 a6916a6 Author: Brad King AuthorDate: Tue Jun 2 11:11:45 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 11:11:45 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From cmake-commits at cmake.org Tue Jun 2 11:25:46 2015 From: cmake-commits at cmake.org (cmake-commits at cmake.org) Date: Tue, 2 Jun 2015 11:25:46 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1388-gd3bb5da Message-ID: <20150602152546.4619FB02CE@public.kitware.com> 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, master has been updated via d3bb5da9294ddbfcc5fddf7ba3dafd2c3e0b32b2 (commit) via 4a96a4e3bead6dfbcdfc7953739f2cd135c1af0c (commit) via c2cb80cbfa25eb5d6e054693ebd18e74bd7c8b75 (commit) via 9805fd90af96f5d1ad98c8dc13cfa0b2ce703d22 (commit) from a6916a6c6e397bda8b381f65dbfc59d3c52f8525 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Utilities/Release/upload_release.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From cmake-commits at cmake.org Tue Jun 2 11:25:49 2015 From: cmake-commits at cmake.org (cmake-commits at cmake.org) Date: Tue, 2 Jun 2015 11:25:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1389-g219c12f Message-ID: <20150602152549.ED7FFB02D6@public.kitware.com> 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 discards 3ccd5f4099aa63d7a0dc09f6e8f7143a697335aa (commit) discards 26069d516883b7487f0bc43a495d4420bd061ce3 (commit) discards de58af455ae2a6c078502470b83c043d2376fb8a (commit) discards 316232d5f5957182ab9baed2c05d91f1e6c59a4a (commit) discards fb0cbafbcb0637050489ac52dc3fa6dc450c7fac (commit) discards c532ec17a678b16888d375ded86c88bd3ed5fd17 (commit) discards fbd1d93aa31fffe4575b2cf7f9c5a5a5fde328b5 (commit) discards 952349dd2c8da06810871801e7f03d0e85eb548e (commit) discards d8ada560d08b0e4591701e31e295c38f639042a6 (commit) discards 2b3579cacf628d83a3c715087b81c4fe22785fe7 (commit) discards ce8abdf145ae5d8dd4ec232fa4b25fd21c5f3f4c (commit) discards 15074cd72e26b94d69f8bb4cf450e1bf2d45dc35 (commit) discards 6593ccfcbe91e8958525e730f1f4b1b869bbc195 (commit) discards 32264d3930f4c38d08eadecbbf6ef6161a38a541 (commit) discards 60d6f66fb2bdd8bded288a6f28549c2aa80a59c8 (commit) discards 4bfcad0d9156e20761fcb8ef630eee4885d34371 (commit) discards 419cba0e392565b3d24c0be7a4d7a27416df0075 (commit) discards d3d2ded3f8a4fc117241b2212a5fd6b9bb616a3c (commit) discards aaa9af32fa233cb1497c65e912ea3d27c3dcf430 (commit) discards 238e6ce77a316468f712e9ace25290bae10a8a10 (commit) discards 2693c45e6237acba2514626ae794386f0a63525e (commit) discards 820c7e29699a0e13d79ee410afa85dd73b3b951c (commit) discards ef586dcdca725f32b803692730554430bb708290 (commit) discards 4bb795b709ebbd2b53d841bb810f4d1a7e6505aa (commit) discards e932b3553022e6b023c40b0a207f3e16e409dd30 (commit) discards d1e4b3b68b6e948760360215b940d880cc5d6ce4 (commit) discards 028945de180d4dabb37a49264b4aecad0cb26400 (commit) discards e9c8f66b3d7800d8db5129a666dcf9849c167ed1 (commit) discards 9a9d15cc2be5a314e3156f2e7b2a173cc9b4f4e1 (commit) discards f30279f35efef676c3dd74a69b05a91fc7692123 (commit) discards 3fe80b57b9a77313dc26330b2083643160def2c4 (commit) discards 1951bec46f981e3beed0b18e387088d0c82a5fd0 (commit) discards 5625271616535213d22410b64f0b944afeb28d2a (commit) discards c164bc554eb625417c71beb67d69db000a13e234 (commit) discards a2415d273a9792d50b4dbca3fefd52d07cbf1dda (commit) discards 4555dd8042e869a77fe56d3b43fae5452649b31f (commit) discards fb154f79c274e74e2dc09bc175a1ed04d113cbdd (commit) discards 2dfcdbca844d06f74acc2f0a03d0cb5fed351dfd (commit) discards aec6c3aa35d918214f2ab520c1cba3bca9067f27 (commit) discards 9fbc01e6bf14bad5f8e1140741275dcd9b5c8aef (commit) discards 11716a5999b1fc2204102e9116e5d13b9c47e8fd (commit) discards 549946624eb85c6f5e2920f1ac364295f0e4b3a7 (commit) discards 81b2968c2ae1cff73b0dc7a3c74e9708dab53ea8 (commit) discards 2c12deb03da59abb4433c5e13491341114a9857f (commit) discards 44fefcc3ea4ce22c61c4edac0fb1b85696fecd2f (commit) discards dbbce05da70633018c2a9fb31cea7d72e3c15110 (commit) discards 14303e4fa55e1613068e74e5f0e09714c0a3560a (commit) discards 91b38b03a0c165252844d519033b61e0195c3671 (commit) discards eec5e6a0bb9366b80fa41c28d0ec72670fb0093d (commit) discards cc8092a32bab70c597123c7fc58c1167231ebc6e (commit) discards 2497683f9acdadc5b9548d4f91a1cfb18da20dc4 (commit) discards 70d7dc772457037dcb52c3cd02b1e84d4593ab46 (commit) discards dc2b576ac6b353f074ce9a9b3786dc56236c69ca (commit) discards 092509a458d0a6347e91fd111e8f48e6ac288370 (commit) discards 9c6f853a5d0a7d93ac22ca2beaabd0e43f277982 (commit) discards 4a5e61bd12fb0c5b78342a89af3856dc1f484295 (commit) discards afff20266e5ceeb609a0ed73615e9cb8d0d3dd15 (commit) discards d55f4683b3267f9ab5a3dead5a663188d8e543bf (commit) discards 3e0ebd632ba8636b5a7f4c38d07c9e1839e521c1 (commit) discards 87f515e3c7f2ed6a81cbda01a7bb839704fc649a (commit) discards f6142936aefd2952cb3958951d53d0e512acaf7f (commit) discards 2a56aad9e9d84f5b6e64bfa0a2d422866a121cef (commit) discards 5c72b42b7b79a491ab89d625feacce149724128a (commit) discards 2b8686c4269fe0e2bf37371646bebfbdec7a29b9 (commit) discards 2249925931f659b47cb97824e6b315aa5e432310 (commit) discards b300820b11e3a084bbc85989c29a98b183d00238 (commit) discards 154f87549bf8d68211f0f8b3b98c3fddfbe373c5 (commit) discards 2aafaa7073c8a93c5e75498c7480788878545e6c (commit) discards b3704401400218f764b38a382f8817d2f70f2478 (commit) discards 81cc71b5385fc9e50e5b7151faa79befcbc13326 (commit) discards acd20f46b3e87af03da49b9337272e3b1297b4ba (commit) discards b9a2166437958b8f46814c6c50892850fff3ba59 (commit) discards c7b4f59b1917ff01ee43ea651068d5e681d103d7 (commit) discards f70d8830781b909e5171e41940fcc60248a60bf9 (commit) discards 7c11e23e8b6eabbcdf6f0829e0439c1ec07cf7cb (commit) discards 1a8adc58f0654430a5a3851d14da6578fa9cfd25 (commit) discards 2367aed971817eea25a4a165047145fa76a1c3d8 (commit) discards 17e19fd8102b1b37f8dd15be5b4bf089f8ce75d3 (commit) discards 8cb976712c17ba06cf292e9cdf749e2eea3d2d13 (commit) discards 58156dafefefc35bded48901ba58a41df8d061ab (commit) discards 0b040fd59e7a21dffa1b70897592e354c0d42e9e (commit) discards e6a7fa6cb120f382ecbd14b6e6be49fc41f9ba6b (commit) discards b771083a698d9af4d062b04772d524679dbe36ba (commit) discards 950f10cad9cf1b17ced2f463969b9744b47ea804 (commit) discards ee86e34d2f3f67a2634c4e7f5d21cb6389cd094a (commit) discards 1a35e2177ac61046dba54695682cfc4f22a01ea5 (commit) discards 77c60a3ed4aac2760f99236c1fff4b5b3b718aa9 (commit) discards 58fbdd85690249732f1e667ad82b6aab12076ac7 (commit) discards fe0e213632010d053bbe2ad4772ececc33fe5632 (commit) discards 55b8af593d767272456c482cf80c9024155169ff (commit) discards 07b8f7177d24426144341429aa0b5d8e27e88c92 (commit) discards 005f19b24963517527257d6bced186ee02ec430d (commit) discards c02879610a70e60a21d48255432c733f851a3e65 (commit) discards 3b054058249917aa9a620744ad1e3e03f7771994 (commit) discards ad48a9c53f3878a275e2ea51d2a018fb370f0dd9 (commit) discards c8f04bed6f4d6b80b9e786cbbcee4061b3bad99a (commit) discards 9df31719fefc33cefb508241dbb0bf474f6d93e0 (commit) discards 9e4247a1260df25e77e28ef0045cb96149fc9789 (commit) discards 8a0487de60e766ffdc052ae4c81a86b9cf3afae6 (commit) discards 9770e7f7828605a3bbaff67f2ff1f75eb5f6bc1f (commit) discards 60c594fd39a132157b86f1837600caa61b7ad907 (commit) discards 4ea4b249dd75bc7198535cc1b89d87fa449c5f10 (commit) discards 8c1580c8b30efdc84f8252d5a8b233420ca362ba (commit) discards a2c9a6f1c94734784aa4ac5fe30665bee06edea4 (commit) discards d36d378d65a6640633a3cb1ea6f67bc67dd38989 (commit) discards b54cc5fc32af27886b12d04d715792c2995c0db0 (commit) discards c23512967704403b91a7887da97153cd50b6f70a (commit) discards 9f5730d181bf686e829b4d322eb9763cd7914609 (commit) discards 875ef0f9ec7c94d79a221367a28968f360c5a573 (commit) discards b83c81cd68d3acadc7b49d62be4235d239e918ff (commit) discards 062e1c69aa4ce55ca94cf33d68e26e4a685ec5ef (commit) discards 0ddf23cfaaa5c4da850129b0678c6169e870cca4 (commit) discards 64a797f3328dfc6156576b794eec72942215e71a (commit) discards 641b4fe0f388c71c904f2ea2a9353a1b97d71912 (commit) discards 363b61c72929985373f63d6a5dc61612b66c82ff (commit) discards 74a835d02a02789a8a53395eb64c812ca98f2415 (commit) discards 85ad7c9491fbefc7287fe34297493b5499486413 (commit) discards c33c7865149cea87518070028cbb41107bb2afeb (commit) discards 5ce2b7bc2440704fe3da358bc5a27d2f9de9df89 (commit) discards 775d940e37b83dfed3414cd886306675f66d1984 (commit) discards 81ccca34199c4fc2bfed287c94af08910eb06d66 (commit) discards 547dfa8b1b7551c55d320da339cd10a7f0a587a6 (commit) discards b3fe4c5ab4028294418cbb99192d8204a9a7626a (commit) discards 43e5af801205dfa3acde29a47e16b18427c7c080 (commit) discards 4137baa4331d7cf7359870682fdd06cb7c0ac529 (commit) discards 459c03d185016f40cbcac1c024719d6c6a14db68 (commit) discards ec41ea7f997c56cfb8f07e1c8f95209545b8378d (commit) discards 5dba43bdcf386dfdc6f1697138926f5945e78ce6 (commit) discards d4cac214dac01aa5dde668b592d8b800b168c246 (commit) discards d2a981afa7e038dfb44e2643e263f089bfd12541 (commit) discards 75e071117161e8e01a5fd3144279f276dcf8f1a1 (commit) discards a6edb953434166e3b539a020c31d825457eb4aa6 (commit) discards 65d0930ef5fffaf0538f4be23c8d6bc933964f82 (commit) discards 726bee71d6bffe8a878ebad4f7ae2c10716fe76a (commit) discards 38d55c7ccbd0dddbf12592cc55730a854ea4d9a4 (commit) discards 8070c4f252293e7dfe44fd2c53d5d7498b307c67 (commit) discards dc7377cb0c319462ec1830e3ea43d6bb2b38f99c (commit) discards 482438b97ac5d5be76cbb457c6187478a5fa50dd (commit) discards 831e03dd36b80a02cd47bbb0aa9a17b46306f799 (commit) discards a17f3b295d1ce7f8135cbb4ed823a1a92aacff41 (commit) discards 0dfb62aa31d17de06f118322572f3a53df6b4f30 (commit) discards 08eed49eb94d1b9851decc0828f7b56a36a68380 (commit) discards 83f6859165e52c56418cd400fee01676c6298420 (commit) discards 87544745d36718e76ed8a074f718f5d8923230b6 (commit) discards 9cd31962d5c683cb8b7a08169af356685f581b16 (commit) discards 8bd3ff78566cfae73207a6609215f8e7f25ce88d (commit) discards 6e7f5313aae143287e158b1e1d38765b85fcf291 (commit) discards 0d937f5043e38fbab232ef2aa88e0b07d56264d7 (commit) discards abcab61f7ec66715040b67fb42b04aec43cdff92 (commit) discards 86ad0abe63dadf14f565bf600fe0483e7cdb5540 (commit) discards 22ba7f85f56861954b3a9cda1e55c5d7b77071cc (commit) discards ae9c78f37c2666943f5686ed4cf325efb2d3e75b (commit) discards 45073513a283ab318fc0a5cd9a63cb3999dcfec3 (commit) discards db8df7a62542203d0f85c4d5321ec873919e1a83 (commit) discards 129a73837a9fdec709dd8224490500d6840b3853 (commit) discards 7abe72ae66bc1ed60c7f843937a1de1b7e45d8e4 (commit) discards ef72976841a259e82ee93d90ff7f4b6389a923f7 (commit) discards 902e96a835b1050264eba52e4fac46dd3a23bc3f (commit) discards 81d579b970b4ff4f71102cd9659c901bcf9ab2a5 (commit) discards 77cc6b6b8aa78b7e5ad2df9b22e8cbf638dcd826 (commit) discards 3b9c6ba178b265e2598ea7c740dcb732f47735e8 (commit) discards b5a2ad0f4858268af2e35baf3a10e830aebb80c0 (commit) discards d4c2b34364c34552df0f2255460b60cb1e73fb16 (commit) discards acf7df3088066229562515726683671e9cb48a16 (commit) discards 2a5d1fddf43b39fa2da632285321d4a120e97118 (commit) discards ad005f812a454356e78def29b48647d50fbb1753 (commit) discards 56e20260aa6862f8b049a09be9ecfc068f2c217c (commit) discards 4580bb389a0d8c07fe3227fc56ed6b666d390cc3 (commit) discards 13f4e9c2a2185a7b94b3138e42cb9e0ca9d4f86a (commit) discards ce25b376f4cbead1d5a2e548521d2893f1f0bed6 (commit) discards f7a1e92e391e27ae6bbb79b348abe87562bfc57d (commit) discards d3392fe0e5270706d0f4675b1a6c760b85d80834 (commit) discards 56ee9bf1e56849ded47fbaec61f77575ba82e5f0 (commit) discards 5f931e3ffc67260cf9224cbe6684e44aeb602e79 (commit) discards 9e0c536efd015446a8f9178be6bcb7534c7c0564 (commit) discards 012357cb2cf255aec304905901cf6806849d94b3 (commit) discards da9dddb09020e1dbeb6ec4d29bf9d97ec796102e (commit) discards ad7afbeca3d8140568f671ec488105a4ff07feb2 (commit) discards 52db3de85d7df7a71d3348363a64a0c0406c1c14 (commit) discards 9b6cf1d013e8ebdc33728fc78af011f39b6fbe6c (commit) discards 10b353d5796d2ba4b4c79a06e3c6a5ad38df155f (commit) discards 164df3946fc37b3a834370e55cec7ff3b886c624 (commit) discards 4e30526b9ed97d1a9375ea4ae57fe677890f7567 (commit) discards d9381a207a516d678a4b634cafb239a36bdda899 (commit) discards 6feef66310f6d2cfaeea7b70eed20a0307d0157e (commit) discards 1029d38f60408ac8c3fe73530b1f889b440361b2 (commit) discards cc09c58ab42f812b2d72296246efbc52fb879a10 (commit) discards 0b8581c3b6e73f9d2ed23918ef354913061a433a (commit) discards e6a4f19642004c0701c268547afa89489fc8516f (commit) discards 6e9fe23eb44d3da68d8ca4b75e821681a7b1b23e (commit) discards b804271ff51f04359d95df453bebcf7dbb7eaa7a (commit) discards 7ad83ea973a81339a6a1cf2ad82410b955c0329d (commit) discards bafa2c57c09c521f3272c7de00cfad408119a905 (commit) discards 61857575f8e2ddebe93cc48b9cc0901fd01640d6 (commit) discards 04d08d4da99cd14aa6cbb5086850cda25df72c6b (commit) discards c584e645510a63d04c21d768c2ba9ebaa919e843 (commit) discards 840c320123ef52838c7a63f17b890133f39dd7b2 (commit) discards 394e783dec0bdad2e7c276d9d061370f0046989e (commit) discards 8f719c58fbd5787cb5d7af39a042859ac2753a12 (commit) discards 0bf0824211883e7d1e652de1f7c85e1563ce2513 (commit) discards 69ad6cbdeb72d03e60437908be01ced30dd8ac6a (commit) discards 92146f3eeb0174900312d9aef52024abb3cb637c (commit) discards 7af5a973ca97a95158a4c7e0c9f454c1a217cf40 (commit) discards 5d08782016e1c0191b4bd8f85270e63f80f76486 (commit) discards 8c0ef47a4188b61bc07f8adb031af6a826aa500c (commit) discards 38d67d676db5ee4e11f02a368abb4c35e6b8bf05 (commit) discards f5c8a9797b7d0efb79566c1ef3014bc08e7a92bc (commit) discards 12a8c343865c8824578802fc8faeac16b9eff7d9 (commit) discards 96013784f66155d2e6cf623b1da16be3baa139f6 (commit) discards eaa33f817e5ea0f92686ce5268b5cd59a02f2ddf (commit) discards 606330f6d0ca88721d68bd4947993e17efcd064e (commit) discards 65738b09d9e4e736fd63d84b57984370d8a97e5e (commit) discards b79bc1a0f8405ad8bd21e1eae916e96a67960cfe (commit) discards a3f3c5a3f1ae7fdce07a54167c0f6c58dd56d84a (commit) discards 9ecddf1370e1228767379dc2941112ffa2713c66 (commit) discards e22a58540fb5039b9dad09668de6a307269d763a (commit) discards 818574d128ea4a93c13457c9e7b2461f7980289e (commit) discards 2cf25b949bd3fd8a59aa1cbfc75ad171318d059d (commit) discards 8b14b7c8f1f260da9bc489ac35ef41f4b34a198e (commit) discards 3a9eb61e36d44fd60d9e5b71a0dfb3772169c97c (commit) discards 8c346e25f8d78ebb153ba8e5f26386e3c94dc876 (commit) discards 12044ae4c1588f3e2b02dbf918c2c16084e5f6e5 (commit) discards 7d8c677e38166279ad8ba6a54c355fea84c0a8d4 (commit) discards 48577790e5ec094ad1ff036dbe1302a628cdcd3b (commit) discards 280371713e58ba5b9c1677e01ed4fc5f6507b4e3 (commit) discards 8f218be1dd64f0e02d8f89b9f99e5ae7ae2f8cbc (commit) discards f8d8d169a06a51c12bebb65784550e834f37afbc (commit) discards 054dedef890e28431fc49d03afd526c721766b79 (commit) discards 4005d8dddfb923987a13f349af207fdf305f5b55 (commit) discards 9417c0499d72f7e9f949e1fd7706a9c3bb0d02ce (commit) discards 6e17764a2f4ecbf2c0e72712f1e38a4dc8e74116 (commit) discards 073f474790cc34b3953c69aa052003fd9f6714ae (commit) discards ff6232c9e2a43649daec4de8b10b0e22746f2d19 (commit) discards 2f2288d9fd2de46815b05e839f0680b0dece2dee (commit) discards 3b76090414c5fb960f738ee0cb7ede0e1a47e3ef (commit) discards f07c7effa5c1888374a90181c5e303828bc70760 (commit) discards a4a8e7366fafb1c8feaca598c7180ff1df15b5d2 (commit) discards 2b4f9957523d40e84879d86d2ffd836a3b51c5b1 (commit) discards f2cb944d38c7ea9cf8f64a09131fe7f9b04af437 (commit) discards 8a768abeacbefa4dcd013c06a7777d82d984c20c (commit) discards 5fb92c66dade94a0744993face1a704721c8b57c (commit) discards 73a63365f37dd07676c4899b2e51e0922e2f3366 (commit) discards 5ac2dab71def9ef70220c44cbea3654287fe83a8 (commit) discards 88660e965fe31e4083893fedaac3ddf5d4cf305f (commit) discards 43b7b6d884d0ff2b6c62c607fbb4d843eaa0eb6b (commit) discards 69ef42c50a317ce1afdfbc51faa8f1ab8e6f3d0f (commit) discards 3508f2c3fe8b66c7b4118272bf7baa1b7822eb11 (commit) discards 5957fd1b7fbb2f7fcbc934ea9689d8b00bd814c7 (commit) discards ad38a97a95003ba2d3c96393594889d008b5b9bc (commit) discards 989e99aab493e192c493bab34904b28eb011d090 (commit) discards 41a7abdfab1d859e23369e46dbfda2a4c4db9a18 (commit) discards 69a3fa70870935a66477e0acb45035412eafb935 (commit) discards 9fe551e023afd1814388aada237e9117bb78b009 (commit) discards 9c01dfad92696257be91ec8eddfa499dea29b18e (commit) discards f963a9aed2d57212997800e502c99f0e21fdc64c (commit) discards cab6f4ddb2ec0ccfcd8bde4c47f7ea8347d38781 (commit) discards e37932b1c94a101d582d0fdf33e52f32b09fdc12 (commit) discards e185da5ce35481dcd8c5624e47ee5dabf4a9a813 (commit) discards ce30416e18dd26145a89ecb04dd2326695a60420 (commit) discards 180c07e81352fb3117b5da2369ba4c5659f4481c (commit) discards 7603e184ebeb2c7f8f73a6ce44aa99223db461ce (commit) discards 05f39982078dfb0e97393b64a0f0cfde1b07ceae (commit) discards 6655d593788ce3ed12c5c6874e32baa58cd5fb92 (commit) discards b5a344b6e9e285a32afaa98bc5bb9a00e4358be6 (commit) discards f81b56b01dc792e6c1b7c2fb5792c0f92914429c (commit) discards 9a1194af61c14a0b42cdfab0209f29ee026af43f (commit) discards 6eec010f5a637715db17c874efa17dbbe61f63e2 (commit) discards 903748dabb62d6fbfa3c3079218daed3004f54d7 (commit) discards 6c282c29b6baeb7c215e09ab53560342f2db3ef2 (commit) discards 4654cc12a442c6ab97fef68c39536e053861e0cd (commit) discards d2be73db832aa31c9793e825fca3e5592a3990d1 (commit) discards 20e6ff51e4821ec45cd3b1b67c7112634399cad7 (commit) discards 402c1269a58478cd00a229e3f8fd183ce0162f99 (commit) discards b22f3b61aa46695117c72dc34fa41a73348965d8 (commit) discards 3447f83e94a958bc5458a8756355201b24acf93e (commit) discards e9d726b1c5f584c0e475b86e09d433c5f22b5cac (commit) discards 9a19e0d8835c72583ee7e66153e378f7308f9a33 (commit) discards c7f27f4471b1916a6b71b6c7205864fa9a4d9f64 (commit) discards 2b5d3706ddb22a5eb9e9359994e1f374d4681c2d (commit) discards 3a019101452d94fd9f4a5aafbc10dbbdc1afede9 (commit) discards 68d739ea92154d4abd0aac2f510fb4c1b4ee466f (commit) discards 7947734ed51b75b43bd64ec726c29cd2b4de6dec (commit) discards 5e605600450a5b7868c97a88d9198452e1f53156 (commit) discards 5e3b935f7b7fccc4b746976de86ea3ef43911cb7 (commit) discards 339105e26389bdd7fe38dfc28ab8f4d89e77a4b7 (commit) discards a261ab6622d55899d9f116b63102e0225eeec562 (commit) discards 5071ccbe4ff187365d2e4b01a7be8ce7dbcd4f1f (commit) discards 7d6b86ff199a86819a18fa620689e7aaa6ed3be0 (commit) discards 074daad8a6340ad5133019395b3ca6e65032cf16 (commit) discards 5ffbe5dc1a4dcab4616909727f439032aaa48608 (commit) discards 8fc108ed1454a5fb87208d81aea3de632b8b5d5b (commit) discards 58ed6bf4ea9f6aa4fd5119c53b5b2b86922c7afa (commit) discards b19b7dde4e693b485bdcffd4d58d1efa177b9e3c (commit) discards 0964c7ad069e048da08a1d9ad1dd32a90846f11c (commit) discards d1f245a66d532a8719dae261a54543f2ee05c81b (commit) discards 51dc89db9f08953ad0ffadb0af4ffea2a456835d (commit) discards e458c47acbad68e65c19faa9d5ade5a02e1a88d3 (commit) discards 527a28dff061def2ef8918884abdf6980b0d340f (commit) discards bacf4c5f17523f16e7ca296213be6c2586e58a84 (commit) discards b559f0db95d644012d461dbeaaa77eb597912bb7 (commit) discards f9b1f6089335f87884716dd6cb3e148fd8a2268d (commit) discards d39cf8c243ba71779b91237daff118d5f36ce615 (commit) discards 7d2ed55a9a97ac60ef328439f8990a7004b5eb62 (commit) discards 313bbc25a91de10eda98d006341fe2a6fc5a5f1b (commit) discards 76f0c560fbbfa31b0868c6acedb9c32890529c69 (commit) discards 07d66feed56f99707914506ea25c29873864ae7e (commit) discards bf8006289d472aaf9404cba01c0935e4a1aa8ec9 (commit) discards 00e2021be898b03f53de7308eebea4acb13f884d (commit) discards 210f07bf40a9261667bd986dadc42bef3881757a (commit) discards f57ed15dfec6c7e6517f6218a82cd595a4cf5302 (commit) discards 0dfd6b239219e5ead41749de958743ff1f49353b (commit) discards 2a21dde89029b34ec46d7f2abdb74310042f7c5a (commit) discards 6b5cb9289b4d9d5918159a53c870ea9f84cc9e02 (commit) discards d323bfaf8284f2b16474fb3794b23b3b57e5b653 (commit) discards 5c2524334f83eab94d73dd10dc630f71a6892592 (commit) discards 8d55f802870a31cc053fe55a5ec0ea630c1b647f (commit) discards 227ca70895241d98aa6a5bc480290968692ad8c4 (commit) discards 00d5f20395866c70ed04842685290554d97daf64 (commit) discards 7699ce070dfdaad748f6274cd3c03efe96951c64 (commit) discards cb96996cfef31f71e2a9443897369cdeab79728c (commit) discards e1f35f1fd2dc620b9f8e030e2daa960dc2908222 (commit) discards 355a81aed21eaa1a8ba74c981624501344157109 (commit) discards f79d60255ecdefd51750aed1f2fcc86df280c984 (commit) discards 9974c7a0ee2db94a12bcc432b8316aaaaaaa5b68 (commit) discards e446de702c6c4585b387f5127c299092826fad34 (commit) discards 85333e13fc6b2089d9540069d1a9f4bf216f6894 (commit) discards 472df2c2b26005bd9f74f26ddfbbf3a8eef0e366 (commit) discards caeaa501f6cd24c2031432aeddbd54fddb012020 (commit) discards 10da37a3b26a699b3f501057b8657735a8c2a533 (commit) discards daa2cea6bf30161ac41157db26edf98c05d2e79c (commit) discards 83449832ed0c7c52987d734abc55ddbcb5ede991 (commit) discards 13e86829073482237617637c644b073a6f3300c5 (commit) discards 69a600d4d9adc582523ac8888f5c83abbb989461 (commit) discards 4283712685e5e31ff05db587ea7cfcfdc203f447 (commit) discards 1b28de9174cb01ffc2fea5097208a2210934adde (commit) discards 58d6709e64d3ae061da2b9db49ce9d884a77e654 (commit) discards aa546d6efa4af4d61fd216f2cb5acc6e0ab6ea95 (commit) discards 947cd7ebde863c9fdb1c55f7dcf8e07d489b739e (commit) discards 4951e2a3a8edc6af8080bf31978acef9f06e0e4a (commit) discards c11507340c4ad35367634868734beef320422ec9 (commit) discards 5ccac647e88eb5dabd10dd3a2bed3a3a5fd5b21e (commit) discards 9cdd1cc2bbf8bec3062b52eaf86cc52ff5f7ad2a (commit) discards bf646a167e3ce90f869494ba74413deaaa457026 (commit) discards cf743f5f8b1aa3403410ffe0d9fe16e75fc18014 (commit) discards af88f0632a1efcc421562859580e3589cd36011c (commit) discards cfb2eca185fd2523a8889484abc9859f33b1eb51 (commit) discards 27d3244480a208f7939a0d88e746cafe76397d58 (commit) discards 93aad74a0ef9c9ae887b51891c3a9cf247bfc1ea (commit) discards 0d6029c3e007a1fb308dc313fe6b08b49587bade (commit) discards 3f77538ad3d984d341f515ebb725a01bbb437e0b (commit) discards eefab19dc8f52df10efe4caa37b7c4fad61f0734 (commit) discards 3f300b7ee3b0d7b30137fee2b284c27e05b152af (commit) discards db477914cb4ca2d41945e4e300801e7270a4d51d (commit) discards 6471255da43c7827a2149056aafce3ee42debbbd (commit) discards 1bb3a3a75f2b3dce80cce6fbaaf8eaab28f1ae81 (commit) discards 0a445a5999fb25bf876f18c022420344f6e70905 (commit) discards e2509e5a9a54c6321fd603a8d620b0a65b1dcf95 (commit) discards eba9048f30279fb638403c9be425e1fadff4d837 (commit) discards 8454123db3deda444cfc741493a19e50fb7f87ec (commit) discards ab02c090a029380e99984148fae4386e9a08d701 (commit) discards b75c95cefe9793576a56f16ec4edc865ae68371a (commit) discards 9d6b955390f91f4c095689d085c24d865993f25d (commit) discards 27ffcfc50e8c3319cec3c752cce976b2c75ceae5 (commit) discards 7335b4fdee8363f233f83f5937c0ecd3113c330d (commit) discards aa50e267759ffc1564c9a93c0cb6aa23d5fb4a1e (commit) discards e2723d54d7bb740a1e7dc298b61348c4420f2bce (commit) discards 7ca1bb2935a32a6cbed91ecca271e40e975b8761 (commit) discards 219abbcf5fcbb9982e5881f69d87130a7dc9133c (commit) discards 18af65b56d609acd43678cde7b2b989c0b37fd9c (commit) discards 3a09fca549b994de65b19adaae68b37164eb9317 (commit) discards 6139efe62ff057a9d1eb2394e8ca300851003e66 (commit) discards 989309ef5e7c60e7a04bfc7d8a9a54154bd18928 (commit) discards d4fb98f23ae1d83ad732f36f03f40e6303e512d4 (commit) discards eb0888e215eb8e5dd8174f1432fcb3289ee79630 (commit) discards fa218542e7682a92c83ad4430694ee54f4a723df (commit) discards 029ca26925a8233be9696e1b414f48e4e116702d (commit) discards 74e9daafbd5473099394bdcb4c86afaea834864a (commit) discards ef9e39a1cca51551a755cdeeebbaaf2c73708dff (commit) discards 28b1e89eb7c05634610d4ec1f38c8fa27877d200 (commit) discards 397cd9f9e643b01f271b796403d39443422b6a1a (commit) discards 7d490498bc8156ea5fc66078642268491d44281e (commit) discards 7ec84d7f0f861f49abaa801604bbff2b1518746c (commit) discards d46ef6e9675f427e643ef387d9c60a13bf02fbc8 (commit) discards d186a17dcfc4c5950ccba09408f434dde606af59 (commit) discards fd1cf6da106a1f77e5d7b0c79c1c01677d41385f (commit) discards 0f5c6d89535655a83953b5b58ad8422778736780 (commit) discards 685258b3eca572b5292cadc367cb559c231ab0cc (commit) discards abd6448ad81d3c865c2462a41f965bf5775fc410 (commit) discards 67d888ec916cff125030f00c5770a2cc547ec7cb (commit) discards ffd4c588ef0e205f665f19e1bc9ad241cc757061 (commit) discards d498c8b1b6c98c72208d60f91bfc321e455b0f84 (commit) discards 583be259f60d03db0b74905e4905f93db1bf7cc4 (commit) discards a62900e206b322d127ff0efc07d2d7e6da8ab412 (commit) discards 86d8b40eac87b4b62510761d0d05782cc880e4d3 (commit) discards aff70532bfd39f2e7073d40983506a13ec362410 (commit) discards 6a6fae9caf7d70999db96e4317e62859a53dd5d4 (commit) discards 3b2929cd2d253b02f88112943db9b19b5ff81a9f (commit) discards d4ac41f29ea30f0f66f081cbc6b02906febd1fcb (commit) discards 69bddf1ae02e554645ca96631d1f2741d982170b (commit) discards 76f07b81b3dcb35846cef4b73eb4d67016270ad5 (commit) discards bbda52fdfa4b838fee4391111fa3c0626f747ad8 (commit) discards 062836296c13271047c00490cbc02d64169cc8a0 (commit) discards 1e4f6618dfaac13e70a5b3941daed02c8f989285 (commit) discards ea1db6c43d9709169525ee481670e187b7293273 (commit) discards dcce21d77e98066a420e28a253f112443002e8d0 (commit) discards 6b707e196485bb00397c7152c388de64164f2c09 (commit) discards dd08530978146a806014c6778f472db667899378 (commit) discards 1aa99bb34441cde7954054ed9b24faf25c90ee40 (commit) discards ca021ca377980243db5aea1a503c787d608d0a36 (commit) discards 52d911c79caa96c0a08bf138c2df2dcfd477f388 (commit) discards d63d21bcc422504ad8a783da8d681370f7c3fc28 (commit) discards f963ecf516a5bcbb0350023e32dad672018f549a (commit) discards 5fb6ec642b9b40735405ca5382609521815bb9b0 (commit) discards 3b884afa00e188b449d46d63b694296fc18c4117 (commit) discards 6d2f594648726880be490c95dba19167d0776182 (commit) discards d11003bc7ca3b39924d95ad6f116162501cab449 (commit) discards b270789a64407fdd7084b458e192ab0a7c4e945b (commit) discards 1a63b05ea899cadb7fbba35629321a09d65739fb (commit) discards 9935b34e0fa225edfb2a10b3b1396e21ceb6a588 (commit) discards d0c2eb342927c74c40c9e977b25805cdd9daf3a8 (commit) discards f3e0ba0e2986b80877617b96e3dc9973bb27aaaa (commit) discards 16f8a814c5dc95ee28789e7515d3218e08244463 (commit) discards 9cf7e15e8be12d58d3d257c1ba62df8c2ee4a0d3 (commit) discards a6180fd30f3e33151aebe0b75c049d0fae19186c (commit) discards 3dfa9565ae08bdbc33f387776324c9aee6cdefcb (commit) discards 647a02df5394e4a5f1f78b1588a7e99fc0369009 (commit) discards 40711ca7f849f9d753f8c06a20f54085034c8110 (commit) discards d426a2e46e08f675456048c5b2c321a5ee56f6cc (commit) discards 2d4ccb49a8df14b95ad6f1d23a8683ba72bc6967 (commit) discards 6260e4aecdcd21ed488c93842c0a3a5302f1037f (commit) discards d63bc31e0201c36cc88e51426ff4987ca32b60f2 (commit) discards 98b925cbda5e331a3540d57eebe92cf17b7ff548 (commit) discards a31a392f60a20b1d63e0a58e11915b5778179ccb (commit) discards 00dbdef2b085a6aeffbac2dcd6747df610fd155e (commit) discards 732ff0246956634b57c230beb89e24a3e5772de5 (commit) discards 9f6f51794a94e8f3923f0a29c334f051c65aa7d3 (commit) discards 13b00c09d99dfde1dd4532b269399edffa68b65c (commit) discards 057f51af9a2dbdd015f6c69bbfe72c7a1353730a (commit) discards 062e4b756a2c5eec51b24b1e64ee09f1085f3420 (commit) discards 377f6fe90606d8e62f5d9a004a2b3f9cad2f2cf2 (commit) discards 364469ce9338c1720475425f64d8328e94607880 (commit) discards 091bf33f737f7fc8115eb4c3f066df41dbcebb44 (commit) discards 0626c4790d8cf7ad9dc6734c7969cf843f35c458 (commit) discards 8db3073b3c8b7060b7496f17c2a07ec9cd76e28e (commit) discards 5df60ddaa5828dd92a07174ba95df3fcee4d30f6 (commit) discards ec833cedc31f2693e6f48ac71e5fda36c5cb890e (commit) discards d4bbbbcffc7592c990fe2c64c13eed4550fe48fa (commit) discards 0c801c6963f051c32e0586266539f155a70bd5e3 (commit) discards 5acbe27cf51ba34d34322bd19ac0f32b7ef193d6 (commit) discards ee05c3c80b3cd59f7aeb64aad492587a631d6447 (commit) discards f9d2545cf0853fe05e2351d80c3b580cf8b3df77 (commit) discards c531a8465108aa25d5f5f991c610aad0a844dad6 (commit) discards 23a13fdd62a259587f4098b2cf3a2917812c610c (commit) discards e4a206edc199492f5dc7401675ba13bd74091c87 (commit) discards f4155cb904acf9b99a89712155cb8cd95b67e11e (commit) discards f638d9f80e6bff0d40faaea7b7f8130109c9ce00 (commit) discards 0bc7cc3f85d0db4708e413cc4575da5c36d3d1f5 (commit) discards 801b5203b36a6bdfea0fefc1ee58b77337a79b21 (commit) discards 9fa1bcba9125efa0a379f16d1019c2dde1c2282f (commit) discards 935bc37896af130b31b064df495171411a9d3f0a (commit) discards f94263a8301ac06e154996c849d3090e3c123b39 (commit) discards a4a12f9c4675d2e9145d0311331c06097b4c824b (commit) discards 0bed81bf54997edd23a06b26da55657fe5d4e612 (commit) discards 9ae1c52d935111a7f3ff3acf6ab82fed87ed24b0 (commit) discards dcd76bd58f7876804bd15d96275f9874257e8277 (commit) discards ae9e9fcf50eb6a3731f0edda1c1ee7ea3b719cfd (commit) discards 9945469c38ee662f6106861f3cb6d37c78b40ccc (commit) discards a7850c5498db008be536da8cddb72724743f9011 (commit) discards cab41d4b45334f527c33f0c5daa3ee49a5afb67b (commit) discards 0790bd649365b79f185970978d560da74ebdb1c4 (commit) discards 22e216cda398b3c9a50288020472e6370c241b19 (commit) discards 5430811f5a70a70a786bc764d53d792fa012c167 (commit) discards 7389b399d077f48dbd79d26ecff8d492bfaf82c4 (commit) discards e51402472cb8f61aea30abb4adbf121c273057da (commit) discards ebcfc6f5e941872f18addf2d7d8f8e9f825a8f15 (commit) discards 94f5fc39185102389f719d703906f08c1015c2f7 (commit) discards 7629a8ccab28ee6d6a60e5fb8c89d1e2eb8fc024 (commit) discards a9884e44e9f074b0747bbad4ed926b94f8ffb3d5 (commit) discards bdac4ea191295ca63b6f845ab71df210fb141d4e (commit) discards f1c2f3da46a095710fe02c6dbd27329a10920cd4 (commit) discards c0b9a24927d0b18f0e741b7b64f18b9c7c568c1c (commit) discards d571efa8c321120f030e5f957bf784443feb75ec (commit) discards 2950a5542fc22c205e3b7aafe4ad28a1961c2611 (commit) discards 0e53f739be3692a60e8a47d589d3979c50d7c904 (commit) discards eb861a41fdcfe9f518a949c44c982c4bb6d3b81e (commit) discards 8988d8ee8bf936074e6d94cac643dfd704e86fbd (commit) discards 2334325421903c977c1e8842223629c02269145f (commit) discards 275a0404be55bfdda06346b72d9d30348b5c15bd (commit) discards ab89036c52258f75637adf3f4650a5fbf38f8033 (commit) discards dec28e70dd37e89b6db1daa082ff9be601c3b36b (commit) discards 82a80e5d9e6e4004e6786b38bba550382dfd3f63 (commit) discards 68bc1d79aa57bcd83c8b722a0d6ed45ada711aa9 (commit) discards 92b31f19c1aac58d4e0a33d37f9b3bc3918d7099 (commit) discards a140aa6907b22dd17dbfc66102bbb6a089e4cf9a (commit) discards 8de7d84c36b2519867dca9ca48d1c97512e9a07a (commit) discards b46cb9fe32aee6dde2cefda5c1ec77a8aad6f29a (commit) discards 9273eadea728a0b63fe6acbcc634f5e71083dfaa (commit) discards 8c58c7b825f1e1463f2246b8c273ddc9bd680603 (commit) discards 51662a178929cd6802008b282840077b1f87e61c (commit) discards 76e5bd042ced3dab01e5d2c88a2199f09ca806ae (commit) discards ecd17c8fb7fcc2baba6d6a76467dd3bf1048412a (commit) discards 656579f48975716f16aff00772be4d2ef96a9741 (commit) discards 04f4284837abbcb346ae619dff1b2da3975ea875 (commit) discards 6c49c290da32c1ff7f66ad84ca723ca0bcfe6217 (commit) discards f90f8e3476dc20851df186508314a681558ecf04 (commit) discards e4a3b3e6230a000e30b9daa94f5141ff56154178 (commit) discards 6600cd57f3a6035169ff132a6ab725b606168657 (commit) discards 99af85fc89359e5b2a79e2484d5249b6c3a85af6 (commit) discards 8cc064e37d44d239f16e1de8390713be1968a363 (commit) discards 603942d29753c0c44a1bee603e2cd524d4de6934 (commit) discards 1bef1f55402d3c230c41d3cc6cfa0520ff17e5aa (commit) discards e6c6584e5662e83f7a3e056ae246a1d589085c67 (commit) discards c8dc2648568e81c418c1a012dc6b2a59e8e260cb (commit) discards bfc051e9c4f64b44a145fb277e9877c8d7494441 (commit) discards f76d78db21c68c651ba9cb3017d875cb3ed74f9e (commit) discards 468c2c82ca4123ac9cceb095a91969fbedd63afc (commit) discards ecc1af22936bbe2a6dcd5b7ee8093b279bd3efc1 (commit) discards 5cdda25d677ef502a4e716360888fa52a3ca826b (commit) discards 0243760567b7e05c08e3dd8852b2e6d9152dd7af (commit) discards d4143c8166396ec6d355e99a9bd61e3470dab561 (commit) discards c8367c85e56b273bf2d2ec428dbbc159691cdd8a (commit) discards c593ae71a3efe7c5fed08d16b0be46b114696e6d (commit) discards f255936761560c10aadb7e0b22b4c6851278f61b (commit) discards 74b8c6e3c9c62d9df550fb20ef33ae3251f351cd (commit) discards 3da9cbd79be9978e7e3f27b438abf747ac3f24d2 (commit) discards b5e5acfbf45c4f234a1fa0a93bfdef91d11497ac (commit) discards 5a305a353a20e447515ba866b31cf7c37149de9d (commit) discards d66e4374a0f9618e3a6560ff73c3a85cb733ab4c (commit) discards a15f5f34b55c1d22fe1104f2d76730db8b9d15f3 (commit) discards 4445ea0056c4adf2025fd653235c0244250a09c6 (commit) discards 6db363e888e2ed8de6fad8b58655b409167cdbfb (commit) discards e81281e133e9e615c25fd03f26616ee1ee824ce0 (commit) discards 64ce0175c8a1b57e4944367f9ae432a99aa54c9f (commit) discards 4dbe2e1eb4413e81786c4f5af85dc40895dab207 (commit) discards 7557f2ede2696753c496d02b793b8a19bb164a93 (commit) discards be765f47a28b33e50a842143c5304ade07357150 (commit) discards c855e7cb89f679a5886e4eb54ebf6c8387c3b047 (commit) discards c1b6d1eec8b007f33de5b770cfce27f37bfe5de7 (commit) discards 6c1c6977f70456f5c4ac692185bf65e654df73a0 (commit) discards f7a47e45dfdb7af3644899bcbe9a2f0b3470181f (commit) discards 7d902b1a214ec806e75465cad0e1cf3439d384c3 (commit) discards eb9d21dc1ca6c57b4e3aa02782007891480e6911 (commit) discards 47c1254dbb9ecdbfaf9b708ea0919fb8b6b33c61 (commit) discards 1dbf77cdfb0822f759a13e64a4bed1ed7c9c8dac (commit) discards bafa7c0aad1f2368ae2fae4fb00ec232b6b6f179 (commit) discards ae442cb571fa32b73ddfa60a8b0dc879b1035214 (commit) discards 1ed4af35ab4d811ca4bc2a75b5f44facec597f2c (commit) discards d98fde519e88e42992fa174bf033d6a3c431b6c5 (commit) discards 569982ecf4aadbf5e53ed0f31a4397ea98e5c614 (commit) discards 818820153b43578eebf9d4c5295423e6adf1f787 (commit) discards d904debd50920aa1b12360ba5291931adb2c8ee5 (commit) discards ad831a56ec910ea06b44189d04d52a5f84518432 (commit) discards 82a57e665bc22e6d5e74211210e35fa8c8238019 (commit) discards f9b42dc5964f040fff4682274a14f89ab3c0f36a (commit) discards 2b9015cb45bae66fd368b61de2db6b2c7527b42e (commit) discards 825a44b30443e42495606357f677b4fa70e0e6f9 (commit) discards 33a9cb0a05844f295dc0ba840febc21cbdd082ee (commit) discards 15cfac49a65ae7d22855951bf5824b3541255128 (commit) discards 5643d935bd5851d42982cc18cc1f6851dc80251b (commit) discards a14d6b039db25d374ae0c4740e79e78d55b9072f (commit) discards e6c8bcef7e39344832a015b02283213d855e83d4 (commit) discards 6571f7429e95375354f2eca53e1e2d763b26e22b (commit) discards a730146586cfe616f8fd37b69526dc1a251ff1a3 (commit) discards b2a5889c8c78b52c5a6abdd9b4950b293c3045f5 (commit) discards 2afcd5f3d8836bab7f49fb26c2493748ca3682cf (commit) discards c56d56295184eb9387cf40ea34f02c69e53bfa06 (commit) discards c9fc715e5290ef35b4aa125cff9a14195d221fcc (commit) discards fc61a05bcedf783768b6f39a8d45e9519064d987 (commit) discards 1bd5ae8f4b73be4b589ce89f8fa6b9d464a6ba3a (commit) discards deea4f04274e68c3e9f09f4ace5f4396bf314e11 (commit) discards 6c7244ba1a93f03f14302925c98785619813cb57 (commit) discards 4fdef672f87ec5ca581adc5c39a0fe8f2f8b5760 (commit) discards 33c8f183e57d5f98c1862fba269bdddf8b01e3c9 (commit) discards 24368f24852b5125b8b89f53007d9c03611e9880 (commit) discards 8c906f8a720ed4f77259486696f2f02312cb5ba3 (commit) discards 03055bfe4c55fde3a8aff0442f5d38c4cc4275ee (commit) discards b91c0cc2a33593ea5df4ff77805767789e296273 (commit) discards b91f8191c6c08be175a24d10601c51a8f804e22a (commit) discards 80cd81884939304e1b6dc3c71274768b84f3639e (commit) discards fd3910e866630041d9393a2e44c02fc1ac196db1 (commit) discards 44f0992c05c6d9f08c7abe771db57d8b00175ad1 (commit) discards d5680b6aeb784ad02a529248588d85a538dd4b14 (commit) discards eb0d523f4cbdbb3dca6b39ca6df3570d0e40c499 (commit) discards 6e1ee21ec4a0078c1701379011970e048e3d67f7 (commit) discards c33a586b40ad53c2c73eaee4531609b106c4e228 (commit) discards 120d4a6c3346d1dcbf8349bf58af115c546ab936 (commit) discards ef8835e5f474ba14788ff9758cf432c9db09707c (commit) discards cc3649112fa45c0e291a30c74eea1c50e511fc00 (commit) discards 491171053c043d2025074190977436c382806560 (commit) discards 911037db1a137345afc4bebd97f6786bd43f82ad (commit) discards ed9616928b88eef8d7ea7b7f7e02a994ea8b0e59 (commit) discards 37a66fa9cf34637ed0edc25df1156d9bdb241a43 (commit) discards ce6e191ff8036edf510f5ee0ebb8e79d8ae054d2 (commit) discards 28d80f11ba1be3126175904c16b148b20a868329 (commit) discards 42a21db772fbe407babaf30ae822023004505248 (commit) discards cacf47a2354c547f40a0cbd6ad9aed248c216c0e (commit) discards 933c144f1d2ff5d21b1e7fb41da83f9d47e740e5 (commit) discards 1e2170d4461fe1feebfc5c5efa14dfc11f3d6455 (commit) discards 0bc62a1e4f6c041a4134e3303c22a0de36286b4f (commit) discards 6c953b73176e246783c87b3a7be08833af8a645d (commit) discards 6e5d72779f4cfbad2ad281b458914b8c0f914116 (commit) discards 6034dc31bccb13b167ee7453bd3693c334e73c7e (commit) discards b2679bb29b33a1f828221c31e7553687bbe7ce5b (commit) discards 24db937ca324fa439f60a20758b29d3dd9b44bb4 (commit) discards dd4fb08a0bfc3179f8f7d1ff5c1e95a2101e04ac (commit) discards 1102fd70366672c8e0f3842f095bebda5ccbc8e9 (commit) discards 98048bd728af60b73d398350da50c8d6087b218a (commit) discards c82487f42eb97fcf0d0ed517f7724c8bc58cb082 (commit) discards 47b1c217da98c778d5fe74c7545a14290d752a81 (commit) discards 434c868fbb597a1b2694e4a2b25df6055c388035 (commit) discards 26155d19af233e19105250fab23ee38292f5cad6 (commit) discards f257a96641455634959ffef001040e03377e0282 (commit) discards d70c4bfbee1754595bde4ee0cc2f0e4efb35cebb (commit) discards 69b8d8e4f6f6c3ad1520050ecd6bf355c8e8d3da (commit) discards cbdc3e45f5ac59d2fbed3a0d56f16c59677c914d (commit) discards 6ae042cffd8dde1990c8bfeefa8e89da511dca97 (commit) discards 873361c4ae6fc6a613f1c0d67f3e98b7a94d4747 (commit) discards 00af25c1c9add116a97c06dac99cc3322cbd79f9 (commit) discards 8b139e3762969c32ab404e39747f595eb32b50b7 (commit) discards 8e92d35428215626b5a843d49d8e8c8c95d66428 (commit) discards ec0ac939c727a273e7e1ef324e061c52bea45d30 (commit) discards fc0bb19c3bab1212749b492fa85c916b32f0ff43 (commit) discards 2ffcac556b9c8dc9f8d4c3fed42ab4d254de0601 (commit) discards 693394fffb494d3c11004a4b6326ff4c483702a3 (commit) discards 97dd34d83a86e689b44bee58ebb19d80dabcd507 (commit) discards 258e711e9bc68bd745ec01aefe5e0ae98b493c11 (commit) discards 0fe78d69f45c57b6987cccf020aa0d35710a0c12 (commit) discards 37da4f82065020834d31588bb1b373ef77e2f5b8 (commit) discards 1a66455db39eb57c3d53d1293f8fe80df06e4faf (commit) discards e6cacaa6b8e312415660d7c5c53f3740a5ab8861 (commit) discards e34afaecb178556bbd873c6986882c28134f77b6 (commit) discards 17c7244649d0f380224e29e3a381566ced57ce56 (commit) discards 188012c55e9278adb09406a9cdbb58f39c7add26 (commit) discards 64d4bb4b386200e6ffcea1267e62759d45c71ada (commit) discards 5a3b315a23b15ec8931c171b396ed105a8a39976 (commit) discards 197dbea197de129985c36e437abc9859f1ba548e (commit) discards 7b95ef47de833ac42d76d25a6178eec26483066c (commit) discards d567d870970a35bf121da65b72d0609849cecf07 (commit) discards 72850cad141d9c09d88d5607ad4a2a49efa5f8c9 (commit) discards 427efac01fe082ae1ddb9796f45d8279e9bd6030 (commit) discards 6624bee036f4230d85f7414fe85e51f5f93461d7 (commit) discards 3c176ea14c25cdca0fc13e0922c88a1e48860970 (commit) discards 1e627f63cb1dbee8dc32e5c3040c0c631e613cbd (commit) discards b54646bef25c1772a0bc0743de633cad2bce40e6 (commit) discards 0228a6dd0e23c3932843b9bd417837b964d4cbf1 (commit) discards 21b41bbdf0b1bcd01024f3d2bee4eec5bbc1f0ef (commit) discards 0b1205035e42dd71987a3f663e8b1b1f3b93f1e3 (commit) discards 2111933550c0baa41c67b9a21a073bbca56c4167 (commit) discards 9e58d685db1ca130f61d6fffeb59e98e14bcc3b0 (commit) discards f040fa757a6244d47ae6b72a67b7efac4f4662c4 (commit) discards afa70ed57e8cac0a0df2ec604ffceb2c9081d95a (commit) discards 3ec35fa02ee7d4cff914e1c31deb66e2aeeb42f1 (commit) discards 661d6f0c01d78712a13c81eb9aa315e704b2a628 (commit) discards 72c5a900a35d94a973dad4b0276d5d7a989d26e7 (commit) discards 5a16632d3ddab3b74d56c7b4670cf9ef84905a6c (commit) discards 4ae78dc1b3608f255f11a71137321985cb5d56d3 (commit) discards b8ae82a7f87b5a08d5ba6446e3ebf8a8355362dd (commit) discards fe80183ffaf092c7d58c583cf13e8564aa1847c2 (commit) discards 3a3289257ad451e043b57ce0f2c1ac9f46c78386 (commit) discards 46ba0cc8cfd4d14d264f9ea8bd31819b356f23e8 (commit) discards aa8a091b4c3a7658a94b9fe1c84b9a5622f26398 (commit) discards 28862c77df60049792a319c20c236832584f5527 (commit) discards 58f0624f341d2e0fb8559ee5099debc1285a3584 (commit) discards fc98fa87a7d3740199f5b6d9309d5856bd507c28 (commit) discards 2c24078f8046b456f81c3cd8cf4bb9cf1f963f27 (commit) discards b5185748d66ec850d78fc4e206803943d323fe3c (commit) discards 155c334ce3517a3f6e0a32daded9cf3c5b01c5b9 (commit) discards cafd52c76189c5659a1d32f9ad15a0f5b69a2370 (commit) discards 038ba6f3624af88a633976a71e2a7653e684efcc (commit) discards 8fdea5ae4b50924b147e67082e2efacdbb79944e (commit) discards 47c946d48fa1024e1964fc64a1a5db4ac8b48470 (commit) discards 3137703457930a453c611e9cc51ee7b90338f585 (commit) discards 0d8fdbb5a18b60905646d6a5b1432dfdfd32320f (commit) discards 22d354d7963bbd678ad67d0450bfde6458005c3b (commit) discards 882e18954e742cb6ef8c9455643e0f46c2c2e1c0 (commit) discards 8dc6ca94d199acb52a70d5382e75a22bf504df7e (commit) discards 53a6bbf4bfa4dc0e44de8d39a302c5ecc77b00b2 (commit) discards 5748d01b2e56e7fc799e9ff950976137f8221d75 (commit) discards 2c8963d88403b32b71bc9d23d376d2d22ba5d635 (commit) discards 2644fb519e3a4ceb3c7c4c49c9d622935a824a28 (commit) discards 1f81a0851d55f72738b3c5017084cdb36639d6cb (commit) discards 917db9c4c4eaa791db8861de2ace7f3263c80f0a (commit) discards f6dd5e51bf05300b7a92174b8e0cd816915fdec5 (commit) discards e7047346d3bdb2a2b8bc6e3c20c29ffe21186e84 (commit) discards e30b79bd5f1e5b9ae5ee8f7fe7caed624589b938 (commit) discards 95779974d68a2dacf1e56f5de4d247a4a69ad6de (commit) discards 87ef1f52ddb39f677f9a0c3d8cf8056758238674 (commit) discards 78be95e044acad5f2033b966b7869885bc33c27c (commit) discards d8036f07093ba2a54b34ba52069e1055c1f9bb47 (commit) discards bd7dce6e5e76f587a9ae5b0604fb68ea22f2dd51 (commit) discards 6b56f353b81139f4915d6a1ee2a02e81922ee8d4 (commit) discards a7d01d7af467b032945ba6fe2672d2724e24a573 (commit) discards 7ee00868d7e34f14d9569c6ad333d35e37483a85 (commit) discards 1455f3f4208f0dc842c933039a07603da30a5255 (commit) discards 33eeaca3628f3c9834de6d99d3ba9323def06d01 (commit) discards 9ac77765d1e870d4015cf7e084bd33889b50590b (commit) discards 852da24c1c77e54a8ae95dcc264461f94a314f3a (commit) discards 7f64593be364cbdd7f13ae8caeed0041b8cdbfe7 (commit) discards 2957cd5ced0996b845a7756443c22d36f432d169 (commit) discards 4756cbffb43848b8990561a4a783da2cf48aa807 (commit) discards 18dce339403f77e2558012d5f94a2162baf3ab55 (commit) discards d67c3c879d504410d163ebbf6aa92725716b06d2 (commit) discards dcb443e897e59c1e9b878bf99ab8ddcab304fa9e (commit) discards b9a5bb7ffd11e29291f41a368652e2aae736b4bb (commit) discards 6447c3f530994342be10ffab4f80a655cf6a0ece (commit) discards f0034e57044def1c4f6fd3821353c33b18d5b984 (commit) discards 33b14b6711173d491a5efa914e19c942d5b371ef (commit) discards 5abf2f0f4d7b30d44c5cbbb81e5a4da77ccf3ec7 (commit) discards ffb55a861926f7fdb5887cc09620da8ef55db194 (commit) discards 4f526dc718d324b6bfc1efbb376aabfface57b9d (commit) discards c6f53042f76d787d80a64e7c080909cde0890e98 (commit) discards f7f79911fc09efcf9ebf96dca48145d1e64344c6 (commit) discards 3794594d14f6096ce09d7a1e7776d570a6971d66 (commit) discards 541a0c916bb0c68b4e282381a4f7431c0d804f35 (commit) discards 78831829be6b2762f295a44482a43d344cac08d6 (commit) discards d1e4f564ec5a7a0577c2afe346bacab31b8370e0 (commit) discards 42d6044e839177551b1bdcb3ffaa98503bad5267 (commit) discards a05e196303e95808f394ce9a8a985ae9efd8139e (commit) discards 188039e4266a2527a67b45b1fe36a3b56502026c (commit) discards 85446ade3aa119e0d354b366a938fe788c90b711 (commit) discards a7a10f9687e55f17502fb55a79eaf85c201b5481 (commit) discards 2b4eb68cb3b8f70b21dc6e81af5a686ef5946bf3 (commit) discards af935e43b2918766a632a4b55d173c3d35ac3f3b (commit) discards 96cf054e0722572b2a87d7de290fbea188e29a42 (commit) discards 2ffbb865baea06643dffa5289b2b9378751f5629 (commit) discards 9d0836bccda9fe477790dd94d4180884e144dd74 (commit) discards 7238391e909792d1a86143ba0bdcaf385d492d4b (commit) discards 3fdd9250b9656a62aaf989eced0e6c6f8bc01e5f (commit) discards 2ad0aaa739904b47d13b73b4fe8ca6ad89535bac (commit) discards 5b23937d0f6080420b4b4364a479026489c501f8 (commit) discards 85af96bcb2f6195602ecaa9db31519907212e8c9 (commit) discards 2b160179406942eab300971990ec2291441cd8d8 (commit) discards 8fa91aae6a62de805c90b9938fc759948f0dfedf (commit) discards 7d2d2756242367a546d20906311c354b55c8e6f0 (commit) discards 8c8bb238a18ba56ca2e428387c85baa3d3f6a7e1 (commit) discards 7cf2a241ee93bd05de53b0008e654a24526a772e (commit) discards 17ae88e198b0b1e8b11f7be2a53cd324b74fe2a2 (commit) discards c5db80e325b1c5da73f903533ba66453e27a9fb9 (commit) discards 9743e487686230f2719c787597c0f0347c25d9c3 (commit) discards b9910cb776d49e82149fcf5a02a78b13b4177059 (commit) discards a55719eb01158838ea550c6dfb986121fe21267b (commit) discards 01b0b763640048dab6b69e9b6a4b67dfd16d1d75 (commit) discards 728010ec3e62f1ee57a3d77b9693b3b0d09b7c92 (commit) discards 6c1735a5500aebd55d8ed8e854a76334ad3d6606 (commit) discards a56334284c9753101f0236c07b23f7b38bc8a98e (commit) discards 2d627a25883454d3c304c7651ef38a4cf98d7c4d (commit) discards 9a2f454f3ac20af811a52dc41bfbb4ccaddbff46 (commit) discards 00d298f56df5a2fbed9a3012dfae936e2f57459d (commit) discards 22f2bcc62b0c38f2cd6ca4ee5ccc367a9594a1f6 (commit) discards ca907da953118b4dc360845024523fad81c8cb7f (commit) discards 90ff34a130ed2946e22955d840a025042a99a50c (commit) discards fb3ba073ad90836738a60c3dabea951d064a5952 (commit) discards 27b97998d0c180c1cf55a22ad424a8bad9be4428 (commit) discards 269d3e0246f57e8c0bc49acdfd2bdebbf626d635 (commit) discards be90997deffcf5a780abc7e0f9d574c02ec372b3 (commit) discards 7692d983d48b4b8ec439e4f50044350dbc0fbc3a (commit) discards bb64e2206a4455ea7d9be55f315187c87ad62fd7 (commit) discards a0e83f77711e3f3f4d698099fba7cd7283474f18 (commit) discards 43d929112275e2edac4ab1cdcaa0c6012a8cc4bf (commit) discards ffb4ce1de59ae26253e504e292c568fa6b1134e3 (commit) discards 4d75a0bc1ce7b962da2d9933c07285f40212b501 (commit) discards 819b17ec45295da21f082efcaf311d7300f8f1e6 (commit) discards a2d36e37bf3f7a9f8f05c60ac174a1e885d996f4 (commit) discards 26af9079f9c8e5a323157963077f9928c89b95ff (commit) discards 73fba15ca8af0220a53327cfca662abddb7c71a7 (commit) discards 0b63279cae0284a0effe138fa436be66183ed07e (commit) discards e4adad1e496cae86b484fb49e22e661f49c1f9a5 (commit) discards 314156d30f156a714a455e110eb6e03430e6e932 (commit) discards 261da8a2e3faee3822ae5600f30c5c9c0011505c (commit) discards a7898175169b164db4ce85a5337f6b7de5ad6242 (commit) discards 3e6bf27bad2260bff42f3a3ce43957ffdec23a04 (commit) discards 7221fa4b173552a7845519b94502530dff68947a (commit) discards e486db2738710cf784f15cf74a4f60a16e86da34 (commit) discards a9cca369d6a063f0e78fa6b34245479c88753869 (commit) discards dbf05735115aae9a5cba878adc096cb09c8af8ad (commit) discards 8e0ecf91b3d50a0e69a00db52d1d79ca91afecc4 (commit) discards 815b3ed213e3c691d0ef2666c76e90c29bfa0792 (commit) discards f7bbc99cf5ddc2754d7ff706c621c207957f903e (commit) discards 5fe0bfada47c3c5e7b27556ffd6b449896540133 (commit) discards 4bce6c5d20e86b4b99893abd80dfcaae804f8904 (commit) discards d60cf05bddcffd4f429aa57e6eef3484d0583cc7 (commit) discards e74599068473f2d7e7c1f7f244c386ef11d6ae4b (commit) discards 8e226f43e9ed08946401200ffd379e3426b5bbdc (commit) discards c0355d5e95d310d89acf2bff51e3b9411f017896 (commit) discards 26190e484f2166efd2134cdeec372da51ea3862d (commit) discards 2dfcc4268d7fe0be7fe4447304b4ee329f88b240 (commit) discards 2b60bd389f6dd366ba53a2548353ce5495e4c7ec (commit) discards 67b2be10181ce2fb4712f1a298eeb84008d2dd37 (commit) discards da1764e593e3c183f2b60cf1c6ea69a14eee6e13 (commit) discards 370534f264bd0ac4f121f7852a46d12a85a629c2 (commit) discards 83597d46b404fbb57496466d1f05013836eb7da8 (commit) discards fba9de3c35c554d87d20d10d7bd44404e55f46a9 (commit) discards 9221bbafe95a3fa4dfd99ace48c1d9be5fe889d2 (commit) discards 8e406e58c22c7338adc846c134c1b2cc8a08e817 (commit) discards d5d1f9c21d3d256473ec5f58bd7789142a24bb81 (commit) discards 62dd5bbd6a885447dc7135bcd142163175be4322 (commit) discards 40a41b19b2ec77bf1a95982c1bd7cb91c9afc266 (commit) discards 592379dc1e71ddca01cdab32c6d3b160a7026e3d (commit) discards 9a4510ab2f8ca49b828429b8c49ebb147a39e996 (commit) discards a09c1c15d7504d5db233e422d8204e34367dd301 (commit) discards f2c6d61d76c49cbce33865713ff1d5c84f64f247 (commit) discards 08d710ca291dc2796be2436a5628120df7598e28 (commit) discards 40c5834d61892238a8d5662ed9058e0c6d5bdf1b (commit) discards 287945cf3b310b298b8cfe140af94eb86c913a73 (commit) discards 268e008c1c448fd3652c0cf196437ede85c37880 (commit) discards c45456ba932b319cff57d24d69a17d5b18293eef (commit) discards f899c66571397eb670a3679d579f094fe5ab8383 (commit) discards b63f40e4c616204ff4950163728dd1951eb86f6a (commit) discards e88217ce79bdf06868b0781861a4942e01f4b424 (commit) discards 88d5275bd2d8d342d6a3ee4c149f8347120be66b (commit) discards e32d9963ccdc5ff98ae5783829b5f8c08284c7f5 (commit) discards 68ce6ccb4bd50a3f7e20bfcfa2d9699a941bf23b (commit) discards 6f1bb33e01a036534582b6923bfff60883f6359d (commit) discards 0cd8194f0d06a44318dd37c9d5867c6d252dcf5c (commit) discards 7a57762cbb03b41a7f9eaf3215a39e36c19c65c9 (commit) discards fce1705922137efa9bf3ab5b6dc68ee5c1420cf8 (commit) discards c753650a464694b3e11f6bd59bf63dbd6fb2f4de (commit) discards 98c51dc30dad93e53b7666f53aab2dd8c7812e6e (commit) discards d995c9f06a68c5273528386debc733ee1b23b6b0 (commit) discards 6d45daa423a2b8561ae2e2ad183f89807bf026ba (commit) discards f63fba653a7a279a4fba8b1dfe2a9d0b41746b99 (commit) discards 38910712704797cda1bbf1a3b1aebae0dfc3a99f (commit) discards 09c7ea5f4b1a85e76639f8ca17d37aa8632ad3c2 (commit) discards 614e9f318855efda2f9c1c2cb69a7582a112c69d (commit) discards b1fe0225c817ebaaf31f3f51a812560ea56eb7a3 (commit) discards 3350fb5c8070c46301602f5ce6c217fc54be2283 (commit) discards 0199ec869c06180ffb287449f8388c36f0a429f3 (commit) discards b010b851ea66e8b781b24b3ed7413c95f667cc2e (commit) discards b44e35630f2b0d1458f49fd85830529eaedb3a9b (commit) discards 4e83a73fd2c4842d574fe16a9c0c6ccf1f172e2c (commit) discards b88ee742d1db3ad128b77a4658595630c1f8d787 (commit) discards 3fa9430456d279511463c46b79b2ac4502d114e3 (commit) discards b832e126ae28c730404f82021d343ad1f404195f (commit) discards fda7138a0fb2a4899faac9c64d99f12405976437 (commit) discards bffd357a4eca5b84c70ff366b5690f61113d6f6b (commit) discards cae2b4e846a2dbabfe930d157c736883cb54313f (commit) discards 00b8efc2713bfd3e7ef56223bd6b0e9afcc9eaa0 (commit) discards bef4d783bf5694dc03cb6f1e1f5021df744f628e (commit) discards 4355acdb2da42cf59a7aa8a00e9d277caa95d27e (commit) discards 0da7fc85681d25e585b1a90f93af0ad23f9fdc82 (commit) discards 9d4cc1d7b186eb2665e2db3223a6d28874ca4076 (commit) discards c64fd6c01544f0a1d70b58c4fce675b2eb629996 (commit) discards 0779b679e59b80ce458c0422a673b36de3a8f4c5 (commit) discards 0b6e3bc038ade69cb945c663416d4f2acece840a (commit) discards d19a3ec889c0a74ec256ed62281dcef22f17515b (commit) discards 6011ea115ef6b87d51179fd606cd98fac1503e92 (commit) discards 207ec8f5e4c025961831c33d2c11bd020e274240 (commit) discards 05076086e95ccddba5767ff3417faf567390bf70 (commit) discards f0c5444349c6702cca12c254125e4d347c19d32c (commit) discards 57ef5b971e1b05343af7e4c4c41e6aa4baad21dd (commit) discards 092cfc8d804366ba30b44c72af55ad2f23ddbe7c (commit) discards fd0abd02fff468bedbd1c07ebddf10522f385bca (commit) discards c6d9edd1dfd21bbb3fb1d99053d90114be6c3260 (commit) discards 6470bb7f1fcf6d1559750ddbd7bc87a8f8e7f9de (commit) discards 17d9a62b3d30075657c147b66550e41c6ed19efb (commit) discards 338c17b52b7287c76adf70221ac8075ca7649a1c (commit) discards 251e719cc10593dc4fd0fd1f4e9b3a6d59a55f86 (commit) discards 4f727215847c810a56770c0cbdd3757663338e88 (commit) discards bdf9ea9180d2b1cb86d8a883120497cbc6104a2d (commit) discards 8f354a97a5e7745870b8e3b540999d47b994f239 (commit) discards 53d490d597a79d61de14db75b10b589c72eaef11 (commit) discards a4f0f6ca892491e787e3259d5eba632196e2a4d6 (commit) discards 7172add972038e6a9076cc1c752cacce9c00f256 (commit) discards c009d6847b4f82db1d85cdd88b67f664b83ed791 (commit) discards de486a5ab283a9767dc4bed024dee24e2ca4344e (commit) discards 36dc8942b55f876671168cd5f500939b0aa11038 (commit) discards bc294599074e6a53b6cfbfb6555b88428c7c1164 (commit) discards 9609ba5a5aa05ffbb7690853ceecc9902cc68eb8 (commit) discards b320cfb93b88aed2881fc134a822feb3e94c7b05 (commit) discards 1e8ad9c0d80bdf50f0336e3bc2de50b40be1a6d2 (commit) discards c167c897a95576f0b0bddca12433decb157ea4b2 (commit) discards fd6b5d8feab3e2b4815c7046a3993afd520b9838 (commit) discards 12a641ce5a8432f09a2e641288ba5581efcd168f (commit) discards 44ce162b1ecf6f8da5b167b5bb942b646196ea4b (commit) discards a5aadf8e869824867a5b9a219b3a09fac31fd40e (commit) discards 823bac306c688aa043e7d9c4ef8ecceb74e8c322 (commit) discards a0477826da917e86fdb47b0fea68f742b6dacaf3 (commit) discards 44000501b2e9662496362a8ff27e3aed6f0e8232 (commit) discards c2e650bf93d6735ea4997afffffd509f2b06d80b (commit) discards 14425486989dc3a724c3ff126725e10de7479751 (commit) discards 5d39d4938f497130b59a9a8caeeb130ed7851cec (commit) discards e53dcaa537215ba3f7c33a4e46adb4d605596889 (commit) discards 7462524df06369511fffb845556eeed59624bb75 (commit) discards c61b06167b1e14dc5d1fb7e9ce38e8857beca770 (commit) discards bbc8d0e1d4dee7f2dc08b602a47c920fd5067592 (commit) discards 0e339f22ca26e53a6c7f6b9bbe270eba498a8b0e (commit) discards d6395c5a8902923cbb7cb63f6101141822d119cf (commit) discards 988be7f9330adab2357f5fe018ea98715afa7c1a (commit) discards cb1ea87c8d8bff131594cd7837a078079ba36286 (commit) discards ece47efcfadae336402a9e58f99534aa243d12c5 (commit) discards d824a01b0f2e48cda0c33a8b927489747e33c5e3 (commit) discards b0c18ba6de66445ba3d416fc62e6dc924ad380cf (commit) discards 11633c74f2c50beb7dfb13f652fccfd825296c4c (commit) discards d43cb8c314cac91d82fa6f14fc372bd98a59f064 (commit) discards 3f17e61518cdea542c98b7ff7a4673b796f20d10 (commit) discards 7f4f707f887e3995e5b181620e4748d91a9735c7 (commit) discards bdd2251b47a15372f2ff5e93d40ecc3ba332525e (commit) discards fa5209354b84e7e9afb05fa377080afa8d6b58d6 (commit) discards 5a290149c1e7613eb6bfc6c0f20d4620f5ab2971 (commit) discards ac11b599f4ec4d753745ba47b921e10d3ae24703 (commit) discards be2570d2726ced4c5f62f63d098a5c363afd9dd2 (commit) discards 60fdb9ad9768e9e08f435fe548d554a858330c8e (commit) discards 5c86b23872900b30ed05b566f4d90b48e3c2873e (commit) discards 5ee33f5b153921b8e9d8e91e3f92d0ee01a3fc9a (commit) discards 35db5e8519ba4a6859d61c7861d06e8516bb7e0f (commit) discards fb490a0931b759dac420a178747f93e0c56b35c5 (commit) discards 68a8dff804d3e1e4b4b47d850a1cca5a13393c70 (commit) discards f9b2ab214fb8041b3c8741e72f73a7bc360d3727 (commit) discards d4e3882abbf16e862743ffe20af3f183b1806956 (commit) discards 27d475ce6dec85fe6c3ce108cc859608fd1bd3ac (commit) discards ac895eb1956eb72844cb669341307de0a8256f37 (commit) discards 4e107ff0b866b918959a9c7a0c792795ade4896e (commit) discards e9afa5e5c5e62c7a7936aab438bb5afd4463461a (commit) discards 2ed9d8d75b8ddd4e6115e243711e0c553a9a2650 (commit) discards 5b7b3b57d97a831a27cc9f6dc2b5998a7780b6ca (commit) discards 5472e7803520f98b396c7355b529e80f3a13df0c (commit) discards 93adfcb8d412f7e1c15571bf51c4372ed23bd2ce (commit) discards bcf878b072063e3f8d3dcf7935deb4e2c7dc9319 (commit) discards b1987ddd6185ab458d7fbddf9dd1208574c648eb (commit) discards 679d43443a904e71cf5880e5dee1dbbcdd921be9 (commit) discards 7f53792ed2e089b7f46aa73558250996005ab059 (commit) discards 2c8f0c1d160b7e6decb80f32ead492042e8b24d8 (commit) discards 3ffca24da3e8fd79759910b9dc16bbc247d91971 (commit) discards 96bbcf580ce7a900d6555b011b789e5064b24dbb (commit) discards 3eca0b0fe2b29fba1195a43dfd6d987f72e1b97e (commit) discards c97510187e1664af636b89140ed6e82ead1cf966 (commit) discards 23c3113c85a6c96d47a092c2a92b40fae63f2aff (commit) discards 607638aacbc1f21c09df0d8a378217f45301984a (commit) discards 90cc26d5f021f1e57b4025e62ba249448c5eb8ef (commit) discards b97afb70bf378e783817763d9e1d0c7ed064f250 (commit) discards e323918f813ede524ec68f6317a9b7ae75c86fad (commit) discards c35319642ed4d32f7452c128cd745902c8fcaaec (commit) discards dac0a260264f80df889871d888c759074e5fdf81 (commit) discards e935be59d3b44eedb0ebf8b84179722933c058d1 (commit) discards 47efa34725e7f1fc79317dd13bcd2ce326fc91c4 (commit) discards d4f641f9b94ac64b26f3c3e06a2a66e6d3eb557a (commit) discards b38bc48c51d327d90ba4bd59a0191ded7ae4026a (commit) discards a319109ff49ce318236f3954bae79339689e27bf (commit) discards 9c4af87283f734060777856febe72d2dc1a187dc (commit) discards 5f9abec54efaf06b31330a980703286e55b7fec9 (commit) discards 43042badb4307673d415ac9cecfb7e4cb3eaabbd (commit) discards e15b301d0ceeb3bc57090379bf223396e2e316a0 (commit) discards 00d8fd810f35dee272776639c104ec38d7ab16ff (commit) discards 6e3e4c66d5a5fe56818a261d68b23b48ef78cc49 (commit) discards a00be6653e8730339ca1e1412e368a977cb5052d (commit) discards 78b6e5f85d2e10bdd6b2dab8dea4393c8b7b06f4 (commit) discards 0d1ae09d6d166a285b42611ebe348b6c32a3ed21 (commit) discards 9a9f62683ff256cd90a1ab98effc12a821a48f0d (commit) discards d0e13ab4761b02eaf1068327fc67337500e0fd6f (commit) discards ff6f31993e160c20d2ad3b05e2d3623f3e98b201 (commit) discards e3e9c2dbd7b3cea93aa24fccd780f1d79512c767 (commit) discards 40c7d0eabed709f7187fd85cba2c7e1472a01bb1 (commit) discards 311d1653f9f79a4fe719491a116425aa56d95f78 (commit) discards f0614dd68b2e7d7d939de807411a23ecc7df3722 (commit) discards f6ffc18f28fc00be7f3fafdc6b063f4bac5226b1 (commit) discards f920f7e2eab01001ecd438b4f5aec759ce684249 (commit) discards 88c25e5c71578dd0fdd7bf02a108e28dacde94b0 (commit) discards 8b66e7c338d29493954af78e47493977d757160b (commit) discards 7fbfea4b7571b9eae5819d73d866ee2e4f26714b (commit) discards 6b291851d45e5704725a7a066dafb31515ac7e85 (commit) discards fc2f2bd87301bec14c1666a81d40b14b67c9cff9 (commit) discards 91792cd17ecf0f129554ab632684c9e114e16248 (commit) discards 2174a358603a43337be5e68408f19a2106555108 (commit) discards 8f774e92446de9ff59935b391fcd0c1c0325be22 (commit) discards 21453f911565fe00671107b49e0193c066d6ec49 (commit) discards e830e12572e5e2e617bca1b849992d1016bb262f (commit) discards dbdae3b67ad5ad036750d0e31f48d9514a1c5c6a (commit) discards 575742d4f928f7a9e2a1c17c38de4ff4cece4ea3 (commit) discards 1daa60f24719894fa885bf0ce8b306f086c5b855 (commit) discards c80c588c16cfa8423bcaa63564b21ff0dc531939 (commit) discards f4e6341846ed9a2c644bccb74912eab083657883 (commit) discards ea7fc015a281f813c99ae3ce849afecebd502552 (commit) discards 834885fc9de95c6f8d4c59c2976b7a446f0f2ae5 (commit) discards 010f9fa5324367cbb52d78340fc7f1ea3815c7ca (commit) discards f69ce492903266461285bc5e81147f07e49b9f4d (commit) discards 0cc3714f771d042fe92ecd5479e555c0fe83b645 (commit) discards 7f0d8f29b814a77168f1df22030ddb161972759a (commit) discards 9b6eeb719ca761217daa585cf63515f4abf9f579 (commit) discards c552073c3057bdfc14c756360810c8bb0f3b1835 (commit) discards dbc20bf6b1c994b8cc5d8009928f7e9041bd9431 (commit) discards bf53173a0d19d025fe21e53091a2efe6b1c62a21 (commit) discards a580ee87517d40cd835df07be5f7618001c35e9e (commit) discards 7a5c285e30a7cc5f1389c69fab79085c90443fcb (commit) discards 51890a7e0718c675c064520bb9fdf5710a062ef5 (commit) discards 9d97c4da28d5ebde5d5c47aadec826367eebd238 (commit) discards 0b325419d12bbb51a3125f19d18302b49f0dc5c3 (commit) discards 277b21a95f7a895adca29963fe9d619aac33f611 (commit) discards 9434ac7e87b88c7587099aaa5563c698b317ee23 (commit) discards 868ed9edce18f2b3d8f8d25cd5f4d4c8f3414d48 (commit) discards 1093dfa22c9db9071671ea94f85b3b3264cdf810 (commit) discards 8a4b330c63f28ce0e94aff4bc131a5a293fdb64c (commit) discards 26a9be9f3ce972692018ae21f6b6a93d97802aff (commit) discards 54c0ba6f5f2f9e824c37232fcf466ac4d3958bd5 (commit) discards c87272d17c88eef8b337e7ac7e73cc04449d4f89 (commit) discards 92e7b42c7f9b5cb99d039207c06b372b7a33cd9a (commit) discards 8d0436743079e56fc77d5352b62604266ddfc4f5 (commit) discards 1eb97ae2e275aa24f483673414931365ccc5134d (commit) discards c6f88a1227a80f74728efbf7525798c4884786a7 (commit) discards b6190f8d40a3110ef5c151312e688e4140a63cac (commit) discards eb3ab3e509628018d5e23760ed136ec2e4ad5027 (commit) discards 83cebd139febdf093599cc80f7bdce1d752f3038 (commit) discards 04348516669dc86c025e6f4c7cbae02dc6403c90 (commit) discards e409a8953a09e2a20428a6613115eb124796f808 (commit) discards 8468670a1a8a3526b8b4748aa0b51484532dc6a8 (commit) discards baadaeb5e3799cdd3cd2bb3c5b35b7d6c9f04047 (commit) discards 6077b1be39cf4ffdd449fda2d3ae0a154fe1520f (commit) discards e1d2a67b86cfdc54c028128589673aae144e9c17 (commit) discards aa287e70d2ecc402565228e05643e0d066b84e5e (commit) discards c19af05c6a04482dca164a44fbcc326e591b06fd (commit) discards 72847dde8e43bb6417d802bf4c5dbff62390b574 (commit) discards 9688d98c90d1c496891e8e51caa7e741d5901cb7 (commit) discards 0d9099a42bde7ba464d0001d6c0b33c3c3d35bec (commit) discards 0fd9668fc749941a67e3aadd1cf2444f764e5742 (commit) discards f3ff2e38a049df35cc565b5dbed524b2a78d0d53 (commit) discards 91da7ffd5a73bc3af073f52f76e7ce57b494b965 (commit) discards 68fc449d9bbf90f05a1a2fa711612ba5ce62d594 (commit) discards 3edfc7c8774e64a54b2222c8d52db3213eaf3248 (commit) discards 53883968ce61d2a291811d91ca44eea51260b963 (commit) discards 446a1866e17ed79403a5ddb8e75c3acd3badc460 (commit) discards 58bbc94bfd87cdd3fc15c8b08c568db5ef319f56 (commit) discards 79cbd5015f5fb615075b7462b4ccbc9906ce9094 (commit) discards c9860d2d41e344f925116a985997f78773013b81 (commit) discards 86c4242ae6c4a91905ccf844373de94674bf02f8 (commit) discards 8c5395350cd986450525b06ca9983325d5e19158 (commit) discards e89194cfbbad6bd67355764aeb465cbc2ffd7970 (commit) discards 95a6495f689e74993311533f877632071e4ab97a (commit) discards 0fac937bc25f6b6f0860e714ae9175f62e5fd30d (commit) discards aa9c5b862759f694dff2afb3e45cfe74e8c6d034 (commit) discards b7d13b7457295d40417fe18b72b733be510c75bc (commit) discards ca6841ad0f2a55988e2eca91c2599a9ea6ae8f18 (commit) discards d882f4abc3636aeb9d6119b51c1fb205d4fd1d7c (commit) discards 7e0606cd92f1796fcfa2737887a66d45f7bd515f (commit) discards 9f0e9467f3cf7d2f72388512e477e7ddcaebd2ca (commit) discards ec181a24bac55d270e8a17eb16a807bdd65c2c4b (commit) discards b02569d78f292adf31efcb8f8f023d07462db1a8 (commit) discards e6eb16933aa26a8bda70caa1ff41498a0d62281b (commit) discards 9754cb6f804df5150a1f1fffed0e8eb3c0612e1c (commit) discards a94cddabb4f6be6d47ee9be31ec76fe483e85415 (commit) discards eb5090065e06b96f115d2f80872a97e098800d57 (commit) discards 59c9744d8cba44dc3b49f2cb1fb760dce008fc44 (commit) discards 3a909de726d66b4e2b0b06a7baefd366d040ce54 (commit) discards 8951b57dd03b3550a6f698aefe9e65435f933323 (commit) discards 2c4ff47867f0073865c16cc8e397fe5118b15f33 (commit) discards db25277da05b1f2c058635b76cf3f9d612784427 (commit) discards 6f3e57e98ce324d7afb7681647159029fb145634 (commit) discards 4cf211dcbaf1efaa082d281d1ff4d3755a108389 (commit) discards 883042c34e6270551907b5d43f300ad3193b83a8 (commit) discards 4bf326d69cf167d8deb892339d96dc44eddb416f (commit) discards 7ab2d0f90ecb24878ebeef37bbe845d0b88a066c (commit) discards d0e8149a661cd8580b3dbc7879b142c38d12592b (commit) discards 71a89464921583f66548ca91bddb132d2f55e024 (commit) discards 3ab68fea963d5ef2bbb730a6220dcf7ef4ec8fb0 (commit) discards 6ec818dad66ff35f2cfeb44c5527b01cf5d8f8fc (commit) discards b698a9b255e5012a50a3b9a76342f3ccbb19fffd (commit) discards 71f7b678666f1e91b56972df9a9871816584af67 (commit) discards bda82241db4eb8d23661d3ce95de0b011d4b40d3 (commit) discards 1382e8156cfe09a06a13451f9ae7879b135f3ede (commit) discards a78a2f8997a87806fb04e833c27b684b7c20fb3e (commit) discards 646bd1ab578d9e29cdec80f8f8a16ddb657f0303 (commit) discards dd42365d9a196cff86359e2e269b6619ad4acad4 (commit) discards c56158b2c4aa16e9cefe30efab1ad467f4e36260 (commit) discards 560edb1157a99f9091aab11f04a84f5e8352073e (commit) discards 3664e7ee98b13a3acca13ee8b163a6d36454ec7b (commit) discards 539f340b4404bbfb331421f20555acf9d1fc27de (commit) discards 0520edf6a7129170c27e1ea94cebdcfaae7a39a4 (commit) discards 623fdc5c34dbf45ad40ea12bac8ba437bd53af96 (commit) discards 91576842db3ec2444b6aaf92a4558c3b8fa15d00 (commit) discards de05d7329aab3e3b54190a65ff95eb531c399915 (commit) discards a0364316e12c47a3cd41510260ec8e6007a9d376 (commit) discards 3e6403fda35e95867bdc41ccb77b59513a9cbf80 (commit) discards 562133b5606b7a4c811e7f67ef70756dfdb5234a (commit) discards 11ba38d71755f63deaadca5d04e1fba9f30fba93 (commit) discards 8ef0be186ceb31671a17b539ee4602da23c33a0d (commit) discards 376735330961be67cef3a0ccd9a3e9d377427860 (commit) discards bfbf0bc02d8e689eb71c15b9230e4b122080efdb (commit) discards a9dac6a3003102b33da94545a7469cf52b6c726e (commit) discards 4b0e1f93a52b005d332537bf0ae9062022a27a1f (commit) discards dda66be2e4adae370e37de38a1dd1334192cd4f3 (commit) discards c2f49115c4f749f38008595056b80b2d96a35ad3 (commit) discards 66a15714a3f685b69bb0d6e7ab53e63aef2d10bc (commit) discards 019805b0e83d8d5800ec997cdc598357f08202e2 (commit) discards b50b5e8bab2a2e2a98b388ddb61887306fcb58e1 (commit) discards b887785b7a0c921ef59f1de451d2f26f343c33b1 (commit) discards 2e6ea309b38acc915aff0b6dec13c5eda1ad1739 (commit) discards 006f54976dc6aee8aee37730171b19724cac852a (commit) discards e4ecfe3573f66ab009c156e34e3365942573a362 (commit) discards d98ab5a1dc910d66e073e8fbd263f6973ed8d73c (commit) discards 89e9ed1b08176641781bb2f563927289edd96bc1 (commit) discards 2c1a8659b984d95a73e04342c466c790d3a67c09 (commit) discards fafe3a5114d5e190200a4b06b4cf70a93aa79e7a (commit) discards 503f2fdd8a96c2c2ac634f1af2388d834f8e9093 (commit) discards 4f172a45b89d02e085ea9cea38794d9b3c6703b8 (commit) discards 05da22062ac477587890de7e7c180cc7e8cd5d88 (commit) discards 9fce9cca2b01f896c075cf2599a38fb6bba5ed0e (commit) discards 4a25ee113cd132e15e4d3b5c5073da76c02a5473 (commit) discards f7660ff8ca19f72de10d47698e5389700587148a (commit) discards 93551ec45ffcb1f00e88a3e47f1c6cdedda783e8 (commit) discards fdf5e062c75d6d55f8e8fa8f3f6dd0efe3663340 (commit) discards 57661feb69e776c4c54681084237f16db7f32360 (commit) discards cdee12f605cbde35172b45e37acb832bae1b4bc5 (commit) discards 42aca28a6dc4f460b60c3c82819706132afb89cd (commit) discards eee05f2243f9dd68a7ac445716936f8e5f0db0ff (commit) discards 603bfe4e998bb951bd6cd888c665d666c498d67a (commit) discards 3a427288c06f9dd0261b227360be2ec448e9b6f3 (commit) discards 82c65ba5c5c9a5bb5a0f4582c1e719a7159a763b (commit) discards 4ec4aa74ed6faac31eb752a18cc4978f74471bd1 (commit) discards 7969184a10e58e609f203032ff3ac902d8d92d3b (commit) discards 1707b43eb2bf1932798ec3deaff053b5cd168458 (commit) discards 2cfcdd2b870025d776d0b5c246764f09594bdc34 (commit) discards 829b8cda7ce51877d946627beb3335a2ac4806c5 (commit) discards 42579f6c0ed3fe25264d23cb5e949d07acd94221 (commit) discards 094dff091da1125102c3e55890317af748798d8b (commit) discards e1f67dde426de4ab2c2e9013972bc51b81883cd0 (commit) discards c146d78ae0c80e97114d11a5e50eb4094101ee61 (commit) discards f35eabe9e13b51c50d06dfa32924cddbdd863f28 (commit) discards 6f7cdfdde45d0c0c7a994c67d096e78f36aa8ce9 (commit) discards 1e1aeda71ce556388b343fe260c1b3f6453b945e (commit) discards 6dc53a464c1237b30bc57b03082e9d1cd61157c2 (commit) discards c6dd1161e1b558c364db187ea60e83ae42c98846 (commit) discards 4f51a06046cb500c742a97a25bf5c7a83ac474bb (commit) discards 9e3c8ebf0ab87d29303f4e16c301a23b8fd79cf1 (commit) discards ffa3e4bffacd9d48a045039e74c7a66c00e52e21 (commit) discards 064625f2bad266ef19d2154b54abbcfedecd180b (commit) discards a7d2520836725e9dcc8611ee24c6e80f7fefb14b (commit) discards 30dd4f8ef80674b0ec32f6edfd7b1c6740776dfc (commit) discards a6782941026ce348d124e59e6c47c68e46585537 (commit) discards 0134ce0e8c10e23d1d33fca8b65d817ff07a05e5 (commit) discards 9c59989b400c535791e71d561f556596f33f145e (commit) discards ae11f760358c8bd05f95eb81118bd08bd88aa416 (commit) discards 4f663fbb8dd72855e36b697d16cd609be656b993 (commit) discards dfbc299c33d8dafbd258f0d9d096cb5c33f5aaf1 (commit) discards 6e16fb8832cc6fffaf0661e5f120b4b4f6f09bf9 (commit) discards dcbef5041fe0ee9a5d311a2095fd001802067897 (commit) discards 4cb9f82505bcc8a653daa478b76dd3260ee725e5 (commit) discards 1c08496a772bc81169a3c3b19c4ef167c9548e8f (commit) discards 4704f65dd10366137d9d04cecd70355cdd8825c0 (commit) discards 8b354630d9c4601aaff6339aed518fad1012a8b6 (commit) discards 6df91a60a90479a0edc403c1e6d5f6cb69747413 (commit) discards f57e02b129a54bfa2fc0a4ab617e84ffb69f66bf (commit) discards 78fb739f9a33b22eca2339a2c33bb23ba1808781 (commit) discards b190c080a71b5ad153d58a40256d6144d2e84b32 (commit) discards dd7fb25261b19798e72e62f080560a504f0e3522 (commit) discards 06fa63da7d37bfd28ea1f82704f8140fe1493bab (commit) discards 128b0c61bf2b5fed81e1f9ee1970e9bd63668f1e (commit) discards 0740c7982f8f91f97223e6167d975eb488df2fc2 (commit) discards 4c693cebe35c199d8fba8ce49b3a8bfec441bfe9 (commit) discards 3720acd7bfebe5f6ab4221162e6d1dae4eb6d19a (commit) discards 6011d83d46a2e74dd96040db5ea1b162aab155e1 (commit) discards a58c3eb495ae81acb0e443963dfb024f26c139c9 (commit) discards f416e0618d670641bb7c66d5130dcc3856396825 (commit) discards 9aa6d8588b8ec2b0ebe9792ab732c428cca8e032 (commit) discards 1e29843bedbeddb204314b6dc951687c59d6ea6b (commit) discards 85de1ddd36462a7ef0fbcc6ea3ecd7d62a515491 (commit) discards ff7ecb92c57c91ba0da0bb833dc92fd9a7d9d2fb (commit) discards 79fe11f106d1587f3e31cb0749ce45805b585d93 (commit) discards e84114c69c2ceddd3f9565ddf420664c70788dec (commit) discards 079d87ab511129a47ec67e9e9690696434b41bfc (commit) discards 1d136a8197a3583b034f52ab2fb4e8caacb6ef29 (commit) discards f3c457f81e18c4f3b9fa7ca66c1f255a508e381d (commit) discards 2e0dac4c00494b3de4f8032f3f45724e1d232e3f (commit) discards 1409adbd6d548f7ef95d1abbc85c76f13f5c8e22 (commit) discards bc236b26c8444d855799e78fc6190273141c2792 (commit) discards 3e031d185c129ef233b5a82735153558f86f1674 (commit) discards 8114ac4c960dfb5d7174d9323bb0cb070f5e8175 (commit) discards b10b0ba74709abea8532a4aa67ecc56a1d277e0c (commit) discards 025b37c0d41b1af9e30aabb2046747da6671e0ec (commit) discards 1d001d0d25b0445bb8a78e8b0f5671f201229a2c (commit) discards bab6126b2210146bbe068bd245b9d84044d3200d (commit) discards 25095d3c42d46ba76caebcad267f3afa8c54b731 (commit) discards 1be2f68af5206a0dc742449a71e6e5611de50df0 (commit) discards f6c6c3af25e552820104f16381f0b1c385b6a7b6 (commit) discards d17b49beb5e39da975f284a9ac5735c333bc9e2c (commit) discards 8f5703fd6de2bb597f4b0f1397aaf3356a82cf47 (commit) discards 85ec2aa184259e1da15af73094bde6ecfc7026e3 (commit) discards eb0b17c2f07271753f202b14a5e52d30f8f5430d (commit) discards 68a1304235442e16d4b230800efd72dbac3c4b26 (commit) discards 460cc0a18df64a920c7ce51eebd64506d31660db (commit) discards d19d3bd1b3e67c566b7a2bf1bbf18c0aff29a559 (commit) discards 58dbf94b66d3afb955cff3dffe01f39ad383e303 (commit) discards 7b30a3493ede59756b635fc236bf2038df58dce6 (commit) discards 102daca0973b2e0980eb6dc5ee6485f4cab31124 (commit) discards 77b0fa6c686212fc32c5f66c2a017b95e3c42405 (commit) discards 2b475cd517f9ec42e1ccd2b72edab988ab2c178d (commit) discards df5c75d49d76488736841fe6e3bde1f4d85b0ece (commit) discards 798582d0018ee501e0091d4ae1315d3d1b000ca2 (commit) discards adfa97275e880a785d9611a60af9df9591fe4af0 (commit) discards 7fea419624386df1d36688f687725b5624de5db8 (commit) discards f19528014b75129c08d5749239c86b2ceabaa6b7 (commit) discards a7fe79c03a8036edbb998809bd339cce2a0ac3f8 (commit) discards 5914c8133421a27f07e6c3d8a1112318cd163df3 (commit) discards 99052a9ddb3e60dd978a722229a17a0b4651219f (commit) discards 2d49fa73f23f4591bd22370ee34340a575d02183 (commit) discards c8631b528e702c5dd11fe5a41ee7e9972caa24c9 (commit) discards 34f2dff61d65681cc54366544336d6085fd463b4 (commit) discards 6450c758c809b4f597af8cac9d9c8f052931953a (commit) discards 93b7164a34f40d60dbfd625d0aa90b55304ed34f (commit) discards 36f7cbca985894fb03e4a395a110869cf67378a5 (commit) discards 8e5b1aa579c1ec68fd428ef29eecd9723812c3ed (commit) discards 3aefbb3c78f90c552e4e3c2039302aca3437e959 (commit) discards 8f547be5d75621e8b54321e22198954c58a77624 (commit) discards 82dfb1b65285e19e01e05ced44c307d26548e5ce (commit) discards 89bcd1a093d9d3a976f5a26e0231d0c361647fcf (commit) discards 631b189e9f5b905b72c5605ae8cb5db8658a196e (commit) discards 27941d1e43a1ade47c33f97935fee53eeaf8dd51 (commit) discards c87cc9f9530ec3339f7ebe7f0752e962dad51661 (commit) discards 128cad7e7a34702b9b38b9eaa42a4600de4d183c (commit) discards 5fa4e63ef5ec17d068a75700d5e40127ec82d2db (commit) discards 7ae7789e06051a8b8db16c5e3d2e7ef43ce44c6d (commit) discards 437be8dbb6eede6df0693c6b00370368bc832018 (commit) discards 0cf09443232868edeb25143987f17c39745e71da (commit) discards 209bf58a6c5938411d2c53f5dbe2f86403a50ecc (commit) discards d59d361480e18cb70e9ca64faa57833bae023806 (commit) discards dbc9f8c6ad7d1d9e5e2a2715efceddbb87e2ce95 (commit) discards 54828b82c6c757794439533dda781cd12d0de1f2 (commit) discards a4427fa9d03ba251b3f0168a471d6f818ae69a95 (commit) discards 0437c473420f10b06488bf3d786c4c48b312d0f3 (commit) discards ed1ee3d43992ef0b1512dcca2beb5add480580c5 (commit) discards febdd93da4e12087157861cbf74f929a714e0b46 (commit) discards 08f38a325700aaef5d64f1664d0d63573206836c (commit) discards d4e11ba12596763942888e1c7b6b46949e687c73 (commit) discards 2ad054ff6719728244aac1ec0f9e5f872d56b2e9 (commit) discards 52a7d6a8b1923ce08472a4f6ad9c7640fe4554a9 (commit) discards 3fbaa3720dd024e653b654cd0d081f76da95f4f7 (commit) discards ad69c815edf7f6b70b2e8a872d0968ec99aad988 (commit) discards 590e0eb516f716a7e9beea17203fa462de6dfe5a (commit) discards 1128a5f75d39fcf7c629d9367595e1812f7a1e75 (commit) discards a9282d84b211041bb8552d34c9e3e7c633873526 (commit) discards 1a8d86ad8ba9a87848eed498fe66e715bb7d9ba1 (commit) discards b534f579622d0af154689dc14b4952834318741b (commit) discards c5f0185e73611458946faea75bd3347c40ea4d90 (commit) discards 9df562aee9d17d00549722070d06da6967f7a154 (commit) discards 008480bad1251fb9aa726d497d25148a238e7db9 (commit) discards 5621c2fa857be13ee1f13b4a0178584a8cb783fe (commit) discards 67f80c3e1ba9987369297a37f26fda680b9f9d6c (commit) discards 3a18de5bd9d27acd50c4a117bf8e654a37c56a9c (commit) discards 350647855b53e0b0b7a80170a413d73868559d54 (commit) discards 462318ee7e8ca369f899f580b9bde5fa9b4f23b1 (commit) discards a5c530b709838a32b3ee786774843b506dd0321b (commit) discards 551dfb5692986403408793e051507b37a8b292a5 (commit) discards 740e22350a8e336a29ecf4b47362ed1da72a3d34 (commit) discards cb2eb1395022579149e562d9226f545e2fa608da (commit) discards 3d83e8d0dca7a18bb38db63e006b1480f0068e6d (commit) discards fc50d18c7053505b1696ea6c848f7d2416f00e08 (commit) discards 7b7366a4a2f245088ff3eeb6f61d15226544a303 (commit) discards 2bb3979df7234382031bb095adff94df3f29992d (commit) discards a65d1e56cb589d75571a0a66b3452b4d5d994cf4 (commit) discards cf434b75986b168ce9d72149898fa16ddbc41735 (commit) discards d8ddc031d5404f53afbcdb871a229d3956e99d89 (commit) discards ac6036ba4216f1059b2e9531676de6a99e79227e (commit) discards e9a0668278007cde4aed343560344a99a61accbd (commit) discards c583042c126d064d75eb6cecefc80b4e644c2abd (commit) discards 4bf20848b81d98a2d138862f47aba20a19c92652 (commit) discards 2c99728ad123267ffb654fd47636b6df600a7c89 (commit) discards a6248fa10c53b26189a5450a41504cf486e30fba (commit) discards c567c01045e8bda66c40962686a07a1a567f99a1 (commit) discards 15ef2b1ba46c8e4fdcc91b4de6070f3b8cdfab28 (commit) discards dc918ca9135d8acc7cdc607c5a799d9b905ae594 (commit) discards a745e32037c7dfd326a0776decf3592686f8200c (commit) discards 0beaa3508ad731dc0ca1b198b0a5a28b60e682ca (commit) discards 6d64981a1e9a676ea076f9d4420e536f7b108dbc (commit) discards 09b0ec9428c45f7d95bf4f2aedac27f2ccec80c6 (commit) discards 6eee67b2cc2a93ceddd6adef27e9df630c81e342 (commit) discards f855c4e9157360d4f7bd8f13dc5dc1ed1aeb74a6 (commit) discards 95e89a6bfa0917ed99ff58c698d8260eabb4dcc9 (commit) discards 5ac4b4738ac4eccf5546d2308268035538020a94 (commit) discards 2779faff9887434dbded61bd61e70df452dd336f (commit) discards 49ce1077a20cd203f1d87e32114be06bd15520d0 (commit) discards 3caa1a1c5afc83628dae8312f94b20f32c18c623 (commit) discards 820fa8a738a1d988d3cbe4aec834643448072be3 (commit) discards a0075b2789d08a766732dcf287b0b7a0e7c4a8a7 (commit) discards 8c1e8b7cf477e0f11e374b435ff8e2e3374f0759 (commit) discards 427bd1d2457593a5f250d6ed8a2f88b367dac64d (commit) discards c52d65dbee29af9141d12cfd2f5c1c5b4ac5a3a5 (commit) discards e77c0b4758d3721990e67532f8081abbcb83a23f (commit) discards 80ca453b3313688e40750f0908c05a77d5c4a3d4 (commit) discards 2c50db263a9e23b0240f769c335fb6f2ebc1b72a (commit) discards 15b62be62df4829a76f8de62785e81934610c77a (commit) discards 3357c4c4d4f5a4d2cd7afd58774e78bcf94c4694 (commit) discards f8c44b8b438059eb936c9c59630aa8f2fc123869 (commit) discards f70529359f56d799e78ceba17b0bf5375ecc4d9b (commit) discards 69dfba4b319ff50c22b9265c5fe52be13dbfcdf7 (commit) discards acfc07a851ee91fed1e29c6e53abd9794991eb72 (commit) discards ef88ba3fe1f16d8663109eb77b1931a3fedba443 (commit) discards 3e99af4494665fae90e08cf383eda8a5722e17cd (commit) discards ce5ecc52eb22a4745d46efebd00efbccf2b3507e (commit) discards 36fefe29966b33505d9d4abbc4df7c41ea103e40 (commit) discards 7b9453f8d22753bcd47204cdc5021de351d3d2f8 (commit) discards e8d6f02cf4aa532f9a67d143c3f09d4f3f085119 (commit) discards 915508ce92ea902def48ba166021e9ca4fb228bf (commit) discards 3eb856c1332775686b6003ba2c05c033dbd7ac47 (commit) discards 16aa38f15b98089da59f7cd4cd83aeb1ac6214a2 (commit) discards 285a9ac82799578706c1ae80dafa33c8eb2c8619 (commit) discards c482c4a4406028e02b90dd2e40f5291a364aa2bb (commit) discards 4dbd32d02224616177686afd8733a4ad03d0c298 (commit) discards 45063cf754673b88dfac19d1017382eedebe50dc (commit) discards ca6f06607b0b93781483eaf77c071c1584d32867 (commit) discards 86144dcd9106990de5c5329f9c8be60d7f329c89 (commit) discards 2753adca6f98c66733498996b2072073823114bf (commit) discards 0d7f16649d8eedf2c0ff0c3ae33c11d4fb00b2c6 (commit) discards 8a82bf6a83fa1d9c3c53cc5373cc793366d6b954 (commit) discards 13af2b0fdf0695e57434a1280a3516639923d19c (commit) discards 2bf0dec52a41c7eca81e5202c8036832c13ee8ba (commit) discards 83620f005466912adc850cc84abb38e62ea988e0 (commit) discards 53cbf3a06bca2772947ccfa960523d09caa59285 (commit) discards 98d240d859f0c462bed41edfdf19507043e10c04 (commit) discards 7d6bb488e1754288574dccbb447b49388929af8b (commit) discards ee0d5f1e984acfed8220bf474c5b32f583a584a8 (commit) discards fd0b03f2f7a807c1bf56a44a129fad4ede55fe4b (commit) discards ffcab9ba5822eec95d349d937b5cb11e7ca7c2a1 (commit) discards b80194b8302ef3eb1c205008f238ead50f34d50d (commit) discards 987430c70a226a5dcf88d04c3d1ab75ac1b142f4 (commit) discards 5bc304f7fa8e3db252e2c469f9df0204853163cc (commit) discards 100f5b6c1f44e7b49f0e95e6b4e9f18e4599b05f (commit) discards 21d33bf37b0a254b68a3dbaaeb085970503b52d8 (commit) discards 373eb5496726103d42f447c5a6cd47b8ac5ac138 (commit) discards 012287707792efea6ed928ceff52cc15364e7eb5 (commit) discards 8e743b99e4c688892ef05271b8dae5adb112f2c2 (commit) discards 64e22138a7dfb5d23940ffb52b8b83f4b10e2b67 (commit) discards 0a9885ab197a880c0841aeb93841e8744466fa94 (commit) discards 0b65f7fe6aa3f696ffa4dc9e461873050c15745e (commit) discards 259cff6357cba8ca026d1fe9dc98002c861b4c3d (commit) discards 3743aa11fb04cd8823ccfd44a5ca19f3f9e14d1e (commit) discards 76f12008700b61362056b2d84420becd0983c3e6 (commit) discards 842ab1091e7fae4e2622ffa2ac65bfa0c5f3a578 (commit) discards 3c025a5f6ef26e1f1c40024699559f2b7eb82aa2 (commit) discards 388339d0539cdba1ae195e025e50c1263a85dd2c (commit) discards ab5aa681784f35ea9177a7242d4c92354e0110c5 (commit) discards c82b25a69a79e7affae4c350ff7a3ae6e5672e00 (commit) discards e0c3ddaa028b3fefa03e38e407b91b2679839fe8 (commit) discards 6a6face475ced78e5fa599eceecf7f59974bf6bb (commit) discards b94fa03c9363908624585311954eeca0c209c3d7 (commit) discards 9eabfb57e72158c58c59631390c0dea969d9ecb4 (commit) discards fefa0152b87e56facf57e87f78f1acb78e87f8b4 (commit) discards 60a0124433790253adab5901ca1c068903b517d7 (commit) discards b6e28c13f00cdfb3299ba280395333d648385be8 (commit) discards 0a73c85ddcec8bc343fb8e59815df97a32e19f53 (commit) discards b3ed7733f0809ea9abe62f2f8871d6f5b3121513 (commit) discards c15de1b00bfc57444dc9b422db5f61a597aa801d (commit) discards 4be6ad4591871762f70a562456b5082e52a6ce80 (commit) discards 94425f4dc9e3812818f15bf57cf01236ce86d3db (commit) discards ed6c614f7b76a0ca8ab82acb36c62c1775f22c75 (commit) discards 1a8073bea3764f60b1110ef86c6ab2e81eef59e9 (commit) discards c1a0315c964dc76d3531ab412eb152444f2b241e (commit) discards d8c11333e86e6c8953900420228fdbc3bbe2f758 (commit) discards 0f96f10ec66b118473fa349702fc8355e8f0412d (commit) discards da12ae2f459d17c0775480df1fc71753fac813ed (commit) discards ecce4291e6ccf51902d16cff862d3a0c729f4802 (commit) discards 8c68af5e7628d7d18bd3e34e300044c459b9acfe (commit) discards d88859dfcdc4e4dd1e00a854bb4115d7b230a72a (commit) discards 1d054bf65c67edf290109335872943ebcf30cade (commit) discards 661750987f93018056665223f347141ae8dc5555 (commit) discards 74500a2cf0368e3075762cbaee97e8186d46786c (commit) discards 40c80f35e93101996d20fc10d3ebc14eaf6b660f (commit) discards 737eb5caab017e16ae73d9ce53ab566bda04e891 (commit) discards 5efa12d728240c156b4ee9463a6dc18690cafb1b (commit) discards 210bb6b7a999c1ab0d898e4af64fbd217dbfbdb8 (commit) discards 4c5f8244fb2563381f5abf9d7513639dbdaaa73f (commit) discards d18646ff86b3983e7b98713a6f703e4755c01cb6 (commit) discards e0481ff2308cef250fdc14448e7e75b86520e151 (commit) discards 973f819ee872c16a596d1dd1bb6cbf85e9065b81 (commit) discards c1c24657fc549f6f332a91b875d1cd2126f32b91 (commit) discards f0879ca64db54ac909c4e10787918b50126f9ffb (commit) discards 11915337b3e9e3964e5a98155d5399e76fe30803 (commit) discards 8a48986c38539150ac5eeafa11fb584de68e1d85 (commit) discards a173921342439ec3e2073b0752265c22078134fb (commit) discards 30319c4ef8f1de651b1ceee5dc6ae2bec0b3dfb2 (commit) discards 95105b9e140a74048d0bcd015e92c8ddc6593a61 (commit) discards 5f09436b9fa31160e3d08ee502486ea0472551ba (commit) discards 9aec617f083d5b27041ba36d727763c5ae6efe37 (commit) discards bd86df676c8b19c0f5a4e5d87c0074caf3ebcbe3 (commit) discards 169c867f5671fa6cca2fde53b9d7732c348c7499 (commit) discards 60fd5e0a216879aca4f18e840a73e26ad95239d0 (commit) discards 814dafa67b9505e7d8816a2443277c9de95c5460 (commit) discards 7fde97947770258cd175756c315cbd07295bdb97 (commit) discards a4f71ff435624bbccb41f912a2d7470e3c35456d (commit) discards 9eb5112f845b9634a40cbf541174a531f96e43da (commit) discards 2f7769aa7c25b9d051c29fdd854ac010b1db740b (commit) discards 06a1320496736adaf831328f9d7321dae6a296b6 (commit) discards 248c2a8d0bd7eb82ea9bb924fd3e930eb4113ef0 (commit) discards 1f615523e9bc05b1f791da47fc81cd585be3c595 (commit) discards fa7fb614ecd53a88893e5d9c9ed6377531d101e9 (commit) discards f5f8982bae9a2458fd49dc0dd0b820b0694b3723 (commit) discards 735edbd3335791929fa2e9ab4cd25b001dada607 (commit) discards 40895db516323e2cffab7162420d8db0db396c68 (commit) discards e410257de9ec20cac70a365a94f6d4ddf48ccc57 (commit) discards d623d67864ccc5b6158bd215bd3a164ae2b912dd (commit) discards d5b9039b870a8a05e146cafbea49a216e15f2d9e (commit) discards d8915b7531f6a5d6f9cd6c59d2b22b0d6089ddb0 (commit) discards 90f36278dedaf61119fc5376f578a0fd3227a106 (commit) discards a619074d7091adfac7b75acc2f5f9791b7e706cb (commit) discards a35831232d00cd39156b487539726d780df7abd5 (commit) discards 0a15455b6d15150652cc57895ca0e927ff16b765 (commit) discards fa25e0d8506311e626efe062ab4d0978600a50c9 (commit) discards 860c2761ded6d8133a028cdd1bbc567bbb74e486 (commit) discards 325b8b652927c23b95bbc5fe1d8bdd0a139e32fd (commit) discards 9ea624b0096bab173c819bbd30332cabea2fd157 (commit) discards 6cb58a0c8b5628476b4701f472fc32e5bfb10664 (commit) discards 940c1f0ce5397c650f17ceb232ed348fbe3e3f53 (commit) discards ce8075b73f0655b6acc4a2a33cc66eae51aa3d6c (commit) discards b0028012cb44d1b95f0a26b6f8fb711197a07b5b (commit) discards 5f02a789f332fd4addfcfed1b7aab32a53be60f9 (commit) discards 9881928d4feb9dadee3c882387dbf64889b18ccd (commit) discards c5affc51053911dfa24b5ce9b832494b67db3f63 (commit) discards 5935b45f7b2be4bc6fbb28d3393e5feab16bbbf5 (commit) discards 3291bc8fdb63b145b084253b34a8016ac71a28de (commit) discards 4589ab67e00de9b5907bf06fbbf0fb6f9ddcec7a (commit) discards 68c97b483a678ae46abc7b26f10ea3e0908d4411 (commit) discards 28a9569214df943df4b93ac6003292c735fba4ed (commit) discards f377a0273265f61a1fd056e63ab106020262827e (commit) discards d678084c293c0d82aeb426647aa97f1f6bd80f3e (commit) discards 87f2a8a78ae564a0b964f5e2bb8b19778066811f (commit) discards 49a85a895ac60be51f27c581ebb1460ce61a5b47 (commit) discards dae043fb7d436054801515025ebf5414aa1bc55a (commit) discards 72adc8e8f8674770424148e70c32866d542e3a25 (commit) discards 26594e5deb1e9c8e3332cd52da9f96c5ed196d9b (commit) discards 096abecb3fc9fac10514c7cb48a2c04056273520 (commit) discards e64f7e7fba6ab35343ef380f215e26d88ef0d01e (commit) discards 09e6248ba23e6d89a98d03f4cb0831fb6ef55e3d (commit) discards 860f73b3df7c5106b3757330b7f37ed44730dcbd (commit) discards 67f87e683f8845b688cccf663ae7454d96e6dfe3 (commit) discards 37820a8f5a8bc3ee186fa8c6e0a30991b245c36e (commit) discards da79119d0d6c3f5e582ab75b95f0c1f9c020a866 (commit) discards f41e3d250966827dd205b7b2bad71a92536ae6f6 (commit) discards cc79c8aed0dd5a9fe3d757ff9ce6d62a9210820c (commit) discards 5af5028a17c37727a4fdacfa6e422d3bf53abfed (commit) discards aa18ddf66c2c8fa245e3e514eff15f005f1308c1 (commit) discards 0aeb283c958ef98888ddbf5f2ae7afada69bc76f (commit) discards 5c3c29ffd3a36e710792d7b9954bf3ec95cee58a (commit) discards 3ea132eb29448001cf27544e3fd1e35fc4b0574b (commit) discards ccb0cd8aa281c21fc7d52f6ff02fba6ff22b80a4 (commit) discards c9c01afafa13d18be066442a88be86db42035b38 (commit) discards 4b05997f20c68a689672a916ab635593cb6e5eed (commit) discards 89e59bb7837fc98f30ef55e021196125b10faaa4 (commit) discards dc6cebe35f74b2fbc1b99434d04e454bdb6525f7 (commit) discards 95a6a4bdc8736745e129e510c91a76f41d1cb0d7 (commit) discards 4f61b2ad49cc88e7a6a256cad88abba01f3b0b12 (commit) discards 9921df6e84a0a634a45dd925a0a11a6ee182d1e2 (commit) discards 7c6a5fe2a078438b5850a75a22549f280a16f3e0 (commit) discards 3f1362b1303554c452f953e5fdae1bb44e55f3c2 (commit) discards 38305a812e6d79ce60b67130f9b6f5c37e32b39a (commit) discards fd2875d12dbc891b0d6faa6c84e813f12bcd9c2f (commit) discards 6f6181e6fabf21ef75054f18c888bc9f7ab4b337 (commit) discards 807f894540524fa0a8be4e5e8d6825854e137d41 (commit) discards 3200e8d1dc2e0e16afbc7d362bd1a8c86fcbca87 (commit) discards 220c36067e8949914b6fd882c1043bdef43aa14f (commit) discards d2487b06ce93634c81b9d5c5240af7a4fb14f91c (commit) discards f32438efbf1c303e080b7b1f3e86ffbc7fc2bf3e (commit) discards 2b10088142730c946c2ec4d85ba59fa65921bff6 (commit) discards c1cef9db1cadef2baeac082acaef9f80338cbfc1 (commit) discards b53b796e150debced88e8268c045740123c1508e (commit) discards 2d111925eda60eebebe4764865fe57f49928396b (commit) discards f26b6a12367b7626d332499b418151338cb751da (commit) discards bce2428ee4f1634bf32ff23666f14177334dfdb6 (commit) discards 285ce5413c950ed3704995de3a4d951744d3940e (commit) discards 48d907b94766068e145e7cbf6d8886061037a0ab (commit) discards 6e32c9dc34b4fcb61586e8045777db19bac77b17 (commit) discards d4bdfa2ed8c9e0011aa42880f263ea41d91a3cba (commit) discards cf240dfa5d985e5ac8f7e11abf1bc2646b8b0a9e (commit) discards b80f57d14676b2f639554496c0b9d19c67e0aa2b (commit) discards 0c438b962c6585043dc055d3e4b6aaa2e99e090e (commit) discards ac5440e7341faeac3598711f62eee8039462f72b (commit) discards ae266f05ef6da227ba295ed22291e1fe746aaf05 (commit) discards 7f827ece69940026a557f7906ac6436d24962f57 (commit) discards 284b149f166f4a51e25a6ef32e234e9d88a4d005 (commit) discards 4fb64da89dabb20fa5e1c7a7268c908d7f23481f (commit) discards 1ef4199563c059e06d1911011b61a185f5a769ef (commit) discards a388f6819fca8ebc130dbe9f5c6f157a08885fdd (commit) discards c2c3e9f3733bf0eeec63252574e76d292a86b65e (commit) discards 149f438315bfbefd040c5381916a5c428594e701 (commit) discards 4cebb90e6d8a4d123b854b488f9ba1e6e419d891 (commit) discards a8d9abfec3ca940bbe167dd17d54584d4c1380df (commit) discards e7070195443970ef07bb22280dce099c382a4956 (commit) discards c902929e98100e5895b7d06b2c9d06e9dcce4423 (commit) discards 0c5c6acd4b370fed01ba977ac9dee77fd0f9eba3 (commit) discards 07703234998b0d9bc1adf0c3db79711ccf51f0a7 (commit) discards b1cc97b31c125579f6aa84b513226966339ff787 (commit) discards 3a481dc2defc6a00f135ddfbd105b26d4bc60227 (commit) discards d476ca2703ac95d271d0f5834714a34e5e5dc243 (commit) discards ee27398822ff58d00ee45899128354b27ddf56af (commit) discards ef05bdfa0c161137c9028e69f821b05aa6cb4581 (commit) discards 689f86ec9aeba325e7f5846fffe760e4d57d7656 (commit) discards e101aa7d114e7e398b2bae3fd082857babc47a87 (commit) discards 96c192e36385a92ac6e614831fcfffd68c13976a (commit) discards 3f52c32ebb037d504c4ebc6797d318fe85747dde (commit) discards 0817080fbb3aff8ff114047c63e7b51992829187 (commit) discards a4cba1faafe427a465ec9d78b7e6f770e11e6b54 (commit) discards 9c73f92cde601f229547ed4795a4d4d351b43a02 (commit) discards 6a3f01dcaa5420dad4871a2715dd753361c7632f (commit) discards 966b73f5903810892388aecd379d844e1d830169 (commit) discards 4f0ba0ac922325f46c7fa513d117f0aef076e625 (commit) discards 731f11216cb3f40fd7ab5facfc037759e4e62838 (commit) discards ef4032f7262eb1486b6f83402c14be90dcddf7d9 (commit) discards 9715186541d1b94762a36a85ad769339c13c9c60 (commit) discards ade4ad327a1a7e061a879c8f327af4308ae636fc (commit) discards 3fd4bd8cf59b0e3612f4d946201f63485f245649 (commit) discards fa4cce658a0768e3ca7b8e2de086dc045aa0fda2 (commit) discards f5de2d8e8a097319e6d1e9db23b19e9edb3e6c5a (commit) discards 614e2d3488b1306051f562e98c103a3a137773b0 (commit) discards f36c2841a7a62fb1d6df9c12065f79f4a54be996 (commit) discards 7686e8d86bfa049dbf72adb308d9257ebec958a1 (commit) discards 3f6c93b98691da7426cd9b75bea1d6ba132091a8 (commit) discards eba94c24021fd411aa8196015bd91ad1f66ba61b (commit) discards 0d9f208ce393702510ba29b3193f760a5cf71b63 (commit) discards f4bf45211ee4fa6e869a6953b4b7b87e7731ce4c (commit) discards d81a19c7edb2dffa9f4bdbdeadacc8cce16522b2 (commit) discards 1e9d94195d8d2c5ef36f68314d3a7786235cc98a (commit) discards fde2c82eaaee2fe29f564b0ed5d95283aed5abf5 (commit) discards f8b1fc024135d61e8e5b01a914422db3c6a92333 (commit) discards ae98b7c754601dc524cede3f564cf17d5d076de0 (commit) discards 1f09ba7030818eb51d5abd9f32e0ae3c873c43e2 (commit) discards fd2458973141a0820584c36dba3afeb9de032599 (commit) discards fe6566df25259a6cd03e756aa148d98c73c6a947 (commit) discards 817262dff24bc37af224254152900858f8f62494 (commit) discards 172ea187ef9486df4e1fe41cb6c6774e86a8bd46 (commit) discards 9759197a80a2e3b295e3c1ef6f420a8d135521b0 (commit) discards d608b74b92d989fb8ece93d7fdd729fe7ebc9cbe (commit) discards 1c381be5e1c8d01288ab198520141da5f7d74a8f (commit) discards 1a0b06dd6dc08b5253ea12e9f1b55dee1ac803be (commit) discards 8c9e5f5e73a474ab208694007e0bee63cb801304 (commit) discards 2a558989f553964140f612fc6d7d0cc3dcae1a19 (commit) discards 73da92702c6e26e859dabf55f2c9d74252021b1b (commit) discards 7fd618ba818b0f9c30777971852482c4c8d8ee8a (commit) discards d170c90d0ad3b749355f15ad7f91f290d7329156 (commit) discards 62e71cadfed6f49104496c1dff176935f7fad6bd (commit) discards 740892f979bdd5809fb18f3f529ad908bbebe5d4 (commit) discards 99e58d5e35fef0bd797e0674e3be7ef26eb6da6b (commit) discards 0e0a995d4909910e08d2c95dfd95c336b81ab89c (commit) discards 38439c33a4250ef49129ec9d1978ff3fd0024cfb (commit) discards 9d8847504ce1b5a02fce3393a4006e889f4abda0 (commit) discards 00a04096bd16b596d441f837069724908e697c83 (commit) discards 78ac31774a09ecc1b257694896fc0e37105d3772 (commit) discards 04dc73712e197e6515d9044090cddccf8c86aa89 (commit) discards 045eaf7e810d346b9a2ff0ac36515a0596ddaadd (commit) discards c8dce2768943c1fa193e758936a251c9490b5fc7 (commit) discards b345e9206ebc65030aae13561cbca9c261f263b3 (commit) discards f6cb72e00bd813e4878902a414272a4d036b6f22 (commit) discards 53dd35e55a05aeb6b250c3ad9731c708249f5b93 (commit) discards 6b66f299c3a7a46ec09da88412fab0b65e2f341b (commit) discards d44d3d7e4f85088d4b0d860573261c21e079cbcf (commit) discards b8ed9dcc9915c77bd294e0a20eaa6fc90733ac54 (commit) discards f01eaafbf1f1cc0791267546dd9d72e6da6f671b (commit) discards e8b3022ad2357dbac46b7451198a3a7c5aa7acca (commit) discards c2296a5929637fdd77b470330e2467a43a80d2f6 (commit) discards 54af6f86eef18ddae4a73142b0667c832a626f07 (commit) discards 37669f7c37f0d2e722253ff81c8074a153fe5aa1 (commit) discards 1998e91525180522bc0503c4c0dadb31dc31f6a8 (commit) discards 1399953d7ad1b68653a3688c59a283cc107e2506 (commit) discards 85851721aab04bb870f8918b50807f138bae7c8e (commit) discards 2746af6cc62a2b4b3f9761b9b838319411822b78 (commit) discards c8fcbc95076aa8f0a9a0f216506dcf400c60ec89 (commit) discards 3f9d98434b29ad77aa6374410b8d3c45ead477e0 (commit) discards 9b38b8d0336e88b00167f03ff152bc900a494e4f (commit) discards d13fb919c5dc3cb74433918e019d3a545689940e (commit) discards 58c76d9de12b4ac763b59169c0801513f073e53c (commit) discards e8b7d7ab6ef0f02262919f7b9ebae12d985e42bc (commit) discards 76fde644eeff51ae33fd9dc63583e7adf163f1d4 (commit) discards 70b9bc55d89ab2e545a3ebd1b92cde1c0a56fb5b (commit) discards 253d6095f73a8d42101e9e2c197b341bec57ab0c (commit) discards c3f41d07ce79d23e4bdc79b74fb13463a4241c79 (commit) discards 60ce8dd510b5ddc4d2465d75b059dda2d4e123cd (commit) discards 82c86e4a875fb74ed455a2cf34f2b82a18a1417f (commit) discards 983811fb737927e3d50402b34d15fe03bf2cca42 (commit) discards 87fa74298625bf860d9d607a7c5446c210f6233b (commit) discards 99c7be0411b3117a81d5bf2e990af1bdab14fc1f (commit) discards 452eb7ef198d9792086517ddb93ddaeff35facce (commit) discards c2459bf1167b9e019292b7dfe1b7cb2bf9657a36 (commit) discards 6f36887fea0c630d40b2238f2e4679e24ca4408b (commit) discards 7697f2d205067cf5eb7b0b387314a621b8d896f4 (commit) discards 2a69dfe40ee03787e02cdba0fc0a785b13ed8eae (commit) discards 51bc77c9ebc3a4356f21e65965ce807222fb5eba (commit) discards dbe53d48c1e7649ab3f073e5b04608027c6113d8 (commit) discards 8e3d535ae9582cdcbbec0a269cb98aeb358cda17 (commit) discards bee22eec3e34359b0669d63f9aadeeffc5ef5805 (commit) discards 743fe7d75f43842bf9ba5ba15d30b2cb4b6d792a (commit) discards f21e4ae9652b17457dc058b598274538a7ff2d89 (commit) discards 98f77b65bf1848fd3b29c4fe3a4c2b041258aa58 (commit) discards 3407f3cdc19ed352d4cd1145eca25b11adad6fdf (commit) discards 235f381ba46a49aca8f029b3e9a7c00fb564b19b (commit) discards 895bf36e8173cd4822050dd351833a772d0e9510 (commit) discards 23b74116b99c2a514bd3c353ef7a06df0bc20250 (commit) discards c9a0af8cdd549a27e1b8002c22209659edff2dc9 (commit) discards 1c8e39c5048031f311faac056f6f92c9663958b5 (commit) discards f8512ddad6cf2648835e02d00e0327a41e0d160a (commit) discards 771eca76401502032e2e70fa46d4069f63304745 (commit) discards 1b59af5fd3ac3a6ced99dd70b4e319b837ee8361 (commit) discards 43fab4ca319cc88f0244470adb2732ed4afef4cf (commit) discards 4f657d84432683d288da022c1f13f70ec93e6591 (commit) discards 193ffd64b5bbefcb7345e1911b2512029995b3d5 (commit) discards 972251f54c7c3aa652cff7262783ab2660b52a43 (commit) discards 6e996316db2b07f49fe806e19cb667b3f4dd4b16 (commit) discards f819cf535653a2ff9aad630ce4b767421627c42e (commit) discards 9462da361295122182406dbddfb5107694ab759a (commit) discards 051a565a7adf3c5a7e0dc02306a0f5368a74e212 (commit) discards 5195e57aaa313fe3d9f14143a6f212cdaea81ccd (commit) discards 0d9da559ba10e1a8b0a035e8846bd283a26a6b88 (commit) discards fc716a5e14862935267dc71d70956a44a6954e1a (commit) discards deb1a0f889f464270843f9784ff2d31318b6c5c1 (commit) discards 61f41f354b513b64040401a201fdeb834b38aa6e (commit) discards 3764e447b0a3ad2fcb441ea4cd4cb7b7e0ad0091 (commit) discards e69434fa257c42e39b96101c37c39e9178369573 (commit) discards 3646f09c7144daafc0d75e96d35031b959b29300 (commit) discards eb52b449c2006892e5d13a035ea3c9d31b1a602c (commit) discards 37e53989fc45ec2f99bc987332c013bc910d6fb4 (commit) discards 0437cdd7f55c6db8df6192810be69a7b6da33206 (commit) discards 2f903094f2ef23648b188c32e6af6a74d2210b5e (commit) discards 4587e6413313372e2b79e5dcade31d31fdd99caa (commit) discards 1c3cb358eb55f4f79ca1c643e06c0f8d0f88131c (commit) discards a1060e121ff3ffb6d6b3a0507e4ae95bcb8a198e (commit) discards 73f154f9c60569bbdd8099dd258196dec16e50a1 (commit) discards faebec04a26a9cf9593edd5a18211d589e476d11 (commit) discards 03a77924ce27480e0590a1fd18c3f0d85f21eeaf (commit) discards 67e9bacb4351e7526808d055348fbc5a85269f32 (commit) discards 4164c62dba16fc379e7a56e7a86c6ef21680144a (commit) discards eebca92b95939f95b7e07c55c28f628344430a69 (commit) discards cf4630995c56e8a82110c142e81c2f352575cabe (commit) discards 73ff7bf44c042a9da9b5f3ec987131febf97d609 (commit) discards a9f67370534c230c6e47b0bfaf335841b1c479aa (commit) discards 5a76ddf4c32aab2ec92266dd93bf79dfc16f3c98 (commit) discards 7f0ac6470749e7137d9ff9d1d68672e35fb8a405 (commit) discards a72d0fa80bc2cfe8ddf93c45fec8686fcbab1273 (commit) discards 15a48f82f39d5ad88753e872e2d78a45fdf24598 (commit) discards 2216725bcdb36e430ca573276fee319a4db82912 (commit) discards cc3e2e4a2571370453f94d6bcac5eecdb97c322e (commit) discards b2d3baa92279e3e3ff8a34b21b38ded2ab20d738 (commit) discards 8a06c19c0c01bdd0c5db03ab5f078b165ccf2f11 (commit) discards 003ab492daa04919821edd85b0707966c88faa0c (commit) discards 3dad5695df0dcc7a6457770b978ae9292415fb8b (commit) discards 004b6b1198eb26f3ac6add170605a1072f64ee1b (commit) discards e4ad85cb200ae211795681dc627dafc947433712 (commit) discards 47227ed33e343a5c30f88b92be1d79d654359cab (commit) discards 46596c10169b40ed1bdf2b9300f1cc70c2642de9 (commit) discards 6e5b15cb50a68da73cfb75aba5fda9d820707817 (commit) discards 3328284961ecf7d404efca02b94d7747ed71997c (commit) discards da5ef0dec88800e832c11de73fd372a0370af2d6 (commit) discards 3ff5f7862607201bfe3b43f9abc6fe17197de9fb (commit) discards 0c2d53012ef21d58db4bc242b500422ce19dc9e7 (commit) discards 1416d214b3a840627e37b1e2d56a3e8095e4bf32 (commit) discards 3b31afe292561dbc67b42c855c2921a6b24284f5 (commit) discards f9bcc78f4d7d9eb3c47c2c83c72c1e85e6019382 (commit) discards e929515d7ce73f08b9dc72e3db7e8554344343b9 (commit) discards f57c9fec2b78acba11cb8716a2ca9681fb5b4b98 (commit) discards 398806c2cc5241589133a8767b046fe7a7cb36e6 (commit) discards b3482e3e886170e45f465523afb2cf8866def7b1 (commit) discards 617d1996a0671cd37d7a3bfbc6567dc606ff743b (commit) discards 65b0042e1d79f3486db07e973f41f165a676ee81 (commit) discards e1dc07e182b0cb15b20394c79f37794e6df99e62 (commit) discards 2c6bff053f294d31b4f1edb80e428f4c8ec3d572 (commit) discards 8ad705f14040ae252b938830aeeb9124ebc5af72 (commit) discards 7703057d02ac901c018fc1bc62b985bd3399f5b4 (commit) discards cc2345200e5c5f7910486f9350a3fcc724910afa (commit) discards 155f2a3477fc675e3a2f501633006cbbff550768 (commit) discards 86c09fe543002e0d89842f89e22a44127da7ee55 (commit) discards 77d69c5cb6e758d6e7a6ada2f2c9f435e15010bb (commit) discards 6cd2d2711b401c157d5c63d647a065bc97cca174 (commit) discards fa518feb6f9ebba7ed82c4e6d93574b8f6cc1b99 (commit) discards 777e43700164b2e334a4e615d42cad0282eb7761 (commit) discards db6150b7f37ea92e772b80dbbfdd40993b74ea68 (commit) discards 7aad0f5dc414c70a1bf3954e47ba985f746c0877 (commit) discards 8d8cf44ba0bac59ebe210dfd9d20df970795d410 (commit) discards 0c1550496eb9a3a2194d97a38947652e42ae1dde (commit) discards 20168c6965660704a736c112f859fd982ae96fc8 (commit) discards 6ef78aa78a51b1a1678f251bd14818acbba004d4 (commit) discards 925a00bb7f61f375432cc4b271cb71e7c53cd810 (commit) discards 08a867e5cdb2832180539d57f2ec28e4b0a4faba (commit) discards 301091557d3d93589075159d7a9d18d01c07b359 (commit) discards 8c944e8263ded6f14af1d151f44eb9b48a84ac98 (commit) discards c8a451328e624c59afc4a9fd8fab06f274eff4a7 (commit) discards b7b4ffe7cb77397923fd56b78f994ae057dc74ff (commit) discards 41488e6aa5161adbcf50597842d2dc43ae186792 (commit) discards 0cf5953ef267c2713b41ce878343c9be643ced0a (commit) discards 10c2ddfabf9168555c8b417d00daaa138df479f2 (commit) discards d0906b1677a518037193145f40288bb996ba188f (commit) discards f1dcc821fe84e59a37119fd204afde366e6984c0 (commit) discards 8f3f372a9cff17d22e2ba0bd5fcf684e671d60e2 (commit) discards 5176fba24d5666f2c1bec468a41c416dbdd99167 (commit) discards 77031a5070d629430d60e2fd43d5f6fd5e1e00dc (commit) discards 29a45d5906f8c4d13414c659dc7f0b03eb3213b1 (commit) discards 8f432479c6fcdf2e315a503c129a9a534c7a4c45 (commit) discards 3d21e5a7192f03d66bfc9962ec7b7017303daea2 (commit) discards 11fb11ab1de4f238e89b7836a54b97a10291b4a1 (commit) discards 7dea738b73f6427e8af0093b2e9b185a8d90ead6 (commit) discards f6651af5d1ea6ba9699a66183285528be2723ac6 (commit) discards a5ab0a69a2a01df8a14a7dfaf060493f4fdb45db (commit) discards ddcb4f0f656c001fa8081b8e8a04151532c542e6 (commit) discards b88c2ee0924bdf3405bf1710a11c8999cc61c6e2 (commit) discards cf2cd52726972ae5be42a2a6b4cc89c9faa6726e (commit) discards 5dae6cfc937abd4dad8169057aaf7c72378de6c6 (commit) discards 93f32ef43a61c80e5084b0c8e03bf8db7b1ffaea (commit) discards ff7bdd5e81b172fb44f6a3b3eb395290becc5e18 (commit) discards 991325c3003de285ed9d8c9aff320adf32e78f1e (commit) discards c28877321f938811323dc22b9b4673e037ac1b2e (commit) discards e0c5b99a7f0b970446633448b32b18d92d063d61 (commit) discards 9454b9c10fba540595a995821db61d633e57ce9d (commit) discards a5b2edbe07ec18054bf3119a3ec62839c017fde3 (commit) discards 1899e73c3ed168374c027444f899a81d65b64812 (commit) discards 92f56cce857dcfca4a5e3277128b86318934085c (commit) discards 1a6191a05d77d90c068b748a455945932e0fdce2 (commit) discards aacb3d504383b82d5158ce5daa219dddc8fe1e27 (commit) discards e0a190a543eaa44c2eb18d7757fb477ca5f548a3 (commit) discards cbab2ff445f83b3af1e3f1063994b53b84a9ffe4 (commit) discards 7c8e085c2a48e56421df3e77188f65b0c40134c0 (commit) discards e5f2828eed88f28a8ea27474996dc39bf0179f2b (commit) discards ec7b892e29e52fb5fa791e4fe956422c4ab4946f (commit) discards 9e5df9c8cba2b0b0a01a95ce44387650a2e1322a (commit) discards 1635af55f08c58ddd58bd30cf446a5704f9a6fef (commit) discards c64df1c6575e49e0646b7b67a311278345e16595 (commit) discards 9d414ca2ad8157bc2862fdfbc6dc362271a899b8 (commit) discards 6f6d09a1697c3cbf27bf688ccf57787b2e6d9958 (commit) discards 6561f105fe1c8c5d262c501a086afca0508ca8af (commit) discards aaad0bf35263643c42ae715ef2621a9b1fbaed72 (commit) discards 4607c510ae328a90efd2c7af6671315251333553 (commit) discards 3935a0116c39fe760d7100de04e912be25985d5b (commit) discards 2134fab0806beb1f0872e37ff7388e062370c476 (commit) discards c23c9083f7c349188df0067fbc685d76983d2b34 (commit) discards f0bc1843730bff040cd5bbdd09e1ccffd47ecb80 (commit) discards c6cbbbeefa6d3e9a6d8d2821a7b1957e7ff07256 (commit) discards 4b058169625067639def6b02b859d4c81d353354 (commit) discards 9fb71ba4af3d1ab2132dce49bebfda4f124043bc (commit) discards e8a87f3d46b095501876a1d352f3b17feeb81860 (commit) discards ac403f3b77b567195147fcaba063aab73c227c63 (commit) discards 986876baf18dfee425a883741ec1a9b65a203e53 (commit) discards 2baea07bc34071eddb9a54701b1831d96a590e64 (commit) discards d922c38efd6f1dfc0ab877e1993145a9a42fba79 (commit) discards 5e91eb438847eae47b807528ef694e8e7d868195 (commit) discards ba3057efee7bd1ea37fb70d9e57b0c5be36c24d7 (commit) discards 1e8cab716d3bc5971daf5360e67b12728f34afa2 (commit) discards 1c7710e98c68355507efc83075fc7f7e109f50a9 (commit) discards 9c63fd71adf70c69364385d28acf8743e4d82f34 (commit) discards 9178b7cdf066b709fd70d83533ffc77abc69465b (commit) discards f41f12f460850da28b60e91ccbb9ca7f98ec6e7c (commit) discards 39051c9bd0ffbc6f47ce7429e7d09ee0a045a025 (commit) discards 5724bc58b6ac590a1844f7bfb0cff497754a909d (commit) discards ed0721a37ab40da95e49a3d79b31f082d0c49cba (commit) discards 3df0a0aa91f24dbd08d310e13cd44e8d88524922 (commit) discards 2aa7f9aec3ab5608b8a5f38c6d07bf647bc2c084 (commit) discards 0c249a20a57a744b88c44537df6206cd83ae2440 (commit) discards 93bac6ed6219b86de71efe119e395e2819d42eb5 (commit) discards ae8aeae252f14c079b3bebebfa6e88f495c84922 (commit) discards 015e5e0c2cd0573f1ca07103216530703c337eb1 (commit) discards e610103fe20600300893e78426ade8c645ee87bb (commit) discards ee340f7a764bde9f4875fa927be5343a275c583b (commit) discards 6f86f8a5626d8dc7ee84e7acddc8173189a28a76 (commit) discards 9d2ef95e828f002144279e5a90bb18d17f83e62f (commit) discards 1af2299bd96f8d75142af21439a81a4038608198 (commit) discards 2ad4e4cdcc316de116baa2a8611476dec6b5e99a (commit) discards 9e978e3ee89f5f53991cd09e1b25ba3d2ec03e98 (commit) discards 17b2ebaf51f87d9622c92fce30605989ce1b0afd (commit) discards df66c10eb5c616acd227d1765c1163421b3f57d6 (commit) discards 1c961d4388be52bf7b6d644357a9cc86698d2eb1 (commit) discards e614bb74893c7cb8583f131b1b0fe44af0c128e0 (commit) discards 84c6acb615a1fc48c43f75241c1de74a337b8d07 (commit) discards 466ced075eee8a6721a4f4f9dfb56727ce0cc9f7 (commit) discards da4078d8654177c683d3f0544bdde8490537030c (commit) discards accda6b07f29c024b8e1eef73bd19e083603aa35 (commit) discards 4e90e19bd10d2bd34a6b104f74a3d1ca9b445a42 (commit) discards c8918eaf1e8195bd47570812058f7f69820ae9bc (commit) discards 8675d8471fa57a1415c360ab318e667e8dc6e6fb (commit) discards e72feb19253ed3fc8fe3d119582a0ff81044bbdf (commit) discards 2db97910e89be78c7d51e3d8d46889c6679f48b4 (commit) discards 26c69d686bcce330d4ba4a426e886c77df753cdf (commit) discards 18de4e9895335b894a1b176ce8210e7521e1c92c (commit) discards b6b7b9ade08ad6d1d56c4463444accebd33bec91 (commit) discards 709e96f11e0939638316bb3eab1e0bf32d5bdc05 (commit) discards 255d307cd0cdecd0d10fabc020fd0b5b985c1eaf (commit) discards 06b19bbb3777430b3348a082d57da56f0d6e0e34 (commit) discards 60ebc7d79f98c44fee7d3b9011808278284eaade (commit) discards 6def2609ecf259c34b5d4fcac1f0702e648a7d61 (commit) discards 3f1cb2c0712e4e87b092643db981339033558a1b (commit) discards 40c13235fca82b96a1d6ee7ac6b7bb4d6020562a (commit) discards a6a7e14a9242e7eb8bd0828aeeff39fd0f9794cd (commit) discards a505a05562e50fdf8251e5fdbf2d32383f6b47aa (commit) discards 59345fec63e59eda6c9ffd257ace7b15d4ebfb97 (commit) discards 28ec965e9cb5fd997c611081a1add1c410e35916 (commit) discards 437febee725af25a028e786571120d073933c763 (commit) discards 4d6ba5ceb73a61aafd0a47da70c02c65daac1c2d (commit) discards 892c822a209097b23150a031a76e477cfcd6b067 (commit) discards 6650bcdcb1c99550983a1b8e8d25e8e62735f9b0 (commit) discards e8c13de3780cc6ec4c213ca2c01d90aa3ebd543b (commit) discards af289a56b78fe0d584cd97cb01c7e8d6f90ed91b (commit) discards 9e784682ada6badec5b4da09d6e05594774801f9 (commit) discards 6a4efb0ebd87bcb66a3bf98246aef491c82fa6c7 (commit) discards 8a2444385c68619836ed4e73a1175517b67d17c1 (commit) discards 6d83350ced7e7a3760c60ab37bf5aecd3eb70637 (commit) discards c24aa305bc437c6f1c13ce17e18eccb3a52f5a60 (commit) discards 546ffe6f3e9f29a41584b7f72700f79b4e62bc59 (commit) discards 517360a715c0f52408359715c0505789262692f2 (commit) discards bc76786efe4f4bebfa6fbd5b217b16c596ed1cd6 (commit) discards 72cef4494cf123a04cc1cf447950fa4c51558d89 (commit) discards 0e9460a458bb4b5e02594a0a2f4579845f77d37b (commit) discards e54b99aa321c4290e0dce1c547107642005e78b4 (commit) discards 02fc84777922c6de9923e3f5ef0ac4d3bd7b1bc4 (commit) discards 7b5cca3b2f6a29d570a0ad74ffe242661a930a92 (commit) discards 68e2abd3912d2ac859c161e9b843d878a7aa76ef (commit) discards 4367669ad48ddd7dafabeb8b89e1a4c01189d376 (commit) discards 95f070b6213379f13e37f23af4833e76703a2399 (commit) discards 6c298034a8dabeea546317e152c7167924839c39 (commit) discards 348155f1314d2538353b6936f76dc0466bd60f35 (commit) discards df38fac03da0d9c05d3c613f40f1421088ba8b66 (commit) discards db0f1df7bada28ea675fb563803786e7251c42b9 (commit) discards 03d60ba97b9790ec80a22be5b51d91492235a11f (commit) discards a7c8ee44932d6983dea9a55bf18857ee9aa3e75f (commit) discards f09d355d7dd7f1d66b7f43980523b673f12f6798 (commit) discards 63dcb641c903d97f4e26a83e3efcf24acbb44f53 (commit) discards 87680637654721c4827636f571f794865c2c0a55 (commit) discards 709e3e17fbbc3fec6dc30d31c8f3a083f5e83d8e (commit) discards cc02a6647b5473d3c92318f134ffa6ef081564d7 (commit) discards 780f75dc43f754e3ad10bf48328a33c1d2173463 (commit) discards d4cee4e382e48949920b81e7219ab48f06bfc398 (commit) discards 1e57ca6f0f69efb3238a98434fb086c30f1a02f1 (commit) discards 55a11552a49c59b786feb9c229ec2d4ee84a70e7 (commit) discards 05097f44d032e65891746edf5fecc610017ef214 (commit) discards 4d3b952d7b2d4d708d823914e49c07cd9c065880 (commit) discards ee1304531efb85b41d3c2f84f32c7d2901298be7 (commit) discards b4edadd2c32f881a06c79ab7c1385a27ddc4b971 (commit) discards 7b92bdd86f6d180031d8bea2222f4dc971eab8d3 (commit) discards 8da80aed2d8b2d82f0bd56804fe9366ea651d516 (commit) discards 45795a9a2e8d51b72fb5f19a5de1db628c7dd2cb (commit) discards 562a3ea3d4c4ba431f7c109c6fac41decba96e50 (commit) discards 7e7d489030dbd63dfb00d407b4d61a33d55747b5 (commit) discards fd2cc9a1071279c0e3d41c38d670d0e669ab92bb (commit) discards a06feb122e5a76f43f2cdbfe6ef5ed54ad711375 (commit) discards 5e36f8ee1ebf4538146f9f0cb5974426eac14249 (commit) discards 918bf7fa136b79ccd4a572214b803e94a4fa5e69 (commit) discards 17fef0dae571e0f745c3dd14facd90e68cf8c9db (commit) discards a0272926fcd2ff20b26092c789dd6ae9538fc5e5 (commit) discards 8926a09dd37e32502f0ed82b5b84dda9ce686d82 (commit) discards 248d74165ed6f18d130e13a19fa8a866d81fabe8 (commit) discards fa1af50e9bbe0506da14019b82cbc86fd1333e02 (commit) discards a06bd9fdc9c2ac5a921f6836454fc13c7523d060 (commit) discards 5367c0e4781644a33ce9163666a626e50efffa2c (commit) discards 0f422f38cb7532af36b6d0a080dcf5ef4ff77748 (commit) discards 5b19ac52bb4db11dd932c2f522cdda25a19a2ba3 (commit) discards f69ce957afe5631e73f2130c725474e651813623 (commit) discards c2edefc15ec1f2c13c64ac0b999caf1fd23f029f (commit) discards 4267f43d15cd42040773c620781ab8f7926f343b (commit) discards 2681102e08a5a1f3615ee0c7717e7569ee460e25 (commit) discards 57c6574b35a3d533e47cc8c2be131c46d2b30a99 (commit) discards 6818ee67a5b1f81e3e5b7db36a49774d3dde8c99 (commit) discards 007bab6b400d1da0b4afb6a3b13fbbbe7b533361 (commit) discards d96c269d8e899f9318ea4f30794b4b4b4f000a97 (commit) discards f0bd3e98c6aa5a899349a2740f0f19a4a29d2d16 (commit) discards 0f1c0377293906e3dbd6c898b36b14d92335c8c4 (commit) discards 8c044ade09cd104706a16580ab82fa03008d74de (commit) discards 36c115f4b7c31775b107dfdcebb42afa531b18ed (commit) discards 71c21ebb8d76339752061d0531e512988e925538 (commit) discards 7afab9f4863d2ee87a1f32ee93a39d681d4a7056 (commit) discards 0d4ba3c93ba7d30587eaf9ede129ff94801dda91 (commit) discards 32d0e398fd2739881a2755c1d24b11a304edbfe4 (commit) discards 686d101fe28eda7850afe1c4db9d183f43991edb (commit) discards 2278346fce493a6dff5bbc0ae3234a560afc36ca (commit) discards abded27208623ebd45e2ce66ab0ba36c40ccae58 (commit) discards e09df3a8536a8f0e0b426ddeb628ac58d418489b (commit) discards 19522216e892f73351dc480507040cd453a795cb (commit) discards 521d4cc55eee3e0c541af822f4d786978b6bf31d (commit) discards 82caa821d99066ee5eba5dcdbd0ee937b6890919 (commit) discards 57d15db5af7074d421ee5f86eafcf852c93e2d6a (commit) discards ac06e3ebdab8cdec3195464774bf91f9404929a4 (commit) discards a56d580574e11b13a9adb8de0632c6c0b4a8a4da (commit) discards 4ac168031fc4819d41851a9fee7e61881a37de27 (commit) discards 0e4c8bebeec03167707571e1f3c6c0ee156c5a3b (commit) discards b58c846b24475aa2f7fdb57139d04717d6d3007e (commit) discards 93bd212735198d7420de6613bc5557ff0acc2d5a (commit) discards 3aea9271e7d727191e862f67cb29341334a73b4b (commit) discards def45d12916c8c118da7ce29a4ec0425e87daca0 (commit) discards c9827dabebf5d3e93d2f37223141f2ccd5209b1a (commit) discards 17a2adc29de90c6ce441f7fff5cf9366286de3d6 (commit) discards ed2953e57b017f3bbfb189658c98a34dd44d9993 (commit) discards f72dfcb7ccca2d134aa456eb771aee7178bd5675 (commit) discards c6c6b26accc13ad50cad5130e44d06d52d6f2c1f (commit) discards 861b1bd67d3f80ecff62a4598036924c0b527cb6 (commit) discards 9d3b0dfd93694ffee04c5b4b5795aa7ebf6ca059 (commit) discards abee514ddbf3a5b3fb5fea1a4b755149100eaf5d (commit) discards e74b7b59722283f44775831ddb0357bdcc9c798a (commit) discards cd8706623698962a152d8dce29a3c03bf8008cf7 (commit) discards 641c5583339c945d07c2f54e235e2c6662d471b5 (commit) discards dd90ab2b3d50268705c5a6ca3e0aa9c9d16a3038 (commit) discards 3a9bb53a0034c37ac38581fc3db63c3431682d2a (commit) discards 47504ae2100cd13eb89b612ed819cc3d9548b12a (commit) discards 7b593d4fc851a60ac4a8cc75d29aae1e9b711f86 (commit) discards 4e9a4428f859fef71b774b095716d470b5ac7334 (commit) discards 3e9d6e5439e7f35dbc5961c8d1bb5b2d35bfc451 (commit) discards 4587caf8dc727e8a18b28cef9755c0b1d4500f4f (commit) discards 9af29a6dc3f0fc2c21450e76f041561418c88dd7 (commit) discards 446462370badf7bf80b74dc5209c72c7f6a88a26 (commit) discards e2f3597e92bda18efc2631e318870008b6e230d5 (commit) discards dd00d8774c30e6db232efdfb888f846fa328cd16 (commit) discards f0661877be6685d701d2165ad1c09676ce54b0b2 (commit) discards b00274b4ccb1178d92d3ebb559c4d1b9a23b0140 (commit) discards 9b2bdd8aeaa3531a50e95baaeba2509ed84deec0 (commit) discards 7814d8f59d405cdbe73e7f7e3bdebd7f690df687 (commit) discards 849bac91454ecb24075463d4c6b4ccb2bffb6cfe (commit) discards f9150275d98f3e71f0f99d7523a3a720fe755d56 (commit) discards c8c5138c5db489670e2dd4d43910f54d7f5108d0 (commit) discards a86c60c3fa87b0efc7bb1c8e49cb4c0f70922685 (commit) discards 4426219c2acffb544d85f18755d4f0abf6f1461d (commit) discards 8b3a7bd824907c63732ca425e0361f288210ce52 (commit) discards 465e89bef4db18334424fc3f6c32e3b5398c5fbf (commit) discards 84658067660e1b391fdfd3b203e03e7b071fd992 (commit) discards 3fe17c6d70797ce4d73aac1942c2f6036ce660c8 (commit) discards 7b2c2fb83d9973fce37864827024ec4f07de8684 (commit) discards 89d7b57de756afb8063fa69f113a86b4fe1e527a (commit) discards 2c1e04033d314653938953d4890d017757a6386f (commit) discards 72bef67dd5494a872e34131f0cb194a9ede3edd9 (commit) discards 25494fff607913d74d6d0b8b18b1a146c116d9a5 (commit) discards 4af6da7c5346707d93a35e124c4d56bfb63906d4 (commit) discards aecbd1b4d41fccb3266d43484df6ad460d59a4af (commit) discards 41c5bce7dbc60d427229a719ff3ae307d2b3d1e9 (commit) discards 33d6cc7ef3c4df40ac33570e60f2d478001ee70a (commit) discards aae86094c63ddb5f312c23670d4e7a19ba84ad45 (commit) discards 8918fa8bac9d8a9ce83f7f970a55c184da23d25e (commit) discards e3c8a3a0ff84d1b4eaf2b9089eeb67d51f6c4cbd (commit) discards d045ee3b5288d8bb5596141bf20a1fb0d4e2a14c (commit) discards 15d314cef30f00cf4ef57f625e778a26a0dd6bfb (commit) via 219c12f2eefbd17b84747d2ed8a0ad2f66000501 (commit) via d3bb5da9294ddbfcc5fddf7ba3dafd2c3e0b32b2 (commit) via 4a96a4e3bead6dfbcdfc7953739f2cd135c1af0c (commit) via c2cb80cbfa25eb5d6e054693ebd18e74bd7c8b75 (commit) via 9805fd90af96f5d1ad98c8dc13cfa0b2ce703d22 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (3ccd5f4099aa63d7a0dc09f6e8f7143a697335aa) \ N -- N -- N (219c12f2eefbd17b84747d2ed8a0ad2f66000501) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. 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=219c12f2eefbd17b84747d2ed8a0ad2f66000501 commit 219c12f2eefbd17b84747d2ed8a0ad2f66000501 Merge: 4a96a4e d3bb5da Author: Brad King AuthorDate: Tue Jun 2 11:24:05 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 11:24:05 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Utilities/Release/upload_release.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From cmake-commits at cmake.org Tue Jun 2 11:25:52 2015 From: cmake-commits at cmake.org (cmake-commits at cmake.org) Date: Tue, 2 Jun 2015 11:25:52 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.2.3-1386-gc2cb80c Message-ID: <20150602152552.D7968B02D7@public.kitware.com> 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, release has been updated via c2cb80cbfa25eb5d6e054693ebd18e74bd7c8b75 (commit) via 9805fd90af96f5d1ad98c8dc13cfa0b2ce703d22 (commit) via a6916a6c6e397bda8b381f65dbfc59d3c52f8525 (commit) via c952d790de477cc6bde99b9c1415f6f6f7bca16d (commit) via 8ce87ac6ef95c244978756f78154f239705aa986 (commit) via 3bcd2f538f7c20fe25532bf41c8b78c511c03be5 (commit) via e14e1f273adaba11d9eb2fc019fb36fc215d99dc (commit) via d9f630a171044789029d5496b4fd3ff6023647ec (commit) via 8b8baf5f95790866277ede63b8107cbf58974034 (commit) via fe168ea4d2a63607ac4ae1b1dc0a13000ce99d84 (commit) via 7dd4a12c301b95512aec62e5e533a9c63aedfdc7 (commit) via 05845ac10ff4ce50449e94f38c97d6e57f433b64 (commit) via d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314 (commit) via 8bd9505976731a24d07ee7d52e130e3d6521d1ed (commit) via a68e9b7cae123d8388b5aa55d991df86aaf18d43 (commit) via cc3aee048c7bfee40cca43257e66140f158f032a (commit) via 6a2851a1449eea9c42d6482c242fb0ca0ba01b12 (commit) via b7ca6f90371e5f748148531f228c03dd1a13f5e4 (commit) via b3df1e9f709df1e06e8c25be295a40ecd551103e (commit) via 836c4e9314f5afbde132ae34ed5cbfd5e422f905 (commit) via 02c4aa1f97f5436e3f2f2ba07c492a24bad04c4f (commit) via 40bad5149054c7e9efdc9fdd645e5ce024225b4f (commit) via f663e9d0a07ca5a86f04873060049ac6859eba1a (commit) via 1992aaa96ef3e98e46b5ac548202d5502c401e82 (commit) via 8247186281ec8c7adf78429d4c8a29ae22eb517e (commit) via 8444809c47b0c2d6b9b2b57bd62d9a51fc5fa498 (commit) via 5752e558053261bdefc6294d9f13918e1233cd9e (commit) via 221a02635ef3097992ab7896b7da6f3274addfd0 (commit) via 9504d7a99bdb1a1c4b50ce8dc6ceced89f1fdb48 (commit) via d617dc6af4db944f05b6cd2bd1e71276cb3c52eb (commit) via ab756293bf128858565b6d7c528e15ecc002b23b (commit) via fc01247f31951c558a23af5e69b7eebe8ee73b28 (commit) via d4c6531a945564d230200512c680ca8570b10a6c (commit) via a9b1838f97af5fbc377a4cceb2bb503b57ce5eb4 (commit) via 49959d7a23a8b1261e3120643ee189869d552929 (commit) via eba12a43615ee603f7e90a8e4e8c7669e7d63cf8 (commit) via 7e10f1691f61949430180882e3a2484d0859b9e2 (commit) via 0d37dcd33534be17ac0ae13cb59b18743dbdb4f1 (commit) via 43c01e07504e2ab61e7a30b428c1c9601791f948 (commit) via ec12336f15c0fb0181274ac0fe972898e24fb018 (commit) via e2bb333faccb5a3aebafba8a1185309be73ea3ff (commit) via 0c24c2311b3e98d21cc70bb2e62681c071fa03b4 (commit) via a2312986af0356854d7cf9eac1d45f9d957abf72 (commit) via cc55c33ed5196409a296e1eb27627f4284b1c081 (commit) via bf365792a11ce84426c8fc61738891c8e14fee43 (commit) via ee71b75133d3e515172b5fbe3dccf7d3906f5a19 (commit) via 2d4bef07d9450984bd865eae44192a2137ad899e (commit) via 827afc8db285075fb8b8750f395c67d5ee57faf3 (commit) via 76b92412be6acac328de4ca9f11705af75216acb (commit) via 337f9b842e027e83256016ad96c321fe5238b78b (commit) via d31f6290f131b43be2e9dd30132ee9cd3e0e65e0 (commit) via c12fc3573bd86122279467e662b7ec58c72b5ffa (commit) via 94e4b5d2c36e541919ebabb8c7f8cca5abf36a09 (commit) via 95bab020b3eddde3931b43ca41364ec840e83eae (commit) via af570e13fd1fb82652bf8f5eeaa202a584953847 (commit) via 3b880a07417a0211001b8dfa721ec220e6d8d2e3 (commit) via e12afe766ee9083637ac819ec69a7b4512c39718 (commit) via c7b79aa16adc1117e62bf146c64f97c992ec2e2e (commit) via fcafd0cfc66050ed11c412e9441c4e4b8b54bad1 (commit) via 89253992b8237d8c3bd93c2194dcd8bc18fa55db (commit) via de2ef3053c37d0a958a92f8d763168d5b4e5dc17 (commit) via b04500a7259437dca9a2d8c8f0ce500b3bd2b057 (commit) via 8fbc509a48e53f7462143dded5a01c77ab5ba6bd (commit) via 82455a9d3af88296741a6b087fceed1bb6a28b1e (commit) via 1dbd86fd6dee7fc330f613558d44f37937fd454b (commit) via a53bd63e0cb84fafeadb801437c5acde9298c3e7 (commit) via 9c0bb7d8070039cfa3f5b944f90308e0283c4ce3 (commit) via 6cf5cc717f522bcd9e8286a864068d09012dad41 (commit) via ed42c203ed4b258091bd6eeaa1fe567c6f9b120a (commit) via 18825bafd99c6a9c8ec1fb4e7b22a8059c680572 (commit) via f6413400a00362cf307d0fbb85daf96265091686 (commit) via b26e5b552a53521ba06d27835cac2a6f72d70dfc (commit) via 965cf8e66e8316f34113c219d9311edee34bfd3b (commit) via bd2ef44b55f39e253e52289b4f76596c7c9880eb (commit) via 9217b678b305d7df7471ba476a81bf28961fdfa3 (commit) via 12b9005d7c015b1f8cece5a9d8cf5f1a9f4a18fa (commit) via 129bf45dee4d6fc4cca8103235013b60464660f2 (commit) via 36386413969149fde706c04dec478a3de50c5a28 (commit) via 9da84ab64a94c641e5316f8a72df2f36d7a0e321 (commit) via 700f1c3b2b379f2af63ba97b93348ff66069a388 (commit) via 4f0125a45b8643ff62c79c79eac7caf63c8fe7bd (commit) via f5b0a0fba458077e0531586f07ed2d01fb7f6259 (commit) via e40fcb598de8144a2824c7f30c754d3948231602 (commit) via cd8698167aca78f88302ec54318af8f73a08b502 (commit) via 01e1cd5c1fc5e2684ec69d4916dd31ed23746055 (commit) via f69dcdfc380176a2c4365357c1ca85c0444087b0 (commit) via a4d230af7d594b7bc2a047468da7849c27438237 (commit) via 550e08b012a67a20d4c71cb9e0b3aafadd265012 (commit) via d34467cd5843bc2ceb7cbde288c6cb0d8e2188ca (commit) via 9afc9e847893ff49e4085ef55f59d62119b58026 (commit) via 73245e591109c38712d5aa91bee655de70e8456a (commit) via 4fdad392b6ad59827866b8115bd554397e81ddb5 (commit) via df9635f386aeac10e23495b2124d7713324e5c29 (commit) via ad167479270e55151df54603496f6ee6bd3b0e42 (commit) via aaeec642ca9dfaf301c9a4c38e4b513564c41a5f (commit) via c2f5e5c632207d3b27da9e74905f55bcd62e1f24 (commit) via 444bc349781205bbfe3de25c6190beb0a7f0d44c (commit) via 7e2984e279aea93f26dfc8a210e6fa68c3d2acaf (commit) via 50de5dbbf5bd9293b26cad674fbdb681df89ac5e (commit) via 771f1b00dc1e9422e543534ca2ea823c98b3e2be (commit) via ab55b3b5faac694c28d8725e235923803fb83a8d (commit) via d0f59d359830c68fc7f1a295b9f0ba7ce331d867 (commit) via edf84ab3e9a20cb00fc2763dc71b073aa3322909 (commit) via cd679aa8207790d9f25ec4a9b8c15f7e5bfa245f (commit) via 0de47b05f74bd12d41b46634f00aea3bcb6f3678 (commit) via b3475ba57bc839125440fe8d21f611198041434e (commit) via 57b5b074618d7adc8a50181c12fc944a84112495 (commit) via 8b4b9631f5f79ffee11b33c1e8826cd4064b3a23 (commit) via 46656aa1fa69b79aa0c645a131d7abfdc34e621c (commit) via 55fc5e7c9ad018bbb90fbcee6ac09cf224b46246 (commit) via ca7cc2ebd0bd17b70279a51a3a087b5629175f06 (commit) via fa752bf3393e583851b333cc41d2507dc217e9a8 (commit) via 2f4bb4e9b033e1ac3daf63c0dc7c588ccbd70bf4 (commit) via deec97d8eca4db67be09031757fd11f66c1a037b (commit) via 3541fc73a12a52f87a2faa9790a65651658162d8 (commit) via 26a04a684403b9d0d8a478a1ff8ec6f0fc404cb2 (commit) via db90e7c6bcd40c2cdc27232f5305800ae215ce14 (commit) via 3e3a09d1d3c91a6522260734b4542b420152e21c (commit) via 2c54622ff57b2ccb44d4e99e2fefb0501dbccb92 (commit) via f3e4e3ecde21e790c6428f553f81e4d544f4e73b (commit) via e604bb1be9358f72b479b1710a3251b0cecca13c (commit) via f05d9308c9c01949071a764acceb4bf88875f8a9 (commit) via a23fdec8d2bfb8f2ce88972d93e23c83923ec4af (commit) via 03a65dab30a0ef34ec900126c03a01cc9da55f36 (commit) via 41d833e1e9decb422c019f16626fe61e38c03eec (commit) via a696974298aebdf5b618ce981a4a355a872d474e (commit) via e462ef74e55f2c4c1169797d4916f8076a927485 (commit) via 8ea2db2639b55b5c3590a594f9beddd9740cf679 (commit) via 438ce4a0fb92b7288a46e17524418522468eb0a2 (commit) via f3c308dd82dce64b0bbf862d65dc473d35116b32 (commit) via b5906ed03ab98b7749522d4f8211e9bcc55596c4 (commit) via e54d2fdf50d7e1170f9e3dcbcb62ebacc7205de6 (commit) via 20c2fe4d10ac72b8352bdbea361124296a515d6c (commit) via 7601a7b12d1c4a3bddb1ca34dcf38e1aea188698 (commit) via 4080ca497e9841c73324e8cd4d1017a87065e879 (commit) via ad70681909c75d266e297725eadd9f47e9bf001f (commit) via 6fbd4cae0d7765d305d753a78d167b3fcaa6eaf6 (commit) via a0d620de829b09c0edf594b2578cfa47e855f695 (commit) via b0ea36730847695c5e9579de92e7dd4272cfc27a (commit) via e6fac4f8d941507eebfae799f00ab0065ba5e348 (commit) via a5b59fae15767be07fcc0c3750b706d3ed50f1f5 (commit) via fe401ede2a6d8eb845005d26487c96f42d8425fc (commit) via c95a55ad5ab99a817c79558a5a7d8aaeb34a131b (commit) via 460e8fb9ad4eb58e06cefa0fce0df6f14644af4e (commit) via 58f41c789ffd102cdf3c9c8e49a2fe3b5da21a0b (commit) via b9f9915516c9b426f4f528bb1ec5a79d115e21ab (commit) via 2b09d9f346bd3220b059771a6da1bafb06ce0f5b (commit) via 528d68021c6769b2aa86ea9751a7308a84101ca2 (commit) via 9118b53b79afc1791d920b8ea6f9cedf26010148 (commit) via f58c3774d15f16ea287ca52fcbd04c17f0a5612d (commit) via ea7b962be2f157f60f143725948e56b2f9f07042 (commit) via c8cb66880c233414b6656ea3d23776f9ba07a4e4 (commit) via bdd1aa91ae28f5df7193e724b1351c616e56dc0a (commit) via c42f0e2b3e7d3b8eed0ef0ab5a973fe9375339b1 (commit) via caff8e5a3e03c7841a35e563c014322f26611aef (commit) via bb1e8c3adfc4b188b0f340d757591039ffda4ef9 (commit) via 1363bff83a8e525814bbcfd1e90173d392ecc52b (commit) via 5b7ff35c4d8b41e3d08305b91b0e5973f2e3906b (commit) via 390bc3244fd94d687bd48860eb2a70ad9674d755 (commit) via 8ab1cce7047b637f504b4b83cecc104e5cd1adc5 (commit) via 2dd5d42f5254abda64009434f0b11a47ca16640e (commit) via f3e6a336f29b0675e4eb3852ce7544f3c9342071 (commit) via 6b9e647239b67aff3119efbe2691fefe9c2dc28b (commit) via 7412d100a219c0289ccdbfb827cd13fd33044d2c (commit) via ada5ffce7bad40c56e5d0dd76b9a7b30c96a9e92 (commit) via 67fa3da9e84888029d128280f35a8e7b3d208377 (commit) via b3795df2f4e042f8db74a1d9024ca3d03eccea2d (commit) via a4596f204822c91581ca69d513e0ed3638eee495 (commit) via 6784f0a6eb21a3b6a0969aa08482ba7e3b23fa20 (commit) via 594dd9b36a7f3ac37b56c89596ff38451570de3e (commit) via 25d22be514436d8dfbcac0024b952bd059eeabc6 (commit) via be248ab435b4a538f29337b8d136729436a816b4 (commit) via 0cbc69b9ea97a44280350a58a365c617896e4589 (commit) via 56dc91c3adac1abbd2326fe677b6093c997771c1 (commit) via 93acb504c026e399597cf3a177e90ec6d6824656 (commit) via 2d1d8af9b19e1cb361b07a914bc8b87a2a352e2e (commit) via 43aa5c6ca1da49dc19c225c5bc5b276f277a1dee (commit) via aa68f2e4c9bbaf49812eb76d357f94ee3da7d6e7 (commit) via dee32a8d0baf23bfb130fbb1dc508adf8688dc32 (commit) via dad8b03fbed1b78fa04909fe484d92067f2e4bad (commit) via e435f875ec926d5080414837c5b7850475e2b45b (commit) via b5f093f09652d6e7a2bb7a94b5a76e09b664cf68 (commit) via 41477d5c0705baa33878c16e979283088efe2c4a (commit) via f3946ba547179f1f06a42215e92d96c65c9c4ec7 (commit) via d7923b82ade9f84d0fc4c6d44b9719f2f7c0e9af (commit) via 61d52e6e77bef903225bd3bad3e381bac73ee557 (commit) via a271f7f17707c50744c2dbeb20ae82b10c886f4f (commit) via f4300cd4dd46560c95203bad4a386c5db0bda2cd (commit) via 65a42849639a3268f613795683d7c91a6ed8b661 (commit) via 9645cba3bfc4bd583259130fd7e63da0c8bbecca (commit) via 52a8d19c9b67e5c902155f52fc7d145e091a5e7d (commit) via 59ba1215b936b04fa5c5e8041eae14a754911cb4 (commit) via 18f810a8659ea257c28d81b17aa3664f3d6f43e6 (commit) via e96b5d14f9f3500b2221e9afedfacabb0a56bb4c (commit) via 7eb0dfa0622afe078c2e131ee1cbad293960b634 (commit) via f9785e0cb6c823849bb344e487d9e70d9fdaddb4 (commit) via e17b5e426294dc5cc86ba31dfd4d4acc553c0c72 (commit) via 1ec1bf9f071ce930094171ab45f2dbc02c57927b (commit) via 9b4aefad41218866e392021b6d7239b2eeb50390 (commit) via a390de65e09e3ebc496fc14d40848ea4940cc9b0 (commit) via 036372c4cdee3d52289a46cbd55b40f685a25c02 (commit) via 684e5cefb239263f39089cacbffba28d4c61251a (commit) via 2047144f490113905004cc9d5b548e25312fac04 (commit) via 333c1fa83bd20f7b1039ab0a90e442b03d2c27e5 (commit) via a97df5e13566cc2ccbaf51a395b85b03b363a07f (commit) via 14f171c3ba1f996f8c97b9373fc58cbe34e97d6f (commit) via 00ccfff2bc06e640a185fb3d628ac36ea0b0fe9a (commit) via af1ea52f0c33d4f22a9810716e7574ae240e0b69 (commit) via 9b11b040c84ff2f30940541ba8f4e26105765693 (commit) via 639620eec43e0241930cd454248d93a7b43c1fdf (commit) via 09a3d21d712a80a94b9a90c10519a42dbee114ae (commit) via f170985e7aaec7562ca481bab49228ece233c4e4 (commit) via 98c5c90361f89f810cdd6fb233f3e822b638f143 (commit) via 7872201bf69610579b6b1fab4b5389b692c82089 (commit) via 820777af03041c21d7b36e80135382e7161c1ebd (commit) via fa85829712aac5d274706c5ddd7e719819155713 (commit) via fa9eb814b36894635e22ffdcac3103ee980b0398 (commit) via 1933f3d1a3a2be6949c439e18e03a048ef286be7 (commit) via 9e4b6cc2cebc7af40432f5027d2960c0cc68515f (commit) via 991f5e4968ce7b86aea12224b4cecc1be3ed92d9 (commit) via 57bdc1a2f7d416c106c4bef8f3543eec74c3c391 (commit) via 2a44acb937fb602f3beff739f7884ba0f483aa3b (commit) via c8c341690f62b01392c487ec68ca39c578be170b (commit) via 921d74d8559daf6fbef7d78e582029f6acb04f6e (commit) via ebf8a41984f591dbd6c22735aec7f2b1c36c9e0a (commit) via cf7f03e5229aa011e176589fbc71cf4fb259f897 (commit) via e9b134b95ddc832979b2cf78aff68643139e5006 (commit) via 24613d8b45b4f76e9227e9dec4dcd19ae9cfdfb5 (commit) via b659d161da3c488890e32fbb1acf1295186d3c4f (commit) via efab80501e2ac04da93d0662de37a6e9b4683c56 (commit) via e5f8ead50b29004847ebc2f7b97bfc0347ccac96 (commit) via 2e4ea0c055e01e10c8f459398f943b1b62c5c7bb (commit) via 912dff6253891dacb6a0196456adab26516a0949 (commit) via e0a2be659f0e7262291ce2e9ece09c1812e41565 (commit) via 1911cb2173cec31fac05de826ed02c4c0a38bc50 (commit) via 342d15cbc20cb68ee47ad9cfcab7cfd62e9ec45b (commit) via 9a0ba4d24ae73cf225a07dff2cf4fc2096fb9751 (commit) via f6a41a441408cb32fcc5fee1a758627cdf4f9031 (commit) via b85d3b66c63afa1ce7f30439deee524241b1efdc (commit) via ce167b546d078d9f699248688ff5f16c7ecf15c7 (commit) via 7baef756493caaabc226c39c4a8dad669b883d4d (commit) via 63255342c63fa60926c8cef5d0cdcf372f977b5f (commit) via 894961af16c83beb785b3d0fa7d1e6b80946eaac (commit) via 115e9199822a6c9395cc3bb55c57e061b5fc6315 (commit) via c5059c900036fd9500d64fbd7f9d2d3631152295 (commit) via b17686d2bbc193f19c60cdf44a228e49b4ffe386 (commit) via ed41a8e7b4cf665ebab8e4780f8b0b299113fd11 (commit) via 48a9e91b02090ba263cd46ef5c33ba3d2aa873ba (commit) via e7f7c2e208a62c60e4a20ef115ba47a2ff7194a1 (commit) via c5cb3a734dd6d2472f10379d45dcec7ce03293d9 (commit) via 76b598319ffe507870f918cdafe7ba7d43d9e195 (commit) via 34c9ee2ed75e12c713bb49c699ac1dd882d1b8fa (commit) via 3837c48334ff670d9132f80e35a31e263b21d3a1 (commit) via b317b38d3345a648c99a549e30cc50868e89c516 (commit) via 9486769866661e3aa76dd588ca5a7466e2969dc3 (commit) via a3139d4b1512195485cde49d919a13cdaec62660 (commit) via 443f041c2fa0355b9b622337da0612ce48cf29b6 (commit) via 501c237a83001a8783b2249bd5f5066c3472a2aa (commit) via 36c275d857d1764f37df450361ed816d24091300 (commit) via a86ddbe56e1659ca1385514e1ffe1a9389d9ca62 (commit) via eb9323eb1aa2beb32d933c3e09a160939ff31682 (commit) via d430cb7c36e7739a70da7897465badba62be7989 (commit) via 332ee3e305f017a2991b2ae348644141d1539f61 (commit) via 12b85b17911bbba871ffecf485878091b1be50b6 (commit) via ee58e94d62e33a06625f09b6a89ff3bbdeaf510e (commit) via 576ef8c56ef68b94340f95854a8211fb6f3562f1 (commit) via 5685817874e25bb1e8b112e66186eec4345c4635 (commit) via 4bd122ad9c82464d8d1271e448e510a5d40f4596 (commit) via c9709dffb0856c140f39c5db1525bccc74771c92 (commit) via 3b815ed283eb8d59c4e46dd89aa1e17c9f4deee6 (commit) via a6a9710fca291a96d01d848bd1aee8233beacf6b (commit) via 7953867ba46223dfab373ce58cff0a4bc20c3864 (commit) via 53bb51fc31ddfbc7c62598db1abdef3a1cdd45e7 (commit) via 70d48e1287c8e91c4815573485c8acba0879df89 (commit) via a5bab6e1a4e55637dbde3f1a526b87e06c715283 (commit) via ffd5d0922576ff1acd72c1498a6b59ce94194be7 (commit) via 16d84111da20da59a2eadb673e1bb74eb3a73706 (commit) via 733ca510a636aeadd84df761bb3844c473f71ab0 (commit) via 55fe56444f134e676a0b9a54d72dbdb85b573a49 (commit) via cca3bbde98de7954ebd3bca1966c92d931fe0dab (commit) via 0f2658f62d949137c9b0b9081d1a93e5f39d2bb2 (commit) via 226df303f955a8756cda7544f58242b52ea7ec2e (commit) via 28e7a135e001afb36a7cff8e896ebac75390dde0 (commit) via 231601b696d79075b9c0fe346a8b336f291f6829 (commit) via 1237d5fa8c721f629f0cc44a389703539c5687aa (commit) via 7c103be8deb906a2c6036da6f25dd30928cc1a54 (commit) via df95367d7e656608cdeca5c5cdaad79195cd465a (commit) via cf8ce7a39e425aa5ea6a4847f512b8e8628af61a (commit) via df0aa37a67e05008ac7ec175b14a0f3eaa78067e (commit) via ee3973e72a7e9775848fe806492c6e3a2feb8f47 (commit) via c6a805d1926ed73e94013c11c8556fc35d2bc35c (commit) via e3f522f6e44d459247fa3dbc3cde65867c148f76 (commit) via 1506f9ca56c813f6c1fee4cea90a1cd8e5a4a04d (commit) via 8d484463725edec792c26fdd33547f7ad63c2c14 (commit) via ca658a456f80febe05e57bfae8448c8646960ddf (commit) via 3307e10fc4ef5ffb551df35bc0978a2543305e9d (commit) via 6831f91a6c6d4f5d194c7a035c8de45f203f9cf8 (commit) via 715b3edf7d4629a84baae9c141247474a1771157 (commit) via e38a2b5953ff4d10ee5aedb4b7e00be6d66f099c (commit) via 06d0cd53f2c0c1baa274626101d053a9078c83a0 (commit) via ee15acd8273d49672745aa988819ff8c564e94bc (commit) via f39d26caa77525ee12b8f5fcb4932ebb642c970f (commit) via dcb188363d5faba80664c17e9a4713bbd5c0b372 (commit) via a190493414c04804bacce1ce627448440b07b63d (commit) via 4566850bdd48c53997c5aea4489d5949c7d26b0b (commit) via 695d6f62d31efc8c979e80713dc550a1b1054e00 (commit) via f8716c8b4466dd464853a5f9484ac151689c1d0c (commit) via f65bb82f3688ba33faccf2ef0690571e1aa6edc2 (commit) via 31c218e6e12affd482b9ce2880bd9385c77d9025 (commit) via ac94a796f1f0c5acc06d67d5ad283b29476c1d2e (commit) via ee1ddec4c19488216289dfd26998091b695bf3ee (commit) via e4e09dee92da27218b96f3add3036abb701c8352 (commit) via 8102417695cb0800de38d60c26c1b0a1d7eaa182 (commit) via 18527c4991a5f555c0464270ca283d37632b9395 (commit) via 6b9e2f710054da4acb67240670ba75b22044d3a5 (commit) via 4588a1697f47404598c728c4a61a0bba091cd5a7 (commit) via 20560e8dca47d7ff80d1a2d9b4e0cf952fa1a790 (commit) via b3de0dfe93af769ee7420cd1380395d656b4dac9 (commit) via 378c2a0e860f32e0435844d7d6af79a4fdc2b455 (commit) via 5731fb2e5e30747a46b1e328539310d059115ad9 (commit) via 753da8c6f14f68d59978b63a57c343c7f0dec72f (commit) via 5ab896aede1efc0cd35ae73f0a9b400258fcad09 (commit) via 957c2aac7fb4833b333cf3362cb8c6918a8e8a82 (commit) via e228d66d60ca8c7609d56fb135b2e68f686d34af (commit) via 65e6b1152fad1b8282761abdfcc389ea4fd4747e (commit) via b3ae0609db88d8f82f7fb4f18ddb73f3456a67d2 (commit) via a6e4e73da3de092439b6fcfe884f44a7c8a1ad81 (commit) via 3bc6f4f4762ba32d77b229e3385a8084015369b2 (commit) via 2c5a1bff237f240faf9a45860b0007a44e2d6205 (commit) via b492a17611b4df84cbba4b71bed95da5a2e0ca13 (commit) via 2d02986b7ce16ec50f3757b2873f84077f4c5541 (commit) via 82a55ff9163879beacc41e3462e54a2cb72f9f2c (commit) via 01c67f524e143a7f4287da4176dd94cec9d0ea71 (commit) via a874700fc2da9331140e93df4088c6a1021d3cc3 (commit) via 71f38d060bb729e1ac6cfe8db412c0ef96b68cc7 (commit) via f6749f727451ef3e35c20e80e712f0bda38348f9 (commit) via 0c34ac2f0159645f6a2cd0f57a45ffae36b4352d (commit) via 1a2a73a5181fd519559e140da24fcd2d9b33fdca (commit) via 9e3181a1128e7d4f830f56da397f0aaa04cb558d (commit) via 013ada80eac9cb119a6288ee58724a8c9915a35c (commit) via be6664c208c65e01dc175ae4d27e7fc18c28c97e (commit) via de211686122166e7485a98fd027bd1d32fda40b0 (commit) via 13981f20688279b4e10faca67b7020946c9ef733 (commit) via 23e2bcc8dba21b532ebbde20518f8a9f2d312103 (commit) via 5641ba4fcaba322e6f189e33eaccc4621d6ba99d (commit) via 3de54497030b7d8f40f219c0fdfe991e2a9041be (commit) via 387aff200c94073560a961cd2971ab6826347d4d (commit) via dbf680d670e399cc3b042721a1179fba0429073b (commit) via 8c204133e5b7dc278de64c66a6ce0be8ec4ab6f4 (commit) via e3a8c0291e6ae364365bfe48f12c6a5f4ec0e76f (commit) via cb765af0499d1ad51b7e4d3ff45f1e40d6ca843b (commit) via 5df267fa1dc5f8389f571eb6841e51b8fe333b2c (commit) via 2235cfebeeb3447a1c62d7a0207e899c9f7c9240 (commit) via 05d8438860cac1c1ec2d1bcc325b8bc05c0cfcdc (commit) via 6eaade8a827e2e120640f3fc2eb9999e2bca5992 (commit) via fdca04db6850273157e3c50de476e0b9298e9948 (commit) via a7ff97275159d094f55df481728a682c357bc438 (commit) via 562e69dd500f3b1558ab3ffd62679b8b4b0df842 (commit) via 0f927b440adbe3ecca1b8987ed8c5e442a324ff0 (commit) via f47342701c1ae23c6895602490786caacc43d2c6 (commit) via d3b36a90b661543f937daffafdf386c91a9592f5 (commit) via 0d167b3e609bf7addc51567f92c9cf5b0b898381 (commit) via 1ef88dcd46da72e489204141d66509f484738e1b (commit) via 8403c8da2c54affb0ab185aaaf302c7fa7ade914 (commit) via 42142d4fd2455f3c792283ba9c261c3756a10d8a (commit) via f39f0c0aec3ecae02a89d47be6bbb85632ca57f3 (commit) via e0222dda1490dcfdf85a18ea5a22ec2313ea4d53 (commit) via 83dc483e4e35b528a5ece7a336399a994bd3f67e (commit) via a0836ed97804952ace98d2c1d0d46e968a532a3c (commit) via cbf143bb76604f576275d96a1e1e4c701680ff29 (commit) via 040491fc586d34fe467907eefc85b1524c7cea1e (commit) via 0bb6dbe0c62f027af394f680f644041cfad7321f (commit) via e1bdf5f5b2b15908b9f1c0486da45167933456f3 (commit) via efcca9353f9af919625727a68b2f9c77995aed7f (commit) via 953d1b00af3059b24c4dadf8c4717cb0d2260e36 (commit) via 2c10494ab3194e792ad69825cbb55d6644270dd0 (commit) via 48f9fd39ad1637815cd89c2a2f2a17e43c0d7f78 (commit) via fd0aa7434b010c496e09d8013b192b7df453979a (commit) via a3291fe8ecb95c891a34c1844557cbfa2bb89e2d (commit) via a6fb6db49d9fc5558fd79296fbc233f90a3063e4 (commit) via 6cd6d50871ce28d0c72336a6aca01814487df5e1 (commit) via 22a707e861adb1c771d2c12aacdbaf1b8d3b86ec (commit) via 6c7dad41d9f5e9b6ab6bdd6ddee837aa5509e19e (commit) via a7ce0c7bc03efcfff6bf9fecc52663409262d73d (commit) via 7a5039fa6c0d84d1f4062211afcf0318db77f325 (commit) via 191573f7922aea3c1abdba325f5e65e4ba03d7c8 (commit) via 8b1745a1c5ed992e632bd4865c0f6a34b136041d (commit) via 514640411a928c55509343017799df4a10a75d6d (commit) via 5d6a7a1164188a0c28e3f5a37d0e33e952e0c8e4 (commit) via a588d1ee99a2996e0b42b9d7c43e41e3d54b31c8 (commit) via c1081a45d52598e6000341595d138048d5b79fc2 (commit) via 59edc038d59b5898ee1d8baeab6e10d7f897c31e (commit) via e8ae46e5e228cc3008e64766e6c8da48b1835545 (commit) via 30a021cc224d420725bd7e88277cc3cca7c67ae4 (commit) via 5e35d4a67f347cd1e4bb66dc225385ce4e8b1f5a (commit) via 88c5ec72b07914e96af9a97c23a5701adc8739cf (commit) via 088d27c38bf8d6c5e016d0632943551142f5326b (commit) via 1c3158558c1a9f90d4ab9a675f182c65c1951864 (commit) via 735b7092e88bea92e000bf88a0925cfa44f9b315 (commit) via b39929ab42f3b6204a9689846cbc24c96ee50349 (commit) via e2f72ebdbeb3bf1318aaedbf2e024c8431f3e635 (commit) via e14b65cc174a4a3891e9ee86c1c85daa096b74fd (commit) via 9d1dc38ffc5526fdccd244eb800e558b1b8952e7 (commit) via 769facf0b6e350aaa5b6f8206dd813d3f9184dfb (commit) via aed6239e40e7046c3f32e018d9c360ad0f624336 (commit) via 32a2f41402d38e1c5be3547bd042328df0b28124 (commit) via dd107b30d26b2cdaa5b1766f733428f3c4c7cd42 (commit) via 6064b9072c480845b2ba61291e467b42cb500fe6 (commit) via 27343e3b68e0aa0c923f1ad666575ed40efed211 (commit) via 0060e159fb7e93a5cb57669746b8aa47892de772 (commit) via b48ea26a9d3b4384874554fe64edfce8784a9255 (commit) via 5ccff6408c93e67d7f8445ce1bf6465b068d6f6b (commit) via f79cd99d6dcdfcdcd341c5ea90a5f2d9c4d6d3bc (commit) via aa4d1ee80f1ced5b09335cc84bdd373c0875fd80 (commit) via 60becdc65c5f8cfad4b2c6a33e3649d2acbddf39 (commit) via d858f36339d61e45913165bc957d645bf1060f54 (commit) via aaaa65b6a5cdf227282a9d04bf5287413757ff03 (commit) via f983d8913b3293f0f328811d243222c6e19c795e (commit) via 24885d4efa17d4232e266ef053899613c32fdeb7 (commit) via 012a75a00f060d6ca36cc9ffb97439a7ad526395 (commit) via ca9fa77d5d34a993073cd5256d65f88cd2e1a28f (commit) via 78e1454ea09e9c568578e26971d6cd45b7fa39c7 (commit) via 818bf727c1eb4a500decb5856715a964c948242e (commit) via 5067ae41b03442a7dba9210595e782678835a3ff (commit) via 60200ca5088058c70282500994727f2017276df8 (commit) via b43c162e99c7302ae81c746bc5aab1d9a64787b3 (commit) via 703e76252930429ac39d3ebf456e3e1e688d1982 (commit) via 4e70fa5cbfef6020f04fdc30adef409fb3d5a6cd (commit) via 1b04561edbe28f920561ca08855c8595b463d24b (commit) via 2f0afffabdabab1e6a6c067cdf2262437ff14842 (commit) via 9535b86d3c0d0c124d8ed29a6b3cdb45c150098b (commit) via d401aa21c90378deaaf86a61f6f43fb227aed634 (commit) via 036e449c665ce3abe8c11b32c1f73ee9b8a68300 (commit) via 5373e1731a828c5d96af66c4ab87f36d558f3051 (commit) via 72e380fb12c09a0970724e6a40836fa80051c909 (commit) via 6ac3712da0f1e90884a27d9c03974260f42d04f7 (commit) via d1a74bba1bba0c4381e7c3a6a93551320dc377ac (commit) via a3358faca1aba179ce6670460f259ab247b44cd4 (commit) via 23370344427ce8da470ff6266a675150457fdda2 (commit) via b9f4dd39bb3878ef1fbb0b5b6bc23bab5425584d (commit) via f0673c1022afdc9f9d91ea460efc6790b7aa6289 (commit) via 9de73d7ee51073841e0aea83096c187ea365532e (commit) via c0989eaf2afeebaedfdec4d42fdeb344b867c4f8 (commit) via 70d54b03fd4bae28fd2ff7fe9f3ede1dc50a994a (commit) via 5b8c5a6c0bc072ebb79c77f30d2b073d7b9fe4ec (commit) via 248a58e790c57a6c8502e5acd0a42098c80fcfa4 (commit) via dd675d45faa10de5b9eb4be977e65eae9036bc48 (commit) via 4541d1ca9a44ee5d79b641673e79947b16b79642 (commit) via 7244e8452fc9e99c613d8fb098903608d96cf73a (commit) via f693c136f94c8a21857b8bf4eff944ab57f73765 (commit) via 5cbedd6b8527dc265d50c877c1e4b3977a6dd23f (commit) via 853ef717aa4bc167bb0165f7fb20723901f37163 (commit) via 46f6a5f458d7d9ef074820d3e90960af2793bd33 (commit) via 3a041c59495df26c2b7b0ee58069d27a03bd18ff (commit) via ae6c8a9d68120229a2960a83b51241fdb926700a (commit) via 86f3cd0f7e0e0a0db210b5ed3f01766624dbc67f (commit) via a48aebcb67a66bd2fee1318bb971cc5e3b016410 (commit) via e4c78b37cec74c505e8a4951276c17f7e64e5f67 (commit) via 410f39a43ef3ad900bcaed15e6838f97f034f0e7 (commit) via 397b6298602f1496d1b946f5db827f5807d6ed23 (commit) via 8d9f39f4c324db01d5a60c5a783e1c44180c5c4c (commit) via bf24b6c501f1f8c9146153038bb202ae246de7d0 (commit) via c46490dad525e5f5e10eba12808718340ad40ace (commit) via 75bd5ca06ac35be95dfb5bb9442dd9391fc43a5c (commit) via ff183986df719bfee0abd1f8c1e09dc348f04bd5 (commit) via dd062b2b50495b5cb9669efe13538fb032586722 (commit) via 5cdd4c4323e80036916b0916d3af32013bd6dc95 (commit) via afc1f88c000ee173dc1aa9d5d8e8c7762e363713 (commit) via 1f305902be751cdae5bbadcb48f67cb723f9a09e (commit) via 1b03332eeeff471ea6da498bfe64bda3296e9ac5 (commit) via 4fc47424774657a44fc6ac118d1d1abb360db38c (commit) via ebb54e02c4bfd9ef8ffb92a49afb873a0af58f2a (commit) via 9fd1f5494f3650cddf949335ed3cfdfe10e0f984 (commit) via 46098b0676383590691137acd73defba848a318d (commit) via ad247d82b1fad2fe94ab3bf985a1685b04bfd67b (commit) via b03063b904648c960b91c63ef1f54b43977b8dc8 (commit) via 195a724c57bfe13f286525e0f8a7f2578768c77e (commit) via 75b0e1679c39ca824a4c49d9e1a2ae2b5f04ae06 (commit) via fdfe4586a047d9b6cc64efdd22fbdc67e9f1193f (commit) via b229f40f0775a89571adc53c8174762dbe6ad0a6 (commit) via 22926dd6512ca817ea2d1f2f79d4f06a6c0da618 (commit) via 6189cdda796296babe425b48272da17045052dbf (commit) via 1468f31988593abdf513e873138a49d758ce8a1c (commit) via 8f9539287903e514567cf3dfac9636445b3fafa1 (commit) via 5e98ba0cd8baf892a04a00ad16418582791d88c8 (commit) via 981bdc09c6abe3160f3d365b86848749326b546c (commit) via df302bcc550e344f4cbe07f7941e1315dfd86ca5 (commit) via 680ebebc1a8ad9d4507fce1b353b1fc32aa4f4f3 (commit) via c775072ad5a93306183f83f4396268b1690bb392 (commit) via 2ecf168f19096e63c43f3c524d1e43218446e3c3 (commit) via 941e3bd2b63769a0b91224c0d038e13b6cae6255 (commit) via e1c6df392bae4f807bbc56f2c4320de412f48721 (commit) via a61e09948fb4d8387204d2cf39f0f1dee31d5d8d (commit) via b5b20d2050616b186cf5b676bbb15772a347ffdd (commit) via 6b229b48020987e71b35d84d43bcd4e73515d8b7 (commit) via faede40b46dee698d091e80b8c4658a70a1eb326 (commit) via 2f4b13b32d100b755ff6b4a61cdd0d85a99e6ebb (commit) via c0502faa4b6c0a3c33d1b0dd346801ff8d4f8b0d (commit) via b470d618644808d5d2db20e5bbc09a1d22bf486d (commit) via 0273ef146972e0fbfbf399e468ae9d5f2b4bb3d3 (commit) via 7bd8cfb813e9bd19cebda92b280beb2deaf052d4 (commit) via 1cf43dcf7c63a61e6254d102314b121623d2086d (commit) via 5a5ef00106662da5c6400d76438289f505b4a1ff (commit) via 8dc3a67c9c3c5b49fe7a3b69dab7d60475414c59 (commit) via 0f3c8cfa96a3b7c426e5a9cc341410fefd2baf75 (commit) via 81c01d4a3461cf645ff3db794cf6217318f268d3 (commit) via 0d852d4c6525594a6dea8c95db629b7341bc21d3 (commit) via 258ba82882545d70162c865e56fc024ccd9cd164 (commit) via acd4f01fd81c4303cad37128a75ca390c1a42571 (commit) via c8375e15eb9338d79b9decb55f1ebbf1d68fad71 (commit) via 2a28f085a5c19c90735c912a6b5a26d3984d2717 (commit) via b2289ff6542b79772e874c6dba157f72bb17c8be (commit) via 50eefbb7e3887ea66f82cbb961fdf7eb69868147 (commit) via 3961ccb972a490ead4490b49e373af0c5bc2375a (commit) via 17b0526ee77c4f49c4a72f6099c08f8e2c03e476 (commit) via fcf9cf6cd8a8299100c571afbacc134932552bb6 (commit) via 8090904198238bce7108d7734099f35c9d1bfab2 (commit) via f3af9517ff6152a9e1548d73404ce64991855482 (commit) via b288a997e9fc4f0a7ea23fc2f1439e34b5975704 (commit) via 932d53bc026bfb18595deafce60c8c8c10a8a139 (commit) via 32b8f03acc0357121ec8f2b96599d5eeaf38c0b4 (commit) via 54d6a9187f24bbff9e344d8aa6b3c0d66167094d (commit) via 55d80d0a8557189400bc12c5e577702a4d03b2e6 (commit) via b23cf06f861e928cf8ee942eabd24ea76e299f4f (commit) via fcf246acd18dd168d9909cd33b191a3e6c9881e0 (commit) via 8878bea7b6a157948bb7c806523b1cfa4c9f7af8 (commit) via 044dc81504e0d34d7c84a20d333b2177a2c86b54 (commit) via d67e8f24b89b70782c977b4db628377be875f938 (commit) via 1ea085d1b62f02d4e556ce1fabb0589e30108e20 (commit) via f034bb2f54f784461ed1adea8f0554d49ff5b0b3 (commit) via 3a68c323ba4b9f269fe9fe45fc2a1bcc2de4ac89 (commit) via 356c26ebdfa053f59b2932c78ae81cba3c872dc3 (commit) via 0ed22502a6057f989bc7855a5a69e5171e013048 (commit) via cd953bf7a06fd9d96aaa5d70509535a3ba9ce665 (commit) via f438cd373131b85dd71b1f902c56fb3584cf8f87 (commit) via 5e0e65c18926b0a9c5b66ff4ec93d45cc008d383 (commit) via 8056dda8a2406b63c94d4aca3f79187747c0a120 (commit) via da65528c36fd071117d4e1aa13fa1a71c09312d8 (commit) via 66b641f443a1d3fc8b5f74233307ba9b0929d340 (commit) via 48004d9dbeb2af20d3a8df66670323d924a3f4c6 (commit) via 28429270194c42973bbec6bd0e5aeae061a8925c (commit) via 73ff279d07712d6293126e7488960db054ce51be (commit) via 76080c32e167b2eadf4305fb3af56ba1c7503c44 (commit) via 152e9b3250d2b75d91b1058e01dfc4b46bb486cd (commit) via 4c00a372893e4aa8aa4a5a66573175af9122b508 (commit) via 05245b42294a38c5f7be9b40a918e42575b7dbd7 (commit) via 6e23a4bdddd2bfee668c682a9ab4081b5e6fcfa2 (commit) via d21ebcb2444a4b6001c5997f7004bd5cf917d71b (commit) via 95a27267daee021514df8c93ffd6d9b9e55dea51 (commit) via 7d248547361bbacb4f5b532ef2ce4f4935c97dc8 (commit) via 9db15954104455fef54d59c7aa029d798075bf0e (commit) via 5d4480a8c711a3d5971e100cc1a8984b6305c509 (commit) via 3a8ac2423ef658e87e366a143428835be48bf88f (commit) via 5947d9b031444b48a7d7a9c70ef02d2333aeabee (commit) via e2d0e0fbeb1bf7b43dc55ce55c6000819d108aee (commit) via 3a1ad1713f87ed7219c934dcb32c4d41573807c4 (commit) via f0dae032ee44283d08869c2a948f001dc211bfd5 (commit) via 08da8742709d6da74d1a17de46990ec5aaf3ad0f (commit) via 3dc4fe02e63422532486320739e0cf4abddaa270 (commit) via e4f8f1f1b706d7efc9964826ff4572d27a3062d3 (commit) via 2d6121a9a709e319cca733787bcc21bac593a232 (commit) via bdd4c5f5ba6d3bf60b4e3bc620b146784e1559f1 (commit) via 524ce895427557312eef52d837f0afdb39a0dab6 (commit) via 813cd719c41b05df7a22ad3ebd267cc9bfc2505e (commit) via 5c201f1ee6cc19e0f1871048a6a6af9056c5780f (commit) via 0d9555779d7bd2a8d068f5b9af431bcf9673453a (commit) via 846608f2678b4bced696857b5ca45e11bc86aa2c (commit) via a2f2aeee2f4d4af1f25f4a5b86bacb8a81a7dec4 (commit) via 68f791cd06983e8fd375edfba74a9d821231e269 (commit) via 5bb4248a807029053156dbf4a3cdba4427766306 (commit) via fc7ab8874b0e5c2c010fb73718ae8702b8853ca0 (commit) via a0bc4a999d2be105fe2cf18deb6f4849381c6573 (commit) via 6693590f8144a905b423ca03fa8ed98df4468bae (commit) via a6331eb851c132d3d0496e738886ad76e13a92a0 (commit) via 6e8952c19385acb0ff9f58c2a462d91dd0624e05 (commit) via 4bd2544b25655b6e20e5098a5f4cdd973288c106 (commit) via 5cb4c8380d9a0f5922a2eed60f6a1fd1274e9141 (commit) via a723427b6450c1ec77226fb58aa3070a341891a2 (commit) via 2fe8bca58089fb03f0ffa16792cc15fb741bd22c (commit) via 2e0e205e28922c6584a35ce6ec9966485df47b0d (commit) via 7b68c8df6b78951e6d04eea62c3d5cc056796993 (commit) via 164f1df26d1c3b66678a8e585e1ebc1783f9a6fb (commit) via 1f1b62b0e2598554349dce14542a4c383f620ada (commit) via 9efee16a7a092555d4bc40498a1acd957943a834 (commit) via f4e5a0e6aa598f7cf0f34c2d7fea54e518615443 (commit) via 84f06d0c84a7db85561cca044780d3ca92c9c3a3 (commit) via a3ad275ce08784493267604d57207fce14602c48 (commit) via d1a6d15bcd4df3d3e347411bd457be32275fb594 (commit) via a4d201a747c6d56205aa180b19aab64f5880322c (commit) via ed0b06308523e56f6df5de9abdb5211e908ce772 (commit) via e8fdd5f12a379ce91adcb88acdb4354bc271c911 (commit) via 15f1a6b49958cc7757f951839b02a00e8c820154 (commit) via 3f7c7c65968b6d04babd261dab952ee40e0c9ca9 (commit) via 26b5cc5e79320dd73e93e117fffd0d4554e89dbc (commit) via 4556640855515b287dd8a5a0f7fb1a85218267a8 (commit) via 53ef9a0a9e2937cbda9939593188f3bc75ef24ee (commit) via 2ee128d9c8440b056e495cabc2efe411607ee568 (commit) via ab033b07898945afbd248c66529c27fca7fa9e0e (commit) via 5a45497fc116c75823103f77e7123b829669eff3 (commit) via 532644ea14135753d1b52b8883c7c6cd380b4dfa (commit) via 8469b6f6941ec8afe30f6c5a94f045e596bfe22a (commit) via ea394c63aa39fed008eec86b19a304d04bb302cf (commit) via fc579b91e0c2f433c17ce004faa38863c15e8ead (commit) via 9212d0a75d5f0dd01deb5acbe83fd376862f0948 (commit) via 3ad9fe6329476f2df56903620f9464c834b18d50 (commit) via 5d056c0dd85934e7a985cb49f97c343e38f20929 (commit) via de722d7d63866613aaa8105b52ee90ffe2721136 (commit) via 9b5f80a83c07b4c840b190f4f9057f2cf0fa03d4 (commit) via 0076b5d8340be81057195e70853d33e8fb66c1db (commit) via 24b7f31d3a2a464cef5955648e4a152a19d44890 (commit) via 0aec49132885be07e1d92a4a1db58f4c6c4c2844 (commit) via dd7e31bc15471b5c3ea31fcbe2002650780e78b6 (commit) via 885ab9ab37b1f4c094036814882886f5ec9efaf4 (commit) via 7b8e7c4ac3885b9a58ce1c238b045d5580f83c27 (commit) via 85c2626babf40d704f133fe49506d25f0a674b5f (commit) via ff742f6823acb14b7ec03ef6e87d717e5493ef12 (commit) via 9ac05683902c7412476c4514588bff5c016d6ce1 (commit) via baef72f2b369b77507969e3362edfc8d7171c43a (commit) via cdc53b62c20605467334ecb80c474533e04ff26c (commit) via 96f8c5f9a3bd60f553af054b43e06ce4864269e0 (commit) via 97e53ebb3cd728e6091f93cb7d4eac91ae417bdb (commit) via 1e738bcf9c7952bc9ae9bfb1be831c9f16998f54 (commit) via f1db1de61e913e4e8841e4d28fb33461d679c516 (commit) via 62854e9966a3fe308cff4a76c89f6bf72f76551c (commit) via db8425be18439c899c08294dde117cc137c75d23 (commit) via 74de9a734c92288fb3e602be0d1c967b33b67443 (commit) via b159bff732d4e34a683edd1740604428049d1819 (commit) via fef1f26749a7dc3839b1e461fb09eecbe97cca90 (commit) via 62c5e6f1a19df0043a0e9aaba6cf7247f76a5cc3 (commit) via f081c5bdddcfcaaf5bee7b918fe5c7ff01faae35 (commit) via f71fdf0ec8289ada5b32b784bc2f6f617538ce0b (commit) via ff7169a03c2ae2e7a0440c1f2921b7ce6b2e486c (commit) via a6b1ad1309d14668e572da7937a2a8dda9e1f669 (commit) via 92d61798937e42ecb7ae3d1be8b2b4ab7ce15fcb (commit) via bb2a42aeca46c993f1a8790aadfa0e86d5e30f9b (commit) via cec6e3e9eb9861a3a1a0fd7a3972fa36dd6b9996 (commit) via e0adfe61122da9387d450e4647da26865483d680 (commit) via 1862b39868b5a0c256d0256ac7c71e52e59e7155 (commit) via 341b8953b1730f192f849640b4deeef404583df3 (commit) via bf5028f88dda612fbc63217cbd9ab06674fefacb (commit) via 9d1ba6d0f53a4ccf169431ceb9eb68cc098aa32a (commit) via 9a101b6754d058d9175c172391ca1b3bfa34fbe3 (commit) via 2cf5415d9f6e94da3f64502a57fed957d3516fc3 (commit) via e538858349527efc1cf3ebcfb824b114964262df (commit) via d34d5a370ec656aab6f980218d74002789fedfff (commit) via a198839a7b110a47d76d47e342b1c63f908e6878 (commit) via 74c8b9284469dcc8b5a1e7fe23dae1bdc7aad468 (commit) via 07d44d638bca028d2a76fb1ffdc1f1542184243c (commit) via ea819b29f8735ca09242cc646a7b25e933bc913c (commit) via 6ad86c7fc4167561c7c13c28482a5fea0fe9d70b (commit) via fca2b542b43546c64aa2c474b810890e52bd0ea4 (commit) via 7bb4e3db069e06fe2eac053e329ffb9f1ea322bf (commit) via 6241253a4b20e74625b855b1e0d5220c8e7282b1 (commit) via 0ee3ccb3b0a25264e8302a150eee297dd40affde (commit) via 57dd094eded03a94402b6eecf7027325bd7b5136 (commit) via 6deb43e6c836a61536c3d6e36ca16b51013e9134 (commit) via ecdb1b3bba991c13f3f61c7b00a80b8dd97567b2 (commit) via 04b307b961a34c00f72d9031817ce4f918288701 (commit) via 0f1f324b0dd7147850f923ab266873bd8a4a4353 (commit) via 275185ac2b30b655b53100a129f5d7518ed943ad (commit) via c57f086a81c487fa88c36a785865d27b81e3cb8d (commit) via 23368c9b83cd62724e94d345e3af940b3cda8762 (commit) via 14c70b8c580c519ca38bcd9ba5ca8fc9e7629068 (commit) via 6ed19e615bada326c38a2b27d9378959503094ae (commit) via ade20b433b2ce1cf176bc727a8ed9c47a5f6537e (commit) via 6fb306ea3bbe04b8e4dde8f13eec3e6bdfe35086 (commit) via 7450a2c6ed601dc94f2de410661065554ff8ce12 (commit) via 8c13d7709bb2a254e5927d3df1346d8264ba1bd5 (commit) via 55ecd818f6bf70590d61584a87aae7bba992e26d (commit) via e9e417b57c85c6901f729c350dca0b01628016f0 (commit) via 18b58b618ccfb3b3fc56935b64a8fa2139b8398a (commit) via 588dcb33b7ff089a84ce5cbacf2696b4a3646b42 (commit) via 4e039a9a9814fd13142ae2c9876420ddf2414b8e (commit) via c9e9c31c53f69475aa080ad442492408217259b5 (commit) via 10859b97ebbe610a829e3981958d7b4c0149f95a (commit) via 6c4781baa9ea4cfb7b4de9ef91e58888286fab44 (commit) via fd04d87323749c15969982d9aa9b72059f33463b (commit) via d2cc580704fa4e608eae104ce5be211a229b2d64 (commit) via 1264c5b2c485416128466510c42ab40a03eb0ca3 (commit) via 8b4c40155a4f7cf7e1f93b792a3e1e9678d284d7 (commit) via 4411d1d779345f54c132209834daa49763cd1999 (commit) via 1f3bb59b691bf4d745e5c01b012c9d0b178bc34f (commit) via a74d558d1082f2bd380d7a03772972af2cd43e56 (commit) via bb891710cf7ba1ce8db059268ce4ee553c64966f (commit) via ad194ae0b1d85e5e13f1c38a20d397dabccf80e9 (commit) via f941ed7a8f48665188ca355a97c926317ff586d3 (commit) via 1b0c77a33d2e598c48bc8ad385cfd0586b8294e9 (commit) via 8313de2d5adf4514f0b3cccca747e78ca07d3ad3 (commit) via 48040c19d5f1bcec55a130fcf8f8d83db27291b4 (commit) via 26d6c095d6117d7f9cb02378acb74d86efe59d0b (commit) via 81f627d53bd3bdb50379eb3e1b9cd87bb0ff0bbc (commit) via 1a1bdbfd87ec2dcf3205f062ab8145d5e0189146 (commit) via 882f48e5ba335a1dbc1750c23e6dea5fa92a3adc (commit) via 051d8be17f1b36d52041bfe61856b926e36dfb8c (commit) via 73dcba5181e6dd7937aa83958a54cabaea8c3576 (commit) via fd5cbbe0008c53ebfd666fe34be958d5b5456880 (commit) via 3049951b6293486053da2d304737fad42de3b3d8 (commit) via 99abebdea01b9ef73e091db5594553f7b1694a1b (commit) via e5d336beb27ea06a0f5058d0ae87c7cd84b8b4b4 (commit) via a2df4a3f769a63822144c874660eb9461f233c22 (commit) via ba404938a202b51bb82bff8692ed08e53b061ad4 (commit) via f3922a9a5b463420db5f7fae08efdf1b4abdfe5e (commit) via 3e6a76e48b93b2756cd3e1f28941c79c5a8f9709 (commit) via 9e64156725e431ae15ce92be4e470cae6edf5bd6 (commit) via 1e2dbfce37acd1b7e7dc5bb1b45d71c5ac0c3599 (commit) via 60a62a91c4c67859d8e8f51aafcf0eb929edc036 (commit) via f3be6c1b9b3df6f1121e578807f06c29a003c58d (commit) via 977796e3077b390b72c32315138ca15ae3339fb7 (commit) via 37ce091345f6e9ad57aff7a768cc3dc35ebc3913 (commit) via 710968e37171681cb32e74d6249a4fd7daacf42e (commit) via 1975d53ae19c46ee4f7384cc96be355f7e94df61 (commit) via 9160d6c241adaeacc106d5b2ce4530f223345f22 (commit) via e942526b3d9e886da4ce832d9d3adb99cc5ede2f (commit) via bddd8c055104d7c66b01799a4c99a2bbb6da8f00 (commit) via 77f2807ce56491fab7637327564c7fb1033dadb1 (commit) via 14973054a2f3954111789cda5e54c2e2e2175521 (commit) via 1f2c12ebd196f3d23aa40d85c965654dbc36d0ad (commit) via 97c50a8dbd9f1ca5026f60e4a224e9a087e01f0e (commit) via d3823263b2665e5b89668212bc498af3220ac992 (commit) via 3347c5e4f9fcdd36c06067d6c7cd5a985a9c5d94 (commit) via 1e3843373f8e0dfd550809ec034d535d31276b6b (commit) via 678493d60ff0e8c8e59caf9fa57b6f1e5e7e61b2 (commit) via 322cdc48252e17501866a7177e89ca20a3cb583b (commit) via 579c4bec6e2352448f78d9333f7382ff34a08e5a (commit) via 7ee897beec045761e796ac7468ed6e43cd58f1fe (commit) via 64a6491fb634a77195034fff41d286ce1a337ff6 (commit) via 470f6cd8a3cef4e689c6bf3f131fde47192eb0bf (commit) via 318cd37097c724fac13a364fe3beb21055575ae7 (commit) via 1535dcd894eab9eea023d93aec6a0274babc7fd3 (commit) via 7e311773b5386663457bedd39cf2110da04438f2 (commit) via 52d5a9b60ba9c375c9381c7afa7441d6dadd9742 (commit) via 9410e24a4ad3a21b2c27d057798f723e88d14d45 (commit) via 7b7ae3b1a1d1c664eeef48392759883aa4040657 (commit) via 228c629c18d6b5e820376ac87babca0771205b6f (commit) via 2e50f5e7d9269ee1e2e3587a7a4b806df48510d3 (commit) via e62243674e7ce9a162b47567ef5893fae44ed153 (commit) via 9ada4c04335fc070f3f670df72bd9943eabec464 (commit) via 1fe7f24c2b62734d501427750586d8063149ea58 (commit) via 08c642c6ae47fd075fe1060fc0e28d8a24cc3c00 (commit) via cec8f97e5717fac279d310f3f0b9e849a0e59706 (commit) via ecb1d5b47a75a88653fe508abec1a664cc81595f (commit) via 827309af76fe3f51a2d589148ef98cf91f510c2b (commit) via 9b7213dc47d2477cb4ceb5032a9078412b5474bd (commit) via 0e6b00ee494f341be104fa2a00543fc4acd43c6f (commit) via d224039011f85a1061289b2869c9ff19161fc0a7 (commit) via 156d3f8903057ba92195f442cc1d0dd817731bc8 (commit) via dfbde6fa991e60853a9f7ad165c4b8c8416a9ba4 (commit) via 89ee57f6c79858bf350a5afce2ef588348dacb1c (commit) via b9c1eb4dcc801ea0a8f3f33aec58c5f9ab04026e (commit) via 9ddbacdb74c7f3daf824decee9a1d900ddb44744 (commit) via f762ceb26eb08ade9ea795cfee46b43850beb9bb (commit) via 5f686b8a6b5258f6c5aafbb33d7db36b38a3f06d (commit) via c22f6c1504037347d4052a7b441160a2b5c4ce23 (commit) via 03f7a509ef9a0d3d6a9afb5cfc8ab6773428786e (commit) via 0ffd35340e5458882b4b9596a84dd7cdfeaecfbd (commit) via c37cf7fa9e0aa7f7c3a2b32457385a1caf37bc3c (commit) via 64556e3dfa4161b33110daba606439f2c7971b15 (commit) via 23bb5d225b772f7e18dab16375c7620c99d62814 (commit) via 510562e3e7b9387bebe14060b147ec3022ee58a3 (commit) via 629e94893668c69fccb6954b0fc807c54e9218dd (commit) via d280bae98f009b56b9c14243981d5aba3e2f8747 (commit) via 364c7ea187d67f702891b201970712806999ad07 (commit) via 47acfe1d1e480bee109efa2de9253cf1a5457a8e (commit) via a3e2de3a312aa7db516a9127a96dd1d966a7fa47 (commit) via dfd6f1f2904ca577743adb5f86f1722359723a0b (commit) via 6f82b5e81ca9677dc2fde855ba7be8e235baa667 (commit) via 66f5af29f3855c743580821eb73a94f72b709064 (commit) via f7dd3f7cf05c588b7cbdee7c8b95306d6f1cc05d (commit) via 3b2561736df2c1fd8f69fd9341e1f4c47eb1192d (commit) via 8fc3a2fbf61bd2686455656201d3de1ceb571145 (commit) via a469bf7b98bb2fc82de874383b0538e2d32ab2e1 (commit) via 257c16495ae0653d8f3630c8d76e6496bc9edd86 (commit) via fe17092c20c39761a060508fc6b1979b06e84afe (commit) via 199b28ac3ab5cc2dc99b352b8653a03f93baf3e5 (commit) via dc4f64ab982f0bfb987b1e0a7e3afae8e24ed40a (commit) via 9a544f2d987df940625465129a5f00bea01ad4eb (commit) via c6624cfdc1fe9c7c53ad9ed06da759df803aef71 (commit) via 9ed24fbb5e37c7c4338d2117d66f7262fbc5e074 (commit) via 659896d3ed21bc7da1cf394c17e1a60e4d4ee5f7 (commit) via 01a9ab0def07ecddbc1bdfa67fec1bd3e6d030ea (commit) via b6b77bb750f30c452053ad4c28e4c69b1e7950e0 (commit) via 84136c5a83bf9e1caf158a37f987465a8f39f8d0 (commit) via af924827120f39f1a7a940bc3f6bc487665145d9 (commit) via 6ed6ef6237fedc0c187163d8b6c26fb0c9ca43c7 (commit) via 3af137824d993ca0a7c18c0768efb12b76154ad0 (commit) via 227992c3a693bb56ee6f6600a10c6eb19c6fb311 (commit) via 031d894fb882ca2e8c2269ba1674578f82155420 (commit) via 6e331ce9d47c8f9adbf29ee0158b4307debbc02c (commit) via ba9b9d79fb1a753c564be44e17e2d3b979f8108c (commit) via e46224a7cdbcbbfce63f21096bf2b4a5f01c3c13 (commit) via 4bf56c331beb38ee5a2245829277460f7e9333ad (commit) via 7fea2b77df2d70283f4918a8ff52836dbc68db6b (commit) via 2978a5549acd9a55582ab42ae774e75ddf2b606f (commit) via 82c51a8ac6c4a8fba127402d96f8269492f3a115 (commit) via 098382505746a0f7c21f521a7a13e4a6836d12ac (commit) via 06f61c26cfa19a47610ad718a784bdd7db105cf8 (commit) via 9780859b7e06e00d75b90aad1f706a401434a04a (commit) via de97f41cf30b09d44d6c2874897b4bf694c91ba3 (commit) via e6caa47fa652d3e24a2c29a72faf82499e324eaa (commit) via a5b4d197695c52c7756faa4d4dcc17b02c9d161f (commit) via 1a775917a5bf012d5b0610f6b01d8438fca6d12f (commit) via f707460e42949e4ca372bf23892a7d6fb9eb1b86 (commit) via a293dcb561e3961c1d55f2fc8ccaaf1b4f17204c (commit) via 77d466ec556bf6722e20d0c7a9b253d69f113c6c (commit) via 91eb736390b69d186edda8a1105d898cd58a77ca (commit) via c6593511bb1b5f9b73df972ef92c6c9b0a045304 (commit) via 078c732185ff610c55707ae66be0a787c78bd2e2 (commit) via f2e07a6d90806d50b6897051c2275e38689d16e7 (commit) via aafe2821889333ee647c67e0fc55472d7903c02a (commit) via 1fcf590b146bd01a64cde30ba0b5ab7fe2e05b64 (commit) via c3a60cc9cce4881f64bd0342cc841900533719e2 (commit) via 37897347b3fd97668d4831bba11e23f9f493e759 (commit) via d7539ced649ab75919c6d769ede1fca2dc08db0e (commit) via 0de7807c36ebfbaadf0e9b45bdf9fd79360c8eaf (commit) via 0c69ca831b69c9fd84a5c6335ffba0192b57f42e (commit) via 4a821a47f700e12534d4ce16203ad2a4404ffe64 (commit) via 9d456ec71ae0dfc4db5260d256c6b9570d5dd8cb (commit) via aa508a52992990fd375253bed3a1e6c392722a56 (commit) via 6f578ee3ade86f4bad786bf87c03afb0d8262249 (commit) via 0fa263d9d0a9dac9c7a574d09d8cb3d40cb603bd (commit) via aca1d93bd9b9921ecef83b80bed219a2f5879500 (commit) via c0312d9276db0c5d1ba84e574df5d10382b96a70 (commit) via e86f44b72616ebce43dcd62d170f7ca90ff31fdf (commit) via 3113d86df4b469abdf3852671dc985420e06d363 (commit) via b687d672815d45aab9d8043eef23405525aa98e2 (commit) via 7b1cdb00279908cacabada92f8a53e4986465423 (commit) via 00214357ba6166d829da68a65c0d50a61c663bd5 (commit) via ad09756fed4257dca08b032bf2cbad7dd82a0d80 (commit) via 68e13e98f5c719cba641bf7a3a01cbfd7c6bd394 (commit) via 681f3a2f012dcd17f63faa3c6f932ae92278e3bd (commit) via 44990732a8c2340193667c200987503bbbcb442f (commit) via 1570a4df9246c5f9b7a6818c367ddb596b84d083 (commit) via 0778016a0bba246e46f628aecd64e0f8afcc0fdb (commit) via 93a3ec8b7705c6edfa08a59a789d193fcb4cf4c1 (commit) via ed989122c3b997b19c714ce511619e6b6204a1f1 (commit) via d66f052e9401ea3ae8194bace96d2596d8f9b4ae (commit) via e6fe5b46d5b0adff67fd5af0d014a1735b66fcc2 (commit) via da68bd3828bb4adc3dd64d2f7db3131d41529ef2 (commit) via c46125dfac88d566f0bac380bbdee845e839082f (commit) via d51c1f090a5df5a8cd8d58faeee3544b52463924 (commit) via 845c83756e282feb6086c93d52ee0a0d4eacce9c (commit) via a6b0b835acfedfe4f46e15b165b2aa9496371580 (commit) via 4adf1dad2a6e462364bae81030c928599d11c24f (commit) via d9420364a2c38434ac5864c0ca209d9c32f904df (commit) via b372a99a130ec89561b2ad8d3147298dff3cf4df (commit) via c1f8c6cdf94d650df1bd8ec847ae7ac453550978 (commit) via c117c2bb5ef162dfa7d4cb2eb1acd0ee48c06297 (commit) via a3bdb5578d54894832195fa29308ceb6b4ceed93 (commit) via 8bc6cfd72717cbb1166b8aecb38d52d663006284 (commit) via ac6297ea3859ff552bce76f68110afc2e9678d9c (commit) via 136a534f7242e7a0352763158c4807b616860df8 (commit) via aa15ef8a840f1451cf88040f1e3ab8ee0fce87fb (commit) via e3f84fc504e96d1bdbc9c70434135903c449bdd1 (commit) via 6474f0e2635e13bfa2592ad6ed2d3e026353955a (commit) via d35da548886601c6b478a0c6341aad76feb2cc94 (commit) via 918fe54c829ebb39aa6bfbbc3f4eff401047b90a (commit) via ac14cbf01710c08e9bf31670cf40d88512b55752 (commit) via 817d31db9797bfc1c6ff7e60e420532362b14463 (commit) via 4d08e6b6dd21658bdcdc4dc1cd2a2b03d377d531 (commit) via 230f2d6e7060e70b7205fc65f6bee7ce37e3f27b (commit) via 564c07f7dd819d9ea070b22ad16849d3be6bb89a (commit) via b76b52c0b4b2f1cd324d6e93d26911e3bc4a8b87 (commit) via 9e14a5dee2b7ec420fcfea49c2f2f41da84e2cbf (commit) via 7910cb7cfb6b8a1dd3424327d667f6df5fc60b0a (commit) via a92f217a4bc8eb682b1b6b79076549314caffc1e (commit) via 78650361315beb2a75bdae49988064200710556e (commit) via 6959b5be08fa2e244d78178ee987fffb940c740e (commit) via bd96cd5a1e935a4a7fb745996d2da4c9f0cb734d (commit) via b6f67227f156794bc21c9cf2d6897a7e68410b67 (commit) via 98a3b2e29ece5195e7948681a410bc5fae880a23 (commit) via 685d179b8b8e0f0b98dbfd227f6ccd88b17749b0 (commit) via a704098de83460e8e9bae02434a6c31e7fc3ffd7 (commit) via 8603791553965de4d80a42347022dec1fbd8cd98 (commit) via e680d43d7dd96096962379f627828a182ac0fa80 (commit) via a8e7a1047ad3b61238f073ea3d2cd138f207c1ed (commit) via 5d1d995bb7a982b13d691f7a926e497f4c44d6f1 (commit) via a4a1b729c63ec81037af06ac1009d12cc1dc3188 (commit) via 166e29e453e6a48e191b02835b08cf5bd3d0f988 (commit) via 26c43005847394ab110ebbdb29f1a1f37eaa7b7a (commit) via 9c76ff015a393a2a5107a9db7f8ba91eb12c4ffa (commit) via 51b4321e5fdf9f7cbc54881037a45a474883ef47 (commit) via 81db6506a9d7367da4c7fb5455c95dd40a13554e (commit) via 048a8fb837360dcba23d0f0ea6d29fbfd94fc9dd (commit) via ed777f18375b79694016550b1221b2ed63c997a5 (commit) via 6ab1413499284dc8e1d7a8ac1f1940798a79e674 (commit) via 52642b466ec47f61195b4112407845e62b381596 (commit) via bcdda24851c83c86c19ec9cd96c90e7cdec688ef (commit) via 209c142f68a8902db802ca6c73c22c395a7aea06 (commit) via 64e97edad7c8d4b8a2585067db206ad9a57d68f6 (commit) via 7ef5f240c80bae10701eda5a1592d0516668a85e (commit) via 81bfebfe8c1cd568c945250ac26ac18d92fcd251 (commit) via e85eb2e3368f2cc26149ef801c1a35979ffa1bad (commit) via 4f129615b3ec6d4f136ea77768745ef9649d11dc (commit) via ed99514fc1f77ac48dfffbf4fec4a08bff56976f (commit) via 114ddb072ce309df64806800550823f656845e77 (commit) via 45583e52728584385f67e68aac0998368042f23f (commit) via d0af0207131b8436a2cf670265f815db511f441d (commit) via 88abc78723bc955d44d83998e70d3b09d5dd4806 (commit) via a37937f7c0a37626298ccc80cffe5ec9fd26aa75 (commit) via cc8b8cdc751ff2dfa6e77a69da542d6aef066346 (commit) via fb3e4de8e81f5f14edd2123f53ae1eaed7c37172 (commit) via 4178cd88fc01bd38fde2f3ee7a1702cfb4808f93 (commit) via 87a4b8580cad34fefa5c5e1833b0963a6bcf3e7d (commit) via ba14510b4ebdbbfe115e29111615a4b775fb7198 (commit) via 3714955b9cded21b13064886b30a412211ce217e (commit) via 6bce027662588b972602e2e74c16a1883ed853cf (commit) via fde70a1b26e130663cc4c02e0530d3aadc165a41 (commit) via d67196d0e8c5e9feb99d3a609d060f52ad8b9a59 (commit) via 840f5b89a456b6f68a9b75c7a0a0bfc3fa37e643 (commit) via aeb9fb977493c0865a2d6c9fab8affaf69845c85 (commit) via 2ec1c0d6e07305c51e0602ddff835919b4b08ed9 (commit) via bd9c7f9b2c788f9bf69c2ce4eb93d27212a6dfaa (commit) via 18917d66d4997786afcb27580518e325342117d2 (commit) via ed8e30b00d032594fbb67d62f8bd4319ae6e5907 (commit) via ad094f435e005b484771acae36b79895c8e36e3f (commit) via 3556fb1b81fccac63600a2509f92e9ef738fed69 (commit) via 00842df48d8d3585562b8d64d56cd6646dc9d3ff (commit) via a21e8df0da0d43f8c678d4c07f731035d04c0e27 (commit) via 610464c12e0ef71b2bea28973b70630c4ce9a70e (commit) via f85db2f32358e6de921aba7d1cb8ecb81da934c0 (commit) via c95e523db87cd503c97ca2a6021614393bb33e0b (commit) via f447027307f32b9caa126631faaeab55b7e2133c (commit) via d4d56f636b653c1b5d169be8c476b2f872bc6558 (commit) via c3f416726bee2175804b3004641eac6091df796d (commit) via ac7d8684c56063469b3ee03cd4f5a60a4a01789e (commit) via 4faa4c60ce6d66f2789255d94ef90d1a3c7bb6de (commit) via 543b20f269df537f3cde6cee1dfaeab6dd31e942 (commit) via 1b1144b91dcaae05a0caffd3d238e76268600af7 (commit) via 6e54b0b91032d858ae33b3cb093b5e4c9e15970e (commit) via a2c068a7ce47ab5934735b9f9168dda9760646ec (commit) via 2aaf4f60810a86d62927a915e9286e4c2be9c53a (commit) via a066f73263c8c56f968324e51daee717291b3908 (commit) via 13807bcb414c67cf8ee3f8b203fe30b472239072 (commit) via 486e9f4f49646cf48915781a411edfe9d9ea7618 (commit) via 82a37d3ce5606f578997304cefc6aded15f2535c (commit) via 80afe28a1084d02dc3e010c7a0cabf5258237ddc (commit) via 54a5cdbb4c35aa8847d3eb0f7f418fad72563992 (commit) via 394514135ee0c970f1f28770db8642515fd31891 (commit) via 0e8325db66c3be268321aa7b274fbcd9109174b3 (commit) via bc67dbede991be9238e8a102bfb026054b48d83d (commit) via 380db3de00bd74f01781ea93e9ba9cebdea000cc (commit) via 6794079523de41837b43e23128643e6b2c3e9ae7 (commit) via ded79a976e2b63bbfd7a63f27ec00bd071410e27 (commit) via f9d09626899a8196a2f46992585ddff21fd2de34 (commit) via f94727a9c2d2a48ecca2297675a7762cdfae460f (commit) via be089724e943da786c35fddceb8d9b0e7a9fb2f5 (commit) via ffc1b9451070d9da5860533da8c19c75583e5661 (commit) via a5cab2e7391df8d2072f1083c075a69bc746c7aa (commit) via 03209934560329aebd75dc74916e236e3b5c9b74 (commit) via 8915cddcde6f8b0946e54f1cd6c9b8434bf4fd14 (commit) via e9072d26c0d90a8ff521d46347e5d1b3555f8099 (commit) via 874fdd914a646d25096c34b97caafe43e2a77748 (commit) via 49c8dcf7bb8ae9e7584286e552769a61bf23e61b (commit) via 4fb9abc5629ee5c046292adc77b2583ffc15c230 (commit) via 0ac7d871fae9589bbdf22518360818f9b1423bd8 (commit) via 140a53a810ea7449c26e6e572918df3bb20e86d1 (commit) via 4552bc886d1bd8966f6ef2f7790835dfdb2e6d8b (commit) via 607131bf8c806b6227e56089eab9252537bd31d8 (commit) via 262656b2d64e605579f1e8cc6ee32edcb64aa1c2 (commit) via 07696442124e63f6498109480e4adabf4fd00a8c (commit) via 1bda8f1fdbfdeef82766e5db542b1946d5e2167d (commit) via 6390d5f5cb107dcc4a0bc6124ab5f17370dcadcd (commit) via 0d58b082d00b8dc0fc678911e6e3c489c0bd5a9a (commit) via f25aa204a284e601f5b0debc3709f725e2b1d300 (commit) via 18e85253c3d232d56768316a1b26a0646ad6d233 (commit) via 15b06bc01278bafda15ff1fcece808959422d927 (commit) via 153e2dc3fc73fdb778e56e238441aab2a9f673dc (commit) via dfeeda3778e4b436add8ad95a1c9daab52309901 (commit) via 119f45ce2a7209739f79d93a63c4d029c459bbb3 (commit) via 7b185d50170366ae57c43295db788ea2038a858b (commit) via addf4db06cb3d4e7482ed54a12a21aaa9110f6a4 (commit) via 36d4cdad0ed4fbd232142a0247209c68b9c9eee3 (commit) via e433223d1ef9d3cba35a610d9ecd483cd99e39fe (commit) via 9a427f86199913d6674d09a66d97d761c38c77c7 (commit) via 80e8e7e9561afbc0e621fedab99b96177061ed93 (commit) via 8701a3f468a4fb684442a8a9c5d4c8d15c72eb7b (commit) via eec7091d76fc3db6535eec3f78fd2585b9c0c38a (commit) via 7cbafa8c65751d2eda7a17753c384da1fc91f695 (commit) via 95dd238f5cde3aef28f09a2367ac7467d064ea10 (commit) via 4448f175c8d8ee2bfce920a5e7b7e57aa923a19d (commit) via 7916d7bac602e71be359e12600b19d823327bdf8 (commit) via ec428fafcf9f50c54b163dd16f68063cc387f779 (commit) via 082b6a9d78c6198dc7a9891615930c40a5c3b967 (commit) via 9df1f0fce19d893b75108fa29eb06cf6b2ce4997 (commit) via 3ff95f3b0b1eed95aa6e4d6baa59c68a047072ea (commit) via 80b9f0cbe263c64613acd18e4e94505924fce40e (commit) via 642048ce356304155bf67b85deeacb9d030c3300 (commit) via 77534e84b27701e371ccee780be5acffe7cced59 (commit) via 1a8e4c86921e8b018be950924dc54c532134feb5 (commit) via c4ffc1b8c78b3733518442c462beb8453bb2085c (commit) via ad6fbb88bbeb4db17f0f060525c638f0b7b01a33 (commit) via cce9671b4fea099c5109569108bca2dafe92a97e (commit) via 976c3ccc6aa62d58a613fe3106c73fce134123e2 (commit) via 01fadeb205317f7bd22b4762a03fcb7b32b2bc95 (commit) via fa4617b7ea00474053b3d0278f316db226322626 (commit) via 232a6883a1fe480def1743af6d711097b98b026e (commit) via 94887cb6f1200c505d86e3e52f7abf88cb5e2a72 (commit) via 18d5a4bcfd688687d334d645dfdaa7fd5a207bd9 (commit) via a5505c4c53672a55f5e9e577ffb0ac3bd78c7847 (commit) via 9e1689413fd1e54e8056b7d369cd508636987072 (commit) via b734fa44719a780683e2eb0dfaabd38d64daa3f6 (commit) via 0b945ea9a6a38d1b3ee27cc32afb4268bd571600 (commit) via 5c559f11137dcb14113a3c5df99ff896c65c7596 (commit) via 86032ae0ebb7e86f3ff5617e080dd827dbbe98b0 (commit) via a6d488f2ceb62b968c6f0a8971a3556195af80ca (commit) via 6f28bc6b511ff8052968c2a7d40a3dc5bcfcb2aa (commit) via 3f66bde4f70566166437dc4d7c9beaeba1ee33ee (commit) via 387466dd9508ae57a864cdd8f2c8d8d28140b74c (commit) via 242c396656783b1b3d542b14bc62710a46a87518 (commit) via bdb00b36133c64a36fbba7fd6c648725062b6732 (commit) via 42f0cb0c103ba83eadff09485bab2287655ffbea (commit) via e387ce7d681f9bd6c90c41f34b7500dfeb3b32ba (commit) via 4a0128f42feb7da9b6bebe0c2c3aa7a756b96822 (commit) via 90a051f443c4cb400696b28651877c53e3c56607 (commit) via 2e16aff1e2218f042f403971403fe583fc5bec97 (commit) via b0852ebc09eec44041e8aa624ec4bb17bda14dac (commit) via c771f9d945444f6cfe41195e26653f368aff7f42 (commit) via 099b0cab1d12b5b3734342ac516c8d42c78cdef7 (commit) via 8f38b8a4433b26da8f64b705fa82e520c40106d5 (commit) via 67a74c44541ed42b6898e98c87f4a9f625f9a458 (commit) via 44ef47000eb4f4ac7b4fc041afd3579ebe355469 (commit) via aa84d26e631e11d73328c24ac0301c43f661869b (commit) via df5def5334249eb01195c1f24f3e728519dc742c (commit) via 4ef21206e66cc993669b0fb532039d84c990c82e (commit) via 49ce2c999f797cb6490bc52c2e8d6d2fb431f175 (commit) via ebcb75e62658ac5060a71f3153f1de72c9c613e1 (commit) via e97141c2bc11d1cda3adc2579eeab53620d3b921 (commit) via d6a320ab5ef12459b98fae2711b9a386b4a01466 (commit) via 1049feaab6829427a53057ca44ac3a786a6ef9cb (commit) via 687065e22a4d6856e5cf15c5797074bc13bbdbcf (commit) via ad162206f02d9d726543a73c02ab5ed10f5e6522 (commit) via 9babde423cfdbb06d154f4fa1c7b7ac795154aff (commit) via 02611986539366644661138153ebf816a0febd61 (commit) via 3e98ebbaef9cfa1544f960320ebc4258e82909bd (commit) via 3b9f963f3fb1db05e90cfad606c62a7b3e9b18dc (commit) via e88f3b3bcc18ec04e567025872f0008eea00c3a9 (commit) via 7c9afb573844fdef0a8c29bb7f8c4474b910d83f (commit) via 56be75b3107b210631919c13496060d648f97b14 (commit) via 5261c357aef02f63a44060a6bea3e7f614758e08 (commit) via b3381c5c79e2b7ef57a1d035e73d37ec2ee0aa45 (commit) via e2055b172eb4ed40893bc2e110a5640d078eef22 (commit) via 17b4423c4509e747814f2c5564239ec72659b6f0 (commit) via a8b2224eb64e9a8b55634ba40dc1354bd3880d3d (commit) via 1c29a5583c55f5388f0be230f9cffa660398968e (commit) via cfb22354b8bff1f7eddc117616a80774d456f467 (commit) via ae09fce8319112f8a401a843d4297e7c157a112a (commit) via a7631fc4e026f2e330b10eae73f473f240c3d0c1 (commit) via ed8055f41805ca300a227e685779449d92697e27 (commit) via d853cb238c8ad6633f4f76f8bafe98993d5a5daf (commit) via 29b5ca108e040deea551580baf4d3146c76677f4 (commit) via 0bf6c7fa7bdc40af27a7e81b7e424c6eff02e24a (commit) via 38f1f4e7f30bc9544805da7925d500045722bff1 (commit) via 83a9cf6d2893f7284da522b052cd53c4affb8f76 (commit) via ee81de5ec35d1219f89097938b7aa63b40ed4b7a (commit) via 6a661f06030b85b4484733375bbb0aa23eca7446 (commit) via 6bf130979e68201aac99c0d2009b50b26a389993 (commit) via 3db740cb31afd32548bdeec5f1c35c6cfb3c0693 (commit) via 3cf86d9e7bb082b05c507c744b0a43981ba199c3 (commit) via 4bef659da525441464ed110d362b46a6eac50a82 (commit) via 4efef3f775e78bdcb4591dc37aa974bc28e8fd84 (commit) via e3363bfbec592393780f9d769bd32334bcfd5953 (commit) via d1082448a8d0a75974920690dcbad8895169bfd6 (commit) via ce935ebe50926bde199d86fbde4a78974a4043f9 (commit) via 266568654c23ee1b4dea487a684cdb6304eb33aa (commit) via 5e2b418f7b0083b01004910848eb4823ea014ec1 (commit) via 4817d2814a6d82e35590f9bfff2b088c95d45395 (commit) via e4419c9f88213432da4563a5107a0bf8c0130fda (commit) via 1c3799b151b6ff79472281cd35ece3e067bc526b (commit) via 772eae446409fb853585e196009c87d3037fbc22 (commit) via 4300de3e2759810ddfd253352eb42cd7f3514c85 (commit) via 1de4a0fb09fded1401ecb1aeaecb1159ae46a3c6 (commit) via 5b0b36c3f8daa78b504e66615b1d3da937790c85 (commit) via ef542c86a53d0973e2de10cdaf140c9608e02402 (commit) via fa6da5fcd8aa5bdfa4a635a9890af9c7c09456a8 (commit) via dbad49705ec07a80248e333e4ca7f6cc17fa3766 (commit) via 71a610ff2997bd0d92c332572c0dd35405a77682 (commit) via b38f535eaa648005d700e214ac77c774b4a7509e (commit) via f7f4ca55bde68b174b7542fe417426a7cbf76fe3 (commit) via 1826aadcf3ee7f0d3a35927d32226513d265accc (commit) via 4ee9005d7304f922c95db19ffab2a9da4145b93b (commit) via b10310e6e69588dc389dea7220f3bf3db8bc0d42 (commit) via 5d5067ae57c9d02656a54076cdf121c7084a4de3 (commit) via 3d612c735285d9a63d4981a2ca7bff44cd741e4b (commit) via 886dcaa7c5f91269b91da857d6eb2db3610d385e (commit) via ea98667682f29e8f900c01c5c36eebebf80ea8c7 (commit) via ac80f0f95fc7cfbad17c2a5656a87e346b9f298a (commit) via 47c2da6aa8c8f77e8d01b68cd5de596da2b2c3d7 (commit) via a5b10ae68a4a84face73767f96189673015946be (commit) via 7fd8557f4c3d761c8ec0e7c29c9fa74a3ff45295 (commit) via 1f7967913662429adcc509528086d6525acff317 (commit) via ba959934a6a832e7d0a9f4bfc433e09aad1476f3 (commit) via cae45df77235bf7314421f2520177f21179beb84 (commit) via b917f4c003cb192f461345b66a9af1a3436b86b1 (commit) via bbc1a9788d94ed9a6f710689611c63dcc52c8b09 (commit) via d518aa79a4a7ab5659a7cd67ee9c9ba374b26001 (commit) via f67b8065f603392ca794cc6f5c07bbbe6b077526 (commit) via 41a16f07c3b57e05927ba7706a4e3cebd7768ddf (commit) via 13f9f848defa75f7d728050b4d99d44b194642b2 (commit) via 3bda0717b31aa63e906cbc6129674a9e046f1066 (commit) via 133ab7a4476f97c5c524bd1e7dcb65efe7d6f810 (commit) via 91234717f710c3922a03e8449bf12475b7d6f26b (commit) via 206ce77781d7f19a9877caab137d69cc5ce4bb05 (commit) via 8366b1bd4fff38d2e928edee1f93acdee12365d4 (commit) via 08d1e65a9ab89c6d23f6ace8d652dee278710586 (commit) via 5857ca5e0d6c6f04486153f69184ba5d76b13f0b (commit) via d83b40c58dbd8a37147377e159f1c5ae8ca2f8c6 (commit) via 47a3e22ea5aee971df1e04a6447bb916af81aa2c (commit) via cb75eec0b45eda230996580043e00e38d35a1e5b (commit) via 7e576624bbe77df9879075d48652defdf0cbce62 (commit) via 0b54e8366e686340102867035e3dfdedf6f783b9 (commit) via 0ee2a004e70e2d49423f5b4b393896258e8ab688 (commit) via 78ec4b16400111cab7cc0de3e7544b1b071b2abe (commit) via fe558718b30da989db8b880374012a0e580574e6 (commit) via 38ef2b7363533746cfc14dbc55d696de3cc75386 (commit) via cb16c7844dce627ab40f404c6ac49db3cde7b0c0 (commit) via 7cebc5acacc14e0d4c9416735c86c5870671f173 (commit) via b6f94e6b14ea1e32014296d3c766500852f74df2 (commit) via 6cc01c140245749bb6a6d5096b4a38f3f16fb776 (commit) via f174b919d65d8aefbe8dec26e2b31c7525805f8d (commit) via 3aa9f89dbb88d957a662effdbc284c95aef1a8a9 (commit) via 761562fea6a987bb898f5a349993cf5765dedbea (commit) via 9f487b1dadc65adb5215c3d97fc64cfd3ba4b26c (commit) via 9627c5238a08acfdeea4a26c0cdea7de68470a72 (commit) via 67fa9462adbad2b90b13ba942f2a71c0ea7674c1 (commit) via 6dc9a627b635617870945677b4868e212f4184ed (commit) via 88aeb64ddfb129701b6709f27531da0a885593eb (commit) via cc3611023d9d5ca9ad1eabe13dfb12577970e283 (commit) via 15c409f4674ad3a94cb03fae145ddcf0b233a4d0 (commit) via a089c1c9038e040b9df5809a02768351f601a613 (commit) via ae7c5f05c34f2f908573f01d84bd67e34de7b476 (commit) via 1eb192905d81943073c3cbdd56b665e80e235087 (commit) via 8c0474cd2c0b3ad589950bc60d9af22f26111717 (commit) via ff1ddd2a73dd04e3015c2bc4ffe345f8c6ca02ee (commit) via 0b87b2a33902ac000a0073a1def887599c69809d (commit) via fc58bdb9ad90ddd41c5336bc1ab2e35fa0f74d41 (commit) via 876a680d4851a39e77b49daa3c670fe2e535c1e6 (commit) via 49ba4545c272f5bb00828dfe35e5a63749b4aa43 (commit) via f999dc0bbf70dcf6167d77a1dedabefa12edaef2 (commit) via 645ad117e1c8b3b99fda128daad708a87c0a3f2e (commit) via 19d1a5599a08f2e8d74c4483cb9ee6d34e38ecba (commit) via e2b9e7f7bc1b4e3a36e8b19fc9925b358b5c99e0 (commit) via 1643b905e02473536d60ef4102d3154a6c8816d1 (commit) via 7ce9f6e29ee143d2a63d55354c00d5ea50d6d0d1 (commit) via 12db113944860269b72093424b17ad2f86bccf2f (commit) via 69de0f7ea4163f350dd6683b6d7f47377157ae7d (commit) via 57f2aa7c37e3e4d09a43c6790772d11d5b63e9a6 (commit) via b04c8ec3f840a5cb34a97b2fe8417882b49b3820 (commit) via 6adff767208c2238efb2649395a76bc2ea78fb08 (commit) via 135febf069e7ff5305a3729b81171933ec89dc90 (commit) via 51f8de810223139ea0dcb7bafcabe12fc8e075c1 (commit) via 5cf629c3bc0c7a15d363d6d60e8c3cc04c0618f2 (commit) via e6731f486e466ddd58550851fb935dbda7939cac (commit) via 279605f560312aab4dfeef4cce1c8c67d4083b4e (commit) via 53d7dafface62d40ea795456394f7ab1d5ee6712 (commit) via c021f59c1f2f3d892b621a9ba163b069f2a2f0a9 (commit) via 2d130896a05ef14f2ef53ed472c6926a85cc5399 (commit) via f19692342ba41ddb2638e118e2864bceca77af59 (commit) via 1116698a89e4057300481bac8f38bfd95f4e9ce5 (commit) via f93438cd839fa209afbf227b5a6a0b58214004b7 (commit) via 8804c3e0e419eb692ba487ffb2a7e36b1f8e728d (commit) via bb9d71b4fee2cc4abf55e0dcbadf85c6cbe0d07d (commit) via 4afe6c26c66556827e6089982c49b8dea3a2efcb (commit) via a3a0a8c222b59f15502f52192bf41c4af2882392 (commit) via 8c74a41ff3b6fce1bb7d088d16f5e0a9ae8ab55d (commit) via 61fe1919de8c0455a6baff543ccfcb35fce8f37b (commit) via 09d6125bfe4034f332956f4bcc5b0a1ba0b82e27 (commit) via 8ed6ecac3fb0f832333e2d5d6f3551ab8e335d0f (commit) via dfe49c205654a51f860507ea5d8ad133b2a4f064 (commit) via 21b0654ace2ce58d191c2e42a8583b05614cd037 (commit) via 416df93aa93d0a633f0e7354d0562934f676768b (commit) via 37b88d348a20921c835ce7aa99f6db62271503a7 (commit) via a281809384cc19cc9a7d1726b243020b380b9395 (commit) via 76207b0861478318115d65c2e983f4d88c937724 (commit) via 60c3bb73e39f7b19a17c989a0f9bf70bbfe73683 (commit) via 05fec779d33b872721b9731e872125ebeb89403b (commit) via dc0f3fb44fb9384438ece513c12d83a36e385802 (commit) via e1da4dc2dd55926c9d7140f830a5338512279b3f (commit) via 244867369bcded571a9fe0b06ef2998a5728e368 (commit) via 7b582d15ff4d70e77287eaf5abb4ea240eb26da6 (commit) via c4c570f9cc7a7c5f22670793af887dfa5a6dd7de (commit) via b7351d8e14ea7cc05b0c5d45dae48a21aef298c1 (commit) via 14713eebfb3152bb7b3591515da5780b4eec1dd3 (commit) via 1d82105e29fc6f0bb71a474f876a7553b397cc26 (commit) via d7662141a771f105e64b56543d99ee43e7d00849 (commit) via 9b50388b0989fab1d77fbb3d48e648c86427d808 (commit) via 76e7c22b3c37f382d6232ee95fe77e39e7aa269d (commit) via ffc06c12397e7cda7307afcfc8a79ebda4a786a6 (commit) via d5ad641ac3fa161e67759d6feebd9d895ef68bf0 (commit) via 2f0b9c67fcedc73bb398e2fea35d9a5cf5123ff8 (commit) via 05c54c5bc7e3fb29d4d9366035410b69cc6ca494 (commit) via 6f9c4d17f89838a822baab5e99571c20113174f9 (commit) via 49821094fac389fb79838a921a627351d7fd157b (commit) via d7bc3ff690b65a1b9c06a7858244d027f0020f66 (commit) via 4cf3589ed6b71dbc2bf95bc16d079ef469511538 (commit) via f611406fe9045e2861ccc8a9fd8b9daa39982553 (commit) via c6e1f4647576801b27fbb25652fe3e947564be27 (commit) via 0033faac1d5641c370646e089ca19cd527a8d842 (commit) via 302d47b1fe19fb794800faa548d4cb9a8e89220a (commit) via 8c8b77a5dede8d1ad3110124b93973db8d879d79 (commit) via 49562a77f7223befa21a5b72625dc10f807ce788 (commit) via aa77b631d9fc94e7ba69929560d4592e1ab12a04 (commit) via 2e09c4230f601ef5d744a2e43643e214a149ba39 (commit) via e6ebc814dfa022680038a3855eb1eee56f6015f0 (commit) via f7fc99cec6a1db6c53dbf5158b2fb95534704b37 (commit) via 9c225767873ce64a745e865c6f1c3372a8ab45d9 (commit) via ee5bc006ebee898729b81237719106704a2bb38a (commit) via b3a0c6e08f36efc5f3cd4c1a0d9614a789f91e38 (commit) via f20a4257f2889387fcbf540b29b16f10843f2f9e (commit) via ee269f4f16300b0427c1e1baef94b85ccc4ea13f (commit) via 470cff497bc26d48ee05de0b260af2546bb7698c (commit) via e6ca1b82744154fa048634abdc353e4118a11979 (commit) via 93a38a2abccf9041fa86a7a6cf3439b1b0480ad1 (commit) via d1cf09e3c2ded58d08288a42c0eb9038727c22c7 (commit) via a0f17fbe9cc8c8d30d8c1a4df50c4af5fc4e63d1 (commit) via 4fb9e847c0c757ff6e1ee430bbb9fc2b6b4e2ae6 (commit) via 6652afe66961bcbb5ff17dd7b8a3a91da62f2712 (commit) via 75661fdfd94fef4b8f1e8112aa75d76d1cc366e6 (commit) via 10e53e230811b94701d86e8c78e38df5abf69ee8 (commit) via 74906322585034968142e1d1663f604e2c97332c (commit) via 2acd04c96624ce530edcb0ca991bddad7f70023e (commit) via 2d833232a35715e412a40ee6207137ecfee7da36 (commit) via 26602cf56c4697a589f320809afa7a127268d09f (commit) via cfb8483412761e567f64343ccc008b44150a901b (commit) via 6010f93632c8de9405bc97e40fc06f5949c09976 (commit) via 0550b9e330d75dfcb02257c998706759574cd9c0 (commit) via 1ee4721f7c7d0d889e00c0a2cdb799e71a4b5574 (commit) via 62429a1e54ec443edda35074bc66805d6e602f89 (commit) via c697c1fafef16f00e4ec6a72d12eb3a43c01879a (commit) via 5c635fa62414c408d04046079a5c0dac43f7cce2 (commit) via 034f8e0bd9a2b8a319fead5042ee5782a0df03fd (commit) via fa8b30ebb57da8ddc3e3616c4d212811abc19335 (commit) via aa2ba12164046cd1812c3f3b67cadca856d51846 (commit) via ec1ec47193fcab7084e8edd977d3bebd1e8c73cb (commit) via 7632daebd3b8378a17b302528d0690da97cb8cb5 (commit) via 7747e1a7f6414e1d6308cd2b469246ed8e1a66c5 (commit) via f724ab5e78ec71b22c8b5dc9e894d3feb288c620 (commit) via 116459d34fab6327906e901753611636f84a16c1 (commit) via 1c7c35c3723abfb91f5e9a986ccd4f7e70683baf (commit) via cebeed248606ba92597b7e32a5b0be1f474f7a91 (commit) via 3cfe7a4ca876c496f9b491e4175fd1c9be24f3d7 (commit) via 050958a3286f69c577fe5d03407800cbe0367898 (commit) via a77af8f1301b6a9964c187ffff7a1893a80fbe90 (commit) via 6a22e40147b7df5285a67b63249562ecbeff112e (commit) via 0b5cf0dabd430dfe1289e865b1b51c41066338a7 (commit) via 069f2440c471e89dfe2ecf6778bbab16e9fbe491 (commit) via 67a26764b536992a966cacab4811c2d30624405c (commit) via 1cecd3a53107f7f670cf011201c1da3a33b795b6 (commit) via fd8112ea7c594c8e24230f08aa8bebc6117a1cf2 (commit) via feb76254c5c9c078f0a66e27f6d5a6a964001e44 (commit) via be3d4b665f27b9ea301540d5bf8154491ed815e0 (commit) via 8206e8b431241eae44ec000971fab1f49ea070fe (commit) via d891d47434a181f14554622118c39c954d6a9466 (commit) via 0304e545289bb32a43a7c8973d604dad860f360b (commit) via d6616181c86770f7dc36343a5bacfafe853ea8e7 (commit) via cc90fd58eca493151010b81914f4c9cfafae145c (commit) via a2ccbffd8b4191f7b8b888fafde85eb5e7dbb2e4 (commit) via 8d38ff05e2db3f3bd907f5a3c279fd116010e775 (commit) via 78757e7ffce9fb6297a2d501989e9b172e6151dc (commit) via fc1cf2654de04ed8f6954dc1907ab1dcb8bb946e (commit) via e5ebeae768a8310b5cfdce0aeff9419e1de51eaa (commit) via bf8f9c29e745933d5732f4481669c38ba8bdc3fc (commit) via 0ec1f45a138bd7a9ad618f6e9dfa077a6bc8533c (commit) via 8e05ba274f096e82b6df98f8d0d6b163cd93631d (commit) via 32821bb3190a9539ebe98fb7dfa0ba7c7a890ff7 (commit) via e6ae3c6ae0540de51b3d615aea3abd49ccc70a34 (commit) via fc7e15691a870f8f5e199e615279c7eb4dba8f6f (commit) via 8c59928f3ac2a3a4f9b647f2c60c134d54d2237f (commit) via a4a6b55f08e37ce9b8a17680cc30ece66d048ec7 (commit) via 09cdcc54303bf065022a997056f403dd0707bc7e (commit) via b5f98e5012ef53ee6746c42131fc66892bfff717 (commit) via 83414d5a07753d004f5e663c385ef0c713895d46 (commit) via 9a1f8f35f48d7dcfefc70de9ae530c31b16cd9e0 (commit) via 4aa7bd2ac11aa2edb0288e5ba360984b7799130d (commit) via 6774c92b5809b80c767ef8094b2f26d06556e0fd (commit) via 2c4a7298fcb3ac6a6b6c0a9545b343c814f3d6ec (commit) via a551851ab3f23f58074638ffcf38a08d98a35fa8 (commit) via f79c0f7697ee0bd25ec74f7dbb2ac0cf6189a9df (commit) via 8e0827b646b14028446503ac392a9ab7bb5a53a3 (commit) via f2c49f59d8dbca936a40b62a9079fa71ca551365 (commit) via 3250a7e535684bec684c0109b31675ba72dc3aa9 (commit) via 081a13f7c011d0ebd28caebfedee1e3e3f7602c9 (commit) via 17b5ebd383df4c0c731b5c687ccaa3608b2d188f (commit) via 7c3f637680ac0cdb6cec5e75ba4a9b188de5017b (commit) via 8a399c8c9f1c4a793289d6baf37081efac082eee (commit) via abfca97525be06e067981b6c6bf63ba7a3aa52f9 (commit) via 0b61b86df856e3cec366f8c23f35aae576b2d821 (commit) via e21f7829a2891ce7599ade02d4fd9c193657069a (commit) via 559dc15589ad0b9a7bdaa62ac7552899993f6f0d (commit) via 0ea719326ea78b423a5ec95b1218b626e9392f07 (commit) via 9380e85f865e29cd5968e91408a31d5160f4a4cb (commit) via bb10012fea677fd8aa1bbefd06061efcb7ec1955 (commit) via 0c12f1ea0da0a5822a7a69b4ff77b45732c72466 (commit) via 27c6f017a1ef7c62f7f0332d624add7e8189f81c (commit) via 4e78ebbdf94b99f7b7d5b9b31d05dd9479b1d6ab (commit) via 8910224950a2b723e0d4fd7c21a326af7fb2e050 (commit) via 7b8725bf8472ebf4781ddd60ef8fcca9c3ad98dd (commit) via 7ee56f03999e8605cc2cbe85a3a7b7159e639e5d (commit) via 0a4e5674eccb0126733086d4632c7239217db6f1 (commit) via f30022eb07b913598326d2e3b10ff2e706fbe873 (commit) via 7607c3d16aa0636458c909f4036e4b0d91581b30 (commit) via ebd556caa9e1fc92e00c8e401b145c531390e854 (commit) via 290ca8e2d0328d27f51ff5248c35e32e44fdd1eb (commit) via f99991db882c2f4cf8246b9c272845faaa5bbce5 (commit) via 11ecc31d0a2da0090195a682364fb4628f55673a (commit) via f95543f8a6b38bf6d5350169bdb53d5066839b76 (commit) via 9fe8f49353f927882af256c7870eb24e4be0c9be (commit) via bd6389f7bce6d69a75e6f84245834e19b24cc03f (commit) via f00829a9384283ef1cf86b337b41eaed30ca7ded (commit) via d891b971b7d5d39c05d1e757ebc6068260bf1e9e (commit) via 108e94ecf11d33f3d87ea3c09cfc7961aa785641 (commit) via c1772e5fb25b798a99cdcc820272ca9457123eb6 (commit) via 79ea7e6d087924ff1c898e727b6e83944f0f689d (commit) via f3c0c6140360d0591c5163e7a3fcdf0040f4690f (commit) via dcc5de9c4b7dbc17229d9f11aee978f6828d932d (commit) via 0e6af852637ada6b2343f1cbf1ac5ccf0b1b3c76 (commit) via 939167a65cf7e057ac98c63f8e3ff0acd4129c28 (commit) via 197933018863c4845262dd6fb47e4edf721445f1 (commit) via f7e33820b628f39ae2e0ba3d25279545dfe18f73 (commit) via 6da65b3907419df28484c570f24d0da3593a0e5a (commit) via 736bcb9664b714b91e8a2a573451e0453716f4da (commit) via ac26d4b343aece40b6b9a931ab619fc88d4b9492 (commit) via cbffbf7437ea2d571e26bedee032c23be9347d94 (commit) via a27c13f4cad2247833d048ec5e334861943fd4d9 (commit) via f3e9eeedf43f783c02b2a2a10fc0e632eaf7cfd0 (commit) via 2fd44b082b0a8e546c73d921f9d8264a668c3b78 (commit) via e5ef9271a1bb1a0779132beba4cf2b0bae13d6cc (commit) via d46e1e3f0fa386638b5a50b45783f4ec4d94bf2c (commit) via 52340b904d2eed7f5f337c255486017626b01593 (commit) via eb8acf85d0e49c8b5f5e291cab043028dd979fac (commit) via e2619c13f727504b7368e0bf156c17112ee81568 (commit) via c548ddc1724c9c96bab04d2f51d1740360bcb737 (commit) via 1d6f4b6fcc04620fd5f8e090381e8330dc2a4b23 (commit) via db9a2e8966256d50efcd593a20ed8a2b8b9cc05e (commit) via 80c080052a123b71b69bf42fa99e01df621502bb (commit) via 06e527b36ccb86078e0caad2cd2962057b0c0558 (commit) via f2ae132d96e36b856f91da499800d58efc37ccf5 (commit) via 8ad8a81d5c150db2c4823b57cdc8e2f2de9afc91 (commit) via 7ab4fb5760a03cfcf1317351ebc75c7cfd91de96 (commit) via d9f8390db6ab0d776eb39b840a3b096b5422229f (commit) via cc1520947608f5224a4fdfa94b5cb07e19e23600 (commit) via c0d8e715915f65196353c09d86d4d34fe100437f (commit) via 68d29f519047aeef92a0ab8fef531010c311efaa (commit) via 1c3918ff0278715e2a4ec5929f75f7812003ee97 (commit) via 220c427e84215b28ea1dd6de74e9dc6e81f7962e (commit) via 9bbfe76d2c899fdbb54eb92716aea7282d2f3cce (commit) via d30036cfadb6f5ad927bf5f968f7e93472b50c45 (commit) via 8b7e5e599616b6b805d87addc12050a6d6987429 (commit) via 63668954e002aa41ff0287aae22caeeacdc0c356 (commit) via ae775fe8041183030c69db1714c898b6e74f1284 (commit) via 7bb50e4a31ad5a8a58fe60885014d431a887b27f (commit) via c6ada8275b680e02f50a7aee1c02b0b184cadf83 (commit) via e1ce81a2cb66c70d806adf755d9ee273687ca962 (commit) via af65da0aa97f20947f93ddcf9872d23d671f699b (commit) via e848cc5074c402fe38bb19c831f0b71dc34ece73 (commit) via 5fea6898346f30119b7f5272033b0713aca4c389 (commit) via d8639733a42149ca1402dcae427f2142ab0cf037 (commit) via 803317aab622e4f12e7d342be5bbb4f16b088efd (commit) via 11093a03e064e1b7ef2d5db28845b5da7b934806 (commit) via 6cd2ee9524e501a4ef9dc481b469b91f8f022dc9 (commit) via 94e993a0c170cf84da9ddb026dfec9d8d99304e0 (commit) via 69dbe51b08bd6b4564d031d78034633f55ed4593 (commit) via 683fafea088c26658283da3bdf05277aaa1a3cee (commit) via 63f584b618b3381ad93c901f691191acd48329a7 (commit) via 74c4d9d27aece9a619eaab330ad23cf4b0de2b19 (commit) via 71d47115d009983665d6db4b25ea0ef40464f365 (commit) via 39622c995c189b4e22dfdc0e9aa29c8fce5eac17 (commit) via a7fcc148bdfa5e9f2c6901b0de8192f5aa043741 (commit) via d46c4f0727acb35963dfda579cd5c9efd63aab01 (commit) via d59913f001b6eb74f9baf8bad183dc83d5e7bcd1 (commit) via d2fe4c420370727c644432549b7a5ca9dfef3a28 (commit) via de63ff489d25095e41deae724f499ea3df05b6cf (commit) via 9924486f8a979bf937c8fd7749aaf37c1bd762e1 (commit) via 8521fdf56e4908676c28c6bbdda3f1fb2284d3d7 (commit) via 3f73531d4e415c9c6182e162028eb146922d3c90 (commit) via 69ac6d27555cd4819d0c7f40e4471c6f885e23ab (commit) via 3f3db74413fc6b0afe4aa484c0ada2d5271ef0ba (commit) via bd990c803b40e1532cab6b29c75414ca6f30e782 (commit) via 5fc53f1edb2d003595ef224b31a805c3af0dc0e6 (commit) via 421eadb45b48d40aa7d0b5e42a48df4ba94b9fc0 (commit) via 1814cf744ce69ab97ce4a8fe8183b4d4f7f75cf4 (commit) via 54e900abfbbddde560a853355b448e1b86681741 (commit) via 393a45e2e1fa2f0d9657d4a686257d828cd918e4 (commit) via 39e0aa5390964953e1462f0efed0058c172a0a26 (commit) via 892b854f57f48381751b79bfc52048ea57bb0376 (commit) via 098160d5f2a1aa35d2f14c585dd87cefd8f56f41 (commit) via 9da936e49d5d5eb3b60b2697eb99f2e4ed9809aa (commit) from b3de2a8e6451c9138948c23a974740823ade8263 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Auxiliary/bash-completion/cmake | 9 +- Auxiliary/bash-completion/cpack | 9 +- Auxiliary/bash-completion/ctest | 9 +- CMakeCPackOptions.cmake.in | 34 + CMakeLists.txt | 19 +- CTestCustom.cmake.in | 18 + Help/command/FIND_XXX.txt | 4 + Help/command/add_dependencies.rst | 22 +- Help/command/build_command.rst | 5 +- Help/command/cmake_minimum_required.rst | 11 + Help/command/ctest_build.rst | 80 +- Help/command/ctest_configure.rst | 44 +- Help/command/ctest_coverage.rst | 41 +- Help/command/ctest_memcheck.rst | 40 +- Help/command/ctest_start.rst | 5 +- Help/command/ctest_submit.rst | 71 +- Help/command/ctest_test.rst | 100 +- Help/command/ctest_update.rst | 26 +- Help/command/ctest_upload.rst | 15 +- Help/command/execute_process.rst | 3 +- Help/command/file.rst | 23 +- Help/command/find_file.rst | 5 +- Help/command/find_library.rst | 11 +- Help/command/find_package.rst | 16 +- Help/command/find_path.rst | 5 +- Help/command/function.rst | 43 +- Help/command/if.rst | 3 + Help/command/install.rst | 4 + Help/command/macro.rst | 43 +- Help/command/project.rst | 7 + Help/command/set.rst | 163 +- Help/command/set_directory_properties.rst | 9 +- Help/command/set_source_files_properties.rst | 6 +- Help/command/set_tests_properties.rst | 30 +- Help/command/target_compile_definitions.rst | 2 +- Help/command/target_compile_features.rst | 2 +- Help/command/target_compile_options.rst | 4 +- Help/command/target_include_directories.rst | 3 + Help/command/target_link_libraries.rst | 221 ++- Help/command/target_sources.rst | 4 - Help/command/try_run.rst | 3 +- Help/generator/Green Hills MULTI.rst | 16 + Help/generator/Ninja.rst | 2 +- Help/generator/Visual Studio 6.rst | 8 +- Help/generator/Visual Studio 7.rst | 8 +- .../INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt | 38 +- Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt | 25 +- Help/manual/OPTIONS_BUILD.txt | 15 +- Help/manual/cmake-buildsystem.7.rst | 80 +- Help/manual/cmake-compile-features.7.rst | 16 +- Help/manual/cmake-developer.7.rst | 29 +- Help/manual/cmake-generator-expressions.7.rst | 54 +- Help/manual/cmake-generators.7.rst | 27 +- Help/manual/cmake-language.7.rst | 4 + Help/manual/cmake-modules.7.rst | 2 + Help/manual/cmake-packages.7.rst | 178 +- Help/manual/cmake-policies.7.rst | 7 + Help/manual/cmake-properties.7.rst | 23 +- Help/manual/cmake-variables.7.rst | 11 + Help/manual/cmake.1.rst | 6 +- Help/manual/ctest.1.rst | 22 +- Help/module/CheckFortranCompilerFlag.rst | 1 + Help/module/FindXCTest.rst | 1 + Help/policy/CMP0026.rst | 2 +- Help/policy/CMP0054.rst | 16 +- Help/policy/CMP0057.rst | 14 + Help/policy/CMP0058.rst | 108 ++ Help/policy/CMP0059.rst | 17 + Help/policy/CMP0060.rst | 63 + Help/policy/CMP0061.rst | 24 + Help/policy/CMP0062.rst | 27 + Help/policy/CMP0063.rst | 26 + Help/prop_dir/COMPILE_OPTIONS.rst | 4 +- Help/prop_dir/DEFINITIONS.rst | 11 +- Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst | 2 +- Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst | 2 +- Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst | 7 + Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst | 7 + Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst | 7 + Help/prop_sf/VS_XAML_TYPE.rst | 6 + Help/prop_test/FAIL_REGULAR_EXPRESSION.rst | 11 +- Help/prop_test/PASS_REGULAR_EXPRESSION.rst | 10 +- Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst | 4 +- Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst | 12 +- Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst | 4 +- Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst | 6 +- Help/prop_tgt/COMPILE_FEATURES.rst | 2 +- Help/prop_tgt/COMPILE_OPTIONS.rst | 9 +- Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst | 6 + Help/prop_tgt/CXX_EXTENSIONS.rst | 2 +- Help/prop_tgt/CXX_STANDARD.rst | 2 +- Help/prop_tgt/CXX_STANDARD_REQUIRED.rst | 2 +- Help/prop_tgt/C_EXTENSIONS.rst | 2 +- Help/prop_tgt/C_STANDARD.rst | 2 +- Help/prop_tgt/C_STANDARD_REQUIRED.rst | 2 +- Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst | 2 +- Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst | 3 + Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst | 3 + Help/prop_tgt/INTERFACE_SOURCES.rst | 4 - Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst | 13 + Help/prop_tgt/LANG_VISIBILITY_PRESET.rst | 13 +- Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst | 4 +- Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst | 12 +- Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst | 4 +- Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst | 6 +- Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst | 3 + Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst | 3 + Help/prop_tgt/PDB_NAME.rst | 3 +- Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst | 4 +- Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst | 12 +- Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst | 4 +- Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst | 6 +- Help/prop_tgt/TARGET_FILE_TYPES.txt | 9 - Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst | 14 +- Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst | 6 + Help/prop_tgt/XCTEST.rst | 13 + Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt | 2 - Help/prop_tgt/XXX_OUTPUT_NAME.txt | 5 +- Help/release/3.3.rst | 293 +++ Help/release/index.rst | 1 + Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst | 5 +- .../CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst | 9 + Help/variable/CMAKE_CFG_INTDIR.rst | 10 +- Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst | 12 + Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst | 2 +- Help/variable/CMAKE_CXX_EXTENSIONS.rst | 2 +- Help/variable/CMAKE_CXX_STANDARD.rst | 2 +- Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst | 2 +- Help/variable/CMAKE_C_COMPILE_FEATURES.rst | 2 +- Help/variable/CMAKE_C_EXTENSIONS.rst | 2 +- Help/variable/CMAKE_C_STANDARD.rst | 2 +- Help/variable/CMAKE_C_STANDARD_REQUIRED.rst | 2 +- .../variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst | 6 + .../CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst | 7 + .../CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst | 6 + .../CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst | 7 + Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst | 6 + Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst | 7 +- Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst | 5 +- .../CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst | 9 + Help/variable/CMAKE_MAKE_PROGRAM.rst | 4 + Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst | 2 + Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst | 5 +- .../CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst | 9 + Help/variable/CMAKE_SIZEOF_VOID_P.rst | 2 +- Help/variable/CMAKE_SYSTEM_PROCESSOR.rst | 2 + Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst | 7 +- .../CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst | 8 + Help/variable/GHS-MULTI.rst | 4 + Modules/BundleUtilities.cmake | 13 +- Modules/CMakeCheckCompilerFlagCommonPatterns.cmake | 6 +- Modules/CMakeDetermineCompilerId.cmake | 43 +- Modules/CMakeDetermineFortranCompiler.cmake | 41 + Modules/CMakeDetermineSystem.cmake | 2 +- Modules/CMakeFortranCompilerId.F.in | 66 +- Modules/CMakeGraphVizOptions.cmake | 2 +- Modules/CMakeParseImplicitLinkInfo.cmake | 2 +- Modules/CMakePlatformId.h.in | 11 +- Modules/CPack.cmake | 4 +- Modules/CPackBundle.cmake | 5 + Modules/CPackDeb.cmake | 697 +++++--- Modules/CPackIFW.cmake | 115 +- Modules/CPackRPM.cmake | 1686 +++++++++++------- Modules/CPackWIX.cmake | 7 +- Modules/CTest.cmake | 114 +- Modules/CTestCoverageCollectGCOV.cmake | 57 +- Modules/CheckCCompilerFlag.cmake | 8 +- Modules/CheckCXXCompilerFlag.cmake | 8 +- Modules/CheckFortranCompilerFlag.cmake | 66 + Modules/CheckStructHasMember.cmake | 2 +- Modules/CheckTypeSize.cmake | 10 +- Modules/Compiler/GHS-C.cmake | 27 + Modules/Compiler/GHS-CXX.cmake | 31 + Modules/Compiler/GHS-DetermineCompiler.cmake | 6 + Modules/Compiler/GNU-CXX.cmake | 4 +- Modules/Compiler/GNU-Fortran.cmake | 3 + Modules/Compiler/MSVC-CXX-FeatureTests.cmake | 17 +- Modules/Compiler/SunPro-C.cmake | 1 - Modules/Compiler/SunPro-CXX.cmake | 1 - Modules/Compiler/SunPro-Fortran.cmake | 1 + Modules/CompilerId/Xcode-3.pbxproj.in | 1 - Modules/DeployQt4.cmake | 90 +- Modules/ExternalData.cmake | 85 +- Modules/ExternalData_config.cmake.in | 1 + Modules/ExternalProject.cmake | 79 +- Modules/FeatureSummary.cmake | 13 +- Modules/FindBoost.cmake | 163 +- Modules/FindCUDA.cmake | 129 +- Modules/FindCUDA/run_nvcc.cmake | 2 + Modules/FindFLTK.cmake | 15 - Modules/FindFLTK2.cmake | 13 - Modules/FindGTest.cmake | 4 +- Modules/FindHDF5.cmake | 25 +- Modules/FindHg.cmake | 10 + Modules/FindJava.cmake | 2 +- Modules/FindMatlab.cmake | 1510 +++++++++++++++- Modules/FindPackageHandleStandardArgs.cmake | 266 +-- Modules/FindPkgConfig.cmake | 4 +- Modules/FindPostgreSQL.cmake | 44 +- Modules/FindRuby.cmake | 13 +- Modules/FindXCTest.cmake | 196 ++ Modules/FindwxWidgets.cmake | 2 +- Modules/FortranCInterface.cmake | 3 +- Modules/GenerateExportHeader.cmake | 2 +- Modules/GetPrerequisites.cmake | 43 +- Modules/InstallRequiredSystemLibraries.cmake | 82 +- Modules/MatlabTestsRedirect.cmake | 91 + Modules/Platform/BlueGeneQ-base.cmake | 177 ++ Modules/Platform/BlueGeneQ-dynamic-GNU-C.cmake | 16 + Modules/Platform/BlueGeneQ-dynamic-GNU-CXX.cmake | 16 + .../Platform/BlueGeneQ-dynamic-GNU-Fortran.cmake | 16 + Modules/Platform/BlueGeneQ-dynamic-XL-C.cmake | 16 + Modules/Platform/BlueGeneQ-dynamic-XL-CXX.cmake | 16 + .../Platform/BlueGeneQ-dynamic-XL-Fortran.cmake | 16 + Modules/Platform/BlueGeneQ-dynamic.cmake | 17 + Modules/Platform/BlueGeneQ-static-GNU-C.cmake | 16 + Modules/Platform/BlueGeneQ-static-GNU-CXX.cmake | 16 + .../Platform/BlueGeneQ-static-GNU-Fortran.cmake | 16 + Modules/Platform/BlueGeneQ-static-XL-C.cmake | 16 + Modules/Platform/BlueGeneQ-static-XL-CXX.cmake | 16 + Modules/Platform/BlueGeneQ-static-XL-Fortran.cmake | 16 + Modules/Platform/BlueGeneQ-static.cmake | 17 + Modules/Platform/CYGWIN-GNU.cmake | 7 +- Modules/Platform/Darwin.cmake | 15 + Modules/Platform/GHS-MULTI-Initialize.cmake | 29 + Modules/Platform/GHS-MULTI.cmake | 27 + Modules/Platform/HP-UX-GNU-ASM.cmake | 2 + Modules/Platform/Linux-PGI.cmake | 2 +- Modules/Platform/Linux.cmake | 2 +- Modules/Platform/Windows-GNU.cmake | 10 +- Modules/Platform/Windows-Intel-Fortran.cmake | 2 +- Modules/Platform/Windows-MSVC.cmake | 62 +- Modules/Platform/Windows-df.cmake | 2 - Modules/Qt4Macros.cmake | 12 +- Modules/Squish4RunTestCase.sh | 4 +- Modules/UseJava.cmake | 22 +- Modules/UseSWIG.cmake | 2 +- Modules/WIX.template.in | 1 + Modules/WriteCompilerDetectionHeader.cmake | 6 +- Source/CMakeLists.txt | 36 +- Source/CMakeVersion.cmake | 6 +- Source/CPack/IFW/cmCPackIFWGenerator.cxx | 85 +- Source/CPack/IFW/cmCPackIFWGenerator.h | 20 + Source/CPack/IFW/cmCPackIFWInstaller.cxx | 151 +- Source/CPack/IFW/cmCPackIFWInstaller.h | 26 + Source/CPack/IFW/cmCPackIFWPackage.cxx | 26 + Source/CPack/IFW/cmCPackIFWPackage.h | 8 + Source/CPack/OSXScriptLauncher.cxx | 8 +- Source/CPack/WiX/cmCPackWIXGenerator.cxx | 255 ++- Source/CPack/WiX/cmCPackWIXGenerator.h | 30 +- Source/CPack/WiX/cmWIXDirectoriesSourceWriter.cxx | 8 + Source/CPack/WiX/cmWIXDirectoriesSourceWriter.h | 2 + Source/CPack/WiX/cmWIXFilesSourceWriter.cxx | 36 +- Source/CPack/WiX/cmWIXFilesSourceWriter.h | 20 +- Source/CPack/WiX/cmWIXPatchParser.cxx | 4 +- Source/CPack/WiX/cmWIXShortcut.cxx | 125 ++ Source/CPack/WiX/cmWIXShortcut.h | 62 +- Source/CPack/WiX/cmWIXSourceWriter.cxx | 10 +- Source/CPack/WiX/cmWIXSourceWriter.h | 2 +- Source/CPack/cmCPack7zGenerator.cxx | 2 +- Source/CPack/cmCPackArchiveGenerator.cxx | 14 +- Source/CPack/cmCPackArchiveGenerator.h | 4 +- Source/CPack/cmCPackBundleGenerator.cxx | 27 +- Source/CPack/cmCPackDebGenerator.cxx | 108 +- Source/CPack/cmCPackDragNDropGenerator.cxx | 2 +- Source/CPack/cmCPackGenerator.cxx | 47 +- Source/CPack/cmCPackGeneratorFactory.cxx | 1 + Source/CPack/cmCPackNSISGenerator.cxx | 14 +- Source/CPack/cmCPackOSXX11Generator.cxx | 6 +- Source/CPack/cmCPackPackageMakerGenerator.cxx | 11 +- Source/CPack/cmCPackTGZGenerator.cxx | 2 +- Source/CPack/cmCPackTXZGenerator.cxx | 2 +- Source/CPack/cmCPackTarBZip2Generator.cxx | 2 +- Source/CPack/cmCPackTarCompressGenerator.cxx | 2 +- Source/CPack/cmCPackZIPGenerator.cxx | 2 +- Source/CPack/cpack.cxx | 22 +- Source/CTest/cmCTestBuildAndTestHandler.cxx | 10 +- Source/CTest/cmCTestBuildCommand.cxx | 18 +- Source/CTest/cmCTestBuildHandler.cxx | 176 +- Source/CTest/cmCTestBuildHandler.h | 12 +- Source/CTest/cmCTestCVS.cxx | 12 +- Source/CTest/cmCTestCVS.h | 4 +- Source/CTest/cmCTestConfigureCommand.cxx | 5 +- Source/CTest/cmCTestConfigureHandler.cxx | 56 +- Source/CTest/cmCTestCoverageCommand.cxx | 5 +- Source/CTest/cmCTestCoverageHandler.cxx | 681 +++---- Source/CTest/cmCTestCoverageHandler.h | 9 +- Source/CTest/cmCTestGIT.cxx | 1 + Source/CTest/cmCTestGenericHandler.cxx | 1 + Source/CTest/cmCTestGenericHandler.h | 3 + Source/CTest/cmCTestGlobalVC.cxx | 18 +- Source/CTest/cmCTestGlobalVC.h | 8 +- Source/CTest/cmCTestHandlerCommand.cxx | 16 +- Source/CTest/cmCTestHandlerCommand.h | 1 + Source/CTest/cmCTestLaunch.cxx | 132 +- Source/CTest/cmCTestLaunch.h | 12 +- Source/CTest/cmCTestMemCheckCommand.cxx | 14 +- Source/CTest/cmCTestMemCheckHandler.cxx | 167 +- Source/CTest/cmCTestMemCheckHandler.h | 3 +- Source/CTest/cmCTestMultiProcessHandler.cxx | 61 +- Source/CTest/cmCTestMultiProcessHandler.h | 3 + Source/CTest/cmCTestRunTest.cxx | 106 +- Source/CTest/cmCTestRunTest.h | 9 + Source/CTest/cmCTestSVN.cxx | 6 +- Source/CTest/cmCTestSVN.h | 4 +- Source/CTest/cmCTestScriptHandler.cxx | 39 +- Source/CTest/cmCTestStartCommand.cxx | 23 +- Source/CTest/cmCTestStartCommand.h | 10 + Source/CTest/cmCTestSubmitCommand.cxx | 26 +- Source/CTest/cmCTestSubmitHandler.cxx | 242 +-- Source/CTest/cmCTestTestCommand.cxx | 1 + Source/CTest/cmCTestTestHandler.cxx | 417 +++-- Source/CTest/cmCTestTestHandler.h | 13 +- Source/CTest/cmCTestUpdateCommand.cxx | 44 +- Source/CTest/cmCTestUpdateHandler.cxx | 145 +- Source/CTest/cmCTestUploadCommand.cxx | 7 + Source/CTest/cmCTestUploadHandler.cxx | 50 +- Source/CTest/cmCTestVC.cxx | 38 +- Source/CTest/cmCTestVC.h | 7 +- Source/CTest/cmParseBlanketJSCoverage.cxx | 12 +- Source/CTest/cmParseCacheCoverage.cxx | 4 +- Source/CTest/cmParseCoberturaCoverage.cxx | 15 +- Source/CTest/cmParseDelphiCoverage.cxx | 19 +- Source/CTest/cmParseJacocoCoverage.cxx | 14 +- Source/Checks/cm_cxx11_unordered_map.cmake | 25 + Source/Checks/cm_cxx11_unordered_map.cpp | 6 + Source/Checks/cm_cxx14_cstdio.cmake | 33 + Source/Checks/cm_cxx14_cstdio.cpp | 2 + Source/CursesDialog/ccmake.cxx | 3 +- Source/CursesDialog/cmCursesBoolWidget.cxx | 2 +- .../CursesDialog/cmCursesCacheEntryComposite.cxx | 44 +- Source/CursesDialog/cmCursesCacheEntryComposite.h | 3 +- Source/CursesDialog/cmCursesDummyWidget.cxx | 2 +- Source/CursesDialog/cmCursesFilePathWidget.cxx | 2 +- Source/CursesDialog/cmCursesLongMessageForm.cxx | 1 - Source/CursesDialog/cmCursesMainForm.cxx | 170 +- Source/CursesDialog/cmCursesMainForm.h | 2 +- Source/CursesDialog/cmCursesOptionsWidget.cxx | 2 +- Source/CursesDialog/cmCursesPathWidget.cxx | 4 +- Source/CursesDialog/cmCursesStringWidget.cxx | 2 +- Source/CursesDialog/cmCursesWidget.h | 6 +- Source/QtDialog/CMakeLists.txt | 8 +- Source/QtDialog/CMakeSetup.cxx | 86 +- Source/QtDialog/CMakeSetupDialog.cxx | 36 +- Source/QtDialog/MacInstallDialog.ui | 103 -- Source/QtDialog/QCMake.cxx | 105 +- Source/QtDialog/QMacInstallDialog.cxx | 121 -- Source/QtDialog/QMacInstallDialog.h | 20 - Source/QtIFW/controlscript.qs | 6 + Source/QtIFW/installscript.qs.in | 4 +- Source/cmAddCustomCommandCommand.cxx | 7 +- Source/cmAddCustomTargetCommand.cxx | 7 +- Source/cmAddDependenciesCommand.cxx | 9 - Source/cmAddExecutableCommand.cxx | 3 +- Source/cmAddLibraryCommand.cxx | 12 +- Source/cmAddSubDirectoryCommand.cxx | 14 +- Source/cmAlgorithms.h | 360 ++++ Source/cmArchiveWrite.cxx | 44 +- Source/cmArchiveWrite.h | 12 +- Source/cmAuxSourceDirectoryCommand.cxx | 3 +- Source/cmBootstrapCommands1.cxx | 3 +- Source/cmBootstrapCommands2.cxx | 3 +- Source/cmBreakCommand.cxx | 6 +- Source/cmBuildCommand.cxx | 16 +- Source/cmBuildCommand.h | 2 + Source/cmBuildNameCommand.cxx | 6 +- Source/cmCLocaleEnvironmentScope.cxx | 67 + Source/cmCLocaleEnvironmentScope.h | 32 + Source/cmCMakePolicyCommand.cxx | 4 +- Source/cmCPluginAPI.cxx | 37 +- Source/cmCTest.cxx | 350 ++-- Source/cmCTest.h | 37 +- Source/cmCacheManager.cxx | 168 +- Source/cmCacheManager.h | 121 +- Source/cmCommand.h | 2 +- Source/cmCommandArgumentParserHelper.cxx | 13 +- Source/cmCommands.cxx.in | 2 +- Source/cmCommands.h | 8 +- Source/cmCommandsForBootstrap.cxx | 2 +- Source/cmComputeLinkDepends.cxx | 17 +- Source/cmComputeLinkDepends.h | 2 - Source/cmComputeLinkInformation.cxx | 86 +- Source/cmComputeLinkInformation.h | 4 + Source/cmComputeTargetDepends.cxx | 21 +- Source/cmConditionEvaluator.cxx | 66 +- Source/cmConditionEvaluator.h | 3 + Source/cmConfigure.cmake.h.in | 1 + Source/cmConfigureFileCommand.cxx | 4 +- Source/cmCoreTryCompile.cxx | 50 +- Source/cmCreateTestSourceList.cxx | 2 +- Source/cmCustomCommandGenerator.cxx | 31 +- Source/cmDefinePropertyCommand.cxx | 3 +- Source/cmDefinitions.cxx | 180 +- Source/cmDefinitions.h | 72 +- Source/cmDependsC.cxx | 22 +- Source/cmDependsFortran.cxx | 2 +- Source/cmDocumentation.cxx | 16 + Source/cmDocumentation.h | 1 + Source/cmDocumentationFormatter.cxx | 2 +- Source/cmDocumentationFormatter.h | 4 +- Source/cmExecuteProcessCommand.cxx | 24 +- Source/cmExecutionStatus.h | 29 +- Source/cmExportBuildFileGenerator.cxx | 15 +- Source/cmExportCommand.cxx | 7 +- Source/cmExportFileGenerator.cxx | 135 +- Source/cmExportFileGenerator.h | 5 + Source/cmExportInstallFileGenerator.cxx | 41 +- Source/cmExportSet.cxx | 1 + Source/cmExportSetMap.cxx | 1 + Source/cmExtraCodeBlocksGenerator.cxx | 85 +- Source/cmExtraCodeBlocksGenerator.h | 4 + Source/cmExtraCodeLiteGenerator.cxx | 10 +- Source/cmExtraEclipseCDT4Generator.cxx | 31 +- Source/cmExtraKateGenerator.cxx | 4 +- Source/cmExtraSublimeTextGenerator.cxx | 6 +- Source/cmFLTKWrapUICommand.cxx | 15 +- Source/cmFileCommand.cxx | 164 +- Source/cmFileLockPool.cxx | 1 + Source/cmFileLockPool.h | 2 + Source/cmFileTimeComparison.cxx | 12 + Source/cmFindBase.cxx | 44 +- Source/cmFindLibraryCommand.cxx | 21 +- Source/cmFindPackageCommand.cxx | 109 +- Source/cmFindPackageCommand.h | 2 - Source/cmFindPathCommand.cxx | 7 +- Source/cmFindProgramCommand.cxx | 7 +- Source/cmForEachCommand.cxx | 2 - Source/cmFunctionCommand.cxx | 39 +- Source/cmGeneratorExpression.cxx | 36 +- Source/cmGeneratorExpression.h | 10 +- Source/cmGeneratorExpressionContext.cxx | 34 + Source/cmGeneratorExpressionContext.h | 54 + Source/cmGeneratorExpressionDAGChecker.cxx | 1 + Source/cmGeneratorExpressionEvaluationFile.cxx | 51 +- Source/cmGeneratorExpressionEvaluationFile.h | 3 +- Source/cmGeneratorExpressionEvaluator.cxx | 1824 +------------------ Source/cmGeneratorExpressionEvaluator.h | 28 +- Source/cmGeneratorExpressionNode.cxx | 1866 ++++++++++++++++++++ Source/cmGeneratorExpressionNode.h | 70 + Source/cmGeneratorTarget.cxx | 81 +- Source/cmGeneratorTarget.h | 15 +- Source/cmGetCMakePropertyCommand.cxx | 28 +- Source/cmGetDirectoryPropertyCommand.cxx | 4 +- Source/cmGetFilenameComponentCommand.cxx | 10 +- Source/cmGetPropertyCommand.cxx | 22 +- Source/cmGetTargetPropertyCommand.cxx | 3 +- Source/cmGhsMultiGpj.cxx | 44 + Source/cmGhsMultiGpj.h | 34 + Source/cmGhsMultiTargetGenerator.cxx | 600 +++++++ Source/cmGhsMultiTargetGenerator.h | 119 ++ Source/cmGlobalBorlandMakefileGenerator.cxx | 22 +- Source/cmGlobalBorlandMakefileGenerator.h | 8 +- Source/cmGlobalGenerator.cxx | 297 ++-- Source/cmGlobalGenerator.h | 39 +- Source/cmGlobalGeneratorFactory.h | 9 +- Source/cmGlobalGhsMultiGenerator.cxx | 547 ++++++ Source/cmGlobalGhsMultiGenerator.h | 128 ++ Source/cmGlobalJOMMakefileGenerator.cxx | 24 +- Source/cmGlobalJOMMakefileGenerator.h | 5 +- Source/cmGlobalKdevelopGenerator.cxx | 2 +- Source/cmGlobalMSYSMakefileGenerator.cxx | 17 +- Source/cmGlobalMSYSMakefileGenerator.h | 5 +- Source/cmGlobalMinGWMakefileGenerator.cxx | 46 +- Source/cmGlobalMinGWMakefileGenerator.h | 5 +- Source/cmGlobalNMakeMakefileGenerator.cxx | 24 +- Source/cmGlobalNMakeMakefileGenerator.h | 5 +- Source/cmGlobalNinjaGenerator.cxx | 189 +- Source/cmGlobalNinjaGenerator.h | 30 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 93 +- Source/cmGlobalUnixMakefileGenerator3.h | 15 +- Source/cmGlobalVisualStudio10Generator.cxx | 76 +- Source/cmGlobalVisualStudio10Generator.h | 22 +- Source/cmGlobalVisualStudio11Generator.cxx | 37 +- Source/cmGlobalVisualStudio11Generator.h | 7 +- Source/cmGlobalVisualStudio12Generator.cxx | 35 +- Source/cmGlobalVisualStudio12Generator.h | 8 +- Source/cmGlobalVisualStudio14Generator.cxx | 35 +- Source/cmGlobalVisualStudio14Generator.h | 8 +- Source/cmGlobalVisualStudio6Generator.cxx | 40 +- Source/cmGlobalVisualStudio6Generator.h | 7 +- Source/cmGlobalVisualStudio71Generator.cxx | 35 +- Source/cmGlobalVisualStudio71Generator.h | 10 +- Source/cmGlobalVisualStudio7Generator.cxx | 207 ++- Source/cmGlobalVisualStudio7Generator.h | 27 +- Source/cmGlobalVisualStudio8Generator.cxx | 58 +- Source/cmGlobalVisualStudio8Generator.h | 9 +- Source/cmGlobalVisualStudio9Generator.cxx | 39 +- Source/cmGlobalVisualStudio9Generator.h | 5 +- Source/cmGlobalVisualStudioGenerator.cxx | 22 +- Source/cmGlobalVisualStudioGenerator.h | 27 +- Source/cmGlobalWatcomWMakeGenerator.cxx | 29 +- Source/cmGlobalWatcomWMakeGenerator.h | 6 +- Source/cmGlobalXCodeGenerator.cxx | 334 ++-- Source/cmGlobalXCodeGenerator.h | 8 +- Source/cmGraphVizWriter.cxx | 9 +- Source/cmIfCommand.cxx | 11 +- Source/cmIncludeCommand.cxx | 27 +- Source/cmIncludeDirectoryCommand.cxx | 2 +- Source/cmIncludeExternalMSProjectCommand.cxx | 2 +- Source/cmInstallCommand.cxx | 92 +- Source/cmInstallDirectoryGenerator.cxx | 4 +- Source/cmInstallExportGenerator.cxx | 10 +- Source/cmInstallExportGenerator.h | 3 + Source/cmInstallFilesCommand.cxx | 18 +- Source/cmInstallFilesGenerator.cxx | 1 + Source/cmInstallGenerator.cxx | 14 +- Source/cmInstallGenerator.h | 9 +- Source/cmInstallProgramsCommand.cxx | 11 +- Source/cmInstallTargetGenerator.cxx | 25 +- Source/cmInstallTargetGenerator.h | 2 + Source/cmInstallTargetsCommand.cxx | 5 +- Source/cmInstalledFile.cxx | 11 + Source/cmInstalledFile.h | 11 +- Source/cmLinkDirectoriesCommand.cxx | 7 +- Source/cmListCommand.cxx | 149 +- Source/cmListFileCache.cxx | 55 +- Source/cmListFileCache.h | 15 +- Source/cmLoadCacheCommand.cxx | 8 +- Source/cmLoadCommandCommand.cxx | 2 +- Source/cmLocalGenerator.cxx | 533 +++--- Source/cmLocalGenerator.h | 74 +- Source/cmLocalGhsMultiGenerator.cxx | 43 + Source/cmLocalGhsMultiGenerator.h | 39 + Source/cmLocalNinjaGenerator.cxx | 31 +- Source/cmLocalNinjaGenerator.h | 15 +- Source/cmLocalUnixMakefileGenerator3.cxx | 235 +-- Source/cmLocalUnixMakefileGenerator3.h | 85 +- Source/cmLocalVisualStudio10Generator.cxx | 9 +- Source/cmLocalVisualStudio10Generator.h | 4 +- Source/cmLocalVisualStudio6Generator.cxx | 179 +- Source/cmLocalVisualStudio6Generator.h | 4 +- Source/cmLocalVisualStudio7Generator.cxx | 159 +- Source/cmLocalVisualStudio7Generator.h | 11 +- Source/cmLocalVisualStudioGenerator.cxx | 20 +- Source/cmLocalVisualStudioGenerator.h | 25 +- Source/cmLocalXCodeGenerator.cxx | 5 +- Source/cmLocalXCodeGenerator.h | 3 +- Source/cmMacroCommand.cxx | 117 +- Source/cmMakeDepend.cxx | 1 + Source/cmMakefile.cxx | 1199 +++++-------- Source/cmMakefile.h | 274 +-- Source/cmMakefileExecutableTargetGenerator.cxx | 12 +- Source/cmMakefileLibraryTargetGenerator.cxx | 16 +- Source/cmMakefileTargetGenerator.cxx | 129 +- Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmMarkAsAdvancedCommand.cxx | 17 +- Source/cmMessageCommand.cxx | 6 +- Source/cmNinjaNormalTargetGenerator.cxx | 32 +- Source/cmNinjaTargetGenerator.cxx | 31 +- Source/cmNinjaTargetGenerator.h | 3 +- Source/cmOSXBundleGenerator.cxx | 3 +- Source/cmOptionCommand.cxx | 20 +- Source/cmOrderDirectories.cxx | 1 + Source/cmOutputRequiredFilesCommand.cxx | 3 +- Source/cmPolicies.cxx | 715 +++----- Source/cmPolicies.h | 329 ++-- Source/cmProjectCommand.cxx | 22 +- Source/cmPropertyMap.cxx | 4 +- Source/cmQTWrapCPPCommand.cxx | 16 +- Source/cmQTWrapUICommand.cxx | 20 +- Source/cmQtAutoGenerators.cxx | 162 +- Source/cmQtAutoGenerators.h | 2 + Source/cmRST.cxx | 31 +- Source/cmSearchPath.cxx | 31 +- Source/cmSearchPath.h | 2 +- Source/cmSetCommand.cxx | 27 +- Source/cmSetPropertyCommand.cxx | 26 +- Source/cmSetPropertyCommand.h | 2 +- Source/cmSetTargetPropertiesCommand.cxx | 25 +- Source/cmSetTestsPropertiesCommand.cxx | 26 +- Source/cmSiteNameCommand.cxx | 4 +- Source/cmSourceFile.cxx | 6 +- Source/cmSourceFileLocation.cxx | 18 +- Source/cmSourceGroupCommand.cxx | 2 +- Source/cmStandardIncludes.h | 146 -- Source/cmState.cxx | 778 ++++++++ Source/cmState.h | 187 ++ Source/cmStringCommand.cxx | 42 +- Source/cmSubdirCommand.cxx | 13 +- Source/cmSystemTools.cxx | 108 +- Source/cmSystemTools.h | 12 +- Source/cmTarget.cxx | 276 ++- Source/cmTarget.h | 33 +- Source/cmTargetCompileDefinitionsCommand.cxx | 2 + Source/cmTargetCompileFeaturesCommand.cxx | 2 + Source/cmTargetCompileOptionsCommand.cxx | 2 + Source/cmTargetIncludeDirectoriesCommand.cxx | 3 +- Source/cmTargetLinkLibrariesCommand.cxx | 14 +- Source/cmTest.h | 5 - Source/cmTestGenerator.cxx | 31 +- Source/cmTryRunCommand.cxx | 56 +- Source/cmUtilitySourceCommand.cxx | 16 +- Source/cmVariableRequiresCommand.cxx | 8 +- Source/cmVariableWatch.cxx | 2 + Source/cmVisualStudio10TargetGenerator.cxx | 244 ++- Source/cmVisualStudio10TargetGenerator.h | 4 + Source/cmVisualStudioGeneratorOptions.cxx | 26 +- Source/cmVisualStudioGeneratorOptions.h | 2 +- Source/cmXCode21Object.cxx | 6 +- Source/cmXCodeObject.cxx | 23 +- Source/cmXMLSafe.cxx | 4 +- Source/cmXMLSafe.h | 4 +- Source/cmXMLWriter.cxx | 134 ++ Source/cmXMLWriter.h | 120 ++ Source/cmake.cxx | 792 ++++----- Source/cmake.h | 144 +- Source/cmakemain.cxx | 43 +- Source/cmcldeps.cxx | 5 +- Source/cmcmd.cxx | 306 ++-- Source/ctest.cxx | 4 + Source/kwsys/.gitattributes | 12 + Source/kwsys/CMakeLists.txt | 3 + Source/kwsys/CPU.h.in | 10 +- Source/kwsys/DynamicLoader.cxx | 4 + Source/kwsys/Glob.cxx | 115 +- Source/kwsys/Glob.hxx.in | 53 +- Source/kwsys/Process.h.in | 9 + Source/kwsys/ProcessUNIX.c | 360 ++-- Source/kwsys/ProcessWin32.c | 564 +++--- Source/kwsys/SystemInformation.cxx | 8 + Source/kwsys/SystemTools.cxx | 102 +- Source/kwsys/SystemTools.hxx.in | 7 +- Source/kwsys/hashtable.hxx.in | 2 +- Source/kwsys/testHashSTL.cxx | 4 +- Source/kwsys/testSystemTools.cxx | 18 + .../target_compile_definitions/CMakeLists.txt | 15 + .../target_compile_definitions/consumer.c | 23 + .../target_compile_definitions/consumer.cpp | 18 + .../target_compile_options/CMakeLists.txt | 15 + .../target_compile_options/consumer.c | 23 + .../target_compile_options/consumer.cpp | 18 + .../target_include_directories/CMakeLists.txt | 14 + .../target_include_directories/c_only/c_only.h | 2 + .../target_include_directories/consumer.c | 10 + .../target_include_directories/consumer.cpp | 9 + .../target_include_directories/cxx_only/cxx_only.h | 2 + .../target_link_libraries/cmp0022/CMakeLists.txt | 12 +- Tests/CMakeLib/run_compile_commands.cxx | 2 +- Tests/CMakeLists.txt | 290 ++- Tests/CMakeOnly/AllFindModules/CMakeLists.txt | 4 +- Tests/CMakeOnly/CompilerIdFortran/CMakeLists.txt | 10 +- Tests/CMakeTestBadCommandLines/RunCMake.cmake | 79 - Tests/CMakeTests/CheckSourceTreeTest.cmake.in | 12 +- Tests/CMakeTests/ELFTest.cmake.in | 2 +- Tests/CPackComponentsDEB/CMakeLists.txt | 98 + .../MyLibCPackConfig-components-depend1.cmake.in | 20 + .../MyLibCPackConfig-components-depend2.cmake.in | 29 + ...LibCPackConfig-components-description1.cmake.in | 22 + ...LibCPackConfig-components-description2.cmake.in | 26 + ...nfig-components-lintian-dpkgdeb-checks.cmake.in | 15 + ...MyLibCPackConfig-components-shlibdeps1.cmake.in | 24 + .../RunCPackVerifyResult-components-depend1.cmake | 85 + .../RunCPackVerifyResult-components-depend2.cmake | 97 + ...CPackVerifyResult-components-description1.cmake | 85 + ...CPackVerifyResult-components-description2.cmake | 85 + ...yResult-components-lintian-dpkgdeb-checks.cmake | 78 + ...unCPackVerifyResult-components-shlibdeps1.cmake | 75 + .../CPackComponentsDEB/RunCPackVerifyResult.cmake | 193 ++ .../license.txt | 0 .../mylib.cpp | 0 .../mylib.h | 0 .../mylibapp.cpp | 0 Tests/CPackComponentsForAll/CMakeLists.txt | 50 +- .../MyLibCPackConfig-IgnoreGroup.cmake.in | 18 +- .../RunCPackVerifyResult.cmake | 156 +- Tests/CPackComponentsForAll/mylib | 17 + .../symlink_postinstall_expected.txt | 57 + Tests/CPackComponentsPrefix/CMakeLists.txt | 14 + Tests/CPackComponentsPrefix/file-development.txt | 1 + Tests/CPackComponentsPrefix/file-runtime.txt | 1 + .../TestProject/3rdparty/foo.cpp | 1 + .../TestProject/CMakeLists.txt | 41 + .../TestProject/extra/extra.cpp | 1 + .../TestProject/fake_compile_time_gcno.cmake | 7 + .../TestProject/fake_run_time_gcda.cmake | 12 + .../TestProject/main.cpp} | 0 Tests/CTestCoverageCollectGCOV/fakegcov.cmake | 12 +- Tests/CTestCoverageCollectGCOV/test.cmake.in | 37 +- Tests/CTestTestFailedSubmits/test.cmake.in | 49 - Tests/CTestTestVerboseOutput/CMakeLists.txt | 11 + Tests/CTestTestVerboseOutput/CTestConfig.cmake | 7 + .../CTestTestVerboseOutput/nop.c | 0 Tests/CTestTestVerboseOutput/test.cmake.in | 20 + Tests/CTestUpdateCommon.cmake | 6 + Tests/CTestUpdateGIT.cmake.in | 33 + .../cxx_generalized_initializers.cpp | 8 +- Tests/CustomCommandByproducts/CMakeLists.txt | 21 + Tests/ExportImport/Export/CMakeLists.txt | 12 +- Tests/ExportImport/Export/Interface/CMakeLists.txt | 12 +- .../Export/Interface/source_target.cpp | 13 + .../Export/Interface/source_target_for_install.cpp | 13 + Tests/ExportImport/Export/testLibPerConfigDest.c | 1 + Tests/ExportImport/Import/A/CMakeLists.txt | 3 + Tests/ExportImport/Import/A/imp_testExe1.c | 2 + Tests/ExportImport/Import/Interface/CMakeLists.txt | 8 + .../Import/Interface/source_target_test.cpp | 7 + Tests/ExternalProject/CMakeLists.txt | 35 + Tests/ExternalProjectSubdir/CMakeLists.txt | 29 + Tests/ExternalProjectSubdir/Subdir1/CMakeLists.txt | 14 + Tests/FindMatlab/basic_checks/CMakeLists.txt | 57 + Tests/FindMatlab/cmake_matlab_unit_tests1.m | 33 + Tests/FindMatlab/cmake_matlab_unit_tests2.m | 6 + Tests/FindMatlab/cmake_matlab_unit_tests3.m | 5 + Tests/FindMatlab/cmake_matlab_unit_tests_timeout.m | 16 + Tests/FindMatlab/help_text1.m.txt | 2 + Tests/FindMatlab/matlab_wrapper1.cpp | 26 + Tests/FindMatlab/versions_checks/CMakeLists.txt | 52 + Tests/FindPackageTest/CMakeLists.txt | 13 +- Tests/FindPackageTest/FindSomePackage.cmake | 3 +- Tests/FindPackageTest/FindUpperCasePackage.cmake | 3 +- Tests/FortranOnly/CMakeLists.txt | 7 + Tests/GhsMulti/CMakeLists.txt | 4 + Tests/GhsMulti/ReturnNum/App/CMakeLists.txt | 4 + Tests/GhsMulti/ReturnNum/App/Main.c | 8 + Tests/GhsMulti/ReturnNum/CMakeLists.txt | 3 + Tests/GhsMulti/ReturnNum/Int/AppDD.int | 12 + Tests/GhsMulti/ReturnNum/Int/CMakeLists.txt | 1 + Tests/GhsMulti/ReturnNum/Int/Default.bsp | 35 + Tests/GhsMulti/ReturnNum/Lib/CMakeLists.txt | 1 + Tests/GhsMulti/ReturnNum/Lib/HelperFun.c | 4 + Tests/GhsMulti/ReturnNum/Lib/HelperFun.h | 1 + Tests/InterfaceLibrary/headerdir/CMakeLists.txt | 11 +- .../headerdir/iface_header_builddir.h.in | 1 + .../target/site/{jacoco.xml => jacoco.xml.in} | 0 .../dded55e43cd6529ee35d24113dfc87a3 | 1 + .../SHA1/85158f0c1996837976e858c42a9a7634bfe91b93 | 1 + Tests/Module/ExternalData/CMakeLists.txt | 6 + Tests/Module/ExternalData/Data1Check.cmake | 14 + Tests/Module/ExternalData/DataAlgoMapA.dat.md5 | 1 + Tests/Module/ExternalData/DataAlgoMapB.dat.sha1 | 1 + .../ExternalData/DataNoSymlinks/CMakeLists.txt | 8 + .../ExternalData/{ => DataNoSymlinks}/Data.dat.md5 | 0 .../DataNoSymlinks/DataNoSymlinksCheck.cmake | 6 + .../{Directory => DirRecurse}/A.dat.md5 | 0 .../{Directory => DirRecurse}/B.dat.md5 | 0 .../{Directory => DirRecurse}/C.dat.md5 | 0 .../{Directory => DirRecurse/Sub1}/A.dat.md5 | 0 .../{Directory => DirRecurse/Sub1}/B.dat.md5 | 0 .../{Directory => DirRecurse/Sub1}/C.dat.md5 | 0 .../{Directory => DirRecurse/Sub2/Dir}/A.dat.md5 | 0 .../{Directory => DirRecurse/Sub2/Dir}/B.dat.md5 | 0 .../{Directory => DirRecurse/Sub2/Dir}/C.dat.md5 | 0 Tests/Preprocess/CMakeLists.txt | 16 +- Tests/QtAutogen/CMakeLists.txt | 26 +- Tests/QtAutogen/autorcc_depends/CMakeLists.txt | 7 +- Tests/QtAutogen/autorcc_depends/res1.qrc | 5 - Tests/QtAutogen/autorcc_depends/res1.qrc.in | 5 + .../{res1_input.txt => res1/input.txt.in} | 0 Tests/QtAutogen/generated.txt.in | 1 + Tests/QtAutogen/generated_resource.qrc.in | 5 + .../CMP0022/CMP0022-NOWARN-shared-stderr.txt | 1 - .../CMP0022/CMP0022-NOWARN-static-NEW-stderr.txt | 1 - ...CMP0022-NOWARN-static-link_libraries-stderr.txt | 1 - .../CMP0022/CMP0022-NOWARN-static-stderr.txt | 1 - .../RunCMake/CMP0022/CMP0022-export-exe-stderr.txt | 1 - .../CMP0026/CMP0026-CONFIG-LOCATION-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0026/CMP0026-IMPORTED-stderr.txt | 1 - .../CMP0026/CMP0026-LOCATION-CONFIG-OLD-stderr.txt | 1 - .../RunCMake/CMP0028/CMP0028-OLD-iface-stderr.txt | 1 - Tests/RunCMake/CMP0028/CMP0028-OLD-stderr.txt | 1 - .../CMP0037/CMP0037-OLD-reserved-stderr.txt | 1 - .../RunCMake/CMP0037/CMP0037-OLD-space-stderr.txt | 1 - Tests/RunCMake/CMP0038/CMP0038-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0039/CMP0039-OLD-stderr.txt | 1 - .../CMP0040/CMP0040-NEW-existing-target-stderr.txt | 1 - .../CMP0040/CMP0040-OLD-existing-target-stderr.txt | 1 - .../CMP0040/CMP0040-OLD-missing-target-stderr.txt | 1 - Tests/RunCMake/CMP0041/CMP0041-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0041/CMP0041-tid-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0041/RunCMakeTest.cmake | 3 + Tests/RunCMake/CMP0042/CMP0042-NEW-stderr.txt | 1 - Tests/RunCMake/CMP0042/CMP0042-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0043/CMP0043-NEW-stderr.txt | 1 - Tests/RunCMake/CMP0043/CMP0043-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0045/CMP0045-OLD-stderr.txt | 1 - .../CMP0046-NEW-existing-dependency-stderr.txt | 1 - .../CMP0046-OLD-existing-dependency-stderr.txt | 1 - .../CMP0046-OLD-missing-dependency-stderr.txt | 1 - Tests/RunCMake/CMP0049/CMP0049-OLD-stderr.txt | 1 - Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt | 1 - .../CMP0055/CMP0055-OLD-Out-of-Scope-stderr.txt | 1 - .../CMP0055-OLD-Reject-Arguments-stderr.txt | 1 - Tests/RunCMake/CMP0057/CMP0057-NEW.cmake | 31 + .../CMP0057-OLD-result.txt} | 0 Tests/RunCMake/CMP0057/CMP0057-OLD-stderr.txt | 8 + Tests/RunCMake/CMP0057/CMP0057-OLD.cmake | 7 + .../CMP0057-WARN-result.txt} | 0 Tests/RunCMake/CMP0057/CMP0057-WARN-stderr.txt | 19 + Tests/RunCMake/CMP0057/CMP0057-WARN.cmake | 5 + Tests/RunCMake/CMP0057/CMakeLists.txt | 3 + Tests/RunCMake/CMP0057/RunCMakeTest.cmake | 5 + .../CMP0059-NEW-result.txt} | 0 Tests/RunCMake/CMP0059/CMP0059-NEW-stderr.txt | 2 + Tests/RunCMake/CMP0059/CMP0059-NEW.cmake | 17 + .../CMP0059-OLD-result.txt} | 0 Tests/RunCMake/CMP0059/CMP0059-OLD-stderr.txt | 2 + Tests/RunCMake/CMP0059/CMP0059-OLD.cmake | 17 + .../CMP0059-WARN-result.txt} | 0 Tests/RunCMake/CMP0059/CMP0059-WARN-stderr.txt | 18 + Tests/RunCMake/CMP0059/CMP0059-WARN.cmake | 17 + Tests/RunCMake/{CMP0055 => CMP0059}/CMakeLists.txt | 0 Tests/RunCMake/CMP0059/RunCMakeTest.cmake | 5 + Tests/RunCMake/CMP0060/CMP0060-Common.cmake | 35 + Tests/RunCMake/CMP0060/CMP0060-NEW.cmake | 2 + .../RunCMake/CMP0060/CMP0060-OLD-Build-result.txt | 1 + .../RunCMake/CMP0060/CMP0060-OLD-Build-stdout.txt | 1 + Tests/RunCMake/CMP0060/CMP0060-OLD.cmake | 2 + .../CMP0060/CMP0060-WARN-OFF-Build-result.txt | 1 + .../CMP0060/CMP0060-WARN-OFF-Build-stdout.txt | 1 + Tests/RunCMake/CMP0060/CMP0060-WARN-OFF.cmake | 1 + .../CMP0060/CMP0060-WARN-ON-Build-result.txt | 1 + .../CMP0060/CMP0060-WARN-ON-Build-stdout.txt | 1 + Tests/RunCMake/CMP0060/CMP0060-WARN-ON-stderr.txt | 16 + Tests/RunCMake/CMP0060/CMP0060-WARN-ON.cmake | 2 + Tests/RunCMake/CMP0060/CMakeLists.txt | 3 + Tests/RunCMake/CMP0060/RunCMakeTest.cmake | 19 + Tests/RunCMake/CMP0060/cmp0060.c | 4 + Tests/RunCMake/CMP0060/main.c | 5 + Tests/RunCMake/CMakeLists.txt | 98 +- .../CMakeLists.txt | 0 .../CompileDefinitions-result.txt} | 0 .../CompileDefinitions-stderr-VS.txt | 8 + .../CompileDefinitions-stderr-Xcode.txt | 9 + .../CompileDefinitions.cmake | 5 + .../CompileOptions-result.txt} | 0 .../CompileOptions-stderr-VS.txt | 8 + .../COMPILE_LANGUAGE-genex/CompileOptions.cmake | 5 + .../IncludeDirectories-result.txt} | 0 .../IncludeDirectories-stderr-VS.txt | 8 + .../IncludeDirectories-stderr-Xcode.txt | 9 + .../IncludeDirectories.cmake | 5 + .../COMPILE_LANGUAGE-genex/RunCMakeTest.cmake | 20 + Tests/RunCMake/COMPILE_LANGUAGE-genex/main.cpp | 5 + .../CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake | 1 - Tests/RunCMake/CPackSymlinks/RunCMakeTest.cmake | 20 + .../CPackSymlinks/SrcSymlinksTar-stdout.txt | 10 + Tests/RunCMake/CPackSymlinks/testcpacksym.tar | Bin 0 -> 10240 bytes Tests/RunCMake/CTest/BeforeProject-stderr.txt | 2 +- .../CTestCommandLine/BadCTestTestfile-stderr.txt | 4 + .../{CMP0054 => CTestCommandLine}/CMakeLists.txt | 0 Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 41 + Tests/RunCMake/CTestCommandLine/init.cmake | 3 + .../repeat-until-fail-bad1-result.txt} | 0 .../repeat-until-fail-bad1-stderr.txt | 1 + .../repeat-until-fail-bad2-result.txt} | 0 .../repeat-until-fail-bad2-stderr.txt | 1 + .../CTestCommandLine/repeat-until-fail-cmake.cmake | 15 + .../repeat-until-fail-ctest-result.txt | 1 + .../repeat-until-fail-ctest-stderr.txt | 1 + .../repeat-until-fail-ctest-stdout.txt | 30 + .../repeat-until-fail-good-stderr.txt | 1 + Tests/RunCMake/CTestCommandLine/test1.cmake | 13 + Tests/RunCMake/CTestMemcheck/CMakeLists.txt.in | 7 - Tests/RunCMake/CTestMemcheck/CTestConfig.cmake.in | 9 - .../CTestMemcheck/DummyAddressSanitizer-stderr.txt | 2 - .../CTestMemcheck/DummyBCNoLogFile-stderr.txt | 3 - .../CTestMemcheck/DummyLeakSanitizer-stderr.txt | 2 - .../CTestMemcheck/DummyMemorySanitizer-stderr.txt | 2 - .../RunCMake/CTestMemcheck/DummyPurify-stderr.txt | 3 - .../CTestMemcheck/DummyPurifyNoLogFile-stderr.txt | 2 - .../CTestMemcheck/DummyThreadSanitizer-stderr.txt | 2 - .../DummyUndefinedBehaviorSanitizer-stderr.txt | 2 - .../CTestMemcheck/DummyValgrind-stderr.txt | 3 - .../DummyValgrindCustomOptions-stderr.txt | 2 - .../CTestMemcheck/DummyValgrindFailPost-stderr.txt | 3 - .../CTestMemcheck/DummyValgrindFailPre-stderr.txt | 3 - .../CTestMemcheck/DummyValgrindFailPre-stdout.txt | 1 - .../DummyValgrindIgnoreMemcheck-stderr.txt | 3 - .../DummyValgrindInvalidSupFile-stderr.txt | 2 - .../DummyValgrindInvalidSupFile-stdout.txt | 1 - .../DummyValgrindNoLogFile-stderr.txt | 2 - .../CTestMemcheck/DummyValgrindPrePost-stderr.txt | 3 - .../DummyValgrindTwoTargets-stderr.txt | 3 - Tests/RunCMake/CTestMemcheck/NotExist-stdout.txt | 1 - Tests/RunCMake/CTestMemcheck/RunCMakeTest.cmake | 144 -- Tests/RunCMake/CTestMemcheck/Unknown-stderr.txt | 2 - Tests/RunCMake/CTestMemcheck/Unknown-stdout.txt | 1 - Tests/RunCMake/CTestMemcheck/test.cmake.in | 24 - Tests/RunCMake/CTestSubmit/BadArg-stderr.txt | 2 - Tests/RunCMake/CTestSubmit/BadFILES-stderr.txt | 2 - Tests/RunCMake/CTestSubmit/BadPARTS-stderr.txt | 2 - .../CTestSubmit/CDashUploadFILES-stderr.txt | 2 - .../CTestSubmit/CDashUploadPARTS-stderr.txt | 2 - .../CTestSubmit/CDashUploadRETRY_COUNT-stderr.txt | 2 - .../CTestSubmit/CDashUploadRETRY_DELAY-stderr.txt | 2 - Tests/RunCMake/CTestSubmit/FailDrop-cp-stderr.txt | 4 - Tests/RunCMake/CTestSubmit/FailDrop-ftp-stderr.txt | 3 - .../RunCMake/CTestSubmit/FailDrop-http-stderr.txt | 3 - .../RunCMake/CTestSubmit/FailDrop-https-stderr.txt | 3 - Tests/RunCMake/CTestSubmit/FailDrop-scp-stderr.txt | 2 - .../CTestSubmit/FailDrop-xmlrpc-stderr.txt | 2 - .../CTestSubmit/PARTSCDashUpload-stderr.txt | 2 - .../CTestSubmit/PARTSCDashUploadType-stderr.txt | 2 - .../CTestSubmit/RepeatRETURN_VALUE-stderr.txt | 2 - Tests/RunCMake/CTestSubmit/RunCMakeTest.cmake | 62 - .../RunCMake/CommandLine/Build-ninja-v-stdout.txt | 1 + Tests/RunCMake/CommandLine/Build.cmake | 5 + ...tar-end-opt1-result.txt => C-no-arg-result.txt} | 0 Tests/RunCMake/CommandLine/C-no-arg-stderr.txt | 2 + .../C-no-file-result.txt} | 0 Tests/RunCMake/CommandLine/C-no-file-stderr.txt | 3 + .../D-no-arg-result.txt} | 0 Tests/RunCMake/CommandLine/D-no-arg-stderr.txt | 2 + .../CommandLine/DeprecateVS6-WARN-OFF.cmake | 0 .../CommandLine/DeprecateVS6-WARN-ON-stderr.txt | 5 + .../CommandLine/DeprecateVS6-WARN-ON.cmake | 0 .../CommandLine/DeprecateVS70-WARN-OFF.cmake | 0 .../CommandLine/DeprecateVS70-WARN-ON-stderr.txt | 5 + .../CommandLine/DeprecateVS70-WARN-ON.cmake | 0 .../E-no-arg-result.txt} | 0 Tests/RunCMake/CommandLine/E-no-arg-stderr.txt | 3 + .../E___run_iwyu-bad-iwyu-result.txt} | 0 .../CommandLine/E___run_iwyu-bad-iwyu-stderr.txt | 2 + .../E___run_iwyu-no----result.txt} | 0 .../CommandLine/E___run_iwyu-no----stderr.txt | 1 + .../E___run_iwyu-no-cc-result.txt} | 0 .../CommandLine/E___run_iwyu-no-cc-stderr.txt | 1 + .../E___run_iwyu-no-iwyu-result.txt} | 0 .../CommandLine/E___run_iwyu-no-iwyu-stderr.txt | 1 + .../E_create_symlink-no-arg-result.txt} | 0 .../CommandLine/E_create_symlink-no-arg-stderr.txt | 3 + .../E_rename-no-arg-result.txt} | 0 .../CommandLine/E_rename-no-arg-stderr.txt | 3 + .../CommandLine/E_tar-bad-from3-stderr.txt | 2 - .../E_touch_nocreate-no-arg-result.txt} | 0 .../CommandLine/E_touch_nocreate-no-arg-stderr.txt | 3 + .../G_bad-arg-result.txt} | 0 Tests/RunCMake/CommandLine/G_bad-arg-stderr.txt | 3 + .../G_no-arg-result.txt} | 0 Tests/RunCMake/CommandLine/G_no-arg-stderr.txt | 3 + Tests/RunCMake/CommandLine/NoArgs-stdout.txt | 10 + .../P_no-arg-result.txt} | 0 Tests/RunCMake/CommandLine/P_no-arg-stderr.txt | 1 + .../P_no-file-result.txt} | 0 Tests/RunCMake/CommandLine/P_no-file-stderr.txt | 1 + Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 108 +- .../U-no-arg-result.txt} | 0 Tests/RunCMake/CommandLine/U-no-arg-stderr.txt | 2 + Tests/RunCMake/CommandLine/Wdev-stderr.txt | 5 + Tests/RunCMake/CommandLine/Wdev.cmake | 1 + Tests/RunCMake/CommandLine/Wno-dev.cmake | 1 + .../cache-no-file-result.txt} | 0 .../RunCMake/CommandLine/cache-no-file-stderr.txt | 2 + .../RunCMake/CommandLine/cmake_depends-check.cmake | 13 + .../RunCMake/CommandLine/cmake_depends-stdout.txt | 1 + Tests/RunCMake/CommandLine/cmake_depends/test.c | 2 + Tests/RunCMake/CommandLine/cmake_depends/test.h | 1 + .../CommandLine/cmake_depends/test_UTF-16LE.h | Bin 0 -> 58 bytes Tests/RunCMake/CommandLine/debug-output-stdout.txt | 1 + .../RunCMake/CommandLine/debug-output.cmake | 0 Tests/RunCMake/CommandLine/debug-trycompile.cmake | 5 + .../lists-no-file-result.txt} | 0 .../RunCMake/CommandLine/lists-no-file-stderr.txt | 2 + Tests/RunCMake/CommandLine/trace-stderr.txt | 2 + .../RunCMake/CommandLine/trace.cmake | 0 .../7zip-gz-result.txt} | 0 Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt | 1 + Tests/RunCMake/CommandLineTar/7zip.cmake | 10 + .../{CMP0054 => CommandLineTar}/CMakeLists.txt | 0 Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake | 28 + .../bad-format-result.txt} | 0 .../RunCMake/CommandLineTar/bad-format-stderr.txt | 1 + .../bad-from1-result.txt} | 0 .../bad-from1-stderr.txt} | 0 .../bad-from2-result.txt} | 0 .../bad-from2-stderr.txt} | 0 .../bad-from3-result.txt} | 0 Tests/RunCMake/CommandLineTar/bad-from3-stderr.txt | 2 + .../bad-from3.txt} | 0 .../bad-from4-result.txt} | 0 .../bad-from4-stderr.txt} | 0 .../bad-from4.txt} | 0 .../bad-from5-result.txt} | 0 .../bad-from5-stderr.txt} | 0 .../bad-from5.txt} | 0 .../bad-mtime1-result.txt} | 0 .../bad-mtime1-stderr.txt} | 0 .../bad-opt1-result.txt} | 0 .../bad-opt1-stderr.txt} | 0 .../end-opt1-result.txt} | 0 .../end-opt1-stderr.txt} | 0 Tests/RunCMake/CommandLineTar/gnutar-gz.cmake | 10 + Tests/RunCMake/CommandLineTar/gnutar.cmake | 10 + Tests/RunCMake/CommandLineTar/pax-xz.cmake | 10 + Tests/RunCMake/CommandLineTar/pax.cmake | 10 + Tests/RunCMake/CommandLineTar/paxr-bz2.cmake | 10 + Tests/RunCMake/CommandLineTar/paxr.cmake | 10 + Tests/RunCMake/CommandLineTar/roundtrip.cmake | 81 + .../zip-bz2-result.txt} | 0 Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt | 1 + Tests/RunCMake/CommandLineTar/zip.cmake | 10 + ...LinkImplementationFeatureCycleSolved-stderr.txt | 1 - .../CrosscompilingEmulator/AddTest-check.cmake | 12 + .../RunCMake/CrosscompilingEmulator/AddTest.cmake | 8 + .../RunCMake/CrosscompilingEmulator/CMakeLists.txt | 3 + .../CrosscompilingEmulatorProperty.cmake | 28 + .../CrosscompilingEmulator/InitialCache.txt.in | 1 + .../CrosscompilingEmulator/RunCMakeTest.cmake | 8 + .../CrosscompilingEmulator/TryRun-stdout.txt | 1 + Tests/RunCMake/CrosscompilingEmulator/TryRun.cmake | 18 + .../RunCMake/CrosscompilingEmulator/simple_src.cxx | 4 + .../DisallowedCommands/CMP0029-OLD-stderr.txt | 1 - .../BadAlgoMap1-result.txt} | 0 Tests/RunCMake/ExternalData/BadAlgoMap1-stderr.txt | 9 + Tests/RunCMake/ExternalData/BadAlgoMap1.cmake | 5 + .../BadAlgoMap2-result.txt} | 0 Tests/RunCMake/ExternalData/BadAlgoMap2-stderr.txt | 9 + Tests/RunCMake/ExternalData/BadAlgoMap2.cmake | 5 + .../BadRecurse1-result.txt} | 0 Tests/RunCMake/ExternalData/BadRecurse1-stderr.txt | 6 + Tests/RunCMake/ExternalData/BadRecurse1.cmake | 2 + .../BadRecurse2-result.txt} | 0 Tests/RunCMake/ExternalData/BadRecurse2-stderr.txt | 6 + Tests/RunCMake/ExternalData/BadRecurse2.cmake | 2 + .../BadRecurse3-result.txt} | 0 Tests/RunCMake/ExternalData/BadRecurse3-stderr.txt | 9 + Tests/RunCMake/ExternalData/BadRecurse3.cmake | 2 + Tests/RunCMake/ExternalData/RunCMakeTest.cmake | 5 + .../Add_StepDependencies_iface-result.txt} | 0 .../Add_StepDependencies_iface-stderr.txt | 5 + .../Add_StepDependencies_iface.cmake | 4 + .../Add_StepDependencies_iface_step-result.txt} | 0 .../Add_StepDependencies_iface_step-stderr.txt | 5 + .../Add_StepDependencies_iface_step.cmake | 11 + .../ExternalProject/CMAKE_CACHE_ARGS-check.cmake | 17 + .../ExternalProject/CMAKE_CACHE_ARGS.cmake | 23 +- .../CMAKE_CACHE_DEFAULT_ARGS-check.cmake | 17 + .../ExternalProject/CMAKE_CACHE_DEFAULT_ARGS.cmake | 23 +- .../ExternalProject/CMAKE_CACHE_mix-check.cmake | 26 + .../RunCMake/ExternalProject/CMAKE_CACHE_mix.cmake | 32 +- .../NoOptions-result.txt} | 0 .../RunCMake/ExternalProject/NoOptions-stderr.txt | 18 + Tests/RunCMake/ExternalProject/NoOptions.cmake | 2 + Tests/RunCMake/ExternalProject/RunCMakeTest.cmake | 5 + .../SourceEmpty-result.txt} | 0 .../ExternalProject/SourceEmpty-stderr.txt | 18 + Tests/RunCMake/ExternalProject/SourceEmpty.cmake | 5 + .../SourceMissing-result.txt} | 0 .../ExternalProject/SourceMissing-stderr.txt | 18 + Tests/RunCMake/ExternalProject/SourceMissing.cmake | 2 + .../FeatureSummaryWhatOnce-stdout.txt | 4 + .../FeatureSummary/FeatureSummaryWhatOnce.cmake | 8 + Tests/RunCMake/FeatureSummary/RunCMakeTest.cmake | 1 + .../COMPILE_LANGUAGE-genex-result.txt} | 0 .../File_Generate/COMPILE_LANGUAGE-genex.cmake | 12 + .../File_Generate/CarryPermissions-stderr.txt | 1 - .../File_Generate/CommandConflict-stderr.txt | 2 +- .../File_Generate/GenerateSource-stderr.txt | 1 - .../File_Generate/OutputConflict-stderr.txt | 2 +- .../OutputNameMatchesOtherSources-stderr.txt | 1 - Tests/RunCMake/File_Generate/ReRunCMake-stderr.txt | 1 - Tests/RunCMake/File_Generate/RunCMakeTest.cmake | 10 + .../File_Generate/WriteIfDifferent-stderr.txt | 1 - Tests/RunCMake/File_Generate/empty.c | 8 + Tests/RunCMake/FindMatlab/CMakeLists.txt | 3 + .../MatlabTest1-result.txt} | 0 Tests/RunCMake/FindMatlab/MatlabTest1-stderr.txt | 2 + Tests/RunCMake/FindMatlab/MatlabTest1.cmake | 22 + .../MatlabTest2-result.txt} | 0 Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt | 1 + Tests/RunCMake/FindMatlab/MatlabTest2.cmake | 9 + Tests/RunCMake/FindMatlab/RunCMakeTest.cmake | 51 + .../RunCMake/FindMatlab/cmake_matlab_unit_tests2.m | 6 + Tests/RunCMake/FindMatlab/matlab_wrapper1.cpp | 26 + .../FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake | 51 + .../FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake | 51 + Tests/RunCMake/FindPkgConfig/RunCMakeTest.cmake | 5 + .../BadTargetTypeInterface-result.txt} | 0 .../BadTargetTypeInterface-stderr.txt | 26 + .../BadTargetTypeInterface.cmake | 6 + ...COMPILE_LANGUAGE-add_custom_command-result.txt} | 0 .../COMPILE_LANGUAGE-add_custom_command-stderr.txt | 10 + .../COMPILE_LANGUAGE-add_custom_command.cmake | 8 + .../COMPILE_LANGUAGE-add_custom_target-result.txt} | 0 .../COMPILE_LANGUAGE-add_custom_target-stderr.txt | 10 + .../COMPILE_LANGUAGE-add_custom_target.cmake | 6 + .../COMPILE_LANGUAGE-add_executable-result.txt} | 0 .../COMPILE_LANGUAGE-add_executable-stderr.txt | 10 + .../COMPILE_LANGUAGE-add_executable.cmake | 4 + .../COMPILE_LANGUAGE-add_library-result.txt} | 0 .../COMPILE_LANGUAGE-add_library-stderr.txt | 10 + .../COMPILE_LANGUAGE-add_library.cmake | 4 + .../COMPILE_LANGUAGE-add_test-result.txt} | 0 .../COMPILE_LANGUAGE-add_test-stderr.txt | 10 + .../COMPILE_LANGUAGE-add_test.cmake | 5 + .../COMPILE_LANGUAGE-install-result.txt} | 0 .../COMPILE_LANGUAGE-install-stderr.txt | 8 + .../COMPILE_LANGUAGE-install.cmake | 5 + .../COMPILE_LANGUAGE-target_sources-result.txt} | 0 .../COMPILE_LANGUAGE-target_sources-stderr.txt | 10 + .../COMPILE_LANGUAGE-target_sources.cmake | 5 + .../COMPILE_LANGUAGE-unknown-lang-result.txt} | 0 .../COMPILE_LANGUAGE-unknown-lang-stderr.txt | 8 + .../COMPILE_LANGUAGE-unknown-lang.cmake | 4 + .../GeneratorExpression/RunCMakeTest.cmake | 9 + .../ValidTarget-TARGET_PDB_FILE-stderr.txt | 1 - .../BinInInstallPrefix-CMP0052-NEW-result.txt} | 0 ...efix-CMP0052-NEW-stderr_INCLUDE_DIRECTORIES.txt | 6 + .../BinInInstallPrefix-CMP0052-OLD-result.txt | 0 .../BinInInstallPrefix-CMP0052-WARN-result.txt | 0 ...fix-CMP0052-WARN-stderr_INCLUDE_DIRECTORIES.txt | 20 + .../BinInInstallPrefix-result.txt} | 0 .../BinInInstallPrefix-stderr_SOURCES.txt | 6 + .../BinaryDirectoryInInterface-result.txt} | 0 ...ctoryInInterface-stderr_INCLUDE_DIRECTORIES.txt | 6 + .../BinaryDirectoryInInterface-stderr_SOURCES.txt | 6 + .../IfacePaths/BinaryDirectoryInInterface.cmake | 15 + .../CMakeLists.txt | 0 .../DirInInstallPrefix-result.txt | 0 Tests/RunCMake/IfacePaths/DirInInstallPrefix.cmake | 14 + .../InstallInBinDir-result.txt} | 0 .../InstallInBinDir-stderr_INCLUDE_DIRECTORIES.txt | 6 + .../IfacePaths/InstallInBinDir-stderr_SOURCES.txt | 6 + .../InstallInSrcDir-result.txt} | 0 .../InstallInSrcDir-stderr_INCLUDE_DIRECTORIES.txt | 6 + .../IfacePaths/InstallInSrcDir-stderr_SOURCES.txt | 6 + .../InstallPrefixInInterface-result.txt | 0 .../InstallPrefixInInterface.cmake | 0 .../InstallToPrefixInSrcDirInSource-result.txt | 0 .../InstallToPrefixInSrcDirOutOfSource-result.txt | 0 .../RelativePathInGenex-result.txt} | 0 ...tivePathInGenex-stderr_INCLUDE_DIRECTORIES.txt} | 0 .../RelativePathInGenex-stderr_SOURCES.txt | 4 + .../RunCMake/IfacePaths/RelativePathInGenex.cmake | 13 + .../RelativePathInInterface-result.txt} | 0 ...PathInInterface-stderr_INCLUDE_DIRECTORIES.txt} | 0 .../RelativePathInInterface-stderr_SOURCES.txt | 4 + .../IfacePaths/RelativePathInInterface.cmake | 14 + Tests/RunCMake/IfacePaths/RunCMakeTest.cmake | 159 ++ .../SourceDirectoryInInterface-result.txt} | 0 ...ctoryInInterface-stderr_INCLUDE_DIRECTORIES.txt | 6 + .../SourceDirectoryInInterface-stderr_SOURCES.txt | 6 + .../IfacePaths/SourceDirectoryInInterface.cmake | 15 + .../SrcInInstallPrefix-CMP0052-NEW-result.txt} | 0 ...efix-CMP0052-NEW-stderr_INCLUDE_DIRECTORIES.txt | 6 + .../SrcInInstallPrefix-CMP0052-OLD-result.txt | 0 .../SrcInInstallPrefix-CMP0052-WARN-result.txt | 0 ...fix-CMP0052-WARN-stderr_INCLUDE_DIRECTORIES.txt | 20 + .../SrcInInstallPrefix-result.txt} | 0 .../SrcInInstallPrefix-stderr_SOURCES.txt | 6 + Tests/RunCMake/{CMP0004 => IfacePaths}/empty.cpp | 0 .../export-NOWARN-result.txt | 0 Tests/RunCMake/IfacePaths/export-NOWARN.cmake | 77 + .../RunCMake/IncludeWhatYouUse/C-Build-stdout.txt | 4 + .../IncludeWhatYouUse/C-launch-Build-stdout.txt | 4 + Tests/RunCMake/IncludeWhatYouUse/C-launch.cmake | 3 + Tests/RunCMake/IncludeWhatYouUse/C.cmake | 3 + Tests/RunCMake/IncludeWhatYouUse/CMakeLists.txt | 3 + .../IncludeWhatYouUse/CXX-Build-stdout.txt | 4 + .../IncludeWhatYouUse/CXX-launch-Build-stdout.txt | 4 + Tests/RunCMake/IncludeWhatYouUse/CXX-launch.cmake | 3 + Tests/RunCMake/IncludeWhatYouUse/CXX.cmake | 3 + .../RunCMake/IncludeWhatYouUse/RunCMakeTest.cmake | 22 + .../IncludeWhatYouUse}/main.c | 0 .../IncludeWhatYouUse/main.cxx} | 0 .../RunCMake/Ninja/CMP0058-NEW-by-build-stdout.txt | 4 + Tests/RunCMake/Ninja/CMP0058-NEW-by.cmake | 3 + .../CMP0058-NEW-no-build-result.txt} | 0 .../RunCMake/Ninja/CMP0058-NEW-no-build-stderr.txt | 1 + Tests/RunCMake/Ninja/CMP0058-NEW-no.cmake | 2 + .../RunCMake/Ninja/CMP0058-OLD-by-build-stdout.txt | 4 + Tests/RunCMake/Ninja/CMP0058-OLD-by.cmake | 3 + .../RunCMake/Ninja/CMP0058-OLD-no-build-stdout.txt | 4 + Tests/RunCMake/Ninja/CMP0058-OLD-no.cmake | 2 + .../Ninja/CMP0058-WARN-by-build-stdout.txt | 4 + Tests/RunCMake/Ninja/CMP0058-WARN-by.cmake | 2 + .../Ninja/CMP0058-WARN-no-build-stdout.txt | 4 + Tests/RunCMake/Ninja/CMP0058-WARN-no-stderr.txt | 19 + Tests/RunCMake/Ninja/CMP0058-WARN-no.cmake | 1 + Tests/RunCMake/Ninja/CMP0058-common.cmake | 17 + Tests/RunCMake/Ninja/CMakeLists.txt | 3 + Tests/RunCMake/Ninja/RunCMakeTest.cmake | 18 + Tests/RunCMake/README.rst | 10 + Tests/RunCMake/RunCMake.cmake | 26 +- Tests/RunCMake/RunCTest.cmake | 17 + Tests/RunCMake/Syntax/ParenNoSpace2-stderr.txt | 1 - .../RunCMake/TargetPolicies/PolicyList-stderr.txt | 2 + .../BadSelfReference1-stderr.txt | 2 +- .../BadSelfReference2-stderr.txt | 2 +- .../BadSelfReference3-stderr.txt | 2 +- .../BadSelfReference4-stderr.txt | 2 +- .../BadSelfReference5-stderr.txt | 2 +- .../BadSelfReference6-stderr.txt | 2 +- .../LinkImplementationCycle3-stderr.txt | 1 - .../TargetSources/CMP0026-LOCATION-stderr.txt | 1 - .../RunCMake/TargetSources/ExportBuild-result.txt | 2 +- .../RunCMake/TargetSources/ExportBuild-stderr.txt | 1 - .../TargetSources/ExportInstall-result.txt | 1 - .../TargetSources/ExportInstall-stderr.txt | 1 - Tests/RunCMake/TargetSources/ExportInstall.cmake | 6 - Tests/RunCMake/TargetSources/RunCMakeTest.cmake | 1 - .../RunCMake/VisibilityPreset/CMP0063-Common.cmake | 7 + Tests/RunCMake/VisibilityPreset/CMP0063-NEW.cmake | 8 + Tests/RunCMake/VisibilityPreset/CMP0063-OLD.cmake | 8 + .../VisibilityPreset/CMP0063-WARN-no.cmake | 8 + .../VisibilityPreset/CMP0063-WARN-yes-stderr.txt | 50 + .../VisibilityPreset/CMP0063-WARN-yes.cmake | 8 + Tests/RunCMake/VisibilityPreset/CMakeLists.txt | 9 +- Tests/RunCMake/VisibilityPreset/PropertyTypo.cmake | 5 + Tests/RunCMake/VisibilityPreset/RunCMakeTest.cmake | 4 + Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 6 + .../XcodeProject/XcodeAttributeGenex-check.cmake | 7 + .../XcodeProject/XcodeAttributeGenex.cmake | 4 + .../XcodeAttributeGenexError-result.txt} | 0 .../XcodeAttributeGenexError-stderr.txt | 6 + .../XcodeProject/XcodeAttributeGenexError.cmake | 4 + .../XcodeProject/XcodeFileType-check.cmake | 4 +- .../XcodeProject/XcodeObjectNeedsQuote-check.cmake | 7 + .../XcodeProject/XcodeObjectNeedsQuote.cmake | 3 + .../XcodeProject/XcodePlatformFrameworks.cmake | 6 + .../XcodeProject/someFileWithoutSpecialChars | 0 .../RunCMake/build_command/CMP0061-NEW-stderr.txt | 10 + Tests/RunCMake/build_command/CMP0061-NEW.cmake | 2 + .../build_command/CMP0061-OLD-make-stderr.txt | 10 + .../RunCMake/build_command/CMP0061-OLD-make.cmake | 2 + .../build_command/CMP0061-OLD-other-stderr.txt | 10 + .../RunCMake/build_command/CMP0061-OLD-other.cmake | 2 + Tests/RunCMake/build_command/CMP0061Common.cmake | 10 + Tests/RunCMake/build_command/RunCMakeTest.cmake | 8 + .../BuildFailure-CMP0061-OLD-result.txt | 1 + .../BuildFailure-CMP0061-OLD-stderr.txt | 2 + .../BuildFailure-result.txt} | 0 Tests/RunCMake/ctest_build/BuildFailure-stderr.txt | 2 + Tests/RunCMake/ctest_build/BuildQuiet-stdout.txt | 12 + Tests/RunCMake/ctest_build/CMakeLists.txt.in | 5 + Tests/RunCMake/ctest_build/CTestConfig.cmake.in | 1 + Tests/RunCMake/ctest_build/RunCMakeTest.cmake | 33 + Tests/RunCMake/ctest_build/test.cmake.in | 17 + Tests/RunCMake/ctest_configure/CMakeLists.txt.in | 4 + .../RunCMake/ctest_configure/CTestConfig.cmake.in | 1 + .../ctest_configure/ConfigureQuiet-stdout.txt | 9 + Tests/RunCMake/ctest_configure/RunCMakeTest.cmake | 10 + Tests/RunCMake/ctest_configure/test.cmake.in | 14 + Tests/RunCMake/ctest_coverage/CMakeLists.txt.in | 4 + Tests/RunCMake/ctest_coverage/CTestConfig.cmake.in | 1 + .../ctest_coverage/CoverageQuiet-stdout.txt | 1 + Tests/RunCMake/ctest_coverage/RunCMakeTest.cmake | 10 + Tests/RunCMake/ctest_coverage/test.cmake.in | 18 + Tests/RunCMake/ctest_memcheck/CMakeLists.txt.in | 7 + Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in | 9 + .../DummyAddressSanitizer-result.txt | 0 .../DummyAddressSanitizer-stderr.txt | 1 + .../DummyAddressSanitizer-stdout.txt | 0 .../DummyBC-result.txt | 0 .../DummyBC-stderr.txt | 0 .../DummyBC-stdout.txt | 0 .../DummyBCNoLogFile-result.txt | 0 .../ctest_memcheck/DummyBCNoLogFile-stderr.txt | 2 + .../DummyBCNoLogFile-stdout.txt | 0 .../DummyLeakSanitizer-result.txt | 0 .../ctest_memcheck/DummyLeakSanitizer-stderr.txt | 1 + .../DummyLeakSanitizer-stdout.txt | 0 .../DummyMemorySanitizer-result.txt | 0 .../ctest_memcheck/DummyMemorySanitizer-stderr.txt | 1 + .../DummyMemorySanitizer-stdout.txt | 0 .../DummyPurify-result.txt | 0 .../DummyPurify-stdout.txt | 0 .../DummyPurifyNoLogFile-result.txt | 0 .../ctest_memcheck/DummyPurifyNoLogFile-stderr.txt | 1 + .../DummyPurifyNoLogFile-stdout.txt | 0 .../RunCMake/ctest_memcheck/DummyQuiet-stdout.txt | 1 + .../DummyThreadSanitizer-result.txt | 0 .../ctest_memcheck/DummyThreadSanitizer-stderr.txt | 1 + .../DummyThreadSanitizer-stdout.txt | 0 .../DummyUndefinedBehaviorSanitizer-result.txt | 0 .../DummyUndefinedBehaviorSanitizer-stderr.txt | 1 + .../DummyUndefinedBehaviorSanitizer-stdout.txt | 0 .../DummyValgrind-result.txt | 0 .../DummyValgrind-stdout.txt | 0 .../DummyValgrindCustomOptions-result.txt | 0 .../DummyValgrindCustomOptions-stderr.txt | 1 + .../DummyValgrindCustomOptions-stdout.txt | 0 .../DummyValgrindFailPost-result.txt | 0 .../DummyValgrindFailPost-stderr.txt | 2 + .../DummyValgrindFailPost-stdout.txt | 0 .../DummyValgrindFailPre-result.txt | 0 .../ctest_memcheck/DummyValgrindFailPre-stderr.txt | 2 + .../ctest_memcheck/DummyValgrindFailPre-stdout.txt | 1 + .../DummyValgrindIgnoreMemcheck-result.txt | 0 .../DummyValgrindIgnoreMemcheck-stdout.txt | 0 .../DummyValgrindInvalidSupFile-result.txt | 0 .../DummyValgrindInvalidSupFile-stderr.txt | 1 + .../DummyValgrindInvalidSupFile-stdout.txt | 1 + .../DummyValgrindNoLogFile-result.txt | 0 .../DummyValgrindNoLogFile-stderr.txt | 1 + .../DummyValgrindNoLogFile-stdout.txt | 0 .../DummyValgrindPrePost-result.txt | 0 .../DummyValgrindPrePost-stdout.txt | 0 .../DummyValgrindTwoTargets-result.txt | 0 .../DummyValgrindTwoTargets-stdout.txt | 0 .../NotExist-result.txt | 0 .../NotExist-stderr.txt | 0 Tests/RunCMake/ctest_memcheck/NotExist-stdout.txt | 1 + Tests/RunCMake/ctest_memcheck/RunCMakeTest.cmake | 135 ++ .../Unknown-result.txt | 0 Tests/RunCMake/ctest_memcheck/Unknown-stderr.txt | 1 + Tests/RunCMake/ctest_memcheck/Unknown-stdout.txt | 1 + Tests/RunCMake/ctest_memcheck/test.cmake.in | 24 + .../testAddressSanitizer.cmake | 0 .../testLeakSanitizer.cmake | 0 .../testMemorySanitizer.cmake | 0 .../testThreadSanitizer.cmake | 0 .../testUndefinedBehaviorSanitizer.cmake | 0 Tests/RunCMake/ctest_start/CMakeLists.txt.in | 4 + Tests/RunCMake/ctest_start/CTestConfig.cmake.in | 1 + Tests/RunCMake/ctest_start/RunCMakeTest.cmake | 10 + .../StartQuiet-stdout.txt} | 0 Tests/RunCMake/ctest_start/test.cmake.in | 13 + .../BadArg-result.txt | 0 Tests/RunCMake/ctest_submit/BadArg-stderr.txt | 2 + .../BadFILES-result.txt | 0 Tests/RunCMake/ctest_submit/BadFILES-stderr.txt | 2 + .../BadPARTS-result.txt | 0 Tests/RunCMake/ctest_submit/BadPARTS-stderr.txt | 2 + .../CDashSubmitQuiet-result.txt} | 0 .../ctest_submit/CDashSubmitQuiet-stderr.txt | 3 + .../ctest_submit/CDashSubmitQuiet-stdout.txt | 3 + .../CDashUploadFILES-result.txt | 0 .../ctest_submit/CDashUploadFILES-stderr.txt | 2 + .../CDashUploadFTP-result.txt | 0 .../CDashUploadFTP-stderr.txt | 0 .../CDashUploadNone-result.txt | 0 .../CDashUploadNone-stderr.txt | 0 .../CDashUploadPARTS-result.txt | 0 .../ctest_submit/CDashUploadPARTS-stderr.txt | 2 + .../CDashUploadRETRY_COUNT-result.txt | 0 .../ctest_submit/CDashUploadRETRY_COUNT-stderr.txt | 2 + .../CDashUploadRETRY_DELAY-result.txt | 0 .../ctest_submit/CDashUploadRETRY_DELAY-stderr.txt | 2 + .../CMakeLists.txt.in | 0 .../CTestConfig.cmake.in | 0 .../FailDrop-cp-result.txt | 0 Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt | 3 + .../FailDrop-cp-stdout.txt | 0 .../FailDrop-ftp-result.txt | 0 .../RunCMake/ctest_submit/FailDrop-ftp-stderr.txt | 2 + .../FailDrop-ftp-stdout.txt | 0 .../FailDrop-http-result.txt | 0 .../RunCMake/ctest_submit/FailDrop-http-stderr.txt | 2 + .../FailDrop-http-stdout.txt | 0 .../FailDrop-https-result.txt | 0 .../ctest_submit/FailDrop-https-stderr.txt | 2 + .../FailDrop-https-stdout.txt | 0 .../FailDrop-scp-result.txt | 0 .../RunCMake/ctest_submit/FailDrop-scp-stderr.txt | 1 + .../FailDrop-scp-stdout.txt | 0 .../FailDrop-xmlrpc-result.txt | 0 .../ctest_submit/FailDrop-xmlrpc-stderr.txt | 1 + .../FailDrop-xmlrpc-stdout.txt | 0 .../PARTSCDashUpload-result.txt | 0 .../ctest_submit/PARTSCDashUpload-stderr.txt | 2 + .../PARTSCDashUploadType-result.txt | 0 .../ctest_submit/PARTSCDashUploadType-stderr.txt | 2 + .../RepeatRETURN_VALUE-result.txt | 0 .../ctest_submit/RepeatRETURN_VALUE-stderr.txt | 2 + Tests/RunCMake/ctest_submit/RunCMakeTest.cmake | 47 + .../{CTestSubmit => ctest_submit}/test.cmake.in | 0 Tests/RunCMake/ctest_test/CMakeLists.txt.in | 4 + Tests/RunCMake/ctest_test/CTestConfig.cmake.in | 1 + Tests/RunCMake/ctest_test/RunCMakeTest.cmake | 10 + Tests/RunCMake/ctest_test/TestQuiet-stdout.txt | 2 + Tests/RunCMake/ctest_test/test.cmake.in | 16 + Tests/RunCMake/ctest_upload/CMakeLists.txt.in | 4 + Tests/RunCMake/ctest_upload/CTestConfig.cmake.in | 1 + Tests/RunCMake/ctest_upload/RunCMakeTest.cmake | 10 + Tests/RunCMake/ctest_upload/UploadQuiet-stdout.txt | 1 + Tests/RunCMake/ctest_upload/test.cmake.in | 14 + .../execute_process/MergeOutput-stdout.txt | 10 + Tests/RunCMake/execute_process/MergeOutput.cmake | 4 + .../execute_process/MergeOutputFile-stderr.txt | 10 + .../RunCMake/execute_process/MergeOutputFile.cmake | 7 + .../execute_process/MergeOutputVars-stderr.txt | 10 + .../RunCMake/execute_process/MergeOutputVars.cmake | 6 + Tests/RunCMake/execute_process/RunCMakeTest.cmake | 8 + .../GLOB-error-LIST_DIRECTORIES-no-arg-result.txt} | 0 .../GLOB-error-LIST_DIRECTORIES-no-arg-stderr.txt | 1 + .../file/GLOB-error-LIST_DIRECTORIES-no-arg.cmake | 1 + ...-error-LIST_DIRECTORIES-not-boolean-result.txt} | 0 ...B-error-LIST_DIRECTORIES-not-boolean-stderr.txt | 1 + .../GLOB-error-LIST_DIRECTORIES-not-boolean.cmake | 1 + Tests/RunCMake/file/GLOB-stderr.txt | 6 + Tests/RunCMake/file/GLOB.cmake | 28 + .../file/GLOB_RECURSE-cyclic-recursion-stderr.txt | 15 + .../file/GLOB_RECURSE-cyclic-recursion.cmake | 23 + Tests/RunCMake/file/GLOB_RECURSE-stderr.txt | 6 + Tests/RunCMake/file/GLOB_RECURSE.cmake | 28 + Tests/RunCMake/file/RunCMakeTest.cmake | 10 + .../RunCMake/{CMP0055 => find_file}/CMakeLists.txt | 0 Tests/RunCMake/find_file/PrefixInPATH-stdout.txt | 4 + Tests/RunCMake/find_file/PrefixInPATH.cmake | 8 + Tests/RunCMake/find_file/RunCMakeTest.cmake | 3 + .../RunCMake/find_file/include/PrefixInPATH.h | 0 .../RunCMake/find_library/PrefixInPATH-stdout.txt | 4 + Tests/RunCMake/find_library/PrefixInPATH.cmake | 11 + Tests/RunCMake/find_library/RunCMakeTest.cmake | 1 + .../RunCMake/find_library/lib/libPrefixInPATH.a | 0 .../RunCMake/{CMP0055 => find_path}/CMakeLists.txt | 0 Tests/RunCMake/find_path/PrefixInPATH-stdout.txt | 4 + Tests/RunCMake/find_path/PrefixInPATH.cmake | 8 + Tests/RunCMake/find_path/RunCMakeTest.cmake | 3 + .../RunCMake/find_path/include/PrefixInPATH.h | 0 .../get_property/DebugConfigurations-stderr.txt | 11 + .../get_property/DebugConfigurations.cmake | 41 + Tests/RunCMake/get_property/RunCMakeTest.cmake | 1 + Tests/RunCMake/if/RunCMakeTest.cmake | 1 + .../elseif-message-result.txt} | 0 Tests/RunCMake/if/elseif-message-stderr.txt | 8 + Tests/RunCMake/if/elseif-message.cmake | 4 + .../BinInInstallPrefix-CMP0052-NEW-result.txt | 1 - .../BinInInstallPrefix-CMP0052-NEW-stderr.txt | 6 - .../BinInInstallPrefix-CMP0052-OLD-stderr.txt | 1 - .../BinInInstallPrefix-CMP0052-WARN-stderr.txt | 20 - .../BinaryDirectoryInInterface-result.txt | 1 - .../BinaryDirectoryInInterface-stderr.txt | 6 - .../BinaryDirectoryInInterface.cmake | 11 - Tests/RunCMake/include_directories/CMakeLists.txt | 5 +- .../DirInInstallPrefix-stderr.txt | 1 - .../include_directories/DirInInstallPrefix.cmake | 9 - .../include_directories/InstallInBinDir-result.txt | 1 - .../include_directories/InstallInBinDir-stderr.txt | 6 - .../include_directories/InstallInSrcDir-result.txt | 1 - .../include_directories/InstallInSrcDir-stderr.txt | 6 - .../InstallPrefixInInterface-stderr.txt | 1 - .../InstallToPrefixInSrcDirInSource-stderr.txt | 1 - .../InstallToPrefixInSrcDirOutOfSource-stderr.txt | 1 - .../RelativePathInGenex-result.txt | 1 - .../include_directories/RelativePathInGenex.cmake | 8 - .../RelativePathInInterface-result.txt | 1 - .../RelativePathInInterface.cmake | 11 - .../include_directories/RunCMakeTest.cmake | 144 +- .../SourceDirectoryInInterface-result.txt | 1 - .../SourceDirectoryInInterface-stderr.txt | 6 - .../SourceDirectoryInInterface.cmake | 11 - .../SrcInInstallPrefix-CMP0052-NEW-result.txt | 1 - .../SrcInInstallPrefix-CMP0052-NEW-stderr.txt | 6 - .../SrcInInstallPrefix-CMP0052-OLD-stderr.txt | 1 - .../SrcInInstallPrefix-CMP0052-WARN-stderr.txt | 20 - .../include_directories/export-NOWARN-stderr.txt | 1 - .../include_directories/export-NOWARN.cmake | 62 - .../CMP0062-NEW-result.txt} | 0 Tests/RunCMake/install/CMP0062-NEW-stderr.txt | 11 + Tests/RunCMake/install/CMP0062-NEW.cmake | 6 + .../CMP0062-OLD-result.txt} | 0 Tests/RunCMake/install/CMP0062-OLD.cmake | 6 + .../CMP0062-WARN-result.txt} | 0 Tests/RunCMake/install/CMP0062-WARN-stderr.txt | 16 + Tests/RunCMake/install/CMP0062-WARN.cmake | 4 + Tests/RunCMake/install/RunCMakeTest.cmake | 4 + .../install/SkipInstallRulesNoWarning1-stderr.txt | 1 - .../install/SkipInstallRulesNoWarning2-stderr.txt | 1 - .../TARGETS-DESTINATION-bad-result.txt} | 0 .../install/TARGETS-DESTINATION-bad-stderr.txt | 6 + .../RunCMake/install/TARGETS-DESTINATION-bad.cmake | 3 + .../{GeneratorExpression => install}/empty.c | 0 .../RunCMake/interface_library/RunCMakeTest.cmake | 1 - .../interface_library/add_dependencies-result.txt | 1 - .../interface_library/add_dependencies-stderr.txt | 6 - .../interface_library/add_dependencies.cmake | 4 - .../interface_library/genex_link-stderr.txt | 1 - .../interface_library/no_shared_libs-stderr.txt | 1 - Tests/RunCMake/message/nomessage-stderr.txt | 1 - .../with_install_prefix-stderr.txt | 1 - Tests/RunCMake/project/CMP0048-NEW-stderr.txt | 1 - Tests/RunCMake/pseudo_emulator.c | 15 + Tests/RunCMake/pseudo_iwyu.c | 7 + Tests/TarTest/CMakeLists.txt | 69 - Tests/TarTest/TestTarExec.cxx | 5 - Tests/VSExcludeFromDefaultBuild/CMakeLists.txt | 4 + Tests/VSExcludeFromDefaultBuild/ClearExes.cmake | 4 + Tests/VSExcludeFromDefaultBuild/ResultTest.cmake | 6 + Tests/VSWindowsFormsResx/CMakeLists.txt | 2 +- Tests/VSXaml/App.xaml | 7 + Tests/VSXaml/App.xaml.cpp | 125 ++ Tests/VSXaml/App.xaml.h | 27 + .../VSXaml/Assets/Logo.scale-100.png | Bin 801 -> 801 bytes .../VSXaml/Assets/SmallLogo.scale-100.png | Bin 329 -> 329 bytes .../VSXaml/Assets/SplashScreen.scale-100.png | Bin 2146 -> 2146 bytes .../VSXaml/Assets/StoreLogo.scale-100.png | Bin 429 -> 429 bytes Tests/VSXaml/CMakeLists.txt | 52 + Tests/VSXaml/MainPage.xaml | 14 + Tests/VSXaml/MainPage.xaml.cpp | 27 + Tests/VSXaml/MainPage.xaml.h | 21 + Tests/VSXaml/Package.appxmanifest | 41 + .../VSXaml/VSXaml_TemporaryKey.pfx | Bin 2560 -> 2560 bytes Tests/VSXaml/pch.cpp | 6 + Tests/VSXaml/pch.h | 11 + Tests/Visibility/CMakeLists.txt | 66 + .../{VisibilityInlinesHidden => Visibility}/bar.c | 0 .../foo.cpp | 0 Tests/Visibility/hidden.c | 4 + Tests/Visibility/shared.c | 3 + Tests/Visibility/shared.cpp | 8 + Tests/Visibility/verify.cmake | 14 + Tests/VisibilityInlinesHidden/CMakeLists.txt | 14 - Tests/VisibilityInlinesHidden/verify.cmake | 14 - Tests/XCTest/CMakeLists.txt | 57 + Tests/XCTest/CocoaExample/AppDelegate.h | 6 + Tests/XCTest/CocoaExample/AppDelegate.m | 18 + Tests/XCTest/CocoaExample/Info.plist | 30 + Tests/XCTest/CocoaExample/MainMenu.xib | 680 +++++++ Tests/XCTest/CocoaExample/main.m | 5 + Tests/XCTest/CocoaExampleTests/CocoaExampleTests.m | 13 + Tests/XCTest/FrameworkExample/FrameworkExample.c | 6 + Tests/XCTest/FrameworkExample/FrameworkExample.h | 1 + Tests/XCTest/FrameworkExample/Info.plist | 28 + .../FrameworkExampleTests/FrameworkExampleTests.m | 16 + Tests/XCTest/FrameworkExampleTests/Info.plist | 24 + Utilities/KWIML/ABI.h.in | 6 + Utilities/Release/cpack_wix_ui_banner.jpg | Bin 0 -> 2607 bytes Utilities/Release/cpack_wix_ui_dialog.jpg | Bin 0 -> 13369 bytes Utilities/Release/upload_release.cmake | 2 +- Utilities/Sphinx/CMakeLists.txt | 6 +- Utilities/cmjsoncpp/src/lib_json/json_writer.cpp | 19 + .../libarchive/archive_write_set_format_gnutar.c | 12 +- bootstrap | 30 +- 1516 files changed, 28592 insertions(+), 14266 deletions(-) create mode 100644 Help/generator/Green Hills MULTI.rst create mode 100644 Help/module/CheckFortranCompilerFlag.rst create mode 100644 Help/module/FindXCTest.rst create mode 100644 Help/policy/CMP0057.rst create mode 100644 Help/policy/CMP0058.rst create mode 100644 Help/policy/CMP0059.rst create mode 100644 Help/policy/CMP0060.rst create mode 100644 Help/policy/CMP0061.rst create mode 100644 Help/policy/CMP0062.rst create mode 100644 Help/policy/CMP0063.rst create mode 100644 Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst create mode 100644 Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst create mode 100644 Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst create mode 100644 Help/prop_sf/VS_XAML_TYPE.rst create mode 100644 Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst create mode 100644 Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst delete mode 100644 Help/prop_tgt/TARGET_FILE_TYPES.txt create mode 100644 Help/prop_tgt/XCTEST.rst create mode 100644 Help/release/3.3.rst create mode 100644 Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst create mode 100644 Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst create mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst create mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst create mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst create mode 100644 Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst create mode 100644 Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst create mode 100644 Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst create mode 100644 Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst create mode 100644 Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst create mode 100644 Help/variable/GHS-MULTI.rst create mode 100644 Modules/CheckFortranCompilerFlag.cmake create mode 100644 Modules/Compiler/GHS-C.cmake create mode 100644 Modules/Compiler/GHS-CXX.cmake create mode 100644 Modules/Compiler/GHS-DetermineCompiler.cmake create mode 100644 Modules/FindXCTest.cmake create mode 100644 Modules/MatlabTestsRedirect.cmake create mode 100644 Modules/Platform/BlueGeneQ-base.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic-GNU-C.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic-GNU-CXX.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic-GNU-Fortran.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic-XL-C.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic-XL-CXX.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic-XL-Fortran.cmake create mode 100644 Modules/Platform/BlueGeneQ-dynamic.cmake create mode 100644 Modules/Platform/BlueGeneQ-static-GNU-C.cmake create mode 100644 Modules/Platform/BlueGeneQ-static-GNU-CXX.cmake create mode 100644 Modules/Platform/BlueGeneQ-static-GNU-Fortran.cmake create mode 100644 Modules/Platform/BlueGeneQ-static-XL-C.cmake create mode 100644 Modules/Platform/BlueGeneQ-static-XL-CXX.cmake create mode 100644 Modules/Platform/BlueGeneQ-static-XL-Fortran.cmake create mode 100644 Modules/Platform/BlueGeneQ-static.cmake create mode 100644 Modules/Platform/GHS-MULTI-Initialize.cmake create mode 100644 Modules/Platform/GHS-MULTI.cmake create mode 100644 Modules/Platform/HP-UX-GNU-ASM.cmake create mode 100644 Source/CPack/WiX/cmWIXShortcut.cxx create mode 100644 Source/Checks/cm_cxx11_unordered_map.cmake create mode 100644 Source/Checks/cm_cxx11_unordered_map.cpp create mode 100644 Source/Checks/cm_cxx14_cstdio.cmake create mode 100644 Source/Checks/cm_cxx14_cstdio.cpp delete mode 100644 Source/QtDialog/MacInstallDialog.ui delete mode 100644 Source/QtDialog/QMacInstallDialog.cxx delete mode 100644 Source/QtDialog/QMacInstallDialog.h create mode 100644 Source/QtIFW/controlscript.qs create mode 100644 Source/cmAlgorithms.h create mode 100644 Source/cmCLocaleEnvironmentScope.cxx create mode 100644 Source/cmCLocaleEnvironmentScope.h create mode 100644 Source/cmGeneratorExpressionContext.cxx create mode 100644 Source/cmGeneratorExpressionContext.h create mode 100644 Source/cmGeneratorExpressionNode.cxx create mode 100644 Source/cmGeneratorExpressionNode.h create mode 100644 Source/cmGhsMultiGpj.cxx create mode 100644 Source/cmGhsMultiGpj.h create mode 100644 Source/cmGhsMultiTargetGenerator.cxx create mode 100644 Source/cmGhsMultiTargetGenerator.h create mode 100644 Source/cmGlobalGhsMultiGenerator.cxx create mode 100644 Source/cmGlobalGhsMultiGenerator.h create mode 100644 Source/cmLocalGhsMultiGenerator.cxx create mode 100644 Source/cmLocalGhsMultiGenerator.h create mode 100644 Source/cmState.cxx create mode 100644 Source/cmState.h create mode 100644 Source/cmXMLWriter.cxx create mode 100644 Source/cmXMLWriter.h create mode 100644 Source/kwsys/.gitattributes create mode 100644 Tests/CMakeCommands/target_compile_definitions/consumer.c create mode 100644 Tests/CMakeCommands/target_compile_options/consumer.c create mode 100644 Tests/CMakeCommands/target_include_directories/c_only/c_only.h create mode 100644 Tests/CMakeCommands/target_include_directories/consumer.c create mode 100644 Tests/CMakeCommands/target_include_directories/cxx_only/cxx_only.h delete mode 100644 Tests/CMakeTestBadCommandLines/RunCMake.cmake create mode 100644 Tests/CPackComponentsDEB/CMakeLists.txt create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-description1.cmake.in create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-description2.cmake.in create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-lintian-dpkgdeb-checks.cmake.in create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-shlibdeps1.cmake.in create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend1.cmake create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-description1.cmake create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-description2.cmake create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-lintian-dpkgdeb-checks.cmake create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-shlibdeps1.cmake create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult.cmake copy Tests/{CPackComponentsForAll => CPackComponentsDEB}/license.txt (100%) copy Tests/{CPackComponents => CPackComponentsDEB}/mylib.cpp (100%) copy Tests/{CPackComponents => CPackComponentsDEB}/mylib.h (100%) copy Tests/{CPackComponents => CPackComponentsDEB}/mylibapp.cpp (100%) create mode 100644 Tests/CPackComponentsForAll/mylib create mode 100644 Tests/CPackComponentsForAll/symlink_postinstall_expected.txt create mode 100644 Tests/CPackComponentsPrefix/CMakeLists.txt create mode 100644 Tests/CPackComponentsPrefix/file-development.txt create mode 100644 Tests/CPackComponentsPrefix/file-runtime.txt create mode 100644 Tests/CTestCoverageCollectGCOV/TestProject/3rdparty/foo.cpp create mode 100644 Tests/CTestCoverageCollectGCOV/TestProject/CMakeLists.txt create mode 100644 Tests/CTestCoverageCollectGCOV/TestProject/extra/extra.cpp create mode 100644 Tests/CTestCoverageCollectGCOV/TestProject/fake_compile_time_gcno.cmake create mode 100644 Tests/CTestCoverageCollectGCOV/TestProject/fake_run_time_gcda.cmake copy Tests/{MissingInstall/mybin.cpp => CTestCoverageCollectGCOV/TestProject/main.cpp} (100%) delete mode 100644 Tests/CTestTestFailedSubmits/test.cmake.in create mode 100644 Tests/CTestTestVerboseOutput/CMakeLists.txt create mode 100644 Tests/CTestTestVerboseOutput/CTestConfig.cmake copy Modules/DummyCXXFile.cxx => Tests/CTestTestVerboseOutput/nop.c (100%) create mode 100644 Tests/CTestTestVerboseOutput/test.cmake.in create mode 100644 Tests/ExportImport/Export/Interface/source_target.cpp create mode 100644 Tests/ExportImport/Export/Interface/source_target_for_install.cpp create mode 100644 Tests/ExportImport/Export/testLibPerConfigDest.c create mode 100644 Tests/ExportImport/Import/Interface/source_target_test.cpp create mode 100644 Tests/ExternalProjectSubdir/CMakeLists.txt create mode 100644 Tests/ExternalProjectSubdir/Subdir1/CMakeLists.txt create mode 100644 Tests/FindMatlab/basic_checks/CMakeLists.txt create mode 100644 Tests/FindMatlab/cmake_matlab_unit_tests1.m create mode 100644 Tests/FindMatlab/cmake_matlab_unit_tests2.m create mode 100644 Tests/FindMatlab/cmake_matlab_unit_tests3.m create mode 100644 Tests/FindMatlab/cmake_matlab_unit_tests_timeout.m create mode 100644 Tests/FindMatlab/help_text1.m.txt create mode 100644 Tests/FindMatlab/matlab_wrapper1.cpp create mode 100644 Tests/FindMatlab/versions_checks/CMakeLists.txt create mode 100644 Tests/GhsMulti/CMakeLists.txt create mode 100644 Tests/GhsMulti/ReturnNum/App/CMakeLists.txt create mode 100644 Tests/GhsMulti/ReturnNum/App/Main.c create mode 100644 Tests/GhsMulti/ReturnNum/CMakeLists.txt create mode 100644 Tests/GhsMulti/ReturnNum/Int/AppDD.int create mode 100644 Tests/GhsMulti/ReturnNum/Int/CMakeLists.txt create mode 100644 Tests/GhsMulti/ReturnNum/Int/Default.bsp create mode 100644 Tests/GhsMulti/ReturnNum/Lib/CMakeLists.txt create mode 100644 Tests/GhsMulti/ReturnNum/Lib/HelperFun.c create mode 100644 Tests/GhsMulti/ReturnNum/Lib/HelperFun.h create mode 100644 Tests/InterfaceLibrary/headerdir/iface_header_builddir.h.in rename Tests/JacocoCoverage/Coverage/target/site/{jacoco.xml => jacoco.xml.in} (100%) create mode 100644 Tests/Module/ExternalData/Alt/MyAlgoMap1-md5/dded55e43cd6529ee35d24113dfc87a3 create mode 100644 Tests/Module/ExternalData/Alt/SHA1/85158f0c1996837976e858c42a9a7634bfe91b93 create mode 100644 Tests/Module/ExternalData/DataAlgoMapA.dat.md5 create mode 100644 Tests/Module/ExternalData/DataAlgoMapB.dat.sha1 create mode 100644 Tests/Module/ExternalData/DataNoSymlinks/CMakeLists.txt copy Tests/Module/ExternalData/{ => DataNoSymlinks}/Data.dat.md5 (100%) create mode 100644 Tests/Module/ExternalData/DataNoSymlinks/DataNoSymlinksCheck.cmake copy Tests/Module/ExternalData/{Directory => DirRecurse}/A.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse}/B.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse}/C.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse/Sub1}/A.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse/Sub1}/B.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse/Sub1}/C.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse/Sub2/Dir}/A.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse/Sub2/Dir}/B.dat.md5 (100%) copy Tests/Module/ExternalData/{Directory => DirRecurse/Sub2/Dir}/C.dat.md5 (100%) delete mode 100644 Tests/QtAutogen/autorcc_depends/res1.qrc create mode 100644 Tests/QtAutogen/autorcc_depends/res1.qrc.in rename Tests/QtAutogen/autorcc_depends/{res1_input.txt => res1/input.txt.in} (100%) create mode 100644 Tests/QtAutogen/generated.txt.in create mode 100644 Tests/QtAutogen/generated_resource.qrc.in delete mode 100644 Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared-stderr.txt delete mode 100644 Tests/RunCMake/CMP0022/CMP0022-NOWARN-static-NEW-stderr.txt delete mode 100644 Tests/RunCMake/CMP0022/CMP0022-NOWARN-static-link_libraries-stderr.txt delete mode 100644 Tests/RunCMake/CMP0022/CMP0022-NOWARN-static-stderr.txt delete mode 100644 Tests/RunCMake/CMP0022/CMP0022-export-exe-stderr.txt delete mode 100644 Tests/RunCMake/CMP0026/CMP0026-CONFIG-LOCATION-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0026/CMP0026-IMPORTED-stderr.txt delete mode 100644 Tests/RunCMake/CMP0026/CMP0026-LOCATION-CONFIG-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0028/CMP0028-OLD-iface-stderr.txt delete mode 100644 Tests/RunCMake/CMP0028/CMP0028-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0037/CMP0037-OLD-reserved-stderr.txt delete mode 100644 Tests/RunCMake/CMP0037/CMP0037-OLD-space-stderr.txt delete mode 100644 Tests/RunCMake/CMP0038/CMP0038-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0039/CMP0039-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0040/CMP0040-NEW-existing-target-stderr.txt delete mode 100644 Tests/RunCMake/CMP0040/CMP0040-OLD-existing-target-stderr.txt delete mode 100644 Tests/RunCMake/CMP0040/CMP0040-OLD-missing-target-stderr.txt delete mode 100644 Tests/RunCMake/CMP0041/CMP0041-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0041/CMP0041-tid-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0042/CMP0042-NEW-stderr.txt delete mode 100644 Tests/RunCMake/CMP0042/CMP0042-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0043/CMP0043-NEW-stderr.txt delete mode 100644 Tests/RunCMake/CMP0043/CMP0043-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0045/CMP0045-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0046/CMP0046-NEW-existing-dependency-stderr.txt delete mode 100644 Tests/RunCMake/CMP0046/CMP0046-OLD-existing-dependency-stderr.txt delete mode 100644 Tests/RunCMake/CMP0046/CMP0046-OLD-missing-dependency-stderr.txt delete mode 100644 Tests/RunCMake/CMP0049/CMP0049-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt delete mode 100644 Tests/RunCMake/CMP0055/CMP0055-OLD-Out-of-Scope-stderr.txt delete mode 100644 Tests/RunCMake/CMP0055/CMP0055-OLD-Reject-Arguments-stderr.txt create mode 100644 Tests/RunCMake/CMP0057/CMP0057-NEW.cmake rename Tests/RunCMake/{CommandLine/E_tar-bad-from1-result.txt => CMP0057/CMP0057-OLD-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0057/CMP0057-OLD-stderr.txt create mode 100644 Tests/RunCMake/CMP0057/CMP0057-OLD.cmake rename Tests/RunCMake/{CommandLine/E_tar-bad-from2-result.txt => CMP0057/CMP0057-WARN-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0057/CMP0057-WARN-stderr.txt create mode 100644 Tests/RunCMake/CMP0057/CMP0057-WARN.cmake create mode 100644 Tests/RunCMake/CMP0057/CMakeLists.txt create mode 100644 Tests/RunCMake/CMP0057/RunCMakeTest.cmake copy Tests/RunCMake/{CTestMemcheck/DummyPurify-result.txt => CMP0059/CMP0059-NEW-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0059/CMP0059-NEW-stderr.txt create mode 100644 Tests/RunCMake/CMP0059/CMP0059-NEW.cmake copy Tests/RunCMake/{CTestMemcheck/DummyValgrind-result.txt => CMP0059/CMP0059-OLD-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0059/CMP0059-OLD-stderr.txt create mode 100644 Tests/RunCMake/CMP0059/CMP0059-OLD.cmake copy Tests/RunCMake/{CTestMemcheck/DummyValgrindIgnoreMemcheck-result.txt => CMP0059/CMP0059-WARN-result.txt} (100%) create mode 100644 Tests/RunCMake/CMP0059/CMP0059-WARN-stderr.txt create mode 100644 Tests/RunCMake/CMP0059/CMP0059-WARN.cmake copy Tests/RunCMake/{CMP0055 => CMP0059}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/CMP0059/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CMP0060/CMP0060-Common.cmake create mode 100644 Tests/RunCMake/CMP0060/CMP0060-NEW.cmake create mode 100644 Tests/RunCMake/CMP0060/CMP0060-OLD-Build-result.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-OLD-Build-stdout.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-OLD.cmake create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-OFF-Build-result.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-OFF-Build-stdout.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-OFF.cmake create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-ON-Build-result.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-ON-Build-stdout.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-ON-stderr.txt create mode 100644 Tests/RunCMake/CMP0060/CMP0060-WARN-ON.cmake create mode 100644 Tests/RunCMake/CMP0060/CMakeLists.txt create mode 100644 Tests/RunCMake/CMP0060/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CMP0060/cmp0060.c create mode 100644 Tests/RunCMake/CMP0060/main.c copy Tests/RunCMake/{CMP0055 => COMPILE_LANGUAGE-genex}/CMakeLists.txt (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from3-result.txt => COMPILE_LANGUAGE-genex/CompileDefinitions-result.txt} (100%) create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileDefinitions-stderr-VS.txt create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileDefinitions-stderr-Xcode.txt create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileDefinitions.cmake rename Tests/RunCMake/{CommandLine/E_tar-bad-from4-result.txt => COMPILE_LANGUAGE-genex/CompileOptions-result.txt} (100%) create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileOptions-stderr-VS.txt create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/CompileOptions.cmake rename Tests/RunCMake/{CommandLine/E_tar-bad-from5-result.txt => COMPILE_LANGUAGE-genex/IncludeDirectories-result.txt} (100%) create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/IncludeDirectories-stderr-VS.txt create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/IncludeDirectories-stderr-Xcode.txt create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/IncludeDirectories.cmake create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/COMPILE_LANGUAGE-genex/main.cpp create mode 100644 Tests/RunCMake/CPackSymlinks/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CPackSymlinks/SrcSymlinksTar-stdout.txt create mode 100644 Tests/RunCMake/CPackSymlinks/testcpacksym.tar create mode 100644 Tests/RunCMake/CTestCommandLine/BadCTestTestfile-stderr.txt copy Tests/RunCMake/{CMP0054 => CTestCommandLine}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CTestCommandLine/init.cmake rename Tests/RunCMake/{CommandLine/E_tar-bad-mtime1-result.txt => CTestCommandLine/repeat-until-fail-bad1-result.txt} (100%) create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-bad1-stderr.txt rename Tests/RunCMake/{CommandLine/E_tar-bad-opt1-result.txt => CTestCommandLine/repeat-until-fail-bad2-result.txt} (100%) create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-bad2-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-cmake.cmake create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-ctest-result.txt create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-ctest-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-ctest-stdout.txt create mode 100644 Tests/RunCMake/CTestCommandLine/repeat-until-fail-good-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/test1.cmake delete mode 100644 Tests/RunCMake/CTestMemcheck/CMakeLists.txt.in delete mode 100644 Tests/RunCMake/CTestMemcheck/CTestConfig.cmake.in delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyAddressSanitizer-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyBCNoLogFile-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyLeakSanitizer-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyMemorySanitizer-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyPurify-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyPurifyNoLogFile-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyThreadSanitizer-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyUndefinedBehaviorSanitizer-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrind-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindCustomOptions-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindFailPost-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindFailPre-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindFailPre-stdout.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindIgnoreMemcheck-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindInvalidSupFile-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindInvalidSupFile-stdout.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindNoLogFile-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindPrePost-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/DummyValgrindTwoTargets-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/NotExist-stdout.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/RunCMakeTest.cmake delete mode 100644 Tests/RunCMake/CTestMemcheck/Unknown-stderr.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/Unknown-stdout.txt delete mode 100644 Tests/RunCMake/CTestMemcheck/test.cmake.in delete mode 100644 Tests/RunCMake/CTestSubmit/BadArg-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/BadFILES-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/BadPARTS-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/CDashUploadFILES-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/CDashUploadPARTS-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/CDashUploadRETRY_COUNT-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/CDashUploadRETRY_DELAY-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/FailDrop-cp-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/FailDrop-ftp-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/FailDrop-http-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/FailDrop-https-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/FailDrop-scp-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/FailDrop-xmlrpc-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/PARTSCDashUpload-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/PARTSCDashUploadType-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/RepeatRETURN_VALUE-stderr.txt delete mode 100644 Tests/RunCMake/CTestSubmit/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CommandLine/Build-ninja-v-stdout.txt create mode 100644 Tests/RunCMake/CommandLine/Build.cmake rename Tests/RunCMake/CommandLine/{E_tar-end-opt1-result.txt => C-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/C-no-arg-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/C-no-file-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/C-no-file-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/D-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/D-no-arg-stderr.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/CommandLine/DeprecateVS6-WARN-OFF.cmake (100%) create mode 100644 Tests/RunCMake/CommandLine/DeprecateVS6-WARN-ON-stderr.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/CommandLine/DeprecateVS6-WARN-ON.cmake (100%) copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/CommandLine/DeprecateVS70-WARN-OFF.cmake (100%) create mode 100644 Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON-stderr.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON.cmake (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E-no-arg-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E___run_iwyu-bad-iwyu-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E___run_iwyu-bad-iwyu-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E___run_iwyu-no----result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E___run_iwyu-no----stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E___run_iwyu-no-cc-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E___run_iwyu-no-cc-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E___run_iwyu-no-iwyu-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E___run_iwyu-no-iwyu-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E_create_symlink-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E_create_symlink-no-arg-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E_rename-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E_rename-no-arg-stderr.txt delete mode 100644 Tests/RunCMake/CommandLine/E_tar-bad-from3-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/E_touch_nocreate-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/E_touch_nocreate-no-arg-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/G_bad-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/G_bad-arg-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/G_no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/G_no-arg-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/NoArgs-stdout.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/P_no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/P_no-arg-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/P_no-file-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/P_no-file-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/U-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/U-no-arg-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/Wdev-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/Wdev.cmake create mode 100644 Tests/RunCMake/CommandLine/Wno-dev.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/cache-no-file-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/cache-no-file-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/cmake_depends-check.cmake create mode 100644 Tests/RunCMake/CommandLine/cmake_depends-stdout.txt create mode 100644 Tests/RunCMake/CommandLine/cmake_depends/test.c create mode 100644 Tests/RunCMake/CommandLine/cmake_depends/test.h create mode 100644 Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h create mode 100644 Tests/RunCMake/CommandLine/debug-output-stdout.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/CommandLine/debug-output.cmake (100%) create mode 100644 Tests/RunCMake/CommandLine/debug-trycompile.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/lists-no-file-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/lists-no-file-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/trace-stderr.txt copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/CommandLine/trace.cmake (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/7zip-gz-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt create mode 100644 Tests/RunCMake/CommandLineTar/7zip.cmake copy Tests/RunCMake/{CMP0054 => CommandLineTar}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-format-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLineTar/bad-format-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-from1-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from1-stderr.txt => CommandLineTar/bad-from1-stderr.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-from2-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from2-stderr.txt => CommandLineTar/bad-from2-stderr.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-from3-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLineTar/bad-from3-stderr.txt rename Tests/RunCMake/{CommandLine/E_tar-bad-from3.txt => CommandLineTar/bad-from3.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-from4-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from4-stderr.txt => CommandLineTar/bad-from4-stderr.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from4.txt => CommandLineTar/bad-from4.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-from5-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from5-stderr.txt => CommandLineTar/bad-from5-stderr.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-from5.txt => CommandLineTar/bad-from5.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-mtime1-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-mtime1-stderr.txt => CommandLineTar/bad-mtime1-stderr.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/bad-opt1-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-bad-opt1-stderr.txt => CommandLineTar/bad-opt1-stderr.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/end-opt1-result.txt} (100%) rename Tests/RunCMake/{CommandLine/E_tar-end-opt1-stderr.txt => CommandLineTar/end-opt1-stderr.txt} (100%) create mode 100644 Tests/RunCMake/CommandLineTar/gnutar-gz.cmake create mode 100644 Tests/RunCMake/CommandLineTar/gnutar.cmake create mode 100644 Tests/RunCMake/CommandLineTar/pax-xz.cmake create mode 100644 Tests/RunCMake/CommandLineTar/pax.cmake create mode 100644 Tests/RunCMake/CommandLineTar/paxr-bz2.cmake create mode 100644 Tests/RunCMake/CommandLineTar/paxr.cmake create mode 100644 Tests/RunCMake/CommandLineTar/roundtrip.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/zip-bz2-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt create mode 100644 Tests/RunCMake/CommandLineTar/zip.cmake delete mode 100644 Tests/RunCMake/CompileFeatures/LinkImplementationFeatureCycleSolved-stderr.txt create mode 100644 Tests/RunCMake/CrosscompilingEmulator/AddTest-check.cmake create mode 100644 Tests/RunCMake/CrosscompilingEmulator/AddTest.cmake create mode 100644 Tests/RunCMake/CrosscompilingEmulator/CMakeLists.txt create mode 100644 Tests/RunCMake/CrosscompilingEmulator/CrosscompilingEmulatorProperty.cmake create mode 100644 Tests/RunCMake/CrosscompilingEmulator/InitialCache.txt.in create mode 100644 Tests/RunCMake/CrosscompilingEmulator/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CrosscompilingEmulator/TryRun-stdout.txt create mode 100644 Tests/RunCMake/CrosscompilingEmulator/TryRun.cmake create mode 100644 Tests/RunCMake/CrosscompilingEmulator/simple_src.cxx delete mode 100644 Tests/RunCMake/DisallowedCommands/CMP0029-OLD-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalData/BadAlgoMap1-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalData/BadAlgoMap1-stderr.txt create mode 100644 Tests/RunCMake/ExternalData/BadAlgoMap1.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalData/BadAlgoMap2-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalData/BadAlgoMap2-stderr.txt create mode 100644 Tests/RunCMake/ExternalData/BadAlgoMap2.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalData/BadRecurse1-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalData/BadRecurse1-stderr.txt create mode 100644 Tests/RunCMake/ExternalData/BadRecurse1.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalData/BadRecurse2-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalData/BadRecurse2-stderr.txt create mode 100644 Tests/RunCMake/ExternalData/BadRecurse2.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalData/BadRecurse3-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalData/BadRecurse3-stderr.txt create mode 100644 Tests/RunCMake/ExternalData/BadRecurse3.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalProject/Add_StepDependencies_iface-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/Add_StepDependencies_iface-stderr.txt create mode 100644 Tests/RunCMake/ExternalProject/Add_StepDependencies_iface.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalProject/Add_StepDependencies_iface_step-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/Add_StepDependencies_iface_step-stderr.txt create mode 100644 Tests/RunCMake/ExternalProject/Add_StepDependencies_iface_step.cmake create mode 100644 Tests/RunCMake/ExternalProject/CMAKE_CACHE_ARGS-check.cmake create mode 100644 Tests/RunCMake/ExternalProject/CMAKE_CACHE_DEFAULT_ARGS-check.cmake create mode 100644 Tests/RunCMake/ExternalProject/CMAKE_CACHE_mix-check.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalProject/NoOptions-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/NoOptions-stderr.txt create mode 100644 Tests/RunCMake/ExternalProject/NoOptions.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalProject/SourceEmpty-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/SourceEmpty-stderr.txt create mode 100644 Tests/RunCMake/ExternalProject/SourceEmpty.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => ExternalProject/SourceMissing-result.txt} (100%) create mode 100644 Tests/RunCMake/ExternalProject/SourceMissing-stderr.txt create mode 100644 Tests/RunCMake/ExternalProject/SourceMissing.cmake create mode 100644 Tests/RunCMake/FeatureSummary/FeatureSummaryWhatOnce-stdout.txt create mode 100644 Tests/RunCMake/FeatureSummary/FeatureSummaryWhatOnce.cmake copy Tests/RunCMake/{CTestMemcheck/DummyValgrindPrePost-result.txt => File_Generate/COMPILE_LANGUAGE-genex-result.txt} (100%) create mode 100644 Tests/RunCMake/File_Generate/COMPILE_LANGUAGE-genex.cmake delete mode 100644 Tests/RunCMake/File_Generate/CarryPermissions-stderr.txt delete mode 100644 Tests/RunCMake/File_Generate/GenerateSource-stderr.txt delete mode 100644 Tests/RunCMake/File_Generate/OutputNameMatchesOtherSources-stderr.txt delete mode 100644 Tests/RunCMake/File_Generate/ReRunCMake-stderr.txt delete mode 100644 Tests/RunCMake/File_Generate/WriteIfDifferent-stderr.txt create mode 100644 Tests/RunCMake/File_Generate/empty.c create mode 100644 Tests/RunCMake/FindMatlab/CMakeLists.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => FindMatlab/MatlabTest1-result.txt} (100%) create mode 100644 Tests/RunCMake/FindMatlab/MatlabTest1-stderr.txt create mode 100644 Tests/RunCMake/FindMatlab/MatlabTest1.cmake copy Tests/RunCMake/{CTestMemcheck/DummyValgrindTwoTargets-result.txt => FindMatlab/MatlabTest2-result.txt} (100%) create mode 100644 Tests/RunCMake/FindMatlab/MatlabTest2-stderr.txt create mode 100644 Tests/RunCMake/FindMatlab/MatlabTest2.cmake create mode 100644 Tests/RunCMake/FindMatlab/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/FindMatlab/cmake_matlab_unit_tests2.m create mode 100644 Tests/RunCMake/FindMatlab/matlab_wrapper1.cpp create mode 100644 Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake create mode 100644 Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/BadTargetTypeInterface-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/BadTargetTypeInterface-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/BadTargetTypeInterface.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-add_custom_command-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_custom_command-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_custom_command.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-add_custom_target-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_custom_target-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_custom_target.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-add_executable-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_executable-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_executable.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-add_library-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_library-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_library.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-add_test-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_test-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-add_test.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-install-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-install-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-install.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-target_sources-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-target_sources-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-target_sources.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => GeneratorExpression/COMPILE_LANGUAGE-unknown-lang-result.txt} (100%) create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-unknown-lang-stderr.txt create mode 100644 Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-unknown-lang.cmake delete mode 100644 Tests/RunCMake/GeneratorExpression/ValidTarget-TARGET_PDB_FILE-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/BinInInstallPrefix-CMP0052-NEW-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/BinInInstallPrefix-CMP0052-NEW-stderr_INCLUDE_DIRECTORIES.txt rename Tests/RunCMake/{include_directories => IfacePaths}/BinInInstallPrefix-CMP0052-OLD-result.txt (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/BinInInstallPrefix-CMP0052-WARN-result.txt (100%) create mode 100644 Tests/RunCMake/IfacePaths/BinInInstallPrefix-CMP0052-WARN-stderr_INCLUDE_DIRECTORIES.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/BinInInstallPrefix-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/BinInInstallPrefix-stderr_SOURCES.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/BinaryDirectoryInInterface-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/BinaryDirectoryInInterface-stderr_INCLUDE_DIRECTORIES.txt create mode 100644 Tests/RunCMake/IfacePaths/BinaryDirectoryInInterface-stderr_SOURCES.txt create mode 100644 Tests/RunCMake/IfacePaths/BinaryDirectoryInInterface.cmake copy Tests/RunCMake/{include_directories => IfacePaths}/CMakeLists.txt (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/DirInInstallPrefix-result.txt (100%) create mode 100644 Tests/RunCMake/IfacePaths/DirInInstallPrefix.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/InstallInBinDir-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/InstallInBinDir-stderr_INCLUDE_DIRECTORIES.txt create mode 100644 Tests/RunCMake/IfacePaths/InstallInBinDir-stderr_SOURCES.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/InstallInSrcDir-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/InstallInSrcDir-stderr_INCLUDE_DIRECTORIES.txt create mode 100644 Tests/RunCMake/IfacePaths/InstallInSrcDir-stderr_SOURCES.txt rename Tests/RunCMake/{include_directories => IfacePaths}/InstallPrefixInInterface-result.txt (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/InstallPrefixInInterface.cmake (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/InstallToPrefixInSrcDirInSource-result.txt (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/InstallToPrefixInSrcDirOutOfSource-result.txt (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/RelativePathInGenex-result.txt} (100%) rename Tests/RunCMake/{include_directories/RelativePathInGenex-stderr.txt => IfacePaths/RelativePathInGenex-stderr_INCLUDE_DIRECTORIES.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/RelativePathInGenex-stderr_SOURCES.txt create mode 100644 Tests/RunCMake/IfacePaths/RelativePathInGenex.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/RelativePathInInterface-result.txt} (100%) rename Tests/RunCMake/{include_directories/RelativePathInInterface-stderr.txt => IfacePaths/RelativePathInInterface-stderr_INCLUDE_DIRECTORIES.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/RelativePathInInterface-stderr_SOURCES.txt create mode 100644 Tests/RunCMake/IfacePaths/RelativePathInInterface.cmake create mode 100644 Tests/RunCMake/IfacePaths/RunCMakeTest.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/SourceDirectoryInInterface-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/SourceDirectoryInInterface-stderr_INCLUDE_DIRECTORIES.txt create mode 100644 Tests/RunCMake/IfacePaths/SourceDirectoryInInterface-stderr_SOURCES.txt create mode 100644 Tests/RunCMake/IfacePaths/SourceDirectoryInInterface.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/SrcInInstallPrefix-CMP0052-NEW-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/SrcInInstallPrefix-CMP0052-NEW-stderr_INCLUDE_DIRECTORIES.txt rename Tests/RunCMake/{include_directories => IfacePaths}/SrcInInstallPrefix-CMP0052-OLD-result.txt (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/SrcInInstallPrefix-CMP0052-WARN-result.txt (100%) create mode 100644 Tests/RunCMake/IfacePaths/SrcInInstallPrefix-CMP0052-WARN-stderr_INCLUDE_DIRECTORIES.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => IfacePaths/SrcInInstallPrefix-result.txt} (100%) create mode 100644 Tests/RunCMake/IfacePaths/SrcInInstallPrefix-stderr_SOURCES.txt copy Tests/RunCMake/{CMP0004 => IfacePaths}/empty.cpp (100%) rename Tests/RunCMake/{include_directories => IfacePaths}/export-NOWARN-result.txt (100%) create mode 100644 Tests/RunCMake/IfacePaths/export-NOWARN.cmake create mode 100644 Tests/RunCMake/IncludeWhatYouUse/C-Build-stdout.txt create mode 100644 Tests/RunCMake/IncludeWhatYouUse/C-launch-Build-stdout.txt create mode 100644 Tests/RunCMake/IncludeWhatYouUse/C-launch.cmake create mode 100644 Tests/RunCMake/IncludeWhatYouUse/C.cmake create mode 100644 Tests/RunCMake/IncludeWhatYouUse/CMakeLists.txt create mode 100644 Tests/RunCMake/IncludeWhatYouUse/CXX-Build-stdout.txt create mode 100644 Tests/RunCMake/IncludeWhatYouUse/CXX-launch-Build-stdout.txt create mode 100644 Tests/RunCMake/IncludeWhatYouUse/CXX-launch.cmake create mode 100644 Tests/RunCMake/IncludeWhatYouUse/CXX.cmake create mode 100644 Tests/RunCMake/IncludeWhatYouUse/RunCMakeTest.cmake copy Tests/{CMakeOnly/LinkInterfaceLoop => RunCMake/IncludeWhatYouUse}/main.c (100%) copy Tests/{FindPackageTest/Exporter/dummy.c => RunCMake/IncludeWhatYouUse/main.cxx} (100%) create mode 100644 Tests/RunCMake/Ninja/CMP0058-NEW-by-build-stdout.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-NEW-by.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Ninja/CMP0058-NEW-no-build-result.txt} (100%) create mode 100644 Tests/RunCMake/Ninja/CMP0058-NEW-no-build-stderr.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-NEW-no.cmake create mode 100644 Tests/RunCMake/Ninja/CMP0058-OLD-by-build-stdout.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-OLD-by.cmake create mode 100644 Tests/RunCMake/Ninja/CMP0058-OLD-no-build-stdout.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-OLD-no.cmake create mode 100644 Tests/RunCMake/Ninja/CMP0058-WARN-by-build-stdout.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-WARN-by.cmake create mode 100644 Tests/RunCMake/Ninja/CMP0058-WARN-no-build-stdout.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-WARN-no-stderr.txt create mode 100644 Tests/RunCMake/Ninja/CMP0058-WARN-no.cmake create mode 100644 Tests/RunCMake/Ninja/CMP0058-common.cmake create mode 100644 Tests/RunCMake/Ninja/CMakeLists.txt create mode 100644 Tests/RunCMake/Ninja/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/RunCTest.cmake delete mode 100644 Tests/RunCMake/Syntax/ParenNoSpace2-stderr.txt delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3-stderr.txt delete mode 100644 Tests/RunCMake/TargetSources/CMP0026-LOCATION-stderr.txt delete mode 100644 Tests/RunCMake/TargetSources/ExportBuild-stderr.txt delete mode 100644 Tests/RunCMake/TargetSources/ExportInstall-result.txt delete mode 100644 Tests/RunCMake/TargetSources/ExportInstall-stderr.txt delete mode 100644 Tests/RunCMake/TargetSources/ExportInstall.cmake create mode 100644 Tests/RunCMake/VisibilityPreset/CMP0063-Common.cmake create mode 100644 Tests/RunCMake/VisibilityPreset/CMP0063-NEW.cmake create mode 100644 Tests/RunCMake/VisibilityPreset/CMP0063-OLD.cmake create mode 100644 Tests/RunCMake/VisibilityPreset/CMP0063-WARN-no.cmake create mode 100644 Tests/RunCMake/VisibilityPreset/CMP0063-WARN-yes-stderr.txt create mode 100644 Tests/RunCMake/VisibilityPreset/CMP0063-WARN-yes.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodeAttributeGenex-check.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodeAttributeGenex.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => XcodeProject/XcodeAttributeGenexError-result.txt} (100%) create mode 100644 Tests/RunCMake/XcodeProject/XcodeAttributeGenexError-stderr.txt create mode 100644 Tests/RunCMake/XcodeProject/XcodeAttributeGenexError.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodeObjectNeedsQuote-check.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodeObjectNeedsQuote.cmake create mode 100644 Tests/RunCMake/XcodeProject/XcodePlatformFrameworks.cmake copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/XcodeProject/someFileWithoutSpecialChars (100%) create mode 100644 Tests/RunCMake/build_command/CMP0061-NEW-stderr.txt create mode 100644 Tests/RunCMake/build_command/CMP0061-NEW.cmake create mode 100644 Tests/RunCMake/build_command/CMP0061-OLD-make-stderr.txt create mode 100644 Tests/RunCMake/build_command/CMP0061-OLD-make.cmake create mode 100644 Tests/RunCMake/build_command/CMP0061-OLD-other-stderr.txt create mode 100644 Tests/RunCMake/build_command/CMP0061-OLD-other.cmake create mode 100644 Tests/RunCMake/build_command/CMP0061Common.cmake create mode 100644 Tests/RunCMake/ctest_build/BuildFailure-CMP0061-OLD-result.txt create mode 100644 Tests/RunCMake/ctest_build/BuildFailure-CMP0061-OLD-stderr.txt copy Tests/RunCMake/{CTestMemcheck/DummyAddressSanitizer-result.txt => ctest_build/BuildFailure-result.txt} (100%) create mode 100644 Tests/RunCMake/ctest_build/BuildFailure-stderr.txt create mode 100644 Tests/RunCMake/ctest_build/BuildQuiet-stdout.txt create mode 100644 Tests/RunCMake/ctest_build/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_build/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/ctest_build/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/ctest_build/test.cmake.in create mode 100644 Tests/RunCMake/ctest_configure/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_configure/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/ctest_configure/ConfigureQuiet-stdout.txt create mode 100644 Tests/RunCMake/ctest_configure/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/ctest_configure/test.cmake.in create mode 100644 Tests/RunCMake/ctest_coverage/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_coverage/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/ctest_coverage/CoverageQuiet-stdout.txt create mode 100644 Tests/RunCMake/ctest_coverage/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/ctest_coverage/test.cmake.in create mode 100644 Tests/RunCMake/ctest_memcheck/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyAddressSanitizer-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyAddressSanitizer-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyAddressSanitizer-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyBC-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyBC-stderr.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyBC-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyBCNoLogFile-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyBCNoLogFile-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyBCNoLogFile-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyLeakSanitizer-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyLeakSanitizer-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyLeakSanitizer-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyMemorySanitizer-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyMemorySanitizer-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyMemorySanitizer-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyPurify-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyPurify-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyPurifyNoLogFile-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyPurifyNoLogFile-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyPurifyNoLogFile-stdout.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyQuiet-stdout.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyThreadSanitizer-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyThreadSanitizer-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyThreadSanitizer-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyUndefinedBehaviorSanitizer-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyUndefinedBehaviorSanitizer-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyUndefinedBehaviorSanitizer-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrind-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrind-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindCustomOptions-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindCustomOptions-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindCustomOptions-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindFailPost-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindFailPost-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindFailPost-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindFailPre-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindFailPre-stderr.txt create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindFailPre-stdout.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindIgnoreMemcheck-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindIgnoreMemcheck-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindInvalidSupFile-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindInvalidSupFile-stderr.txt create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindInvalidSupFile-stdout.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindNoLogFile-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/DummyValgrindNoLogFile-stderr.txt rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindNoLogFile-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindPrePost-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindPrePost-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindTwoTargets-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/DummyValgrindTwoTargets-stdout.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/NotExist-result.txt (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/NotExist-stderr.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/NotExist-stdout.txt create mode 100644 Tests/RunCMake/ctest_memcheck/RunCMakeTest.cmake rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/Unknown-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_memcheck/Unknown-stderr.txt create mode 100644 Tests/RunCMake/ctest_memcheck/Unknown-stdout.txt create mode 100644 Tests/RunCMake/ctest_memcheck/test.cmake.in rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/testAddressSanitizer.cmake (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/testLeakSanitizer.cmake (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/testMemorySanitizer.cmake (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/testThreadSanitizer.cmake (100%) rename Tests/RunCMake/{CTestMemcheck => ctest_memcheck}/testUndefinedBehaviorSanitizer.cmake (100%) create mode 100644 Tests/RunCMake/ctest_start/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_start/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/ctest_start/RunCMakeTest.cmake rename Tests/RunCMake/{CMP0022/CMP0022-NOWARN-exe-stderr.txt => ctest_start/StartQuiet-stdout.txt} (100%) create mode 100644 Tests/RunCMake/ctest_start/test.cmake.in rename Tests/RunCMake/{CTestSubmit => ctest_submit}/BadArg-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/BadArg-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/BadFILES-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/BadFILES-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/BadPARTS-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/BadPARTS-stderr.txt copy Tests/RunCMake/{CTestSubmit/CDashUploadFILES-result.txt => ctest_submit/CDashSubmitQuiet-result.txt} (100%) create mode 100644 Tests/RunCMake/ctest_submit/CDashSubmitQuiet-stderr.txt create mode 100644 Tests/RunCMake/ctest_submit/CDashSubmitQuiet-stdout.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadFILES-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/CDashUploadFILES-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadFTP-result.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadFTP-stderr.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadNone-result.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadNone-stderr.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadPARTS-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/CDashUploadPARTS-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadRETRY_COUNT-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/CDashUploadRETRY_COUNT-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CDashUploadRETRY_DELAY-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/CDashUploadRETRY_DELAY-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CMakeLists.txt.in (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/CTestConfig.cmake.in (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-cp-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-cp-stdout.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-ftp-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/FailDrop-ftp-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-ftp-stdout.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-http-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/FailDrop-http-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-http-stdout.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-https-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/FailDrop-https-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-https-stdout.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-scp-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/FailDrop-scp-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-scp-stdout.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-xmlrpc-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/FailDrop-xmlrpc-stdout.txt (100%) rename Tests/RunCMake/{CTestSubmit => ctest_submit}/PARTSCDashUpload-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/PARTSCDashUpload-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/PARTSCDashUploadType-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/PARTSCDashUploadType-stderr.txt rename Tests/RunCMake/{CTestSubmit => ctest_submit}/RepeatRETURN_VALUE-result.txt (100%) create mode 100644 Tests/RunCMake/ctest_submit/RepeatRETURN_VALUE-stderr.txt create mode 100644 Tests/RunCMake/ctest_submit/RunCMakeTest.cmake rename Tests/RunCMake/{CTestSubmit => ctest_submit}/test.cmake.in (100%) create mode 100644 Tests/RunCMake/ctest_test/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_test/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/ctest_test/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/ctest_test/TestQuiet-stdout.txt create mode 100644 Tests/RunCMake/ctest_test/test.cmake.in create mode 100644 Tests/RunCMake/ctest_upload/CMakeLists.txt.in create mode 100644 Tests/RunCMake/ctest_upload/CTestConfig.cmake.in create mode 100644 Tests/RunCMake/ctest_upload/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/ctest_upload/UploadQuiet-stdout.txt create mode 100644 Tests/RunCMake/ctest_upload/test.cmake.in create mode 100644 Tests/RunCMake/execute_process/MergeOutput-stdout.txt create mode 100644 Tests/RunCMake/execute_process/MergeOutput.cmake create mode 100644 Tests/RunCMake/execute_process/MergeOutputFile-stderr.txt create mode 100644 Tests/RunCMake/execute_process/MergeOutputFile.cmake create mode 100644 Tests/RunCMake/execute_process/MergeOutputVars-stderr.txt create mode 100644 Tests/RunCMake/execute_process/MergeOutputVars.cmake create mode 100644 Tests/RunCMake/execute_process/RunCMakeTest.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => file/GLOB-error-LIST_DIRECTORIES-no-arg-result.txt} (100%) create mode 100644 Tests/RunCMake/file/GLOB-error-LIST_DIRECTORIES-no-arg-stderr.txt create mode 100644 Tests/RunCMake/file/GLOB-error-LIST_DIRECTORIES-no-arg.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => file/GLOB-error-LIST_DIRECTORIES-not-boolean-result.txt} (100%) create mode 100644 Tests/RunCMake/file/GLOB-error-LIST_DIRECTORIES-not-boolean-stderr.txt create mode 100644 Tests/RunCMake/file/GLOB-error-LIST_DIRECTORIES-not-boolean.cmake create mode 100644 Tests/RunCMake/file/GLOB-stderr.txt create mode 100644 Tests/RunCMake/file/GLOB.cmake create mode 100644 Tests/RunCMake/file/GLOB_RECURSE-cyclic-recursion-stderr.txt create mode 100644 Tests/RunCMake/file/GLOB_RECURSE-cyclic-recursion.cmake create mode 100644 Tests/RunCMake/file/GLOB_RECURSE-stderr.txt create mode 100644 Tests/RunCMake/file/GLOB_RECURSE.cmake copy Tests/RunCMake/{CMP0055 => find_file}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/find_file/PrefixInPATH-stdout.txt create mode 100644 Tests/RunCMake/find_file/PrefixInPATH.cmake create mode 100644 Tests/RunCMake/find_file/RunCMakeTest.cmake copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/find_file/include/PrefixInPATH.h (100%) create mode 100644 Tests/RunCMake/find_library/PrefixInPATH-stdout.txt create mode 100644 Tests/RunCMake/find_library/PrefixInPATH.cmake copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/find_library/lib/libPrefixInPATH.a (100%) copy Tests/RunCMake/{CMP0055 => find_path}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/find_path/PrefixInPATH-stdout.txt create mode 100644 Tests/RunCMake/find_path/PrefixInPATH.cmake create mode 100644 Tests/RunCMake/find_path/RunCMakeTest.cmake copy Modules/IntelVSImplicitPath/hello.f => Tests/RunCMake/find_path/include/PrefixInPATH.h (100%) create mode 100644 Tests/RunCMake/get_property/DebugConfigurations-stderr.txt create mode 100644 Tests/RunCMake/get_property/DebugConfigurations.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => if/elseif-message-result.txt} (100%) create mode 100644 Tests/RunCMake/if/elseif-message-stderr.txt create mode 100644 Tests/RunCMake/if/elseif-message.cmake delete mode 100644 Tests/RunCMake/include_directories/BinInInstallPrefix-CMP0052-NEW-result.txt delete mode 100644 Tests/RunCMake/include_directories/BinInInstallPrefix-CMP0052-NEW-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/BinInInstallPrefix-CMP0052-OLD-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/BinInInstallPrefix-CMP0052-WARN-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/BinaryDirectoryInInterface-result.txt delete mode 100644 Tests/RunCMake/include_directories/BinaryDirectoryInInterface-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/BinaryDirectoryInInterface.cmake delete mode 100644 Tests/RunCMake/include_directories/DirInInstallPrefix-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/DirInInstallPrefix.cmake delete mode 100644 Tests/RunCMake/include_directories/InstallInBinDir-result.txt delete mode 100644 Tests/RunCMake/include_directories/InstallInBinDir-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/InstallInSrcDir-result.txt delete mode 100644 Tests/RunCMake/include_directories/InstallInSrcDir-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/InstallPrefixInInterface-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/InstallToPrefixInSrcDirInSource-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/InstallToPrefixInSrcDirOutOfSource-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/RelativePathInGenex-result.txt delete mode 100644 Tests/RunCMake/include_directories/RelativePathInGenex.cmake delete mode 100644 Tests/RunCMake/include_directories/RelativePathInInterface-result.txt delete mode 100644 Tests/RunCMake/include_directories/RelativePathInInterface.cmake delete mode 100644 Tests/RunCMake/include_directories/SourceDirectoryInInterface-result.txt delete mode 100644 Tests/RunCMake/include_directories/SourceDirectoryInInterface-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/SourceDirectoryInInterface.cmake delete mode 100644 Tests/RunCMake/include_directories/SrcInInstallPrefix-CMP0052-NEW-result.txt delete mode 100644 Tests/RunCMake/include_directories/SrcInInstallPrefix-CMP0052-NEW-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/SrcInInstallPrefix-CMP0052-OLD-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/SrcInInstallPrefix-CMP0052-WARN-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/export-NOWARN-stderr.txt delete mode 100644 Tests/RunCMake/include_directories/export-NOWARN.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => install/CMP0062-NEW-result.txt} (100%) create mode 100644 Tests/RunCMake/install/CMP0062-NEW-stderr.txt create mode 100644 Tests/RunCMake/install/CMP0062-NEW.cmake copy Tests/RunCMake/{CMP0022/CMP0022-WARN-empty-old-result.txt => install/CMP0062-OLD-result.txt} (100%) create mode 100644 Tests/RunCMake/install/CMP0062-OLD.cmake copy Tests/RunCMake/{CMP0022/CMP0022-WARN-empty-old-result.txt => install/CMP0062-WARN-result.txt} (100%) create mode 100644 Tests/RunCMake/install/CMP0062-WARN-stderr.txt create mode 100644 Tests/RunCMake/install/CMP0062-WARN.cmake delete mode 100644 Tests/RunCMake/install/SkipInstallRulesNoWarning1-stderr.txt delete mode 100644 Tests/RunCMake/install/SkipInstallRulesNoWarning2-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => install/TARGETS-DESTINATION-bad-result.txt} (100%) create mode 100644 Tests/RunCMake/install/TARGETS-DESTINATION-bad-stderr.txt create mode 100644 Tests/RunCMake/install/TARGETS-DESTINATION-bad.cmake copy Tests/RunCMake/{GeneratorExpression => install}/empty.c (100%) delete mode 100644 Tests/RunCMake/interface_library/add_dependencies-result.txt delete mode 100644 Tests/RunCMake/interface_library/add_dependencies-stderr.txt delete mode 100644 Tests/RunCMake/interface_library/add_dependencies.cmake delete mode 100644 Tests/RunCMake/interface_library/genex_link-stderr.txt delete mode 100644 Tests/RunCMake/interface_library/no_shared_libs-stderr.txt delete mode 100644 Tests/RunCMake/message/nomessage-stderr.txt delete mode 100644 Tests/RunCMake/no_install_prefix/with_install_prefix-stderr.txt delete mode 100644 Tests/RunCMake/project/CMP0048-NEW-stderr.txt create mode 100644 Tests/RunCMake/pseudo_emulator.c create mode 100644 Tests/RunCMake/pseudo_iwyu.c delete mode 100644 Tests/TarTest/CMakeLists.txt delete mode 100644 Tests/TarTest/TestTarExec.cxx create mode 100644 Tests/VSXaml/App.xaml create mode 100644 Tests/VSXaml/App.xaml.cpp create mode 100644 Tests/VSXaml/App.xaml.h copy Templates/Windows/Logo.png => Tests/VSXaml/Assets/Logo.scale-100.png (100%) copy Templates/Windows/SmallLogo.png => Tests/VSXaml/Assets/SmallLogo.scale-100.png (100%) copy Templates/Windows/SplashScreen.png => Tests/VSXaml/Assets/SplashScreen.scale-100.png (100%) copy Templates/Windows/StoreLogo.png => Tests/VSXaml/Assets/StoreLogo.scale-100.png (100%) create mode 100644 Tests/VSXaml/CMakeLists.txt create mode 100644 Tests/VSXaml/MainPage.xaml create mode 100644 Tests/VSXaml/MainPage.xaml.cpp create mode 100644 Tests/VSXaml/MainPage.xaml.h create mode 100644 Tests/VSXaml/Package.appxmanifest copy Templates/Windows/Windows_TemporaryKey.pfx => Tests/VSXaml/VSXaml_TemporaryKey.pfx (100%) create mode 100644 Tests/VSXaml/pch.cpp create mode 100644 Tests/VSXaml/pch.h create mode 100644 Tests/Visibility/CMakeLists.txt rename Tests/{VisibilityInlinesHidden => Visibility}/bar.c (100%) rename Tests/{VisibilityInlinesHidden => Visibility}/foo.cpp (100%) create mode 100644 Tests/Visibility/hidden.c create mode 100644 Tests/Visibility/shared.c create mode 100644 Tests/Visibility/shared.cpp create mode 100644 Tests/Visibility/verify.cmake delete mode 100644 Tests/VisibilityInlinesHidden/CMakeLists.txt delete mode 100644 Tests/VisibilityInlinesHidden/verify.cmake create mode 100644 Tests/XCTest/CMakeLists.txt create mode 100644 Tests/XCTest/CocoaExample/AppDelegate.h create mode 100644 Tests/XCTest/CocoaExample/AppDelegate.m create mode 100644 Tests/XCTest/CocoaExample/Info.plist create mode 100644 Tests/XCTest/CocoaExample/MainMenu.xib create mode 100644 Tests/XCTest/CocoaExample/main.m create mode 100644 Tests/XCTest/CocoaExampleTests/CocoaExampleTests.m create mode 100644 Tests/XCTest/FrameworkExample/FrameworkExample.c create mode 100644 Tests/XCTest/FrameworkExample/FrameworkExample.h create mode 100644 Tests/XCTest/FrameworkExample/Info.plist create mode 100644 Tests/XCTest/FrameworkExampleTests/FrameworkExampleTests.m create mode 100644 Tests/XCTest/FrameworkExampleTests/Info.plist create mode 100644 Utilities/Release/cpack_wix_ui_banner.jpg create mode 100644 Utilities/Release/cpack_wix_ui_dialog.jpg hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 11:34:16 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 11:34:16 -0400 (EDT) Subject: [Cmake-commits] CMake branch, maint, updated. v3.2.3 Message-ID: <20150602153416.DD186B0435@public.kitware.com> 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, maint has been updated via b3de2a8e6451c9138948c23a974740823ade8263 (commit) via 1d2ae2b307af884fde8124136a57d961d88dbdf7 (commit) via bfa57c5f80278abc044b7342e81e5aaad82bffab (commit) via cf86696ae8f0499f74656a8845df510e07cefbc2 (commit) via 44a4e54547a817546d3a12ed6ce8f16c62a76be8 (commit) via 07db2ca3c6f85af628841d12b50a8c0df13ffee8 (commit) via 3a65606591818281ba75bac4751e07c69751451f (commit) via 9c3b9d1a27924602ba7ae9c0dde591414d8f892c (commit) via 9b2778d412351db9c8c7f667335cbdf51b555124 (commit) via b84e9ae632ea78db87abca585785032c5b2b3e40 (commit) via bb6663ca0a73872b063477e92272418b7d49e39b (commit) from 91d5261b58e97107fca610a868fbc283cbb8c856 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Modules/InstallRequiredSystemLibraries.cmake | 12 ++++++++++-- Source/CMakeVersion.cmake | 2 +- Source/CTest/cmCTestBuildHandler.cxx | 4 ++-- Source/cmFunctionCommand.cxx | 2 +- Source/cmLocalUnixMakefileGenerator3.h | 1 + Source/cmMakefile.cxx | 1 + Source/cmMakefileTargetGenerator.cxx | 9 +++++++++ .../FunctionUnmatchedForeach-result.txt} | 0 Tests/RunCMake/Syntax/FunctionUnmatchedForeach-stderr.txt | 8 ++++++++ Tests/RunCMake/Syntax/FunctionUnmatchedForeach.cmake | 5 +++++ .../MacroUnmatchedForeach-result.txt} | 0 Tests/RunCMake/Syntax/MacroUnmatchedForeach-stderr.txt | 8 ++++++++ Tests/RunCMake/Syntax/MacroUnmatchedForeach.cmake | 5 +++++ Tests/RunCMake/Syntax/RunCMakeTest.cmake | 4 ++++ 14 files changed, 55 insertions(+), 6 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/FunctionUnmatchedForeach-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatchedForeach-stderr.txt create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatchedForeach.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/MacroUnmatchedForeach-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/MacroUnmatchedForeach-stderr.txt create mode 100644 Tests/RunCMake/Syntax/MacroUnmatchedForeach.cmake hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 11:49:55 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 11:49:55 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1391-g898ccde Message-ID: <20150602154955.0B4BEAFF03@public.kitware.com> 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 898ccde4de1e9ef285d2a06b63d5455bd975d2f5 (commit) via 0fb452574f25304b78281011f6efb64c34f7b537 (commit) from 219c12f2eefbd17b84747d2ed8a0ad2f66000501 (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=898ccde4de1e9ef285d2a06b63d5455bd975d2f5 commit 898ccde4de1e9ef285d2a06b63d5455bd975d2f5 Merge: 219c12f 0fb4525 Author: Brad King AuthorDate: Tue Jun 2 11:49:54 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 11:49:54 2015 -0400 Merge topic 'vs-deterministic-guid' into next 0fb45257 VS: Compute project GUIDs deterministically http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0fb452574f25304b78281011f6efb64c34f7b537 commit 0fb452574f25304b78281011f6efb64c34f7b537 Author: Brad King AuthorDate: Tue Jun 2 11:49:07 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 11:49:07 2015 -0400 VS: Compute project GUIDs deterministically Compute deterministic GUIDs that are unique to the build tree by hashing the path to the build tree with the GUID logical name. Avoid storing them in the cache, but honor any found there. This will allow project GUIDs to be reproduced in a fresh build tree so long as its path is the same as the original, which may be useful for incremental builds. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 979e971..598f6ad 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -310,8 +310,6 @@ public: { return this->BinaryDirectories.insert(dir).second; } - /** Supported systems creates a GUID for the given name */ - virtual void CreateGUID(const std::string&) {} /** Return true if the generated build tree may contain multiple builds. i.e. "Can I build Debug and Release in the same tree?" */ diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 4dd54d0..a242046 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -513,8 +513,6 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( cumulativePath = cumulativePath + "/" + *iter; } - - this->CreateGUID(cumulativePath.c_str()); } if (!cumulativePath.empty()) @@ -899,7 +897,6 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend(cmTarget const* target) fname += ".vcproj"; cmGeneratedFileStream fout(fname.c_str()); fout.SetCopyIfDifferent(true); - this->CreateGUID(pname.c_str()); std::string guid = this->GetGUID(pname.c_str()); fout << @@ -943,41 +940,28 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend(cmTarget const* target) return pname; } -std::string cmGlobalVisualStudio7Generator::GetGUID(const std::string& name) +//---------------------------------------------------------------------------- +std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) { - std::string guidStoreName = name; - guidStoreName += "_GUID_CMAKE"; - const char* storedGUID = - this->CMakeInstance->GetCacheDefinition(guidStoreName.c_str()); - if(storedGUID) + std::string const& guidStoreName = name + "_GUID_CMAKE"; + if (const char* storedGUID = + this->CMakeInstance->GetCacheDefinition(guidStoreName.c_str())) { return std::string(storedGUID); } - cmSystemTools::Error("Unknown Target referenced : ", - name.c_str()); - return ""; -} - - -void cmGlobalVisualStudio7Generator::CreateGUID(const std::string& name) -{ - std::string guidStoreName = name; - guidStoreName += "_GUID_CMAKE"; - if(this->CMakeInstance->GetCacheDefinition(guidStoreName.c_str())) - { - return; - } - std::string ret; - UUID uid; - unsigned short *uidstr; - UuidCreate(&uid); - UuidToStringW(&uid,&uidstr); - ret = cmsys::Encoding::ToNarrow(reinterpret_cast(uidstr)); - RpcStringFreeW(&uidstr); - ret = cmSystemTools::UpperCase(ret); - this->CMakeInstance->AddCacheEntry(guidStoreName.c_str(), - ret.c_str(), "Stored GUID", - cmState::INTERNAL); + // Compute a GUID that is deterministic but unique to the build tree. + std::string input = this->CMakeInstance->GetState()->GetBinaryDirectory(); + input += "|"; + input += name; + std::string md5 = cmSystemTools::ComputeStringMD5(input); + assert(md5.length() == 32); + std::string const& guid = + (md5.substr( 0,8)+"-"+ + md5.substr( 8,4)+"-"+ + md5.substr(12,4)+"-"+ + md5.substr(16,4)+"-"+ + md5.substr(20,12)); + return cmSystemTools::UpperCase(guid); } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index c98d269..931ac9c 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -80,9 +80,8 @@ public: */ virtual void OutputSLNFile(); - ///! Create a GUID or get an existing one. - void CreateGUID(const std::string& name); - std::string GetGUID(const std::string& name); + ///! Lookup a stored GUID or compute one deterministically. + std::string GetGUID(std::string const& name); /** Append the subdirectory for the given configuration. */ virtual void AppendDirectoryForConfig(const std::string& prefix, diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index a3ebc61..d24066f 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -185,7 +185,6 @@ void cmGlobalVisualStudio8Generator void cmGlobalVisualStudio8Generator::Configure() { this->cmGlobalVisualStudio7Generator::Configure(); - this->CreateGUID(CMAKE_CHECK_BUILD_SYSTEM_TARGET); } //---------------------------------------------------------------------------- diff --git a/Source/cmLocalVisualStudio10Generator.cxx b/Source/cmLocalVisualStudio10Generator.cxx index ad6a020..9ded83a 100644 --- a/Source/cmLocalVisualStudio10Generator.cxx +++ b/Source/cmLocalVisualStudio10Generator.cxx @@ -107,10 +107,9 @@ void cmLocalVisualStudio10Generator cmVS10XMLParser parser; parser.ParseFile(path); - // if we can not find a GUID then create one + // if we can not find a GUID then we will generate one later if(parser.GUID.empty()) { - this->GlobalGenerator->CreateGUID(name); return; } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 9c031cf..627f07a 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -96,10 +96,6 @@ void cmLocalVisualStudio7Generator::AddHelperCommands() this->ReadAndStoreExternalGUID( l->second.GetName().c_str(), path); } - else - { - gg->CreateGUID(l->first.c_str()); - } } @@ -2312,12 +2308,9 @@ void cmLocalVisualStudio7Generator::ReadAndStoreExternalGUID( { cmVS7XMLParser parser; parser.ParseFile(path); - // if we can not find a GUID then create one + // if we can not find a GUID then we will generate one later if(parser.GUID.size() == 0) { - cmGlobalVisualStudio7Generator* gg = - static_cast(this->GlobalGenerator); - gg->CreateGUID(name); return; } std::string guidStoreName = name; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..f953751 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2116,25 +2116,11 @@ void cmMakefile::AddSourceGroup(const std::vector& name, return; } // build the whole source group path - const char* fullname = sg->GetFullName(); cmGlobalGenerator* gg = this->GetGlobalGenerator(); - if(strlen(fullname)) - { - std::string guidName = "SG_Filter_"; - guidName += fullname; - gg->CreateGUID(guidName); - } for(++i; i<=lastElement; ++i) { sg->AddChild(cmSourceGroup(name[i].c_str(), 0, sg->GetFullName())); sg = sg->LookupChild(name[i].c_str()); - fullname = sg->GetFullName(); - if(strlen(fullname)) - { - std::string guidName = "SG_Filter_"; - guidName += fullname; - gg->CreateGUID(guidName); - } } sg->SetGroupRegex(regex); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5dfdb14..0be1335 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -178,7 +178,6 @@ cmVisualStudio10TargetGenerator(cmTarget* target, (cmLocalVisualStudio7Generator*) this->Makefile->GetLocalGenerator(); this->Name = this->Target->GetName(); - this->GlobalGenerator->CreateGUID(this->Name.c_str()); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); this->NsightTegra = gg->IsNsightTegra(); @@ -1084,7 +1083,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() (*this->BuildFileStream) << name << "\">\n"; std::string guidName = "SG_Filter_"; guidName += name; - this->GlobalGenerator->CreateGUID(guidName.c_str()); this->WriteString("", 3); std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); @@ -1099,7 +1097,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() { this->WriteString("\n", 2); std::string guidName = "SG_Filter_Object Libraries"; - this->GlobalGenerator->CreateGUID(guidName.c_str()); this->WriteString("", 3); std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); @@ -1112,7 +1109,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() { this->WriteString("\n", 2); std::string guidName = "SG_Filter_Resource Files"; - this->GlobalGenerator->CreateGUID(guidName.c_str()); this->WriteString("", 3); std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.h | 2 -- Source/cmGlobalVisualStudio7Generator.cxx | 52 ++++++++++------------------ Source/cmGlobalVisualStudio7Generator.h | 5 ++- Source/cmGlobalVisualStudio8Generator.cxx | 1 - Source/cmLocalVisualStudio10Generator.cxx | 3 +- Source/cmLocalVisualStudio7Generator.cxx | 9 +---- Source/cmMakefile.cxx | 14 -------- Source/cmVisualStudio10TargetGenerator.cxx | 4 --- 8 files changed, 22 insertions(+), 68 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 12:33:08 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 12:33:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1393-g1010c09 Message-ID: <20150602163308.54A9EB03C0@public.kitware.com> 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 1010c09cf784dc75832736ea5887b0dfaa9dff48 (commit) via a175c2f096f612d64fa0ae11bf541051d933b5bb (commit) from 898ccde4de1e9ef285d2a06b63d5455bd975d2f5 (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=1010c09cf784dc75832736ea5887b0dfaa9dff48 commit 1010c09cf784dc75832736ea5887b0dfaa9dff48 Merge: 898ccde a175c2f Author: Brad King AuthorDate: Tue Jun 2 12:33:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 12:33:07 2015 -0400 Merge topic 'vs-deterministic-guid' into next a175c2f0 fixup! VS: Compute project GUIDs deterministically http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a175c2f096f612d64fa0ae11bf541051d933b5bb commit a175c2f096f612d64fa0ae11bf541051d933b5bb Author: Brad King AuthorDate: Tue Jun 2 12:32:31 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 12:32:31 2015 -0400 fixup! VS: Compute project GUIDs deterministically diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index f953751..137c28b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2116,7 +2116,6 @@ void cmMakefile::AddSourceGroup(const std::vector& name, return; } // build the whole source group path - cmGlobalGenerator* gg = this->GetGlobalGenerator(); for(++i; i<=lastElement; ++i) { sg->AddChild(cmSourceGroup(name[i].c_str(), 0, sg->GetFullName())); ----------------------------------------------------------------------- Summary of changes: Source/cmMakefile.cxx | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 2 14:32:18 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 2 Jun 2015 14:32:18 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1397-g99955e0 Message-ID: <20150602183218.2BB45B02EA@public.kitware.com> 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 99955e0dc8228f878d4b934d7526f54b3d92d2e7 (commit) via bc814f981c54da35c5060a888e82b8fd02ff1687 (commit) via 19e5e0ba40034c9628afaa0c470b08f161284924 (commit) via 14e2c3ad181e2090cb0846fb87743f7543484d08 (commit) from 1010c09cf784dc75832736ea5887b0dfaa9dff48 (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=99955e0dc8228f878d4b934d7526f54b3d92d2e7 commit 99955e0dc8228f878d4b934d7526f54b3d92d2e7 Merge: 1010c09 bc814f9 Author: Brad King AuthorDate: Tue Jun 2 14:32:17 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 14:32:17 2015 -0400 Merge topic 'ExternalProject_init_selected_submodules' into next bc814f98 Help: Add notes for topic 'ExternalProject_init_selected_submodules' 19e5e0ba ExternalProject: Add unit tests for GIT_SUBMODULES argument 14e2c3ad ExternalProject: Initialize only selected git submodules (#15590) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc814f981c54da35c5060a888e82b8fd02ff1687 commit bc814f981c54da35c5060a888e82b8fd02ff1687 Author: Brad King AuthorDate: Tue Jun 2 14:29:45 2015 -0400 Commit: Brad King CommitDate: Tue Jun 2 14:32:09 2015 -0400 Help: Add notes for topic 'ExternalProject_init_selected_submodules' diff --git a/Help/release/dev/ExternalProject_init_selected_submodules.rst b/Help/release/dev/ExternalProject_init_selected_submodules.rst new file mode 100644 index 0000000..e642c19 --- /dev/null +++ b/Help/release/dev/ExternalProject_init_selected_submodules.rst @@ -0,0 +1,7 @@ +ExternalProject_init_selected_submodules +---------------------------------------- + +* The :module:`ExternalProject` module :command:`ExternalProject_Add` + function ``GIT_SUBMODULES`` option now also limits the set of + submodules that are initialized in addition to the prior behavior + of limiting the set of submodules that are updated. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=19e5e0ba40034c9628afaa0c470b08f161284924 commit 19e5e0ba40034c9628afaa0c470b08f161284924 Author: Daniele E. Domenichelli AuthorDate: Thu May 28 19:39:19 2015 +0200 Commit: Brad King CommitDate: Tue Jun 2 14:32:09 2015 -0400 ExternalProject: Add unit tests for GIT_SUBMODULES argument diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt index de62ce7..eef00ea 100644 --- a/Tests/ExternalProject/CMakeLists.txt +++ b/Tests/ExternalProject/CMakeLists.txt @@ -364,6 +364,66 @@ if(do_git_tests) ) set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + # Unzip/untar the git repository in our source folder so that other + # projects below may use it to test git args of ExternalProject_Add + # + set(proj SetupLocalGITRepositoryWithSubmodules) + ExternalProject_Add(${proj} + SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/GIT-with-submodules + URL ${CMAKE_CURRENT_SOURCE_DIR}/gitrepo-sub.tgz + BUILD_COMMAND "" + CONFIGURE_COMMAND "${GIT_EXECUTABLE}" --version + INSTALL_COMMAND "" + ) + set_property(TARGET ${proj} + PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing") + + set(local_git_repo "../../LocalRepositories/GIT-with-submodules") + + set(proj TutorialStep1-GIT-with-no-GIT_SUBMODULES) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DWITH_submodule1:BOOL=ON + -DWITH_submodule2:BOOL=ON + BUILD_COMMAND "" + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + "SetupLocalGITRepositoryWithSubmodules" + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + + set(proj TutorialStep1-GIT-with-empty-GIT_SUBMODULES) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + GIT_SUBMODULES "" + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DWITH_submodule1:BOOL=ON + -DWITH_submodule2:BOOL=ON + BUILD_COMMAND "" + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + "SetupLocalGITRepositoryWithSubmodules" + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + + set(proj TutorialStep1-GIT-with-some-GIT_SUBMODULES) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + GIT_SUBMODULES "submodules/submodule1" + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DWITH_submodule1:BOOL=ON + -DWITH_submodule2:BOOL=OFF + BUILD_COMMAND "" + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + "SetupLocalGITRepositoryWithSubmodules" + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + endif() set(do_hg_tests 0) diff --git a/Tests/ExternalProject/gitrepo-sub.tgz b/Tests/ExternalProject/gitrepo-sub.tgz new file mode 100644 index 0000000..72c8eb1 Binary files /dev/null and b/Tests/ExternalProject/gitrepo-sub.tgz differ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=14e2c3ad181e2090cb0846fb87743f7543484d08 commit 14e2c3ad181e2090cb0846fb87743f7543484d08 Author: Silvio Traversaro AuthorDate: Thu May 28 16:22:28 2015 +0200 Commit: Brad King CommitDate: Tue Jun 2 14:31:26 2015 -0400 ExternalProject: Initialize only selected git submodules (#15590) Honor the GIT_SUBMODULES option added by commit v3.0.0-rc1~92^2 (ExternalProject: Add option GIT_SUBMODULES, 2014-01-09) during the 'git submodule init' step to avoid initalizing all modules since we are only going to update the specified subset anyway. This will be useful for project repositories that have many submodules (e.g. https://github.com/boostorg/boost). Reviewed-by: Daniele E. Domenichelli diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 11a24b8..eee1841 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -529,7 +529,7 @@ if(error_code) endif() execute_process( - COMMAND \"${git_EXECUTABLE}\" submodule init + COMMAND \"${git_EXECUTABLE}\" submodule init ${git_submodules} WORKING_DIRECTORY \"${work_dir}/${src_name}\" RESULT_VARIABLE error_code ) ----------------------------------------------------------------------- Summary of changes: .../ExternalProject_init_selected_submodules.rst | 7 +++ Modules/ExternalProject.cmake | 2 +- Tests/ExternalProject/CMakeLists.txt | 60 ++++++++++++++++++++ Tests/ExternalProject/gitrepo-sub.tgz | Bin 0 -> 1833 bytes 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 Help/release/dev/ExternalProject_init_selected_submodules.rst create mode 100644 Tests/ExternalProject/gitrepo-sub.tgz hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 2 18:51:37 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 2 Jun 2015 18:51:37 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1402-g4f8124e Message-ID: <20150602225137.D0BD3AFF03@public.kitware.com> 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 4f8124e6c591534d26d38ccd6d2d2eb25d6a6a29 (commit) via 8585242bf1f51a43cc44b8178cae063d3f429fb4 (commit) via 020f4663a873363527a509ea1f8caf203f00b3e3 (commit) via 9b3b28373e25cef2cb452589c30695646ff8333e (commit) via 9aaa69834766809ce40e72720bab55ddc58b9868 (commit) from 99955e0dc8228f878d4b934d7526f54b3d92d2e7 (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=4f8124e6c591534d26d38ccd6d2d2eb25d6a6a29 commit 4f8124e6c591534d26d38ccd6d2d2eb25d6a6a29 Merge: 99955e0 8585242 Author: Stephen Kelly AuthorDate: Tue Jun 2 18:51:36 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 18:51:36 2015 -0400 Merge topic 'remove-CMAKE_USE_RELATIVE_PATHS' into next 8585242b cmLocalGenerator: Remove 'optional' parameter from Convert. 020f4663 cmLocalGenerator: Remove obsolete method. 9b3b2837 Port away from obsolete method. 9aaa6983 Remove CMAKE_USE_RELATIVE_PATHS variable. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8585242bf1f51a43cc44b8178cae063d3f429fb4 commit 8585242bf1f51a43cc44b8178cae063d3f429fb4 Author: Stephen Kelly AuthorDate: Mon Jun 1 20:23:11 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:27:48 2015 +0200 cmLocalGenerator: Remove 'optional' parameter from Convert. Port callers away from it. diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index a3ebc61..3102ebc 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -310,14 +310,10 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget() cmCustomCommandLine commandLine; commandLine.push_back(cmSystemTools::GetCMakeCommand()); std::string argH = "-H"; - argH += lg->Convert(mf->GetHomeDirectory(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, true); + argH += mf->GetHomeDirectory(); commandLine.push_back(argH); std::string argB = "-B"; - argB += lg->Convert(mf->GetHomeOutputDirectory(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, true); + argB += mf->GetHomeOutputDirectory(); commandLine.push_back(argB); commandLine.push_back("--check-stamp-list"); commandLine.push_back(stampList.c_str()); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index f35de03..35f71d3 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -517,7 +517,7 @@ void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, objectDir = this->Convert(objectDir,START_OUTPUT,SHELL); std::string objectFile = this->Convert(ofname,START_OUTPUT,SHELL); std::string sourceFile = - this->Convert(source.GetFullPath(),START_OUTPUT,SHELL,true); + this->ConvertToOutputFormat(source.GetFullPath(), SHELL); std::string varString = "CMAKE_"; varString += lang; varString += "_COMPILE_OBJECT"; @@ -1177,7 +1177,7 @@ cmLocalGenerator::ConvertToOutputForExistingCommon(const std::string& remote, std::string tmp; if(cmSystemTools::GetShortPath(remote, tmp)) { - return this->Convert(tmp, NONE, format, true); + return this->ConvertToOutputFormat(tmp, format); } } @@ -1191,8 +1191,9 @@ cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, RelativeRoot local, OutputFormat format) { + (void)local; // Perform standard conversion. - std::string result = this->Convert(remote, local, format, true); + std::string result = this->Convert(remote, local, format); // Consider short-path. return this->ConvertToOutputForExistingCommon(remote, result, format); @@ -1312,7 +1313,7 @@ std::string cmLocalGenerator::GetIncludeFlags( includeFlags << fwSearchFlag; } includeFlags << this->Convert(frameworkDir, START_OUTPUT, - shellFormat, true) + shellFormat) << " "; } continue; @@ -2686,42 +2687,39 @@ const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) //---------------------------------------------------------------------------- std::string cmLocalGenerator::Convert(const std::string& source, RelativeRoot relative, - OutputFormat output, - bool optional) + OutputFormat output) { // Convert the path to a relative path. std::string result = source; - if (!optional) + switch (relative) { - switch (relative) - { - case HOME: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->GetState()->GetSourceDirectoryComponents(), result); - break; - case START: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); - break; - case HOME_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->GetState()->GetBinaryDirectoryComponents(), result); - break; - case START_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); - break; - case FULL: - result = cmSystemTools::CollapseFullPath(result); - break; - case NONE: - break; - } + case HOME: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->GetState()->GetSourceDirectoryComponents(), result); + break; + case START: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); + break; + case HOME_OUTPUT: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->GetState()->GetBinaryDirectoryComponents(), result); + break; + case START_OUTPUT: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); + break; + case FULL: + result = cmSystemTools::CollapseFullPath(result); + break; + case NONE: + break; + } return this->ConvertToOutputFormat(result, output); } @@ -2765,8 +2763,7 @@ std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, //---------------------------------------------------------------------------- std::string cmLocalGenerator::Convert(RelativeRoot remote, const std::string& local, - OutputFormat output, - bool optional) + OutputFormat output, bool optional) { const char* remotePath = this->GetRelativeRootPath(remote); diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 30b622e..f02b5db 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -115,8 +115,7 @@ public: std::string ConvertToOutputFormat(const std::string& source, OutputFormat output); std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED, - bool optional = false); + OutputFormat output = UNCHANGED); std::string Convert(RelativeRoot remote, const std::string& local, OutputFormat output = UNCHANGED, bool optional = false); diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index e5f9f55..a26a1dd 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -235,13 +235,10 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt) comment += makefileIn; std::string args; args = "-H"; - args += this->Convert(this->Makefile->GetHomeDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeDirectory(); commandLine.push_back(args); args = "-B"; - args += - this->Convert(this->Makefile->GetHomeOutputDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeOutputDirectory(); commandLine.push_back(args); std::vector const& listFiles = this->Makefile->GetListFiles(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index c565632..717f33f 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -305,13 +305,10 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() comment += makefileIn; std::string args; args = "-H"; - args += this->Convert(this->Makefile->GetHomeDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeDirectory(); commandLine.push_back(args); args = "-B"; - args += - this->Convert(this->Makefile->GetHomeOutputDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeOutputDirectory(); commandLine.push_back(args); commandLine.push_back("--check-stamp-file"); std::string stampFilename = this->Convert(stampName.c_str(), FULL, diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7b88bc7..9ac9ddb 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -614,13 +614,7 @@ cmMakefileTargetGenerator } // Get the output paths for source and object files. - std::string sourceFile = source.GetFullPath(); - if(this->LocalGenerator->UseRelativePaths) - { - sourceFile = this->Convert(sourceFile, - cmLocalGenerator::START_OUTPUT); - } - sourceFile = this->Convert(sourceFile, + std::string sourceFile = this->Convert(source.GetFullPath(), cmLocalGenerator::NONE, cmLocalGenerator::SHELL); @@ -1595,9 +1589,8 @@ std::string cmMakefileTargetGenerator::GetFrameworkFlags(std::string const& l) if(emitted.insert(*i).second) { flags += fwSearchFlag; - flags += this->Convert(*i, - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::SHELL, true); + flags += this->LocalGenerator + ->ConvertToOutputFormat(*i, cmLocalGenerator::SHELL); flags += " "; } } diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 58044e8..2e1b052 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -273,10 +273,9 @@ protected: std::string Convert(const std::string& source, cmLocalGenerator::RelativeRoot relative, cmLocalGenerator::OutputFormat output = - cmLocalGenerator::UNCHANGED, - bool optional = false) + cmLocalGenerator::UNCHANGED) { - return this->LocalGenerator->Convert(source, relative, output, optional); + return this->LocalGenerator->Convert(source, relative, output); } }; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5dfdb14..527524e 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -923,10 +923,7 @@ cmVisualStudio10TargetGenerator::ConvertPath(std::string const& path, return forceRelative ? cmSystemTools::RelativePath( this->Makefile->GetCurrentBinaryDirectory(), path.c_str()) - : this->LocalGenerator->Convert(path.c_str(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, - /* optional = */ true); + : path.c_str(); } void cmVisualStudio10TargetGenerator::ConvertToWindowsSlash(std::string& s) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=020f4663a873363527a509ea1f8caf203f00b3e3 commit 020f4663a873363527a509ea1f8caf203f00b3e3 Author: Stephen Kelly AuthorDate: Mon Jun 1 20:11:53 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:27:48 2015 +0200 cmLocalGenerator: Remove obsolete method. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 84461b1..f35de03 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2670,14 +2670,6 @@ cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, } //---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToOptionallyRelativeOutputPath( - const std::string& remote) -{ - return this->Convert(remote, START_OUTPUT, SHELL, true); -} - -//---------------------------------------------------------------------------- const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) { switch (relroot) diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 03fe9ba..30b622e 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -126,13 +126,6 @@ public: */ const char* GetRelativeRootPath(RelativeRoot relroot); - /** - * Convert the given path to an output path. The - * remote path must use forward slashes and not already be escaped - * or quoted. - */ - std::string ConvertToOptionallyRelativeOutputPath(const std::string& remote); - ///! set/get the parent generator cmLocalGenerator* GetParent() const {return this->Parent;} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9b3b28373e25cef2cb452589c30695646ff8333e commit 9b3b28373e25cef2cb452589c30695646ff8333e Author: Stephen Kelly AuthorDate: Mon Jun 1 20:07:26 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:27:48 2015 +0200 Port away from obsolete method. diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index ad34857..e5f9f55 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -498,7 +498,7 @@ void cmLocalVisualStudio6Generator // Tell MS-Dev what the source is. If the compiler knows how to // build it, then it will. fout << "SOURCE=" << - this->ConvertToOptionallyRelativeOutputPath(source.c_str()) << "\n\n"; + this->ConvertToOutputFormat(source.c_str(), SHELL) << "\n\n"; if(!depends.empty()) { // Write out the dependencies for the rule. @@ -507,7 +507,7 @@ void cmLocalVisualStudio6Generator d != depends.end(); ++d) { fout << "\\\n\t" << - this->ConvertToOptionallyRelativeOutputPath(d->c_str()); + this->ConvertToOutputFormat(d->c_str(), SHELL); } fout << "\n"; } @@ -663,7 +663,7 @@ cmLocalVisualStudio6Generator if(this->GetRealDependency(d->c_str(), config.c_str(), dep)) { fout << "\\\n\t" << - this->ConvertToOptionallyRelativeOutputPath(dep.c_str()); + this->ConvertToOutputFormat(dep.c_str(), SHELL); } } fout << "\n"; @@ -689,7 +689,7 @@ cmLocalVisualStudio6Generator ++o) { // Write a rule for every output generated by this command. - fout << this->ConvertToOptionallyRelativeOutputPath(o->c_str()) + fout << this->ConvertToOutputFormat(o->c_str(), SHELL) << " : \"$(SOURCE)\" \"$(INTDIR)\" \"$(OUTDIR)\"\n\t"; fout << script.c_str() << "\n\n"; } @@ -906,7 +906,7 @@ cmLocalVisualStudio6Generator::GetTargetIncludeOptions(cmTarget &target, for(i = includes.begin(); i != includes.end(); ++i) { std::string tmp = - this->ConvertToOptionallyRelativeOutputPath(i->c_str()); + this->ConvertToOutputFormat(i->c_str(), SHELL); if(useShortPath) { cmSystemTools::GetShortPath(tmp.c_str(), tmp); @@ -997,14 +997,14 @@ void cmLocalVisualStudio6Generator if(libPath.size()) { std::string lpath = - this->ConvertToOptionallyRelativeOutputPath(libPath.c_str()); + this->ConvertToOutputFormat(libPath.c_str(), SHELL); if(lpath.size() == 0) { lpath = "."; } std::string lpathIntDir = libPath + "$(INTDIR)"; lpathIntDir = - this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str()); + this->ConvertToOutputFormat(lpathIntDir.c_str(), SHELL); if(pathEmitted.insert(lpath).second) { libOptions += " /LIBPATH:"; @@ -1030,14 +1030,14 @@ void cmLocalVisualStudio6Generator if(exePath.size()) { std::string lpath = - this->ConvertToOptionallyRelativeOutputPath(exePath.c_str()); + this->ConvertToOutputFormat(exePath.c_str(), SHELL); if(lpath.size() == 0) { lpath = "."; } std::string lpathIntDir = exePath + "$(INTDIR)"; lpathIntDir = - this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str()); + this->ConvertToOutputFormat(lpathIntDir.c_str(), SHELL); if(pathEmitted.insert(lpath).second) { @@ -1071,14 +1071,14 @@ void cmLocalVisualStudio6Generator path += "/"; } std::string lpath = - this->ConvertToOptionallyRelativeOutputPath(path.c_str()); + this->ConvertToOutputFormat(path.c_str(), SHELL); if(lpath.size() == 0) { lpath = "."; } std::string lpathIntDir = path + "$(INTDIR)"; lpathIntDir = - this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str()); + this->ConvertToOutputFormat(lpathIntDir.c_str(), SHELL); if(pathEmitted.insert(lpath).second) { libOptions += " /LIBPATH:"; @@ -1142,9 +1142,9 @@ void cmLocalVisualStudio6Generator libDebug += ".lib"; } } - lib = this->ConvertToOptionallyRelativeOutputPath(lib.c_str()); + lib = this->ConvertToOutputFormat(lib.c_str(), SHELL); libDebug = - this->ConvertToOptionallyRelativeOutputPath(libDebug.c_str()); + this->ConvertToOutputFormat(libDebug.c_str(), SHELL); if (j->second == cmTarget::GENERAL) { @@ -1367,21 +1367,21 @@ void cmLocalVisualStudio6Generator { #ifdef CM_USE_OLD_VS6 outputDirOld = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath - (target.GetDirectory().c_str())); + removeQuotes(this->ConvertToOutputFormat + (target.GetDirectory().c_str(), SHELL)); #endif outputDirDebug = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("Debug").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("Debug").c_str(), SHELL)); outputDirRelease = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("Release").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("Release").c_str(), SHELL)); outputDirMinSizeRel = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("MinSizeRel").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("MinSizeRel").c_str(), SHELL)); outputDirRelWithDebInfo = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("RelWithDebInfo").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("RelWithDebInfo").c_str(), SHELL)); } else if(target.GetType() == cmTarget::OBJECT_LIBRARY) { @@ -1449,15 +1449,13 @@ void cmLocalVisualStudio6Generator targetImplibFlagMinSizeRel = "/implib:"; targetImplibFlagRelWithDebInfo = "/implib:"; targetImplibFlagDebug += - this->ConvertToOptionallyRelativeOutputPath(fullPathImpDebug.c_str()); + this->ConvertToOutputFormat(fullPathImpDebug.c_str(), SHELL); targetImplibFlagRelease += - this->ConvertToOptionallyRelativeOutputPath(fullPathImpRelease.c_str()); + this->ConvertToOutputFormat(fullPathImpRelease.c_str(), SHELL); targetImplibFlagMinSizeRel += - this->ConvertToOptionallyRelativeOutputPath( - fullPathImpMinSizeRel.c_str()); + this->ConvertToOutputFormat(fullPathImpMinSizeRel.c_str(), SHELL); targetImplibFlagRelWithDebInfo += - this->ConvertToOptionallyRelativeOutputPath( - fullPathImpRelWithDebInfo.c_str()); + this->ConvertToOutputFormat(fullPathImpRelWithDebInfo.c_str(), SHELL); } #ifdef CM_USE_OLD_VS6 @@ -1669,12 +1667,12 @@ void cmLocalVisualStudio6Generator // to convert to output path for unix to win32 conversion cmSystemTools::ReplaceString (line, "LIBRARY_OUTPUT_PATH", - removeQuotes(this->ConvertToOptionallyRelativeOutputPath - (libPath.c_str())).c_str()); + removeQuotes(this->ConvertToOutputFormat + (libPath.c_str(), SHELL)).c_str()); cmSystemTools::ReplaceString (line, "EXECUTABLE_OUTPUT_PATH", - removeQuotes(this->ConvertToOptionallyRelativeOutputPath - (exePath.c_str())).c_str()); + removeQuotes(this->ConvertToOutputFormat + (exePath.c_str(), SHELL)).c_str()); #endif if(targetBuilds || target.GetType() == cmTarget::OBJECT_LIBRARY) @@ -1884,9 +1882,9 @@ void cmLocalVisualStudio6Generator } dir += "$(IntDir)"; options += "# ADD LINK32 /LIBPATH:"; - options += this->ConvertToOptionallyRelativeOutputPath(dir.c_str()); + options += this->ConvertToOutputFormat(dir.c_str(), SHELL); options += " /LIBPATH:"; - options += this->ConvertToOptionallyRelativeOutputPath(d->c_str()); + options += this->ConvertToOutputFormat(d->c_str(), SHELL); options += "\n"; } } @@ -1897,7 +1895,7 @@ void cmLocalVisualStudio6Generator if(l->IsPath) { options += - this->ConvertToOptionallyRelativeOutputPath(l->Value.c_str()); + this->ConvertToOutputFormat(l->Value.c_str(), SHELL); } else if (!l->Target || l->Target->GetType() != cmTarget::INTERFACE_LIBRARY) @@ -1933,7 +1931,7 @@ void cmLocalVisualStudio6Generator options += "# ADD "; options += tool; options += "32 "; - options += this->ConvertToOptionallyRelativeOutputPath(oi->c_str()); + options += this->ConvertToOutputFormat(oi->c_str(), SHELL); options += "\n"; } } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 9c031cf..c565632 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1087,7 +1087,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, if(!this->ModuleDefinitionFile.empty()) { std::string defFile = - this->ConvertToOptionallyRelativeOutputPath(this->ModuleDefinitionFile); + this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL); linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str()); } switch(target.GetType()) @@ -2234,7 +2234,7 @@ std::string cmLocalVisualStudio7Generator::EscapeForXML(const std::string& s) std::string cmLocalVisualStudio7Generator ::ConvertToXMLOutputPath(const char* path) { - std::string ret = this->ConvertToOptionallyRelativeOutputPath(path); + std::string ret = this->ConvertToOutputFormat(path, SHELL); cmSystemTools::ReplaceString(ret, "&", "&"); cmSystemTools::ReplaceString(ret, "\"", """); cmSystemTools::ReplaceString(ret, "<", "<"); @@ -2245,7 +2245,7 @@ std::string cmLocalVisualStudio7Generator std::string cmLocalVisualStudio7Generator ::ConvertToXMLOutputPathSingle(const char* path) { - std::string ret = this->ConvertToOptionallyRelativeOutputPath(path); + std::string ret = this->ConvertToOutputFormat(path, SHELL); cmSystemTools::ReplaceString(ret, "\"", ""); cmSystemTools::ReplaceString(ret, "&", "&"); cmSystemTools::ReplaceString(ret, "<", "<"); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9aaa69834766809ce40e72720bab55ddc58b9868 commit 9aaa69834766809ce40e72720bab55ddc58b9868 Author: Stephen Kelly AuthorDate: Mon Jun 1 19:56:46 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:27:48 2015 +0200 Remove CMAKE_USE_RELATIVE_PATHS variable. The test for this variable was removed in commit v2.8.8~330^2~7 (complex: Remove ancient unused ComplexRelativePaths test, 2011-12-23). Commit v3.1.0-rc1~425^2~2 (backtrace: Convert to local paths in IssueMessage, 2014-03-12) appears to have accidentally made some backtraces print relative paths with the variable because conversions which used to be done at configure time, before the variable had an effect are now potentially done at generate time. The documentation of the variable says not to use it, and the docs are wrong in that the variable actually applies in per-directory scope. The read of the variable makes it harder to split conversion methods from cmLocalGenerator where they don't belong. Remove it now. diff --git a/Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst b/Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst new file mode 100644 index 0000000..dd52ace --- /dev/null +++ b/Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst @@ -0,0 +1,5 @@ +remove-CMAKE_USE_RELATIVE_PATHS +------------------------------- + +* The :variable:`CMAKE_USE_RELATIVE_PATHS` variable no longer has any + effect. Previously it was partially implemented and unreliable. diff --git a/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst b/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst index af6f08c..06fe0fb 100644 --- a/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst +++ b/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst @@ -1,10 +1,5 @@ CMAKE_USE_RELATIVE_PATHS ------------------------ -Use relative paths (May not work!). - -If this is set to TRUE, then CMake will use relative paths between the -source and binary tree. This option does not work for more -complicated projects, and relative paths are used when possible. In -general, it is not possible to move CMake generated makefiles to a -different location regardless of the value of this variable. +This variable has no effect. The partially implemented effect it +had in previous releases was removed in CMake 3.4. diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 7464e90..1301e3e 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -3804,33 +3804,13 @@ void cmGlobalXCodeGenerator::GetDocumentation(cmDocumentationEntry& entry) //---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::ConvertToRelativeForMake(const char* p) { - if ( !this->CurrentMakefile->IsOn("CMAKE_USE_RELATIVE_PATHS") ) - { - return cmSystemTools::ConvertToOutputPath(p); - } - else - { - std::string ret = - this->CurrentLocalGenerator-> - ConvertToRelativePath(this->CurrentOutputDirectoryComponents, p); - return cmSystemTools::ConvertToOutputPath(ret.c_str()); - } + return cmSystemTools::ConvertToOutputPath(p); } //---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::ConvertToRelativeForXCode(const char* p) { - if ( !this->CurrentMakefile->IsOn("CMAKE_USE_RELATIVE_PATHS") ) - { - return cmSystemTools::ConvertToOutputPath(p); - } - else - { - std::string ret = - this->CurrentLocalGenerator-> - ConvertToRelativePath(this->ProjectOutputDirectoryComponents, p); - return cmSystemTools::ConvertToOutputPath(ret.c_str()); - } + return cmSystemTools::ConvertToOutputPath(p); } //---------------------------------------------------------------------------- diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index eb6b871..84461b1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -59,7 +59,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); this->LinkScriptShell = false; - this->UseRelativePaths = false; this->Configured = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; @@ -137,10 +136,6 @@ void cmLocalGenerator::Configure() this->Makefile->AddCMakeDependFilesFromUser(); - // Check whether relative paths should be used for optionally - // relative paths. - this->UseRelativePaths = this->Makefile->IsOn("CMAKE_USE_RELATIVE_PATHS"); - this->ComputeObjectMaxPath(); this->Configured = true; @@ -2705,7 +2700,7 @@ std::string cmLocalGenerator::Convert(const std::string& source, // Convert the path to a relative path. std::string result = source; - if (!optional || this->UseRelativePaths) + if (!optional) { switch (relative) { @@ -2786,7 +2781,7 @@ std::string cmLocalGenerator::Convert(RelativeRoot remote, // The relative root must have a path (i.e. not FULL or NONE) assert(remotePath != 0); - if(!local.empty() && (!optional || this->UseRelativePaths)) + if(!local.empty() && !optional) { std::vector components; cmSystemTools::SplitPath(local, components); diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 32b17f5..03fe9ba 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -127,8 +127,7 @@ public: const char* GetRelativeRootPath(RelativeRoot relroot); /** - * Convert the given path to an output path that is optionally - * relative based on the cache option CMAKE_USE_RELATIVE_PATHS. The + * Convert the given path to an output path. The * remote path must use forward slashes and not already be escaped * or quoted. */ @@ -460,7 +459,6 @@ protected: std::set WarnCMP0063; bool LinkScriptShell; - bool UseRelativePaths; bool Configured; bool EmitUniversalBinaryFlags; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 23803ef..e3fec5f 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1437,20 +1437,6 @@ int cmake::ActualConfigure() cmState::PATH); } } - if(!this->State - ->GetInitializedCacheValue("CMAKE_USE_RELATIVE_PATHS")) - { - this->State->AddCacheEntry - ("CMAKE_USE_RELATIVE_PATHS", "OFF", - "If true, cmake will use relative paths in makefiles and projects.", - cmState::BOOL); - if (!this->State->GetCacheEntryProperty("CMAKE_USE_RELATIVE_PATHS", - "ADVANCED")) - { - this->State->SetCacheEntryProperty("CMAKE_USE_RELATIVE_PATHS", - "ADVANCED", "1"); - } - } if(cmSystemTools::GetFatalErrorOccured()) { ----------------------------------------------------------------------- Summary of changes: .../dev/remove-CMAKE_USE_RELATIVE_PATHS.rst | 5 ++ Help/variable/CMAKE_USE_RELATIVE_PATHS.rst | 9 +- Source/cmGlobalVisualStudio8Generator.cxx | 8 +- Source/cmGlobalXCodeGenerator.cxx | 24 +----- Source/cmLocalGenerator.cxx | 86 ++++++++------------ Source/cmLocalGenerator.h | 12 +-- Source/cmLocalVisualStudio6Generator.cxx | 79 +++++++++--------- Source/cmLocalVisualStudio7Generator.cxx | 13 ++- Source/cmMakefileTargetGenerator.cxx | 13 +-- Source/cmMakefileTargetGenerator.h | 5 +- Source/cmVisualStudio10TargetGenerator.cxx | 5 +- Source/cmake.cxx | 14 ---- 12 files changed, 95 insertions(+), 178 deletions(-) create mode 100644 Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 2 19:07:54 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 2 Jun 2015 19:07:54 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1412-gb48810b Message-ID: <20150602230754.D7A38B0378@public.kitware.com> 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 b48810b703bd8a53f3739440f936bb95f0f052b9 (commit) via fdf759ddf39fffe648bc05aab840cd859c47bc71 (commit) via 1c92c5d833fc96a3aedb1166812c098126ee90f5 (commit) via 4685519531363cda73a5b1fded7edf8e9ff8aae7 (commit) via 70b0cbb9e68f4e4e46a856ce1ae968fbfaf27a48 (commit) via ed34628d7e81c7dc9f982a882f47e1426a7e24a8 (commit) via f0b67e1cf49c0d181d5f2d5b6fccda68e0c23492 (commit) via 1073d788a0fec128d862662332b31f2df8735e01 (commit) via 809ebda37ec24c6f3484fb680860a9ed96923317 (commit) via 29055df340d2acb30e28b3e8ae99be27bc742d30 (commit) from 4f8124e6c591534d26d38ccd6d2d2eb25d6a6a29 (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=b48810b703bd8a53f3739440f936bb95f0f052b9 commit b48810b703bd8a53f3739440f936bb95f0f052b9 Merge: 4f8124e fdf759d Author: Stephen Kelly AuthorDate: Tue Jun 2 19:07:53 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 19:07:53 2015 -0400 Merge topic 'cmMakefile-Configure' into next fdf759dd cmMakefile: Introduce a local cmMakefile variable. 1c92c5d8 cmMakefile: Store unconfigured cmMakefiles. 46855195 cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile. 70b0cbb9 cmMakefile: Move Configure responsibility from cmLocalGenerator. ed34628d cmake: Replace CurrentLocalGenerator concept with CurrentMakefile. f0b67e1c cmMakefile: Refactor directories specified with the subdirs command. 1073d788 cmLocalGenerator: ComputeObjectMaxPath just before generating. 809ebda3 Merge Configure state with GeneratingBuildSystem state. 29055df3 cmLocalGenerator: De-virtualize Configure(). http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fdf759ddf39fffe648bc05aab840cd859c47bc71 commit fdf759ddf39fffe648bc05aab840cd859c47bc71 Author: Stephen Kelly AuthorDate: Wed Jun 3 00:57:31 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:06:18 2015 +0200 cmMakefile: Introduce a local cmMakefile variable. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ae9fe32..7e103bc 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1685,21 +1685,23 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, ->MakeLocalGenerator(newSnapshot, this->LocalGenerator); this->GetGlobalGenerator()->AddLocalGenerator(lg2); + cmMakefile* subMf = lg2->GetMakefile(); + // set the subdirs start dirs - lg2->GetMakefile()->SetCurrentSourceDirectory(srcPath); - lg2->GetMakefile()->SetCurrentBinaryDirectory(binPath); + subMf->SetCurrentSourceDirectory(srcPath); + subMf->SetCurrentBinaryDirectory(binPath); if(excludeFromAll) { - lg2->GetMakefile()->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); + subMf->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); } if (immediate) { - this->ConfigureSubDirectory(lg2->GetMakefile()); + this->ConfigureSubDirectory(subMf); } else { - this->UnConfiguredDirectories.push_back(lg2->GetMakefile()); + this->UnConfiguredDirectories.push_back(subMf); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1c92c5d833fc96a3aedb1166812c098126ee90f5 commit 1c92c5d833fc96a3aedb1166812c098126ee90f5 Author: Stephen Kelly AuthorDate: Wed Jun 3 00:55:00 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:06:15 2015 +0200 cmMakefile: Store unconfigured cmMakefiles. Not cmLocalGenerators. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4079ccf..ae9fe32 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1598,13 +1598,13 @@ void cmMakefile::Configure() this->ProcessBuildsystemFile(currentStart.c_str()); // at the end handle any old style subdirs - std::vector subdirs = this->UnConfiguredDirectories; + std::vector subdirs = this->UnConfiguredDirectories; // for each subdir recurse - std::vector::iterator sdi = subdirs.begin(); + std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - this->ConfigureSubDirectory((*sdi)->GetMakefile()); + this->ConfigureSubDirectory(*sdi); } this->AddCMakeDependFilesFromUser(); @@ -1699,7 +1699,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, } else { - this->UnConfiguredDirectories.push_back(lg2); + this->UnConfiguredDirectories.push_back(lg2->GetMakefile()); } } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 5807707..4174f44 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -922,7 +922,7 @@ private: mutable cmsys::RegularExpression cmAtVarRegex; mutable cmsys::RegularExpression cmNamedCurly; - std::vector UnConfiguredDirectories; + std::vector UnConfiguredDirectories; cmPropertyMap Properties; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4685519531363cda73a5b1fded7edf8e9ff8aae7 commit 4685519531363cda73a5b1fded7edf8e9ff8aae7 Author: Stephen Kelly AuthorDate: Sat May 30 19:53:02 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:05:51 2015 +0200 cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 05e80d7..4079ccf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1604,17 +1604,17 @@ void cmMakefile::Configure() std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - this->ConfigureSubDirectory(*sdi); + this->ConfigureSubDirectory((*sdi)->GetMakefile()); } this->AddCMakeDependFilesFromUser(); this->SetConfigured(); } -void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) +void cmMakefile::ConfigureSubDirectory(cmMakefile *mf) { - lg2->GetMakefile()->InitializeFromParent(); - std::string currentStart = lg2->GetMakefile()->GetCurrentSourceDirectory(); + mf->InitializeFromParent(); + std::string currentStart = mf->GetCurrentSourceDirectory(); if (this->GetCMakeInstance()->GetDebugOutput()) { std::string msg=" Entering "; @@ -1652,11 +1652,11 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) // NEW behavior prints the error. this->IssueMessage(cmake::FATAL_ERROR, e.str()); } - lg2->GetMakefile()->SetConfigured(); + mf->SetConfigured(); return; } // finally configure the subdir - lg2->GetMakefile()->Configure(); + mf->Configure(); if (this->GetCMakeInstance()->GetDebugOutput()) { @@ -1695,7 +1695,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, if (immediate) { - this->ConfigureSubDirectory(lg2); + this->ConfigureSubDirectory(lg2->GetMakefile()); } else { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index e36df36..5807707 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -275,7 +275,7 @@ public: /** * Configure a subdirectory */ - void ConfigureSubDirectory(cmLocalGenerator *); + void ConfigureSubDirectory(cmMakefile* mf); /** * Add an include directory to the build. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=70b0cbb9e68f4e4e46a856ce1ae968fbfaf27a48 commit 70b0cbb9e68f4e4e46a856ce1ae968fbfaf27a48 Author: Stephen Kelly AuthorDate: Sat May 30 19:50:58 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:05:47 2015 +0200 cmMakefile: Move Configure responsibility from cmLocalGenerator. The generator should only have a function at generate time. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 1ee5500..1d11475 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1106,7 +1106,7 @@ void cmGlobalGenerator::Configure() this->CMakeInstance->GetHomeOutputDirectory()); // now do it - lg->Configure(); + lg->GetMakefile()->Configure(); // update the cache entry for the number of local generators, this is used // for progress diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 9e34d0d..9e6d9d8 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -75,68 +75,6 @@ bool cmLocalGenerator::IsRootMakefile() const } //---------------------------------------------------------------------------- -class cmLocalGeneratorCurrent -{ - cmGlobalGenerator* GG; - cmMakefile* MF; - cmState::Snapshot Snapshot; -public: - cmLocalGeneratorCurrent(cmMakefile* mf) - { - this->GG = mf->GetGlobalGenerator(); - this->MF = this->GG->GetCurrentMakefile(); - this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot( - this->GG->GetCMakeInstance()->GetCurrentSnapshot()); - this->GG->SetCurrentMakefile(mf); -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PushFileScope(); -#endif - } - ~cmLocalGeneratorCurrent() - { -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PopFileScope(); -#endif - this->GG->SetCurrentMakefile(this->MF); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); - } -}; - -//---------------------------------------------------------------------------- -void cmLocalGenerator::Configure() -{ - // Manage the global generator's current local generator. - cmLocalGeneratorCurrent clg(this->GetMakefile()); - static_cast(clg); - - // make sure the CMakeFiles dir is there - std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); - filesDir += cmake::GetCMakeFilesDirectory(); - cmSystemTools::MakeDirectory(filesDir.c_str()); - - std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); - currentStart += "/CMakeLists.txt"; - assert(cmSystemTools::FileExists(currentStart.c_str(), true)); - this->Makefile->ProcessBuildsystemFile(currentStart.c_str()); - - // at the end handle any old style subdirs - std::vector subdirs = - this->GetMakefile()->GetUnConfiguredDirectories(); - - // for each subdir recurse - std::vector::iterator sdi = subdirs.begin(); - for (; sdi != subdirs.end(); ++sdi) - { - this->Makefile->ConfigureSubDirectory(*sdi); - } - - this->Makefile->AddCMakeDependFilesFromUser(); - - this->Makefile->SetConfigured(); -} - -//---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { // Choose a maximum object file name length. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index c972e8f..1359dd6 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -47,12 +47,6 @@ public: virtual void Generate() {} /** - * Process the CMakeLists files for this directory to fill in the - * Makefile ivar - */ - void Configure(); - - /** * Calls TraceVSDependencies() on all targets of this generator. */ void TraceDependencies(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ffc6bf9..05e80d7 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1553,6 +1553,64 @@ void cmMakefile::InitializeFromParent() this->ImportedTargets = parent->ImportedTargets; } +//---------------------------------------------------------------------------- +class cmMakefileCurrent +{ + cmGlobalGenerator* GG; + cmMakefile* MF; + cmState::Snapshot Snapshot; +public: + cmMakefileCurrent(cmMakefile* mf) + { + this->GG = mf->GetGlobalGenerator(); + this->MF = this->GG->GetCurrentMakefile(); + this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PushFileScope(); +#endif + } + ~cmMakefileCurrent() + { +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PopFileScope(); +#endif + this->GG->SetCurrentMakefile(this->MF); + this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); + } +}; + +//---------------------------------------------------------------------------- +void cmMakefile::Configure() +{ + cmMakefileCurrent cmf(this); + + // make sure the CMakeFiles dir is there + std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); + filesDir += cmake::GetCMakeFilesDirectory(); + cmSystemTools::MakeDirectory(filesDir.c_str()); + + std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); + currentStart += "/CMakeLists.txt"; + assert(cmSystemTools::FileExists(currentStart.c_str(), true)); + this->ProcessBuildsystemFile(currentStart.c_str()); + + // at the end handle any old style subdirs + std::vector subdirs = this->UnConfiguredDirectories; + + // for each subdir recurse + std::vector::iterator sdi = subdirs.begin(); + for (; sdi != subdirs.end(); ++sdi) + { + this->ConfigureSubDirectory(*sdi); + } + + this->AddCMakeDependFilesFromUser(); + this->SetConfigured(); +} + void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) { lg2->GetMakefile()->InitializeFromParent(); @@ -1598,15 +1656,7 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) return; } // finally configure the subdir - lg2->Configure(); - - // at the end handle any old style subdirs - for (std::vector::iterator sdi = - this->UnConfiguredDirectories.begin(); - sdi != this->UnConfiguredDirectories.end(); ++sdi) - { - this->ConfigureSubDirectory(*sdi); - } + lg2->GetMakefile()->Configure(); if (this->GetCMakeInstance()->GetDebugOutput()) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 509f5c8..e36df36 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -262,11 +262,6 @@ public: this->LinkDirectories = vec; } - std::vector GetUnConfiguredDirectories() const - { - return this->UnConfiguredDirectories; - } - /** * Add a subdirectory to the build. */ @@ -275,6 +270,8 @@ public: bool excludeFromAll, bool immediate); + void Configure(); + /** * Configure a subdirectory */ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ed34628d7e81c7dc9f982a882f47e1426a7e24a8 commit ed34628d7e81c7dc9f982a882f47e1426a7e24a8 Author: Stephen Kelly AuthorDate: Sat May 30 23:50:28 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:40:28 2015 +0200 cmake: Replace CurrentLocalGenerator concept with CurrentMakefile. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index d1842c1..1ee5500 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -70,7 +70,7 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm) this->TryCompileTimeout = 0; this->ExtraGenerator = 0; - this->CurrentLocalGenerator = 0; + this->CurrentMakefile = 0; this->TryCompileOuterMakefile = 0; } @@ -1281,7 +1281,7 @@ void cmGlobalGenerator::Generate() // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { - this->SetCurrentLocalGenerator(this->LocalGenerators[i]); + this->SetCurrentMakefile(this->LocalGenerators[i]->GetMakefile()); this->LocalGenerators[i]->Generate(); if(!this->LocalGenerators[i]->GetMakefile()->IsOn( "CMAKE_SKIP_INSTALL_RULES")) @@ -1293,7 +1293,7 @@ void cmGlobalGenerator::Generate() (static_cast(i)+1.0f)/ static_cast(this->LocalGenerators.size())); } - this->SetCurrentLocalGenerator(0); + this->SetCurrentMakefile(0); if(!this->GenerateCPackPropertiesFile()) { diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 979e971..d2b8504 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -168,11 +168,13 @@ public: const std::vector& GetLocalGenerators() const { return this->LocalGenerators;} - cmLocalGenerator* GetCurrentLocalGenerator() - {return this->CurrentLocalGenerator;} + cmMakefile* GetCurrentMakefile() const + { + return this->CurrentMakefile; + } - void SetCurrentLocalGenerator(cmLocalGenerator* lg) - {this->CurrentLocalGenerator = lg;} + void SetCurrentMakefile(cmMakefile* mf) + {this->CurrentMakefile = mf;} void AddLocalGenerator(cmLocalGenerator *lg); @@ -406,7 +408,7 @@ protected: std::string ConfiguredFilesPath; cmake *CMakeInstance; std::vector LocalGenerators; - cmLocalGenerator* CurrentLocalGenerator; + cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; std::map > diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index e9eca28..9e34d0d 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -78,16 +78,17 @@ bool cmLocalGenerator::IsRootMakefile() const class cmLocalGeneratorCurrent { cmGlobalGenerator* GG; - cmLocalGenerator* LG; + cmMakefile* MF; cmState::Snapshot Snapshot; public: - cmLocalGeneratorCurrent(cmLocalGenerator* lg) + cmLocalGeneratorCurrent(cmMakefile* mf) { - this->GG = lg->GetGlobalGenerator(); - this->LG = this->GG->GetCurrentLocalGenerator(); + this->GG = mf->GetGlobalGenerator(); + this->MF = this->GG->GetCurrentMakefile(); this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(lg->GetStateSnapshot()); - this->GG->SetCurrentLocalGenerator(lg); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PushFileScope(); #endif @@ -97,7 +98,7 @@ public: #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PopFileScope(); #endif - this->GG->SetCurrentLocalGenerator(this->LG); + this->GG->SetCurrentMakefile(this->MF); this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); } }; @@ -106,7 +107,7 @@ public: void cmLocalGenerator::Configure() { // Manage the global generator's current local generator. - cmLocalGeneratorCurrent clg(this); + cmLocalGeneratorCurrent clg(this->GetMakefile()); static_cast(clg); // make sure the CMakeFiles dir is there diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index cbb06cd..fbd2946 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -1215,7 +1215,7 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory, cmLocalGenerator* lg = gg.MakeLocalGenerator(); lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory); lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory); - gg.SetCurrentLocalGenerator(lg); + gg.SetCurrentMakefile(lg->GetMakefile()); this->ReadAutogenInfoFile(lg->GetMakefile(), targetDirectory, config); this->ReadOldMocDefinitionsFile(lg->GetMakefile(), targetDirectory); diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index e5f4700..cc30732 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -113,12 +113,7 @@ static cmMakefile* cmakemainGetMakefile(void *clientdata) cmGlobalGenerator* gg=cm->GetGlobalGenerator(); if (gg) { - cmLocalGenerator* lg=gg->GetCurrentLocalGenerator(); - if (lg) - { - cmMakefile* mf = lg->GetMakefile(); - return mf; - } + return gg->GetCurrentMakefile(); } } return 0; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f0b67e1cf49c0d181d5f2d5b6fccda68e0c23492 commit f0b67e1cf49c0d181d5f2d5b6fccda68e0c23492 Author: Stephen Kelly AuthorDate: Sat May 30 19:39:08 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:40:28 2015 +0200 cmMakefile: Refactor directories specified with the subdirs command. Store the directories on the cmMakefile as explicitly not-configured-yet. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index c5db084..e9eca28 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -119,18 +119,15 @@ void cmLocalGenerator::Configure() assert(cmSystemTools::FileExists(currentStart.c_str(), true)); this->Makefile->ProcessBuildsystemFile(currentStart.c_str()); - // at the end of the ReadListFile handle any old style subdirs - // first get all the subdirectories - std::vector subdirs = this->GetChildren(); + // at the end handle any old style subdirs + std::vector subdirs = + this->GetMakefile()->GetUnConfiguredDirectories(); // for each subdir recurse std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - if (!(*sdi)->GetMakefile()->IsConfigured()) - { - this->Makefile->ConfigureSubDirectory(*sdi); - } + this->Makefile->ConfigureSubDirectory(*sdi); } this->Makefile->AddCMakeDependFilesFromUser(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d537f34..ffc6bf9 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1599,6 +1599,15 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) } // finally configure the subdir lg2->Configure(); + + // at the end handle any old style subdirs + for (std::vector::iterator sdi = + this->UnConfiguredDirectories.begin(); + sdi != this->UnConfiguredDirectories.end(); ++sdi) + { + this->ConfigureSubDirectory(*sdi); + } + if (this->GetCMakeInstance()->GetDebugOutput()) { std::string msg=" Returning to "; @@ -1638,6 +1647,10 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, { this->ConfigureSubDirectory(lg2); } + else + { + this->UnConfiguredDirectories.push_back(lg2); + } } void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index a45d837..509f5c8 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -262,6 +262,11 @@ public: this->LinkDirectories = vec; } + std::vector GetUnConfiguredDirectories() const + { + return this->UnConfiguredDirectories; + } + /** * Add a subdirectory to the build. */ @@ -920,6 +925,8 @@ private: mutable cmsys::RegularExpression cmAtVarRegex; mutable cmsys::RegularExpression cmNamedCurly; + std::vector UnConfiguredDirectories; + cmPropertyMap Properties; // Unused variable flags http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1073d788a0fec128d862662332b31f2df8735e01 commit 1073d788a0fec128d862662332b31f2df8735e01 Author: Stephen Kelly AuthorDate: Sat May 30 19:34:09 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:40:28 2015 +0200 cmLocalGenerator: ComputeObjectMaxPath just before generating. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 4fa7a61..d1842c1 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1223,6 +1223,7 @@ void cmGlobalGenerator::Generate() this->CreateDefaultGlobalTargets(&globalTargets); for (i = 0; i < this->LocalGenerators.size(); ++i) { + this->LocalGenerators[i]->ComputeObjectMaxPath(); cmMakefile* mf = this->LocalGenerators[i]->GetMakefile(); cmTargets* targets = &(mf->GetTargets()); cmTargets::iterator tit; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a46660b..c5db084 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -135,8 +135,6 @@ void cmLocalGenerator::Configure() this->Makefile->AddCMakeDependFilesFromUser(); - this->ComputeObjectMaxPath(); - this->Makefile->SetConfigured(); } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 8a1649e..c972e8f 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,6 +383,7 @@ public: bool IsMinGWMake() const; bool IsNMake() const; + void ComputeObjectMaxPath(); protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -428,7 +429,6 @@ protected: std::string& CreateSafeUniqueObjectFileName(const std::string& sin, std::string const& dir_max); - void ComputeObjectMaxPath(); virtual std::string ConvertToLinkReference(std::string const& lib, OutputFormat format = SHELL); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=809ebda37ec24c6f3484fb680860a9ed96923317 commit 809ebda37ec24c6f3484fb680860a9ed96923317 Author: Stephen Kelly AuthorDate: Sat May 30 19:26:32 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:40:28 2015 +0200 Merge Configure state with GeneratingBuildSystem state. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index cd05c54..4fa7a61 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1280,7 +1280,6 @@ void cmGlobalGenerator::Generate() // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { - this->LocalGenerators[i]->GetMakefile()->SetGeneratingBuildSystem(); this->SetCurrentLocalGenerator(this->LocalGenerators[i]); this->LocalGenerators[i]->Generate(); if(!this->LocalGenerators[i]->GetMakefile()->IsOn( diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 35f71d3..a46660b 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -59,7 +59,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); this->LinkScriptShell = false; - this->Configured = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; this->BackwardsCompatibilityFinal = false; @@ -128,7 +127,7 @@ void cmLocalGenerator::Configure() std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - if (!(*sdi)->Configured) + if (!(*sdi)->GetMakefile()->IsConfigured()) { this->Makefile->ConfigureSubDirectory(*sdi); } @@ -138,7 +137,7 @@ void cmLocalGenerator::Configure() this->ComputeObjectMaxPath(); - this->Configured = true; + this->Makefile->SetConfigured(); } //---------------------------------------------------------------------------- @@ -3179,11 +3178,6 @@ bool cmLocalGenerator::IsNMake() const return this->GetState()->UseNMake(); } -void cmLocalGenerator::SetConfiguredCMP0014(bool configured) -{ - this->Configured = configured; -} - //---------------------------------------------------------------------------- std::string cmLocalGenerator @@ -3465,7 +3459,7 @@ cmIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility() } } this->BackwardsCompatibility = CMake_VERSION_ENCODE(major, minor, patch); - this->BackwardsCompatibilityFinal = this->Configured; + this->BackwardsCompatibilityFinal = this->Makefile->IsConfigured(); } return this->BackwardsCompatibility; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index b635180..8a1649e 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,8 +383,6 @@ public: bool IsMinGWMake() const; bool IsNMake() const; - void SetConfiguredCMP0014(bool configured); - protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -451,7 +449,6 @@ protected: std::set WarnCMP0063; bool LinkScriptShell; - bool Configured; bool EmitUniversalBinaryFlags; // Hack for ExpandRuleVariable until object-oriented version is diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..d537f34 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -146,7 +146,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); - this->GeneratingBuildSystem = false; + this->Configured = false; this->SuppressWatches = false; // Setup the default include file regular expression (match everything). @@ -1594,7 +1594,7 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) // NEW behavior prints the error. this->IssueMessage(cmake::FATAL_ERROR, e.str()); } - lg2->SetConfiguredCMP0014(true); + lg2->GetMakefile()->SetConfigured(); return; } // finally configure the subdir diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index efd73a1..a45d837 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -781,8 +781,8 @@ public: return this->CompileDefinitionsEntries; } - bool IsGeneratingBuildSystem() const { return this->GeneratingBuildSystem; } - void SetGeneratingBuildSystem(){ this->GeneratingBuildSystem = true; } + bool IsConfigured() const { return this->Configured; } + void SetConfigured(){ this->Configured = true; } void AddQtUiFileWithOptions(cmSourceFile *sf); std::vector GetQtUiFilesWithOptions() const; @@ -994,7 +994,7 @@ private: long line, bool removeEmpty, bool replaceAt) const; - bool GeneratingBuildSystem; + bool Configured; /** * Old version of GetSourceFileWithOutput(const std::string&) kept for * backward-compatibility. It implements a linear search and support diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..1d1dced 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -764,7 +764,7 @@ void cmTarget::GetSourceFiles(std::vector &files, "SOURCES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugSourcesDone = true; } @@ -2106,7 +2106,7 @@ cmTarget::GetIncludeDirectories(const std::string& config, "INCLUDE_DIRECTORIES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugIncludesDone = true; } @@ -2277,7 +2277,7 @@ void cmTarget::GetCompileOptions(std::vector &result, "COMPILE_OPTIONS") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileOptionsDone = true; } @@ -2348,7 +2348,7 @@ void cmTarget::GetCompileDefinitions(std::vector &list, "COMPILE_DEFINITIONS") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileDefinitionsDone = true; } @@ -2449,7 +2449,7 @@ void cmTarget::GetCompileFeatures(std::vector &result, "COMPILE_FEATURES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileFeaturesDone = true; } @@ -4857,7 +4857,7 @@ cmTarget::ReportPropertyOrigin(const std::string &p, p) != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompatiblePropertiesDone[p] = true; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=29055df340d2acb30e28b3e8ae99be27bc742d30 commit 29055df340d2acb30e28b3e8ae99be27bc742d30 Author: Stephen Kelly AuthorDate: Sat May 30 19:12:38 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 00:40:27 2015 +0200 cmLocalGenerator: De-virtualize Configure(). The generators that override it do so in order to populate data members which can instead be populated in Generate(). diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index f02b5db..b635180 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -50,7 +50,7 @@ public: * Process the CMakeLists files for this directory to fill in the * Makefile ivar */ - virtual void Configure(); + void Configure(); /** * Calls TraceVSDependencies() on all targets of this generator. diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index c08c91f..427ae10 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -41,6 +41,15 @@ cmLocalNinjaGenerator::~cmLocalNinjaGenerator() void cmLocalNinjaGenerator::Generate() { + // Compute the path to use when referencing the current output + // directory from the top output directory. + this->HomeRelativeOutputPath = + this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); + if(this->HomeRelativeOutputPath == ".") + { + this->HomeRelativeOutputPath = ""; + } + this->SetConfigName(); this->WriteProcessedMakefile(this->GetBuildFileStream()); @@ -91,25 +100,6 @@ void cmLocalNinjaGenerator::Generate() this->WriteCustomCommandBuildStatements(); } -// Implemented in: -// cmLocalUnixMakefileGenerator3. -// Used in: -// Source/cmMakefile.cxx -// Source/cmGlobalGenerator.cxx -void cmLocalNinjaGenerator::Configure() -{ - // Compute the path to use when referencing the current output - // directory from the top output directory. - this->HomeRelativeOutputPath = - this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); - if(this->HomeRelativeOutputPath == ".") - { - this->HomeRelativeOutputPath = ""; - } - this->cmLocalGenerator::Configure(); - -} - // TODO: Picked up from cmLocalUnixMakefileGenerator3. Refactor it. std::string cmLocalNinjaGenerator ::GetTargetDirectory(cmTarget const& target) const diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index 7ae97de..ce966ff 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -38,8 +38,6 @@ public: virtual void Generate(); - virtual void Configure(); - virtual std::string GetTargetDirectory(cmTarget const& target) const; const cmGlobalNinjaGenerator* GetGlobalNinjaGenerator() const; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 3eea59b..c9eea56 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -98,7 +98,7 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3() } //---------------------------------------------------------------------------- -void cmLocalUnixMakefileGenerator3::Configure() +void cmLocalUnixMakefileGenerator3::Generate() { // Compute the path to use when referencing the current output // directory from the top output directory. @@ -112,12 +112,7 @@ void cmLocalUnixMakefileGenerator3::Configure() { this->HomeRelativeOutputPath += "/"; } - this->cmLocalGenerator::Configure(); -} -//---------------------------------------------------------------------------- -void cmLocalUnixMakefileGenerator3::Generate() -{ // Store the configuration name that will be generated. if(const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE")) { diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 988d660..f2a1389 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -40,12 +40,6 @@ public: virtual ~cmLocalUnixMakefileGenerator3(); /** - * Process the CMakeLists files for this directory to fill in the - * Makefile ivar - */ - virtual void Configure(); - - /** * Generate the makefile for this directory. */ virtual void Generate(); ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 10 ++-- Source/cmGlobalGenerator.h | 12 +++-- Source/cmLocalGenerator.cxx | 74 +------------------------- Source/cmLocalGenerator.h | 11 +--- Source/cmLocalNinjaGenerator.cxx | 28 ++++------ Source/cmLocalNinjaGenerator.h | 2 - Source/cmLocalUnixMakefileGenerator3.cxx | 7 +-- Source/cmLocalUnixMakefileGenerator3.h | 6 --- Source/cmMakefile.cxx | 85 ++++++++++++++++++++++++++---- Source/cmMakefile.h | 12 +++-- Source/cmQtAutoGenerators.cxx | 2 +- Source/cmTarget.cxx | 12 ++--- Source/cmakemain.cxx | 7 +-- 13 files changed, 115 insertions(+), 153 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 2 19:10:12 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 2 Jun 2015 19:10:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1419-g02493a5 Message-ID: <20150602231012.AA8CDAD4BD@public.kitware.com> 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 02493a5a171bfc1077703982a3bafc3e2b493ecf (commit) via eb7b6f6db4b2de70aae80fd8143e701b0cfa4268 (commit) via 499ebb6564800c23bfb6e7b1b706a6202b3f971a (commit) via 80b433b05ea921e6144c10260cfeafb4b25e5bc1 (commit) via 52919ac8ac22e1646f8f46907fe9c8e753d954cf (commit) via b68f2ea8ae26b23639df5978116375b47b4123c3 (commit) via 17e13f0a2de8dca416521cb5ad9775bf46030c83 (commit) from b48810b703bd8a53f3739440f936bb95f0f052b9 (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=02493a5a171bfc1077703982a3bafc3e2b493ecf commit 02493a5a171bfc1077703982a3bafc3e2b493ecf Merge: b48810b eb7b6f6 Author: Stephen Kelly AuthorDate: Tue Jun 2 19:10:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 19:10:11 2015 -0400 Merge topic 'minor-cleanups' into next eb7b6f6d cmVariableWatchCommand: Simplify error reporting. 499ebb65 cmListFileBacktrace: Internalize the step of making paths relative. 80b433b0 cmGlobalGenerator: Don't use else after a return. 52919ac8 cmMakefile: Make cmListFileBacktrace default constructible. b68f2ea8 cmMakefile: Add API for elseif to create backtrace. 17e13f0a cmMakefile: Simplify CMP0000 handling. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eb7b6f6db4b2de70aae80fd8143e701b0cfa4268 commit eb7b6f6db4b2de70aae80fd8143e701b0cfa4268 Author: Stephen Kelly AuthorDate: Sat May 23 20:30:37 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:04:01 2015 +0200 cmVariableWatchCommand: Simplify error reporting. diff --git a/Source/cmVariableWatchCommand.cxx b/Source/cmVariableWatchCommand.cxx index 9473008..09cef5e 100644 --- a/Source/cmVariableWatchCommand.cxx +++ b/Source/cmVariableWatchCommand.cxx @@ -68,11 +68,8 @@ static void cmVariableWatchCommandVariableAccessed( cmExecutionStatus status; if(!makefile->ExecuteCommand(newLFF,status)) { - arg.FilePath = "Unknown"; - arg.Line = 0; std::ostringstream error; - error << "Error in cmake code at\n" - << arg.FilePath << ":" << arg.Line << ":\n" + error << "Error in cmake code at\nUnknown:0:\n" << "A command failed during the invocation of callback \"" << data->Command << "\"."; cmSystemTools::Error(error.str().c_str()); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=499ebb6564800c23bfb6e7b1b706a6202b3f971a commit 499ebb6564800c23bfb6e7b1b706a6202b3f971a Author: Stephen Kelly AuthorDate: Sat May 23 13:50:12 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:04:00 2015 +0200 cmListFileBacktrace: Internalize the step of making paths relative. Currently cmMakefile calls MakeRelative on a copy of the backtrace, emits the copy to the stream once, then discards the copy. There is no need to have API for the path conversion. diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index 2756cd2..ffe1a1f 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -405,29 +405,17 @@ void cmListFileBacktrace::Append(cmListFileContext const& context) this->push_back(context); } -//---------------------------------------------------------------------------- -void cmListFileBacktrace::MakeRelative() -{ - if (this->Relative) - { - return; - } - for (cmListFileBacktrace::iterator i = this->begin(); - i != this->end(); ++i) - { - i->FilePath = this->LocalGenerator->Convert(i->FilePath, - cmLocalGenerator::HOME); - } - this->Relative = true; -} - void cmListFileBacktrace::PrintTitle(std::ostream& out) { if (this->empty()) { return; } - out << (this->front().Line ? " at " : " in ") << this->front(); + + cmListFileContext lfc = this->front(); + lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, + cmLocalGenerator::HOME); + out << (lfc.Line ? " at " : " in ") << lfc; } void cmListFileBacktrace::PrintCallStack(std::ostream& out) @@ -441,7 +429,9 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out) out << "Call Stack (most recent call first):\n"; while(i != this->end()) { - cmListFileContext const& lfc = *i; + cmListFileContext lfc = *i; + lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, + cmLocalGenerator::HOME); out << " " << lfc << "\n"; ++i; } diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index f85b430..1971862a 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -76,19 +76,15 @@ class cmListFileBacktrace: private std::vector public: cmListFileBacktrace(cmLocalGenerator* localGen = 0) : LocalGenerator(localGen) - , Relative(localGen ? false : true) { } void Append(cmListFileContext const& context); - void MakeRelative(); - void PrintTitle(std::ostream& out); void PrintCallStack(std::ostream& out); private: cmLocalGenerator* LocalGenerator; - bool Relative; }; struct cmListFile diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 23803ef..6cd005e 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -2519,7 +2519,6 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, cmListFileBacktrace const& bt) { cmListFileBacktrace backtrace = bt; - backtrace.MakeRelative(); std::ostringstream msg; if (!this->PrintMessagePreamble(t, msg)) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=80b433b05ea921e6144c10260cfeafb4b25e5bc1 commit 80b433b05ea921e6144c10260cfeafb4b25e5bc1 Author: Stephen Kelly AuthorDate: Wed May 27 21:40:39 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:04:00 2015 +0200 cmGlobalGenerator: Don't use else after a return. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index cd05c54..2c2cbd8 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -87,18 +87,16 @@ bool cmGlobalGenerator::SetGeneratorPlatform(std::string const& p, { return true; } - else - { - std::ostringstream e; - e << - "Generator\n" - " " << this->GetName() << "\n" - "does not support platform specification, but platform\n" - " " << p << "\n" - "was specified."; - mf->IssueMessage(cmake::FATAL_ERROR, e.str()); - return false; - } + + std::ostringstream e; + e << + "Generator\n" + " " << this->GetName() << "\n" + "does not support platform specification, but platform\n" + " " << p << "\n" + "was specified."; + mf->IssueMessage(cmake::FATAL_ERROR, e.str()); + return false; } bool cmGlobalGenerator::SetGeneratorToolset(std::string const& ts, @@ -108,18 +106,15 @@ bool cmGlobalGenerator::SetGeneratorToolset(std::string const& ts, { return true; } - else - { - std::ostringstream e; - e << - "Generator\n" - " " << this->GetName() << "\n" - "does not support toolset specification, but toolset\n" - " " << ts << "\n" - "was specified."; - mf->IssueMessage(cmake::FATAL_ERROR, e.str()); - return false; - } + std::ostringstream e; + e << + "Generator\n" + " " << this->GetName() << "\n" + "does not support toolset specification, but toolset\n" + " " << ts << "\n" + "was specified."; + mf->IssueMessage(cmake::FATAL_ERROR, e.str()); + return false; } std::string cmGlobalGenerator::SelectMakeProgram( http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=52919ac8ac22e1646f8f46907fe9c8e753d954cf commit 52919ac8ac22e1646f8f46907fe9c8e753d954cf Author: Stephen Kelly AuthorDate: Sat May 30 13:17:55 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:03:59 2015 +0200 cmMakefile: Make cmListFileBacktrace default constructible. diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx index 015825d..4032b08 100644 --- a/Source/cmCustomCommand.cxx +++ b/Source/cmCustomCommand.cxx @@ -17,7 +17,7 @@ //---------------------------------------------------------------------------- cmCustomCommand::cmCustomCommand() - : Backtrace(NULL) + : Backtrace() { this->HaveComment = false; this->EscapeOldStyle = true; @@ -82,7 +82,7 @@ cmCustomCommand::cmCustomCommand(cmMakefile const* mf, WorkingDirectory(workingDirectory?workingDirectory:""), EscapeAllowMakeVars(false), EscapeOldStyle(true), - Backtrace(NULL) + Backtrace() { this->EscapeOldStyle = true; this->EscapeAllowMakeVars = false; diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx index bf18deb..568ce89 100644 --- a/Source/cmExportBuildFileGenerator.cxx +++ b/Source/cmExportBuildFileGenerator.cxx @@ -18,7 +18,7 @@ //---------------------------------------------------------------------------- cmExportBuildFileGenerator::cmExportBuildFileGenerator() - : Backtrace(NULL) + : Backtrace() { this->Makefile = 0; this->ExportSet = 0; diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index a1c405b..3655a87 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -34,7 +34,7 @@ cmGeneratorExpression::Parse(std::string const& input) { return cmsys::auto_ptr( new cmCompiledGeneratorExpression( - this->Backtrace ? *this->Backtrace : cmListFileBacktrace(NULL), + this->Backtrace ? *this->Backtrace : cmListFileBacktrace(), input)); } diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index ff8790c..851aacd 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -35,7 +35,7 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( const GeneratorExpressionContent *content, cmGeneratorExpressionDAGChecker *parent) : Parent(parent), Target(target), Property(property), - Content(content), Backtrace(NULL), TransitivePropertiesOnly(false) + Content(content), Backtrace(), TransitivePropertiesOnly(false) { Initialize(); } diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index 4a1d181..f85b430 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -74,7 +74,7 @@ struct cmListFileFunction: public cmListFileContext class cmListFileBacktrace: private std::vector { public: - cmListFileBacktrace(cmLocalGenerator* localGen) + cmListFileBacktrace(cmLocalGenerator* localGen = 0) : LocalGenerator(localGen) , Relative(localGen ? false : true) { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..dcbcb13 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -94,13 +94,13 @@ class cmTargetInternals { public: cmTargetInternals() - : Backtrace(NULL) + : Backtrace() { this->PolicyWarnedCMP0022 = false; this->UtilityItemsDone = false; } cmTargetInternals(cmTargetInternals const&) - : Backtrace(NULL) + : Backtrace() { this->PolicyWarnedCMP0022 = false; this->UtilityItemsDone = false; diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 2150b83..0cbb575 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -66,7 +66,7 @@ public: class cmLinkImplItem: public cmLinkItem { public: - cmLinkImplItem(): cmLinkItem(), Backtrace(0), FromGenex(false) {} + cmLinkImplItem(): cmLinkItem(), Backtrace(), FromGenex(false) {} cmLinkImplItem(std::string const& n, cmTarget const* t, cmListFileBacktrace const& bt, diff --git a/Source/cmake.h b/Source/cmake.h index 12b7e68..0fe7bfc 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -301,7 +301,7 @@ class cmake /** Display a message to the user. */ void IssueMessage(cmake::MessageType t, std::string const& text, - cmListFileBacktrace const& backtrace = cmListFileBacktrace(NULL)); + cmListFileBacktrace const& backtrace = cmListFileBacktrace()); void IssueMessage(cmake::MessageType t, std::string const& text, cmListFileContext const& lfc); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b68f2ea8ae26b23639df5978116375b47b4123c3 commit b68f2ea8ae26b23639df5978116375b47b4123c3 Author: Stephen Kelly AuthorDate: Fri May 29 01:14:19 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:03:58 2015 +0200 cmMakefile: Add API for elseif to create backtrace. diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 3551f83..7c4792c 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -92,10 +92,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, } else { - // Place this call on the call stack. - cmMakefileCall stack_manager(&mf, this->Functions[c], status); - static_cast(stack_manager); - // if trace is enabled, print the evaluated "elseif" statement if(mf.GetCMakeInstance()->GetTrace()) { @@ -119,7 +115,8 @@ IsFunctionBlocked(const cmListFileFunction& lff, { std::string err = cmIfCommandError(expandedArguments); err += errorString; - mf.IssueMessage(messType, err); + cmListFileBacktrace bt = mf.GetBacktrace(this->Functions[c]); + mf.GetCMakeInstance()->IssueMessage(messType, err, bt); if (messType == cmake::FATAL_ERROR) { cmSystemTools::SetFatalErrorOccured(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index f09c8cb..9f2a1be 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -287,6 +287,20 @@ cmListFileBacktrace cmMakefile::GetBacktrace() const } //---------------------------------------------------------------------------- +cmListFileBacktrace +cmMakefile::GetBacktrace(cmListFileContext const& lfc) const +{ + cmListFileBacktrace backtrace(this->GetLocalGenerator()); + backtrace.Append(lfc); + for(CallStackType::const_reverse_iterator i = this->CallStack.rbegin(); + i != this->CallStack.rend(); ++i) + { + backtrace.Append(*i->Context); + } + return backtrace; +} + +//---------------------------------------------------------------------------- cmListFileContext cmMakefile::GetExecutionContext() const { return *this->CallStack.back().Context; diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index efd73a1..29a7061 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -572,6 +572,7 @@ public: * Get the current context backtrace. */ cmListFileBacktrace GetBacktrace() const; + cmListFileBacktrace GetBacktrace(cmListFileContext const& lfc) const; cmListFileContext GetExecutionContext() const; /** http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=17e13f0a2de8dca416521cb5ad9775bf46030c83 commit 17e13f0a2de8dca416521cb5ad9775bf46030c83 Author: Stephen Kelly AuthorDate: Sat May 23 10:50:19 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:03:57 2015 +0200 cmMakefile: Simplify CMP0000 handling. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..f09c8cb 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -519,8 +519,10 @@ bool cmMakefile::ProcessBuildsystemFile(const char* listfile) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", listfile); std::string curSrc = this->GetCurrentSourceDirectory(); - return this->ReadListFile(listfile, true, - curSrc == this->GetHomeDirectory()); + bool result = this->ReadListFile(listfile, true, + curSrc == this->GetHomeDirectory()); + this->EnforceDirectoryLevelRules(); + return result; } bool cmMakefile::ReadDependentFile(const char* listfile, bool noPolicyScope) @@ -619,13 +621,6 @@ bool cmMakefile::ReadListFileInternal(const char* filenametoread, } } - // If this is the directory-level CMakeLists.txt file then perform - // some extra checks. - if(this->ListFileStack.size() == 1) - { - this->EnforceDirectoryLevelRules(); - } - return true; } ----------------------------------------------------------------------- Summary of changes: Source/cmCustomCommand.cxx | 4 +-- Source/cmExportBuildFileGenerator.cxx | 2 +- Source/cmGeneratorExpression.cxx | 2 +- Source/cmGeneratorExpressionDAGChecker.cxx | 2 +- Source/cmGlobalGenerator.cxx | 43 ++++++++++++---------------- Source/cmIfCommand.cxx | 7 ++--- Source/cmListFileCache.cxx | 26 ++++++----------- Source/cmListFileCache.h | 6 +--- Source/cmMakefile.cxx | 27 +++++++++++------ Source/cmMakefile.h | 1 + Source/cmTarget.cxx | 4 +-- Source/cmTarget.h | 2 +- Source/cmVariableWatchCommand.cxx | 5 +--- Source/cmake.cxx | 1 - Source/cmake.h | 2 +- 15 files changed, 59 insertions(+), 75 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 2 19:18:14 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 2 Jun 2015 19:18:14 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1423-ga2556fe Message-ID: <20150602231815.01798AFC89@public.kitware.com> 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 a2556feeb11dc3b758898bdc8ccd44a063401f7d (commit) via cf1233a0eab7cec757d2929cc7373f94ba4fa8a8 (commit) via 942df88bf83e99abbfbd69207369096fa7cf67a2 (commit) via da28f11523644cdc2138a0cde2c4c015948ff46c (commit) from 02493a5a171bfc1077703982a3bafc3e2b493ecf (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=a2556feeb11dc3b758898bdc8ccd44a063401f7d commit a2556feeb11dc3b758898bdc8ccd44a063401f7d Merge: 02493a5 cf1233a Author: Stephen Kelly AuthorDate: Tue Jun 2 19:18:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 2 19:18:14 2015 -0400 Merge topic 'rename-cmState-API' into next cf1233a0 cmState: Rename GetParent method. 942df88b cmState: Rename CreateSnapshot method. da28f115 cmState: Add CreateBaseSnapshot method. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cf1233a0eab7cec757d2929cc7373f94ba4fa8a8 commit cf1233a0eab7cec757d2929cc7373f94ba4fa8a8 Author: Stephen Kelly AuthorDate: Sat May 23 08:02:54 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:15:03 2015 +0200 cmState: Rename GetParent method. Leave the namespace open for other Parent types. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index eb6b871..a16fc55 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -73,7 +73,7 @@ cmLocalGenerator::~cmLocalGenerator() bool cmLocalGenerator::IsRootMakefile() const { - return !this->StateSnapshot.GetParent().IsValid(); + return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); } //---------------------------------------------------------------------------- diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 60498ef..00627bf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4038,7 +4038,8 @@ const char *cmMakefile::GetProperty(const std::string& prop, output = ""; if (prop == "PARENT_DIRECTORY") { - cmState::Snapshot parent = this->StateSnapshot.GetParent(); + cmState::Snapshot parent = + this->StateSnapshot.GetBuildsystemDirectoryParent(); if(parent.IsValid()) { return parent.GetCurrentSourceDirectory(); diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 87892b4..c6fb299 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -590,7 +590,7 @@ void cmState::Snapshot::ComputeRelativePathTopSource() snapshots.push_back(snapshot); while (true) { - snapshot = snapshot.GetParent(); + snapshot = snapshot.GetBuildsystemDirectoryParent(); if (snapshot.IsValid()) { snapshots.push_back(snapshot); @@ -622,7 +622,7 @@ void cmState::Snapshot::ComputeRelativePathTopBinary() snapshots.push_back(snapshot); while (true) { - snapshot = snapshot.GetParent(); + snapshot = snapshot.GetBuildsystemDirectoryParent(); if (snapshot.IsValid()) { snapshots.push_back(snapshot); @@ -775,7 +775,7 @@ bool cmState::Snapshot::IsValid() const return this->State ? true : false; } -cmState::Snapshot cmState::Snapshot::GetParent() const +cmState::Snapshot cmState::Snapshot::GetBuildsystemDirectoryParent() const { Snapshot snapshot; if (!this->State || this->Position == 0) diff --git a/Source/cmState.h b/Source/cmState.h index 24e0f7b..60b024f 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -45,7 +45,7 @@ public: void SetRelativePathTopBinary(const char* dir); bool IsValid() const; - Snapshot GetParent() const; + Snapshot GetBuildsystemDirectoryParent() const; private: void ComputeRelativePathTopSource(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=942df88bf83e99abbfbd69207369096fa7cf67a2 commit 942df88bf83e99abbfbd69207369096fa7cf67a2 Author: Stephen Kelly AuthorDate: Sat May 23 08:00:46 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:14:34 2015 +0200 cmState: Rename CreateSnapshot method. Leave the namespace open for other snapshot types. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..60498ef 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1619,7 +1619,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, } cmState::Snapshot newSnapshot = this->GetState() - ->CreateSnapshot(this->StateSnapshot); + ->CreateBuildsystemDirectorySnapshot(this->StateSnapshot); // create a new local generator and set its parent cmLocalGenerator *lg2 = this->GetGlobalGenerator() diff --git a/Source/cmState.cxx b/Source/cmState.cxx index eade817..87892b4 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -672,7 +672,8 @@ cmState::Snapshot cmState::CreateBaseSnapshot() return cmState::Snapshot(this, pos); } -cmState::Snapshot cmState::CreateSnapshot(Snapshot originSnapshot) +cmState::Snapshot +cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot) { assert(originSnapshot.IsValid()); PositionType pos = this->ParentPositions.size(); diff --git a/Source/cmState.h b/Source/cmState.h index 157bd90..24e0f7b 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -58,7 +58,7 @@ public: }; Snapshot CreateBaseSnapshot(); - Snapshot CreateSnapshot(Snapshot originSnapshot); + Snapshot CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot); enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC, UNINITIALIZED }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=da28f11523644cdc2138a0cde2c4c015948ff46c commit da28f11523644cdc2138a0cde2c4c015948ff46c Author: Stephen Kelly AuthorDate: Sun May 31 00:18:33 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 3 01:14:33 2015 +0200 cmState: Add CreateBaseSnapshot method. diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 58885d3..eade817 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -659,12 +659,22 @@ void cmState::Snapshot::ComputeRelativePathTopBinary() } } +cmState::Snapshot cmState::CreateBaseSnapshot() +{ + PositionType pos = 0; + this->ParentPositions.push_back(pos); + this->Locations.resize(1); + this->OutputLocations.resize(1); + this->CurrentSourceDirectoryComponents.resize(1); + this->CurrentBinaryDirectoryComponents.resize(1); + this->RelativePathTopSource.resize(1); + this->RelativePathTopBinary.resize(1); + return cmState::Snapshot(this, pos); +} + cmState::Snapshot cmState::CreateSnapshot(Snapshot originSnapshot) { - if (!originSnapshot.IsValid()) - { - originSnapshot.State = this; - } + assert(originSnapshot.IsValid()); PositionType pos = this->ParentPositions.size(); this->ParentPositions.push_back(originSnapshot.Position); this->Locations.resize(this->Locations.size() + 1); diff --git a/Source/cmState.h b/Source/cmState.h index 77a066f..157bd90 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -57,6 +57,7 @@ public: cmState::PositionType Position; }; + Snapshot CreateBaseSnapshot(); Snapshot CreateSnapshot(Snapshot originSnapshot); enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC, diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 23803ef..ee5d53c 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -134,7 +134,7 @@ cmake::cmake() this->Policies = new cmPolicies(); this->State = new cmState(this); - this->CurrentSnapshot = this->State->CreateSnapshot(cmState::Snapshot()); + this->CurrentSnapshot = this->State->CreateBaseSnapshot(); #ifdef __APPLE__ struct rlimit rlp; ----------------------------------------------------------------------- Summary of changes: Source/cmLocalGenerator.cxx | 2 +- Source/cmMakefile.cxx | 5 +++-- Source/cmState.cxx | 27 +++++++++++++++++++-------- Source/cmState.h | 5 +++-- Source/cmake.cxx | 2 +- 5 files changed, 27 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Jun 3 00:01:10 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 3 Jun 2015 00:01:10 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1389-g758392f Message-ID: <20150603040110.D2118B08E1@public.kitware.com> 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, master has been updated via 758392f51f4c1653c2f4dce936fb1a44d86d6a21 (commit) from d3bb5da9294ddbfcc5fddf7ba3dafd2c3e0b32b2 (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=758392f51f4c1653c2f4dce936fb1a44d86d6a21 commit 758392f51f4c1653c2f4dce936fb1a44d86d6a21 Author: Kitware Robot AuthorDate: Wed Jun 3 00:01:08 2015 -0400 Commit: Kitware Robot CommitDate: Wed Jun 3 00:01:08 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 697ea91..c5d412d 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150602) +set(CMake_VERSION_PATCH 20150603) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 08:54:06 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 08:54:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1425-g9e7ae5f Message-ID: <20150603125406.CFA1CAFE93@public.kitware.com> 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 9e7ae5f1be633f3241f635df0a9dcc3465c21348 (commit) via 721b7e3e56f8a9e7f6daf1602dcc5cd85677fc84 (commit) from a2556feeb11dc3b758898bdc8ccd44a063401f7d (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=9e7ae5f1be633f3241f635df0a9dcc3465c21348 commit 9e7ae5f1be633f3241f635df0a9dcc3465c21348 Merge: a2556fe 721b7e3 Author: Brad King AuthorDate: Wed Jun 3 08:54:05 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 3 08:54:05 2015 -0400 Merge topic 'ctest-merge-test-output' into next 721b7e3e CTest: Capture test stdout/stderr through one pipe (#15600) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=721b7e3e56f8a9e7f6daf1602dcc5cd85677fc84 commit 721b7e3e56f8a9e7f6daf1602dcc5cd85677fc84 Author: Brad King AuthorDate: Wed Jun 3 08:47:49 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 08:47:49 2015 -0400 CTest: Capture test stdout/stderr through one pipe (#15600) Use the KWSys Process "MergeOutput" option to give each test child process the same pipe for both stdout and stderr. This allows natural merging of stdout and stderr together instead of merging on arbitrary buffered read boundaries as before. diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index d9e4bd4..d108592 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -57,8 +57,7 @@ bool cmCTestRunTest::CheckOutput() // Process has terminated and all output read. return false; } - else if(p == cmsysProcess_Pipe_STDOUT || - p == cmsysProcess_Pipe_STDERR) + else if(p == cmsysProcess_Pipe_STDOUT) { // Store this line of output. cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx index e1bd02b..0c25f40 100644 --- a/Source/CTest/cmProcess.cxx +++ b/Source/CTest/cmProcess.cxx @@ -62,6 +62,7 @@ bool cmProcess::StartProcess() this->WorkingDirectory.c_str()); } cmsysProcess_SetTimeout(this->Process, this->Timeout); + cmsysProcess_SetOption(this->Process, cmsysProcess_Option_MergeOutput, 1); cmsysProcess_Execute(this->Process); return (cmsysProcess_GetState(this->Process) == cmsysProcess_State_Executing); @@ -124,14 +125,10 @@ int cmProcess::GetNextOutputLine(std::string& line, double timeout) for(;;) { // Look for lines already buffered. - if(this->StdOut.GetLine(line)) + if(this->Output.GetLine(line)) { return cmsysProcess_Pipe_STDOUT; } - else if(this->StdErr.GetLine(line)) - { - return cmsysProcess_Pipe_STDERR; - } // Check for more data from the process. char* data; @@ -143,11 +140,7 @@ int cmProcess::GetNextOutputLine(std::string& line, double timeout) } else if(p == cmsysProcess_Pipe_STDOUT) { - this->StdOut.insert(this->StdOut.end(), data, data+length); - } - else if(p == cmsysProcess_Pipe_STDERR) - { - this->StdErr.insert(this->StdErr.end(), data, data+length); + this->Output.insert(this->Output.end(), data, data+length); } else // p == cmsysProcess_Pipe_None { @@ -157,14 +150,10 @@ int cmProcess::GetNextOutputLine(std::string& line, double timeout) } // Look for partial last lines. - if(this->StdOut.GetLast(line)) + if(this->Output.GetLast(line)) { return cmsysProcess_Pipe_STDOUT; } - else if(this->StdErr.GetLast(line)) - { - return cmsysProcess_Pipe_STDERR; - } // No more data. Wait for process exit. if(!cmsysProcess_WaitForExit(this->Process, &timeout)) diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h index 1479df0..eddeeab 100644 --- a/Source/CTest/cmProcess.h +++ b/Source/CTest/cmProcess.h @@ -48,8 +48,7 @@ public: * Read one line of output but block for no more than timeout. * Returns: * cmsysProcess_Pipe_None = Process terminated and all output read - * cmsysProcess_Pipe_STDOUT = Line came from stdout - * cmsysProcess_Pipe_STDOUT = Line came from stderr + * cmsysProcess_Pipe_STDOUT = Line came from stdout or stderr * cmsysProcess_Pipe_Timeout = Timeout expired while waiting */ int GetNextOutputLine(std::string& line, double timeout); @@ -68,13 +67,11 @@ private: bool GetLine(std::string& line); bool GetLast(std::string& line); }; - Buffer StdErr; - Buffer StdOut; + Buffer Output; std::string Command; std::string WorkingDirectory; std::vector Arguments; std::vector ProcessArgs; - std::string Output; int Id; int ExitValue; }; diff --git a/Tests/RunCMake/CTestCommandLine/MergeOutput-stdout.txt b/Tests/RunCMake/CTestCommandLine/MergeOutput-stdout.txt new file mode 100644 index 0000000..af7cdc5 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/MergeOutput-stdout.txt @@ -0,0 +1,13 @@ +Test timeout computed to be: [^ +]+ +1: -- Output on stdout +1: Output on stderr +1: -- Output on stdout +1: Output on stderr +1: -- Output on stdout +1: Output on stderr +1: -- Output on stdout +1: Output on stderr +1: -- Output on stdout +1: Output on stderr +1/1 Test #1: MergeOutput diff --git a/Tests/RunCMake/CTestCommandLine/MergeOutput.cmake b/Tests/RunCMake/CTestCommandLine/MergeOutput.cmake new file mode 100644 index 0000000..528ac90 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/MergeOutput.cmake @@ -0,0 +1,4 @@ +foreach(i RANGE 1 5) + message(STATUS "Output on stdout") + message("Output on stderr") +endforeach() diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index 0cb11ac..a3ce139 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -39,3 +39,16 @@ subdirs() run_cmake_command(BadCTestTestfile ${CMAKE_CTEST_COMMAND}) endfunction() run_BadCTestTestfile() + +function(run_MergeOutput) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MergeOutput) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " +add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutput.cmake\") +") + + run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) +endfunction() +run_MergeOutput() ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestRunTest.cxx | 3 +-- Source/CTest/cmProcess.cxx | 19 ++++--------------- Source/CTest/cmProcess.h | 7 ++----- .../CTestCommandLine/MergeOutput-stdout.txt | 13 +++++++++++++ .../MergeOutput.cmake | 0 Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 13 +++++++++++++ 6 files changed, 33 insertions(+), 22 deletions(-) create mode 100644 Tests/RunCMake/CTestCommandLine/MergeOutput-stdout.txt copy Tests/RunCMake/{execute_process => CTestCommandLine}/MergeOutput.cmake (100%) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 09:29:38 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 09:29:38 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1428-g4b6cbb7 Message-ID: <20150603132938.8A437B02EA@public.kitware.com> 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 4b6cbb7dfb21f2cb684796a9711d8c8edf312c19 (commit) via 39fc3ed7e0db554818f41c3623bd858e0399dbb0 (commit) via 54a95f5fc66574cd9fff07024cc449b160b5629a (commit) from 9e7ae5f1be633f3241f635df0a9dcc3465c21348 (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=4b6cbb7dfb21f2cb684796a9711d8c8edf312c19 commit 4b6cbb7dfb21f2cb684796a9711d8c8edf312c19 Merge: 9e7ae5f 39fc3ed Author: Brad King AuthorDate: Wed Jun 3 09:29:37 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 3 09:29:37 2015 -0400 Merge topic 'CPackDeb-dpkg-shlibdeps-check-flag' into next 39fc3ed7 CPackDeb: Check dpkg-shlibdeps --ignore-missing-info flag 54a95f5f CPackDeb: Check dpkg-shlibdeps version more robustly http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=39fc3ed7e0db554818f41c3623bd858e0399dbb0 commit 39fc3ed7e0db554818f41c3623bd858e0399dbb0 Author: Brad King AuthorDate: Wed Jun 3 09:23:02 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 09:23:02 2015 -0400 CPackDeb: Check dpkg-shlibdeps --ignore-missing-info flag Check for this flag explicitly in the --help output before using it. It turns out there are some versions of the tool that support --version but not --ignore-missing-info. diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake index 48f6dd1..09cddcd 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/CPackDeb.cmake @@ -399,9 +399,12 @@ function(cpack_deb_prepare_package_vars) file(MAKE_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}/debian) file(WRITE ${CPACK_TEMPORARY_DIRECTORY}/debian/control "") - # only set ignore-missing-info flag for dpkg-shlibdeps that have --version option - # (those are newer and also have --ignore-missing-info flag) - if(SHLIBDEPS_EXECUTABLE_VERSION) + # Add --ignore-missing-info if the tool supports it + execute_process(COMMAND env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --help + OUTPUT_VARIABLE _TMP_HELP + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(_TMP_HELP MATCHES "--ignore-missing-info") set(IGNORE_MISSING_INFO_FLAG "--ignore-missing-info") endif() http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=54a95f5fc66574cd9fff07024cc449b160b5629a commit 54a95f5fc66574cd9fff07024cc449b160b5629a Author: Brad King AuthorDate: Wed Jun 3 09:21:52 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 09:22:27 2015 -0400 CPackDeb: Check dpkg-shlibdeps version more robustly Use if(MATCHES) to verify that a match exists before using the match group variable. diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake index 226153c..48f6dd1 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/CPackDeb.cmake @@ -352,10 +352,11 @@ function(cpack_deb_prepare_package_vars) OUTPUT_VARIABLE _TMP_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX MATCH "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)" - SHLIBDEPS_EXECUTABLE_VERSION - "${_TMP_VERSION}") - set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}") + if(_TMP_VERSION MATCHES "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)") + set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}") + else() + set(SHLIBDEPS_EXECUTABLE_VERSION "") + endif() if(CPACK_DEBIAN_PACKAGE_DEBUG) message("CPackDeb Debug: dpkg-shlibdeps --version output is '${_TMP_VERSION}'") ----------------------------------------------------------------------- Summary of changes: Modules/CPackDeb.cmake | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 11:47:59 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 11:47:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1430-g8b95313 Message-ID: <20150603154759.6D442AFDA9@public.kitware.com> 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 8b953130b0c41258944c9de32f2324dbf8285c30 (commit) via f9d17fe94ccbfbee0c0de0ad405696d1051335be (commit) from 4b6cbb7dfb21f2cb684796a9711d8c8edf312c19 (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=8b953130b0c41258944c9de32f2324dbf8285c30 commit 8b953130b0c41258944c9de32f2324dbf8285c30 Merge: 4b6cbb7 f9d17fe Author: Brad King AuthorDate: Wed Jun 3 11:47:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 3 11:47:58 2015 -0400 Merge topic 'cmMakefile-Configure' into next f9d17fe9 fixup! cmLocalGenerator: Remove 'optional' parameter from Convert. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f9d17fe94ccbfbee0c0de0ad405696d1051335be commit f9d17fe94ccbfbee0c0de0ad405696d1051335be Author: Brad King AuthorDate: Wed Jun 3 11:41:04 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 11:46:12 2015 -0400 fixup! cmLocalGenerator: Remove 'optional' parameter from Convert. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 9e6d9d8..6048dd3 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1124,9 +1124,8 @@ cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, RelativeRoot local, OutputFormat format) { - (void)local; // Perform standard conversion. - std::string result = this->Convert(remote, local, format); + std::string result = this->ConvertToOutputFormat(remote, format); // Consider short-path. return this->ConvertToOutputForExistingCommon(remote, result, format); ----------------------------------------------------------------------- Summary of changes: Source/cmLocalGenerator.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 11:50:39 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 11:50:39 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1444-ga485d7e Message-ID: <20150603155039.6E190AFEC8@public.kitware.com> 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 a485d7e5d7e19f45f2bd01f1b5f0598c0ce670cc (commit) via f88a82607f2394e9ccb8e7fc6bd8e5797ce3d3c8 (commit) via ae4af61668e9ebc38eb8a8e85f5a0af3d6517d89 (commit) via 7805063ac86f4b85350d5a8033cf8d897beaac78 (commit) via 3747f839a66de5f1bc678d3d32867d17ff95703b (commit) via 5571f336c94e580cae30d6dc65aec2b2d92c3b13 (commit) via fe78b21c66c9dc9e3edda70c9ef705c0b005c5bd (commit) via f2b70d0d37492c580a7f76cb6db22c667d35acbd (commit) via f47a1907e683e7dbf09dcce92e314abb34c71d98 (commit) via dcd81731fa862f1914129392c9ad4b216b7ea62c (commit) via 2310dfdc144d32666e05769e2947a61828ee2a2c (commit) via 3d8c6cd9648089c389c1496fb910d664a5773ab4 (commit) via e44e6bcc045916fcab3b3798d9aa9951c35c1878 (commit) via 1335992c8f4e8b96f1a21d5dcc7d65a9fbd84c11 (commit) from 8b953130b0c41258944c9de32f2324dbf8285c30 (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=a485d7e5d7e19f45f2bd01f1b5f0598c0ce670cc commit a485d7e5d7e19f45f2bd01f1b5f0598c0ce670cc Merge: 8b95313 f88a826 Author: Brad King AuthorDate: Wed Jun 3 11:50:23 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 11:50:23 2015 -0400 Merge branch 'cmMakefile-Configure' into next http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f88a82607f2394e9ccb8e7fc6bd8e5797ce3d3c8 commit f88a82607f2394e9ccb8e7fc6bd8e5797ce3d3c8 Author: Stephen Kelly AuthorDate: Wed Jun 3 00:57:31 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:39 2015 -0400 cmMakefile: Introduce a local cmMakefile variable. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ae9fe32..7e103bc 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1685,21 +1685,23 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, ->MakeLocalGenerator(newSnapshot, this->LocalGenerator); this->GetGlobalGenerator()->AddLocalGenerator(lg2); + cmMakefile* subMf = lg2->GetMakefile(); + // set the subdirs start dirs - lg2->GetMakefile()->SetCurrentSourceDirectory(srcPath); - lg2->GetMakefile()->SetCurrentBinaryDirectory(binPath); + subMf->SetCurrentSourceDirectory(srcPath); + subMf->SetCurrentBinaryDirectory(binPath); if(excludeFromAll) { - lg2->GetMakefile()->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); + subMf->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); } if (immediate) { - this->ConfigureSubDirectory(lg2->GetMakefile()); + this->ConfigureSubDirectory(subMf); } else { - this->UnConfiguredDirectories.push_back(lg2->GetMakefile()); + this->UnConfiguredDirectories.push_back(subMf); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ae4af61668e9ebc38eb8a8e85f5a0af3d6517d89 commit ae4af61668e9ebc38eb8a8e85f5a0af3d6517d89 Author: Stephen Kelly AuthorDate: Wed Jun 3 00:55:00 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:39 2015 -0400 cmMakefile: Store unconfigured cmMakefiles. Not cmLocalGenerators. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4079ccf..ae9fe32 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1598,13 +1598,13 @@ void cmMakefile::Configure() this->ProcessBuildsystemFile(currentStart.c_str()); // at the end handle any old style subdirs - std::vector subdirs = this->UnConfiguredDirectories; + std::vector subdirs = this->UnConfiguredDirectories; // for each subdir recurse - std::vector::iterator sdi = subdirs.begin(); + std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - this->ConfigureSubDirectory((*sdi)->GetMakefile()); + this->ConfigureSubDirectory(*sdi); } this->AddCMakeDependFilesFromUser(); @@ -1699,7 +1699,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, } else { - this->UnConfiguredDirectories.push_back(lg2); + this->UnConfiguredDirectories.push_back(lg2->GetMakefile()); } } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 5807707..4174f44 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -922,7 +922,7 @@ private: mutable cmsys::RegularExpression cmAtVarRegex; mutable cmsys::RegularExpression cmNamedCurly; - std::vector UnConfiguredDirectories; + std::vector UnConfiguredDirectories; cmPropertyMap Properties; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7805063ac86f4b85350d5a8033cf8d897beaac78 commit 7805063ac86f4b85350d5a8033cf8d897beaac78 Author: Stephen Kelly AuthorDate: Sat May 30 19:53:02 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:39 2015 -0400 cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 05e80d7..4079ccf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1604,17 +1604,17 @@ void cmMakefile::Configure() std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - this->ConfigureSubDirectory(*sdi); + this->ConfigureSubDirectory((*sdi)->GetMakefile()); } this->AddCMakeDependFilesFromUser(); this->SetConfigured(); } -void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) +void cmMakefile::ConfigureSubDirectory(cmMakefile *mf) { - lg2->GetMakefile()->InitializeFromParent(); - std::string currentStart = lg2->GetMakefile()->GetCurrentSourceDirectory(); + mf->InitializeFromParent(); + std::string currentStart = mf->GetCurrentSourceDirectory(); if (this->GetCMakeInstance()->GetDebugOutput()) { std::string msg=" Entering "; @@ -1652,11 +1652,11 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) // NEW behavior prints the error. this->IssueMessage(cmake::FATAL_ERROR, e.str()); } - lg2->GetMakefile()->SetConfigured(); + mf->SetConfigured(); return; } // finally configure the subdir - lg2->GetMakefile()->Configure(); + mf->Configure(); if (this->GetCMakeInstance()->GetDebugOutput()) { @@ -1695,7 +1695,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, if (immediate) { - this->ConfigureSubDirectory(lg2); + this->ConfigureSubDirectory(lg2->GetMakefile()); } else { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index e36df36..5807707 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -275,7 +275,7 @@ public: /** * Configure a subdirectory */ - void ConfigureSubDirectory(cmLocalGenerator *); + void ConfigureSubDirectory(cmMakefile* mf); /** * Add an include directory to the build. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3747f839a66de5f1bc678d3d32867d17ff95703b commit 3747f839a66de5f1bc678d3d32867d17ff95703b Author: Stephen Kelly AuthorDate: Sat May 30 19:50:58 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:38 2015 -0400 cmMakefile: Move Configure responsibility from cmLocalGenerator. The generator should only have a function at generate time. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 1ee5500..1d11475 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1106,7 +1106,7 @@ void cmGlobalGenerator::Configure() this->CMakeInstance->GetHomeOutputDirectory()); // now do it - lg->Configure(); + lg->GetMakefile()->Configure(); // update the cache entry for the number of local generators, this is used // for progress diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 9ab4a27..6048dd3 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -75,68 +75,6 @@ bool cmLocalGenerator::IsRootMakefile() const } //---------------------------------------------------------------------------- -class cmLocalGeneratorCurrent -{ - cmGlobalGenerator* GG; - cmMakefile* MF; - cmState::Snapshot Snapshot; -public: - cmLocalGeneratorCurrent(cmMakefile* mf) - { - this->GG = mf->GetGlobalGenerator(); - this->MF = this->GG->GetCurrentMakefile(); - this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot( - this->GG->GetCMakeInstance()->GetCurrentSnapshot()); - this->GG->SetCurrentMakefile(mf); -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PushFileScope(); -#endif - } - ~cmLocalGeneratorCurrent() - { -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PopFileScope(); -#endif - this->GG->SetCurrentMakefile(this->MF); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); - } -}; - -//---------------------------------------------------------------------------- -void cmLocalGenerator::Configure() -{ - // Manage the global generator's current local generator. - cmLocalGeneratorCurrent clg(this->GetMakefile()); - static_cast(clg); - - // make sure the CMakeFiles dir is there - std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); - filesDir += cmake::GetCMakeFilesDirectory(); - cmSystemTools::MakeDirectory(filesDir.c_str()); - - std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); - currentStart += "/CMakeLists.txt"; - assert(cmSystemTools::FileExists(currentStart.c_str(), true)); - this->Makefile->ProcessBuildsystemFile(currentStart.c_str()); - - // at the end handle any old style subdirs - std::vector subdirs = - this->GetMakefile()->GetUnConfiguredDirectories(); - - // for each subdir recurse - std::vector::iterator sdi = subdirs.begin(); - for (; sdi != subdirs.end(); ++sdi) - { - this->Makefile->ConfigureSubDirectory(*sdi); - } - - this->Makefile->AddCMakeDependFilesFromUser(); - - this->Makefile->SetConfigured(); -} - -//---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { // Choose a maximum object file name length. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index c972e8f..1359dd6 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -47,12 +47,6 @@ public: virtual void Generate() {} /** - * Process the CMakeLists files for this directory to fill in the - * Makefile ivar - */ - void Configure(); - - /** * Calls TraceVSDependencies() on all targets of this generator. */ void TraceDependencies(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ffc6bf9..05e80d7 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1553,6 +1553,64 @@ void cmMakefile::InitializeFromParent() this->ImportedTargets = parent->ImportedTargets; } +//---------------------------------------------------------------------------- +class cmMakefileCurrent +{ + cmGlobalGenerator* GG; + cmMakefile* MF; + cmState::Snapshot Snapshot; +public: + cmMakefileCurrent(cmMakefile* mf) + { + this->GG = mf->GetGlobalGenerator(); + this->MF = this->GG->GetCurrentMakefile(); + this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PushFileScope(); +#endif + } + ~cmMakefileCurrent() + { +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PopFileScope(); +#endif + this->GG->SetCurrentMakefile(this->MF); + this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); + } +}; + +//---------------------------------------------------------------------------- +void cmMakefile::Configure() +{ + cmMakefileCurrent cmf(this); + + // make sure the CMakeFiles dir is there + std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); + filesDir += cmake::GetCMakeFilesDirectory(); + cmSystemTools::MakeDirectory(filesDir.c_str()); + + std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); + currentStart += "/CMakeLists.txt"; + assert(cmSystemTools::FileExists(currentStart.c_str(), true)); + this->ProcessBuildsystemFile(currentStart.c_str()); + + // at the end handle any old style subdirs + std::vector subdirs = this->UnConfiguredDirectories; + + // for each subdir recurse + std::vector::iterator sdi = subdirs.begin(); + for (; sdi != subdirs.end(); ++sdi) + { + this->ConfigureSubDirectory(*sdi); + } + + this->AddCMakeDependFilesFromUser(); + this->SetConfigured(); +} + void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) { lg2->GetMakefile()->InitializeFromParent(); @@ -1598,15 +1656,7 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) return; } // finally configure the subdir - lg2->Configure(); - - // at the end handle any old style subdirs - for (std::vector::iterator sdi = - this->UnConfiguredDirectories.begin(); - sdi != this->UnConfiguredDirectories.end(); ++sdi) - { - this->ConfigureSubDirectory(*sdi); - } + lg2->GetMakefile()->Configure(); if (this->GetCMakeInstance()->GetDebugOutput()) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 509f5c8..e36df36 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -262,11 +262,6 @@ public: this->LinkDirectories = vec; } - std::vector GetUnConfiguredDirectories() const - { - return this->UnConfiguredDirectories; - } - /** * Add a subdirectory to the build. */ @@ -275,6 +270,8 @@ public: bool excludeFromAll, bool immediate); + void Configure(); + /** * Configure a subdirectory */ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5571f336c94e580cae30d6dc65aec2b2d92c3b13 commit 5571f336c94e580cae30d6dc65aec2b2d92c3b13 Author: Stephen Kelly AuthorDate: Sat May 30 23:50:28 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:38 2015 -0400 cmake: Replace CurrentLocalGenerator concept with CurrentMakefile. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index d1842c1..1ee5500 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -70,7 +70,7 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm) this->TryCompileTimeout = 0; this->ExtraGenerator = 0; - this->CurrentLocalGenerator = 0; + this->CurrentMakefile = 0; this->TryCompileOuterMakefile = 0; } @@ -1281,7 +1281,7 @@ void cmGlobalGenerator::Generate() // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { - this->SetCurrentLocalGenerator(this->LocalGenerators[i]); + this->SetCurrentMakefile(this->LocalGenerators[i]->GetMakefile()); this->LocalGenerators[i]->Generate(); if(!this->LocalGenerators[i]->GetMakefile()->IsOn( "CMAKE_SKIP_INSTALL_RULES")) @@ -1293,7 +1293,7 @@ void cmGlobalGenerator::Generate() (static_cast(i)+1.0f)/ static_cast(this->LocalGenerators.size())); } - this->SetCurrentLocalGenerator(0); + this->SetCurrentMakefile(0); if(!this->GenerateCPackPropertiesFile()) { diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 979e971..d2b8504 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -168,11 +168,13 @@ public: const std::vector& GetLocalGenerators() const { return this->LocalGenerators;} - cmLocalGenerator* GetCurrentLocalGenerator() - {return this->CurrentLocalGenerator;} + cmMakefile* GetCurrentMakefile() const + { + return this->CurrentMakefile; + } - void SetCurrentLocalGenerator(cmLocalGenerator* lg) - {this->CurrentLocalGenerator = lg;} + void SetCurrentMakefile(cmMakefile* mf) + {this->CurrentMakefile = mf;} void AddLocalGenerator(cmLocalGenerator *lg); @@ -406,7 +408,7 @@ protected: std::string ConfiguredFilesPath; cmake *CMakeInstance; std::vector LocalGenerators; - cmLocalGenerator* CurrentLocalGenerator; + cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; std::map > diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 32ef433..9ab4a27 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -78,16 +78,17 @@ bool cmLocalGenerator::IsRootMakefile() const class cmLocalGeneratorCurrent { cmGlobalGenerator* GG; - cmLocalGenerator* LG; + cmMakefile* MF; cmState::Snapshot Snapshot; public: - cmLocalGeneratorCurrent(cmLocalGenerator* lg) + cmLocalGeneratorCurrent(cmMakefile* mf) { - this->GG = lg->GetGlobalGenerator(); - this->LG = this->GG->GetCurrentLocalGenerator(); + this->GG = mf->GetGlobalGenerator(); + this->MF = this->GG->GetCurrentMakefile(); this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(lg->GetStateSnapshot()); - this->GG->SetCurrentLocalGenerator(lg); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PushFileScope(); #endif @@ -97,7 +98,7 @@ public: #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PopFileScope(); #endif - this->GG->SetCurrentLocalGenerator(this->LG); + this->GG->SetCurrentMakefile(this->MF); this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); } }; @@ -106,7 +107,7 @@ public: void cmLocalGenerator::Configure() { // Manage the global generator's current local generator. - cmLocalGeneratorCurrent clg(this); + cmLocalGeneratorCurrent clg(this->GetMakefile()); static_cast(clg); // make sure the CMakeFiles dir is there diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index cbb06cd..fbd2946 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -1215,7 +1215,7 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory, cmLocalGenerator* lg = gg.MakeLocalGenerator(); lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory); lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory); - gg.SetCurrentLocalGenerator(lg); + gg.SetCurrentMakefile(lg->GetMakefile()); this->ReadAutogenInfoFile(lg->GetMakefile(), targetDirectory, config); this->ReadOldMocDefinitionsFile(lg->GetMakefile(), targetDirectory); diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index e5f4700..cc30732 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -113,12 +113,7 @@ static cmMakefile* cmakemainGetMakefile(void *clientdata) cmGlobalGenerator* gg=cm->GetGlobalGenerator(); if (gg) { - cmLocalGenerator* lg=gg->GetCurrentLocalGenerator(); - if (lg) - { - cmMakefile* mf = lg->GetMakefile(); - return mf; - } + return gg->GetCurrentMakefile(); } } return 0; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fe78b21c66c9dc9e3edda70c9ef705c0b005c5bd commit fe78b21c66c9dc9e3edda70c9ef705c0b005c5bd Author: Stephen Kelly AuthorDate: Sat May 30 19:39:08 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:38 2015 -0400 cmMakefile: Refactor directories specified with the subdirs command. Store the directories on the cmMakefile as explicitly not-configured-yet. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index cebc756..32ef433 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -119,18 +119,15 @@ void cmLocalGenerator::Configure() assert(cmSystemTools::FileExists(currentStart.c_str(), true)); this->Makefile->ProcessBuildsystemFile(currentStart.c_str()); - // at the end of the ReadListFile handle any old style subdirs - // first get all the subdirectories - std::vector subdirs = this->GetChildren(); + // at the end handle any old style subdirs + std::vector subdirs = + this->GetMakefile()->GetUnConfiguredDirectories(); // for each subdir recurse std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - if (!(*sdi)->GetMakefile()->IsConfigured()) - { - this->Makefile->ConfigureSubDirectory(*sdi); - } + this->Makefile->ConfigureSubDirectory(*sdi); } this->Makefile->AddCMakeDependFilesFromUser(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d537f34..ffc6bf9 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1599,6 +1599,15 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) } // finally configure the subdir lg2->Configure(); + + // at the end handle any old style subdirs + for (std::vector::iterator sdi = + this->UnConfiguredDirectories.begin(); + sdi != this->UnConfiguredDirectories.end(); ++sdi) + { + this->ConfigureSubDirectory(*sdi); + } + if (this->GetCMakeInstance()->GetDebugOutput()) { std::string msg=" Returning to "; @@ -1638,6 +1647,10 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, { this->ConfigureSubDirectory(lg2); } + else + { + this->UnConfiguredDirectories.push_back(lg2); + } } void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index a45d837..509f5c8 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -262,6 +262,11 @@ public: this->LinkDirectories = vec; } + std::vector GetUnConfiguredDirectories() const + { + return this->UnConfiguredDirectories; + } + /** * Add a subdirectory to the build. */ @@ -920,6 +925,8 @@ private: mutable cmsys::RegularExpression cmAtVarRegex; mutable cmsys::RegularExpression cmNamedCurly; + std::vector UnConfiguredDirectories; + cmPropertyMap Properties; // Unused variable flags http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f2b70d0d37492c580a7f76cb6db22c667d35acbd commit f2b70d0d37492c580a7f76cb6db22c667d35acbd Author: Stephen Kelly AuthorDate: Sat May 30 19:34:09 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:38 2015 -0400 cmLocalGenerator: ComputeObjectMaxPath just before generating. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 4fa7a61..d1842c1 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1223,6 +1223,7 @@ void cmGlobalGenerator::Generate() this->CreateDefaultGlobalTargets(&globalTargets); for (i = 0; i < this->LocalGenerators.size(); ++i) { + this->LocalGenerators[i]->ComputeObjectMaxPath(); cmMakefile* mf = this->LocalGenerators[i]->GetMakefile(); cmTargets* targets = &(mf->GetTargets()); cmTargets::iterator tit; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index d7ea260..cebc756 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -135,8 +135,6 @@ void cmLocalGenerator::Configure() this->Makefile->AddCMakeDependFilesFromUser(); - this->ComputeObjectMaxPath(); - this->Makefile->SetConfigured(); } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 8a1649e..c972e8f 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,6 +383,7 @@ public: bool IsMinGWMake() const; bool IsNMake() const; + void ComputeObjectMaxPath(); protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -428,7 +429,6 @@ protected: std::string& CreateSafeUniqueObjectFileName(const std::string& sin, std::string const& dir_max); - void ComputeObjectMaxPath(); virtual std::string ConvertToLinkReference(std::string const& lib, OutputFormat format = SHELL); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f47a1907e683e7dbf09dcce92e314abb34c71d98 commit f47a1907e683e7dbf09dcce92e314abb34c71d98 Author: Stephen Kelly AuthorDate: Sat May 30 19:26:32 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:37 2015 -0400 Merge Configure state with GeneratingBuildSystem state. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index cd05c54..4fa7a61 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1280,7 +1280,6 @@ void cmGlobalGenerator::Generate() // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { - this->LocalGenerators[i]->GetMakefile()->SetGeneratingBuildSystem(); this->SetCurrentLocalGenerator(this->LocalGenerators[i]); this->LocalGenerators[i]->Generate(); if(!this->LocalGenerators[i]->GetMakefile()->IsOn( diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a35737f..d7ea260 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -59,7 +59,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); this->LinkScriptShell = false; - this->Configured = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; this->BackwardsCompatibilityFinal = false; @@ -128,7 +127,7 @@ void cmLocalGenerator::Configure() std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - if (!(*sdi)->Configured) + if (!(*sdi)->GetMakefile()->IsConfigured()) { this->Makefile->ConfigureSubDirectory(*sdi); } @@ -138,7 +137,7 @@ void cmLocalGenerator::Configure() this->ComputeObjectMaxPath(); - this->Configured = true; + this->Makefile->SetConfigured(); } //---------------------------------------------------------------------------- @@ -3178,11 +3177,6 @@ bool cmLocalGenerator::IsNMake() const return this->GetState()->UseNMake(); } -void cmLocalGenerator::SetConfiguredCMP0014(bool configured) -{ - this->Configured = configured; -} - //---------------------------------------------------------------------------- std::string cmLocalGenerator @@ -3464,7 +3458,7 @@ cmIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility() } } this->BackwardsCompatibility = CMake_VERSION_ENCODE(major, minor, patch); - this->BackwardsCompatibilityFinal = this->Configured; + this->BackwardsCompatibilityFinal = this->Makefile->IsConfigured(); } return this->BackwardsCompatibility; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index b635180..8a1649e 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,8 +383,6 @@ public: bool IsMinGWMake() const; bool IsNMake() const; - void SetConfiguredCMP0014(bool configured); - protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -451,7 +449,6 @@ protected: std::set WarnCMP0063; bool LinkScriptShell; - bool Configured; bool EmitUniversalBinaryFlags; // Hack for ExpandRuleVariable until object-oriented version is diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..d537f34 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -146,7 +146,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); - this->GeneratingBuildSystem = false; + this->Configured = false; this->SuppressWatches = false; // Setup the default include file regular expression (match everything). @@ -1594,7 +1594,7 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) // NEW behavior prints the error. this->IssueMessage(cmake::FATAL_ERROR, e.str()); } - lg2->SetConfiguredCMP0014(true); + lg2->GetMakefile()->SetConfigured(); return; } // finally configure the subdir diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index efd73a1..a45d837 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -781,8 +781,8 @@ public: return this->CompileDefinitionsEntries; } - bool IsGeneratingBuildSystem() const { return this->GeneratingBuildSystem; } - void SetGeneratingBuildSystem(){ this->GeneratingBuildSystem = true; } + bool IsConfigured() const { return this->Configured; } + void SetConfigured(){ this->Configured = true; } void AddQtUiFileWithOptions(cmSourceFile *sf); std::vector GetQtUiFilesWithOptions() const; @@ -994,7 +994,7 @@ private: long line, bool removeEmpty, bool replaceAt) const; - bool GeneratingBuildSystem; + bool Configured; /** * Old version of GetSourceFileWithOutput(const std::string&) kept for * backward-compatibility. It implements a linear search and support diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..1d1dced 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -764,7 +764,7 @@ void cmTarget::GetSourceFiles(std::vector &files, "SOURCES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugSourcesDone = true; } @@ -2106,7 +2106,7 @@ cmTarget::GetIncludeDirectories(const std::string& config, "INCLUDE_DIRECTORIES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugIncludesDone = true; } @@ -2277,7 +2277,7 @@ void cmTarget::GetCompileOptions(std::vector &result, "COMPILE_OPTIONS") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileOptionsDone = true; } @@ -2348,7 +2348,7 @@ void cmTarget::GetCompileDefinitions(std::vector &list, "COMPILE_DEFINITIONS") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileDefinitionsDone = true; } @@ -2449,7 +2449,7 @@ void cmTarget::GetCompileFeatures(std::vector &result, "COMPILE_FEATURES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileFeaturesDone = true; } @@ -4857,7 +4857,7 @@ cmTarget::ReportPropertyOrigin(const std::string &p, p) != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompatiblePropertiesDone[p] = true; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dcd81731fa862f1914129392c9ad4b216b7ea62c commit dcd81731fa862f1914129392c9ad4b216b7ea62c Author: Stephen Kelly AuthorDate: Sat May 30 19:12:38 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:45:37 2015 -0400 cmLocalGenerator: De-virtualize Configure(). The generators that override it do so in order to populate data members which can instead be populated in Generate(). diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index f02b5db..b635180 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -50,7 +50,7 @@ public: * Process the CMakeLists files for this directory to fill in the * Makefile ivar */ - virtual void Configure(); + void Configure(); /** * Calls TraceVSDependencies() on all targets of this generator. diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index c08c91f..427ae10 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -41,6 +41,15 @@ cmLocalNinjaGenerator::~cmLocalNinjaGenerator() void cmLocalNinjaGenerator::Generate() { + // Compute the path to use when referencing the current output + // directory from the top output directory. + this->HomeRelativeOutputPath = + this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); + if(this->HomeRelativeOutputPath == ".") + { + this->HomeRelativeOutputPath = ""; + } + this->SetConfigName(); this->WriteProcessedMakefile(this->GetBuildFileStream()); @@ -91,25 +100,6 @@ void cmLocalNinjaGenerator::Generate() this->WriteCustomCommandBuildStatements(); } -// Implemented in: -// cmLocalUnixMakefileGenerator3. -// Used in: -// Source/cmMakefile.cxx -// Source/cmGlobalGenerator.cxx -void cmLocalNinjaGenerator::Configure() -{ - // Compute the path to use when referencing the current output - // directory from the top output directory. - this->HomeRelativeOutputPath = - this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); - if(this->HomeRelativeOutputPath == ".") - { - this->HomeRelativeOutputPath = ""; - } - this->cmLocalGenerator::Configure(); - -} - // TODO: Picked up from cmLocalUnixMakefileGenerator3. Refactor it. std::string cmLocalNinjaGenerator ::GetTargetDirectory(cmTarget const& target) const diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index 7ae97de..ce966ff 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -38,8 +38,6 @@ public: virtual void Generate(); - virtual void Configure(); - virtual std::string GetTargetDirectory(cmTarget const& target) const; const cmGlobalNinjaGenerator* GetGlobalNinjaGenerator() const; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 3eea59b..c9eea56 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -98,7 +98,7 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3() } //---------------------------------------------------------------------------- -void cmLocalUnixMakefileGenerator3::Configure() +void cmLocalUnixMakefileGenerator3::Generate() { // Compute the path to use when referencing the current output // directory from the top output directory. @@ -112,12 +112,7 @@ void cmLocalUnixMakefileGenerator3::Configure() { this->HomeRelativeOutputPath += "/"; } - this->cmLocalGenerator::Configure(); -} -//---------------------------------------------------------------------------- -void cmLocalUnixMakefileGenerator3::Generate() -{ // Store the configuration name that will be generated. if(const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE")) { diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 988d660..f2a1389 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -40,12 +40,6 @@ public: virtual ~cmLocalUnixMakefileGenerator3(); /** - * Process the CMakeLists files for this directory to fill in the - * Makefile ivar - */ - virtual void Configure(); - - /** * Generate the makefile for this directory. */ virtual void Generate(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2310dfdc144d32666e05769e2947a61828ee2a2c commit 2310dfdc144d32666e05769e2947a61828ee2a2c Author: Stephen Kelly AuthorDate: Mon Jun 1 20:23:11 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:44:27 2015 -0400 cmLocalGenerator: Remove 'optional' parameter from Convert. Port callers away from it. diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index a3ebc61..3102ebc 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -310,14 +310,10 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget() cmCustomCommandLine commandLine; commandLine.push_back(cmSystemTools::GetCMakeCommand()); std::string argH = "-H"; - argH += lg->Convert(mf->GetHomeDirectory(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, true); + argH += mf->GetHomeDirectory(); commandLine.push_back(argH); std::string argB = "-B"; - argB += lg->Convert(mf->GetHomeOutputDirectory(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, true); + argB += mf->GetHomeOutputDirectory(); commandLine.push_back(argB); commandLine.push_back("--check-stamp-list"); commandLine.push_back(stampList.c_str()); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index f35de03..a35737f 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -517,7 +517,7 @@ void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, objectDir = this->Convert(objectDir,START_OUTPUT,SHELL); std::string objectFile = this->Convert(ofname,START_OUTPUT,SHELL); std::string sourceFile = - this->Convert(source.GetFullPath(),START_OUTPUT,SHELL,true); + this->ConvertToOutputFormat(source.GetFullPath(), SHELL); std::string varString = "CMAKE_"; varString += lang; varString += "_COMPILE_OBJECT"; @@ -1177,7 +1177,7 @@ cmLocalGenerator::ConvertToOutputForExistingCommon(const std::string& remote, std::string tmp; if(cmSystemTools::GetShortPath(remote, tmp)) { - return this->Convert(tmp, NONE, format, true); + return this->ConvertToOutputFormat(tmp, format); } } @@ -1192,7 +1192,7 @@ cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, OutputFormat format) { // Perform standard conversion. - std::string result = this->Convert(remote, local, format, true); + std::string result = this->ConvertToOutputFormat(remote, format); // Consider short-path. return this->ConvertToOutputForExistingCommon(remote, result, format); @@ -1312,7 +1312,7 @@ std::string cmLocalGenerator::GetIncludeFlags( includeFlags << fwSearchFlag; } includeFlags << this->Convert(frameworkDir, START_OUTPUT, - shellFormat, true) + shellFormat) << " "; } continue; @@ -2686,42 +2686,39 @@ const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) //---------------------------------------------------------------------------- std::string cmLocalGenerator::Convert(const std::string& source, RelativeRoot relative, - OutputFormat output, - bool optional) + OutputFormat output) { // Convert the path to a relative path. std::string result = source; - if (!optional) + switch (relative) { - switch (relative) - { - case HOME: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->GetState()->GetSourceDirectoryComponents(), result); - break; - case START: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); - break; - case HOME_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->GetState()->GetBinaryDirectoryComponents(), result); - break; - case START_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); - break; - case FULL: - result = cmSystemTools::CollapseFullPath(result); - break; - case NONE: - break; - } + case HOME: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->GetState()->GetSourceDirectoryComponents(), result); + break; + case START: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); + break; + case HOME_OUTPUT: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->GetState()->GetBinaryDirectoryComponents(), result); + break; + case START_OUTPUT: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); + break; + case FULL: + result = cmSystemTools::CollapseFullPath(result); + break; + case NONE: + break; + } return this->ConvertToOutputFormat(result, output); } @@ -2765,8 +2762,7 @@ std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, //---------------------------------------------------------------------------- std::string cmLocalGenerator::Convert(RelativeRoot remote, const std::string& local, - OutputFormat output, - bool optional) + OutputFormat output, bool optional) { const char* remotePath = this->GetRelativeRootPath(remote); diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 30b622e..f02b5db 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -115,8 +115,7 @@ public: std::string ConvertToOutputFormat(const std::string& source, OutputFormat output); std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED, - bool optional = false); + OutputFormat output = UNCHANGED); std::string Convert(RelativeRoot remote, const std::string& local, OutputFormat output = UNCHANGED, bool optional = false); diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index e5f9f55..a26a1dd 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -235,13 +235,10 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt) comment += makefileIn; std::string args; args = "-H"; - args += this->Convert(this->Makefile->GetHomeDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeDirectory(); commandLine.push_back(args); args = "-B"; - args += - this->Convert(this->Makefile->GetHomeOutputDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeOutputDirectory(); commandLine.push_back(args); std::vector const& listFiles = this->Makefile->GetListFiles(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index c565632..717f33f 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -305,13 +305,10 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() comment += makefileIn; std::string args; args = "-H"; - args += this->Convert(this->Makefile->GetHomeDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeDirectory(); commandLine.push_back(args); args = "-B"; - args += - this->Convert(this->Makefile->GetHomeOutputDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeOutputDirectory(); commandLine.push_back(args); commandLine.push_back("--check-stamp-file"); std::string stampFilename = this->Convert(stampName.c_str(), FULL, diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index d422e28..9ac9ddb 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1589,9 +1589,8 @@ std::string cmMakefileTargetGenerator::GetFrameworkFlags(std::string const& l) if(emitted.insert(*i).second) { flags += fwSearchFlag; - flags += this->Convert(*i, - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::SHELL, true); + flags += this->LocalGenerator + ->ConvertToOutputFormat(*i, cmLocalGenerator::SHELL); flags += " "; } } diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 58044e8..2e1b052 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -273,10 +273,9 @@ protected: std::string Convert(const std::string& source, cmLocalGenerator::RelativeRoot relative, cmLocalGenerator::OutputFormat output = - cmLocalGenerator::UNCHANGED, - bool optional = false) + cmLocalGenerator::UNCHANGED) { - return this->LocalGenerator->Convert(source, relative, output, optional); + return this->LocalGenerator->Convert(source, relative, output); } }; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5dfdb14..527524e 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -923,10 +923,7 @@ cmVisualStudio10TargetGenerator::ConvertPath(std::string const& path, return forceRelative ? cmSystemTools::RelativePath( this->Makefile->GetCurrentBinaryDirectory(), path.c_str()) - : this->LocalGenerator->Convert(path.c_str(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, - /* optional = */ true); + : path.c_str(); } void cmVisualStudio10TargetGenerator::ConvertToWindowsSlash(std::string& s) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3d8c6cd9648089c389c1496fb910d664a5773ab4 commit 3d8c6cd9648089c389c1496fb910d664a5773ab4 Author: Stephen Kelly AuthorDate: Mon Jun 1 20:11:53 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:44:26 2015 -0400 cmLocalGenerator: Remove obsolete method. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 84461b1..f35de03 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2670,14 +2670,6 @@ cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, } //---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToOptionallyRelativeOutputPath( - const std::string& remote) -{ - return this->Convert(remote, START_OUTPUT, SHELL, true); -} - -//---------------------------------------------------------------------------- const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) { switch (relroot) diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 03fe9ba..30b622e 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -126,13 +126,6 @@ public: */ const char* GetRelativeRootPath(RelativeRoot relroot); - /** - * Convert the given path to an output path. The - * remote path must use forward slashes and not already be escaped - * or quoted. - */ - std::string ConvertToOptionallyRelativeOutputPath(const std::string& remote); - ///! set/get the parent generator cmLocalGenerator* GetParent() const {return this->Parent;} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e44e6bcc045916fcab3b3798d9aa9951c35c1878 commit e44e6bcc045916fcab3b3798d9aa9951c35c1878 Author: Stephen Kelly AuthorDate: Mon Jun 1 20:07:26 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:44:26 2015 -0400 Port away from obsolete method. diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index ad34857..e5f9f55 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -498,7 +498,7 @@ void cmLocalVisualStudio6Generator // Tell MS-Dev what the source is. If the compiler knows how to // build it, then it will. fout << "SOURCE=" << - this->ConvertToOptionallyRelativeOutputPath(source.c_str()) << "\n\n"; + this->ConvertToOutputFormat(source.c_str(), SHELL) << "\n\n"; if(!depends.empty()) { // Write out the dependencies for the rule. @@ -507,7 +507,7 @@ void cmLocalVisualStudio6Generator d != depends.end(); ++d) { fout << "\\\n\t" << - this->ConvertToOptionallyRelativeOutputPath(d->c_str()); + this->ConvertToOutputFormat(d->c_str(), SHELL); } fout << "\n"; } @@ -663,7 +663,7 @@ cmLocalVisualStudio6Generator if(this->GetRealDependency(d->c_str(), config.c_str(), dep)) { fout << "\\\n\t" << - this->ConvertToOptionallyRelativeOutputPath(dep.c_str()); + this->ConvertToOutputFormat(dep.c_str(), SHELL); } } fout << "\n"; @@ -689,7 +689,7 @@ cmLocalVisualStudio6Generator ++o) { // Write a rule for every output generated by this command. - fout << this->ConvertToOptionallyRelativeOutputPath(o->c_str()) + fout << this->ConvertToOutputFormat(o->c_str(), SHELL) << " : \"$(SOURCE)\" \"$(INTDIR)\" \"$(OUTDIR)\"\n\t"; fout << script.c_str() << "\n\n"; } @@ -906,7 +906,7 @@ cmLocalVisualStudio6Generator::GetTargetIncludeOptions(cmTarget &target, for(i = includes.begin(); i != includes.end(); ++i) { std::string tmp = - this->ConvertToOptionallyRelativeOutputPath(i->c_str()); + this->ConvertToOutputFormat(i->c_str(), SHELL); if(useShortPath) { cmSystemTools::GetShortPath(tmp.c_str(), tmp); @@ -997,14 +997,14 @@ void cmLocalVisualStudio6Generator if(libPath.size()) { std::string lpath = - this->ConvertToOptionallyRelativeOutputPath(libPath.c_str()); + this->ConvertToOutputFormat(libPath.c_str(), SHELL); if(lpath.size() == 0) { lpath = "."; } std::string lpathIntDir = libPath + "$(INTDIR)"; lpathIntDir = - this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str()); + this->ConvertToOutputFormat(lpathIntDir.c_str(), SHELL); if(pathEmitted.insert(lpath).second) { libOptions += " /LIBPATH:"; @@ -1030,14 +1030,14 @@ void cmLocalVisualStudio6Generator if(exePath.size()) { std::string lpath = - this->ConvertToOptionallyRelativeOutputPath(exePath.c_str()); + this->ConvertToOutputFormat(exePath.c_str(), SHELL); if(lpath.size() == 0) { lpath = "."; } std::string lpathIntDir = exePath + "$(INTDIR)"; lpathIntDir = - this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str()); + this->ConvertToOutputFormat(lpathIntDir.c_str(), SHELL); if(pathEmitted.insert(lpath).second) { @@ -1071,14 +1071,14 @@ void cmLocalVisualStudio6Generator path += "/"; } std::string lpath = - this->ConvertToOptionallyRelativeOutputPath(path.c_str()); + this->ConvertToOutputFormat(path.c_str(), SHELL); if(lpath.size() == 0) { lpath = "."; } std::string lpathIntDir = path + "$(INTDIR)"; lpathIntDir = - this->ConvertToOptionallyRelativeOutputPath(lpathIntDir.c_str()); + this->ConvertToOutputFormat(lpathIntDir.c_str(), SHELL); if(pathEmitted.insert(lpath).second) { libOptions += " /LIBPATH:"; @@ -1142,9 +1142,9 @@ void cmLocalVisualStudio6Generator libDebug += ".lib"; } } - lib = this->ConvertToOptionallyRelativeOutputPath(lib.c_str()); + lib = this->ConvertToOutputFormat(lib.c_str(), SHELL); libDebug = - this->ConvertToOptionallyRelativeOutputPath(libDebug.c_str()); + this->ConvertToOutputFormat(libDebug.c_str(), SHELL); if (j->second == cmTarget::GENERAL) { @@ -1367,21 +1367,21 @@ void cmLocalVisualStudio6Generator { #ifdef CM_USE_OLD_VS6 outputDirOld = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath - (target.GetDirectory().c_str())); + removeQuotes(this->ConvertToOutputFormat + (target.GetDirectory().c_str(), SHELL)); #endif outputDirDebug = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("Debug").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("Debug").c_str(), SHELL)); outputDirRelease = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("Release").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("Release").c_str(), SHELL)); outputDirMinSizeRel = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("MinSizeRel").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("MinSizeRel").c_str(), SHELL)); outputDirRelWithDebInfo = - removeQuotes(this->ConvertToOptionallyRelativeOutputPath( - target.GetDirectory("RelWithDebInfo").c_str())); + removeQuotes(this->ConvertToOutputFormat( + target.GetDirectory("RelWithDebInfo").c_str(), SHELL)); } else if(target.GetType() == cmTarget::OBJECT_LIBRARY) { @@ -1449,15 +1449,13 @@ void cmLocalVisualStudio6Generator targetImplibFlagMinSizeRel = "/implib:"; targetImplibFlagRelWithDebInfo = "/implib:"; targetImplibFlagDebug += - this->ConvertToOptionallyRelativeOutputPath(fullPathImpDebug.c_str()); + this->ConvertToOutputFormat(fullPathImpDebug.c_str(), SHELL); targetImplibFlagRelease += - this->ConvertToOptionallyRelativeOutputPath(fullPathImpRelease.c_str()); + this->ConvertToOutputFormat(fullPathImpRelease.c_str(), SHELL); targetImplibFlagMinSizeRel += - this->ConvertToOptionallyRelativeOutputPath( - fullPathImpMinSizeRel.c_str()); + this->ConvertToOutputFormat(fullPathImpMinSizeRel.c_str(), SHELL); targetImplibFlagRelWithDebInfo += - this->ConvertToOptionallyRelativeOutputPath( - fullPathImpRelWithDebInfo.c_str()); + this->ConvertToOutputFormat(fullPathImpRelWithDebInfo.c_str(), SHELL); } #ifdef CM_USE_OLD_VS6 @@ -1669,12 +1667,12 @@ void cmLocalVisualStudio6Generator // to convert to output path for unix to win32 conversion cmSystemTools::ReplaceString (line, "LIBRARY_OUTPUT_PATH", - removeQuotes(this->ConvertToOptionallyRelativeOutputPath - (libPath.c_str())).c_str()); + removeQuotes(this->ConvertToOutputFormat + (libPath.c_str(), SHELL)).c_str()); cmSystemTools::ReplaceString (line, "EXECUTABLE_OUTPUT_PATH", - removeQuotes(this->ConvertToOptionallyRelativeOutputPath - (exePath.c_str())).c_str()); + removeQuotes(this->ConvertToOutputFormat + (exePath.c_str(), SHELL)).c_str()); #endif if(targetBuilds || target.GetType() == cmTarget::OBJECT_LIBRARY) @@ -1884,9 +1882,9 @@ void cmLocalVisualStudio6Generator } dir += "$(IntDir)"; options += "# ADD LINK32 /LIBPATH:"; - options += this->ConvertToOptionallyRelativeOutputPath(dir.c_str()); + options += this->ConvertToOutputFormat(dir.c_str(), SHELL); options += " /LIBPATH:"; - options += this->ConvertToOptionallyRelativeOutputPath(d->c_str()); + options += this->ConvertToOutputFormat(d->c_str(), SHELL); options += "\n"; } } @@ -1897,7 +1895,7 @@ void cmLocalVisualStudio6Generator if(l->IsPath) { options += - this->ConvertToOptionallyRelativeOutputPath(l->Value.c_str()); + this->ConvertToOutputFormat(l->Value.c_str(), SHELL); } else if (!l->Target || l->Target->GetType() != cmTarget::INTERFACE_LIBRARY) @@ -1933,7 +1931,7 @@ void cmLocalVisualStudio6Generator options += "# ADD "; options += tool; options += "32 "; - options += this->ConvertToOptionallyRelativeOutputPath(oi->c_str()); + options += this->ConvertToOutputFormat(oi->c_str(), SHELL); options += "\n"; } } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 9c031cf..c565632 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1087,7 +1087,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, if(!this->ModuleDefinitionFile.empty()) { std::string defFile = - this->ConvertToOptionallyRelativeOutputPath(this->ModuleDefinitionFile); + this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL); linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str()); } switch(target.GetType()) @@ -2234,7 +2234,7 @@ std::string cmLocalVisualStudio7Generator::EscapeForXML(const std::string& s) std::string cmLocalVisualStudio7Generator ::ConvertToXMLOutputPath(const char* path) { - std::string ret = this->ConvertToOptionallyRelativeOutputPath(path); + std::string ret = this->ConvertToOutputFormat(path, SHELL); cmSystemTools::ReplaceString(ret, "&", "&"); cmSystemTools::ReplaceString(ret, "\"", """); cmSystemTools::ReplaceString(ret, "<", "<"); @@ -2245,7 +2245,7 @@ std::string cmLocalVisualStudio7Generator std::string cmLocalVisualStudio7Generator ::ConvertToXMLOutputPathSingle(const char* path) { - std::string ret = this->ConvertToOptionallyRelativeOutputPath(path); + std::string ret = this->ConvertToOutputFormat(path, SHELL); cmSystemTools::ReplaceString(ret, "\"", ""); cmSystemTools::ReplaceString(ret, "&", "&"); cmSystemTools::ReplaceString(ret, "<", "<"); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1335992c8f4e8b96f1a21d5dcc7d65a9fbd84c11 commit 1335992c8f4e8b96f1a21d5dcc7d65a9fbd84c11 Author: Stephen Kelly AuthorDate: Mon Jun 1 19:56:46 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 11:43:31 2015 -0400 Remove CMAKE_USE_RELATIVE_PATHS variable. The test for this variable was removed in commit v2.8.8~330^2~7 (complex: Remove ancient unused ComplexRelativePaths test, 2011-12-23). Commit v3.1.0-rc1~425^2~2 (backtrace: Convert to local paths in IssueMessage, 2014-03-12) appears to have accidentally made some backtraces print relative paths with the variable because conversions which used to be done at configure time, before the variable had an effect are now potentially done at generate time. The documentation of the variable says not to use it, and the docs are wrong in that the variable actually applies in per-directory scope. The read of the variable makes it harder to split conversion methods from cmLocalGenerator where they don't belong. Remove it now. diff --git a/Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst b/Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst new file mode 100644 index 0000000..dd52ace --- /dev/null +++ b/Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst @@ -0,0 +1,5 @@ +remove-CMAKE_USE_RELATIVE_PATHS +------------------------------- + +* The :variable:`CMAKE_USE_RELATIVE_PATHS` variable no longer has any + effect. Previously it was partially implemented and unreliable. diff --git a/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst b/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst index af6f08c..06fe0fb 100644 --- a/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst +++ b/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst @@ -1,10 +1,5 @@ CMAKE_USE_RELATIVE_PATHS ------------------------ -Use relative paths (May not work!). - -If this is set to TRUE, then CMake will use relative paths between the -source and binary tree. This option does not work for more -complicated projects, and relative paths are used when possible. In -general, it is not possible to move CMake generated makefiles to a -different location regardless of the value of this variable. +This variable has no effect. The partially implemented effect it +had in previous releases was removed in CMake 3.4. diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 7464e90..1301e3e 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -3804,33 +3804,13 @@ void cmGlobalXCodeGenerator::GetDocumentation(cmDocumentationEntry& entry) //---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::ConvertToRelativeForMake(const char* p) { - if ( !this->CurrentMakefile->IsOn("CMAKE_USE_RELATIVE_PATHS") ) - { - return cmSystemTools::ConvertToOutputPath(p); - } - else - { - std::string ret = - this->CurrentLocalGenerator-> - ConvertToRelativePath(this->CurrentOutputDirectoryComponents, p); - return cmSystemTools::ConvertToOutputPath(ret.c_str()); - } + return cmSystemTools::ConvertToOutputPath(p); } //---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::ConvertToRelativeForXCode(const char* p) { - if ( !this->CurrentMakefile->IsOn("CMAKE_USE_RELATIVE_PATHS") ) - { - return cmSystemTools::ConvertToOutputPath(p); - } - else - { - std::string ret = - this->CurrentLocalGenerator-> - ConvertToRelativePath(this->ProjectOutputDirectoryComponents, p); - return cmSystemTools::ConvertToOutputPath(ret.c_str()); - } + return cmSystemTools::ConvertToOutputPath(p); } //---------------------------------------------------------------------------- diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index eb6b871..84461b1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -59,7 +59,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); this->LinkScriptShell = false; - this->UseRelativePaths = false; this->Configured = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; @@ -137,10 +136,6 @@ void cmLocalGenerator::Configure() this->Makefile->AddCMakeDependFilesFromUser(); - // Check whether relative paths should be used for optionally - // relative paths. - this->UseRelativePaths = this->Makefile->IsOn("CMAKE_USE_RELATIVE_PATHS"); - this->ComputeObjectMaxPath(); this->Configured = true; @@ -2705,7 +2700,7 @@ std::string cmLocalGenerator::Convert(const std::string& source, // Convert the path to a relative path. std::string result = source; - if (!optional || this->UseRelativePaths) + if (!optional) { switch (relative) { @@ -2786,7 +2781,7 @@ std::string cmLocalGenerator::Convert(RelativeRoot remote, // The relative root must have a path (i.e. not FULL or NONE) assert(remotePath != 0); - if(!local.empty() && (!optional || this->UseRelativePaths)) + if(!local.empty() && !optional) { std::vector components; cmSystemTools::SplitPath(local, components); diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 32b17f5..03fe9ba 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -127,8 +127,7 @@ public: const char* GetRelativeRootPath(RelativeRoot relroot); /** - * Convert the given path to an output path that is optionally - * relative based on the cache option CMAKE_USE_RELATIVE_PATHS. The + * Convert the given path to an output path. The * remote path must use forward slashes and not already be escaped * or quoted. */ @@ -460,7 +459,6 @@ protected: std::set WarnCMP0063; bool LinkScriptShell; - bool UseRelativePaths; bool Configured; bool EmitUniversalBinaryFlags; diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7b88bc7..d422e28 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -614,13 +614,7 @@ cmMakefileTargetGenerator } // Get the output paths for source and object files. - std::string sourceFile = source.GetFullPath(); - if(this->LocalGenerator->UseRelativePaths) - { - sourceFile = this->Convert(sourceFile, - cmLocalGenerator::START_OUTPUT); - } - sourceFile = this->Convert(sourceFile, + std::string sourceFile = this->Convert(source.GetFullPath(), cmLocalGenerator::NONE, cmLocalGenerator::SHELL); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 23803ef..e3fec5f 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1437,20 +1437,6 @@ int cmake::ActualConfigure() cmState::PATH); } } - if(!this->State - ->GetInitializedCacheValue("CMAKE_USE_RELATIVE_PATHS")) - { - this->State->AddCacheEntry - ("CMAKE_USE_RELATIVE_PATHS", "OFF", - "If true, cmake will use relative paths in makefiles and projects.", - cmState::BOOL); - if (!this->State->GetCacheEntryProperty("CMAKE_USE_RELATIVE_PATHS", - "ADVANCED")) - { - this->State->SetCacheEntryProperty("CMAKE_USE_RELATIVE_PATHS", - "ADVANCED", "1"); - } - } if(cmSystemTools::GetFatalErrorOccured()) { ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 12:27:44 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 12:27:44 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1446-g291c024 Message-ID: <20150603162744.1832BB01B6@public.kitware.com> 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 291c02429ce1df2e0d080c85562319d8a9fc5d9c (commit) via 6769105151ee3e30b51d82f4b837e50a530b7cc0 (commit) from a485d7e5d7e19f45f2bd01f1b5f0598c0ce670cc (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=291c02429ce1df2e0d080c85562319d8a9fc5d9c commit 291c02429ce1df2e0d080c85562319d8a9fc5d9c Merge: a485d7e 6769105 Author: Brad King AuthorDate: Wed Jun 3 12:27:43 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 3 12:27:43 2015 -0400 Merge topic 'remove-CMAKE_USE_RELATIVE_PATHS' into next 67691051 fixup! cmLocalGenerator: Remove 'optional' parameter from Convert. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6769105151ee3e30b51d82f4b837e50a530b7cc0 commit 6769105151ee3e30b51d82f4b837e50a530b7cc0 Author: Brad King AuthorDate: Wed Jun 3 12:27:21 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 12:27:21 2015 -0400 fixup! cmLocalGenerator: Remove 'optional' parameter from Convert. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a35737f..a39d940 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1191,6 +1191,8 @@ cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, RelativeRoot local, OutputFormat format) { + static_cast(local); + // Perform standard conversion. std::string result = this->ConvertToOutputFormat(remote, format); ----------------------------------------------------------------------- Summary of changes: Source/cmLocalGenerator.cxx | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 12:31:18 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 12:31:18 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1448-gb094dc5 Message-ID: <20150603163118.6503BB0258@public.kitware.com> 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 b094dc58b8bab0f594c517092d1a52e9b7641ec1 (commit) via 8146700588e76aee4c02dd16bfb5f786d7d3a8e4 (commit) from 291c02429ce1df2e0d080c85562319d8a9fc5d9c (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=b094dc58b8bab0f594c517092d1a52e9b7641ec1 commit b094dc58b8bab0f594c517092d1a52e9b7641ec1 Merge: 291c024 8146700 Author: Brad King AuthorDate: Wed Jun 3 12:31:17 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 3 12:31:17 2015 -0400 Merge topic 'vs-deterministic-guid' into next 81467005 fixup! VS: Compute project GUIDs deterministically http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8146700588e76aee4c02dd16bfb5f786d7d3a8e4 commit 8146700588e76aee4c02dd16bfb5f786d7d3a8e4 Author: Brad King AuthorDate: Wed Jun 3 12:30:52 2015 -0400 Commit: Brad King CommitDate: Wed Jun 3 12:30:52 2015 -0400 fixup! VS: Compute project GUIDs deterministically diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 627f07a..28a74cb 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -82,8 +82,6 @@ void cmLocalVisualStudio7Generator::AddHelperCommands() // Now create GUIDs for targets cmTargets &tgts = this->Makefile->GetTargets(); - cmGlobalVisualStudio7Generator* gg = - static_cast(this->GlobalGenerator); for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) { if(l->second.GetType() == cmTarget::INTERFACE_LIBRARY) ----------------------------------------------------------------------- Summary of changes: Source/cmLocalVisualStudio7Generator.cxx | 2 -- 1 file changed, 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 3 14:30:16 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 3 Jun 2015 14:30:16 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1450-g54818a4 Message-ID: <20150603183016.D4464B01F3@public.kitware.com> 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 54818a44c0d7e5b076b6c6d0dc15413167293297 (commit) via 81270fc8fd58da00bde1e25334fdfc6f2e6f1302 (commit) from b094dc58b8bab0f594c517092d1a52e9b7641ec1 (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=54818a44c0d7e5b076b6c6d0dc15413167293297 commit 54818a44c0d7e5b076b6c6d0dc15413167293297 Merge: b094dc5 81270fc Author: Brad King AuthorDate: Wed Jun 3 14:30:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 3 14:30:16 2015 -0400 Merge topic 'remove-CMAKE_USE_RELATIVE_PATHS' into next 81270fc8 fixup! cmLocalGenerator: Remove 'optional' parameter from Convert. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=81270fc8fd58da00bde1e25334fdfc6f2e6f1302 commit 81270fc8fd58da00bde1e25334fdfc6f2e6f1302 Author: Stephen Kelly AuthorDate: Wed Jun 3 20:08:25 2015 +0200 Commit: Brad King CommitDate: Wed Jun 3 14:28:12 2015 -0400 fixup! cmLocalGenerator: Remove 'optional' parameter from Convert. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a39d940..c686ab1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1313,8 +1313,7 @@ std::string cmLocalGenerator::GetIncludeFlags( { includeFlags << fwSearchFlag; } - includeFlags << this->Convert(frameworkDir, START_OUTPUT, - shellFormat) + includeFlags << this->ConvertToOutputFormat(frameworkDir, shellFormat) << " "; } continue; ----------------------------------------------------------------------- Summary of changes: Source/cmLocalGenerator.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Jun 4 00:01:08 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 4 Jun 2015 00:01:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1390-g0cc7c9a Message-ID: <20150604040108.9F70CB02B6@public.kitware.com> 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, master has been updated via 0cc7c9a74368d1db8acc1a98dec79a1eb472e74b (commit) from 758392f51f4c1653c2f4dce936fb1a44d86d6a21 (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=0cc7c9a74368d1db8acc1a98dec79a1eb472e74b commit 0cc7c9a74368d1db8acc1a98dec79a1eb472e74b Author: Kitware Robot AuthorDate: Thu Jun 4 00:01:06 2015 -0400 Commit: Kitware Robot CommitDate: Thu Jun 4 00:01:06 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index c5d412d..a4c877e 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150603) +set(CMake_VERSION_PATCH 20150604) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 08:40:29 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 08:40:29 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1452-gc4cf686 Message-ID: <20150604124030.2597EADF69@public.kitware.com> 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 c4cf686c9c5fe59e79ef0bb0e706c70748fd62cd (commit) via c85367f408befa419185a4fec4816ea0ee3e1ee6 (commit) from 54818a44c0d7e5b076b6c6d0dc15413167293297 (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=c4cf686c9c5fe59e79ef0bb0e706c70748fd62cd commit c4cf686c9c5fe59e79ef0bb0e706c70748fd62cd Merge: 54818a4 c85367f Author: Brad King AuthorDate: Thu Jun 4 08:40:27 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 08:40:27 2015 -0400 Merge topic 'vs-deterministic-guid' into next c85367f4 VS: Compute project GUIDs deterministically http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c85367f408befa419185a4fec4816ea0ee3e1ee6 commit c85367f408befa419185a4fec4816ea0ee3e1ee6 Author: Brad King AuthorDate: Tue Jun 2 11:49:07 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 08:40:08 2015 -0400 VS: Compute project GUIDs deterministically Compute deterministic GUIDs that are unique to the build tree by hashing the path to the build tree with the GUID logical name. Avoid storing them in the cache, but honor any found there. This will allow project GUIDs to be reproduced in a fresh build tree so long as its path is the same as the original, which may be useful for incremental builds. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 979e971..598f6ad 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -310,8 +310,6 @@ public: { return this->BinaryDirectories.insert(dir).second; } - /** Supported systems creates a GUID for the given name */ - virtual void CreateGUID(const std::string&) {} /** Return true if the generated build tree may contain multiple builds. i.e. "Can I build Debug and Release in the same tree?" */ diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 4dd54d0..a242046 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -513,8 +513,6 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( cumulativePath = cumulativePath + "/" + *iter; } - - this->CreateGUID(cumulativePath.c_str()); } if (!cumulativePath.empty()) @@ -899,7 +897,6 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend(cmTarget const* target) fname += ".vcproj"; cmGeneratedFileStream fout(fname.c_str()); fout.SetCopyIfDifferent(true); - this->CreateGUID(pname.c_str()); std::string guid = this->GetGUID(pname.c_str()); fout << @@ -943,41 +940,28 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend(cmTarget const* target) return pname; } -std::string cmGlobalVisualStudio7Generator::GetGUID(const std::string& name) +//---------------------------------------------------------------------------- +std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) { - std::string guidStoreName = name; - guidStoreName += "_GUID_CMAKE"; - const char* storedGUID = - this->CMakeInstance->GetCacheDefinition(guidStoreName.c_str()); - if(storedGUID) + std::string const& guidStoreName = name + "_GUID_CMAKE"; + if (const char* storedGUID = + this->CMakeInstance->GetCacheDefinition(guidStoreName.c_str())) { return std::string(storedGUID); } - cmSystemTools::Error("Unknown Target referenced : ", - name.c_str()); - return ""; -} - - -void cmGlobalVisualStudio7Generator::CreateGUID(const std::string& name) -{ - std::string guidStoreName = name; - guidStoreName += "_GUID_CMAKE"; - if(this->CMakeInstance->GetCacheDefinition(guidStoreName.c_str())) - { - return; - } - std::string ret; - UUID uid; - unsigned short *uidstr; - UuidCreate(&uid); - UuidToStringW(&uid,&uidstr); - ret = cmsys::Encoding::ToNarrow(reinterpret_cast(uidstr)); - RpcStringFreeW(&uidstr); - ret = cmSystemTools::UpperCase(ret); - this->CMakeInstance->AddCacheEntry(guidStoreName.c_str(), - ret.c_str(), "Stored GUID", - cmState::INTERNAL); + // Compute a GUID that is deterministic but unique to the build tree. + std::string input = this->CMakeInstance->GetState()->GetBinaryDirectory(); + input += "|"; + input += name; + std::string md5 = cmSystemTools::ComputeStringMD5(input); + assert(md5.length() == 32); + std::string const& guid = + (md5.substr( 0,8)+"-"+ + md5.substr( 8,4)+"-"+ + md5.substr(12,4)+"-"+ + md5.substr(16,4)+"-"+ + md5.substr(20,12)); + return cmSystemTools::UpperCase(guid); } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index c98d269..931ac9c 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -80,9 +80,8 @@ public: */ virtual void OutputSLNFile(); - ///! Create a GUID or get an existing one. - void CreateGUID(const std::string& name); - std::string GetGUID(const std::string& name); + ///! Lookup a stored GUID or compute one deterministically. + std::string GetGUID(std::string const& name); /** Append the subdirectory for the given configuration. */ virtual void AppendDirectoryForConfig(const std::string& prefix, diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index a3ebc61..d24066f 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -185,7 +185,6 @@ void cmGlobalVisualStudio8Generator void cmGlobalVisualStudio8Generator::Configure() { this->cmGlobalVisualStudio7Generator::Configure(); - this->CreateGUID(CMAKE_CHECK_BUILD_SYSTEM_TARGET); } //---------------------------------------------------------------------------- diff --git a/Source/cmLocalVisualStudio10Generator.cxx b/Source/cmLocalVisualStudio10Generator.cxx index ad6a020..9ded83a 100644 --- a/Source/cmLocalVisualStudio10Generator.cxx +++ b/Source/cmLocalVisualStudio10Generator.cxx @@ -107,10 +107,9 @@ void cmLocalVisualStudio10Generator cmVS10XMLParser parser; parser.ParseFile(path); - // if we can not find a GUID then create one + // if we can not find a GUID then we will generate one later if(parser.GUID.empty()) { - this->GlobalGenerator->CreateGUID(name); return; } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 9c031cf..28a74cb 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -82,8 +82,6 @@ void cmLocalVisualStudio7Generator::AddHelperCommands() // Now create GUIDs for targets cmTargets &tgts = this->Makefile->GetTargets(); - cmGlobalVisualStudio7Generator* gg = - static_cast(this->GlobalGenerator); for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) { if(l->second.GetType() == cmTarget::INTERFACE_LIBRARY) @@ -96,10 +94,6 @@ void cmLocalVisualStudio7Generator::AddHelperCommands() this->ReadAndStoreExternalGUID( l->second.GetName().c_str(), path); } - else - { - gg->CreateGUID(l->first.c_str()); - } } @@ -2312,12 +2306,9 @@ void cmLocalVisualStudio7Generator::ReadAndStoreExternalGUID( { cmVS7XMLParser parser; parser.ParseFile(path); - // if we can not find a GUID then create one + // if we can not find a GUID then we will generate one later if(parser.GUID.size() == 0) { - cmGlobalVisualStudio7Generator* gg = - static_cast(this->GlobalGenerator); - gg->CreateGUID(name); return; } std::string guidStoreName = name; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..137c28b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2116,25 +2116,10 @@ void cmMakefile::AddSourceGroup(const std::vector& name, return; } // build the whole source group path - const char* fullname = sg->GetFullName(); - cmGlobalGenerator* gg = this->GetGlobalGenerator(); - if(strlen(fullname)) - { - std::string guidName = "SG_Filter_"; - guidName += fullname; - gg->CreateGUID(guidName); - } for(++i; i<=lastElement; ++i) { sg->AddChild(cmSourceGroup(name[i].c_str(), 0, sg->GetFullName())); sg = sg->LookupChild(name[i].c_str()); - fullname = sg->GetFullName(); - if(strlen(fullname)) - { - std::string guidName = "SG_Filter_"; - guidName += fullname; - gg->CreateGUID(guidName); - } } sg->SetGroupRegex(regex); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5dfdb14..0be1335 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -178,7 +178,6 @@ cmVisualStudio10TargetGenerator(cmTarget* target, (cmLocalVisualStudio7Generator*) this->Makefile->GetLocalGenerator(); this->Name = this->Target->GetName(); - this->GlobalGenerator->CreateGUID(this->Name.c_str()); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); this->NsightTegra = gg->IsNsightTegra(); @@ -1084,7 +1083,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() (*this->BuildFileStream) << name << "\">\n"; std::string guidName = "SG_Filter_"; guidName += name; - this->GlobalGenerator->CreateGUID(guidName.c_str()); this->WriteString("", 3); std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); @@ -1099,7 +1097,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() { this->WriteString("\n", 2); std::string guidName = "SG_Filter_Object Libraries"; - this->GlobalGenerator->CreateGUID(guidName.c_str()); this->WriteString("", 3); std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); @@ -1112,7 +1109,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() { this->WriteString("\n", 2); std::string guidName = "SG_Filter_Resource Files"; - this->GlobalGenerator->CreateGUID(guidName.c_str()); this->WriteString("", 3); std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:07:31 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:07:31 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1463-g8af6a3f Message-ID: <20150604130732.025E7B04BA@public.kitware.com> 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 8af6a3f58bcf8d9b6b6754e80d3f82b3d29ec896 (commit) via 7657e8b1df64ed3b5429be34416e8756b659d525 (commit) via 4e8f242d170ab46d4071254a3a81f7db264b8bc7 (commit) via d65e01235da2473e669d6e5c40988ad4015f0dc4 (commit) via f059ed165bafff94f9bcd3823e12a8ce1f5ec647 (commit) via a653611db0d6e23456c5ef90f95e19ea5d70a428 (commit) via 69a038a9e90a8839b69f4cb8826688be611e8b0d (commit) via 0863797037b82f01cb356cb2cd4cdcef7ca8ae48 (commit) via 27e11c6fea8e863b59c0fdfd63f1e9f2528dbac4 (commit) via 363caa2fa540190ea394122fca3cb72d951823ad (commit) via 6e570f857acd3322640db72112f2dc37b69396cf (commit) from c4cf686c9c5fe59e79ef0bb0e706c70748fd62cd (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=8af6a3f58bcf8d9b6b6754e80d3f82b3d29ec896 commit 8af6a3f58bcf8d9b6b6754e80d3f82b3d29ec896 Merge: c4cf686 7657e8b Author: Brad King AuthorDate: Thu Jun 4 09:07:09 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 09:07:09 2015 -0400 Merge branch 'cmMakefile-Configure' into next http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7657e8b1df64ed3b5429be34416e8756b659d525 commit 7657e8b1df64ed3b5429be34416e8756b659d525 Author: Stephen Kelly AuthorDate: Wed Jun 3 00:57:31 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:42 2015 -0400 cmMakefile: Introduce a local cmMakefile variable. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ae9fe32..7e103bc 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1685,21 +1685,23 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, ->MakeLocalGenerator(newSnapshot, this->LocalGenerator); this->GetGlobalGenerator()->AddLocalGenerator(lg2); + cmMakefile* subMf = lg2->GetMakefile(); + // set the subdirs start dirs - lg2->GetMakefile()->SetCurrentSourceDirectory(srcPath); - lg2->GetMakefile()->SetCurrentBinaryDirectory(binPath); + subMf->SetCurrentSourceDirectory(srcPath); + subMf->SetCurrentBinaryDirectory(binPath); if(excludeFromAll) { - lg2->GetMakefile()->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); + subMf->SetProperty("EXCLUDE_FROM_ALL", "TRUE"); } if (immediate) { - this->ConfigureSubDirectory(lg2->GetMakefile()); + this->ConfigureSubDirectory(subMf); } else { - this->UnConfiguredDirectories.push_back(lg2->GetMakefile()); + this->UnConfiguredDirectories.push_back(subMf); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4e8f242d170ab46d4071254a3a81f7db264b8bc7 commit 4e8f242d170ab46d4071254a3a81f7db264b8bc7 Author: Stephen Kelly AuthorDate: Wed Jun 3 00:55:00 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:42 2015 -0400 cmMakefile: Store unconfigured cmMakefiles. Not cmLocalGenerators. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4079ccf..ae9fe32 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1598,13 +1598,13 @@ void cmMakefile::Configure() this->ProcessBuildsystemFile(currentStart.c_str()); // at the end handle any old style subdirs - std::vector subdirs = this->UnConfiguredDirectories; + std::vector subdirs = this->UnConfiguredDirectories; // for each subdir recurse - std::vector::iterator sdi = subdirs.begin(); + std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - this->ConfigureSubDirectory((*sdi)->GetMakefile()); + this->ConfigureSubDirectory(*sdi); } this->AddCMakeDependFilesFromUser(); @@ -1699,7 +1699,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, } else { - this->UnConfiguredDirectories.push_back(lg2); + this->UnConfiguredDirectories.push_back(lg2->GetMakefile()); } } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 5807707..4174f44 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -922,7 +922,7 @@ private: mutable cmsys::RegularExpression cmAtVarRegex; mutable cmsys::RegularExpression cmNamedCurly; - std::vector UnConfiguredDirectories; + std::vector UnConfiguredDirectories; cmPropertyMap Properties; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d65e01235da2473e669d6e5c40988ad4015f0dc4 commit d65e01235da2473e669d6e5c40988ad4015f0dc4 Author: Stephen Kelly AuthorDate: Sat May 30 19:53:02 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:42 2015 -0400 cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 05e80d7..4079ccf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1604,17 +1604,17 @@ void cmMakefile::Configure() std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - this->ConfigureSubDirectory(*sdi); + this->ConfigureSubDirectory((*sdi)->GetMakefile()); } this->AddCMakeDependFilesFromUser(); this->SetConfigured(); } -void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) +void cmMakefile::ConfigureSubDirectory(cmMakefile *mf) { - lg2->GetMakefile()->InitializeFromParent(); - std::string currentStart = lg2->GetMakefile()->GetCurrentSourceDirectory(); + mf->InitializeFromParent(); + std::string currentStart = mf->GetCurrentSourceDirectory(); if (this->GetCMakeInstance()->GetDebugOutput()) { std::string msg=" Entering "; @@ -1652,11 +1652,11 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) // NEW behavior prints the error. this->IssueMessage(cmake::FATAL_ERROR, e.str()); } - lg2->GetMakefile()->SetConfigured(); + mf->SetConfigured(); return; } // finally configure the subdir - lg2->GetMakefile()->Configure(); + mf->Configure(); if (this->GetCMakeInstance()->GetDebugOutput()) { @@ -1695,7 +1695,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, if (immediate) { - this->ConfigureSubDirectory(lg2); + this->ConfigureSubDirectory(lg2->GetMakefile()); } else { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index e36df36..5807707 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -275,7 +275,7 @@ public: /** * Configure a subdirectory */ - void ConfigureSubDirectory(cmLocalGenerator *); + void ConfigureSubDirectory(cmMakefile* mf); /** * Add an include directory to the build. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f059ed165bafff94f9bcd3823e12a8ce1f5ec647 commit f059ed165bafff94f9bcd3823e12a8ce1f5ec647 Author: Stephen Kelly AuthorDate: Sat May 30 19:50:58 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:41 2015 -0400 cmMakefile: Move Configure responsibility from cmLocalGenerator. The generator should only have a function at generate time. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 1ee5500..1d11475 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1106,7 +1106,7 @@ void cmGlobalGenerator::Configure() this->CMakeInstance->GetHomeOutputDirectory()); // now do it - lg->Configure(); + lg->GetMakefile()->Configure(); // update the cache entry for the number of local generators, this is used // for progress diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 4b9415b..8fcc2ec 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -75,68 +75,6 @@ bool cmLocalGenerator::IsRootMakefile() const } //---------------------------------------------------------------------------- -class cmLocalGeneratorCurrent -{ - cmGlobalGenerator* GG; - cmMakefile* MF; - cmState::Snapshot Snapshot; -public: - cmLocalGeneratorCurrent(cmMakefile* mf) - { - this->GG = mf->GetGlobalGenerator(); - this->MF = this->GG->GetCurrentMakefile(); - this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot( - this->GG->GetCMakeInstance()->GetCurrentSnapshot()); - this->GG->SetCurrentMakefile(mf); -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PushFileScope(); -#endif - } - ~cmLocalGeneratorCurrent() - { -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PopFileScope(); -#endif - this->GG->SetCurrentMakefile(this->MF); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); - } -}; - -//---------------------------------------------------------------------------- -void cmLocalGenerator::Configure() -{ - // Manage the global generator's current local generator. - cmLocalGeneratorCurrent clg(this->GetMakefile()); - static_cast(clg); - - // make sure the CMakeFiles dir is there - std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); - filesDir += cmake::GetCMakeFilesDirectory(); - cmSystemTools::MakeDirectory(filesDir.c_str()); - - std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); - currentStart += "/CMakeLists.txt"; - assert(cmSystemTools::FileExists(currentStart.c_str(), true)); - this->Makefile->ProcessBuildsystemFile(currentStart.c_str()); - - // at the end handle any old style subdirs - std::vector subdirs = - this->GetMakefile()->GetUnConfiguredDirectories(); - - // for each subdir recurse - std::vector::iterator sdi = subdirs.begin(); - for (; sdi != subdirs.end(); ++sdi) - { - this->Makefile->ConfigureSubDirectory(*sdi); - } - - this->Makefile->AddCMakeDependFilesFromUser(); - - this->Makefile->SetConfigured(); -} - -//---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { // Choose a maximum object file name length. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index c972e8f..1359dd6 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -47,12 +47,6 @@ public: virtual void Generate() {} /** - * Process the CMakeLists files for this directory to fill in the - * Makefile ivar - */ - void Configure(); - - /** * Calls TraceVSDependencies() on all targets of this generator. */ void TraceDependencies(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ffc6bf9..05e80d7 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1553,6 +1553,64 @@ void cmMakefile::InitializeFromParent() this->ImportedTargets = parent->ImportedTargets; } +//---------------------------------------------------------------------------- +class cmMakefileCurrent +{ + cmGlobalGenerator* GG; + cmMakefile* MF; + cmState::Snapshot Snapshot; +public: + cmMakefileCurrent(cmMakefile* mf) + { + this->GG = mf->GetGlobalGenerator(); + this->MF = this->GG->GetCurrentMakefile(); + this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PushFileScope(); +#endif + } + ~cmMakefileCurrent() + { +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PopFileScope(); +#endif + this->GG->SetCurrentMakefile(this->MF); + this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); + } +}; + +//---------------------------------------------------------------------------- +void cmMakefile::Configure() +{ + cmMakefileCurrent cmf(this); + + // make sure the CMakeFiles dir is there + std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); + filesDir += cmake::GetCMakeFilesDirectory(); + cmSystemTools::MakeDirectory(filesDir.c_str()); + + std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); + currentStart += "/CMakeLists.txt"; + assert(cmSystemTools::FileExists(currentStart.c_str(), true)); + this->ProcessBuildsystemFile(currentStart.c_str()); + + // at the end handle any old style subdirs + std::vector subdirs = this->UnConfiguredDirectories; + + // for each subdir recurse + std::vector::iterator sdi = subdirs.begin(); + for (; sdi != subdirs.end(); ++sdi) + { + this->ConfigureSubDirectory(*sdi); + } + + this->AddCMakeDependFilesFromUser(); + this->SetConfigured(); +} + void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) { lg2->GetMakefile()->InitializeFromParent(); @@ -1598,15 +1656,7 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) return; } // finally configure the subdir - lg2->Configure(); - - // at the end handle any old style subdirs - for (std::vector::iterator sdi = - this->UnConfiguredDirectories.begin(); - sdi != this->UnConfiguredDirectories.end(); ++sdi) - { - this->ConfigureSubDirectory(*sdi); - } + lg2->GetMakefile()->Configure(); if (this->GetCMakeInstance()->GetDebugOutput()) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 509f5c8..e36df36 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -262,11 +262,6 @@ public: this->LinkDirectories = vec; } - std::vector GetUnConfiguredDirectories() const - { - return this->UnConfiguredDirectories; - } - /** * Add a subdirectory to the build. */ @@ -275,6 +270,8 @@ public: bool excludeFromAll, bool immediate); + void Configure(); + /** * Configure a subdirectory */ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a653611db0d6e23456c5ef90f95e19ea5d70a428 commit a653611db0d6e23456c5ef90f95e19ea5d70a428 Author: Stephen Kelly AuthorDate: Sat May 30 23:50:28 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:41 2015 -0400 cmake: Replace CurrentLocalGenerator concept with CurrentMakefile. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index d1842c1..1ee5500 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -70,7 +70,7 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm) this->TryCompileTimeout = 0; this->ExtraGenerator = 0; - this->CurrentLocalGenerator = 0; + this->CurrentMakefile = 0; this->TryCompileOuterMakefile = 0; } @@ -1281,7 +1281,7 @@ void cmGlobalGenerator::Generate() // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { - this->SetCurrentLocalGenerator(this->LocalGenerators[i]); + this->SetCurrentMakefile(this->LocalGenerators[i]->GetMakefile()); this->LocalGenerators[i]->Generate(); if(!this->LocalGenerators[i]->GetMakefile()->IsOn( "CMAKE_SKIP_INSTALL_RULES")) @@ -1293,7 +1293,7 @@ void cmGlobalGenerator::Generate() (static_cast(i)+1.0f)/ static_cast(this->LocalGenerators.size())); } - this->SetCurrentLocalGenerator(0); + this->SetCurrentMakefile(0); if(!this->GenerateCPackPropertiesFile()) { diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 979e971..d2b8504 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -168,11 +168,13 @@ public: const std::vector& GetLocalGenerators() const { return this->LocalGenerators;} - cmLocalGenerator* GetCurrentLocalGenerator() - {return this->CurrentLocalGenerator;} + cmMakefile* GetCurrentMakefile() const + { + return this->CurrentMakefile; + } - void SetCurrentLocalGenerator(cmLocalGenerator* lg) - {this->CurrentLocalGenerator = lg;} + void SetCurrentMakefile(cmMakefile* mf) + {this->CurrentMakefile = mf;} void AddLocalGenerator(cmLocalGenerator *lg); @@ -406,7 +408,7 @@ protected: std::string ConfiguredFilesPath; cmake *CMakeInstance; std::vector LocalGenerators; - cmLocalGenerator* CurrentLocalGenerator; + cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; std::map > diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 58366d1..4b9415b 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -78,16 +78,17 @@ bool cmLocalGenerator::IsRootMakefile() const class cmLocalGeneratorCurrent { cmGlobalGenerator* GG; - cmLocalGenerator* LG; + cmMakefile* MF; cmState::Snapshot Snapshot; public: - cmLocalGeneratorCurrent(cmLocalGenerator* lg) + cmLocalGeneratorCurrent(cmMakefile* mf) { - this->GG = lg->GetGlobalGenerator(); - this->LG = this->GG->GetCurrentLocalGenerator(); + this->GG = mf->GetGlobalGenerator(); + this->MF = this->GG->GetCurrentMakefile(); this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(lg->GetStateSnapshot()); - this->GG->SetCurrentLocalGenerator(lg); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PushFileScope(); #endif @@ -97,7 +98,7 @@ public: #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PopFileScope(); #endif - this->GG->SetCurrentLocalGenerator(this->LG); + this->GG->SetCurrentMakefile(this->MF); this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); } }; @@ -106,7 +107,7 @@ public: void cmLocalGenerator::Configure() { // Manage the global generator's current local generator. - cmLocalGeneratorCurrent clg(this); + cmLocalGeneratorCurrent clg(this->GetMakefile()); static_cast(clg); // make sure the CMakeFiles dir is there diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index cbb06cd..fbd2946 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -1215,7 +1215,7 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory, cmLocalGenerator* lg = gg.MakeLocalGenerator(); lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory); lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory); - gg.SetCurrentLocalGenerator(lg); + gg.SetCurrentMakefile(lg->GetMakefile()); this->ReadAutogenInfoFile(lg->GetMakefile(), targetDirectory, config); this->ReadOldMocDefinitionsFile(lg->GetMakefile(), targetDirectory); diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index e5f4700..cc30732 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -113,12 +113,7 @@ static cmMakefile* cmakemainGetMakefile(void *clientdata) cmGlobalGenerator* gg=cm->GetGlobalGenerator(); if (gg) { - cmLocalGenerator* lg=gg->GetCurrentLocalGenerator(); - if (lg) - { - cmMakefile* mf = lg->GetMakefile(); - return mf; - } + return gg->GetCurrentMakefile(); } } return 0; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=69a038a9e90a8839b69f4cb8826688be611e8b0d commit 69a038a9e90a8839b69f4cb8826688be611e8b0d Author: Stephen Kelly AuthorDate: Sat May 30 19:39:08 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:41 2015 -0400 cmMakefile: Refactor directories specified with the subdirs command. Store the directories on the cmMakefile as explicitly not-configured-yet. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8931e6f..58366d1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -119,18 +119,15 @@ void cmLocalGenerator::Configure() assert(cmSystemTools::FileExists(currentStart.c_str(), true)); this->Makefile->ProcessBuildsystemFile(currentStart.c_str()); - // at the end of the ReadListFile handle any old style subdirs - // first get all the subdirectories - std::vector subdirs = this->GetChildren(); + // at the end handle any old style subdirs + std::vector subdirs = + this->GetMakefile()->GetUnConfiguredDirectories(); // for each subdir recurse std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - if (!(*sdi)->GetMakefile()->IsConfigured()) - { - this->Makefile->ConfigureSubDirectory(*sdi); - } + this->Makefile->ConfigureSubDirectory(*sdi); } this->Makefile->AddCMakeDependFilesFromUser(); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d537f34..ffc6bf9 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1599,6 +1599,15 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) } // finally configure the subdir lg2->Configure(); + + // at the end handle any old style subdirs + for (std::vector::iterator sdi = + this->UnConfiguredDirectories.begin(); + sdi != this->UnConfiguredDirectories.end(); ++sdi) + { + this->ConfigureSubDirectory(*sdi); + } + if (this->GetCMakeInstance()->GetDebugOutput()) { std::string msg=" Returning to "; @@ -1638,6 +1647,10 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, { this->ConfigureSubDirectory(lg2); } + else + { + this->UnConfiguredDirectories.push_back(lg2); + } } void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index a45d837..509f5c8 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -262,6 +262,11 @@ public: this->LinkDirectories = vec; } + std::vector GetUnConfiguredDirectories() const + { + return this->UnConfiguredDirectories; + } + /** * Add a subdirectory to the build. */ @@ -920,6 +925,8 @@ private: mutable cmsys::RegularExpression cmAtVarRegex; mutable cmsys::RegularExpression cmNamedCurly; + std::vector UnConfiguredDirectories; + cmPropertyMap Properties; // Unused variable flags http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0863797037b82f01cb356cb2cd4cdcef7ca8ae48 commit 0863797037b82f01cb356cb2cd4cdcef7ca8ae48 Author: Stephen Kelly AuthorDate: Sat May 30 19:34:09 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:41 2015 -0400 cmLocalGenerator: ComputeObjectMaxPath just before generating. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 4fa7a61..d1842c1 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1223,6 +1223,7 @@ void cmGlobalGenerator::Generate() this->CreateDefaultGlobalTargets(&globalTargets); for (i = 0; i < this->LocalGenerators.size(); ++i) { + this->LocalGenerators[i]->ComputeObjectMaxPath(); cmMakefile* mf = this->LocalGenerators[i]->GetMakefile(); cmTargets* targets = &(mf->GetTargets()); cmTargets::iterator tit; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 6bebaa7..8931e6f 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -135,8 +135,6 @@ void cmLocalGenerator::Configure() this->Makefile->AddCMakeDependFilesFromUser(); - this->ComputeObjectMaxPath(); - this->Makefile->SetConfigured(); } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 8a1649e..c972e8f 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,6 +383,7 @@ public: bool IsMinGWMake() const; bool IsNMake() const; + void ComputeObjectMaxPath(); protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -428,7 +429,6 @@ protected: std::string& CreateSafeUniqueObjectFileName(const std::string& sin, std::string const& dir_max); - void ComputeObjectMaxPath(); virtual std::string ConvertToLinkReference(std::string const& lib, OutputFormat format = SHELL); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=27e11c6fea8e863b59c0fdfd63f1e9f2528dbac4 commit 27e11c6fea8e863b59c0fdfd63f1e9f2528dbac4 Author: Stephen Kelly AuthorDate: Sat May 30 19:26:32 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:40 2015 -0400 Merge Configure state with GeneratingBuildSystem state. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index cd05c54..4fa7a61 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1280,7 +1280,6 @@ void cmGlobalGenerator::Generate() // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { - this->LocalGenerators[i]->GetMakefile()->SetGeneratingBuildSystem(); this->SetCurrentLocalGenerator(this->LocalGenerators[i]); this->LocalGenerators[i]->Generate(); if(!this->LocalGenerators[i]->GetMakefile()->IsOn( diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index c686ab1..6bebaa7 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -59,7 +59,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); this->LinkScriptShell = false; - this->Configured = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; this->BackwardsCompatibilityFinal = false; @@ -128,7 +127,7 @@ void cmLocalGenerator::Configure() std::vector::iterator sdi = subdirs.begin(); for (; sdi != subdirs.end(); ++sdi) { - if (!(*sdi)->Configured) + if (!(*sdi)->GetMakefile()->IsConfigured()) { this->Makefile->ConfigureSubDirectory(*sdi); } @@ -138,7 +137,7 @@ void cmLocalGenerator::Configure() this->ComputeObjectMaxPath(); - this->Configured = true; + this->Makefile->SetConfigured(); } //---------------------------------------------------------------------------- @@ -3179,11 +3178,6 @@ bool cmLocalGenerator::IsNMake() const return this->GetState()->UseNMake(); } -void cmLocalGenerator::SetConfiguredCMP0014(bool configured) -{ - this->Configured = configured; -} - //---------------------------------------------------------------------------- std::string cmLocalGenerator @@ -3465,7 +3459,7 @@ cmIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility() } } this->BackwardsCompatibility = CMake_VERSION_ENCODE(major, minor, patch); - this->BackwardsCompatibilityFinal = this->Configured; + this->BackwardsCompatibilityFinal = this->Makefile->IsConfigured(); } return this->BackwardsCompatibility; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index b635180..8a1649e 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,8 +383,6 @@ public: bool IsMinGWMake() const; bool IsNMake() const; - void SetConfiguredCMP0014(bool configured); - protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -451,7 +449,6 @@ protected: std::set WarnCMP0063; bool LinkScriptShell; - bool Configured; bool EmitUniversalBinaryFlags; // Hack for ExpandRuleVariable until object-oriented version is diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7c74a0f..d537f34 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -146,7 +146,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); - this->GeneratingBuildSystem = false; + this->Configured = false; this->SuppressWatches = false; // Setup the default include file regular expression (match everything). @@ -1594,7 +1594,7 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2) // NEW behavior prints the error. this->IssueMessage(cmake::FATAL_ERROR, e.str()); } - lg2->SetConfiguredCMP0014(true); + lg2->GetMakefile()->SetConfigured(); return; } // finally configure the subdir diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index efd73a1..a45d837 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -781,8 +781,8 @@ public: return this->CompileDefinitionsEntries; } - bool IsGeneratingBuildSystem() const { return this->GeneratingBuildSystem; } - void SetGeneratingBuildSystem(){ this->GeneratingBuildSystem = true; } + bool IsConfigured() const { return this->Configured; } + void SetConfigured(){ this->Configured = true; } void AddQtUiFileWithOptions(cmSourceFile *sf); std::vector GetQtUiFilesWithOptions() const; @@ -994,7 +994,7 @@ private: long line, bool removeEmpty, bool replaceAt) const; - bool GeneratingBuildSystem; + bool Configured; /** * Old version of GetSourceFileWithOutput(const std::string&) kept for * backward-compatibility. It implements a linear search and support diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..1d1dced 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -764,7 +764,7 @@ void cmTarget::GetSourceFiles(std::vector &files, "SOURCES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugSourcesDone = true; } @@ -2106,7 +2106,7 @@ cmTarget::GetIncludeDirectories(const std::string& config, "INCLUDE_DIRECTORIES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugIncludesDone = true; } @@ -2277,7 +2277,7 @@ void cmTarget::GetCompileOptions(std::vector &result, "COMPILE_OPTIONS") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileOptionsDone = true; } @@ -2348,7 +2348,7 @@ void cmTarget::GetCompileDefinitions(std::vector &list, "COMPILE_DEFINITIONS") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileDefinitionsDone = true; } @@ -2449,7 +2449,7 @@ void cmTarget::GetCompileFeatures(std::vector &result, "COMPILE_FEATURES") != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompileFeaturesDone = true; } @@ -4857,7 +4857,7 @@ cmTarget::ReportPropertyOrigin(const std::string &p, p) != debugProperties.end(); - if (this->Makefile->IsGeneratingBuildSystem()) + if (this->Makefile->IsConfigured()) { this->DebugCompatiblePropertiesDone[p] = true; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=363caa2fa540190ea394122fca3cb72d951823ad commit 363caa2fa540190ea394122fca3cb72d951823ad Author: Stephen Kelly AuthorDate: Sat May 30 19:12:38 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:40 2015 -0400 cmLocalGenerator: De-virtualize Configure(). The generators that override it do so in order to populate data members which can instead be populated in Generate(). diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index f02b5db..b635180 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -50,7 +50,7 @@ public: * Process the CMakeLists files for this directory to fill in the * Makefile ivar */ - virtual void Configure(); + void Configure(); /** * Calls TraceVSDependencies() on all targets of this generator. diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index c08c91f..427ae10 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -41,6 +41,15 @@ cmLocalNinjaGenerator::~cmLocalNinjaGenerator() void cmLocalNinjaGenerator::Generate() { + // Compute the path to use when referencing the current output + // directory from the top output directory. + this->HomeRelativeOutputPath = + this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); + if(this->HomeRelativeOutputPath == ".") + { + this->HomeRelativeOutputPath = ""; + } + this->SetConfigName(); this->WriteProcessedMakefile(this->GetBuildFileStream()); @@ -91,25 +100,6 @@ void cmLocalNinjaGenerator::Generate() this->WriteCustomCommandBuildStatements(); } -// Implemented in: -// cmLocalUnixMakefileGenerator3. -// Used in: -// Source/cmMakefile.cxx -// Source/cmGlobalGenerator.cxx -void cmLocalNinjaGenerator::Configure() -{ - // Compute the path to use when referencing the current output - // directory from the top output directory. - this->HomeRelativeOutputPath = - this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); - if(this->HomeRelativeOutputPath == ".") - { - this->HomeRelativeOutputPath = ""; - } - this->cmLocalGenerator::Configure(); - -} - // TODO: Picked up from cmLocalUnixMakefileGenerator3. Refactor it. std::string cmLocalNinjaGenerator ::GetTargetDirectory(cmTarget const& target) const diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index 7ae97de..ce966ff 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -38,8 +38,6 @@ public: virtual void Generate(); - virtual void Configure(); - virtual std::string GetTargetDirectory(cmTarget const& target) const; const cmGlobalNinjaGenerator* GetGlobalNinjaGenerator() const; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 3eea59b..c9eea56 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -98,7 +98,7 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3() } //---------------------------------------------------------------------------- -void cmLocalUnixMakefileGenerator3::Configure() +void cmLocalUnixMakefileGenerator3::Generate() { // Compute the path to use when referencing the current output // directory from the top output directory. @@ -112,12 +112,7 @@ void cmLocalUnixMakefileGenerator3::Configure() { this->HomeRelativeOutputPath += "/"; } - this->cmLocalGenerator::Configure(); -} -//---------------------------------------------------------------------------- -void cmLocalUnixMakefileGenerator3::Generate() -{ // Store the configuration name that will be generated. if(const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE")) { diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 988d660..f2a1389 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -40,12 +40,6 @@ public: virtual ~cmLocalUnixMakefileGenerator3(); /** - * Process the CMakeLists files for this directory to fill in the - * Makefile ivar - */ - virtual void Configure(); - - /** * Generate the makefile for this directory. */ virtual void Generate(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e570f857acd3322640db72112f2dc37b69396cf commit 6e570f857acd3322640db72112f2dc37b69396cf Author: Stephen Kelly AuthorDate: Mon Jun 1 20:23:11 2015 +0200 Commit: Brad King CommitDate: Thu Jun 4 09:06:09 2015 -0400 cmLocalGenerator: Remove 'optional' parameter from Convert. Port callers away from it. diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index a3ebc61..3102ebc 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -310,14 +310,10 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget() cmCustomCommandLine commandLine; commandLine.push_back(cmSystemTools::GetCMakeCommand()); std::string argH = "-H"; - argH += lg->Convert(mf->GetHomeDirectory(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, true); + argH += mf->GetHomeDirectory(); commandLine.push_back(argH); std::string argB = "-B"; - argB += lg->Convert(mf->GetHomeOutputDirectory(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, true); + argB += mf->GetHomeOutputDirectory(); commandLine.push_back(argB); commandLine.push_back("--check-stamp-list"); commandLine.push_back(stampList.c_str()); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index f35de03..c686ab1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -517,7 +517,7 @@ void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, objectDir = this->Convert(objectDir,START_OUTPUT,SHELL); std::string objectFile = this->Convert(ofname,START_OUTPUT,SHELL); std::string sourceFile = - this->Convert(source.GetFullPath(),START_OUTPUT,SHELL,true); + this->ConvertToOutputFormat(source.GetFullPath(), SHELL); std::string varString = "CMAKE_"; varString += lang; varString += "_COMPILE_OBJECT"; @@ -1177,7 +1177,7 @@ cmLocalGenerator::ConvertToOutputForExistingCommon(const std::string& remote, std::string tmp; if(cmSystemTools::GetShortPath(remote, tmp)) { - return this->Convert(tmp, NONE, format, true); + return this->ConvertToOutputFormat(tmp, format); } } @@ -1191,8 +1191,10 @@ cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, RelativeRoot local, OutputFormat format) { + static_cast(local); + // Perform standard conversion. - std::string result = this->Convert(remote, local, format, true); + std::string result = this->ConvertToOutputFormat(remote, format); // Consider short-path. return this->ConvertToOutputForExistingCommon(remote, result, format); @@ -1311,8 +1313,7 @@ std::string cmLocalGenerator::GetIncludeFlags( { includeFlags << fwSearchFlag; } - includeFlags << this->Convert(frameworkDir, START_OUTPUT, - shellFormat, true) + includeFlags << this->ConvertToOutputFormat(frameworkDir, shellFormat) << " "; } continue; @@ -2686,42 +2687,39 @@ const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) //---------------------------------------------------------------------------- std::string cmLocalGenerator::Convert(const std::string& source, RelativeRoot relative, - OutputFormat output, - bool optional) + OutputFormat output) { // Convert the path to a relative path. std::string result = source; - if (!optional) + switch (relative) { - switch (relative) - { - case HOME: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->GetState()->GetSourceDirectoryComponents(), result); - break; - case START: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); - break; - case HOME_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->GetState()->GetBinaryDirectoryComponents(), result); - break; - case START_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); - break; - case FULL: - result = cmSystemTools::CollapseFullPath(result); - break; - case NONE: - break; - } + case HOME: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->GetState()->GetSourceDirectoryComponents(), result); + break; + case START: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); + break; + case HOME_OUTPUT: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->GetState()->GetBinaryDirectoryComponents(), result); + break; + case START_OUTPUT: + //result = cmSystemTools::CollapseFullPath(result.c_str()); + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); + break; + case FULL: + result = cmSystemTools::CollapseFullPath(result); + break; + case NONE: + break; + } return this->ConvertToOutputFormat(result, output); } @@ -2765,8 +2763,7 @@ std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, //---------------------------------------------------------------------------- std::string cmLocalGenerator::Convert(RelativeRoot remote, const std::string& local, - OutputFormat output, - bool optional) + OutputFormat output, bool optional) { const char* remotePath = this->GetRelativeRootPath(remote); diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 30b622e..f02b5db 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -115,8 +115,7 @@ public: std::string ConvertToOutputFormat(const std::string& source, OutputFormat output); std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED, - bool optional = false); + OutputFormat output = UNCHANGED); std::string Convert(RelativeRoot remote, const std::string& local, OutputFormat output = UNCHANGED, bool optional = false); diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index e5f9f55..a26a1dd 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -235,13 +235,10 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt) comment += makefileIn; std::string args; args = "-H"; - args += this->Convert(this->Makefile->GetHomeDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeDirectory(); commandLine.push_back(args); args = "-B"; - args += - this->Convert(this->Makefile->GetHomeOutputDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeOutputDirectory(); commandLine.push_back(args); std::vector const& listFiles = this->Makefile->GetListFiles(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index c565632..717f33f 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -305,13 +305,10 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() comment += makefileIn; std::string args; args = "-H"; - args += this->Convert(this->Makefile->GetHomeDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeDirectory(); commandLine.push_back(args); args = "-B"; - args += - this->Convert(this->Makefile->GetHomeOutputDirectory(), - START_OUTPUT, UNCHANGED, true); + args += this->Makefile->GetHomeOutputDirectory(); commandLine.push_back(args); commandLine.push_back("--check-stamp-file"); std::string stampFilename = this->Convert(stampName.c_str(), FULL, diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index d422e28..9ac9ddb 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1589,9 +1589,8 @@ std::string cmMakefileTargetGenerator::GetFrameworkFlags(std::string const& l) if(emitted.insert(*i).second) { flags += fwSearchFlag; - flags += this->Convert(*i, - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::SHELL, true); + flags += this->LocalGenerator + ->ConvertToOutputFormat(*i, cmLocalGenerator::SHELL); flags += " "; } } diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 58044e8..2e1b052 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -273,10 +273,9 @@ protected: std::string Convert(const std::string& source, cmLocalGenerator::RelativeRoot relative, cmLocalGenerator::OutputFormat output = - cmLocalGenerator::UNCHANGED, - bool optional = false) + cmLocalGenerator::UNCHANGED) { - return this->LocalGenerator->Convert(source, relative, output, optional); + return this->LocalGenerator->Convert(source, relative, output); } }; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5dfdb14..527524e 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -923,10 +923,7 @@ cmVisualStudio10TargetGenerator::ConvertPath(std::string const& path, return forceRelative ? cmSystemTools::RelativePath( this->Makefile->GetCurrentBinaryDirectory(), path.c_str()) - : this->LocalGenerator->Convert(path.c_str(), - cmLocalGenerator::START_OUTPUT, - cmLocalGenerator::UNCHANGED, - /* optional = */ true); + : path.c_str(); } void cmVisualStudio10TargetGenerator::ConvertToWindowsSlash(std::string& s) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:22 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:22 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1393-g5ec8a04 Message-ID: <20150604131322.95D39AEFFA@public.kitware.com> 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, master has been updated via 5ec8a043025c3f3c6bcc6fe38c2c78127e973bee (commit) via 39fc3ed7e0db554818f41c3623bd858e0399dbb0 (commit) via 54a95f5fc66574cd9fff07024cc449b160b5629a (commit) from 0cc7c9a74368d1db8acc1a98dec79a1eb472e74b (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=5ec8a043025c3f3c6bcc6fe38c2c78127e973bee commit 5ec8a043025c3f3c6bcc6fe38c2c78127e973bee Merge: 0cc7c9a 39fc3ed Author: Brad King AuthorDate: Thu Jun 4 09:13:21 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:21 2015 -0400 Merge topic 'CPackDeb-dpkg-shlibdeps-check-flag' 39fc3ed7 CPackDeb: Check dpkg-shlibdeps --ignore-missing-info flag 54a95f5f CPackDeb: Check dpkg-shlibdeps version more robustly ----------------------------------------------------------------------- Summary of changes: Modules/CPackDeb.cmake | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:24 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1395-g2b083b1 Message-ID: <20150604131324.6C73FAF026@public.kitware.com> 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, master has been updated via 2b083b19ebe7ee11fa0f9aa68bfc22616106c5a0 (commit) via c85367f408befa419185a4fec4816ea0ee3e1ee6 (commit) from 5ec8a043025c3f3c6bcc6fe38c2c78127e973bee (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=2b083b19ebe7ee11fa0f9aa68bfc22616106c5a0 commit 2b083b19ebe7ee11fa0f9aa68bfc22616106c5a0 Merge: 5ec8a04 c85367f Author: Brad King AuthorDate: Thu Jun 4 09:13:23 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:23 2015 -0400 Merge topic 'vs-deterministic-guid' c85367f4 VS: Compute project GUIDs deterministically ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.h | 2 -- Source/cmGlobalVisualStudio7Generator.cxx | 52 ++++++++++------------------ Source/cmGlobalVisualStudio7Generator.h | 5 ++- Source/cmGlobalVisualStudio8Generator.cxx | 1 - Source/cmLocalVisualStudio10Generator.cxx | 3 +- Source/cmLocalVisualStudio7Generator.cxx | 11 +----- Source/cmMakefile.cxx | 15 -------- Source/cmVisualStudio10TargetGenerator.cxx | 4 --- 8 files changed, 22 insertions(+), 71 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:26 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1397-g94070b8 Message-ID: <20150604131326.89726AF030@public.kitware.com> 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, master has been updated via 94070b8dfa9f12b13a6794e41e605920e80da696 (commit) via 721b7e3e56f8a9e7f6daf1602dcc5cd85677fc84 (commit) from 2b083b19ebe7ee11fa0f9aa68bfc22616106c5a0 (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=94070b8dfa9f12b13a6794e41e605920e80da696 commit 94070b8dfa9f12b13a6794e41e605920e80da696 Merge: 2b083b1 721b7e3 Author: Brad King AuthorDate: Thu Jun 4 09:13:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:25 2015 -0400 Merge topic 'ctest-merge-test-output' 721b7e3e CTest: Capture test stdout/stderr through one pipe (#15600) ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestRunTest.cxx | 3 +-- Source/CTest/cmProcess.cxx | 19 ++++--------------- Source/CTest/cmProcess.h | 7 ++----- .../CTestCommandLine/MergeOutput-stdout.txt | 13 +++++++++++++ .../MergeOutput.cmake | 0 Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 13 +++++++++++++ 6 files changed, 33 insertions(+), 22 deletions(-) create mode 100644 Tests/RunCMake/CTestCommandLine/MergeOutput-stdout.txt copy Tests/RunCMake/{execute_process => CTestCommandLine}/MergeOutput.cmake (100%) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:28 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:28 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1404-gb49aef6 Message-ID: <20150604131328.D982CAF04B@public.kitware.com> 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, master has been updated via b49aef6b10e4c84d31c1fe48a10878109397c553 (commit) via eb7b6f6db4b2de70aae80fd8143e701b0cfa4268 (commit) via 499ebb6564800c23bfb6e7b1b706a6202b3f971a (commit) via 80b433b05ea921e6144c10260cfeafb4b25e5bc1 (commit) via 52919ac8ac22e1646f8f46907fe9c8e753d954cf (commit) via b68f2ea8ae26b23639df5978116375b47b4123c3 (commit) via 17e13f0a2de8dca416521cb5ad9775bf46030c83 (commit) from 94070b8dfa9f12b13a6794e41e605920e80da696 (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=b49aef6b10e4c84d31c1fe48a10878109397c553 commit b49aef6b10e4c84d31c1fe48a10878109397c553 Merge: 94070b8 eb7b6f6 Author: Brad King AuthorDate: Thu Jun 4 09:13:27 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:27 2015 -0400 Merge topic 'minor-cleanups' eb7b6f6d cmVariableWatchCommand: Simplify error reporting. 499ebb65 cmListFileBacktrace: Internalize the step of making paths relative. 80b433b0 cmGlobalGenerator: Don't use else after a return. 52919ac8 cmMakefile: Make cmListFileBacktrace default constructible. b68f2ea8 cmMakefile: Add API for elseif to create backtrace. 17e13f0a cmMakefile: Simplify CMP0000 handling. ----------------------------------------------------------------------- Summary of changes: Source/cmCustomCommand.cxx | 4 +-- Source/cmExportBuildFileGenerator.cxx | 2 +- Source/cmGeneratorExpression.cxx | 2 +- Source/cmGeneratorExpressionDAGChecker.cxx | 2 +- Source/cmGlobalGenerator.cxx | 43 ++++++++++++---------------- Source/cmIfCommand.cxx | 7 ++--- Source/cmListFileCache.cxx | 26 ++++++----------- Source/cmListFileCache.h | 6 +--- Source/cmMakefile.cxx | 27 +++++++++++------ Source/cmMakefile.h | 1 + Source/cmTarget.cxx | 4 +-- Source/cmTarget.h | 2 +- Source/cmVariableWatchCommand.cxx | 5 +--- Source/cmake.cxx | 1 - Source/cmake.h | 2 +- 15 files changed, 59 insertions(+), 75 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:32 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1408-g5a1c880 Message-ID: <20150604131332.B274FAF026@public.kitware.com> 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, master has been updated via 5a1c8806bfded9e68280542fa7573f21eb125e95 (commit) via cf1233a0eab7cec757d2929cc7373f94ba4fa8a8 (commit) via 942df88bf83e99abbfbd69207369096fa7cf67a2 (commit) via da28f11523644cdc2138a0cde2c4c015948ff46c (commit) from b49aef6b10e4c84d31c1fe48a10878109397c553 (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=5a1c8806bfded9e68280542fa7573f21eb125e95 commit 5a1c8806bfded9e68280542fa7573f21eb125e95 Merge: b49aef6 cf1233a Author: Brad King AuthorDate: Thu Jun 4 09:13:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:31 2015 -0400 Merge topic 'rename-cmState-API' cf1233a0 cmState: Rename GetParent method. 942df88b cmState: Rename CreateSnapshot method. da28f115 cmState: Add CreateBaseSnapshot method. ----------------------------------------------------------------------- Summary of changes: Source/cmLocalGenerator.cxx | 2 +- Source/cmMakefile.cxx | 5 +++-- Source/cmState.cxx | 27 +++++++++++++++++++-------- Source/cmState.h | 5 +++-- Source/cmake.cxx | 2 +- 5 files changed, 27 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:34 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1413-gd6fe79f Message-ID: <20150604131334.EFE61AF026@public.kitware.com> 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, master has been updated via d6fe79f3abc211361f0aee909e08fd6a1531a68b (commit) via 6e570f857acd3322640db72112f2dc37b69396cf (commit) via 3d8c6cd9648089c389c1496fb910d664a5773ab4 (commit) via e44e6bcc045916fcab3b3798d9aa9951c35c1878 (commit) via 1335992c8f4e8b96f1a21d5dcc7d65a9fbd84c11 (commit) from 5a1c8806bfded9e68280542fa7573f21eb125e95 (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=d6fe79f3abc211361f0aee909e08fd6a1531a68b commit d6fe79f3abc211361f0aee909e08fd6a1531a68b Merge: 5a1c880 6e570f8 Author: Brad King AuthorDate: Thu Jun 4 09:13:33 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:33 2015 -0400 Merge topic 'remove-CMAKE_USE_RELATIVE_PATHS' 6e570f85 cmLocalGenerator: Remove 'optional' parameter from Convert. 3d8c6cd9 cmLocalGenerator: Remove obsolete method. e44e6bcc Port away from obsolete method. 1335992c Remove CMAKE_USE_RELATIVE_PATHS variable. ----------------------------------------------------------------------- Summary of changes: .../dev/remove-CMAKE_USE_RELATIVE_PATHS.rst | 5 ++ Help/variable/CMAKE_USE_RELATIVE_PATHS.rst | 9 +- Source/cmGlobalVisualStudio8Generator.cxx | 8 +- Source/cmGlobalXCodeGenerator.cxx | 24 +----- Source/cmLocalGenerator.cxx | 88 ++++++++------------ Source/cmLocalGenerator.h | 12 +-- Source/cmLocalVisualStudio6Generator.cxx | 79 ++++++++---------- Source/cmLocalVisualStudio7Generator.cxx | 13 ++- Source/cmMakefileTargetGenerator.cxx | 13 +-- Source/cmMakefileTargetGenerator.h | 5 +- Source/cmVisualStudio10TargetGenerator.cxx | 5 +- Source/cmake.cxx | 14 ---- 12 files changed, 96 insertions(+), 179 deletions(-) create mode 100644 Help/release/dev/remove-CMAKE_USE_RELATIVE_PATHS.rst hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:13:37 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:13:37 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1423-g0886880 Message-ID: <20150604131337.1A614AF04B@public.kitware.com> 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, master has been updated via 0886880e3b8e5510f861b2e573b311c16db9d657 (commit) via 7657e8b1df64ed3b5429be34416e8756b659d525 (commit) via 4e8f242d170ab46d4071254a3a81f7db264b8bc7 (commit) via d65e01235da2473e669d6e5c40988ad4015f0dc4 (commit) via f059ed165bafff94f9bcd3823e12a8ce1f5ec647 (commit) via a653611db0d6e23456c5ef90f95e19ea5d70a428 (commit) via 69a038a9e90a8839b69f4cb8826688be611e8b0d (commit) via 0863797037b82f01cb356cb2cd4cdcef7ca8ae48 (commit) via 27e11c6fea8e863b59c0fdfd63f1e9f2528dbac4 (commit) via 363caa2fa540190ea394122fca3cb72d951823ad (commit) from d6fe79f3abc211361f0aee909e08fd6a1531a68b (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=0886880e3b8e5510f861b2e573b311c16db9d657 commit 0886880e3b8e5510f861b2e573b311c16db9d657 Merge: d6fe79f 7657e8b Author: Brad King AuthorDate: Thu Jun 4 09:13:35 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:13:35 2015 -0400 Merge topic 'cmMakefile-Configure' 7657e8b1 cmMakefile: Introduce a local cmMakefile variable. 4e8f242d cmMakefile: Store unconfigured cmMakefiles. d65e0123 cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile. f059ed16 cmMakefile: Move Configure responsibility from cmLocalGenerator. a653611d cmake: Replace CurrentLocalGenerator concept with CurrentMakefile. 69a038a9 cmMakefile: Refactor directories specified with the subdirs command. 08637970 cmLocalGenerator: ComputeObjectMaxPath just before generating. 27e11c6f Merge Configure state with GeneratingBuildSystem state. 363caa2f cmLocalGenerator: De-virtualize Configure(). ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 10 ++-- Source/cmGlobalGenerator.h | 12 +++-- Source/cmLocalGenerator.cxx | 74 +------------------------- Source/cmLocalGenerator.h | 11 +--- Source/cmLocalNinjaGenerator.cxx | 28 ++++------ Source/cmLocalNinjaGenerator.h | 2 - Source/cmLocalUnixMakefileGenerator3.cxx | 7 +-- Source/cmLocalUnixMakefileGenerator3.h | 6 --- Source/cmMakefile.cxx | 85 ++++++++++++++++++++++++++---- Source/cmMakefile.h | 12 +++-- Source/cmQtAutoGenerators.cxx | 2 +- Source/cmTarget.cxx | 12 ++--- Source/cmakemain.cxx | 7 +-- 13 files changed, 115 insertions(+), 153 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:14:53 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:14:53 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1473-g408cd6d Message-ID: <20150604131453.9DD43AF27E@public.kitware.com> 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 408cd6d1aa7f6ed126b0e363843b4b390cb0d309 (commit) via 0886880e3b8e5510f861b2e573b311c16db9d657 (commit) via d6fe79f3abc211361f0aee909e08fd6a1531a68b (commit) via 5a1c8806bfded9e68280542fa7573f21eb125e95 (commit) via b49aef6b10e4c84d31c1fe48a10878109397c553 (commit) via 94070b8dfa9f12b13a6794e41e605920e80da696 (commit) via 2b083b19ebe7ee11fa0f9aa68bfc22616106c5a0 (commit) via 5ec8a043025c3f3c6bcc6fe38c2c78127e973bee (commit) via 0cc7c9a74368d1db8acc1a98dec79a1eb472e74b (commit) via 758392f51f4c1653c2f4dce936fb1a44d86d6a21 (commit) from 8af6a3f58bcf8d9b6b6754e80d3f82b3d29ec896 (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=408cd6d1aa7f6ed126b0e363843b4b390cb0d309 commit 408cd6d1aa7f6ed126b0e363843b4b390cb0d309 Merge: 8af6a3f 0886880 Author: Brad King AuthorDate: Thu Jun 4 09:14:44 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 09:14:44 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:25:27 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:25:27 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1476-ga0340c2 Message-ID: <20150604132527.1471BB0238@public.kitware.com> 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 a0340c21719bd16512bec3bca20e0f25704803c9 (commit) via bccbe281ff7039e145814d1858a45f38bb681173 (commit) via 6cafd8ed0bc8458ba2c6eb0e792c894cf4f37f90 (commit) from 408cd6d1aa7f6ed126b0e363843b4b390cb0d309 (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=a0340c21719bd16512bec3bca20e0f25704803c9 commit a0340c21719bd16512bec3bca20e0f25704803c9 Merge: 408cd6d bccbe28 Author: Brad King AuthorDate: Thu Jun 4 09:25:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 09:25:26 2015 -0400 Merge topic 'update-kwsys' into next bccbe281 Merge branch 'upstream-kwsys' into update-kwsys 6cafd8ed KWSys 2015-06-03 (8533a79b) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bccbe281ff7039e145814d1858a45f38bb681173 commit bccbe281ff7039e145814d1858a45f38bb681173 Merge: 0886880 6cafd8e Author: Brad King AuthorDate: Thu Jun 4 09:22:53 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 09:22:53 2015 -0400 Merge branch 'upstream-kwsys' into update-kwsys http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6cafd8ed0bc8458ba2c6eb0e792c894cf4f37f90 commit 6cafd8ed0bc8458ba2c6eb0e792c894cf4f37f90 Author: KWSys Robot AuthorDate: Wed Jun 3 14:25:01 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 09:22:48 2015 -0400 KWSys 2015-06-03 (8533a79b) Extract upstream KWSys using the following shell commands. $ git archive --prefix=upstream-kwsys/ 8533a79b | tar x $ git shortlog --no-merges --abbrev=8 --format='%h %s' 61e0419f..8533a79b Zack Galbreath (1): 8533a79b SystemInformation: Add GetLoadAverage() method diff --git a/CMakeLists.txt b/CMakeLists.txt index c88e888..7eb678b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -786,6 +786,15 @@ IF(KWSYS_USE_SystemInformation) SET_PROPERTY(SOURCE SystemInformation.cxx APPEND PROPERTY COMPILE_DEFINITIONS KWSYS_BUILD_SHARED=1) ENDIF() + + IF(UNIX AND NOT CYGWIN) + KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_GETLOADAVG + "Checking whether CXX compiler has getloadavg" DIRECT) + IF(KWSYS_CXX_HAS_GETLOADAVG) + SET_PROPERTY(SOURCE SystemInformation.cxx APPEND PROPERTY + COMPILE_DEFINITIONS KWSYS_CXX_HAS_GETLOADAVG=1) + ENDIF() + ENDIF() ENDIF() #----------------------------------------------------------------------------- diff --git a/SystemInformation.cxx b/SystemInformation.cxx index b0434f4..6e81b0b 100644 --- a/SystemInformation.cxx +++ b/SystemInformation.cxx @@ -81,6 +81,11 @@ typedef int siginfo_t; # include // extern int errno; #endif +#if defined (__CYGWIN__) && !defined(_WIN32) +# include +# undef _WIN32 +#endif + #ifdef __FreeBSD__ # include # include @@ -366,6 +371,8 @@ public: const char *procLimitEnvVarName); LongLong GetProcMemoryUsed(); + double GetLoadAverage(); + // enable/disable stack trace signal handler. static void SetStackTraceOnError(int enable); @@ -820,6 +827,11 @@ SystemInformation::LongLong SystemInformation::GetProcMemoryUsed() return this->Implementation->GetProcMemoryUsed(); } +double SystemInformation::GetLoadAverage() +{ + return this->Implementation->GetLoadAverage(); +} + SystemInformation::LongLong SystemInformation::GetProcessId() { return this->Implementation->GetProcessId(); @@ -1490,6 +1502,60 @@ void SymbolProperties::Initialize(void *address) } #endif // don't define this class if we're not using it +// -------------------------------------------------------------------------- +#if defined(_WIN32) || defined(__CYGWIN__) +# define KWSYS_SYSTEMINFORMATION_USE_GetSystemTimes +#endif +#if defined(_MSC_VER) && _MSC_VER < 1310 +# undef KWSYS_SYSTEMINFORMATION_USE_GetSystemTimes +#endif +#if defined(KWSYS_SYSTEMINFORMATION_USE_GetSystemTimes) +double calculateCPULoad(unsigned __int64 idleTicks, + unsigned __int64 totalTicks) +{ + static double previousLoad = -0.0; + static unsigned __int64 previousIdleTicks = 0; + static unsigned __int64 previousTotalTicks = 0; + + unsigned __int64 const idleTicksSinceLastTime = + idleTicks - previousIdleTicks; + unsigned __int64 const totalTicksSinceLastTime = + totalTicks - previousTotalTicks; + + double load; + if (previousTotalTicks == 0 || totalTicksSinceLastTime == 0) + { + // No new information. Use previous result. + load = previousLoad; + } + else + { + // Calculate load since last time. + load = 1.0 - double(idleTicksSinceLastTime) / totalTicksSinceLastTime; + + // Smooth if possible. + if (previousLoad > 0) + { + load = 0.25 * load + 0.75 * previousLoad; + } + } + + previousLoad = load; + previousIdleTicks = idleTicks; + previousTotalTicks = totalTicks; + + return load; +} + +unsigned __int64 fileTimeToUInt64(FILETIME const& ft) +{ + LARGE_INTEGER out; + out.HighPart = ft.dwHighDateTime; + out.LowPart = ft.dwLowDateTime; + return out.QuadPart; +} +#endif + } // anonymous namespace @@ -3612,6 +3678,38 @@ SystemInformationImplementation::GetProcMemoryUsed() #endif } +double SystemInformationImplementation::GetLoadAverage() +{ +#if defined(KWSYS_CXX_HAS_GETLOADAVG) + double loadavg[3] = { 0.0, 0.0, 0.0 }; + if (getloadavg(loadavg, 3) > 0) + { + return loadavg[0]; + } + return -0.0; +#elif defined(KWSYS_SYSTEMINFORMATION_USE_GetSystemTimes) + // Old windows.h headers do not provide GetSystemTimes. + typedef BOOL (WINAPI *GetSystemTimesType)(LPFILETIME, LPFILETIME, + LPFILETIME); + static GetSystemTimesType pGetSystemTimes = + (GetSystemTimesType)GetProcAddress(GetModuleHandleW(L"kernel32"), + "GetSystemTimes"); + FILETIME idleTime, kernelTime, userTime; + if (pGetSystemTimes && pGetSystemTimes(&idleTime, &kernelTime, &userTime)) + { + unsigned __int64 const idleTicks = + fileTimeToUInt64(idleTime); + unsigned __int64 const totalTicks = + fileTimeToUInt64(kernelTime) + fileTimeToUInt64(userTime); + return calculateCPULoad(idleTicks, totalTicks) * GetNumberOfPhysicalCPU(); + } + return -0.0; +#else + // Not implemented on this platform. + return -0.0; +#endif +} + /** Get the process id of the running process. */ diff --git a/SystemInformation.hxx.in b/SystemInformation.hxx.in index a9fd05d..4acdc4f 100644 --- a/SystemInformation.hxx.in +++ b/SystemInformation.hxx.in @@ -130,6 +130,10 @@ public: // Get system RAM used by this process id in units of KiB. LongLong GetProcMemoryUsed(); + // Return the load average of the machine or -0.0 if it cannot + // be determined. + double GetLoadAverage(); + // enable/disable stack trace signal handler. In order to // produce an informative stack trace the application should // be dynamically linked and compiled with debug symbols. diff --git a/kwsysPlatformTestsCXX.cxx b/kwsysPlatformTestsCXX.cxx index 82620da..1596fe4 100644 --- a/kwsysPlatformTestsCXX.cxx +++ b/kwsysPlatformTestsCXX.cxx @@ -452,6 +452,19 @@ int main() } #endif +#ifdef TEST_KWSYS_CXX_HAS_GETLOADAVG +// Match feature definitions from SystemInformation.cxx +#if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE) +# define _GNU_SOURCE +#endif +#include +int main() +{ + double loadavg[3] = { 0.0, 0.0, 0.0 }; + return getloadavg(loadavg, 3); +} +#endif + #ifdef TEST_KWSYS_CXX_HAS_RLIMIT64 # if defined(KWSYS_HAS_LFS) # define _LARGEFILE_SOURCE diff --git a/testSystemInformation.cxx b/testSystemInformation.cxx index 53d51ac..fc8ea55 100644 --- a/testSystemInformation.cxx +++ b/testSystemInformation.cxx @@ -87,6 +87,7 @@ int testSystemInformation(int, char*[]) printMethod3(info, GetProcMemoryAvailable("KWSHL","KWSPL"), "KiB"); printMethod3(info, GetHostMemoryUsed(), "KiB"); printMethod3(info, GetProcMemoryUsed(), "KiB"); + printMethod(info, GetLoadAverage); for (long int i = 0; i <= 31; i++) { ----------------------------------------------------------------------- Summary of changes: Source/kwsys/CMakeLists.txt | 9 +++ Source/kwsys/SystemInformation.cxx | 98 ++++++++++++++++++++++++++++++++ Source/kwsys/SystemInformation.hxx.in | 4 ++ Source/kwsys/kwsysPlatformTestsCXX.cxx | 13 +++++ Source/kwsys/testSystemInformation.cxx | 1 + 5 files changed, 125 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:29:01 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:29:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1425-g91cd014 Message-ID: <20150604132901.B757BB035F@public.kitware.com> 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, master has been updated via 91cd014d6452371056bb3f96de29967f506b3bd7 (commit) via b8746c4cfe325f05dbcb4e9a99ca78496c90e74e (commit) from 0886880e3b8e5510f861b2e573b311c16db9d657 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:29:01 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:29:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1479-g3f45675 Message-ID: <20150604132901.D3995B0360@public.kitware.com> 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 3f4567550c1bd7db5b55773be46a1f08de19fbb8 (commit) via 91cd014d6452371056bb3f96de29967f506b3bd7 (commit) via b8746c4cfe325f05dbcb4e9a99ca78496c90e74e (commit) from a0340c21719bd16512bec3bca20e0f25704803c9 (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=3f4567550c1bd7db5b55773be46a1f08de19fbb8 commit 3f4567550c1bd7db5b55773be46a1f08de19fbb8 Merge: a0340c2 91cd014 Author: Brad King AuthorDate: Thu Jun 4 09:28:50 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 09:28:50 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 09:29:01 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 09:29:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.2.3-1389-gb8746c4 Message-ID: <20150604132901.ECE27B0369@public.kitware.com> 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, release has been updated via b8746c4cfe325f05dbcb4e9a99ca78496c90e74e (commit) via 39fc3ed7e0db554818f41c3623bd858e0399dbb0 (commit) via 54a95f5fc66574cd9fff07024cc449b160b5629a (commit) from c2cb80cbfa25eb5d6e054693ebd18e74bd7c8b75 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Modules/CPackDeb.cmake | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) hooks/post-receive -- CMake From nilsgladitz at gmail.com Thu Jun 4 10:01:12 2015 From: nilsgladitz at gmail.com (Nils Gladitz) Date: Thu, 4 Jun 2015 10:01:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1481-gf8845e5 Message-ID: <20150604140112.B35E3B0446@public.kitware.com> 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 f8845e56f4b494189403bead9186257e84b99969 (commit) via d9077d198e9cd0efdaea3a140cb7d5ab9ca833e5 (commit) from 3f4567550c1bd7db5b55773be46a1f08de19fbb8 (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=f8845e56f4b494189403bead9186257e84b99969 commit f8845e56f4b494189403bead9186257e84b99969 Merge: 3f45675 d9077d1 Author: Nils Gladitz AuthorDate: Thu Jun 4 10:01:12 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 10:01:12 2015 -0400 Merge topic 'vs-deterministic-guid' into next d9077d19 VS: Use cmUuid RFC 4122 compliant hash based UID generation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9077d198e9cd0efdaea3a140cb7d5ab9ca833e5 commit d9077d198e9cd0efdaea3a140cb7d5ab9ca833e5 Author: Nils Gladitz AuthorDate: Thu Jun 4 15:48:03 2015 +0200 Commit: Nils Gladitz CommitDate: Thu Jun 4 15:48:03 2015 +0200 VS: Use cmUuid RFC 4122 compliant hash based UID generation diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index a242046..35760d7 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -15,6 +15,7 @@ #include "cmGeneratedFileStream.h" #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" +#include "cmUuid.h" #include "cmake.h" #include @@ -953,14 +954,15 @@ std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) std::string input = this->CMakeInstance->GetState()->GetBinaryDirectory(); input += "|"; input += name; - std::string md5 = cmSystemTools::ComputeStringMD5(input); - assert(md5.length() == 32); - std::string const& guid = - (md5.substr( 0,8)+"-"+ - md5.substr( 8,4)+"-"+ - md5.substr(12,4)+"-"+ - md5.substr(16,4)+"-"+ - md5.substr(20,12)); + + cmUuid uuidGenerator; + + std::vector uuidNamespace; + assert(uuidGenerator.StringToBinary( + "ee30c4be-5192-4fb0-b335-722a2dffe760", uuidNamespace)); + + std::string guid = uuidGenerator.FromMd5(uuidNamespace, input); + return cmSystemTools::UpperCase(guid); } ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudio7Generator.cxx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 4 11:31:34 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 4 Jun 2015 11:31:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1483-geb67250 Message-ID: <20150604153135.92B26B030F@public.kitware.com> 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 eb672500311c81c1922399cf6095852a0612bbef (commit) via f2bac56eaa50204f5f2ce188607f622e7bff633f (commit) from f8845e56f4b494189403bead9186257e84b99969 (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=eb672500311c81c1922399cf6095852a0612bbef commit eb672500311c81c1922399cf6095852a0612bbef Merge: f8845e5 f2bac56 Author: Brad King AuthorDate: Thu Jun 4 11:31:28 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 11:31:28 2015 -0400 Merge topic 'ExternalProject_init_selected_submodules' into next f2bac56e fixup! ExternalProject: Add unit tests for GIT_SUBMODULES argument http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f2bac56eaa50204f5f2ce188607f622e7bff633f commit f2bac56eaa50204f5f2ce188607f622e7bff633f Author: Brad King AuthorDate: Thu Jun 4 11:07:16 2015 -0400 Commit: Brad King CommitDate: Thu Jun 4 11:07:19 2015 -0400 fixup! ExternalProject: Add unit tests for GIT_SUBMODULES argument Use shorter names to avoid Windows path length limits. diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt index eef00ea..b5041c7 100644 --- a/Tests/ExternalProject/CMakeLists.txt +++ b/Tests/ExternalProject/CMakeLists.txt @@ -380,13 +380,13 @@ if(do_git_tests) set(local_git_repo "../../LocalRepositories/GIT-with-submodules") - set(proj TutorialStep1-GIT-with-no-GIT_SUBMODULES) + set(proj TS1-GIT-no-GIT_SUBMODULES) ExternalProject_Add(${proj} GIT_REPOSITORY "${local_git_repo}" CMAKE_GENERATOR "${CMAKE_GENERATOR}" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= - -DWITH_submodule1:BOOL=ON - -DWITH_submodule2:BOOL=ON + -DWITH_m1:BOOL=ON + -DWITH_m2:BOOL=ON BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS "SetupLocalGITRepository" @@ -394,14 +394,14 @@ if(do_git_tests) ) set_property(TARGET ${proj} PROPERTY FOLDER "GIT") - set(proj TutorialStep1-GIT-with-empty-GIT_SUBMODULES) + set(proj TS1-GIT-empty-GIT_SUBMODULES) ExternalProject_Add(${proj} GIT_REPOSITORY "${local_git_repo}" GIT_SUBMODULES "" CMAKE_GENERATOR "${CMAKE_GENERATOR}" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= - -DWITH_submodule1:BOOL=ON - -DWITH_submodule2:BOOL=ON + -DWITH_m1:BOOL=ON + -DWITH_m2:BOOL=ON BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS "SetupLocalGITRepository" @@ -409,14 +409,14 @@ if(do_git_tests) ) set_property(TARGET ${proj} PROPERTY FOLDER "GIT") - set(proj TutorialStep1-GIT-with-some-GIT_SUBMODULES) + set(proj TS1-GIT-some-GIT_SUBMODULES) ExternalProject_Add(${proj} GIT_REPOSITORY "${local_git_repo}" - GIT_SUBMODULES "submodules/submodule1" + GIT_SUBMODULES "m/m1" CMAKE_GENERATOR "${CMAKE_GENERATOR}" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= - -DWITH_submodule1:BOOL=ON - -DWITH_submodule2:BOOL=OFF + -DWITH_m1:BOOL=ON + -DWITH_m2:BOOL=OFF BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS "SetupLocalGITRepository" diff --git a/Tests/ExternalProject/gitrepo-sub.tgz b/Tests/ExternalProject/gitrepo-sub.tgz index 72c8eb1..c0b5360 100644 Binary files a/Tests/ExternalProject/gitrepo-sub.tgz and b/Tests/ExternalProject/gitrepo-sub.tgz differ ----------------------------------------------------------------------- Summary of changes: Tests/ExternalProject/CMakeLists.txt | 20 ++++++++++---------- Tests/ExternalProject/gitrepo-sub.tgz | Bin 1833 -> 1911 bytes 2 files changed, 10 insertions(+), 10 deletions(-) hooks/post-receive -- CMake From nilsgladitz at gmail.com Thu Jun 4 11:57:01 2015 From: nilsgladitz at gmail.com (Nils Gladitz) Date: Thu, 4 Jun 2015 11:57:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1485-g7a802ef Message-ID: <20150604155702.8A1E6B0214@public.kitware.com> 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 7a802efbf4512c9038083a786be910078f058f7a (commit) via a3e776782e41fd6c26ac13319434a9027c010b0e (commit) from eb672500311c81c1922399cf6095852a0612bbef (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=7a802efbf4512c9038083a786be910078f058f7a commit 7a802efbf4512c9038083a786be910078f058f7a Merge: eb67250 a3e7767 Author: Nils Gladitz AuthorDate: Thu Jun 4 11:57:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 11:57:00 2015 -0400 Merge topic 'vs-deterministic-guid' into next a3e77678 VS: Remove unintended assert http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a3e776782e41fd6c26ac13319434a9027c010b0e commit a3e776782e41fd6c26ac13319434a9027c010b0e Author: Nils Gladitz AuthorDate: Thu Jun 4 17:55:28 2015 +0200 Commit: Nils Gladitz CommitDate: Thu Jun 4 17:55:28 2015 +0200 VS: Remove unintended assert diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 35760d7..0ced245 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -958,8 +958,8 @@ std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) cmUuid uuidGenerator; std::vector uuidNamespace; - assert(uuidGenerator.StringToBinary( - "ee30c4be-5192-4fb0-b335-722a2dffe760", uuidNamespace)); + uuidGenerator.StringToBinary( + "ee30c4be-5192-4fb0-b335-722a2dffe760", uuidNamespace); std::string guid = uuidGenerator.FromMd5(uuidNamespace, input); ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudio7Generator.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From nilsgladitz at gmail.com Thu Jun 4 11:57:41 2015 From: nilsgladitz at gmail.com (Nils Gladitz) Date: Thu, 4 Jun 2015 11:57:41 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1487-gd6e9154 Message-ID: <20150604155741.CD776B0279@public.kitware.com> 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 d6e9154e368d61f355c897fd8d9374a416f01d78 (commit) via 10d3bf00fa084984dccd6ae6654dd1028969d150 (commit) from 7a802efbf4512c9038083a786be910078f058f7a (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=d6e9154e368d61f355c897fd8d9374a416f01d78 commit d6e9154e368d61f355c897fd8d9374a416f01d78 Merge: 7a802ef 10d3bf0 Author: Nils Gladitz AuthorDate: Thu Jun 4 11:57:40 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 11:57:40 2015 -0400 Merge topic 'vs-deterministic-guid' into next 10d3bf00 VS: Use cmUuid RFC 4122 compliant hash based UID generation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=10d3bf00fa084984dccd6ae6654dd1028969d150 commit 10d3bf00fa084984dccd6ae6654dd1028969d150 Author: Nils Gladitz AuthorDate: Thu Jun 4 15:48:03 2015 +0200 Commit: Nils Gladitz CommitDate: Thu Jun 4 17:57:17 2015 +0200 VS: Use cmUuid RFC 4122 compliant hash based UID generation diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index a242046..0ced245 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -15,6 +15,7 @@ #include "cmGeneratedFileStream.h" #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" +#include "cmUuid.h" #include "cmake.h" #include @@ -953,14 +954,15 @@ std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) std::string input = this->CMakeInstance->GetState()->GetBinaryDirectory(); input += "|"; input += name; - std::string md5 = cmSystemTools::ComputeStringMD5(input); - assert(md5.length() == 32); - std::string const& guid = - (md5.substr( 0,8)+"-"+ - md5.substr( 8,4)+"-"+ - md5.substr(12,4)+"-"+ - md5.substr(16,4)+"-"+ - md5.substr(20,12)); + + cmUuid uuidGenerator; + + std::vector uuidNamespace; + uuidGenerator.StringToBinary( + "ee30c4be-5192-4fb0-b335-722a2dffe760", uuidNamespace); + + std::string guid = uuidGenerator.FromMd5(uuidNamespace, input); + return cmSystemTools::UpperCase(guid); } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Thu Jun 4 15:34:11 2015 From: steveire at gmail.com (Stephen Kelly) Date: Thu, 4 Jun 2015 15:34:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1491-g769f02c Message-ID: <20150604193411.E9BF5B0064@public.kitware.com> 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 769f02cab22f0679b53772589b22d6fcf0105a45 (commit) via 4e5c70abe27997f17318cc6aca38eeddec486798 (commit) via 7b9c75860d25479a153831740d289e8aca540f4d (commit) via 1b323949fe6770fa36846a5a85d049121c7ce2c4 (commit) from d6e9154e368d61f355c897fd8d9374a416f01d78 (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=769f02cab22f0679b53772589b22d6fcf0105a45 commit 769f02cab22f0679b53772589b22d6fcf0105a45 Merge: d6e9154 4e5c70a Author: Stephen Kelly AuthorDate: Thu Jun 4 15:34:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 15:34:07 2015 -0400 Merge topic 'extract-cmLinkedTree' into next 4e5c70ab cmState: Extract a cmLinkedTree container adaptor. 7b9c7586 cmState: Group BuildsystemDirectory state together in a struct. 1b323949 cmState: Extend Snapshot concept with a SnapshotType. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4e5c70abe27997f17318cc6aca38eeddec486798 commit 4e5c70abe27997f17318cc6aca38eeddec486798 Author: Stephen Kelly AuthorDate: Sat May 23 00:04:09 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 21:20:59 2015 +0200 cmState: Extract a cmLinkedTree container adaptor. This will be used to contain most of the content of the cmState in several different trees. Refer to the BuildsystemDirectory state from the SnapshotData state. Currently these trees have the same structure, but that will change when we have more snapshot types. diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index a7adb51..e8d5107 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -281,6 +281,7 @@ set(SRCS cmInstallTargetGenerator.cxx cmInstallDirectoryGenerator.h cmInstallDirectoryGenerator.cxx + cmLinkedTree.h cmListFileCache.cxx cmListFileCache.h cmListFileLexer.c diff --git a/Source/cmLinkedTree.h b/Source/cmLinkedTree.h new file mode 100644 index 0000000..d2339c4 --- /dev/null +++ b/Source/cmLinkedTree.h @@ -0,0 +1,164 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2015 Stephen Kelly + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmLinkedTree_h +#define cmLinkedTree_h + +#include "cmStandardIncludes.h" + +#include + +/** + @brief A adaptor for traversing a tree structure in a vector + + This class is not intended to be wholly generic like a standard library + container adaptor. Mostly it exists to facilitate code sharing for the + needs of the cmState. For example, the Truncate() method is a specific + requirement of the cmState. + + An empty cmLinkedTree provides a Root() method, and an Extend() method, + each of which return iterators. A Tree can be built up by extending + from the root, and then extending from any other iterator. + + An iterator resulting from this tree construction can be + forward-only-iterated toward the root. Extending the tree never + invalidates existing iterators. + */ +template +class cmLinkedTree +{ + typedef typename std::vector::size_type PositionType; + typedef T* PointerType; + typedef T& ReferenceType; +public: + class iterator : public std::iterator + { + friend class cmLinkedTree; + cmLinkedTree* Tree; + + // The Position is always 'one past the end'. + PositionType Position; + + iterator(cmLinkedTree* tree, PositionType pos) + : Tree(tree), Position(pos) + { + + } + + public: + iterator() + : Tree(0), Position(0) + { + + } + + void operator++() + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + assert(this->Position <= this->Tree->Data.size()); + assert(this->Position > 0); + this->Position = this->Tree->UpPositions[this->Position - 1]; + } + + PointerType operator->() const + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + assert(this->Position <= this->Tree->Data.size()); + assert(this->Position > 0); + return this->Tree->GetPointer(this->Position - 1); + } + + PointerType operator->() + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + assert(this->Position <= this->Tree->Data.size()); + assert(this->Position > 0); + return this->Tree->GetPointer(this->Position - 1); + } + + bool operator==(iterator other) const + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + assert(this->Tree == other.Tree); + return this->Position == other.Position; + } + + bool operator!=(iterator other) const + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + return !(*this == other); + } + + bool IsValid() const + { + if (!this->Tree) + { + return false; + } + return this->Position <= this->Tree->Data.size(); + } + }; + + iterator Root() const + { + return iterator(const_cast(this), 0); + } + + iterator Extend(iterator it) + { + return Extend_impl(it, T()); + } + + iterator Extend(iterator it, T t) + { + return Extend_impl(it, t); + } + + iterator Truncate() + { + assert(this->UpPositions.size() > 0); + this->UpPositions.erase(this->UpPositions.begin() + 1, + this->UpPositions.end()); + assert(this->Data.size() > 0); + this->Data.erase(this->Data.begin() + 1, this->Data.end()); + return iterator(this, 1); + } + +private: + T& GetReference(PositionType pos) + { + return this->Data[pos]; + } + + T* GetPointer(PositionType pos) + { + return &this->Data[pos]; + } + + iterator Extend_impl(iterator it, T t) + { + assert(this->UpPositions.size() == this->Data.size()); + assert(it.Position <= this->UpPositions.size()); + this->UpPositions.push_back(it.Position); + this->Data.push_back(t); + return iterator(this, this->UpPositions.size()); + } + + std::vector Data; + std::vector UpPositions; +}; + +#endif diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 161cee4..a2ebb24 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -22,8 +22,8 @@ struct cmState::SnapshotDataType { cmState::PositionType DirectoryParent; cmState::SnapshotType SnapshotType; - std::vector::size_type - BuildSystemDirectoryPosition; + cmLinkedTree::iterator + BuildSystemDirectory; }; struct cmState::BuildsystemDirectoryStateType @@ -224,13 +224,8 @@ void cmState::Reset() this->GlobalProperties.clear(); this->PropertyDefinitions.clear(); - assert(this->BuildsystemDirectory.size() > 0); - assert(this->SnapshotData.size() > 0); - - this->BuildsystemDirectory.erase(this->BuildsystemDirectory.begin() + 1, - this->BuildsystemDirectory.end()); - this->SnapshotData.erase(this->SnapshotData.begin() + 1, - this->SnapshotData.end()); + this->BuildsystemDirectory.Truncate(); + this->SnapshotData.Truncate(); this->DefineProperty ("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY, @@ -620,9 +615,7 @@ void cmState::Snapshot::ComputeRelativePathTopSource() result = currentSource; } } - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - this->State->BuildsystemDirectory[pos].RelativePathTopSource = result; + this->Position->BuildSystemDirectory->RelativePathTopSource = result; } void cmState::Snapshot::ComputeRelativePathTopBinary() @@ -656,30 +649,26 @@ void cmState::Snapshot::ComputeRelativePathTopBinary() } } - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; // The current working directory on Windows cannot be a network // path. Therefore relative paths cannot work when the binary tree // is a network path. if(result.size() < 2 || result.substr(0, 2) != "//") { - this->State->BuildsystemDirectory[pos].RelativePathTopBinary = result; + this->Position->BuildSystemDirectory->RelativePathTopBinary = result; } else { - this->State->BuildsystemDirectory[pos].RelativePathTopBinary = ""; + this->Position->BuildSystemDirectory->RelativePathTopBinary = ""; } } cmState::Snapshot cmState::CreateBaseSnapshot() { - PositionType pos = 0; - this->SnapshotData.resize(1); - SnapshotDataType& snp = this->SnapshotData.back(); - snp.DirectoryParent = 0; - snp.SnapshotType = BuildsystemDirectoryType; - snp.BuildSystemDirectoryPosition = 0; - this->BuildsystemDirectory.resize(1); + PositionType pos = this->SnapshotData.Extend(this->SnapshotData.Root()); + pos->DirectoryParent = this->SnapshotData.Root(); + pos->SnapshotType = BuildsystemDirectoryType; + pos->BuildSystemDirectory = + this->BuildsystemDirectory.Extend(this->BuildsystemDirectory.Root()); return cmState::Snapshot(this, pos); } @@ -687,13 +676,12 @@ cmState::Snapshot cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot) { assert(originSnapshot.IsValid()); - PositionType pos = this->SnapshotData.size(); - this->SnapshotData.resize(this->SnapshotData.size() + 1); - SnapshotDataType& snp = this->SnapshotData.back(); - snp.DirectoryParent = originSnapshot.Position; - snp.SnapshotType = BuildsystemDirectoryType; - snp.BuildSystemDirectoryPosition = this->BuildsystemDirectory.size(); - this->BuildsystemDirectory.resize(this->BuildsystemDirectory.size() + 1); + PositionType pos = this->SnapshotData.Extend(originSnapshot.Position); + pos->DirectoryParent = originSnapshot.Position; + pos->SnapshotType = BuildsystemDirectoryType; + pos->BuildSystemDirectory = + this->BuildsystemDirectory.Extend( + originSnapshot.Position->BuildSystemDirectory); return cmState::Snapshot(this, pos); } @@ -706,112 +694,94 @@ cmState::Snapshot::Snapshot(cmState* state, PositionType position) const char* cmState::Snapshot::GetCurrentSourceDirectory() const { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - return this->State->BuildsystemDirectory[pos].Location.c_str(); + return this->Position->BuildSystemDirectory->Location.c_str(); } void cmState::Snapshot::SetCurrentSourceDirectory(std::string const& dir) { assert(this->State); - assert(this->State->SnapshotData.size() > this->Position); - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - std::string& loc = this->State->BuildsystemDirectory[pos].Location; + std::string& loc = this->Position->BuildSystemDirectory->Location; loc = dir; cmSystemTools::ConvertToUnixSlashes(loc); loc = cmSystemTools::CollapseFullPath(loc); cmSystemTools::SplitPath( loc, - this->State->BuildsystemDirectory[pos].CurrentSourceDirectoryComponents); + this->Position->BuildSystemDirectory->CurrentSourceDirectoryComponents); this->ComputeRelativePathTopSource(); } const char* cmState::Snapshot::GetCurrentBinaryDirectory() const { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - return this->State->BuildsystemDirectory[pos].OutputLocation.c_str(); + return this->Position->BuildSystemDirectory->OutputLocation.c_str(); } void cmState::Snapshot::SetCurrentBinaryDirectory(std::string const& dir) { - assert(this->State->SnapshotData.size() > this->Position); - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - std::string& loc = this->State->BuildsystemDirectory[pos].OutputLocation; + std::string& loc = this->Position->BuildSystemDirectory->OutputLocation; loc = dir; cmSystemTools::ConvertToUnixSlashes(loc); loc = cmSystemTools::CollapseFullPath(loc); cmSystemTools::SplitPath( loc, - this->State->BuildsystemDirectory[pos].CurrentBinaryDirectoryComponents); + this->Position->BuildSystemDirectory->CurrentBinaryDirectoryComponents); this->ComputeRelativePathTopBinary(); } std::vector const& cmState::Snapshot::GetCurrentSourceDirectoryComponents() { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - return this->State - ->BuildsystemDirectory[pos].CurrentSourceDirectoryComponents; + return this->Position->BuildSystemDirectory + ->CurrentSourceDirectoryComponents; } std::vector const& cmState::Snapshot::GetCurrentBinaryDirectoryComponents() { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - return this->State - ->BuildsystemDirectory[pos].CurrentBinaryDirectoryComponents; + return this->Position->BuildSystemDirectory + ->CurrentBinaryDirectoryComponents; } const char* cmState::Snapshot::GetRelativePathTopSource() const { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - return this->State->BuildsystemDirectory[pos].RelativePathTopSource.c_str(); + return this->Position->BuildSystemDirectory->RelativePathTopSource.c_str(); } const char* cmState::Snapshot::GetRelativePathTopBinary() const { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - return this->State->BuildsystemDirectory[pos].RelativePathTopBinary.c_str(); + return this->Position->BuildSystemDirectory->RelativePathTopBinary.c_str(); } void cmState::Snapshot::SetRelativePathTopSource(const char* dir) { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - this->State->BuildsystemDirectory[pos].RelativePathTopSource = dir; + this->Position->BuildSystemDirectory->RelativePathTopSource = dir; } void cmState::Snapshot::SetRelativePathTopBinary(const char* dir) { - PositionType pos = - this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; - this->State->BuildsystemDirectory[pos].RelativePathTopBinary = dir; + this->Position->BuildSystemDirectory->RelativePathTopBinary = dir; } bool cmState::Snapshot::IsValid() const { - return this->State ? true : false; + return this->State && this->Position.IsValid() + ? this->Position != this->State->SnapshotData.Root() + : false; } cmState::Snapshot cmState::Snapshot::GetBuildsystemDirectoryParent() const { Snapshot snapshot; - if (!this->State || this->Position == 0) + if (!this->State || this->Position == this->State->SnapshotData.Root()) { return snapshot; } - PositionType parentPos = - this->State->SnapshotData[this->Position].DirectoryParent; - snapshot = Snapshot(this->State, parentPos); + PositionType parentPos = this->Position->DirectoryParent; + if (parentPos != this->State->SnapshotData.Root()) + { + snapshot = Snapshot(this->State, parentPos); + } return snapshot; } diff --git a/Source/cmState.h b/Source/cmState.h index 4589a72..1411e2f 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -15,6 +15,7 @@ #include "cmStandardIncludes.h" #include "cmPropertyDefinitionMap.h" #include "cmPropertyMap.h" +#include "cmLinkedTree.h" class cmake; class cmCommand; @@ -22,7 +23,7 @@ class cmCommand; class cmState { struct SnapshotDataType; - typedef std::vector::size_type PositionType; + typedef cmLinkedTree::iterator PositionType; friend class Snapshot; public: cmState(cmake* cm); @@ -35,7 +36,7 @@ public: class Snapshot { public: - Snapshot(cmState* state = 0, PositionType position = 0); + Snapshot(cmState* state = 0, PositionType position = PositionType()); const char* GetCurrentSourceDirectory() const; void SetCurrentSourceDirectory(std::string const& dir); @@ -166,9 +167,9 @@ private: cmake* CMakeInstance; struct BuildsystemDirectoryStateType; - std::vector BuildsystemDirectory; + cmLinkedTree BuildsystemDirectory; - std::vector SnapshotData; + cmLinkedTree SnapshotData; std::vector SourceDirectoryComponents; std::vector BinaryDirectoryComponents; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7b9c75860d25479a153831740d289e8aca540f4d commit 7b9c75860d25479a153831740d289e8aca540f4d Author: Stephen Kelly AuthorDate: Sat May 23 10:37:07 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:44:37 2015 +0200 cmState: Group BuildsystemDirectory state together in a struct. It needs to be snapshotted independently of other state. diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 4691a00..161cee4 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -22,6 +22,24 @@ struct cmState::SnapshotDataType { cmState::PositionType DirectoryParent; cmState::SnapshotType SnapshotType; + std::vector::size_type + BuildSystemDirectoryPosition; +}; + +struct cmState::BuildsystemDirectoryStateType +{ + std::string Location; + std::string OutputLocation; + + std::vector CurrentSourceDirectoryComponents; + std::vector CurrentBinaryDirectoryComponents; + // The top-most directories for relative path conversion. Both the + // source and destination location of a relative path conversion + // must be underneath one of these directories (both under source or + // both under binary) in order for the relative path to be evaluated + // safely by the build tools. + std::string RelativePathTopSource; + std::string RelativePathTopBinary; }; cmState::cmState(cmake* cm) @@ -206,29 +224,13 @@ void cmState::Reset() this->GlobalProperties.clear(); this->PropertyDefinitions.clear(); - assert(this->Locations.size() > 0); - assert(this->OutputLocations.size() > 0); + assert(this->BuildsystemDirectory.size() > 0); assert(this->SnapshotData.size() > 0); - assert(this->CurrentSourceDirectoryComponents.size() > 0); - assert(this->CurrentBinaryDirectoryComponents.size() > 0); - assert(this->RelativePathTopSource.size() > 0); - assert(this->RelativePathTopBinary.size() > 0); - - this->Locations.erase(this->Locations.begin() + 1, this->Locations.end()); - this->OutputLocations.erase(this->OutputLocations.begin() + 1, - this->OutputLocations.end()); + + this->BuildsystemDirectory.erase(this->BuildsystemDirectory.begin() + 1, + this->BuildsystemDirectory.end()); this->SnapshotData.erase(this->SnapshotData.begin() + 1, this->SnapshotData.end()); - this->CurrentSourceDirectoryComponents.erase( - this->CurrentSourceDirectoryComponents.begin() + 1, - this->CurrentSourceDirectoryComponents.end()); - this->CurrentBinaryDirectoryComponents.erase( - this->CurrentBinaryDirectoryComponents.begin() + 1, - this->CurrentBinaryDirectoryComponents.end()); - this->RelativePathTopSource.erase(this->RelativePathTopSource.begin() + 1, - this->RelativePathTopSource.end()); - this->RelativePathTopBinary.erase(this->RelativePathTopBinary.begin() + 1, - this->RelativePathTopBinary.end()); this->DefineProperty ("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY, @@ -618,7 +620,9 @@ void cmState::Snapshot::ComputeRelativePathTopSource() result = currentSource; } } - this->State->RelativePathTopSource[this->Position] = result; + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + this->State->BuildsystemDirectory[pos].RelativePathTopSource = result; } void cmState::Snapshot::ComputeRelativePathTopBinary() @@ -652,16 +656,18 @@ void cmState::Snapshot::ComputeRelativePathTopBinary() } } + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; // The current working directory on Windows cannot be a network // path. Therefore relative paths cannot work when the binary tree // is a network path. if(result.size() < 2 || result.substr(0, 2) != "//") { - this->State->RelativePathTopBinary[this->Position] = result; + this->State->BuildsystemDirectory[pos].RelativePathTopBinary = result; } else { - this->State->RelativePathTopBinary[this->Position] = ""; + this->State->BuildsystemDirectory[pos].RelativePathTopBinary = ""; } } @@ -672,12 +678,8 @@ cmState::Snapshot cmState::CreateBaseSnapshot() SnapshotDataType& snp = this->SnapshotData.back(); snp.DirectoryParent = 0; snp.SnapshotType = BuildsystemDirectoryType; - this->Locations.resize(1); - this->OutputLocations.resize(1); - this->CurrentSourceDirectoryComponents.resize(1); - this->CurrentBinaryDirectoryComponents.resize(1); - this->RelativePathTopSource.resize(1); - this->RelativePathTopBinary.resize(1); + snp.BuildSystemDirectoryPosition = 0; + this->BuildsystemDirectory.resize(1); return cmState::Snapshot(this, pos); } @@ -690,14 +692,8 @@ cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot) SnapshotDataType& snp = this->SnapshotData.back(); snp.DirectoryParent = originSnapshot.Position; snp.SnapshotType = BuildsystemDirectoryType; - this->Locations.resize(this->Locations.size() + 1); - this->OutputLocations.resize(this->OutputLocations.size() + 1); - this->CurrentSourceDirectoryComponents.resize( - this->CurrentSourceDirectoryComponents.size() + 1); - this->CurrentBinaryDirectoryComponents.resize( - this->CurrentBinaryDirectoryComponents.size() + 1); - this->RelativePathTopSource.resize(this->RelativePathTopSource.size() + 1); - this->RelativePathTopBinary.resize(this->RelativePathTopBinary.size() + 1); + snp.BuildSystemDirectoryPosition = this->BuildsystemDirectory.size(); + this->BuildsystemDirectory.resize(this->BuildsystemDirectory.size() + 1); return cmState::Snapshot(this, pos); } @@ -710,76 +706,95 @@ cmState::Snapshot::Snapshot(cmState* state, PositionType position) const char* cmState::Snapshot::GetCurrentSourceDirectory() const { - return this->State->Locations[this->Position].c_str(); + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + return this->State->BuildsystemDirectory[pos].Location.c_str(); } void cmState::Snapshot::SetCurrentSourceDirectory(std::string const& dir) { assert(this->State); - assert(this->State->Locations.size() > this->Position); - this->State->Locations[this->Position] = dir; - cmSystemTools::ConvertToUnixSlashes( - this->State->Locations[this->Position]); - this->State->Locations[this->Position] = - cmSystemTools::CollapseFullPath(this->State->Locations[this->Position]); + assert(this->State->SnapshotData.size() > this->Position); + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + std::string& loc = this->State->BuildsystemDirectory[pos].Location; + loc = dir; + cmSystemTools::ConvertToUnixSlashes(loc); + loc = cmSystemTools::CollapseFullPath(loc); cmSystemTools::SplitPath( - this->State->Locations[this->Position], - this->State->CurrentSourceDirectoryComponents[this->Position]); + loc, + this->State->BuildsystemDirectory[pos].CurrentSourceDirectoryComponents); this->ComputeRelativePathTopSource(); } const char* cmState::Snapshot::GetCurrentBinaryDirectory() const { - return this->State->OutputLocations[this->Position].c_str(); + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + return this->State->BuildsystemDirectory[pos].OutputLocation.c_str(); } void cmState::Snapshot::SetCurrentBinaryDirectory(std::string const& dir) { - assert(this->State->OutputLocations.size() > this->Position); - this->State->OutputLocations[this->Position] = dir; - cmSystemTools::ConvertToUnixSlashes( - this->State->OutputLocations[this->Position]); - this->State->OutputLocations[this->Position] = - cmSystemTools::CollapseFullPath( - this->State->OutputLocations[this->Position]); + assert(this->State->SnapshotData.size() > this->Position); + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + std::string& loc = this->State->BuildsystemDirectory[pos].OutputLocation; + loc = dir; + cmSystemTools::ConvertToUnixSlashes(loc); + loc = cmSystemTools::CollapseFullPath(loc); cmSystemTools::SplitPath( - this->State->OutputLocations[this->Position], - this->State->CurrentBinaryDirectoryComponents[this->Position]); + loc, + this->State->BuildsystemDirectory[pos].CurrentBinaryDirectoryComponents); this->ComputeRelativePathTopBinary(); } std::vector const& cmState::Snapshot::GetCurrentSourceDirectoryComponents() { - return this->State->CurrentSourceDirectoryComponents[this->Position]; + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + return this->State + ->BuildsystemDirectory[pos].CurrentSourceDirectoryComponents; } std::vector const& cmState::Snapshot::GetCurrentBinaryDirectoryComponents() { - return this->State->CurrentBinaryDirectoryComponents[this->Position]; + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + return this->State + ->BuildsystemDirectory[pos].CurrentBinaryDirectoryComponents; } const char* cmState::Snapshot::GetRelativePathTopSource() const { - return this->State->RelativePathTopSource[this->Position].c_str(); + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + return this->State->BuildsystemDirectory[pos].RelativePathTopSource.c_str(); } const char* cmState::Snapshot::GetRelativePathTopBinary() const { - return this->State->RelativePathTopBinary[this->Position].c_str(); + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + return this->State->BuildsystemDirectory[pos].RelativePathTopBinary.c_str(); } void cmState::Snapshot::SetRelativePathTopSource(const char* dir) { - this->State->RelativePathTopSource[this->Position] = dir; + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + this->State->BuildsystemDirectory[pos].RelativePathTopSource = dir; } void cmState::Snapshot::SetRelativePathTopBinary(const char* dir) { - this->State->RelativePathTopBinary[this->Position] = dir; + PositionType pos = + this->State->SnapshotData[this->Position].BuildSystemDirectoryPosition; + this->State->BuildsystemDirectory[pos].RelativePathTopBinary = dir; } bool cmState::Snapshot::IsValid() const diff --git a/Source/cmState.h b/Source/cmState.h index 024c9a9..4589a72 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -164,19 +164,11 @@ private: std::map Commands; cmPropertyMap GlobalProperties; cmake* CMakeInstance; - std::vector Locations; - std::vector OutputLocations; - std::vector SnapshotData; - std::vector > CurrentSourceDirectoryComponents; - std::vector > CurrentBinaryDirectoryComponents; - // The top-most directories for relative path conversion. Both the - // source and destination location of a relative path conversion - // must be underneath one of these directories (both under source or - // both under binary) in order for the relative path to be evaluated - // safely by the build tools. - std::vector RelativePathTopSource; - std::vector RelativePathTopBinary; + struct BuildsystemDirectoryStateType; + std::vector BuildsystemDirectory; + + std::vector SnapshotData; std::vector SourceDirectoryComponents; std::vector BinaryDirectoryComponents; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1b323949fe6770fa36846a5a85d049121c7ce2c4 commit 1b323949fe6770fa36846a5a85d049121c7ce2c4 Author: Stephen Kelly AuthorDate: Sat May 23 09:54:07 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:44:37 2015 +0200 cmState: Extend Snapshot concept with a SnapshotType. Store it together with the Parent position. diff --git a/Source/cmState.cxx b/Source/cmState.cxx index c6fb299..4691a00 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -18,6 +18,12 @@ #include +struct cmState::SnapshotDataType +{ + cmState::PositionType DirectoryParent; + cmState::SnapshotType SnapshotType; +}; + cmState::cmState(cmake* cm) : CMakeInstance(cm), IsInTryCompile(false), @@ -202,7 +208,7 @@ void cmState::Reset() assert(this->Locations.size() > 0); assert(this->OutputLocations.size() > 0); - assert(this->ParentPositions.size() > 0); + assert(this->SnapshotData.size() > 0); assert(this->CurrentSourceDirectoryComponents.size() > 0); assert(this->CurrentBinaryDirectoryComponents.size() > 0); assert(this->RelativePathTopSource.size() > 0); @@ -211,8 +217,8 @@ void cmState::Reset() this->Locations.erase(this->Locations.begin() + 1, this->Locations.end()); this->OutputLocations.erase(this->OutputLocations.begin() + 1, this->OutputLocations.end()); - this->ParentPositions.erase(this->ParentPositions.begin() + 1, - this->ParentPositions.end()); + this->SnapshotData.erase(this->SnapshotData.begin() + 1, + this->SnapshotData.end()); this->CurrentSourceDirectoryComponents.erase( this->CurrentSourceDirectoryComponents.begin() + 1, this->CurrentSourceDirectoryComponents.end()); @@ -662,7 +668,10 @@ void cmState::Snapshot::ComputeRelativePathTopBinary() cmState::Snapshot cmState::CreateBaseSnapshot() { PositionType pos = 0; - this->ParentPositions.push_back(pos); + this->SnapshotData.resize(1); + SnapshotDataType& snp = this->SnapshotData.back(); + snp.DirectoryParent = 0; + snp.SnapshotType = BuildsystemDirectoryType; this->Locations.resize(1); this->OutputLocations.resize(1); this->CurrentSourceDirectoryComponents.resize(1); @@ -676,8 +685,11 @@ cmState::Snapshot cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot) { assert(originSnapshot.IsValid()); - PositionType pos = this->ParentPositions.size(); - this->ParentPositions.push_back(originSnapshot.Position); + PositionType pos = this->SnapshotData.size(); + this->SnapshotData.resize(this->SnapshotData.size() + 1); + SnapshotDataType& snp = this->SnapshotData.back(); + snp.DirectoryParent = originSnapshot.Position; + snp.SnapshotType = BuildsystemDirectoryType; this->Locations.resize(this->Locations.size() + 1); this->OutputLocations.resize(this->OutputLocations.size() + 1); this->CurrentSourceDirectoryComponents.resize( @@ -782,7 +794,8 @@ cmState::Snapshot cmState::Snapshot::GetBuildsystemDirectoryParent() const { return snapshot; } - PositionType parentPos = this->State->ParentPositions[this->Position]; + PositionType parentPos = + this->State->SnapshotData[this->Position].DirectoryParent; snapshot = Snapshot(this->State, parentPos); return snapshot; diff --git a/Source/cmState.h b/Source/cmState.h index 60b024f..024c9a9 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -21,12 +21,18 @@ class cmCommand; class cmState { + struct SnapshotDataType; typedef std::vector::size_type PositionType; friend class Snapshot; public: cmState(cmake* cm); ~cmState(); + enum SnapshotType + { + BuildsystemDirectoryType + }; + class Snapshot { public: Snapshot(cmState* state = 0, PositionType position = 0); @@ -160,7 +166,7 @@ private: cmake* CMakeInstance; std::vector Locations; std::vector OutputLocations; - std::vector ParentPositions; + std::vector SnapshotData; std::vector > CurrentSourceDirectoryComponents; std::vector > CurrentBinaryDirectoryComponents; ----------------------------------------------------------------------- Summary of changes: Source/CMakeLists.txt | 1 + Source/cmLinkedTree.h | 164 +++++++++++++++++++++++++++++++++++++++++++++++++ Source/cmState.cxx | 144 +++++++++++++++++++++---------------------- Source/cmState.h | 29 +++++---- 4 files changed, 250 insertions(+), 88 deletions(-) create mode 100644 Source/cmLinkedTree.h hooks/post-receive -- CMake From steveire at gmail.com Thu Jun 4 16:28:26 2015 From: steveire at gmail.com (Stephen Kelly) Date: Thu, 4 Jun 2015 16:28:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1497-gc27ccf3 Message-ID: <20150604202826.22C21AFDFC@public.kitware.com> 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 c27ccf3f4bf1ff5c0460a04e5eb922aaefcca102 (commit) via 09a2d64e53add41e64b6fdcefb8fb27a572bec5d (commit) via 7adb2986543d84509f02d39f7c1bdeb74b2a2c0e (commit) via 9e7d00f54032ceacafa586e709fc7b1a41f6f268 (commit) via ca140c2e898ca74a7daa305449b136b1294a41f0 (commit) via d5dc4169ac1c4dd5abd385b1e8499119df88c657 (commit) from 769f02cab22f0679b53772589b22d6fcf0105a45 (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=c27ccf3f4bf1ff5c0460a04e5eb922aaefcca102 commit c27ccf3f4bf1ff5c0460a04e5eb922aaefcca102 Merge: 769f02c 09a2d64 Author: Stephen Kelly AuthorDate: Thu Jun 4 16:28:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 16:28:25 2015 -0400 Merge topic 'clean-up-cmMakefile' into next 09a2d64e cmMakefile: Add a method to abstract access to execution file. 7adb2986 cmMakefile: Out-of-line the cmMakefileCall. 9e7d00f5 cmMakefile: Inline PushScope into PushFunctionScope. ca140c2e cmMakefile: Create a unified raii for macro scopes. d5dc4169 cmMakefile: Create a unified raii for function scopes. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=09a2d64e53add41e64b6fdcefb8fb27a572bec5d commit 09a2d64e53add41e64b6fdcefb8fb27a572bec5d Author: Stephen Kelly AuthorDate: Fri May 29 22:48:51 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 22:08:24 2015 +0200 cmMakefile: Add a method to abstract access to execution file. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d4bf6c1..e94cffa 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -306,6 +306,15 @@ cmListFileContext cmMakefile::GetExecutionContext() const return *this->CallStack.back().Context; } +std::string cmMakefile::GetExecutionFilePath() const +{ + if (this->CallStack.empty()) + { + return std::string(); + } + return this->CallStack.back().Context->FilePath; +} + //---------------------------------------------------------------------------- void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 0b328e9..1806b5b 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -576,6 +576,8 @@ public: cmListFileBacktrace GetBacktrace() const; cmListFileBacktrace GetBacktrace(cmListFileContext const& lfc) const; cmListFileContext GetExecutionContext() const; + std::string GetExecutionFilePath() const; + /** * Get the vector of files created by this makefile http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7adb2986543d84509f02d39f7c1bdeb74b2a2c0e commit 7adb2986543d84509f02d39f7c1bdeb74b2a2c0e Author: Stephen Kelly AuthorDate: Sun May 31 19:03:46 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 22:08:24 2015 +0200 cmMakefile: Out-of-line the cmMakefileCall. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 2072418..d4bf6c1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -5494,3 +5494,15 @@ cmMakefile::MacroPushPop::~MacroPushPop() { this->Makefile->PopMacroScope(this->ReportError); } + +cmMakefileCall::cmMakefileCall(cmMakefile* mf, const cmListFileContext& lfc, + cmExecutionStatus& status): Makefile(mf) +{ + cmMakefile::CallStackEntry entry = {&lfc, &status}; + this->Makefile->CallStack.push_back(entry); +} + +cmMakefileCall::~cmMakefileCall() +{ + this->Makefile->CallStack.pop_back(); +} diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 0914a99..0b328e9 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -1084,15 +1084,8 @@ class cmMakefileCall public: cmMakefileCall(cmMakefile* mf, cmListFileContext const& lfc, - cmExecutionStatus& status): Makefile(mf) - { - cmMakefile::CallStackEntry entry = {&lfc, &status}; - this->Makefile->CallStack.push_back(entry); - } - ~cmMakefileCall() - { - this->Makefile->CallStack.pop_back(); - } + cmExecutionStatus& status); + ~cmMakefileCall(); private: cmMakefile* Makefile; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9e7d00f54032ceacafa586e709fc7b1a41f6f268 commit 9e7d00f54032ceacafa586e709fc7b1a41f6f268 Author: Stephen Kelly AuthorDate: Sun May 31 23:45:52 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 22:08:23 2015 +0200 cmMakefile: Inline PushScope into PushFunctionScope. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d3a8121..2072418 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1564,7 +1564,13 @@ void cmMakefile::InitializeFromParent() void cmMakefile::PushFunctionScope(const cmPolicies::PolicyMap& pm) { - this->PushScope(); + this->Internal->PushDefinitions(); + + this->PushLoopBlockBarrier(); + +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GetGlobalGenerator()->GetFileLockPool().PushFunctionScope(); +#endif this->PushFunctionBlockerBarrier(); @@ -1579,7 +1585,15 @@ void cmMakefile::PopFunctionScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); - this->PopScope(); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GetGlobalGenerator()->GetFileLockPool().PopFunctionScope(); +#endif + + this->PopLoopBlockBarrier(); + + this->CheckForUnusedVariables(); + + this->Internal->PopDefinitions(); } void cmMakefile::PushMacroScope(const cmPolicies::PolicyMap& pm) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ca140c2e898ca74a7daa305449b136b1294a41f0 commit ca140c2e898ca74a7daa305449b136b1294a41f0 Author: Stephen Kelly AuthorDate: Sun May 31 18:32:01 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 22:08:23 2015 +0200 cmMakefile: Create a unified raii for macro scopes. diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 7ac4432..028ab62 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -96,12 +96,8 @@ bool cmMacroHelperCommand::InvokeInitialPass return false; } - // Enforce matching logical blocks inside the macro. - cmMakefile::LexicalPushPop lexScope(this->Makefile); - - // Push a weak policy scope which restores the policies recorded at - // macro creation. - cmMakefile::PolicyPushPop polScope(this->Makefile, true, this->Policies); + cmMakefile::MacroPushPop macroScope(this->Makefile, + this->Policies); // set the value of argc std::ostringstream argcDefStream; @@ -191,8 +187,7 @@ bool cmMacroHelperCommand::InvokeInitialPass { // The error message should have already included the call stack // so we do not need to report an error here. - lexScope.Quiet(); - polScope.Quiet(); + macroScope.Quiet(); inStatus.SetNestedError(true); return false; } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7012701..d3a8121 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1582,6 +1582,22 @@ void cmMakefile::PopFunctionScope(bool reportError) this->PopScope(); } +void cmMakefile::PushMacroScope(const cmPolicies::PolicyMap& pm) +{ + this->PushFunctionBlockerBarrier(); + + this->PushPolicy(true, pm); + this->PushPolicyBarrier(); +} + +void cmMakefile::PopMacroScope(bool reportError) +{ + this->PopPolicyBarrier(reportError); + this->PopPolicy(); + + this->PopFunctionBlockerBarrier(reportError); +} + //---------------------------------------------------------------------------- class cmMakefileCurrent { @@ -5451,3 +5467,16 @@ cmMakefile::FunctionPushPop::~FunctionPushPop() { this->Makefile->PopFunctionScope(this->ReportError); } + + +cmMakefile::MacroPushPop::MacroPushPop(cmMakefile* mf, + const cmPolicies::PolicyMap& pm) + : Makefile(mf), ReportError(true) +{ + this->Makefile->PushMacroScope(pm); +} + +cmMakefile::MacroPushPop::~MacroPushPop() +{ + this->Makefile->PopMacroScope(this->ReportError); +} diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index ed9bc70..0914a99 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -759,8 +759,23 @@ public: bool ReportError; }; + class MacroPushPop + { + public: + MacroPushPop(cmMakefile* mf, + cmPolicies::PolicyMap const& pm); + ~MacroPushPop(); + + void Quiet() { this->ReportError = false; } + private: + cmMakefile* Makefile; + bool ReportError; + }; + void PushFunctionScope(cmPolicies::PolicyMap const& pm); void PopFunctionScope(bool reportError); + void PushMacroScope(cmPolicies::PolicyMap const& pm); + void PopMacroScope(bool reportError); void PushScope(); void PopScope(); void RaiseScope(const std::string& var, const char *value); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d5dc4169ac1c4dd5abd385b1e8499119df88c657 commit d5dc4169ac1c4dd5abd385b1e8499119df88c657 Author: Stephen Kelly AuthorDate: Sun May 31 18:19:58 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 22:08:23 2015 +0200 cmMakefile: Create a unified raii for function scopes. diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index 001adb1..dc6d2d2 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -73,7 +73,6 @@ public: cmPolicies::PolicyMap Policies; }; - bool cmFunctionHelperCommand::InvokeInitialPass (const std::vector& args, cmExecutionStatus & inStatus) @@ -93,14 +92,8 @@ bool cmFunctionHelperCommand::InvokeInitialPass return false; } - // we push a scope on the makefile - cmMakefile::ScopePushPop varScope(this->Makefile); - cmMakefile::LexicalPushPop lexScope(this->Makefile); - static_cast(varScope); - - // Push a weak policy scope which restores the policies recorded at - // function creation. - cmMakefile::PolicyPushPop polScope(this->Makefile, true, this->Policies); + cmMakefile::FunctionPushPop functionScope(this->Makefile, + this->Policies); // set the value of argc std::ostringstream strStream; @@ -145,8 +138,7 @@ bool cmFunctionHelperCommand::InvokeInitialPass { // The error message should have already included the call stack // so we do not need to report an error here. - lexScope.Quiet(); - polScope.Quiet(); + functionScope.Quiet(); inStatus.SetNestedError(true); return false; } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b5d976a..7012701 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1562,6 +1562,26 @@ void cmMakefile::InitializeFromParent() this->ImportedTargets = parent->ImportedTargets; } +void cmMakefile::PushFunctionScope(const cmPolicies::PolicyMap& pm) +{ + this->PushScope(); + + this->PushFunctionBlockerBarrier(); + + this->PushPolicy(true, pm); + this->PushPolicyBarrier(); +} + +void cmMakefile::PopFunctionScope(bool reportError) +{ + this->PopPolicyBarrier(reportError); + this->PopPolicy(); + + this->PopFunctionBlockerBarrier(reportError); + + this->PopScope(); +} + //---------------------------------------------------------------------------- class cmMakefileCurrent { @@ -5418,3 +5438,16 @@ AddRequiredTargetCFeature(cmTarget *target, const std::string& feature) const } return true; } + + +cmMakefile::FunctionPushPop::FunctionPushPop(cmMakefile* mf, + cmPolicies::PolicyMap const& pm) + : Makefile(mf), ReportError(true) +{ + this->Makefile->PushFunctionScope(pm); +} + +cmMakefile::FunctionPushPop::~FunctionPushPop() +{ + this->Makefile->PopFunctionScope(this->ReportError); +} diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 431ed08..ed9bc70 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -746,7 +746,21 @@ public: const std::vector& GetTestGenerators() const { return this->TestGenerators; } - // push and pop variable scopes + class FunctionPushPop + { + public: + FunctionPushPop(cmMakefile* mf, + cmPolicies::PolicyMap const& pm); + ~FunctionPushPop(); + + void Quiet() { this->ReportError = false; } + private: + cmMakefile* Makefile; + bool ReportError; + }; + + void PushFunctionScope(cmPolicies::PolicyMap const& pm); + void PopFunctionScope(bool reportError); void PushScope(); void PopScope(); void RaiseScope(const std::string& var, const char *value); ----------------------------------------------------------------------- Summary of changes: Source/cmFunctionCommand.cxx | 14 ++---- Source/cmMacroCommand.cxx | 11 ++--- Source/cmMakefile.cxx | 97 ++++++++++++++++++++++++++++++++++++++++++ Source/cmMakefile.h | 44 ++++++++++++++----- 4 files changed, 137 insertions(+), 29 deletions(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 4 16:57:46 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 4 Jun 2015 16:57:46 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1499-g37a62d1 Message-ID: <20150604205746.B601FB022C@public.kitware.com> 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 37a62d1369d416386f17c4d45b68dcf8806d755a (commit) via e3df38c4525346736a3bd509bed3dd0efc187b76 (commit) from c27ccf3f4bf1ff5c0460a04e5eb922aaefcca102 (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=37a62d1369d416386f17c4d45b68dcf8806d755a commit 37a62d1369d416386f17c4d45b68dcf8806d755a Merge: c27ccf3 e3df38c Author: Bill Hoffman AuthorDate: Thu Jun 4 16:57:45 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 16:57:45 2015 -0400 Merge topic 'compiler-launcher' into next e3df38c4 Add the ability to insert a compiler launching tool like ccache or distcc. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e3df38c4525346736a3bd509bed3dd0efc187b76 commit e3df38c4525346736a3bd509bed3dd0efc187b76 Author: Bill Hoffman AuthorDate: Thu Jun 4 15:56:56 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 4 15:56:56 2015 -0400 Add the ability to insert a compiler launching tool like ccache or distcc. This commit creates an ability to run tools like ccache or distcc by setting a _COMPILER_LAUNCHER property. This would replace the current practice of using COMPILER_ARG1. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 615254e..9a60a10 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -177,6 +177,7 @@ Properties on Targets /prop_tgt/JOB_POOL_COMPILE /prop_tgt/JOB_POOL_LINK /prop_tgt/LABELS + /prop_tgt/LANG_COMPILER_LAUNCHER /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE /prop_tgt/LANG_VISIBILITY_PRESET /prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index bd02f8b..2b92006 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -235,6 +235,7 @@ Variables that Control the Build /variable/CMAKE_INSTALL_NAME_DIR /variable/CMAKE_INSTALL_RPATH /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH + /variable/CMAKE_LANG_COMPILER_LAUNCHER /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE /variable/CMAKE_LANG_VISIBILITY_PRESET /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst new file mode 100644 index 0000000..8fbc852 --- /dev/null +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -0,0 +1,13 @@ +_COMPILER_LAUNCHER +--------------------------- + +This property is implemented only when ```` is ``C`` or ``CXX``. + +Specify a string containing a command line for a compiler launching tool. +The :ref:`Makefile Generators` and the :generator:`Ninja` generator will +run this tool and pass the compiler and its arguments to the tool. Some +example tools are distcc and ccache. + +This property is initialized by the value of +the :variable:`CMAKE__COMPILER_LAUNCER` variable if it is set +when a target is created. diff --git a/Help/release/dev/compiler-launcher.rst b/Help/release/dev/compiler-launcher.rst new file mode 100644 index 0000000..90991e5 --- /dev/null +++ b/Help/release/dev/compiler-launcher.rst @@ -0,0 +1,8 @@ +compiler-launcher +-------------- + +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator + learned to add compiler launcher tools like distcc and ccache along with the + compiler for ``C`` and ``CXX`` languages. See the + :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. diff --git a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst new file mode 100644 index 0000000..808422d --- /dev/null +++ b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst @@ -0,0 +1,6 @@ +CMAKE__COMPILER_LAUNCHER +--------------------------------- + +Default value for :prop_tgt:`_COMPILER_LAUNCHER` target property. +This variable is used to initialize the property on each target as it is +created. This is done only when ```` is ``C`` or ``CXX``. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7b88bc7..6c630a5 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -775,6 +775,26 @@ cmMakefileTargetGenerator } } + // Maybe insert a compiler launcher like ccache or distcc + if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) + { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char *clauncher = this->Target->GetProperty(clauncher_prop); + if (clauncher && *clauncher) + { + // handle the case where launcher has its own arguments inside + // the variable handling spaces in the path, etc. + std::string cmd, args; + cmSystemTools::SplitProgramFromArgs(clauncher, + cmd, args); + std::string run_launcher = + this->LocalGenerator->EscapeForShell(cmd); + run_launcher += args; + run_launcher += " "; + compileCommands.front().insert(0, run_launcher); + } + } + // Expand placeholders in the commands. for(std::vector::iterator i = compileCommands.begin(); i != compileCommands.end(); ++i) diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 879d6b7..3e3c9cd 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -475,6 +475,26 @@ cmNinjaTargetGenerator } } + // Maybe insert a compiler launcher like ccache or distcc + if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) + { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char *clauncher = this->Target->GetProperty(clauncher_prop); + if (clauncher && *clauncher) + { + // handle the case where launcher has its own arguments inside + // the variable handling spaces in the path, etc. + std::string cmd, args; + cmSystemTools::SplitProgramFromArgs(clauncher, + cmd, args); + std::string run_launcher = + this->LocalGenerator->EscapeForShell(cmd); + run_launcher += args; + run_launcher += " "; + compileCmds.front().insert(0, run_launcher); + } + } + if (!compileCmds.empty()) { compileCmds.front().insert(0, cldeps); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..e20f0af 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -333,10 +333,12 @@ void cmTarget::SetMakefile(cmMakefile* mf) this->SetPropertyDefault("MACOSX_BUNDLE", 0); this->SetPropertyDefault("MACOSX_RPATH", 0); this->SetPropertyDefault("NO_SYSTEM_FROM_IMPORTED", 0); + this->SetPropertyDefault("C_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("C_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("C_STANDARD", 0); this->SetPropertyDefault("C_STANDARD_REQUIRED", 0); this->SetPropertyDefault("C_EXTENSIONS", 0); + this->SetPropertyDefault("CXX_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("CXX_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("CXX_STANDARD", 0); this->SetPropertyDefault("CXX_STANDARD_REQUIRED", 0); diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..2a4108f 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -232,4 +232,5 @@ endif() if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) + add_RunCMake_test(CompilerLauncher) endif() diff --git a/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/C-launch.cmake b/Tests/RunCMake/CompilerLauncher/C-launch.cmake new file mode 100644 index 0000000..e66ca20 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(C.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/C.cmake b/Tests/RunCMake/CompilerLauncher/C.cmake new file mode 100644 index 0000000..7bf2b57 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C.cmake @@ -0,0 +1,4 @@ +enable_language(C) +set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_COMMAND} -E env USED_LAUNCHER=1") +set(CMAKE_VERBOSE_MAKEFILE TRUE) +add_executable(main main.c) diff --git a/Tests/RunCMake/CompilerLauncher/CMakeLists.txt b/Tests/RunCMake/CompilerLauncher/CMakeLists.txt new file mode 100644 index 0000000..18dfd26 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.2) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake b/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake new file mode 100644 index 0000000..3002c9d --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(CXX.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/CXX.cmake b/Tests/RunCMake/CompilerLauncher/CXX.cmake new file mode 100644 index 0000000..66e75c9 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX.cmake @@ -0,0 +1,4 @@ +enable_language(CXX) +set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_COMMAND} -E env USED_LAUNCHER=1") +set(CMAKE_VERBOSE_MAKEFILE TRUE) +add_executable(main main.cxx) diff --git a/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake b/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake new file mode 100644 index 0000000..5884d5c --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake @@ -0,0 +1,23 @@ +include(RunCMake) + +function(run_compiler_launcher lang) + # Use a single build tree for tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-build) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + run_cmake(${lang}) + + set(RunCMake_TEST_OUTPUT_MERGE 1) + if("${RunCMake_GENERATOR}" STREQUAL "Ninja") + set(verbose_args -- -v) + endif() + run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args}) +endfunction() + +run_compiler_launcher(C) +run_compiler_launcher(CXX) +if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") + run_compiler_launcher(C-launch) + run_compiler_launcher(CXX-launch) +endif() diff --git a/Tests/RunCMake/CompilerLauncher/main.c b/Tests/RunCMake/CompilerLauncher/main.c new file mode 100644 index 0000000..03b2213 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/main.c @@ -0,0 +1,3 @@ +int main(void) { + return 0; +} diff --git a/Tests/RunCMake/CompilerLauncher/main.cxx b/Tests/RunCMake/CompilerLauncher/main.cxx new file mode 100644 index 0000000..76e8197 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/main.cxx @@ -0,0 +1 @@ +int main() { return 0; } ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-properties.7.rst | 1 + Help/manual/cmake-variables.7.rst | 1 + Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 13 +++++++++++++ Help/release/dev/compiler-launcher.rst | 8 ++++++++ ...OU_USE.rst => CMAKE_LANG_COMPILER_LAUNCHER.rst} | 4 ++-- Source/cmMakefileTargetGenerator.cxx | 20 ++++++++++++++++++++ Source/cmNinjaTargetGenerator.cxx | 20 ++++++++++++++++++++ Source/cmTarget.cxx | 2 ++ Tests/RunCMake/CMakeLists.txt | 1 + Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt | 1 + .../CompilerLauncher/C-launch-Build-stdout.txt | 1 + .../C-launch.cmake | 0 Tests/RunCMake/CompilerLauncher/C.cmake | 4 ++++ .../{CMP0057 => CompilerLauncher}/CMakeLists.txt | 0 .../RunCMake/CompilerLauncher/CXX-Build-stdout.txt | 1 + .../CompilerLauncher/CXX-launch-Build-stdout.txt | 1 + .../CXX-launch.cmake | 0 Tests/RunCMake/CompilerLauncher/CXX.cmake | 4 ++++ .../RunCMakeTest.cmake | 17 +++++++++-------- Tests/RunCMake/CompilerLauncher/main.c | 3 +++ .../main.cxx | 0 21 files changed, 92 insertions(+), 10 deletions(-) create mode 100644 Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst create mode 100644 Help/release/dev/compiler-launcher.rst copy Help/variable/{CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst => CMAKE_LANG_COMPILER_LAUNCHER.rst} (61%) create mode 100644 Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt create mode 100644 Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/C-launch.cmake (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/C.cmake copy Tests/RunCMake/{CMP0057 => CompilerLauncher}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt create mode 100644 Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/CXX-launch.cmake (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/CXX.cmake copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/RunCMakeTest.cmake (56%) create mode 100644 Tests/RunCMake/CompilerLauncher/main.c copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/main.cxx (100%) hooks/post-receive -- CMake From steveire at gmail.com Thu Jun 4 17:12:13 2015 From: steveire at gmail.com (Stephen Kelly) Date: Thu, 4 Jun 2015 17:12:13 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1510-g022ec24 Message-ID: <20150604211213.0580FAE52A@public.kitware.com> 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 022ec2434d23adc7e0a3bae74306d64649ac8a96 (commit) via 180d845c33dfcc4d68ed568ada35f97668f54095 (commit) via cabaff038464f5fdbf1dfccfbcbd59de352118dc (commit) via cbc46dec0195c886c04fb0f9c10a332879695808 (commit) via 34b34978cc19a5cb359e3fa6c5f9212d967809a8 (commit) via f62acd003585277709746eb63bad8e4ad4ebf062 (commit) via cb3736cf935f99acf0b5ede08fb1208e6e874279 (commit) via cc9fb54cf9d634c7f4bc04b5350a533d95d4aafe (commit) via bf80323e4e8f95feb87d6869c75f2cb44b077481 (commit) via a82441572493e4f420fca24041b594da9d3c14e6 (commit) via 1f4ef39603f3184ac3f78e1f52529947303b1bd1 (commit) from 37a62d1369d416386f17c4d45b68dcf8806d755a (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=022ec2434d23adc7e0a3bae74306d64649ac8a96 commit 022ec2434d23adc7e0a3bae74306d64649ac8a96 Merge: 37a62d1 180d845 Author: Stephen Kelly AuthorDate: Thu Jun 4 17:12:09 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 17:12:09 2015 -0400 Merge topic 'extract-cmOutputConverter' into next 180d845c Port static calls from cmLocalGenerator to cmOutputConverter. cabaff03 cmListFileBacktrace: Replace local generator with cmState::Snapshot. cbc46dec cmTarget: Port to cmOutputConverter. 34b34978 cmCustomCommandGenerator: Port to cmOutputConverter. f62acd00 cmCommandArgumentParserHelper: Port to cmOutputConverter. cb3736cf cmComputeLinkInformation: Port to cmOutputConverter. cc9fb54c cmMakefile: Make the cmState::Snapshot accessible. bf80323e cmOutputConverter: Extract from cmLocalGenerator. a8244157 cmState::Snapshot: Provide accessor for the cmState. 1f4ef396 cmLocalGenerator: Remove some commented lines of code. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=180d845c33dfcc4d68ed568ada35f97668f54095 commit 180d845c33dfcc4d68ed568ada35f97668f54095 Author: Stephen Kelly AuthorDate: Sat May 16 00:55:21 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:14 2015 +0200 Port static calls from cmLocalGenerator to cmOutputConverter. diff --git a/Source/cmCPackPropertiesGenerator.cxx b/Source/cmCPackPropertiesGenerator.cxx index cf24c13..368a0e6 100644 --- a/Source/cmCPackPropertiesGenerator.cxx +++ b/Source/cmCPackPropertiesGenerator.cxx @@ -1,6 +1,6 @@ #include "cmCPackPropertiesGenerator.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" cmCPackPropertiesGenerator::cmCPackPropertiesGenerator( cmMakefile* mf, @@ -29,15 +29,15 @@ void cmCPackPropertiesGenerator::GenerateScriptForConfig(std::ostream& os, cmInstalledFile::Property const& property = i->second; os << indent << "set_property(INSTALL " << - cmLocalGenerator::EscapeForCMake(expandedFileName) << " PROPERTY " << - cmLocalGenerator::EscapeForCMake(name); + cmOutputConverter::EscapeForCMake(expandedFileName) << " PROPERTY " << + cmOutputConverter::EscapeForCMake(name); for(cmInstalledFile::ExpressionVectorType::const_iterator j = property.ValueExpressions.begin(); j != property.ValueExpressions.end(); ++j) { std::string value = (*j)->Evaluate(this->Makefile, config); - os << " " << cmLocalGenerator::EscapeForCMake(value); + os << " " << cmOutputConverter::EscapeForCMake(value); } os << ")\n"; diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index dd276a8..e1e1a5c 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -11,7 +11,7 @@ ============================================================================*/ #include "cmCoreTryCompile.h" #include "cmake.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmGlobalGenerator.h" #include "cmAlgorithms.h" #include "cmExportTryCompileFileGenerator.h" @@ -322,7 +322,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) std::string langFlags = "CMAKE_" + *li + "_FLAGS"; const char* flags = this->Makefile->GetDefinition(langFlags); fprintf(fout, "set(CMAKE_%s_FLAGS %s)\n", li->c_str(), - cmLocalGenerator::EscapeForCMake(flags?flags:"").c_str()); + cmOutputConverter::EscapeForCMake(flags?flags:"").c_str()); fprintf(fout, "set(CMAKE_%s_FLAGS \"${CMAKE_%s_FLAGS}" " ${COMPILE_DEFINITIONS}\")\n", li->c_str(), li->c_str()); } @@ -355,7 +355,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) const char* exeLinkFlags = this->Makefile->GetDefinition("CMAKE_EXE_LINKER_FLAGS"); fprintf(fout, "set(CMAKE_EXE_LINKER_FLAGS %s)\n", - cmLocalGenerator::EscapeForCMake( + cmOutputConverter::EscapeForCMake( exeLinkFlags ? exeLinkFlags : "").c_str()); } break; } diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 7c4792c..20448c1 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -27,7 +27,7 @@ static std::string cmIfCommandError( i != args.end(); ++i) { err += " "; - err += cmLocalGenerator::EscapeForCMake(i->GetValue()); + err += cmOutputConverter::EscapeForCMake(i->GetValue()); } err += "\n"; return err; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index c9eea56..f1fd806 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1254,7 +1254,7 @@ cmLocalUnixMakefileGenerator3 f != files.end(); ++f) { std::string fc = this->Convert(*f,START_OUTPUT,UNCHANGED); - fout << " " << cmLocalGenerator::EscapeForCMake(fc) << "\n"; + fout << " " << cmOutputConverter::EscapeForCMake(fc) << "\n"; } fout << ")\n"; } @@ -2052,7 +2052,7 @@ void cmLocalUnixMakefileGenerator3 di != defines.end(); ++di) { cmakefileStream - << " " << cmLocalGenerator::EscapeForCMake(*di) << "\n"; + << " " << cmOutputConverter::EscapeForCMake(*di) << "\n"; } cmakefileStream << " )\n"; @@ -2106,7 +2106,7 @@ void cmLocalUnixMakefileGenerator3 tri != transformRules.end(); ++tri) { cmakefileStream << " " - << cmLocalGenerator::EscapeForCMake(*tri) << "\n"; + << cmOutputConverter::EscapeForCMake(*tri) << "\n"; } cmakefileStream << " )\n"; diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 9ac9ddb..c26bc60 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1126,8 +1126,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() pi != this->MultipleOutputPairs.end(); ++pi) { *this->InfoFileStream - << " " << cmLocalGenerator::EscapeForCMake(pi->first) - << " " << cmLocalGenerator::EscapeForCMake(pi->second) + << " " << cmOutputConverter::EscapeForCMake(pi->first) + << " " << cmOutputConverter::EscapeForCMake(pi->second) << "\n"; } *this->InfoFileStream << " )\n\n"; diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index fbd2946..ef32c75 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -550,9 +550,9 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target) std::string autogenTargetName = getAutogenTargetName(target); makefile->AddDefinition("_moc_target_name", - cmLocalGenerator::EscapeForCMake(autogenTargetName).c_str()); + cmOutputConverter::EscapeForCMake(autogenTargetName).c_str()); makefile->AddDefinition("_origin_target_name", - cmLocalGenerator::EscapeForCMake(target->GetName()).c_str()); + cmOutputConverter::EscapeForCMake(target->GetName()).c_str()); std::string targetDir = getAutogenTargetDir(target); @@ -582,7 +582,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target) this->SetupSourceFiles(target); } makefile->AddDefinition("_cpp_files", - cmLocalGenerator::EscapeForCMake(this->Sources).c_str()); + cmOutputConverter::EscapeForCMake(this->Sources).c_str()); if (target->GetPropertyAsBool("AUTOMOC")) { this->SetupAutoMocTarget(target, autogenTargetName, @@ -764,11 +764,11 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, const char* tmp = target->GetProperty("AUTOMOC_MOC_OPTIONS"); std::string _moc_options = (tmp!=0 ? tmp : ""); makefile->AddDefinition("_moc_options", - cmLocalGenerator::EscapeForCMake(_moc_options).c_str()); + cmOutputConverter::EscapeForCMake(_moc_options).c_str()); makefile->AddDefinition("_skip_moc", - cmLocalGenerator::EscapeForCMake(this->SkipMoc).c_str()); + cmOutputConverter::EscapeForCMake(this->SkipMoc).c_str()); makefile->AddDefinition("_moc_headers", - cmLocalGenerator::EscapeForCMake(this->Headers).c_str()); + cmOutputConverter::EscapeForCMake(this->Headers).c_str()); bool relaxedMode = makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE"); makefile->AddDefinition("_moc_relaxed_mode", relaxedMode ? "TRUE" : "FALSE"); @@ -780,9 +780,9 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, _moc_incs, _moc_compile_defs); makefile->AddDefinition("_moc_incs", - cmLocalGenerator::EscapeForCMake(_moc_incs).c_str()); + cmOutputConverter::EscapeForCMake(_moc_incs).c_str()); makefile->AddDefinition("_moc_compile_defs", - cmLocalGenerator::EscapeForCMake(_moc_compile_defs).c_str()); + cmOutputConverter::EscapeForCMake(_moc_compile_defs).c_str()); for (std::vector::const_iterator li = configs.begin(); li != configs.end(); ++li) @@ -795,7 +795,7 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, if (config_moc_incs != _moc_incs) { configIncludes[*li] = - cmLocalGenerator::EscapeForCMake(config_moc_incs); + cmOutputConverter::EscapeForCMake(config_moc_incs); if(_moc_incs.empty()) { _moc_incs = config_moc_incs; @@ -804,7 +804,7 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, if (config_moc_compile_defs != _moc_compile_defs) { configDefines[*li] = - cmLocalGenerator::EscapeForCMake(config_moc_compile_defs); + cmOutputConverter::EscapeForCMake(config_moc_compile_defs); if(_moc_compile_defs.empty()) { _moc_compile_defs = config_moc_compile_defs; @@ -906,7 +906,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, skipped.insert(skipVec.begin(), skipVec.end()); makefile->AddDefinition("_skip_uic", - cmLocalGenerator::EscapeForCMake(this->SkipUic).c_str()); + cmOutputConverter::EscapeForCMake(this->SkipUic).c_str()); std::vector uiFilesWithOptions = makefile->GetQtUiFilesWithOptions(); @@ -920,7 +920,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, if (!_uic_opts.empty()) { - _uic_opts = cmLocalGenerator::EscapeForCMake(_uic_opts); + _uic_opts = cmOutputConverter::EscapeForCMake(_uic_opts); makefile->AddDefinition("_uic_target_options", _uic_opts.c_str()); } for (std::vector::const_iterator li = configs.begin(); @@ -931,7 +931,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, if (config_uic_opts != _uic_opts) { configUicOptions[*li] = - cmLocalGenerator::EscapeForCMake(config_uic_opts); + cmOutputConverter::EscapeForCMake(config_uic_opts); if(_uic_opts.empty()) { _uic_opts = config_uic_opts; @@ -966,9 +966,9 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, } makefile->AddDefinition("_qt_uic_options_files", - cmLocalGenerator::EscapeForCMake(uiFileFiles).c_str()); + cmOutputConverter::EscapeForCMake(uiFileFiles).c_str()); makefile->AddDefinition("_qt_uic_options_options", - cmLocalGenerator::EscapeForCMake(uiFileOptions).c_str()); + cmOutputConverter::EscapeForCMake(uiFileOptions).c_str()); std::string targetName = target->GetName(); if (strcmp(qtVersion, "5") == 0) @@ -1141,15 +1141,15 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target) } } makefile->AddDefinition("_qt_rcc_inputs_" + target->GetName(), - cmLocalGenerator::EscapeForCMake(qrcInputs).c_str()); + cmOutputConverter::EscapeForCMake(qrcInputs).c_str()); makefile->AddDefinition("_rcc_files", - cmLocalGenerator::EscapeForCMake(_rcc_files).c_str()); + cmOutputConverter::EscapeForCMake(_rcc_files).c_str()); makefile->AddDefinition("_qt_rcc_options_files", - cmLocalGenerator::EscapeForCMake(rccFileFiles).c_str()); + cmOutputConverter::EscapeForCMake(rccFileFiles).c_str()); makefile->AddDefinition("_qt_rcc_options_options", - cmLocalGenerator::EscapeForCMake(rccFileOptions).c_str()); + cmOutputConverter::EscapeForCMake(rccFileOptions).c_str()); makefile->AddDefinition("_qt_rcc_executable", this->GetRccExecutable(target).c_str()); @@ -1434,7 +1434,7 @@ cmQtAutoGenerators::WriteOldMocDefinitionsFile( outfile.open(filename.c_str(), std::ios::trunc); outfile << "set(AM_OLD_COMPILE_SETTINGS " - << cmLocalGenerator::EscapeForCMake( + << cmOutputConverter::EscapeForCMake( this->CurrentCompileSettingsStr) << ")\n"; outfile.close(); diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index 7e11d8c..546ad71 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -12,7 +12,7 @@ #include "cmTestGenerator.h" #include "cmGeneratorExpression.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmMakefile.h" #include "cmSystemTools.h" #include "cmTarget.h" @@ -97,13 +97,13 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, cmSystemTools::ExpandListArgument(emulator, emulatorWithArgs); std::string emulatorExe(emulatorWithArgs[0]); cmSystemTools::ConvertToUnixSlashes(emulatorExe); - os << cmLocalGenerator::EscapeForCMake(emulatorExe) << " "; + os << cmOutputConverter::EscapeForCMake(emulatorExe) << " "; for(std::vector::const_iterator ei = emulatorWithArgs.begin()+1; ei != emulatorWithArgs.end(); ++ei) { - os << cmLocalGenerator::EscapeForCMake(*ei) << " "; + os << cmOutputConverter::EscapeForCMake(*ei) << " "; } } } @@ -115,11 +115,11 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, } // Generate the command line with full escapes. - os << cmLocalGenerator::EscapeForCMake(exe); + os << cmOutputConverter::EscapeForCMake(exe); for(std::vector::const_iterator ci = command.begin()+1; ci != command.end(); ++ci) { - os << " " << cmLocalGenerator::EscapeForCMake( + os << " " << cmOutputConverter::EscapeForCMake( ge.Parse(*ci)->Evaluate(mf, config)); } @@ -136,7 +136,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, i != pm.end(); ++i) { os << " " << i->first - << " " << cmLocalGenerator::EscapeForCMake( + << " " << cmOutputConverter::EscapeForCMake( ge.Parse(i->second.GetValue())->Evaluate(mf, config)); } os << ")" << std::endl; @@ -206,7 +206,7 @@ void cmTestGenerator::GenerateOldStyle(std::ostream& fout, i != pm.end(); ++i) { fout << " " << i->first - << " " << cmLocalGenerator::EscapeForCMake(i->second.GetValue()); + << " " << cmOutputConverter::EscapeForCMake(i->second.GetValue()); } fout << ")" << std::endl; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cabaff038464f5fdbf1dfccfbcbd59de352118dc commit cabaff038464f5fdbf1dfccfbcbd59de352118dc Author: Stephen Kelly AuthorDate: Thu Jun 4 20:00:14 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:14 2015 +0200 cmListFileBacktrace: Replace local generator with cmState::Snapshot. Construct cmOutputConverter only when needed. diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index ffe1a1f..ca58314 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -412,9 +412,9 @@ void cmListFileBacktrace::PrintTitle(std::ostream& out) return; } + cmOutputConverter converter(this->Snapshot); cmListFileContext lfc = this->front(); - lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, - cmLocalGenerator::HOME); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); out << (lfc.Line ? " at " : " in ") << lfc; } @@ -425,13 +425,13 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out) return; } + cmOutputConverter converter(this->Snapshot); const_iterator i = this->begin() + 1; out << "Call Stack (most recent call first):\n"; while(i != this->end()) { cmListFileContext lfc = *i; - lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, - cmLocalGenerator::HOME); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); out << " " << lfc << "\n"; ++i; } diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index 1971862a..4002d94 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -14,7 +14,7 @@ #include "cmStandardIncludes.h" -class cmLocalGenerator; +#include "cmState.h" /** \class cmListFileCache * \brief A class to cache list file contents. @@ -74,8 +74,8 @@ struct cmListFileFunction: public cmListFileContext class cmListFileBacktrace: private std::vector { public: - cmListFileBacktrace(cmLocalGenerator* localGen = 0) - : LocalGenerator(localGen) + cmListFileBacktrace(cmState::Snapshot snapshot = cmState::Snapshot()) + : Snapshot(snapshot) { } @@ -84,7 +84,7 @@ class cmListFileBacktrace: private std::vector void PrintTitle(std::ostream& out); void PrintCallStack(std::ostream& out); private: - cmLocalGenerator* LocalGenerator; + cmState::Snapshot Snapshot; }; struct cmListFile diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 06febbf..f55b5df 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -277,7 +277,7 @@ void cmMakefile::IssueMessage(cmake::MessageType t, //---------------------------------------------------------------------------- cmListFileBacktrace cmMakefile::GetBacktrace() const { - cmListFileBacktrace backtrace(this->GetLocalGenerator()); + cmListFileBacktrace backtrace(this->StateSnapshot); for(CallStackType::const_reverse_iterator i = this->CallStack.rbegin(); i != this->CallStack.rend(); ++i) { @@ -290,7 +290,7 @@ cmListFileBacktrace cmMakefile::GetBacktrace() const cmListFileBacktrace cmMakefile::GetBacktrace(cmListFileContext const& lfc) const { - cmListFileBacktrace backtrace(this->GetLocalGenerator()); + cmListFileBacktrace backtrace(this->StateSnapshot); backtrace.Append(lfc); for(CallStackType::const_reverse_iterator i = this->CallStack.rbegin(); i != this->CallStack.rend(); ++i) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cbc46dec0195c886c04fb0f9c10a332879695808 commit cbc46dec0195c886c04fb0f9c10a332879695808 Author: Stephen Kelly AuthorDate: Thu Jun 4 20:12:17 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:14 2015 +0200 cmTarget: Port to cmOutputConverter. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 4436966..27c4845 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -13,7 +13,7 @@ #include "cmake.h" #include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmGlobalGenerator.h" #include "cmComputeLinkInformation.h" #include "cmListFileCache.h" @@ -1257,14 +1257,14 @@ void cmTarget::GetTllSignatureTraces(std::ostringstream &s, : "plain"); s << "The uses of the " << sigString << " signature are here:\n"; typedef std::vector > Container; - cmLocalGenerator* lg = this->GetMakefile()->GetLocalGenerator(); + cmOutputConverter converter(this->GetMakefile()->GetStateSnapshot()); for(Container::const_iterator it = this->TLLCommands.begin(); it != this->TLLCommands.end(); ++it) { if (it->first == sig) { cmListFileContext lfc = it->second; - lfc.FilePath = lg->Convert(lfc.FilePath, cmLocalGenerator::HOME); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); s << " * " << lfc << std::endl; } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=34b34978cc19a5cb359e3fa6c5f9212d967809a8 commit 34b34978cc19a5cb359e3fa6c5f9212d967809a8 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:47:37 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:13 2015 +0200 cmCustomCommandGenerator: Port to cmOutputConverter. diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index d23f815..11308c6 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -13,13 +13,13 @@ #include "cmMakefile.h" #include "cmCustomCommand.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmGeneratorExpression.h" //---------------------------------------------------------------------------- cmCustomCommandGenerator::cmCustomCommandGenerator( cmCustomCommand const& cc, const std::string& config, cmMakefile* mf): - CC(cc), Config(config), Makefile(mf), LG(mf->GetLocalGenerator()), + CC(cc), Config(config), Makefile(mf), OldStyle(cc.GetEscapeOldStyle()), MakeVars(cc.GetEscapeAllowMakeVars()), GE(new cmGeneratorExpression(&cc.GetBacktrace())), DependsDone(false) { @@ -96,7 +96,8 @@ cmCustomCommandGenerator } else { - cmd += this->LG->EscapeForShell(arg, this->MakeVars); + cmOutputConverter converter(this->Makefile->GetStateSnapshot()); + cmd += converter.EscapeForShell(arg, this->MakeVars); } } } diff --git a/Source/cmCustomCommandGenerator.h b/Source/cmCustomCommandGenerator.h index b4ae014..7ad95d1 100644 --- a/Source/cmCustomCommandGenerator.h +++ b/Source/cmCustomCommandGenerator.h @@ -16,7 +16,6 @@ class cmCustomCommand; class cmMakefile; -class cmLocalGenerator; class cmGeneratorExpression; class cmCustomCommandGenerator @@ -24,7 +23,6 @@ class cmCustomCommandGenerator cmCustomCommand const& CC; std::string Config; cmMakefile* Makefile; - cmLocalGenerator* LG; bool OldStyle; bool MakeVars; cmGeneratorExpression* GE; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f62acd003585277709746eb63bad8e4ad4ebf062 commit f62acd003585277709746eb63bad8e4ad4ebf062 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:45:12 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:13 2015 +0200 cmCommandArgumentParserHelper: Port to cmOutputConverter. diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index bd098a5..14e9e56 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -14,7 +14,7 @@ #include "cmSystemTools.h" #include "cmMakefile.h" #include "cmState.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmCommandArgumentLexer.h" @@ -141,8 +141,9 @@ char* cmCommandArgumentParserHelper::ExpandVariable(const char* var) { std::ostringstream msg; cmListFileContext lfc; - lfc.FilePath = this->Makefile->GetLocalGenerator() - ->Convert(this->FileName, cmLocalGenerator::HOME); + cmOutputConverter converter(this->Makefile->GetStateSnapshot()); + lfc.FilePath = converter.Convert(this->FileName, + cmOutputConverter::HOME); lfc.Line = this->FileLine; msg << "uninitialized variable \'" << var << "\'"; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cb3736cf935f99acf0b5ede08fb1208e6e874279 commit cb3736cf935f99acf0b5ede08fb1208e6e874279 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:43:09 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:13 2015 +0200 cmComputeLinkInformation: Port to cmOutputConverter. diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index e6cbe60..1f3046a 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -16,7 +16,7 @@ #include "cmGlobalGenerator.h" #include "cmState.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmMakefile.h" #include "cmTarget.h" #include "cmake.h" @@ -246,7 +246,6 @@ cmComputeLinkInformation // Store context information. this->Target = target; this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); this->CMakeInstance = this->GlobalGenerator->GetCMakeInstance(); @@ -1395,7 +1394,8 @@ void cmComputeLinkInformation::AddFrameworkItem(std::string const& item) // Add the item using the -framework option. this->Items.push_back(Item("-framework", false)); - fw = this->LocalGenerator->EscapeForShell(fw); + cmOutputConverter converter(this->Makefile->GetStateSnapshot()); + fw = converter.EscapeForShell(fw); this->Items.push_back(Item(fw, false)); } diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h index 8847141..56a5c82 100644 --- a/Source/cmComputeLinkInformation.h +++ b/Source/cmComputeLinkInformation.h @@ -18,7 +18,6 @@ class cmake; class cmGlobalGenerator; -class cmLocalGenerator; class cmMakefile; class cmTarget; class cmOrderDirectories; @@ -75,7 +74,6 @@ private: // Context information. cmTarget const* Target; cmMakefile* Makefile; - cmLocalGenerator* LocalGenerator; cmGlobalGenerator* GlobalGenerator; cmake* CMakeInstance; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cc9fb54cf9d634c7f4bc04b5350a533d95d4aafe commit cc9fb54cf9d634c7f4bc04b5350a533d95d4aafe Author: Stephen Kelly AuthorDate: Thu Jun 4 19:42:32 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:39:13 2015 +0200 cmMakefile: Make the cmState::Snapshot accessible. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b5d976a..06febbf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4657,6 +4657,11 @@ void cmMakefile::StoreMatches(cmsys::RegularExpression& re) this->MarkVariableAsUsed(nMatchesVariable); } +cmState::Snapshot cmMakefile::GetStateSnapshot() const +{ + return this->StateSnapshot; +} + //---------------------------------------------------------------------------- cmPolicies::PolicyStatus cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 431ed08..fa9f23d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -819,6 +819,8 @@ public: void ClearMatches(); void StoreMatches(cmsys::RegularExpression& re); + cmState::Snapshot GetStateSnapshot() const; + protected: // add link libraries and directories to the target void AddGlobalLinkInformation(const std::string& name, cmTarget& target); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bf80323e4e8f95feb87d6869c75f2cb44b077481 commit bf80323e4e8f95feb87d6869c75f2cb44b077481 Author: Stephen Kelly AuthorDate: Sun Apr 12 13:15:51 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:38:50 2015 +0200 cmOutputConverter: Extract from cmLocalGenerator. The Convert methods never belonged to the local generator concept, so split them out now. The cmOutputConverter is cheap to construct and destroy, so it can be instantiated where needed to perform conversions. This will allow further decoupling of cmLocalGenerator from the configure step. Inherit cmLocalGenerator from cmOutputConverter for the purpose of source compatibility. diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index a7adb51..b434327 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -299,6 +299,8 @@ set(SRCS cmMakefileUtilityTargetGenerator.cxx cmOSXBundleGenerator.cxx cmOSXBundleGenerator.h + cmOutputConverter.cxx + cmOutputConverter.h cmNewLineStyle.h cmNewLineStyle.cxx cmOrderDirectories.cxx diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index fe71d0f..f8d1bee 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -46,7 +46,7 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, cmLocalGenerator* parent, cmState::Snapshot snapshot) - : StateSnapshot(snapshot) + : cmOutputConverter(snapshot), StateSnapshot(snapshot) { assert(snapshot.IsValid()); this->GlobalGenerator = gg; @@ -58,7 +58,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); - this->LinkScriptShell = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; this->BackwardsCompatibilityFinal = false; @@ -1097,58 +1096,6 @@ void cmLocalGenerator::InsertRuleLauncher(std::string& s, cmTarget* target, //---------------------------------------------------------------------------- std::string -cmLocalGenerator::ConvertToOutputForExistingCommon(const std::string& remote, - std::string const& result, - OutputFormat format) -{ - // If this is a windows shell, the result has a space, and the path - // already exists, we can use a short-path to reference it without a - // space. - if(this->GetState()->UseWindowsShell() && result.find(' ') != result.npos && - cmSystemTools::FileExists(remote.c_str())) - { - std::string tmp; - if(cmSystemTools::GetShortPath(remote, tmp)) - { - return this->ConvertToOutputFormat(tmp, format); - } - } - - // Otherwise, leave it unchanged. - return result; -} - -//---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, - RelativeRoot local, - OutputFormat format) -{ - static_cast(local); - - // Perform standard conversion. - std::string result = this->ConvertToOutputFormat(remote, format); - - // Consider short-path. - return this->ConvertToOutputForExistingCommon(remote, result, format); -} - -//---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToOutputForExisting(RelativeRoot remote, - const std::string& local, - OutputFormat format) -{ - // Perform standard conversion. - std::string result = this->Convert(remote, local, format, true); - - // Consider short-path. - const char* remotePath = this->GetRelativeRootPath(remote); - return this->ConvertToOutputForExistingCommon(remotePath, result, format); -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::ConvertToIncludeReference(std::string const& path, OutputFormat format, bool forceFullPaths) @@ -2604,225 +2551,6 @@ cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, } //---------------------------------------------------------------------------- -const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) -{ - switch (relroot) - { - case HOME: return this->GetState()->GetSourceDirectory(); - case START: return this->StateSnapshot.GetCurrentSourceDirectory(); - case HOME_OUTPUT: return this->GetState()->GetBinaryDirectory(); - case START_OUTPUT: return this->StateSnapshot.GetCurrentBinaryDirectory(); - default: break; - } - return 0; -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::Convert(const std::string& source, - RelativeRoot relative, - OutputFormat output) -{ - std::string result = source; - - switch (relative) - { - case HOME: - result = this->ConvertToRelativePath( - this->GetState()->GetSourceDirectoryComponents(), result); - break; - case START: - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); - break; - case HOME_OUTPUT: - result = this->ConvertToRelativePath( - this->GetState()->GetBinaryDirectoryComponents(), result); - break; - case START_OUTPUT: - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); - break; - case FULL: - result = cmSystemTools::CollapseFullPath(result); - break; - case NONE: - break; - - } - return this->ConvertToOutputFormat(result, output); -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, - OutputFormat output) -{ - std::string result = source; - // Convert it to an output path. - if (output == MAKERULE) - { - result = cmSystemTools::ConvertToOutputPath(result.c_str()); - } - else if(output == SHELL || output == WATCOMQUOTE) - { - // For the MSYS shell convert drive letters to posix paths, so - // that c:/some/path becomes /c/some/path. This is needed to - // avoid problems with the shell path translation. - if(this->GetState()->UseMSYSShell() && !this->LinkScriptShell) - { - if(result.size() > 2 && result[1] == ':') - { - result[1] = result[0]; - result[0] = '/'; - } - } - if(this->GetState()->UseWindowsShell()) - { - std::replace(result.begin(), result.end(), '/', '\\'); - } - result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE); - } - else if(output == RESPONSE) - { - result = this->EscapeForShell(result, false, false, false); - } - return result; -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::Convert(RelativeRoot remote, - const std::string& local, - OutputFormat output, bool optional) -{ - const char* remotePath = this->GetRelativeRootPath(remote); - - // The relative root must have a path (i.e. not FULL or NONE) - assert(remotePath != 0); - - if(!local.empty() && !optional) - { - std::vector components; - cmSystemTools::SplitPath(local, components); - std::string result = this->ConvertToRelativePath(components, remotePath); - return this->ConvertToOutputFormat(result, output); - } - else - { - return this->ConvertToOutputFormat(remotePath, output); - } -} - -//---------------------------------------------------------------------------- -static bool cmLocalGeneratorNotAbove(const char* a, const char* b) -{ - return (cmSystemTools::ComparePath(a, b) || - cmSystemTools::IsSubDirectory(a, b)); -} - -//---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToRelativePath(const std::vector& local, - const std::string& in_remote, - bool force) -{ - // The path should never be quoted. - assert(in_remote[0] != '\"'); - - // The local path should never have a trailing slash. - assert(!local.empty() && !(local[local.size()-1] == "")); - - // If the path is already relative then just return the path. - if(!cmSystemTools::FileIsFullPath(in_remote.c_str())) - { - return in_remote; - } - - if(!force) - { - // Skip conversion if the path and local are not both in the source - // or both in the binary tree. - std::string local_path = cmSystemTools::JoinPath(local); - if(!((cmLocalGeneratorNotAbove(local_path.c_str(), - this->StateSnapshot.GetRelativePathTopBinary()) && - cmLocalGeneratorNotAbove(in_remote.c_str(), - this->StateSnapshot.GetRelativePathTopBinary())) || - (cmLocalGeneratorNotAbove(local_path.c_str(), - this->StateSnapshot.GetRelativePathTopSource()) && - cmLocalGeneratorNotAbove(in_remote.c_str(), - this->StateSnapshot.GetRelativePathTopSource())))) - { - return in_remote; - } - } - - // Identify the longest shared path component between the remote - // path and the local path. - std::vector remote; - cmSystemTools::SplitPath(in_remote, remote); - unsigned int common=0; - while(common < remote.size() && - common < local.size() && - cmSystemTools::ComparePath(remote[common], - local[common])) - { - ++common; - } - - // If no part of the path is in common then return the full path. - if(common == 0) - { - return in_remote; - } - - // If the entire path is in common then just return a ".". - if(common == remote.size() && - common == local.size()) - { - return "."; - } - - // If the entire path is in common except for a trailing slash then - // just return a "./". - if(common+1 == remote.size() && - remote[common].empty() && - common == local.size()) - { - return "./"; - } - - // Construct the relative path. - std::string relative; - - // First add enough ../ to get up to the level of the shared portion - // of the path. Leave off the trailing slash. Note that the last - // component of local will never be empty because local should never - // have a trailing slash. - for(unsigned int i=common; i < local.size(); ++i) - { - relative += ".."; - if(i < local.size()-1) - { - relative += "/"; - } - } - - // Now add the portion of the destination path that is not included - // in the shared portion of the path. Add a slash the first time - // only if there was already something in the path. If there was a - // trailing slash in the input then the last iteration of the loop - // will add a slash followed by an empty string which will preserve - // the trailing slash in the output. - - if(!relative.empty() && !remote.empty()) - { - relative += "/"; - } - relative += cmJoin(cmRange(remote).advance(common), "/"); - - // Finally return the path. - return relative; -} - -//---------------------------------------------------------------------------- class cmInstallTargetGeneratorLocal: public cmInstallTargetGenerator { public: @@ -3215,150 +2943,6 @@ cmLocalGenerator } //---------------------------------------------------------------------------- -static bool cmLocalGeneratorIsShellOperator(const std::string& str) -{ - static std::set shellOperators; - if(shellOperators.empty()) - { - shellOperators.insert("<"); - shellOperators.insert(">"); - shellOperators.insert("<<"); - shellOperators.insert(">>"); - shellOperators.insert("|"); - shellOperators.insert("||"); - shellOperators.insert("&&"); - shellOperators.insert("&>"); - shellOperators.insert("1>"); - shellOperators.insert("2>"); - shellOperators.insert("2>&1"); - shellOperators.insert("1>&2"); - } - return shellOperators.count(str) > 0; -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::EscapeForShell(const std::string& str, - bool makeVars, - bool forEcho, - bool useWatcomQuote) -{ - // Do not escape shell operators. - if(cmLocalGeneratorIsShellOperator(str)) - { - return str; - } - - // Compute the flags for the target shell environment. - int flags = 0; - if(this->GetState()->UseWindowsVSIDE()) - { - flags |= cmsysSystem_Shell_Flag_VSIDE; - } - else if(!this->LinkScriptShell) - { - flags |= cmsysSystem_Shell_Flag_Make; - } - if(makeVars) - { - flags |= cmsysSystem_Shell_Flag_AllowMakeVariables; - } - if(forEcho) - { - flags |= cmsysSystem_Shell_Flag_EchoWindows; - } - if(useWatcomQuote) - { - flags |= cmsysSystem_Shell_Flag_WatcomQuote; - } - if(this->GetState()->UseWatcomWMake()) - { - flags |= cmsysSystem_Shell_Flag_WatcomWMake; - } - if(this->GetState()->UseMinGWMake()) - { - flags |= cmsysSystem_Shell_Flag_MinGWMake; - } - if(this->GetState()->UseNMake()) - { - flags |= cmsysSystem_Shell_Flag_NMake; - } - - // Compute the buffer size needed. - int size = (this->GetState()->UseWindowsShell() ? - cmsysSystem_Shell_GetArgumentSizeForWindows(str.c_str(), flags) : - cmsysSystem_Shell_GetArgumentSizeForUnix(str.c_str(), flags)); - - // Compute the shell argument itself. - std::vector arg(size); - if(this->GetState()->UseWindowsShell()) - { - cmsysSystem_Shell_GetArgumentForWindows(str.c_str(), &arg[0], flags); - } - else - { - cmsysSystem_Shell_GetArgumentForUnix(str.c_str(), &arg[0], flags); - } - return std::string(&arg[0]); -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::EscapeForCMake(const std::string& str) -{ - // Always double-quote the argument to take care of most escapes. - std::string result = "\""; - for(const char* c = str.c_str(); *c; ++c) - { - if(*c == '"') - { - // Escape the double quote to avoid ending the argument. - result += "\\\""; - } - else if(*c == '$') - { - // Escape the dollar to avoid expanding variables. - result += "\\$"; - } - else if(*c == '\\') - { - // Escape the backslash to avoid other escapes. - result += "\\\\"; - } - else - { - // Other characters will be parsed correctly. - result += *c; - } - } - result += "\""; - return result; -} - -//---------------------------------------------------------------------------- -cmLocalGenerator::FortranFormat -cmLocalGenerator::GetFortranFormat(const char* value) -{ - FortranFormat format = FortranFormatNone; - if(value && *value) - { - std::vector fmt; - cmSystemTools::ExpandListArgument(value, fmt); - for(std::vector::iterator fi = fmt.begin(); - fi != fmt.end(); ++fi) - { - if(*fi == "FIXED") - { - format = FortranFormatFixed; - } - if(*fi == "FREE") - { - format = FortranFormatFree; - } - } - } - return format; -} - -//---------------------------------------------------------------------------- std::string cmLocalGenerator::GetTargetDirectory(cmTarget const&) const { diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 1359dd6..583159f 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -14,6 +14,7 @@ #include "cmStandardIncludes.h" #include "cmState.h" +#include "cmOutputConverter.h" class cmMakefile; class cmGlobalGenerator; @@ -31,7 +32,7 @@ class cmCustomCommandGenerator; * platforms. This class should never be constructed directly. A * GlobalGenerator will create it and invoke the appropriate commands on it. */ -class cmLocalGenerator +class cmLocalGenerator : public cmOutputConverter { public: cmLocalGenerator(cmGlobalGenerator* gg, cmLocalGenerator* parent, @@ -90,35 +91,6 @@ public: cmState* GetState() const; cmState::Snapshot GetStateSnapshot() const; - /** - * Convert something to something else. This is a centralized conversion - * routine used by the generators to handle relative paths and the like. - * The flags determine what is actually done. - * - * relative: treat the argument as a directory and convert it to make it - * relative or full or unchanged. If relative (HOME, START etc) then that - * specifies what it should be relative to. - * - * output: make the result suitable for output to a... - * - * optional: should any relative path operation be controlled by the rel - * path setting - */ - enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT }; - enum OutputFormat { UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, RESPONSE }; - std::string ConvertToOutputFormat(const std::string& source, - OutputFormat output); - std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED); - std::string Convert(RelativeRoot remote, const std::string& local, - OutputFormat output = UNCHANGED, - bool optional = false); - - /** - * Get path for the specified relative root. - */ - const char* GetRelativeRootPath(RelativeRoot relroot); - ///! set/get the parent generator cmLocalGenerator* GetParent() const {return this->Parent;} @@ -194,17 +166,6 @@ public: bool GetRealDependency(const std::string& name, const std::string& config, std::string& dep); - ///! for existing files convert to output path and short path if spaces - std::string ConvertToOutputForExisting(const std::string& remote, - RelativeRoot local = START_OUTPUT, - OutputFormat format = SHELL); - - /** For existing path identified by RelativeRoot convert to output - path and short path if spaces. */ - std::string ConvertToOutputForExisting(RelativeRoot remote, - const std::string& local = "", - OutputFormat format = SHELL); - virtual std::string ConvertToIncludeReference(std::string const& path, OutputFormat format = SHELL, bool forceFullPaths = false); @@ -276,40 +237,6 @@ public: const char* FilterPrefix; }; - /** Set whether to treat conversions to SHELL as a link script shell. */ - void SetLinkScriptShell(bool b) { this->LinkScriptShell = b; } - - /** Escape the given string to be used as a command line argument in - the native build system shell. Optionally allow the build - system to replace make variable references. Optionally adjust - escapes for the special case of passing to the native echo - command. */ - std::string EscapeForShell(const std::string& str, bool makeVars = false, - bool forEcho = false, - bool useWatcomQuote = false); - - /** Escape the given string as an argument in a CMake script. */ - static std::string EscapeForCMake(const std::string& str); - - enum FortranFormat - { - FortranFormatNone, - FortranFormatFixed, - FortranFormatFree - }; - FortranFormat GetFortranFormat(const char* value); - - /** - * Convert the given remote path to a relative path with respect to - * the given local path. The local path must be given in component - * form (see SystemTools::SplitPath) without a trailing slash. The - * remote path must use forward slashes and not already be escaped - * or quoted. - */ - std::string ConvertToRelativePath(const std::vector& local, - const std::string& remote, - bool force=false); - /** * Get the relative path from the generator output directory to a * per-target support directory. @@ -442,7 +369,6 @@ protected: std::set WarnCMP0063; - bool LinkScriptShell; bool EmitUniversalBinaryFlags; // Hack for ExpandRuleVariable until object-oriented version is @@ -452,10 +378,6 @@ protected: cmIML_INT_uint64_t BackwardsCompatibility; bool BackwardsCompatibilityFinal; private: - std::string ConvertToOutputForExistingCommon(const std::string& remote, - std::string const& result, - OutputFormat format); - void AddSharedFlags(std::string& flags, const std::string& lang, bool shared); bool GetShouldUseOldFlags(bool shared, const std::string &lang) const; diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx new file mode 100644 index 0000000..87e21bf --- /dev/null +++ b/Source/cmOutputConverter.cxx @@ -0,0 +1,451 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmOutputConverter.h" + +#include "cmAlgorithms.h" +#include "cmake.h" + +#include + +#include + +cmOutputConverter::cmOutputConverter(cmState::Snapshot snapshot) + : StateSnapshot(snapshot), LinkScriptShell(false) +{ +} + +cmOutputConverter::~cmOutputConverter() +{ +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, + std::string const& result, + OutputFormat format) +{ + // If this is a windows shell, the result has a space, and the path + // already exists, we can use a short-path to reference it without a + // space. + if(this->GetState()->UseWindowsShell() && result.find(' ') != result.npos && + cmSystemTools::FileExists(remote.c_str())) + { + std::string tmp; + if(cmSystemTools::GetShortPath(remote, tmp)) + { + return this->ConvertToOutputFormat(tmp, format); + } + } + + // Otherwise, leave it unchanged. + return result; +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToOutputForExisting(const std::string& remote, + RelativeRoot local, + OutputFormat format) +{ + static_cast(local); + + // Perform standard conversion. + std::string result = this->ConvertToOutputFormat(remote, format); + + // Consider short-path. + return this->ConvertToOutputForExistingCommon(remote, result, format); +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote, + const std::string& local, + OutputFormat format) +{ + // Perform standard conversion. + std::string result = this->Convert(remote, local, format, true); + + // Consider short-path. + const char* remotePath = this->GetRelativeRootPath(remote); + return this->ConvertToOutputForExistingCommon(remotePath, result, format); +} + +//---------------------------------------------------------------------------- +const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) +{ + switch (relroot) + { + case HOME: return this->GetState()->GetSourceDirectory(); + case START: return this->StateSnapshot.GetCurrentSourceDirectory(); + case HOME_OUTPUT: return this->GetState()->GetBinaryDirectory(); + case START_OUTPUT: return this->StateSnapshot.GetCurrentBinaryDirectory(); + default: break; + } + return 0; +} + +std::string cmOutputConverter::Convert(const std::string& source, + RelativeRoot relative, + OutputFormat output) +{ + // Convert the path to a relative path. + std::string result = source; + + switch (relative) + { + case HOME: + result = this->ConvertToRelativePath( + this->GetState()->GetSourceDirectoryComponents(), result); + break; + case START: + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); + break; + case HOME_OUTPUT: + result = this->ConvertToRelativePath( + this->GetState()->GetBinaryDirectoryComponents(), result); + break; + case START_OUTPUT: + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); + break; + case FULL: + result = cmSystemTools::CollapseFullPath(result); + break; + case NONE: + break; + } + return this->ConvertToOutputFormat(result, output); +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source, + OutputFormat output) +{ + std::string result = source; + // Convert it to an output path. + if (output == MAKERULE) + { + result = cmSystemTools::ConvertToOutputPath(result.c_str()); + } + else if(output == SHELL || output == WATCOMQUOTE) + { + // For the MSYS shell convert drive letters to posix paths, so + // that c:/some/path becomes /c/some/path. This is needed to + // avoid problems with the shell path translation. + if(this->GetState()->UseMSYSShell() && !this->LinkScriptShell) + { + if(result.size() > 2 && result[1] == ':') + { + result[1] = result[0]; + result[0] = '/'; + } + } + if(this->GetState()->UseWindowsShell()) + { + std::replace(result.begin(), result.end(), '/', '\\'); + } + result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE); + } + else if(output == RESPONSE) + { + result = this->EscapeForShell(result, false, false, false); + } + return result; +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::Convert(RelativeRoot remote, + const std::string& local, + OutputFormat output, + bool optional) +{ + const char* remotePath = this->GetRelativeRootPath(remote); + + // The relative root must have a path (i.e. not FULL or NONE) + assert(remotePath != 0); + + if(!local.empty() && !optional) + { + std::vector components; + cmSystemTools::SplitPath(local, components); + std::string result = this->ConvertToRelativePath(components, remotePath); + return this->ConvertToOutputFormat(result, output); + } + + return this->ConvertToOutputFormat(remotePath, output); +} + +//---------------------------------------------------------------------------- +static bool cmOutputConverterNotAbove(const char* a, const char* b) +{ + return (cmSystemTools::ComparePath(a, b) || + cmSystemTools::IsSubDirectory(a, b)); +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToRelativePath(const std::vector& local, + const std::string& in_remote, + bool force) +{ + // The path should never be quoted. + assert(in_remote[0] != '\"'); + + // The local path should never have a trailing slash. + assert(!local.empty() && !(local[local.size()-1] == "")); + + // If the path is already relative then just return the path. + if(!cmSystemTools::FileIsFullPath(in_remote.c_str())) + { + return in_remote; + } + + if(!force) + { + // Skip conversion if the path and local are not both in the source + // or both in the binary tree. + std::string local_path = cmSystemTools::JoinPath(local); + if(!((cmOutputConverterNotAbove(local_path.c_str(), + this->StateSnapshot.GetRelativePathTopBinary()) && + cmOutputConverterNotAbove(in_remote.c_str(), + this->StateSnapshot.GetRelativePathTopBinary())) || + (cmOutputConverterNotAbove(local_path.c_str(), + this->StateSnapshot.GetRelativePathTopSource()) && + cmOutputConverterNotAbove(in_remote.c_str(), + this->StateSnapshot.GetRelativePathTopSource())))) + { + return in_remote; + } + } + + // Identify the longest shared path component between the remote + // path and the local path. + std::vector remote; + cmSystemTools::SplitPath(in_remote, remote); + unsigned int common=0; + while(common < remote.size() && + common < local.size() && + cmSystemTools::ComparePath(remote[common], + local[common])) + { + ++common; + } + + // If no part of the path is in common then return the full path. + if(common == 0) + { + return in_remote; + } + + // If the entire path is in common then just return a ".". + if(common == remote.size() && + common == local.size()) + { + return "."; + } + + // If the entire path is in common except for a trailing slash then + // just return a "./". + if(common+1 == remote.size() && + remote[common].empty() && + common == local.size()) + { + return "./"; + } + + // Construct the relative path. + std::string relative; + + // First add enough ../ to get up to the level of the shared portion + // of the path. Leave off the trailing slash. Note that the last + // component of local will never be empty because local should never + // have a trailing slash. + for(unsigned int i=common; i < local.size(); ++i) + { + relative += ".."; + if(i < local.size()-1) + { + relative += "/"; + } + } + + // Now add the portion of the destination path that is not included + // in the shared portion of the path. Add a slash the first time + // only if there was already something in the path. If there was a + // trailing slash in the input then the last iteration of the loop + // will add a slash followed by an empty string which will preserve + // the trailing slash in the output. + + if(!relative.empty() && !remote.empty()) + { + relative += "/"; + } + relative += cmJoin(cmRange(remote).advance(common), "/"); + + // Finally return the path. + return relative; +} + +//---------------------------------------------------------------------------- +static bool cmOutputConverterIsShellOperator(const std::string& str) +{ + static std::set shellOperators; + if(shellOperators.empty()) + { + shellOperators.insert("<"); + shellOperators.insert(">"); + shellOperators.insert("<<"); + shellOperators.insert(">>"); + shellOperators.insert("|"); + shellOperators.insert("||"); + shellOperators.insert("&&"); + shellOperators.insert("&>"); + shellOperators.insert("1>"); + shellOperators.insert("2>"); + shellOperators.insert("2>&1"); + shellOperators.insert("1>&2"); + } + return shellOperators.count(str) > 0; +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::EscapeForShell(const std::string& str, + bool makeVars, + bool forEcho, + bool useWatcomQuote) +{ + // Do not escape shell operators. + if(cmOutputConverterIsShellOperator(str)) + { + return str; + } + + // Compute the flags for the target shell environment. + int flags = 0; + if(this->GetState()->UseWindowsVSIDE()) + { + flags |= cmsysSystem_Shell_Flag_VSIDE; + } + else if(!this->LinkScriptShell) + { + flags |= cmsysSystem_Shell_Flag_Make; + } + if(makeVars) + { + flags |= cmsysSystem_Shell_Flag_AllowMakeVariables; + } + if(forEcho) + { + flags |= cmsysSystem_Shell_Flag_EchoWindows; + } + if(useWatcomQuote) + { + flags |= cmsysSystem_Shell_Flag_WatcomQuote; + } + if(this->GetState()->UseWatcomWMake()) + { + flags |= cmsysSystem_Shell_Flag_WatcomWMake; + } + if(this->GetState()->UseMinGWMake()) + { + flags |= cmsysSystem_Shell_Flag_MinGWMake; + } + if(this->GetState()->UseNMake()) + { + flags |= cmsysSystem_Shell_Flag_NMake; + } + + // Compute the buffer size needed. + int size = (this->GetState()->UseWindowsShell() ? + cmsysSystem_Shell_GetArgumentSizeForWindows(str.c_str(), flags) : + cmsysSystem_Shell_GetArgumentSizeForUnix(str.c_str(), flags)); + + // Compute the shell argument itself. + std::vector arg(size); + if(this->GetState()->UseWindowsShell()) + { + cmsysSystem_Shell_GetArgumentForWindows(str.c_str(), &arg[0], flags); + } + else + { + cmsysSystem_Shell_GetArgumentForUnix(str.c_str(), &arg[0], flags); + } + return std::string(&arg[0]); +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::EscapeForCMake(const std::string& str) +{ + // Always double-quote the argument to take care of most escapes. + std::string result = "\""; + for(const char* c = str.c_str(); *c; ++c) + { + if(*c == '"') + { + // Escape the double quote to avoid ending the argument. + result += "\\\""; + } + else if(*c == '$') + { + // Escape the dollar to avoid expanding variables. + result += "\\$"; + } + else if(*c == '\\') + { + // Escape the backslash to avoid other escapes. + result += "\\\\"; + } + else + { + // Other characters will be parsed correctly. + result += *c; + } + } + result += "\""; + return result; +} + +//---------------------------------------------------------------------------- +cmOutputConverter::FortranFormat +cmOutputConverter::GetFortranFormat(const char* value) +{ + FortranFormat format = FortranFormatNone; + if(value && *value) + { + std::vector fmt; + cmSystemTools::ExpandListArgument(value, fmt); + for(std::vector::iterator fi = fmt.begin(); + fi != fmt.end(); ++fi) + { + if(*fi == "FIXED") + { + format = FortranFormatFixed; + } + if(*fi == "FREE") + { + format = FortranFormatFree; + } + } + } + return format; +} + +void cmOutputConverter::SetLinkScriptShell(bool linkScriptShell) +{ + this->LinkScriptShell = linkScriptShell; +} + +cmState* cmOutputConverter::GetState() const +{ + return this->StateSnapshot.GetState(); +} diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h new file mode 100644 index 0000000..67858cf --- /dev/null +++ b/Source/cmOutputConverter.h @@ -0,0 +1,108 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmOutputConverter_h +#define cmOutputConverter_h + +#include "cmStandardIncludes.h" + +#include "cmGlobalGenerator.h" +#include "cmState.h" + +class cmOutputConverter +{ +public: + cmOutputConverter(cmState::Snapshot snapshot); + + virtual ~cmOutputConverter(); + + /** + * Convert something to something else. This is a centralized conversion + * routine used by the generators to handle relative paths and the like. + * The flags determine what is actually done. + * + * relative: treat the argument as a directory and convert it to make it + * relative or full or unchanged. If relative (HOME, START etc) then that + * specifies what it should be relative to. + * + * output: make the result suitable for output to a... + * + * optional: should any relative path operation be controlled by the rel + * path setting + */ + enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT }; + enum OutputFormat { UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, RESPONSE }; + std::string ConvertToOutputFormat(const std::string& source, + OutputFormat output); + std::string Convert(const std::string& remote, RelativeRoot local, + OutputFormat output = UNCHANGED); + std::string Convert(RelativeRoot remote, const std::string& local, + OutputFormat output = UNCHANGED, + bool optional = false); + + /** + * Get path for the specified relative root. + */ + const char* GetRelativeRootPath(RelativeRoot relroot); + + ///! for existing files convert to output path and short path if spaces + std::string ConvertToOutputForExisting(const std::string& remote, + RelativeRoot local = START_OUTPUT, + OutputFormat format = SHELL); + + /** For existing path identified by RelativeRoot convert to output + path and short path if spaces. */ + std::string ConvertToOutputForExisting(RelativeRoot remote, + const std::string& local = "", + OutputFormat format = SHELL); + + void SetLinkScriptShell(bool linkScriptShell); + + std::string EscapeForShell(const std::string& str, + bool makeVars = false, + bool forEcho = false, + bool useWatcomQuote = false); + + static std::string EscapeForCMake(const std::string& str); + + enum FortranFormat + { + FortranFormatNone, + FortranFormatFixed, + FortranFormatFree + }; + static FortranFormat GetFortranFormat(const char* value); + + /** + * Convert the given remote path to a relative path with respect to + * the given local path. The local path must be given in component + * form (see SystemTools::SplitPath) without a trailing slash. The + * remote path must use forward slashes and not already be escaped + * or quoted. + */ + std::string ConvertToRelativePath(const std::vector& local, + const std::string& in_remote, + bool force = false); + +private: + cmState* GetState() const; + + std::string ConvertToOutputForExistingCommon(const std::string& remote, + std::string const& result, + OutputFormat format); + +private: + cmState::Snapshot StateSnapshot; + + bool LinkScriptShell; +}; + +#endif diff --git a/bootstrap b/bootstrap index 14046ee..98cdcd0 100755 --- a/bootstrap +++ b/bootstrap @@ -299,6 +299,7 @@ CMAKE_CXX_SOURCES="\ cmMakefileLibraryTargetGenerator \ cmMakefileTargetGenerator \ cmMakefileUtilityTargetGenerator \ + cmOutputConverter \ cmOSXBundleGenerator \ cmNewLineStyle \ cmBootstrapCommands1 \ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a82441572493e4f420fca24041b594da9d3c14e6 commit a82441572493e4f420fca24041b594da9d3c14e6 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:33:38 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 20:20:25 2015 +0200 cmState::Snapshot: Provide accessor for the cmState. diff --git a/Source/cmState.cxx b/Source/cmState.cxx index c6fb299..3278d56 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -787,3 +787,8 @@ cmState::Snapshot cmState::Snapshot::GetBuildsystemDirectoryParent() const return snapshot; } + +cmState* cmState::Snapshot::GetState() const +{ + return this->State; +} diff --git a/Source/cmState.h b/Source/cmState.h index 60b024f..39c9b76 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -47,6 +47,8 @@ public: bool IsValid() const; Snapshot GetBuildsystemDirectoryParent() const; + cmState* GetState() const; + private: void ComputeRelativePathTopSource(); void ComputeRelativePathTopBinary(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f4ef39603f3184ac3f78e1f52529947303b1bd1 commit 1f4ef39603f3184ac3f78e1f52529947303b1bd1 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:25:37 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 4 19:25:37 2015 +0200 cmLocalGenerator: Remove some commented lines of code. They've been commented out for a decade, which seems long enough. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index da95a4d..fe71d0f 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2622,28 +2622,23 @@ std::string cmLocalGenerator::Convert(const std::string& source, RelativeRoot relative, OutputFormat output) { - // Convert the path to a relative path. std::string result = source; switch (relative) { case HOME: - //result = cmSystemTools::CollapseFullPath(result.c_str()); result = this->ConvertToRelativePath( this->GetState()->GetSourceDirectoryComponents(), result); break; case START: - //result = cmSystemTools::CollapseFullPath(result.c_str()); result = this->ConvertToRelativePath( this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); break; case HOME_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); result = this->ConvertToRelativePath( this->GetState()->GetBinaryDirectoryComponents(), result); break; case START_OUTPUT: - //result = cmSystemTools::CollapseFullPath(result.c_str()); result = this->ConvertToRelativePath( this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); break; ----------------------------------------------------------------------- Summary of changes: Source/CMakeLists.txt | 2 + Source/cmCPackPropertiesGenerator.cxx | 8 +- Source/cmCommandArgumentParserHelper.cxx | 7 +- Source/cmComputeLinkInformation.cxx | 6 +- Source/cmComputeLinkInformation.h | 2 - Source/cmCoreTryCompile.cxx | 6 +- Source/cmCustomCommandGenerator.cxx | 7 +- Source/cmCustomCommandGenerator.h | 2 - Source/cmIfCommand.cxx | 2 +- Source/cmListFileCache.cxx | 8 +- Source/cmListFileCache.h | 8 +- Source/cmLocalGenerator.cxx | 423 +--------------------------- Source/cmLocalGenerator.h | 82 +----- Source/cmLocalUnixMakefileGenerator3.cxx | 6 +- Source/cmMakefile.cxx | 9 +- Source/cmMakefile.h | 2 + Source/cmMakefileTargetGenerator.cxx | 4 +- Source/cmOutputConverter.cxx | 451 ++++++++++++++++++++++++++++++ Source/cmOutputConverter.h | 108 +++++++ Source/cmQtAutoGenerators.cxx | 40 +-- Source/cmState.cxx | 5 + Source/cmState.h | 2 + Source/cmTarget.cxx | 6 +- Source/cmTestGenerator.cxx | 14 +- bootstrap | 1 + 25 files changed, 643 insertions(+), 568 deletions(-) create mode 100644 Source/cmOutputConverter.cxx create mode 100644 Source/cmOutputConverter.h hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 4 17:18:31 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 4 Jun 2015 17:18:31 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1512-g82e0301 Message-ID: <20150604211831.3738BAF86E@public.kitware.com> 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 82e0301fc55157c88ffa10c5800e426d5b7348f4 (commit) via 3c43441cb4df12b9f07414f3b51c31adf15bf14e (commit) from 022ec2434d23adc7e0a3bae74306d64649ac8a96 (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=82e0301fc55157c88ffa10c5800e426d5b7348f4 commit 82e0301fc55157c88ffa10c5800e426d5b7348f4 Merge: 022ec24 3c43441 Author: Bill Hoffman AuthorDate: Thu Jun 4 17:18:30 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 17:18:30 2015 -0400 Merge topic 'compiler-launcher' into next 3c43441c Fix spelling error of variable name. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3c43441cb4df12b9f07414f3b51c31adf15bf14e commit 3c43441cb4df12b9f07414f3b51c31adf15bf14e Author: Bill Hoffman AuthorDate: Thu Jun 4 17:17:37 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 4 17:17:37 2015 -0400 Fix spelling error of variable name. diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst index 8fbc852..9a16687 100644 --- a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -9,5 +9,5 @@ run this tool and pass the compiler and its arguments to the tool. Some example tools are distcc and ccache. This property is initialized by the value of -the :variable:`CMAKE__COMPILER_LAUNCER` variable if it is set +the :variable:`CMAKE__COMPILER_LAUNCHER` variable if it is set when a target is created. ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 4 17:44:45 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 4 Jun 2015 17:44:45 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1514-g581b046 Message-ID: <20150604214445.EAF24AEFD4@public.kitware.com> 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 581b046dcfc911310c1f211254b794d7569625a4 (commit) via d82e2f2329b71885389efa3d93d4135f63382158 (commit) from 82e0301fc55157c88ffa10c5800e426d5b7348f4 (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=581b046dcfc911310c1f211254b794d7569625a4 commit 581b046dcfc911310c1f211254b794d7569625a4 Merge: 82e0301 d82e2f2 Author: Bill Hoffman AuthorDate: Thu Jun 4 17:44:45 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 4 17:44:45 2015 -0400 Merge topic 'compiler-launcher' into next d82e2f23 Fix documentation warning. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d82e2f2329b71885389efa3d93d4135f63382158 commit d82e2f2329b71885389efa3d93d4135f63382158 Author: Bill Hoffman AuthorDate: Thu Jun 4 17:44:18 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 4 17:44:18 2015 -0400 Fix documentation warning. diff --git a/Help/release/dev/compiler-launcher.rst b/Help/release/dev/compiler-launcher.rst index 90991e5..3ba692d 100644 --- a/Help/release/dev/compiler-launcher.rst +++ b/Help/release/dev/compiler-launcher.rst @@ -1,5 +1,5 @@ compiler-launcher --------------- +----------------- * The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned to add compiler launcher tools like distcc and ccache along with the ----------------------------------------------------------------------- Summary of changes: Help/release/dev/compiler-launcher.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Jun 5 00:01:11 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 5 Jun 2015 00:01:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1426-g8d0347b Message-ID: <20150605040111.DF556B00DF@public.kitware.com> 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, master has been updated via 8d0347b57166cc14a2c6668742d801d5d2828772 (commit) from 91cd014d6452371056bb3f96de29967f506b3bd7 (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=8d0347b57166cc14a2c6668742d801d5d2828772 commit 8d0347b57166cc14a2c6668742d801d5d2828772 Author: Kitware Robot AuthorDate: Fri Jun 5 00:01:10 2015 -0400 Commit: Kitware Robot CommitDate: Fri Jun 5 00:01:10 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index a4c877e..890dde4 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150604) +set(CMake_VERSION_PATCH 20150605) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From nilsgladitz at gmail.com Fri Jun 5 03:18:49 2015 From: nilsgladitz at gmail.com (Nils Gladitz) Date: Fri, 5 Jun 2015 03:18:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1516-g03230b4 Message-ID: <20150605071849.27548AFE22@public.kitware.com> 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 03230b4b5cf33762774ee425373d03940225658d (commit) via cdf2cba3e71b92c5bddf7afe760c131953f999a4 (commit) from 581b046dcfc911310c1f211254b794d7569625a4 (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=03230b4b5cf33762774ee425373d03940225658d commit 03230b4b5cf33762774ee425373d03940225658d Merge: 581b046 cdf2cba Author: Nils Gladitz AuthorDate: Fri Jun 5 03:18:48 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 5 03:18:48 2015 -0400 Merge topic 'vs-deterministic-guid' into next cdf2cba3 VS: Use cmUuid RFC 4122 compliant hash based UUID generation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cdf2cba3e71b92c5bddf7afe760c131953f999a4 commit cdf2cba3e71b92c5bddf7afe760c131953f999a4 Author: Nils Gladitz AuthorDate: Thu Jun 4 15:48:03 2015 +0200 Commit: Nils Gladitz CommitDate: Fri Jun 5 09:17:17 2015 +0200 VS: Use cmUuid RFC 4122 compliant hash based UUID generation diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index a242046..0ced245 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -15,6 +15,7 @@ #include "cmGeneratedFileStream.h" #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" +#include "cmUuid.h" #include "cmake.h" #include @@ -953,14 +954,15 @@ std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) std::string input = this->CMakeInstance->GetState()->GetBinaryDirectory(); input += "|"; input += name; - std::string md5 = cmSystemTools::ComputeStringMD5(input); - assert(md5.length() == 32); - std::string const& guid = - (md5.substr( 0,8)+"-"+ - md5.substr( 8,4)+"-"+ - md5.substr(12,4)+"-"+ - md5.substr(16,4)+"-"+ - md5.substr(20,12)); + + cmUuid uuidGenerator; + + std::vector uuidNamespace; + uuidGenerator.StringToBinary( + "ee30c4be-5192-4fb0-b335-722a2dffe760", uuidNamespace); + + std::string guid = uuidGenerator.FromMd5(uuidNamespace, input); + return cmSystemTools::UpperCase(guid); } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 5 08:28:41 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 5 Jun 2015 08:28:41 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.2.3-1429-g092f153 Message-ID: <20150605122841.2378CB027A@public.kitware.com> 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, master has been updated via 092f1539af99e031c99a74d5a0f24731f58bf10a (commit) via bccbe281ff7039e145814d1858a45f38bb681173 (commit) via 6cafd8ed0bc8458ba2c6eb0e792c894cf4f37f90 (commit) from 8d0347b57166cc14a2c6668742d801d5d2828772 (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=092f1539af99e031c99a74d5a0f24731f58bf10a commit 092f1539af99e031c99a74d5a0f24731f58bf10a Merge: 8d0347b bccbe28 Author: Brad King AuthorDate: Fri Jun 5 08:28:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 5 08:28:39 2015 -0400 Merge topic 'update-kwsys' bccbe281 Merge branch 'upstream-kwsys' into update-kwsys 6cafd8ed KWSys 2015-06-03 (8533a79b) ----------------------------------------------------------------------- Summary of changes: Source/kwsys/CMakeLists.txt | 9 +++ Source/kwsys/SystemInformation.cxx | 98 ++++++++++++++++++++++++++++++++ Source/kwsys/SystemInformation.hxx.in | 4 ++ Source/kwsys/kwsysPlatformTestsCXX.cxx | 13 +++++ Source/kwsys/testSystemInformation.cxx | 1 + 5 files changed, 125 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 5 08:29:21 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 5 Jun 2015 08:29:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.2.3-1519-gf6cb548 Message-ID: <20150605122921.DD44BB0287@public.kitware.com> 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 f6cb54884b64cac39a4a6799c3572c84997c7dc8 (commit) via 092f1539af99e031c99a74d5a0f24731f58bf10a (commit) via 8d0347b57166cc14a2c6668742d801d5d2828772 (commit) from 03230b4b5cf33762774ee425373d03940225658d (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=f6cb54884b64cac39a4a6799c3572c84997c7dc8 commit f6cb54884b64cac39a4a6799c3572c84997c7dc8 Merge: 03230b4 092f153 Author: Brad King AuthorDate: Fri Jun 5 08:29:01 2015 -0400 Commit: Brad King CommitDate: Fri Jun 5 08:29:01 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From robert.maynard at kitware.com Fri Jun 5 09:02:14 2015 From: robert.maynard at kitware.com (Robert Maynard) Date: Fri, 5 Jun 2015 09:02:14 -0400 (EDT) Subject: [Cmake-commits] CMake annotated tag, v3.3.0-rc1, created. v3.3.0-rc1 Message-ID: <20150605130214.2A804B02F3@public.kitware.com> 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 annotated tag, v3.3.0-rc1 has been created at 873e8d31d4227bb8b24b34cd7cfc12eefc6bc31a (tag) tagging b8746c4cfe325f05dbcb4e9a99ca78496c90e74e (commit) replaces v3.2.3 tagged by Brad King on Thu Jun 4 14:07:05 2015 -0400 - Log ----------------------------------------------------------------- CMake 3.3.0-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVcJPJAAoJEOyP7zp7+07arSsP/2EO/thKNwdJZGaTTZAIxPph HRMbOQ5bDhEza8FiXTempEwSE4FjudUzlO9902FrDOyc8ImBbopPqN4y+QQF5ite Hgd/y/8Kjhj6PE32Fb9J28sXQrBL/BiQ9cnzSMF0hjxG9NimljwTvSec8hEO7UWf +epR/n+nVjqlXA9/ZU3Sb06pJNkVjh3Z5myTmDjea7OVqi/hxqlotACCqYw9Okb1 IZFN+6r4EVF6nFOdU+1+2miohl1bUbJjGnCv9+Y0AcQawqkOXA/GsL+Y2IlA4PIb 3khrVQghA1kXbieCeXBSNEmr7hvcOib9VX/5HdgWWMkCf+Qm3wXh+xyWgq/wVm60 HbZO/P5JKHhokBVFpBwxCgGL84n9P4HM/vU0w8n7RAvf2qtLuzqaZKcHQiXeidY8 7Bd2bMnpRot3mXdN3CLpWsZ7tiaq+zPXcjR/+nE6LoUoUX2cROObPSGMipWxFf0s /BULr5tqo0LoZl7DIJFnYSF/MVWwC5P8WiZgusJAwKLXd04v8YmiOYwM+yGf3uXv WM2HPanp9etbnI6QOVd1M7fTYa8h6VY5Plrp1EEcLe2HPAY1H1tpgjgH/i3e7nA5 9Sz/C/lxXvvZa99MsD1+sLwb51wQBqtQHkHIqEanNsd790ESp3B5cxQybyE02zW9 KIkvPGiWEvsJ0Xk8o3eh =JYen -----END PGP SIGNATURE----- Andrey Pokrovskiy (3): ExternalProject: Allow generator expressions in initial cache options ExternalProject: Allow generator expressions with LOG_* options (#15287) Allow CMAKE_TOOLCHAIN_FILE to be an empty string Andr? Klitzing (2): CPack: Print output from codesign if signing fails CPack: Add support to overwrite or pass additional parameter to codesign Axel Huebl (1): FindHDF5: Add version support Ben Boeckel (4): ExternalProject: fix the build command for generator overrides ctest_build: spruce up the documentation a bit ctest_build: update the default target documentation ctest_build: mention CTEST_BUILD_COMMAND in the docs Bill Hoffman (6): ctest: Add a new --repeat-until-fail option Fix warnings from clang scanbuild. Fix an unused variable warning from scanbuild. Move scanbuild exceptions out of dashboard script and into cmake. Tests: Add case for CPack source package with symlinks cmake: Add internal -E mode to run include-what-you-use with the compiler Bill Newcomb (1): Tests: Fix CMake.ELF test with read-only source (#15489) Bjoern Thiel (1): InstallRequiredSystemLibraries: Fix MBCS MFC detection (#15531) Brad King (617): Merge branch 'release' Begin post-3.2 development Help: Add notes for topic 'FindBoost-per-config-libraries' CheckFortranCompilerFlag: Add test case Help: Add notes for topic 'add-CheckFortranCompilerFlag' bootstrap: Enable color Makefile output Makefile: Fix output during parallel builds (#12991) Xcode: Refactor generation of per-language compiler flags Xcode: Generate Intel Fortran compiler flags in project files cmGlobalXCodeGenerator: Rename variable 'lang' => 'llang' Merge branch 'backport-no-global-setlocale' into release-3.1 Makefile: Print all color escape sequences before newline Makefile: Add progress to link step messages Makefile: Change link step message color to bold green Help: Add notes for topic 'makefile-progress-improvements' Merge branch 'makefile-missing-comment' into release-3.1 Merge topic 'FindBoost-per-config-libraries' Merge topic 'xcode-flags-per-language' Merge topic 'add-CheckFortranCompilerFlag' Merge topic 'no-global-setlocale' Merge topic 'try_compile-quote-module-path' Merge topic 'makefile-progress-improvements' Merge topic 'use-algorithms' Merge topic 'cpack_rpm_mulit_prefix_fixup' Merge branch 'release-3.1' Merge branch 'release' Merge topic 'test-RunCMake-updates' try_compile: Use shorter test executable name with consistent length Merge topic 'cmStandardIncludes-cleanup' Merge topic 'makefile-missing-comment' Merge topic 'try_compile-shorter-names' Merge topic 'FindRuby-windows-x64' Merge topic 'bootstrap-sphinx-qthelp' Merge topic 'BundleUtilities-install_name_tool-exit' Merge topic 'fix_timeout_docs' Merge topic 'export-interface-source-files' Merge branch 'release-3.1' Merge branch 'release' CMake 3.1.3 cmInstallGenerator: Move GetDestination to subclasses that need it cmInstallGenerator: Refactor computation of absolute install dest cmInstallGenerator: Fix check for absolute install destinations cmInstallGenerator: Pass destination explicitly to AddInstallRule install: Allow generator expressions in TARGETS DESTINATION (#14317) Merge topic 'cpack_rpm_mulit_prefix_fixup' Merge topic 'FindCoin3D-drop-link' Merge topic 'install-DESTINATION-genex' Merge topic 'use-cmRange' Merge topic 'clean-up-cmMacroCommand' Merge branch 'release-3.1' Merge branch 'release' Merge topic 'xcode-attribute-genex' Merge topic 'clean-up-cmFunctionCommand' Merge topic 'doc-configure_file-output-location' Tests: Consolidate detection of 'rpmbuild' Merge topic 'doc-3.2-relnotes-fixup' Merge branch 'release' Merge topic 'wix-product-fragment' Merge topic 'test-rpmbuild-cleanup' Merge topic 'cmListCommand-algorithms' VS: Use $(ConfigurationName) as CMAKE_CFG_INTDIR in VS 7, 8, 9 VS: Fix .vcproj and .vfproj file OutputDirectory generation Merge topic 'vs7-OutputDirectory' Windows-GNU: Do not tell find_library to treat '.dll' as linkable CMakeParseImplicitLinkInfo: Avoid if() auto-deref in quoted arg Merge topic 'minor-cleanups' Fortran: Add infrastructure to detect compiler version (#15372) Fortran: Detect Intel compiler version Fortran: Detect SunPro compiler version Fortran: Detect PathScale compiler version Fortran: Detect GNU compiler version Fortran: Detect XL and VisualAge compiler versions Fortran: Detect PGI compiler version Fortran: Detect G95 compiler version Fortran: Test that CMAKE_Fortran_COMPILER_VERSION is set (#15372) Help: Add notes for topic 'compiler-version-Fortran' Merge topic 'FindJNI-awt-arch' Merge topic 'binary-release-no-OpenSSL-on-Win-or-OSX' Merge topic 'compiler-version-Fortran' Merge topic 'mingw-no-find_library-dll' Merge topic 'CMakeParseImplicitLinkInfo-CMP0054' Merge branch 'release' Teach find_(library|file|path) to get prefixes from PATH (#15370) Tests: Rename RunCMake.CTestMemcheck internals to match CTestSubmit Tests: Split RunCTest helper out of RunCMake.CTest(Submit|Memcheck) Tests: Rename RunCMake.{CTestSubmit => ctest_submit} Tests: Rename RunCMake.{CTestMemcheck => ctest_memcheck} Merge topic 'cmake-gui-reset-generator-toolset-and-platform' Merge topic 'find-command-prefix-from-PATH' Merge branch 'release' Tests: Match curl error in RunCMake.ctest_submit FailDrop-* cases Tests: Teach RunCMake to tolerate BullseyeCoverage lines in test output Tests: Teach RunCMake to tolerate Guard Malloc lines in test output Tests: Teach RunCMake to tolerate 'Error kstat returned' lines in test output Tests: Drop unnecessary stderr matching from RunCMake.ctest_memcheck Merge topic 'private-FindJsonCpp' Merge topic 'FindCurses-remove-unused-check' Merge topic 'cpack-bundle-codesign-output' Merge topic 'CheckStructHasMember-fix-null-deref-warning' Merge topic 'use-algorithms' Merge topic 'fix-graphiz-typo' Merge topic 'minor-cleanups' Merge topic 'rpm_run_tests_on_other_platforms' Merge topic 'if-optimize' Merge branch 'release' Help: Add notes for topic 'rpm_package_architecture' Merge topic 'rpm_package_architecture' Merge topic 'wix-shortcut-properties' Merge branch 'release' FindMatlab: Remove trailing blank lines Merge topic 'test-RunCMake-refactor-ctest' Merge topic 'ctest-output-options' Merge topic 'GetPrerequisites-file-command-update' Merge topic 'rpm_at_in_path' Merge topic 'vs-midl-absolute-OutputDirectory' Merge topic 'FeatureSummary-no-duplicates' Merge topic 'osx-framework-search-platform-SDKs' Merge topic 'osx-CFBundleExecutable' Merge topic 'FindMatlab-remove-trailing-lines' Merge topic 'cleanup-cmAlgorithms' Tests: Drop CTestTestFailedSubmit-* tests cmVisualStudio10TargetGenerator: Wrap long line ExternalData: Add support for custom algorithm-to-URL mapping Merge topic 'sln-no-bom' Merge topic 'refine-MSVC-ARM-WinCE' Merge topic 'vs-midl-absolute-OutputDirectory' Merge topic 'CheckCompilerFlag-use-FLAGS' Merge topic 'test-drop-CTestTestFailedSubmit' Merge branch 'release' RC: Drop unused CMAKE_COMPILE_RESOURCE variable setting RC: Enable language after C, CXX, or Fortran is enabled (#15404) RC: Add platform-specific preprocessor definitions (#15404) Merge topic 'ExternalData-url-algo-map' Merge topic 'windows-rc-enable-later' Merge branch 'upstream-kwsys' into update-kwsys Tests: Extend RunCMake.CommandLine to cover 'cmake --build' for 'ninja -v' Merge topic 'update-kwsys' Merge topic 'cpack_rpm_mulit_prefix_fixup-for-master' Merge topic 'install-manifest-optimize' Merge topic 'cmake-build-ninja-verbose' Merge topic 'remove_error_read_script' Merge topic 'macro-function-docs' Merge branch 'release' Merge topic 'fix-crash-on-bad-LANG_STANDARD' Merge topic 'fix-ctest-update-locale' Merge topic 'modules-check-ARGC' Merge topic 'locale-agnostic-findhg' Merge branch 'release' Merge branch 'upstream-kwsys' into update-kwsys JOM: Pass /NOLOGO when driving builds as is done for NMake Merge topic 'update-kwsys' Merge topic 'cpack-strict-variable-selection' Merge topic 'backport-KWSys-SystemTools-CopyFileAlways-fix' Merge branch 'release' InstallRequiredSystemLibraries: Format documentation Merge branch 'release' Merge topic 'fix-JOM-quiet-make' Merge topic 'InstallRequiredSystemLibraries-COMPONENT' Merge branch 'upstream-kwsys' into update-kwsys VS6: Compute CMAKE_*_FLAGS and COMPILE_DEFINITIONS* only when needed Merge topic 'custom-command-multiple-outputs' Merge topic 'update-kwsys' Merge topic 'fix-wixobj-filenames' Merge topic 'cbp-unit-targets' cmake: Teach --build to get VCExpress output (#15437) Merge topic 'configure_file-NEWLINE_STYLE-no-warn' Merge topic 'ninja-check-root-robustly' Merge topic 'UseSWIG-fix-CMP0054-warnings' Merge topic 'ExternalProject-byproducts-tokens' Merge topic 'target-language-genex' Merge branch 'release' Merge branch 'release' Add options to build CMake without any language dialects Merge branch 'upstream-kwsys' into update-kwsys Merge topic 'fix_jacoco_coverage_process' Merge topic 'main_dependency_diagnostic' Merge topic 'vs-Intel-Fortran-map-more-flags' Merge topic 'allow-no-language-standard' Merge topic 'cmAlgorithms-early-return' Merge topic 'cmAlgorithms-cleanup' Merge topic 'cmRemoveDuplicates-improvement' Merge topic 'vs-express-build-output' Merge topic 'update-kwsys' Merge topic 'refactor-cmGeneratorExpression' Merge topic 'output-ctest-env-vars' Merge topic 'FindMatlab-rewrite' Merge topic 'cpack_rpm_old_version_tests' Merge topic 'wix-installer-theme' Record compile features for GNU on Windows (#15443) Merge branch 'upstream-kwiml' into update-kwiml Merge branch 'upstream-kwsys' into update-kwsys Tests: Compute Xcode version for any generator on OS X Ninja: Do not generate circular phony rules (#15454) cmGlobalNinjaGenerator: Drop unused member Help: Add notes for topic 'mingw-compile-features' Help: Add notes for topic 'file-globbing-directory-listing' Merge topic 'mingw-compile-features' Merge topic 'WCDH-fix-cxx_nullptr-workaround' Merge topic 'cpack_rpm_component_fall_through' Merge topic 'update-kwiml' Merge topic 'ninja-no-circular-phony' Merge topic 'update-kwsys' Merge topic 'fix-FindPackageHandleStandardArgs-doc' Merge topic 'file-globbing-directory-listing' PGI: Remove invalid -fPIE flag (#15460) cmGlobalNinjaGenerator: Fix spelling of "unknown" cmGlobalNinjaGenerator: Optimize handling of known build outputs Ninja: Add policy to require explicit custom command byproducts Help: Add notes for topic 'ctest-repeat-until-fail' Help: Add notes for topic 'xcode-xctest' Merge topic 'ctest-repeat-until-fail' Merge topic 'xcode-xctest' Merge topic 'pgi-no-pie' Merge topic 'SunPro-Fortran-KPIC' Merge topic 'cpack-rpm-ignore-default-prefix' Merge topic 'autogen-write-access' Merge topic 'cpack-bundle-codesign' Merge topic 'UseJava-fix-arg-parse' Merge topic 'add-extra-qbs-generator' Merge topic 'lib64_paths_crosscompiling' Merge topic 'ninja-require-byproducts' Merge topic 'xcode5-xctest' Merge topic 'install-sphinx-object-mapping' Merge topic 'blugeneq-platform-files' Merge topic 'SunPro-no-KPIE' Merge topic 'file-LOCK-close' GNU: Do not use -isystem with gfortran Merge topic 'qtdialog-cpack-qt5-osx' Merge topic 'curl-cygwin-no-windows' Merge topic 'Fortran-GNU-no-isystem' Merge topic 'FindMFC-CMP0054' Merge topic 'wix-external-expat' Merge topic 'fix-external-project-generator' cmGlobalXCodeGenerator: Simplify ARCHS list with cmJoin Xcode: Set ARCHS only when CMAKE_OSX_ARCHITECTURES is specified (#14736) ExternalData: Parameterize internal file(GLOB) operation selection ExternalData: Add option to recursively match under directories QtAutogen: Fix rcc rebuild with Ninja generator (#15459) Help: Format add_dependencies documentation Allow add_dependencies() on INTERFACE libraries (#15414) Merge topic 'clean-scanbuild-warnings' Merge topic 'wix-fix-utf8' Merge topic 'xcode-default-ARCHS' Merge topic 'ExternalData-recursive-match' Merge topic 'ninja-autogen' Merge topic 'add_dependencies-INTERFACE-libraries' Merge topic 'cpack-archive-prefix' Makefile: Tell GNU make to delete rule outputs on error (#15474) Help: Add link target to cmake-language.7 lists section Help: Fix xref typos in target_compile_options docs Help: Refine COMPILE_OPTIONS property documentation Merge topic 'clean-scanbuild-warnings' Merge topic 'doc-list-xref' Merge topic 'doc-COMPILE_OPTIONS-cleanup' Merge topic 'UseSWIG-no-MAIN_DEPENDENCY' CPack: Fix make tool selection during preinstall (#15483) Tests: Do not try to use invalid "ld -v" flag on Solaris Help: Add notes for topic 'UseSWIG-no-MAIN_DEPENDENCY' Help: Add notes for topic 'makefile-DELETE_ON_ERROR' Help: Add notes for topic 'cpack-rpm-basic-symlink-handling' Merge topic 'cpack-rpm-basic-symlink-handling' Merge topic 'UseSWIG-no-MAIN_DEPENDENCY' Tests: Fix RunCMake.CTestCommandLine expected output time matching CTestCustom: Suppress OS X universal binary link arch warnings cmCPackDebGenerator: Cast file mode to proper type for %o formatter cpack: Disable CMake Cygwin legacy warning while packaging Merge topic 'solaris-fix-target_link_libraries-test' Merge topic 'suppress-osx-arch-linker-warning' Merge topic 'makefile-DELETE_ON_ERROR' Merge topic 'jsoncpp-isfinite' Merge topic 'cpack-fix-preinstall-tool' Merge topic 'ctest-repeat-until-fail' Merge topic 'cpack-deb-format-cast' Help: Add link target to cmake-language.7 variables section Help: Rewrite 'set` command documentation Help: Document conversion of PATH/FILEPATH cache values to absolute paths Merge topic 'xcode-source-type-metal' Merge topic 'doc-set-command' Merge topic 'fix-test-CMakeELF-read-only-source' Merge topic 'fix-liblzma-access-alignment' Merge topic 'clean-up-cmMakefile' Merge topic 'remove-DEFINITIONS-directory-property' liblzma: Disable XL compiler optimizations in one source to avoid crash Merge topic 'fix-liblzma-XL-optimize' Merge topic 'FindCUDA.cmake/StaticRuntime' Help: Fix syntax in non-relocatable usage requirements example Help: Fix typo in cmake-packages(7) manual Help: Place relocatable package notes in their own subsections Help: Reorganize and refine discussion of relocatable packages Help: Update discussion of relocable packages in cmake-packages(7) Help: Split cmake-generators(7) into linkable subsections Makefile: Tolerate a BOM while scanning source dependencies (#15493) Merge topic 'doc-generator-groups' Merge topic 'doc-relocatable-usage-requirements' Help: Revise target_link_libraries command documentation Merge topic 'vs-xaml' Merge topic 'doc-generator-names-ref' Merge topic 'test_cpack_symlinks' Merge topic 'makefile-depscan-BOM' Merge topic 'doc-target_link_libraries' Merge topic 'gcov-module-coverage-exclude' Merge topic 'improve-properties-help' Help: Add notes for topic 'gcov-module-coverage-exclude' Merge topic 'cpack-one-component-only' Merge topic 'minor-cleanups' Tests: Fix CompileFeatures cxx_generalized_initializers example Features: VS 2013 Update 3 supports initializer lists (#15494) Tests: Teach RunCMake to optionally merge command output to stdout Help: Add link target for Find Modules section of cmake-developer.7 Merge topic 'gcov-module-coverage-exclude' Merge topic 'minor-cleanups' Merge topic 'vs-compiler-feature-2013-update' Merge topic 'refactor-cache-api' cmake: Show in --help how to select VS target platform (#15422) Revert topic 'refactor-cache-api' Merge topic 'refactor-cache-api' Help: Add notes for topic 'emulator-property' Merge topic 'xcode-quote-path' Merge topic 'document_supported_compiler_feature_compilers' Merge topic 'emulator-property' Merge topic 'FindMatlab_add_recent_versions' liblzma: Disable XL compiler optimizations altogether liblzma: Disable GNU 3.3 compiler optimizations CTestCustom: Suppress more OS X universal binary link arch warnings Simplify logic to compute install prefix in OS X CMake.app Link libraries by full path even in implicit directories Merge topic 'link-implicit-libs-full-path' Merge topic 'cmake-command-line-help-vs-arch' Merge topic 'refactor-cache-api' Merge topic 'FindCUDA.cmake/C++11Flags' Merge topic 'fix-liblzma-optimize' Merge topic 'fix-libarchive-gnutar-large-ids' CTestCustom: Suppress more OS X universal binary link arch warnings Merge topic 'simplify-osx-install-prefix' Merge topic 'fix-libarchive-mktemp' Merge topic 'FindCUDA.cmake/CUDA_SOURCE_FILE' Merge topic 'tar-write-format' Tests: Create pseudo_emulator output dir for Xcode 2.x Tests: Move more command line tests into RunCMake.CommandLine Merge branch 'upstream-kwsys' into update-kwsys Merge topic 'update-kwsys' Merge topic 'suppress-osx-arch-linker-warning' Merge topic 'emulator-property' Merge topic 'c-locale-messages' Merge topic 'move-command-line-tests' Merge topic 'cmake-G-print-generators' Merge topic 'custom-command-multiple-outputs' Merge branch 'release' Merge topic 'cmake-cleanups' Merge topic 'introduce-cmState' Help: Fix {GIT,P4}UpdateCustom documentation (#15512) Merge branch 'release' Tests: Update Preprocess test for XL compiler limitations Ninja: Drop 'experimental' label in documentation Deprecate Visual Studio 6 generator Deprecate Visual Studio 7 generator (.NET 2002) VS: Drop reload macros for VS >= 10 (#11258,#14680) Merge topic 'FindMatlab-test-timeout' Merge topic 'doc-ctest-update-option-wording' Merge topic 'doc-ninja-non-experimental' Merge topic 'test-xl-preprocess-updates' Merge topic 'port-global-properties-to-cmState' Merge topic 'vs6-deprecate' Merge topic 'vs70-deprecate' Merge topic 'vs10-no-macros' Merge topic 'UseSWIG-use-absolute-path' Tests/QtAutogen: Require CMake 3.1 to set policies everywhere Tests/QtAutogen: Enable per-config source tests when possible Tests/QtAutogen: Help Qt5Autogen test find Qt5 on Windows Tests/QtAutogen: Avoid touching files in the source tree QtAutogen: Workaround rcc CRCRLF newlines on Windows (#15459) FPHSA: Revise and format documentation FPHSA: Document REQUIRED_VARS recommendation (#15352) Merge topic 'FPHSA-updates' Merge topic 'ninja-autogen' Merge topic 'cpack-one-component-only' Help: Clarify PDB_NAME fallback behavior (#15518) Tests: Delay RunCMake.ExternalProject case checks Help: Add notes for topic 'add-GreenHills-MULTI-generator' Merge topic 'stable-xcode-projects' Merge topic 'doc-PDB_NAME-fallback' Merge topic 'add-GreenHills-MULTI-generator' Merge topic 'clean-up-ReadListFile' Help: Add notes for topic 'cpack-rpm-refactored-file-listing' cmSystemTools: Teach RunSingleCommand to separate stdout and stderr Merge topic 'ExternalProject-test-refactor' Merge topic 'cpack-rpm-refactored-file-listing' Merge topic 'cmSystemTools-RunSingleCommand-stderr' Merge topic 'FindCUDA.cmake/Fix-MakeDirDuringSeparableCompilation' cmQtAutoGenerators: Split CR stripping out to helper function QtAutogen: Process 'rcc --list' stdout and stderr separately (#15523) Merge topic 'cpack-deb-component-vars-prepare' Merge topic 'disable-cmMakefile-copy' Merge topic 'clean-up-cmMakefile' Tests: Add case to cover ExternalProject with subdirectories Help: Add notes for topic 'ExternalProject-genex' ExternalProject: Fix error message typo Tests: Protect CTestTestSerialOrder from environment (#15524) cmComputeLinkInformation: Reduce 'if' nesting in AddItem ctest: Treat ENV{CTEST_OUTPUT_ON_FAILURE} as a boolean Help: Fix formatting of env var refs in ctest.1 manual ExternalProject: Allow dependencies on INTERFACE libraries Help: Document in find_library how to search for static libraries cmGeneratorExpressionEvaluationFile: Add missing sys/types.h include Merge topic 'autogen-no-rcc-stderr' Merge topic 'doc-find_library-file-name' Merge topic 'doc-ctest-env-formatting' Merge topic 'fix-CTestTestSerialOrder-parallel-env' Merge topic 'ExternalProject-genex' Merge topic 'ExternalProject-depend-INTERFACE' Merge topic 'deterministic-CTest-tests' Merge topic 'bash-completion-updates' Merge topic 'mingw-64' Merge topic 'check-compiler-flag-clang' Merge topic 'allow-empty-CMAKE_TOOLCHAIN_FILE' Merge topic 'cpack-deb-linitian-md5hash' Tests: Fix ExportImport on AIX with GCC Tests: Fix RunCMake.CTest to tolerate source line number changes cmSystemTools: Fix IsPathToFramework implementation (#15535) Modules/CTest: Use bracket comment for documentation block Modules/CTest: Improve documentation formatting ctest: Consolidate documentation of CTEST_USE_LAUNCHERS (#15533) Merge topic 'fix-test-RunCMake.CTest-line-numbers' Merge topic 'doc-CTEST_USE_LAUNCHERS-ninja' Merge topic 'test-ExportImport-AIX-GCC' Merge topic 'doc-sizeof_void_p' Merge topic 'InstallRequiredSystemLibraries-fix-mbcs' Merge topic 'fix-osx-framework-detection' Merge topic 'include-early-optional-handling' Merge topic 'deterministic-CTest-tests' Help: Document that cmake_minimum_required should be called first Merge topic 'cmState-CurrentDirs' Merge topic 'CMP0026-doc-title' Merge topic 'clean-up-cmDefinitions' Help: Revise buildsystem artifact file type documentation (#15539) Tests: Protect RunCMake tests from MAKEFLAGS in environment (#15542) cmGlobalGenerator: Finish storing enabled languages in cmState bootstrap: Fix SPHINX_{MAN,HTML,QTHELP} cache entry type Add option to pass custom flags to sphinx-build (#15545) Merge topic 'doc-cmake_minimum_required-first' Merge topic 'doc-target-file-types' Merge topic 'doc-CPack-typo' Merge topic 'doc-CMP0054-example' Merge topic 'revert-CMP0057' Merge topic 'if-IN_LIST' Merge topic 'cpack-deb-component-description' Merge topic 'FindwxWidgets-versioned-executable' Merge topic 'test-RunCMake-parallel-make' Merge topic 'refactor-cmDefinitions' Merge topic 'cmComputeLinkInformation-minor-cleanup' Merge topic 'fix-cmState-try_compile-languages' Merge topic 'sphinx-options' Merge topic 'refactor-RaiseScope' cmMakefile: Initialize SuppressWatches member before use cmMakefile: Inline Intialize method in constructor Merge topic 'mingw32-make-backslash-workaround' Merge topic 'refactor-cmDefinitions-Get' Merge topic 'add-cmMakefile-GetGlobalGenerator' Merge topic 'truncate-snapshots' HP-UX: Add GNU compiler information for ASM language FindGTest: Fix parsing of test macro calls with spaces (#15553) Tests: Enable devenv tests on VS >= 10 Merge branch 'upstream-kwsys' into update-kwsys Merge branch 'upstream-kwsys' into update-kwsys Merge topic 'FindGTest-fix-test-space-parsing' Merge topic 'refactor-cmMakefile-constructor' Merge topic 'InstallRequiredSystemLibraries-vs2015' Merge topic 'hp-gnu-asm' Merge topic 'refactor-cmPolicies' WCDH: Fix condition when variables named "FILE" or "PREFIX" are defined CTestCustom: Suppress LNK4089 warning about ole32 RC: Simplify selection of resource compiler based on C/C++ toolchain Ninja: Refactor detection of MinGW tools on Windows Merge topic 'cpack-deb-component-auto-discovery' Merge topic 'vs-install-in-default-build' Merge topic 'cpack-rpm-debug-log-fix' Merge topic 'update-kwsys' Merge topic 'update-ctest_build-docs' Merge branch 'upstream-kwsys' into update-kwsys execute_process: Improve stdout/stderr merging Help: Update cmake-generators(7) organization for GHS Help: Revise ctest_* command documentation (#15559) CTestCustom: Suppress LNK4089 warning about RPCRT4 ExternalProject: Improve error when SOURCE_DIR is missing (#15560) Help: Clarify file(COPY) directory semantics (#15561) Merge topic 'update-kwsys' Merge topic 'execute_process-merge-output' Merge topic 'ninja-gcc-windows' Merge topic 'WCDH-CMP0054-safety' Merge topic 'doc-ctest-command-formatting' Avoid using C++14 to build CMake if cstdio breaks FindFLTK: Drop search in recent cmake-gui locations find_package: Drop search in recent cmake-gui locations RC: Do not override MinGW Makefiles generator preference Help: Add notes for topic 'cpack-deb-component-dependencies' build_command: Choose configuration consistently across signatures Help: Fix build_command alternative signature docs CTest: Stop telling 'make' to ignore errors with -i Merge topic 'suppress-LNK4089-warning' Merge topic 'ninja-gcc-windows' Merge topic 'ExternalProject-improve-missing-source-error' Merge topic 'doc-file-COPY-preserves-structure' Merge topic 'detect-c++14-missing-gets' Merge topic 'find_package-no-cmake-gui-paths' Merge topic 'cpack-not-running-tests' Merge topic 'cpack-deb-component-dependencies' Merge topic 'ctest-no-make-i' Merge branch 'upstream-kwsys' into update-kwsys FindHDF5: Check for a few H5pubconf*.h name variants KWSys: Tell Git not to export .gitattributes Tests: Fix CheckSourceTree test when build is under source (#15566) Tests: Fix failures when running under the default install prefix (#15566) Merge topic 'FindJava-openjdk-8' Merge topic 'FindHDF5-version-support' Merge topic 'update-kwsys' cmGlobalBorlandMakefileGenerator: Do not inherit from NMake generator Tests: Add case for 'ctest' run with bad CTestTestfile Merge topic 'FindSquish-sh-exit' Merge topic 'fix-tests-in-usr-local' Merge topic 'disallow-install-of-export' Merge topic 'refactor-cmLocalGenerator' Help: Document behavior of cmake_minimum_required in a function CTestCustom: Suppress HP-UX preprocessor concatenation warning Merge topic 'doc-cmake_minimum_required-not-in-function' Merge topic 'cpack-deb-reworked-docs' Merge topic 'cpack-ifw-updates' Ninja: Generate separate compile and link rules for each target cmake-gui: Drop undocumented and unused --mac-install option Merge topic 'hp-ux-suppress-pp-warning' Merge topic 'fix-function-missing-endforeach' Merge topic 'clean-up-cmExecutionStatus' Merge topic 'clean-up-cmDefinitions' Merge topic 'clean-up-makefile-generators' Merge topic 'clean-up-vs-generators' Merge topic 'minor-cleanups' Merge topic 'refactor-cmLocalGenerator' Merge topic 'ninja-per-target-rules' Merge topic 'use-std-unordered_map' CheckTypeSize: Do not use cmake_policy(VERSION) FortranCInterface: Do not use cmake_policy(VERSION) Add options to run include-what-you-use with the compiler Help: Fix typo in cmake-buildsystem(7) manual Help: Spell '-D' option consistently across documentation (#15575) Use cmSystemTools::GetCMakeCommand() to get path to cmake internally Check for std::unordered_map only if we are building CMake cmake-gui: Add --install option to add command-line tools on OS X cmake-gui: Replace command-line install dialog with information box Help: Add notes for topic 'cmake-gui-osx-install-command-line' Merge topic 'CheckTypeSyze-CMP0054' Merge topic 'cleanup-module-policies' Merge topic 'run-include-what-you-use' Merge topic 'doc-cmake-buildsystem-typo' Merge topic 'clean-up-cmMakefile' Merge topic 'clean-up-cmQtAutoGenerators' Merge topic 'doc-cache-option-space' Merge topic 'cmake-gui-osx-install-command-line' Merge topic 'clean-up-CMAKE_COMMAND' Merge topic 'clean-up-cmLocalGenerator' Merge topic 'use-std-unordered_map' Merge topic 'ExternalProject_FixLog' Revert "Qbs: Add new 'extra' generator for qbs project files" VS: Do not accumulate configurations globally (#15577) Makefile: Fix _INCLUDE_WHAT_YOU_USE with CTEST_USE_LAUNCHERS ExternalData: Add option to disable use of symlinks Merge topic 'revert-extra-qbs-generator' Merge topic 'vs-cleanup-internal-configs' Merge topic 'clean-up-backtrace-handling' Tests: Refactor RunCMake.VisibilityPreset test setup Tests: Rename Visibility{InlinesHidden =>} Help: Format visibility property and variable documentation Honor visibility properties for all target types (#15556) Ninja: Fix regression in .rsp file support Merge topic 'run-include-what-you-use' Merge topic 'ExternalData-no-symlinks' Merge topic 'extend-visibility-properties' Intel: Disable Fortran optimizations for Debug config on Windows (#15583) Tests: Add case for rejecting $ on an INTERFACE library Merge topic 'ninja-per-target-rules' Merge topic 'minor-cleanups' Merge topic 'clean-up-GHS' Merge topic 'inject-state-snapshot' Merge topic 'hpux-isfinite' Merge topic 'intel-fortran-windows-debug' Merge topic 'test-genex-TARGET_FILE-on-INTERFACE' Merge branch 'ctest-update-gmake-error-match' into release-3.1 Merge branch 'upstream-kwsys' into update-kwsys Merge topic 'ctest-update-gmake-error-match' Merge topic 'ctest-xml-minor-cleanup' Merge topic 'ctest-xml-refactor' Merge branch 'release-3.1' Merge branch 'release' cmFileCommand: Remove leftover no-op debugging logic cmFileCommand: Rename variable verboseLog => logVar cmFileCommand: Clarify logic for populating LOG variable cmFileCommand: Do not log raw protocol data from curl (#15589) Help: Explicitly mention lack of 'install' support in add_dependencies Merge topic 'update-kwsys' Merge topic 'file-log-less-data' Merge topic 'doc-cmake-compile-features-typo' Merge topic 'doc-add_dependencies-no-install' Merge topic 'FindMatlab-fix-visibility-and-reconfiguration' Merge topic 'FindPkgConfig_fix_extra_path' FindBoost: Fix Boost_LIBRARY_DIR_{RELEASE,DEBUG} cache entry configuration Merge branch 'release' Revert "Makefile: Fix compilation after parent commit was backported" Merge topic 'mingw32-make-backslash-workaround' Merge branch 'release' Merge topic 'FindBoost-per-config-libraries' Merge topic 'FindPostgreSQL-updates' Help: Consolidate 3.3 release notes Help: Organize and revise 3.3 release notes Merge topic 'doc-3.3-relnotes' Help: Drop development topic notes to prepare release CMake 3.3.0-rc1 version update CPackDeb: Check dpkg-shlibdeps version more robustly CPackDeb: Check dpkg-shlibdeps --ignore-missing-info flag Merge branch 'CPackDeb-dpkg-shlibdeps-check-flag' into release Clinton Stimpson (2): QtDialog: Fix CMake packaging with CPack on OS X with Qt5. cpack: Fix CPACK_PACKAGING_INSTALL_PREFIX handling for archives (#14677) Dan Kegel (1): Check*CompilerFlag: Add another pattern for Clang (#15526) Daniel Pfeifer (13): CTest: Drop stray content from Configure.xml CTest: Generate NamedMeasurement elements directly into xml file Add cmXMLWriter class to consolidate XML generation cmCTest: Port to cmXMLWriter cmCTestUpdateHandler: Port to cmXMLWriter cmCTestUploadHandler: Port to cmXMLWriter cmCTestConfigureHandler: Port to cmXMLWriter cmCTest: Port GenerateNotesFile to cmXMLWriter cmCTestLaunch: Port to cmXMLWriter cmCTestBuildHandler: Port to cmXMLWriter cmCTestCoverageHandler: Port to cmXMLWriter cmCTest{Test,MemCheck}Handler: Port to cmXMLWriter cmCTest: Drop unused method overloads Daniele E. Domenichelli (6): Help: Refine the .rst formatting of macro and function documentation Help: Clarify that ARGV# beyond ARGC will have an undefined behavior (#15380) Modules: Check for ARGC before using ARGV# FindMatlab: Look for R2014b and R2015a ExternalProject: Fix log when the first arg of commands is "COMMAND" (#15567) FindPkgConfig: Fix extra paths for CMAKE_{FRAMEWORK,APPBUNDLE}_PATH vars Domen Vrankar (16): CPackRPM: run tests on more platforms than just Linux CPackRPM: Drop explicit handling of '@' symbols that breaks them (#14782) Merge branch 'cpack_rpm_mulit_prefix_fixup' into cpack_rpm_mulit_prefix_fixup-for-master CPackRPM: Consolidate CPackComponentsForAll test case coverage CPack/RPM relocation paths test fixup CPack/RPM architecture test fixup CPack/RPM improved component override test CPack/RPM prevent component attributes leakage file: Teach GLOB to list directories optionally CPack/RPM ignore install prefix relocation path CPackRPM: Add basic symlink support (#15209) CPack single component packaging CPackRPM package content list code move CPackRPM content listing refactor CPackDeb: Refactor package variable lookup by generator CPack: Enable DEB and RPM tests more reliably Erik Sj?lund (1): Help: Fix typo in cmake-compile-features(7) manual (#15594) Felix Geyer (3): CPack: Fix typo in CPACK_INSTALL_CMAKE_PROJECTS docs (#15543) FindJava: Fix OpenJDK 8 version detection (#15565) FindSquish: Avoid bash-specific behavior in test script (#15568) Felix Schwitzer (1): UseSWIG: Do not use MAIN_DEPENDENCY on custom commands (#15480) Gae?tan Lehmann (2): ExternalProject: Replace placeholder tokens in BYPRODUCTS bash-completion: Avoid using _init_completion when not defined Geoff Viola (2): cmLocalGenerator: Constify some cmTarget and cmGeneratorTarget arguments Add a 'Green Hills MULTI' generator on Windows Gerald Combs (1): cmake: Provide guidance when an invalid -G option is given Gilles Khouzam (1): VS: Add support for XAML source files Gregor Jasny (22): Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressions FeatureSummary: Print each feature info only once OS X: Shorten CFBundleExecutable to file name only OS X: Add platform-specific Frameworks search path cmake: Teach --build to honor CMAKE_VERBOSE_MAKEFILE for Ninja FPHSA: Revise documented command signature Help: Install Sphinx HTML object mapping file OS X: Add handling for XCTest bundles OS X: Add FindXCTest module Tests: Add XCTest example to test Frameworks and Cocoa App Bundles OS X: Look for Xcode 5 platform-specific Frameworks Tests: Enable XCTest tests for Xcode 5 Xcode: Also quote strings containing // (#15487) Xcode: Sort Xcode objects by Id Xcode: Indent using tabs Xcode: Add comment after root object Xcode: Remove extra space in PBXProject comment Xcode: Properly indent PBXFileReference and PBXBuildFile Xcode: Do not add whitespace after attribute group opening brace Xcode: PrintComment will prepend a whitespace itself before the comment Xcode: Let PrintComment decide if the comment is non-empty Xcode: Refine quoting rules for Strings Gunnar Roth (3): MSVC: Define /DWINCE when building for WinCE platforms (#14552) MSVC: Distinguish among ARM architectures more precisely (#14552) MSVC: Compile with arch-specific flags on ARM platforms (#14552) Gunther Laure (1): FindBoost: Search for debug and release libraries separately (#15364) James Bigler (5): FindCUDA: Use the static CUDA runtime library if available (#15482) FindCUDA: Handle c++11 host flag FindCUDA: Allow setting CUDA_SOURCE_PROPERTY_FORMAT for non-.cu files. FindCUDA: Add specific cuda_language_flag instead of using nvcc. FindCUDA: Create output dir while compiling intermediate link file (#15016) Johan Andruejol (1): InstallRequiredSystemLibraries: Add option to specify install COMPONENT Joseph Snyder (1): CTest: Fix Jacoco Coverage Joshua A Clayton (3): CPackRPM: Fix CPACK_RPM_PACKAGE_ARCHITECTURE CPackRPM: Support rpm architecture in components Tests: CpackRPM test component architecture Justin Borodinsky (1): QtAutogen: Ensure write access to AutogenInfo.cmake (#15416) KWSys Robot (11): KWSys 2015-02-25 (1b75ad3d) KWSys 2015-02-27 (d2aa1afd) KWSys 2015-03-03 (4890f30c) KWSys 2015-03-10 (4a698414) KWSys 2015-03-18 (9367a33b) KWSys 2015-04-10 (69bccf2e) KWSys 2015-05-04 (c2387a4b) KWSys 2015-05-05 (8c8b2273) KWSys 2015-05-05 (34fceb50) KWSys 2015-05-12 (b1d560a0) KWSys 2015-05-27 (61e0419f) Kitware Robot (117): CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp CMake Nightly Date Stamp Konstantin Podsvirov (2): CPackIFW: Add QtIFW 2.0 support Update packaging of CMake for QtIFW 2.0 Marcus Meissner (1): GetPrerequisites: Update output matching for newer 'file' versions Mark Abraham (1): Check*CompilerFlag: Refactor method used to pass flags Mark Studenka (1): UseJava: Fix add_jar argument parsing (#14655) Matt McCormick (3): Properties: Add CROSSCOMPILING_EMULATOR target property. try_run: Use CMAKE_CROSSCOMPILING_EMULATOR. TestGenerator: Add CROSSCOMPILING_EMULATOR support. Max Filippov (1): KWIML: Teach ABI.h about Xtensa architecture Michael Scott (1): jsoncpp: Provide 'isfinite' impl on more HP-UX versions (#15576) Michael Smith (1): FindRuby: Fix finding 64-bit Ruby on Windows Nicolas Bock (1): CheckFortranCompilerFlag: Add module to check Fortran flag existence Nils Gladitz (28): try_compile: Quote the content of CMAKE_MODULE_PATH to allow for spaces CPackWIX: Extend the patching mechanism to allow adding content to . CPackWIX: Explicitly list CPack WIX headers for IDE convenience. CPackWIX: Refactor start menu and desktop shortcut creation. CPackWIX: Add installed file properties for the creation of shortcuts. CPackWIX: Add new CPACK_STARTUP_SHORTCUTS property. CPackWIX: Enhance CMake CPack WIX generated installer. CPackWIX: Add release notes for the wix-shortcut-properties topic. CTest: To enforce the C locale use LC_ALL instead of LC_MESSAGES. FindHg: Run hg with C locale when querying its version. CodeBlocks: Declare which source file belongs to which targets. CPackWIX: Support patching of root elements. CPackWIX: Fix .wixobj output locations and filenames. add_custom_command: Diagnose MAIN_DEPENDENCY limitation. CPackWIX: Customize CMake installer theme. CPackWIX: Add static_casts for XML_Parser. CPackWIX: Omit codepage conversion when internal encoding is already UTF-8. CTestCoverageCollectGCOV: Support CTEST_CUSTOM_COVERAGE_EXCLUDE Help: Clarify manual reference for generator names libarchive: Use base-256 encoding for UID/GID like GNU tar does cmake: Teach "-E tar" command a "--format=" option CTestCoverageCollectGCOV: Write tar files intended for CDash in gnutar format Tests: Consolidate, refactor and extend -E tar tests CTest: Fix locale used for VCS updates Help: Clarify that CMAKE_SIZEOF_VOID_P is specific to the target machine Help: Clarify policy CMP0026 title Revert "add_custom_command: Diagnose MAIN_DEPENDENCY limitation." if: Implement new IN_LIST operator Orion Poplawski (1): FindwxWidgets: Search for wx-config-3.0 in addition to wx-config (#15540) Oyvind Jensen (1): VS: Add more Fortran compiler flags to flag table (#15381) Peter Wu (1): CheckStructHasMember: fix null deref warning (#15413) Raffi Enficiaud (12): FindMatlab: Rewrite module and provide a usage API Tests: Increasing the stability of the FindMatlab.basic_checks test CPack: Fix single component packaging CPackDeb: Fix lintian md5sum file warning CPackDeb: Add basic package tests CPackDEB component description CPack/DEB component dependency auto-discovery CPack/DEB per component dependencies CPack/DEB: reworked documentation FindMatlab: Drop incorrect usage option from test helper script FindMatlab: fix header visibility of the generated mex files FindMatlab: fix reconfiguration of Matlab_ROOT_DIR Robert Goulet (1): VS: Add option to put INSTALL target in .sln default build Robert Maynard (1): Help: Document supported compilers in cmake-compile-features.7 Rolf Eike Beer (2): if(): avoid one needless string compare for all if() statements CheckTypeSize: Avoid if() auto-dereferene in quoted arguments (#15571) Roman W?ger (1): WCDH: Fix cxx_nullptr workaround for pre-C++11 compilers Ruslan Baratov (1): BundleUtilities: Teach fixup_bundle to check install_name_tool result Sean James (1): Xcode: Add file type for Metal shader files Stanislav Ionascu (1): Qbs: Add new 'extra' generator for qbs project files Stephen Kelly (446): Remove use of cmsys_stl. cmLocalGenerator: Replace loop with find_first_not_of Remove use of ExpandSourceListArguments. cmMakefile: Remove ExpandSourceListArguments. Take computation out of loop. Extract a prefix variable from loop. Convert loop to algorithm. Convert while loop to member insert. Use insert member instead of back_inserter. Take a size check outside of an inner loop. Replace while loop with member insert. Replace a loop with std::transform. Replace loop with algorithm. cmComputeLinkDepends: Remove temporary iterator copy. Replace loop with member algorithm. Replace temporary bool by inlining warning condition. cmSystemTools: Early return if size makes later comparison false. cmSystemTools: Remove unnecessary comparison. cmStandardIncludes: Remove some VS6 workarounds. cmStandardIncludes: Remove deque include. cmStandardIncludes: Remove list include. RunCMake: Remove unneeded files. RunCMake: Allow specifying the directory to run tests in. RunCMake: Allow specifying the stderr file for a test. Tests: Split part of include_directories test to a generic location. Tests: Run IfacePaths tests with a parameter. Split cmAlgorithms into a separate header file. Tests: Move IfacePaths test stderr files. Allow export of targets with INTERFACE_SOURCES. Add release notes for export-interface-source-files. cmMacroCommand: Replace a loop with cmJoin. cmMacroCommand: Extract iteration starting point. cmMacroCommand: Execute loop only if it has an effect. cmMacroCommand: Remove counting variable. Convert loops into the commonly used pattern. Convert loops populating maybe-empty content into the common pattern. Replace common loop pattern with cmJoin cmAlgorithms: Add a Range container and adaptor method. Use cmJoin to accumulate string ranges. cmAlgorithms: Add a range adaptor and API for adjusting a range. cmStringCommand: Accumulate with cmJoin and range adaptors. Convert loops to cmJoin algorithm with cmRange. cmFindBase: Replace loop with cmJoin on range. cmSet: Replace loop with cmJoin. cmTarget: Use a sorted vector in place of a set. Handle last element outside of the loop. Move loop inside of condition. Convert loop to the common pattern. Convert loop into two algorithms. cmMacroCommand: Join the args strings outside of the loops. cmMacroCommand: Declare arg variables where used and initialized. cmMacroCommand: Remove conditional append of semicolon. cmMacroCommand: Remove condition around ARGN computation. cmMacroCommand: Remove intermediate arg variables. cmMacroCommand: Compute variables outside of two loops. cmMacroCommand: Inline variable computation. cmMacroCommand: Declare arg in the scope that it is used. cmMacroCommand: Declare tmps in the scope that it's used. cmMacroCommand: Remove condition around ARGN replacement. cmMacroCommand: Move ARGV replacement out of condition. cmMacroCommand: Move computation of ARGV%n names out of double loop. cmMacroCommand: Manipulate target string directly. cmFunctionCommand: Split loop in two. cmFunctionCommand: Remove counting variable. cmFunctionCommand: Replace loops with cmJoin. cmListCommand: Use std::find algorithm for FIND subcommand. cmListCommand: Implement REVERSE subcommand with std::reverse. cmListCommand: Convert loop to find algorithm. cmAlgorithms: Implement algorithm for removing indexes. cmListCommand: Use cmRemoveIndices for REMOVE_AT subcommand. cmListCommand: Replace joining loop with cmJoin algorithm. cmAlgorithms: Add cmRemoveMatching algorithm. cmListCommand: Implement REMOVE_ITEM in terms of cmRemoveMatching. cmAlgorithms: Add cmRemoveDuplicates algorithm. cmListCommand: Replace remove duplicates loop with algorithm. cmListCommand: Avoid needlessly erasing from vectors. cmTarget: Remove template argument workaround. cmGlobalGenerator: Remove unneeded pointer check. Help: Fix formatting of command parameter. Revert "Attempt to fix the compile of cmake on Sun CC." Revert "cmGlobalGenerator: Fix value type pushed into autogens vector" Update comment to match recent dashboard testing. cmLocalGenerator: Move variable population inside of condition. cmCoreTryCompile: Remove variable assignment. cmcmd: Remove some comment copy-pasta. cmAlgorithms: Remove sort of already-sorted container. cmAlgorithms: Add missing const to functors. cmListCommand: Move size variable out of loop. CTest: Use clear instead of erase-all. cmCTest: Convert loop to member insert. cmMakefile: Replace loop with composed algorithm. cmMakefile: Replace two loops with std::replace. cmMakefile: Add flag to result and manipulate in place. cmLocalGenerator: Convert loop to algorithm. cmGeneratorTarget: Replace set insert algorithm with cmRemoveDuplicates. cmGlobalGenerator: Replace set::insert algorithm with cmRemoveDuplicates. cmTarget: Port loop to algorithm. cmGlobalGenerator: Replace loop with algorithm. cmCacheManager: Replace loop with algorithm. Use cmJoin where possible. cmAlgorithms: Add cmWrap. Convert some raw loops to cmWrap. cmGlobalGenerator: Convert set insert algorithm to vector algorithms. cmRST: Use std::min where appropriate. cmRST: Move two algorithms beside each other. cmAlgorithms: Move cmRotate out of 'implementation detail' namespace. cmAlgorithms: Update concept requirement to FowardIterator cmRST: Replace two erase with a rotate and larger erase. cmAlgorithms: Add cmFindNot algorithm. cmAlgorithms: Add cmReverseRange adaptor. Replace loops with algorithms. Fix typo, graphiz -> graphviz. cmTarget: Don't needlessly clear vectors in the destructor. cmFunctionCommand: Remove ineffectual code. cmMakefile: Fix list of macros generation. cmMakefile: Store macro list in a vector not in a map. cmAlgorithms: Add const to const objects. cmAlgorithms: Rename template type in cmDeleteAll algorithm. cmAlgorithms: Add a size() to cmRange. cmAlgorithms: Relax cmRemoveN requirement to FwdIter. cmAlgorithms: Rename template argument to RemoveN. cmAlgorithms: Make cmRemoveDuplicates work with more containers. cmAlgorithms: Relax iterator requirement for cmRemoveIndices. cmAlgorithms: Maintain the pivot iterator in cmRemoveIndices. cmAlgorithms: Remove needless assignment. cmAlgorithms: Cache the end iterators in algorithms. Genex: Add a COMPILE_LANGUAGE generator expression. Genex: Enable use of COMPILE_LANGUAGE for compile options. Genex: Allow COMPILE_LANGUAGE when processing compile definitions. Genex: Allow COMPILE_LANGUAGE when processing include directories. File(GENERATE): Process genex evaluation files for each language. Help: Add release notes for target-language-genex. Help: Move docs of $<0:...> and $<1:...> to output section. Genex: Extract an evaluateWithContext method. cmAlgorithms: Add early return in cmRemoveIndices. Genex: Split cmGeneratorExpressionNode into own file. Genex: Split cmGeneratorExpressionContext into own file. Genex: Extend cmGeneratorExpressionContext constructor. Include cmAlgorithms where it is used. cmInstalledFile: Move Property implementation out of line. cmRemoveDuplicates: Fix iterator -> const_iterator. cmRemoveDuplicates: Store unique iterators instead of values. cmRemoveDuplicates: Type-parameterize all uniq-operations cmRemoveDuplicates: Partially specialize the API for pointer types. cmMakefile: Remove bogus comment. cmMakefile: Remove unused method. cmMakefile: Remove AddExtraDirectory method. cmMakefile: Remove unused SubDirectoryOrder member. cmMakefile: Remove unused Prefix member. cmMakefile: Remove unused PreOrder member. Do not treat DEFINITIONS as a built-in directory property Remove duplicate tag name. cmMakefile: Remove bogus comment. cmListFile: Remove unused member. cmMakefile: Remove one wrong and one insufficiently helpful comment. Help: Add references to cmake-property sections. Help: Shorten too-long title marker. Help: Add link in set_source_files_properties command docs. Help: Link to properties in set_directory_properties docs. Help: Link to properties in set_tests_properties. cmake: Remove unused member. cmake: Remove unused method. cmake: Be clear that there is no chaining after global properties. cmake: Clear member rather than explicit erase. cmGlobalGenerator: Don't fetch the cache manager in a loop. cmCacheManager: Remove use of intermediate overload. cmCacheManager: Remove unused overloads. cmCacheManager: Remove unused method Remove unused includes. cmMakefile: Simplify GetDefinitions implementation. cmMakefile: Remove cache version accessors. Add API for cache loading, deleting and saving to the cmake class. cmCacheManager: Rename GetCacheValue to GetInitializedCacheValue. cmCacheManager: Add non-iterator-based API. cmMakefile: Port away from CacheEntry.Initialized. Port CursesDialog to non-iterator cache API. Port QtDialog to non-iterator cache API. cmCacheManager: Port consumers to non-iterator API. cmMakefile: Simplify GetDefinitions implementation. cmMakefile: Remove cache version accessors. Add API for cache loading, deleting and saving to the cmake class. cmCacheManager: Rename GetCacheValue to GetInitializedCacheValue. cmCacheManager: Return a C string from GetValue. cmCacheManager: Add non-iterator-based API. cmMakefile: Port away from CacheEntry.Initialized. Port CursesDialog to non-iterator cache API. Port QtDialog to non-iterator cache API. cmCacheManager: Port consumers to non-iterator API. cmGlobalGenerator: Store languages as vector, not map. cmake: Don't set the CMakeInstance on the Properties member. cmake: Remove method with no external users. Test expected value of DEBUG_CONFIGURATIONS global property. cmake: Remove DebugConfigs member. cmake: Remove duplicate condition. cmake: out-of-line try compile state methods. cmake: Use make_pair instead of Foo::value_type. cmake: Don't lower-case a string needlessly. cmake: Constify GetCommand method. cmake: Rename oddly named variables. cmake: Simplify CommandExists method. Add some missing includes. Remove some files which do not need to be in BootstrapCommands. Use vector, not list for cmCommand storage. cmake: Fix variable name bugs. cmake: Out-of-line Home and Start directory methods. cmMakefile: Out-of-line Home directory accessors. cmMakefile: Internalize setting of CMakeInstance on Properties. cmMakefile: Remove bad comment. cmMakefile: Remove unused method. cmake: Remove confusing duplication. Introduce cmState class. Port to cmState. cmMakefile: Remove unused CacheManager accessor. cmState: Move CacheEntryType enum from cmCacheManager. Move property definition to cmState. cmGlobalGenerator: Delegate storage of enabled languages to cmState. cmake: Get enabled languages from cmState. cmState: Move try_compile state from cmake class. cmake: Simplify RemoveUnscriptableCommands algorithm. cmake: Simplify command clean up loop. cmState: Move cmCommand-related methods from cmake class. Port cmCommand consumers to cmState. cmake: Remove unused cmCommand methods. cmake: Remove the happy global property scope pattern. Move global properties to cmState. Move property initialization to cmState. Port Global property interaction to cmState. FPHSA: Always populate the ExactCase_FOUND variable (#15412). CPack: Read the config listfile in the normal way. cmMakefile: Remove fullPath parameter from ReadListFile. cmMakefile: Add a method for processing buildsystem files. cmMakefile: Add wrapper for reading listfiles which have an origin. cmMakefile: Remove useless condition. cmMakefile: Delegate ListFile reading to internal method. cmMakefile: Remove duplication in ReadListFile. cmMakefile: Determine the file to read before calling Internal. cmMakefile: Change condition to its equivalent. cmMakefile: Move variable definition above a condition. cmMakefile: Remove use of intermediate variable. cmMakefile: Remove intermediate variable. cmMakefile: Re-order independent variable setting. cmMakefile: Split a conditional. cmMakefile: Re-order independent statements. cmMakefile: Combine duplicate condition. cmMakefile: Remove intermediate variable. cmMakefile: Convert filenametoread into a std::string. cmMakefile: Collapse nested conditional. cmMakefile: Populate CMAKE_PARENT_LIST_FILE in callers. cmMakefile: Move condition to the only calling context where it is true. cmMakefile: Remove intermediate variable. cmMakefile: Extract conditional code to caller. cmMakefile: Swap parameters of calls to ReadListFile. cmMakefile: Remove always-null first parameter to ReadListFile. cmMakefile: Move some preamble out of the Internal method. cmMakefile: Fix wrong parameter names. Remove redundant calls to MakeStartDirectoriesCurrent. cmMakefile: Initialize dir definitions early. cmake: Fix directory used to find the cache Use the Home directories from the cmake class where intended. cmake: Initialize Home directories on cmake for find-package mode. cmMakefile: Populate Home directories on initialize. cmake: Remove redundant start directories. cmMakefile: Rename GetCurrent{,Source}Directory. cmMakefile: Rename GetCurrent{Output,Binary}Directory. cmMakefile: Port users of GetStart* methods to new names. cmMakefile: Remove redundant method duplication. cmMakefile: Rename SetStart* directory API to SetCurrent*. CPack: Don't copy cmMakefile. Just push a scope instead. cmMakefile: Disable copy constructor. Tests: Make a CTest test deterministic. cmMakefile: Use method abstraction to access directories. cmMakefile: Out-of-line the directory methods. Tests: Guard more CTest tests against parallel execution. include: Ask for permission, rather than forgiveness. cmMakefile: Delegate storage of Home dirs to the cmake class. cmMakefile: Inline SetHome* methods into last remaining caller. cmLocalGenerator: Require a parent in the constructor. cmMakefile: Require the localGenerator in the constructor. cmState: Store the Source and Binary directories. Introduce cmState::Snapshot. cmState: Store the Current directories. cmDefinitions: Remove unused method. cmDefinitions: Remove unused Set return value. cmDefinitions: Inline SetInternal method. cmMakefile: Use the Internal class to enclose the VarStack. cmDefinitions: Add an Erase method. cmDefinitions: Externalize the Set logic. cmDefinitions: Change LocalKeys to return a vector. cmDefinitions: Replace ClosureKeys recursion with looping. cmDefinitions: Inline GetClosureKeys implementation. cmDefinitions: Make ClosureKeys API vector-based. cmDefinitions: Replace private constructor with MakeClosure. cmDefinitions: Replace recursion with loop. cmMakefile: Remove stack adaptor for the VarStack. cmDefinitions: Use list of cmDefinitions* to create closure. cmDefinitions: Implement MakeClosure in terms of a list of ancestors. cmDefinitions: Convert MakeClosure into a static method. cmDefinitions: Implement MakeClosure in terms of reverse iterators. cmDefinitions: Externalize looping for ClosureKeys. cmDefinitions: Invert conditional code. cmMakefile: Implement RaiseScope in terms of local Get method. cmMakefile: Implement RaiseScope without relying on Parent. cmDefinitions: Accept varStack iterators in Get API. cmDefinitions: Remove Parent pointer. cmDefinitions: Use static member without this->. cmDefinitions: Make GetInternal method static. cmDefinitions: Make Get method static. cmPolicies: Fix values for policies 57-60. cmPolicies: Remove unused header. cmPolicies: Remove unused static data. cmPolicies: Remove unused forward declaration. cmPolicies: Remove runtime check for programming errors. cmPolicies: Make private method file-static. cmMakefile: Simplify GetCMakeInstance implementation. cmMakefile: Use GetCMakeInstance. cmMakefile: Extract an accessor for the global generator. cmComputeLinkDepends: Remove unused local generator. cmComputeTargetDepends: Use simpler global generator access. Port to cmMakefile::GetGlobalGenerator. cmState: Truncate snapshot data in Initialize. cmPolicies: Parse string for id conversion. cmPolicies: Implement more-compact IsPolicyNewerThan. cmPolicies: Introduce XMacro table for policy data. cmPolicies: Implement id to string conversion with XMacro. cmPolicies: Implement id to version with XMacro. cmPolicies: Implement version check with XMacro. cmPolicies: Implement short description access with XMacros. cmPolicies: Make private method file-static. cmPolicies: Implement in terms of public API. cmPolicies: Use more-direct ID access. cmPolicies: Trivialize GetPolicyStatus method. cmPolicies: Loop over all policies using enum constants. cmPolicies: Remove unused cmPolicy class. cmPolicies: Remove unused DefinePolicy method. cmPolicies: Make all API static. Port to static cmPolicies API. cmPolicies: Implement abstraction for PolicyMap. cmPolicies: Implement PolicyMap in terms of bitset. install: Use an intermediate filesVector variable. cmLocalGenerator: Remove unused members. cmLocalGenerator: Remove EscapeForShellOldStyle to only caller. Don't use a cmLocalGenerator instance to call static methods. cmLocalGenerator: Require a global generator in the constructor. cmLocalGenerator: Initialize state before creating cmMakefile. cmLocalGenerator: Get project directories from the cmState. cmLocalGenerator: Convert two recursive methods to loops. cmState: Add an accessor for Parent snapshot and a validity check. cmLocalGenerator: Port loops to cmState::Snapshot. cmGlobalGenerator: Move some flags from cmLocalGenerator. cmLocalGenerator: Add abstraction to check if top-level. Use new top-level check abstraction. cmMakefile: Use the state to determine the parent directory. cmMakefile: Remove redundant variable set. cmLocalGenerator: Assert that there is a parent. cmMakefile: Handle CMP0014 before configuring the generator. install: Disallow installing export() result. cmGlobalGenerator: Add NVI wrapper to create local generator. cmLocalGenerator: Remove unused method. cmGlobalUnixMakefileGenerator3: Host the include directive. cmGlobalUnixMakefileGenerator3: Host the DefineWindowsNULL. AutoGen: Don't iterate over a container while populating it. cmExecutionStatus: De-virtualize API. cmExecutionStatus: Remove inheritance of cmObject. cmState: Compute and store directory components. cmState::Snapshot: Store components for current directories. cmState: Store computed relative paths to to current directories. cmLocalGenerator: Remove redundant path conversions. cmLocalGenerator: Remove redundant path access. Tests: Don't rely on ordering of targets in maps. cmDefinitions: Remove internal MakeClosure method. cmDefinitions: Centralize knowledge of iterator type. cmDefinitions: Make the ClosureKeys method static. Remove method calls just repeating the default. cmGlobalUnixMakefileGenerator3: Host the PassMakeflags. cmGlobalUnixMakefileGenerator3: Host the UnixCD. cmLocalGenerator: Remove unused IgnoreLibPrefix. cmGlobalGenerator: Host the MakeSilentFlag. Remove obsolete overrides of CreateLocalGenerator. cmMakefile: Replace deques with vectors. if(): Test the effect of cmMakefileCall use in elseif() handling. cmMakefile: Add access to the top-level execution context. cmMakefile: Simplify CMP0054 handling. cmMakefile: Use std::set::insert API to simplify CMP0054 handling. cmListFileContext: Implement LessThanComparable. cmListFileContext: Sort by line before file. cmTarget: Remove needless iteration. cmTarget: Store only cmListFileContext for CMP0023 handling. cmListFileContext: Implement EqualityComparable. cmTarget: Store context in stack only if different. cmTarget: Simplify output computation. cmTarget: Simplify CMP0023 message loop. cmListFileBacktrace: Hide the context-stack implementation detail. Use std::unordered_map instead of hash_map where available. VS: Simplify setting of flag table. VS: Move version information to global generator. VS: Remove obsolete methods. cmMakefile: Port CurrentListFile clients to GetDefinition. cmMakefile: Remove CurrentListFile member. cmMakefile: Make the public ReadListFile method take one param. cmMakefile: Rename method to something more appropriate. cmMakefile: Remove redundant condition. cmMakefile: Don't expect the VarStack iterator to support size(). cmMakefile: Remove duplicate variable initialization. cmMakefile: Remove Print() debugging facilities. cmCTest: Remove unimplemented method. cmMakefile: Remove redundant conditions. cmMakefile: Don't use else after return. cmMakefile: Use early return to reduce nested code. cmMakefile: Raise variable in scope explicitly when needed. cmMakefile: Mark definitions explicitly erased, even at top level. cmMakefile: Move internal method to private scope. cmMakefile: Use more suitable method name to log var usage. cmMakefile: Remove VarInitStack. cmMakefile: Remove VarUsageStack. QtAutogen: Remove repeated setters. QtAutogen: Inline static factory method. QtAutogen: Remove the need for a local makefile variable. QtAutogen: Use a more-obvious delete-target. QtAutogen: Create global generator on the stack. cmLocalGenerator: Devirtualize method. cmLocalGenerator: Inline ReadListFile method. cmLocalGenerator: Implement IsRootMakefile in terms of cmState. cmLocalGenerator: Get enabled languages from cmState. Convert: Remove specification of default parameter. cmake: Move isError determination to a more-natural place. cmake: Extract PrintMessagePreamble method. cmake: Extract printMessageText method. cmake: Extract displayMessage method. cmake: Add IssueMessage overload taking a single cmListFileContext. Ninja: Remove some bogus comments. cmGlobalGenerator: De-virtualize methods with no overrides. foreach: Remove unused variables. cmake: Remove redundant condition. cmake: Remove redundant forward declaration. GHS: Remove unnecessary Configure override. GHS: Remove BuildFileName. GHS: Remove unused CustomCommandUseLocal. GHS: Remove unnecessary condition. GHS: Don't attempt to generate for IMPORTED or INTERFACE targets. GHS: Remove call to SetCurrentLocalGenerator. cmState: Move snapshot creation to the cmake instance. cmMakefile: Simplify convert condition. cmMakefile: Don't pop the directory listfile off the stack. cmGlobalGenerator: Require a cmake instance in ctor. cmState: Host some state from the cmGlobalGenerator. cmLocalGenerator: Require a valid cmState::Snapshot in the ctor. Steven Vancoillie (2): SunPro: Add position independent code flag for Fortran compiler SunPro: Drop non-existent -KPIE flag Tamar Kranenburg (6): FindPostgreSQL: Remove unused lines FindPostgreSQL: Remove extra whitespace after command open parens FindPostgreSQL: Search for versions 9.2, 9.3, and 9.4 FindPostgreSQL: Document PostgreSQL_LIBRARY_DIRS result variable FindPostgreSQL: Add help text for PostgreSQL_LIBRARY cache entry FindPostgreSQL: Search some more common packaging locations Tam?s Ken?z (1): Help: Replace CMP0054 example to show when it makes a difference Thomas Herz (3): Ninja: Use forward slashes for any GCC on Windows (#15439) Ninja: Do not use newlines in response files with Windows GNU tools (#15439) Ninja: Use forward slashes for linking with any GCC on Windows (#15439) Thomas Orozco (1): CPack/RPM fix output in debug log Tim Blechmann (1): VS: Specify absolute output directory for the Midl tool Todd Gamblin (1): BlueGene/Q Platform files Tuukka Pasanen (1): UseSWIG: Fix module name detection with relative source file (#15508) Zach Mullen (1): CTest: Output test-specific env vars in verbose mode (#15446) Zack Galbreath (12): CTest: Add cmCTestOptionalLog macro ctest_submit: Add QUIET option ctest_start: Add QUIET option ctest_update: Add QUIET option ctest_configure: Add QUIET option ctest_build: Add QUIET option ctest_test: Add QUIET option ctest_coverage: Add QUIET option ctest_memcheck: Add QUIET option ctest_upload: Add QUIET option CTest: Drop "Error in read script" message at end of testing Linux: Ignore Debian-specific case when cross-compiling ?dne Hovda (1): jsoncpp: Provide 'isfinite' implementation on older AIX and HP-UX ????? ???????? (1): CPack: be more stringent when selecting variables to encode ----------------------------------------------------------------------- hooks/post-receive -- CMake From domen.vrankar at gmail.com Fri Jun 5 15:19:11 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Fri, 5 Jun 2015 15:19:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-133-g24bc47b Message-ID: <20150605191911.E404EAFD52@public.kitware.com> 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 24bc47b6ac2b29d32157d56a05c92b17af9cbbcf (commit) via 8b4b2ca686abfbc4f74496c2c6a17c1fe3f646c2 (commit) via 5aec9ec2daa282453fffd8d382876f467936a277 (commit) from f6cb54884b64cac39a4a6799c3572c84997c7dc8 (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=24bc47b6ac2b29d32157d56a05c92b17af9cbbcf commit 24bc47b6ac2b29d32157d56a05c92b17af9cbbcf Merge: f6cb548 8b4b2ca Author: Domen Vrankar AuthorDate: Fri Jun 5 15:19:10 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 5 15:19:10 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 8b4b2ca6 CPack RPM PARTIALLY_RELOCATABLE_WARNING test move 5aec9ec2 CPack Deb and RPM RunCMake tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8b4b2ca686abfbc4f74496c2c6a17c1fe3f646c2 commit 8b4b2ca686abfbc4f74496c2c6a17c1fe3f646c2 Author: Domen Vrankar AuthorDate: Fri Jun 5 21:12:08 2015 +0200 Commit: Domen Vrankar CommitDate: Fri Jun 5 21:12:08 2015 +0200 CPack RPM PARTIALLY_RELOCATABLE_WARNING test move Moved PARTIALLY_RELOCATABLE_WARNING test to new common CPack test script structure to have all tests in one place as well as additional benefit of having some more checks done during test execution. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 86e6009..4a4f54f 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -226,7 +226,6 @@ add_RunCMake_test(IfacePaths_SOURCES TEST_DIR IfacePaths) # CPack related tests if(RPMBUILD_EXECUTABLE) - add_RunCMake_test(CPackRPM) list(APPEND CPACK_TEST_GENERATORS "RPM") endif() diff --git a/Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake b/Tests/RunCMake/CPack/PARTIALLY_RELOCATABLE_WARNING.cmake similarity index 100% rename from Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake rename to Tests/RunCMake/CPack/PARTIALLY_RELOCATABLE_WARNING.cmake diff --git a/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake new file mode 100644 index 0000000..4e01f7b --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "PARTIALLY_RELOCATABLE_WARNING-0.1.1-*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/not_relocatable${whitespaces_}/not_relocatable/CMakeLists.txt${whitespaces_}/opt$") diff --git a/Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt similarity index 100% rename from Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt rename to Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index a7b6060..e4027ab 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -3,3 +3,4 @@ include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") # args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP run_cpack_test(MINIMAL "RPM;DEB" false) +run_cpack_test(PARTIALLY_RELOCATABLE_WARNING "RPM" false) diff --git a/Tests/RunCMake/CPackRPM/CMakeLists.txt b/Tests/RunCMake/CPackRPM/CMakeLists.txt deleted file mode 100644 index b7d170b..0000000 --- a/Tests/RunCMake/CPackRPM/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.1 FATAL_ERROR) - -project(${RunCMake_TEST} NONE) -include(${RunCMake_TEST}.cmake) - -set(CPACK_GENERATOR "RPM") -include(CPack) diff --git a/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake b/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake deleted file mode 100644 index 1935e32..0000000 --- a/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake +++ /dev/null @@ -1,17 +0,0 @@ -include(RunCMake) - -function(run_cpack_rpm_test TEST_NAME) - set(RunCMake_TEST_NO_CLEAN TRUE) - set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build") - file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") - file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - execute_process( - COMMAND "${CMAKE_COMMAND}" -D RunCMake_TEST=${TEST_NAME} "${RunCMake_SOURCE_DIR}" - WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" - OUTPUT_QUIET - ERROR_QUIET - ) - run_cmake_command(${TEST_NAME} ${CMAKE_CPACK_COMMAND}) -endfunction() - -run_cpack_rpm_test(CPackRPM_PARTIALLY_RELOCATABLE_WARNING) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5aec9ec2daa282453fffd8d382876f467936a277 commit 5aec9ec2daa282453fffd8d382876f467936a277 Author: Domen Vrankar AuthorDate: Fri Jun 5 21:03:26 2015 +0200 Commit: Domen Vrankar CommitDate: Fri Jun 5 21:03:26 2015 +0200 CPack Deb and RPM RunCMake tests CTest script structure for easier addition of new CPack related tests. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..86e6009 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -26,6 +26,24 @@ macro(add_RunCMake_test test) ) endmacro() +function(add_RunCMake_test_group test types) + set(Test_Dir ${test}) + + foreach(type IN LISTS types) + add_test(NAME RunCMake.${test}_${type} COMMAND ${CMAKE_CMAKE_COMMAND} + -DTEST_TYPE=${type} + -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} + -DRunCMake_GENERATOR=${CMAKE_GENERATOR} + -DRunCMake_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} + -DRunCMake_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} + -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} + -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${Test_Dir} + -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${type}/${test} + -P "${CMAKE_CURRENT_SOURCE_DIR}/${Test_Dir}/RunCMakeTest.cmake" + ) + endforeach() +endfunction() + if(XCODE_VERSION AND "${XCODE_VERSION}" VERSION_LESS 3) set(GeneratorToolset_ARGS -DXCODE_BELOW_3=1) endif() @@ -206,10 +224,19 @@ add_RunCMake_test(IfacePaths_INCLUDE_DIRECTORIES TEST_DIR IfacePaths) set(IfacePaths_SOURCES_ARGS -DTEST_PROP=SOURCES) add_RunCMake_test(IfacePaths_SOURCES TEST_DIR IfacePaths) +# CPack related tests if(RPMBUILD_EXECUTABLE) add_RunCMake_test(CPackRPM) + list(APPEND CPACK_TEST_GENERATORS "RPM") endif() +if(DPKG_EXECUTABLE) + list(APPEND CPACK_TEST_GENERATORS "DEB") +endif() + +add_RunCMake_test_group(CPack "${CPACK_TEST_GENERATORS}") +# end of CPack related tests + add_RunCMake_test(COMPILE_LANGUAGE-genex) # Matlab module related tests diff --git a/Tests/RunCMake/CPack/CMakeLists.txt b/Tests/RunCMake/CPack/CMakeLists.txt new file mode 100644 index 0000000..7905706 --- /dev/null +++ b/Tests/RunCMake/CPack/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) + +# include test generator specifics +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${GENERATOR_TYPE}/${RunCMake_TEST}-specifics.cmake") + include("${GENERATOR_TYPE}/${RunCMake_TEST}-specifics.cmake") +endif() + +set(CPACK_GENERATOR "${GENERATOR_TYPE}") +include(CPack) diff --git a/Tests/RunCMake/CPack/CPackTestHelpers.cmake b/Tests/RunCMake/CPack/CPackTestHelpers.cmake new file mode 100644 index 0000000..395fe22 --- /dev/null +++ b/Tests/RunCMake/CPack/CPackTestHelpers.cmake @@ -0,0 +1,75 @@ +cmake_policy(SET CMP0057 NEW) + +function(run_cpack_test TEST_NAME types build) + if(TEST_TYPE IN_LIST types) + set(RunCMake_TEST_NO_CLEAN TRUE) + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build") + + # TODO this should be executed only once per ctest run (not per generator) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + # execute cmake + execute_process( + COMMAND "${CMAKE_COMMAND}" -DRunCMake_TEST=${TEST_NAME} + -DGENERATOR_TYPE=${TEST_TYPE} "${RunCMake_SOURCE_DIR}" + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + RESULT_VARIABLE res + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + + if(res) + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST_STEP=configure + -Dreturn_code=${res} + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/PreTestError.cmake" + ) + return() + endif() + + # execute optional build step + if(build) + execute_process( + COMMAND "${CMAKE_COMMAND}" --build "${RunCMake_TEST_BINARY_DIR}" + RESULT_VARIABLE res + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + endif() + + if(res) + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST_STEP=build + -Dreturn_code=${res} + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/PreTestError.cmake" + ) + return() + endif() + + # execute cpack + execute_process( + COMMAND "${CMAKE_CPACK_COMMAND}" + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + + # verify result + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST=${TEST_NAME} + -DGENERATOR_TYPE=${TEST_TYPE} + "-Dsrc_dir=${RunCMake_SOURCE_DIR}" + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/VerifyResult.cmake" + ) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/DEB/Helpers.cmake b/Tests/RunCMake/CPack/DEB/Helpers.cmake new file mode 100644 index 0000000..f0fa932 --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/Helpers.cmake @@ -0,0 +1,15 @@ +set(ALL_FILES_GLOB "*.deb") + +find_program(DEB_EXECUTABLE dpkg) +if(NOT DEB_EXECUTABLE) + message(FATAL_ERROR "error: missing dpkg executable required by the test") +endif() + +function(getPackageContent FILE RESULT_VAR) + execute_process(COMMAND ${DEB_EXECUTABLE} -c ${FILE} + OUTPUT_VARIABLE package_content_ + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) +endfunction() diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake new file mode 100644 index 0000000..9e4aa7c --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "minimal*.deb") +set(EXPECTED_FILE_CONTENT_1 "^.*/usr/${whitespaces_}.*/usr/foo/${whitespaces_}.*/usr/foo/CMakeLists.txt$") diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake new file mode 100644 index 0000000..8821ab9 --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake @@ -0,0 +1 @@ +set(CPACK_PACKAGE_CONTACT "someone") diff --git a/Tests/RunCMake/CPack/MINIMAL.cmake b/Tests/RunCMake/CPack/MINIMAL.cmake new file mode 100644 index 0000000..f29ad2a --- /dev/null +++ b/Tests/RunCMake/CPack/MINIMAL.cmake @@ -0,0 +1,3 @@ +install(FILES CMakeLists.txt DESTINATION foo COMPONENT test) + +set(CPACK_PACKAGE_NAME "minimal") diff --git a/Tests/RunCMake/CPack/PreTestError.cmake b/Tests/RunCMake/CPack/PreTestError.cmake new file mode 100644 index 0000000..f88f2e8 --- /dev/null +++ b/Tests/RunCMake/CPack/PreTestError.cmake @@ -0,0 +1,7 @@ +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) + +message(FATAL_ERROR "Error in pre-test phase '${RunCMake_TEST_STEP}'!\n" + "Return code: '${return_code}'\n" + "Info output: '${output}'\n" + "Error output: '${error}'") diff --git a/Tests/RunCMake/CPack/README.txt b/Tests/RunCMake/CPack/README.txt new file mode 100644 index 0000000..d00f688 --- /dev/null +++ b/Tests/RunCMake/CPack/README.txt @@ -0,0 +1,91 @@ +RunCMake.CPack is a test module that is intended for testing of package +generators that can be validated from command line. + +------------- +Adding a test +------------- + +CPack test root directory: 'Tests/RunCMake/CPack'. + +All phases are executed separately for each generator that is bound to a test. +Tests for each generator are subtests of test 'RunCMake.CPack_'. + +Each test must also be added to 'RunCMakeTest.cmake' script located in Cpack +test root directory. +Line that adds a test is: +run_cpack_test( "") + + may be one generator e.g. "RPM" or multiple e.g. "RPM;DEB" and +will be run for all listed generators. + +Test consists of +- CMake execution phase +- CPack execution phase +- verification of generated files + +CMake execution phase: +---------------------- + +To add a new CPack test we first create a .cmake script that contains +CMake commands that should be used as a preparation script for generation of +different types of packages. This script is placed into CPack test root +directory even if it will be used for only one of the generators. + +If test will be used for multiple generators but some of them require some +generator speciffic commands then those commands should be added to a separate +file that should be located in '/-specifics.cmake' +in CPack test root directory. + +CPack execution phase: +---------------------- + +Only exececutes CPack for content that was generated during CMake execution +phase. + +Verification of generated files: +-------------------------------- + +Verification of generated files consists of two phases +- mandatory verification phase +- optional verification phase + +Mandatory verification phase checks that expected files were generated and +contain expected files. +Mandatory verification phase also checks that no other unexpected package files +were generated (this is executed even if EXPECTED_FILES_COUNT contains 0 in +order to verify that no files were generated). +CMake script '/-ExpectedFiles.cmake' is required by +this step and must contain +- EXPECTED_FILES_COUNT variable that contains the number of expected files that + will be generated (0 or more) +- EXPECTED_FILE_ that contains globbing expression + that uniquelly defines expected file name (will be used to find expected file) + and should be present once for each expected file +- EXPECTED_FILE_CONTENT_ that contains regular + expression of files that should be present in generated file and should be + present once for each expected file + +Optional verification phase is generator speciffic and is optionaly executed. +This phase is executed if '/-VerifyResult.cmake' +script exists. +In case that the script doesn't exist VerifyResult.cmake script automatically +prints out standard outpu and standard error from CPack execution phase that +is compared with '/-stdout.txt' regular expression +and '/-stderr.txt' regular expresson respectively. + +---------------------- +Adding a new generator +---------------------- + +To add a new generator we must +- add new generator directory (e.g. RPM for RPM generator) to CPack test root + directory that contains 'Helpers.cmake' script. In this script a function + named 'getPackageContent' must exist. This function should list files that + are contained in a package. Function should accept two parameters + + FILE variable that will contain path to file for which the content should be + listed + + RESULT_VAR that will tell the function which variable in parent scope should + contain the result (list of files inside package file) +- add tests the same way as described above +- add generator to 'add_RunCMake_test_group' function call that is located in + RunCMake CMakeLists.txt file diff --git a/Tests/RunCMake/CPack/RPM/Helpers.cmake b/Tests/RunCMake/CPack/RPM/Helpers.cmake new file mode 100644 index 0000000..0e2dca9 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/Helpers.cmake @@ -0,0 +1,15 @@ +set(ALL_FILES_GLOB "*.rpm") + +find_program(RPM_EXECUTABLE rpm) +if(NOT RPM_EXECUTABLE) + message(FATAL_ERROR "error: missing rpm executable required by the test") +endif() + +function(getPackageContent FILE RESULT_VAR) + execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${FILE} + OUTPUT_VARIABLE package_content_ + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) +endfunction() diff --git a/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake new file mode 100644 index 0000000..800b78e --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "minimal*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/usr/foo${whitespaces_}/usr/foo/CMakeLists.txt$") diff --git a/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt b/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt new file mode 100644 index 0000000..7c5fb46 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt @@ -0,0 +1 @@ +^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/MINIMAL-build/_CPack_Packages/.*/RPM/SPECS/minimal.spec$ diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake new file mode 100644 index 0000000..a7b6060 --- /dev/null +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -0,0 +1,5 @@ +include(RunCMake) +include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") + +# args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP +run_cpack_test(MINIMAL "RPM;DEB" false) diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake new file mode 100644 index 0000000..d9f32c5 --- /dev/null +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -0,0 +1,81 @@ +cmake_policy(SET CMP0007 NEW) + +include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") + +# check that expected generated files exist and contain expected content +include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-ExpectedFiles.cmake") + +if(NOT EXPECTED_FILES_COUNT EQUAL 0) + foreach(file_no_ RANGE 1 ${EXPECTED_FILES_COUNT}) + file(GLOB foundFile_ RELATIVE "${bin_dir}" "${EXPECTED_FILE_${file_no_}}") + set(foundFiles_ "${foundFiles_};${foundFile_}") + list(LENGTH foundFile_ foundFilesCount_) + + if(foundFilesCount_ EQUAL 1) + unset(PACKAGE_CONTENT) + getPackageContent("${bin_dir}/${foundFile_}" "PACKAGE_CONTENT") + + string(REGEX MATCH "${EXPECTED_FILE_CONTENT_${file_no_}}" + expected_content_list "${PACKAGE_CONTENT}") + + if(NOT expected_content_list) + message(FATAL_ERROR + "Unexpected file content for file No. '${file_no_}'!" + " Content: '${PACKAGE_CONTENT}'") + endif() + else() + message(FATAL_ERROR + "Found more than one file for file No. '${file_no_}'!" + " Found files count '${foundFilesCount_}'." + " Files: '${foundFile_}'") + endif() + endforeach() + + # check that there were no extra files generated + foreach(all_files_glob_ IN LISTS ALL_FILES_GLOB) + file(GLOB foundAll_ RELATIVE "${bin_dir}" "${all_files_glob_}") + set(allFoundFiles_ "${allFoundFiles_};${foundAll_}") + endforeach() + + list(LENGTH foundFiles_ foundFilesCount_) + list(LENGTH allFoundFiles_ allFoundFilesCount_) + + if(NOT foundFilesCount_ EQUAL allFoundFilesCount_) + message(FATAL_ERROR + "Found more files than expected! Found files: '${allFoundFiles_}'") + endif() + + # sanity check that we didn't accidentaly list wrong files with our regular + # expressions + foreach(expected_ IN LISTS allFoundFiles_) + list(FIND foundFiles_ "${expected_}" found_) + + if(found_ EQUAL -1) + message(FATAL_ERROR + "Expected files don't match found files! Found files:" + " '${allFoundFiles_}'") + endif() + endforeach() +else() + # there should be no generated files present + foreach(missing_file_glob_ IN LISTS ALL_FILES_GLOB) + file(GLOB checkMissingFiles_ RELATIVE "${bin_dir}" "${missing_file_glob_}") + + if(checkMissingFiles_) + message(FATAL_ERROR "Unexpected files found: '${checkMissingFiles_}'") + endif() + endforeach() +endif() + +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) + +# handle additional result verifications +if(EXISTS "${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") + include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") +else() + # by default only print out output and error so that they can be compared by + # regex + message(STATUS "${output}") + message("${error}") +endif() ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CMakeLists.txt | 28 +++++- Tests/RunCMake/CPack/CMakeLists.txt | 12 +++ Tests/RunCMake/CPack/CPackTestHelpers.cmake | 75 ++++++++++++++++ Tests/RunCMake/CPack/DEB/Helpers.cmake | 15 ++++ .../RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake | 5 ++ Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake | 1 + Tests/RunCMake/CPack/MINIMAL.cmake | 3 + .../PARTIALLY_RELOCATABLE_WARNING.cmake} | 0 Tests/RunCMake/CPack/PreTestError.cmake | 7 ++ Tests/RunCMake/CPack/README.txt | 91 ++++++++++++++++++++ Tests/RunCMake/CPack/RPM/Helpers.cmake | 15 ++++ .../RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake | 5 ++ Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt | 1 + ...RTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake | 5 ++ .../RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt} | 0 Tests/RunCMake/CPack/RunCMakeTest.cmake | 6 ++ Tests/RunCMake/CPack/VerifyResult.cmake | 81 +++++++++++++++++ Tests/RunCMake/CPackRPM/CMakeLists.txt | 7 -- Tests/RunCMake/CPackRPM/RunCMakeTest.cmake | 17 ---- 19 files changed, 349 insertions(+), 25 deletions(-) create mode 100644 Tests/RunCMake/CPack/CMakeLists.txt create mode 100644 Tests/RunCMake/CPack/CPackTestHelpers.cmake create mode 100644 Tests/RunCMake/CPack/DEB/Helpers.cmake create mode 100644 Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake create mode 100644 Tests/RunCMake/CPack/MINIMAL.cmake rename Tests/RunCMake/{CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake => CPack/PARTIALLY_RELOCATABLE_WARNING.cmake} (100%) create mode 100644 Tests/RunCMake/CPack/PreTestError.cmake create mode 100644 Tests/RunCMake/CPack/README.txt create mode 100644 Tests/RunCMake/CPack/RPM/Helpers.cmake create mode 100644 Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt create mode 100644 Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake rename Tests/RunCMake/{CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt => CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt} (100%) create mode 100644 Tests/RunCMake/CPack/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CPack/VerifyResult.cmake delete mode 100644 Tests/RunCMake/CPackRPM/CMakeLists.txt delete mode 100644 Tests/RunCMake/CPackRPM/RunCMakeTest.cmake hooks/post-receive -- CMake From kwrobot at kitware.com Sat Jun 6 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 6 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-41-g50a1bd3 Message-ID: <20150606040105.D949EB0097@public.kitware.com> 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, master has been updated via 50a1bd3df13d47167d55fb1584b2c1bc7235884b (commit) from 092f1539af99e031c99a74d5a0f24731f58bf10a (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=50a1bd3df13d47167d55fb1584b2c1bc7235884b commit 50a1bd3df13d47167d55fb1584b2c1bc7235884b Author: Kitware Robot AuthorDate: Sat Jun 6 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Sat Jun 6 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 890dde4..29e81a6 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150605) +set(CMake_VERSION_PATCH 20150606) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 03:15:31 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 03:15:31 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-135-g3227cb1 Message-ID: <20150606071531.6357FAFAB0@public.kitware.com> 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 3227cb17227ab93ee066799b93a39490e318d2d3 (commit) via e8ade3a149616209617bec927abdb917304d5a99 (commit) from 24bc47b6ac2b29d32157d56a05c92b17af9cbbcf (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=3227cb17227ab93ee066799b93a39490e318d2d3 commit 3227cb17227ab93ee066799b93a39490e318d2d3 Merge: 24bc47b e8ade3a Author: Stephen Kelly AuthorDate: Sat Jun 6 03:15:30 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 03:15:30 2015 -0400 Merge topic 'extract-cmOutputConverter' into next e8ade3a1 fixup! cmOutputConverter: Extract from cmLocalGenerator. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e8ade3a149616209617bec927abdb917304d5a99 commit e8ade3a149616209617bec927abdb917304d5a99 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:11:47 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:11:47 2015 +0200 fixup! cmOutputConverter: Extract from cmLocalGenerator. diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 87e21bf..db73a34 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -23,10 +23,6 @@ cmOutputConverter::cmOutputConverter(cmState::Snapshot snapshot) { } -cmOutputConverter::~cmOutputConverter() -{ -} - //---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 67858cf..1d3f8c7 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -22,8 +22,6 @@ class cmOutputConverter public: cmOutputConverter(cmState::Snapshot snapshot); - virtual ~cmOutputConverter(); - /** * Convert something to something else. This is a centralized conversion * routine used by the generators to handle relative paths and the like. ----------------------------------------------------------------------- Summary of changes: Source/cmOutputConverter.cxx | 4 ---- Source/cmOutputConverter.h | 2 -- 2 files changed, 6 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 03:16:21 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 03:16:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-144-gb042e8c Message-ID: <20150606071621.0469AAFB32@public.kitware.com> 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 b042e8c3c02d1e054881271be331af01c5afed79 (commit) via 59e21ffa134faf0b089d9a704b3763e7f6f237d5 (commit) via 242dcc2c22535c00348de18bba41605428ccdb73 (commit) via 1cff330b0fcd635f47047bd1a2d94f344e88c0f9 (commit) via 2f1bd62b2308c234b5c4bc749afa27c7b616bdf1 (commit) via 0f2a132437d7a553e20cc0427279c212b428e55d (commit) via 4d8b79ad7e132ff876d131526a03a21c4f424f33 (commit) via 8680520feab8421f79c9762f1d3b6b92384c0b1e (commit) via 6d7abb6326d422dabdf72e8486b492ac20f8b347 (commit) from 3227cb17227ab93ee066799b93a39490e318d2d3 (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=b042e8c3c02d1e054881271be331af01c5afed79 commit b042e8c3c02d1e054881271be331af01c5afed79 Merge: 3227cb1 59e21ff Author: Stephen Kelly AuthorDate: Sat Jun 6 03:16:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 03:16:16 2015 -0400 Merge topic 'extract-cmOutputConverter' into next 59e21ffa Port static calls from cmLocalGenerator to cmOutputConverter. 242dcc2c cmListFileBacktrace: Replace local generator with cmState::Snapshot. 1cff330b cmTarget: Port to cmOutputConverter. 2f1bd62b cmCustomCommandGenerator: Port to cmOutputConverter. 0f2a1324 cmCommandArgumentParserHelper: Port to cmOutputConverter. 4d8b79ad cmComputeLinkInformation: Port to cmOutputConverter. 8680520f cmMakefile: Make the cmState::Snapshot accessible. 6d7abb63 cmOutputConverter: Extract from cmLocalGenerator. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=59e21ffa134faf0b089d9a704b3763e7f6f237d5 commit 59e21ffa134faf0b089d9a704b3763e7f6f237d5 Author: Stephen Kelly AuthorDate: Sat May 16 00:55:21 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:58 2015 +0200 Port static calls from cmLocalGenerator to cmOutputConverter. diff --git a/Source/cmCPackPropertiesGenerator.cxx b/Source/cmCPackPropertiesGenerator.cxx index cf24c13..368a0e6 100644 --- a/Source/cmCPackPropertiesGenerator.cxx +++ b/Source/cmCPackPropertiesGenerator.cxx @@ -1,6 +1,6 @@ #include "cmCPackPropertiesGenerator.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" cmCPackPropertiesGenerator::cmCPackPropertiesGenerator( cmMakefile* mf, @@ -29,15 +29,15 @@ void cmCPackPropertiesGenerator::GenerateScriptForConfig(std::ostream& os, cmInstalledFile::Property const& property = i->second; os << indent << "set_property(INSTALL " << - cmLocalGenerator::EscapeForCMake(expandedFileName) << " PROPERTY " << - cmLocalGenerator::EscapeForCMake(name); + cmOutputConverter::EscapeForCMake(expandedFileName) << " PROPERTY " << + cmOutputConverter::EscapeForCMake(name); for(cmInstalledFile::ExpressionVectorType::const_iterator j = property.ValueExpressions.begin(); j != property.ValueExpressions.end(); ++j) { std::string value = (*j)->Evaluate(this->Makefile, config); - os << " " << cmLocalGenerator::EscapeForCMake(value); + os << " " << cmOutputConverter::EscapeForCMake(value); } os << ")\n"; diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index dd276a8..e1e1a5c 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -11,7 +11,7 @@ ============================================================================*/ #include "cmCoreTryCompile.h" #include "cmake.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmGlobalGenerator.h" #include "cmAlgorithms.h" #include "cmExportTryCompileFileGenerator.h" @@ -322,7 +322,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) std::string langFlags = "CMAKE_" + *li + "_FLAGS"; const char* flags = this->Makefile->GetDefinition(langFlags); fprintf(fout, "set(CMAKE_%s_FLAGS %s)\n", li->c_str(), - cmLocalGenerator::EscapeForCMake(flags?flags:"").c_str()); + cmOutputConverter::EscapeForCMake(flags?flags:"").c_str()); fprintf(fout, "set(CMAKE_%s_FLAGS \"${CMAKE_%s_FLAGS}" " ${COMPILE_DEFINITIONS}\")\n", li->c_str(), li->c_str()); } @@ -355,7 +355,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) const char* exeLinkFlags = this->Makefile->GetDefinition("CMAKE_EXE_LINKER_FLAGS"); fprintf(fout, "set(CMAKE_EXE_LINKER_FLAGS %s)\n", - cmLocalGenerator::EscapeForCMake( + cmOutputConverter::EscapeForCMake( exeLinkFlags ? exeLinkFlags : "").c_str()); } break; } diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 7c4792c..20448c1 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -27,7 +27,7 @@ static std::string cmIfCommandError( i != args.end(); ++i) { err += " "; - err += cmLocalGenerator::EscapeForCMake(i->GetValue()); + err += cmOutputConverter::EscapeForCMake(i->GetValue()); } err += "\n"; return err; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index c9eea56..f1fd806 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1254,7 +1254,7 @@ cmLocalUnixMakefileGenerator3 f != files.end(); ++f) { std::string fc = this->Convert(*f,START_OUTPUT,UNCHANGED); - fout << " " << cmLocalGenerator::EscapeForCMake(fc) << "\n"; + fout << " " << cmOutputConverter::EscapeForCMake(fc) << "\n"; } fout << ")\n"; } @@ -2052,7 +2052,7 @@ void cmLocalUnixMakefileGenerator3 di != defines.end(); ++di) { cmakefileStream - << " " << cmLocalGenerator::EscapeForCMake(*di) << "\n"; + << " " << cmOutputConverter::EscapeForCMake(*di) << "\n"; } cmakefileStream << " )\n"; @@ -2106,7 +2106,7 @@ void cmLocalUnixMakefileGenerator3 tri != transformRules.end(); ++tri) { cmakefileStream << " " - << cmLocalGenerator::EscapeForCMake(*tri) << "\n"; + << cmOutputConverter::EscapeForCMake(*tri) << "\n"; } cmakefileStream << " )\n"; diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 9ac9ddb..c26bc60 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1126,8 +1126,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() pi != this->MultipleOutputPairs.end(); ++pi) { *this->InfoFileStream - << " " << cmLocalGenerator::EscapeForCMake(pi->first) - << " " << cmLocalGenerator::EscapeForCMake(pi->second) + << " " << cmOutputConverter::EscapeForCMake(pi->first) + << " " << cmOutputConverter::EscapeForCMake(pi->second) << "\n"; } *this->InfoFileStream << " )\n\n"; diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index fbd2946..ef32c75 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -550,9 +550,9 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target) std::string autogenTargetName = getAutogenTargetName(target); makefile->AddDefinition("_moc_target_name", - cmLocalGenerator::EscapeForCMake(autogenTargetName).c_str()); + cmOutputConverter::EscapeForCMake(autogenTargetName).c_str()); makefile->AddDefinition("_origin_target_name", - cmLocalGenerator::EscapeForCMake(target->GetName()).c_str()); + cmOutputConverter::EscapeForCMake(target->GetName()).c_str()); std::string targetDir = getAutogenTargetDir(target); @@ -582,7 +582,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target) this->SetupSourceFiles(target); } makefile->AddDefinition("_cpp_files", - cmLocalGenerator::EscapeForCMake(this->Sources).c_str()); + cmOutputConverter::EscapeForCMake(this->Sources).c_str()); if (target->GetPropertyAsBool("AUTOMOC")) { this->SetupAutoMocTarget(target, autogenTargetName, @@ -764,11 +764,11 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, const char* tmp = target->GetProperty("AUTOMOC_MOC_OPTIONS"); std::string _moc_options = (tmp!=0 ? tmp : ""); makefile->AddDefinition("_moc_options", - cmLocalGenerator::EscapeForCMake(_moc_options).c_str()); + cmOutputConverter::EscapeForCMake(_moc_options).c_str()); makefile->AddDefinition("_skip_moc", - cmLocalGenerator::EscapeForCMake(this->SkipMoc).c_str()); + cmOutputConverter::EscapeForCMake(this->SkipMoc).c_str()); makefile->AddDefinition("_moc_headers", - cmLocalGenerator::EscapeForCMake(this->Headers).c_str()); + cmOutputConverter::EscapeForCMake(this->Headers).c_str()); bool relaxedMode = makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE"); makefile->AddDefinition("_moc_relaxed_mode", relaxedMode ? "TRUE" : "FALSE"); @@ -780,9 +780,9 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, _moc_incs, _moc_compile_defs); makefile->AddDefinition("_moc_incs", - cmLocalGenerator::EscapeForCMake(_moc_incs).c_str()); + cmOutputConverter::EscapeForCMake(_moc_incs).c_str()); makefile->AddDefinition("_moc_compile_defs", - cmLocalGenerator::EscapeForCMake(_moc_compile_defs).c_str()); + cmOutputConverter::EscapeForCMake(_moc_compile_defs).c_str()); for (std::vector::const_iterator li = configs.begin(); li != configs.end(); ++li) @@ -795,7 +795,7 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, if (config_moc_incs != _moc_incs) { configIncludes[*li] = - cmLocalGenerator::EscapeForCMake(config_moc_incs); + cmOutputConverter::EscapeForCMake(config_moc_incs); if(_moc_incs.empty()) { _moc_incs = config_moc_incs; @@ -804,7 +804,7 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target, if (config_moc_compile_defs != _moc_compile_defs) { configDefines[*li] = - cmLocalGenerator::EscapeForCMake(config_moc_compile_defs); + cmOutputConverter::EscapeForCMake(config_moc_compile_defs); if(_moc_compile_defs.empty()) { _moc_compile_defs = config_moc_compile_defs; @@ -906,7 +906,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, skipped.insert(skipVec.begin(), skipVec.end()); makefile->AddDefinition("_skip_uic", - cmLocalGenerator::EscapeForCMake(this->SkipUic).c_str()); + cmOutputConverter::EscapeForCMake(this->SkipUic).c_str()); std::vector uiFilesWithOptions = makefile->GetQtUiFilesWithOptions(); @@ -920,7 +920,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, if (!_uic_opts.empty()) { - _uic_opts = cmLocalGenerator::EscapeForCMake(_uic_opts); + _uic_opts = cmOutputConverter::EscapeForCMake(_uic_opts); makefile->AddDefinition("_uic_target_options", _uic_opts.c_str()); } for (std::vector::const_iterator li = configs.begin(); @@ -931,7 +931,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, if (config_uic_opts != _uic_opts) { configUicOptions[*li] = - cmLocalGenerator::EscapeForCMake(config_uic_opts); + cmOutputConverter::EscapeForCMake(config_uic_opts); if(_uic_opts.empty()) { _uic_opts = config_uic_opts; @@ -966,9 +966,9 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target, } makefile->AddDefinition("_qt_uic_options_files", - cmLocalGenerator::EscapeForCMake(uiFileFiles).c_str()); + cmOutputConverter::EscapeForCMake(uiFileFiles).c_str()); makefile->AddDefinition("_qt_uic_options_options", - cmLocalGenerator::EscapeForCMake(uiFileOptions).c_str()); + cmOutputConverter::EscapeForCMake(uiFileOptions).c_str()); std::string targetName = target->GetName(); if (strcmp(qtVersion, "5") == 0) @@ -1141,15 +1141,15 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target) } } makefile->AddDefinition("_qt_rcc_inputs_" + target->GetName(), - cmLocalGenerator::EscapeForCMake(qrcInputs).c_str()); + cmOutputConverter::EscapeForCMake(qrcInputs).c_str()); makefile->AddDefinition("_rcc_files", - cmLocalGenerator::EscapeForCMake(_rcc_files).c_str()); + cmOutputConverter::EscapeForCMake(_rcc_files).c_str()); makefile->AddDefinition("_qt_rcc_options_files", - cmLocalGenerator::EscapeForCMake(rccFileFiles).c_str()); + cmOutputConverter::EscapeForCMake(rccFileFiles).c_str()); makefile->AddDefinition("_qt_rcc_options_options", - cmLocalGenerator::EscapeForCMake(rccFileOptions).c_str()); + cmOutputConverter::EscapeForCMake(rccFileOptions).c_str()); makefile->AddDefinition("_qt_rcc_executable", this->GetRccExecutable(target).c_str()); @@ -1434,7 +1434,7 @@ cmQtAutoGenerators::WriteOldMocDefinitionsFile( outfile.open(filename.c_str(), std::ios::trunc); outfile << "set(AM_OLD_COMPILE_SETTINGS " - << cmLocalGenerator::EscapeForCMake( + << cmOutputConverter::EscapeForCMake( this->CurrentCompileSettingsStr) << ")\n"; outfile.close(); diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index 7e11d8c..546ad71 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -12,7 +12,7 @@ #include "cmTestGenerator.h" #include "cmGeneratorExpression.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmMakefile.h" #include "cmSystemTools.h" #include "cmTarget.h" @@ -97,13 +97,13 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, cmSystemTools::ExpandListArgument(emulator, emulatorWithArgs); std::string emulatorExe(emulatorWithArgs[0]); cmSystemTools::ConvertToUnixSlashes(emulatorExe); - os << cmLocalGenerator::EscapeForCMake(emulatorExe) << " "; + os << cmOutputConverter::EscapeForCMake(emulatorExe) << " "; for(std::vector::const_iterator ei = emulatorWithArgs.begin()+1; ei != emulatorWithArgs.end(); ++ei) { - os << cmLocalGenerator::EscapeForCMake(*ei) << " "; + os << cmOutputConverter::EscapeForCMake(*ei) << " "; } } } @@ -115,11 +115,11 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, } // Generate the command line with full escapes. - os << cmLocalGenerator::EscapeForCMake(exe); + os << cmOutputConverter::EscapeForCMake(exe); for(std::vector::const_iterator ci = command.begin()+1; ci != command.end(); ++ci) { - os << " " << cmLocalGenerator::EscapeForCMake( + os << " " << cmOutputConverter::EscapeForCMake( ge.Parse(*ci)->Evaluate(mf, config)); } @@ -136,7 +136,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, i != pm.end(); ++i) { os << " " << i->first - << " " << cmLocalGenerator::EscapeForCMake( + << " " << cmOutputConverter::EscapeForCMake( ge.Parse(i->second.GetValue())->Evaluate(mf, config)); } os << ")" << std::endl; @@ -206,7 +206,7 @@ void cmTestGenerator::GenerateOldStyle(std::ostream& fout, i != pm.end(); ++i) { fout << " " << i->first - << " " << cmLocalGenerator::EscapeForCMake(i->second.GetValue()); + << " " << cmOutputConverter::EscapeForCMake(i->second.GetValue()); } fout << ")" << std::endl; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=242dcc2c22535c00348de18bba41605428ccdb73 commit 242dcc2c22535c00348de18bba41605428ccdb73 Author: Stephen Kelly AuthorDate: Thu Jun 4 20:00:14 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:57 2015 +0200 cmListFileBacktrace: Replace local generator with cmState::Snapshot. Construct cmOutputConverter only when needed. diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index ffe1a1f..ca58314 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -412,9 +412,9 @@ void cmListFileBacktrace::PrintTitle(std::ostream& out) return; } + cmOutputConverter converter(this->Snapshot); cmListFileContext lfc = this->front(); - lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, - cmLocalGenerator::HOME); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); out << (lfc.Line ? " at " : " in ") << lfc; } @@ -425,13 +425,13 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out) return; } + cmOutputConverter converter(this->Snapshot); const_iterator i = this->begin() + 1; out << "Call Stack (most recent call first):\n"; while(i != this->end()) { cmListFileContext lfc = *i; - lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, - cmLocalGenerator::HOME); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); out << " " << lfc << "\n"; ++i; } diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index 1971862a..4002d94 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -14,7 +14,7 @@ #include "cmStandardIncludes.h" -class cmLocalGenerator; +#include "cmState.h" /** \class cmListFileCache * \brief A class to cache list file contents. @@ -74,8 +74,8 @@ struct cmListFileFunction: public cmListFileContext class cmListFileBacktrace: private std::vector { public: - cmListFileBacktrace(cmLocalGenerator* localGen = 0) - : LocalGenerator(localGen) + cmListFileBacktrace(cmState::Snapshot snapshot = cmState::Snapshot()) + : Snapshot(snapshot) { } @@ -84,7 +84,7 @@ class cmListFileBacktrace: private std::vector void PrintTitle(std::ostream& out); void PrintCallStack(std::ostream& out); private: - cmLocalGenerator* LocalGenerator; + cmState::Snapshot Snapshot; }; struct cmListFile diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 06febbf..f55b5df 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -277,7 +277,7 @@ void cmMakefile::IssueMessage(cmake::MessageType t, //---------------------------------------------------------------------------- cmListFileBacktrace cmMakefile::GetBacktrace() const { - cmListFileBacktrace backtrace(this->GetLocalGenerator()); + cmListFileBacktrace backtrace(this->StateSnapshot); for(CallStackType::const_reverse_iterator i = this->CallStack.rbegin(); i != this->CallStack.rend(); ++i) { @@ -290,7 +290,7 @@ cmListFileBacktrace cmMakefile::GetBacktrace() const cmListFileBacktrace cmMakefile::GetBacktrace(cmListFileContext const& lfc) const { - cmListFileBacktrace backtrace(this->GetLocalGenerator()); + cmListFileBacktrace backtrace(this->StateSnapshot); backtrace.Append(lfc); for(CallStackType::const_reverse_iterator i = this->CallStack.rbegin(); i != this->CallStack.rend(); ++i) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1cff330b0fcd635f47047bd1a2d94f344e88c0f9 commit 1cff330b0fcd635f47047bd1a2d94f344e88c0f9 Author: Stephen Kelly AuthorDate: Thu Jun 4 20:12:17 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:57 2015 +0200 cmTarget: Port to cmOutputConverter. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 4436966..27c4845 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -13,7 +13,7 @@ #include "cmake.h" #include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmGlobalGenerator.h" #include "cmComputeLinkInformation.h" #include "cmListFileCache.h" @@ -1257,14 +1257,14 @@ void cmTarget::GetTllSignatureTraces(std::ostringstream &s, : "plain"); s << "The uses of the " << sigString << " signature are here:\n"; typedef std::vector > Container; - cmLocalGenerator* lg = this->GetMakefile()->GetLocalGenerator(); + cmOutputConverter converter(this->GetMakefile()->GetStateSnapshot()); for(Container::const_iterator it = this->TLLCommands.begin(); it != this->TLLCommands.end(); ++it) { if (it->first == sig) { cmListFileContext lfc = it->second; - lfc.FilePath = lg->Convert(lfc.FilePath, cmLocalGenerator::HOME); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); s << " * " << lfc << std::endl; } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2f1bd62b2308c234b5c4bc749afa27c7b616bdf1 commit 2f1bd62b2308c234b5c4bc749afa27c7b616bdf1 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:47:37 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:57 2015 +0200 cmCustomCommandGenerator: Port to cmOutputConverter. diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index d23f815..11308c6 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -13,13 +13,13 @@ #include "cmMakefile.h" #include "cmCustomCommand.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmGeneratorExpression.h" //---------------------------------------------------------------------------- cmCustomCommandGenerator::cmCustomCommandGenerator( cmCustomCommand const& cc, const std::string& config, cmMakefile* mf): - CC(cc), Config(config), Makefile(mf), LG(mf->GetLocalGenerator()), + CC(cc), Config(config), Makefile(mf), OldStyle(cc.GetEscapeOldStyle()), MakeVars(cc.GetEscapeAllowMakeVars()), GE(new cmGeneratorExpression(&cc.GetBacktrace())), DependsDone(false) { @@ -96,7 +96,8 @@ cmCustomCommandGenerator } else { - cmd += this->LG->EscapeForShell(arg, this->MakeVars); + cmOutputConverter converter(this->Makefile->GetStateSnapshot()); + cmd += converter.EscapeForShell(arg, this->MakeVars); } } } diff --git a/Source/cmCustomCommandGenerator.h b/Source/cmCustomCommandGenerator.h index b4ae014..7ad95d1 100644 --- a/Source/cmCustomCommandGenerator.h +++ b/Source/cmCustomCommandGenerator.h @@ -16,7 +16,6 @@ class cmCustomCommand; class cmMakefile; -class cmLocalGenerator; class cmGeneratorExpression; class cmCustomCommandGenerator @@ -24,7 +23,6 @@ class cmCustomCommandGenerator cmCustomCommand const& CC; std::string Config; cmMakefile* Makefile; - cmLocalGenerator* LG; bool OldStyle; bool MakeVars; cmGeneratorExpression* GE; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0f2a132437d7a553e20cc0427279c212b428e55d commit 0f2a132437d7a553e20cc0427279c212b428e55d Author: Stephen Kelly AuthorDate: Thu Jun 4 19:45:12 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:56 2015 +0200 cmCommandArgumentParserHelper: Port to cmOutputConverter. diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index bd098a5..14e9e56 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -14,7 +14,7 @@ #include "cmSystemTools.h" #include "cmMakefile.h" #include "cmState.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmCommandArgumentLexer.h" @@ -141,8 +141,9 @@ char* cmCommandArgumentParserHelper::ExpandVariable(const char* var) { std::ostringstream msg; cmListFileContext lfc; - lfc.FilePath = this->Makefile->GetLocalGenerator() - ->Convert(this->FileName, cmLocalGenerator::HOME); + cmOutputConverter converter(this->Makefile->GetStateSnapshot()); + lfc.FilePath = converter.Convert(this->FileName, + cmOutputConverter::HOME); lfc.Line = this->FileLine; msg << "uninitialized variable \'" << var << "\'"; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4d8b79ad7e132ff876d131526a03a21c4f424f33 commit 4d8b79ad7e132ff876d131526a03a21c4f424f33 Author: Stephen Kelly AuthorDate: Thu Jun 4 19:43:09 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:56 2015 +0200 cmComputeLinkInformation: Port to cmOutputConverter. diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index e6cbe60..1f3046a 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -16,7 +16,7 @@ #include "cmGlobalGenerator.h" #include "cmState.h" -#include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmMakefile.h" #include "cmTarget.h" #include "cmake.h" @@ -246,7 +246,6 @@ cmComputeLinkInformation // Store context information. this->Target = target; this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); this->CMakeInstance = this->GlobalGenerator->GetCMakeInstance(); @@ -1395,7 +1394,8 @@ void cmComputeLinkInformation::AddFrameworkItem(std::string const& item) // Add the item using the -framework option. this->Items.push_back(Item("-framework", false)); - fw = this->LocalGenerator->EscapeForShell(fw); + cmOutputConverter converter(this->Makefile->GetStateSnapshot()); + fw = converter.EscapeForShell(fw); this->Items.push_back(Item(fw, false)); } diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h index 8847141..56a5c82 100644 --- a/Source/cmComputeLinkInformation.h +++ b/Source/cmComputeLinkInformation.h @@ -18,7 +18,6 @@ class cmake; class cmGlobalGenerator; -class cmLocalGenerator; class cmMakefile; class cmTarget; class cmOrderDirectories; @@ -75,7 +74,6 @@ private: // Context information. cmTarget const* Target; cmMakefile* Makefile; - cmLocalGenerator* LocalGenerator; cmGlobalGenerator* GlobalGenerator; cmake* CMakeInstance; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8680520feab8421f79c9762f1d3b6b92384c0b1e commit 8680520feab8421f79c9762f1d3b6b92384c0b1e Author: Stephen Kelly AuthorDate: Thu Jun 4 19:42:32 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:56 2015 +0200 cmMakefile: Make the cmState::Snapshot accessible. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b5d976a..06febbf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4657,6 +4657,11 @@ void cmMakefile::StoreMatches(cmsys::RegularExpression& re) this->MarkVariableAsUsed(nMatchesVariable); } +cmState::Snapshot cmMakefile::GetStateSnapshot() const +{ + return this->StateSnapshot; +} + //---------------------------------------------------------------------------- cmPolicies::PolicyStatus cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 431ed08..fa9f23d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -819,6 +819,8 @@ public: void ClearMatches(); void StoreMatches(cmsys::RegularExpression& re); + cmState::Snapshot GetStateSnapshot() const; + protected: // add link libraries and directories to the target void AddGlobalLinkInformation(const std::string& name, cmTarget& target); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d7abb6326d422dabdf72e8486b492ac20f8b347 commit 6d7abb6326d422dabdf72e8486b492ac20f8b347 Author: Stephen Kelly AuthorDate: Sun Apr 12 13:15:51 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:15:55 2015 +0200 cmOutputConverter: Extract from cmLocalGenerator. The Convert methods never belonged to the local generator concept, so split them out now. The cmOutputConverter is cheap to construct and destroy, so it can be instantiated where needed to perform conversions. This will allow further decoupling of cmLocalGenerator from the configure step. Inherit cmLocalGenerator from cmOutputConverter for the purpose of source compatibility. diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index a7adb51..b434327 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -299,6 +299,8 @@ set(SRCS cmMakefileUtilityTargetGenerator.cxx cmOSXBundleGenerator.cxx cmOSXBundleGenerator.h + cmOutputConverter.cxx + cmOutputConverter.h cmNewLineStyle.h cmNewLineStyle.cxx cmOrderDirectories.cxx diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index fe71d0f..f8d1bee 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -46,7 +46,7 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, cmLocalGenerator* parent, cmState::Snapshot snapshot) - : StateSnapshot(snapshot) + : cmOutputConverter(snapshot), StateSnapshot(snapshot) { assert(snapshot.IsValid()); this->GlobalGenerator = gg; @@ -58,7 +58,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->Makefile = new cmMakefile(this); - this->LinkScriptShell = false; this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; this->BackwardsCompatibilityFinal = false; @@ -1097,58 +1096,6 @@ void cmLocalGenerator::InsertRuleLauncher(std::string& s, cmTarget* target, //---------------------------------------------------------------------------- std::string -cmLocalGenerator::ConvertToOutputForExistingCommon(const std::string& remote, - std::string const& result, - OutputFormat format) -{ - // If this is a windows shell, the result has a space, and the path - // already exists, we can use a short-path to reference it without a - // space. - if(this->GetState()->UseWindowsShell() && result.find(' ') != result.npos && - cmSystemTools::FileExists(remote.c_str())) - { - std::string tmp; - if(cmSystemTools::GetShortPath(remote, tmp)) - { - return this->ConvertToOutputFormat(tmp, format); - } - } - - // Otherwise, leave it unchanged. - return result; -} - -//---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToOutputForExisting(const std::string& remote, - RelativeRoot local, - OutputFormat format) -{ - static_cast(local); - - // Perform standard conversion. - std::string result = this->ConvertToOutputFormat(remote, format); - - // Consider short-path. - return this->ConvertToOutputForExistingCommon(remote, result, format); -} - -//---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToOutputForExisting(RelativeRoot remote, - const std::string& local, - OutputFormat format) -{ - // Perform standard conversion. - std::string result = this->Convert(remote, local, format, true); - - // Consider short-path. - const char* remotePath = this->GetRelativeRootPath(remote); - return this->ConvertToOutputForExistingCommon(remotePath, result, format); -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::ConvertToIncludeReference(std::string const& path, OutputFormat format, bool forceFullPaths) @@ -2604,225 +2551,6 @@ cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, } //---------------------------------------------------------------------------- -const char* cmLocalGenerator::GetRelativeRootPath(RelativeRoot relroot) -{ - switch (relroot) - { - case HOME: return this->GetState()->GetSourceDirectory(); - case START: return this->StateSnapshot.GetCurrentSourceDirectory(); - case HOME_OUTPUT: return this->GetState()->GetBinaryDirectory(); - case START_OUTPUT: return this->StateSnapshot.GetCurrentBinaryDirectory(); - default: break; - } - return 0; -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::Convert(const std::string& source, - RelativeRoot relative, - OutputFormat output) -{ - std::string result = source; - - switch (relative) - { - case HOME: - result = this->ConvertToRelativePath( - this->GetState()->GetSourceDirectoryComponents(), result); - break; - case START: - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); - break; - case HOME_OUTPUT: - result = this->ConvertToRelativePath( - this->GetState()->GetBinaryDirectoryComponents(), result); - break; - case START_OUTPUT: - result = this->ConvertToRelativePath( - this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); - break; - case FULL: - result = cmSystemTools::CollapseFullPath(result); - break; - case NONE: - break; - - } - return this->ConvertToOutputFormat(result, output); -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, - OutputFormat output) -{ - std::string result = source; - // Convert it to an output path. - if (output == MAKERULE) - { - result = cmSystemTools::ConvertToOutputPath(result.c_str()); - } - else if(output == SHELL || output == WATCOMQUOTE) - { - // For the MSYS shell convert drive letters to posix paths, so - // that c:/some/path becomes /c/some/path. This is needed to - // avoid problems with the shell path translation. - if(this->GetState()->UseMSYSShell() && !this->LinkScriptShell) - { - if(result.size() > 2 && result[1] == ':') - { - result[1] = result[0]; - result[0] = '/'; - } - } - if(this->GetState()->UseWindowsShell()) - { - std::replace(result.begin(), result.end(), '/', '\\'); - } - result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE); - } - else if(output == RESPONSE) - { - result = this->EscapeForShell(result, false, false, false); - } - return result; -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::Convert(RelativeRoot remote, - const std::string& local, - OutputFormat output, bool optional) -{ - const char* remotePath = this->GetRelativeRootPath(remote); - - // The relative root must have a path (i.e. not FULL or NONE) - assert(remotePath != 0); - - if(!local.empty() && !optional) - { - std::vector components; - cmSystemTools::SplitPath(local, components); - std::string result = this->ConvertToRelativePath(components, remotePath); - return this->ConvertToOutputFormat(result, output); - } - else - { - return this->ConvertToOutputFormat(remotePath, output); - } -} - -//---------------------------------------------------------------------------- -static bool cmLocalGeneratorNotAbove(const char* a, const char* b) -{ - return (cmSystemTools::ComparePath(a, b) || - cmSystemTools::IsSubDirectory(a, b)); -} - -//---------------------------------------------------------------------------- -std::string -cmLocalGenerator::ConvertToRelativePath(const std::vector& local, - const std::string& in_remote, - bool force) -{ - // The path should never be quoted. - assert(in_remote[0] != '\"'); - - // The local path should never have a trailing slash. - assert(!local.empty() && !(local[local.size()-1] == "")); - - // If the path is already relative then just return the path. - if(!cmSystemTools::FileIsFullPath(in_remote.c_str())) - { - return in_remote; - } - - if(!force) - { - // Skip conversion if the path and local are not both in the source - // or both in the binary tree. - std::string local_path = cmSystemTools::JoinPath(local); - if(!((cmLocalGeneratorNotAbove(local_path.c_str(), - this->StateSnapshot.GetRelativePathTopBinary()) && - cmLocalGeneratorNotAbove(in_remote.c_str(), - this->StateSnapshot.GetRelativePathTopBinary())) || - (cmLocalGeneratorNotAbove(local_path.c_str(), - this->StateSnapshot.GetRelativePathTopSource()) && - cmLocalGeneratorNotAbove(in_remote.c_str(), - this->StateSnapshot.GetRelativePathTopSource())))) - { - return in_remote; - } - } - - // Identify the longest shared path component between the remote - // path and the local path. - std::vector remote; - cmSystemTools::SplitPath(in_remote, remote); - unsigned int common=0; - while(common < remote.size() && - common < local.size() && - cmSystemTools::ComparePath(remote[common], - local[common])) - { - ++common; - } - - // If no part of the path is in common then return the full path. - if(common == 0) - { - return in_remote; - } - - // If the entire path is in common then just return a ".". - if(common == remote.size() && - common == local.size()) - { - return "."; - } - - // If the entire path is in common except for a trailing slash then - // just return a "./". - if(common+1 == remote.size() && - remote[common].empty() && - common == local.size()) - { - return "./"; - } - - // Construct the relative path. - std::string relative; - - // First add enough ../ to get up to the level of the shared portion - // of the path. Leave off the trailing slash. Note that the last - // component of local will never be empty because local should never - // have a trailing slash. - for(unsigned int i=common; i < local.size(); ++i) - { - relative += ".."; - if(i < local.size()-1) - { - relative += "/"; - } - } - - // Now add the portion of the destination path that is not included - // in the shared portion of the path. Add a slash the first time - // only if there was already something in the path. If there was a - // trailing slash in the input then the last iteration of the loop - // will add a slash followed by an empty string which will preserve - // the trailing slash in the output. - - if(!relative.empty() && !remote.empty()) - { - relative += "/"; - } - relative += cmJoin(cmRange(remote).advance(common), "/"); - - // Finally return the path. - return relative; -} - -//---------------------------------------------------------------------------- class cmInstallTargetGeneratorLocal: public cmInstallTargetGenerator { public: @@ -3215,150 +2943,6 @@ cmLocalGenerator } //---------------------------------------------------------------------------- -static bool cmLocalGeneratorIsShellOperator(const std::string& str) -{ - static std::set shellOperators; - if(shellOperators.empty()) - { - shellOperators.insert("<"); - shellOperators.insert(">"); - shellOperators.insert("<<"); - shellOperators.insert(">>"); - shellOperators.insert("|"); - shellOperators.insert("||"); - shellOperators.insert("&&"); - shellOperators.insert("&>"); - shellOperators.insert("1>"); - shellOperators.insert("2>"); - shellOperators.insert("2>&1"); - shellOperators.insert("1>&2"); - } - return shellOperators.count(str) > 0; -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::EscapeForShell(const std::string& str, - bool makeVars, - bool forEcho, - bool useWatcomQuote) -{ - // Do not escape shell operators. - if(cmLocalGeneratorIsShellOperator(str)) - { - return str; - } - - // Compute the flags for the target shell environment. - int flags = 0; - if(this->GetState()->UseWindowsVSIDE()) - { - flags |= cmsysSystem_Shell_Flag_VSIDE; - } - else if(!this->LinkScriptShell) - { - flags |= cmsysSystem_Shell_Flag_Make; - } - if(makeVars) - { - flags |= cmsysSystem_Shell_Flag_AllowMakeVariables; - } - if(forEcho) - { - flags |= cmsysSystem_Shell_Flag_EchoWindows; - } - if(useWatcomQuote) - { - flags |= cmsysSystem_Shell_Flag_WatcomQuote; - } - if(this->GetState()->UseWatcomWMake()) - { - flags |= cmsysSystem_Shell_Flag_WatcomWMake; - } - if(this->GetState()->UseMinGWMake()) - { - flags |= cmsysSystem_Shell_Flag_MinGWMake; - } - if(this->GetState()->UseNMake()) - { - flags |= cmsysSystem_Shell_Flag_NMake; - } - - // Compute the buffer size needed. - int size = (this->GetState()->UseWindowsShell() ? - cmsysSystem_Shell_GetArgumentSizeForWindows(str.c_str(), flags) : - cmsysSystem_Shell_GetArgumentSizeForUnix(str.c_str(), flags)); - - // Compute the shell argument itself. - std::vector arg(size); - if(this->GetState()->UseWindowsShell()) - { - cmsysSystem_Shell_GetArgumentForWindows(str.c_str(), &arg[0], flags); - } - else - { - cmsysSystem_Shell_GetArgumentForUnix(str.c_str(), &arg[0], flags); - } - return std::string(&arg[0]); -} - -//---------------------------------------------------------------------------- -std::string cmLocalGenerator::EscapeForCMake(const std::string& str) -{ - // Always double-quote the argument to take care of most escapes. - std::string result = "\""; - for(const char* c = str.c_str(); *c; ++c) - { - if(*c == '"') - { - // Escape the double quote to avoid ending the argument. - result += "\\\""; - } - else if(*c == '$') - { - // Escape the dollar to avoid expanding variables. - result += "\\$"; - } - else if(*c == '\\') - { - // Escape the backslash to avoid other escapes. - result += "\\\\"; - } - else - { - // Other characters will be parsed correctly. - result += *c; - } - } - result += "\""; - return result; -} - -//---------------------------------------------------------------------------- -cmLocalGenerator::FortranFormat -cmLocalGenerator::GetFortranFormat(const char* value) -{ - FortranFormat format = FortranFormatNone; - if(value && *value) - { - std::vector fmt; - cmSystemTools::ExpandListArgument(value, fmt); - for(std::vector::iterator fi = fmt.begin(); - fi != fmt.end(); ++fi) - { - if(*fi == "FIXED") - { - format = FortranFormatFixed; - } - if(*fi == "FREE") - { - format = FortranFormatFree; - } - } - } - return format; -} - -//---------------------------------------------------------------------------- std::string cmLocalGenerator::GetTargetDirectory(cmTarget const&) const { diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 1359dd6..583159f 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -14,6 +14,7 @@ #include "cmStandardIncludes.h" #include "cmState.h" +#include "cmOutputConverter.h" class cmMakefile; class cmGlobalGenerator; @@ -31,7 +32,7 @@ class cmCustomCommandGenerator; * platforms. This class should never be constructed directly. A * GlobalGenerator will create it and invoke the appropriate commands on it. */ -class cmLocalGenerator +class cmLocalGenerator : public cmOutputConverter { public: cmLocalGenerator(cmGlobalGenerator* gg, cmLocalGenerator* parent, @@ -90,35 +91,6 @@ public: cmState* GetState() const; cmState::Snapshot GetStateSnapshot() const; - /** - * Convert something to something else. This is a centralized conversion - * routine used by the generators to handle relative paths and the like. - * The flags determine what is actually done. - * - * relative: treat the argument as a directory and convert it to make it - * relative or full or unchanged. If relative (HOME, START etc) then that - * specifies what it should be relative to. - * - * output: make the result suitable for output to a... - * - * optional: should any relative path operation be controlled by the rel - * path setting - */ - enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT }; - enum OutputFormat { UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, RESPONSE }; - std::string ConvertToOutputFormat(const std::string& source, - OutputFormat output); - std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED); - std::string Convert(RelativeRoot remote, const std::string& local, - OutputFormat output = UNCHANGED, - bool optional = false); - - /** - * Get path for the specified relative root. - */ - const char* GetRelativeRootPath(RelativeRoot relroot); - ///! set/get the parent generator cmLocalGenerator* GetParent() const {return this->Parent;} @@ -194,17 +166,6 @@ public: bool GetRealDependency(const std::string& name, const std::string& config, std::string& dep); - ///! for existing files convert to output path and short path if spaces - std::string ConvertToOutputForExisting(const std::string& remote, - RelativeRoot local = START_OUTPUT, - OutputFormat format = SHELL); - - /** For existing path identified by RelativeRoot convert to output - path and short path if spaces. */ - std::string ConvertToOutputForExisting(RelativeRoot remote, - const std::string& local = "", - OutputFormat format = SHELL); - virtual std::string ConvertToIncludeReference(std::string const& path, OutputFormat format = SHELL, bool forceFullPaths = false); @@ -276,40 +237,6 @@ public: const char* FilterPrefix; }; - /** Set whether to treat conversions to SHELL as a link script shell. */ - void SetLinkScriptShell(bool b) { this->LinkScriptShell = b; } - - /** Escape the given string to be used as a command line argument in - the native build system shell. Optionally allow the build - system to replace make variable references. Optionally adjust - escapes for the special case of passing to the native echo - command. */ - std::string EscapeForShell(const std::string& str, bool makeVars = false, - bool forEcho = false, - bool useWatcomQuote = false); - - /** Escape the given string as an argument in a CMake script. */ - static std::string EscapeForCMake(const std::string& str); - - enum FortranFormat - { - FortranFormatNone, - FortranFormatFixed, - FortranFormatFree - }; - FortranFormat GetFortranFormat(const char* value); - - /** - * Convert the given remote path to a relative path with respect to - * the given local path. The local path must be given in component - * form (see SystemTools::SplitPath) without a trailing slash. The - * remote path must use forward slashes and not already be escaped - * or quoted. - */ - std::string ConvertToRelativePath(const std::vector& local, - const std::string& remote, - bool force=false); - /** * Get the relative path from the generator output directory to a * per-target support directory. @@ -442,7 +369,6 @@ protected: std::set WarnCMP0063; - bool LinkScriptShell; bool EmitUniversalBinaryFlags; // Hack for ExpandRuleVariable until object-oriented version is @@ -452,10 +378,6 @@ protected: cmIML_INT_uint64_t BackwardsCompatibility; bool BackwardsCompatibilityFinal; private: - std::string ConvertToOutputForExistingCommon(const std::string& remote, - std::string const& result, - OutputFormat format); - void AddSharedFlags(std::string& flags, const std::string& lang, bool shared); bool GetShouldUseOldFlags(bool shared, const std::string &lang) const; diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx new file mode 100644 index 0000000..db73a34 --- /dev/null +++ b/Source/cmOutputConverter.cxx @@ -0,0 +1,447 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmOutputConverter.h" + +#include "cmAlgorithms.h" +#include "cmake.h" + +#include + +#include + +cmOutputConverter::cmOutputConverter(cmState::Snapshot snapshot) + : StateSnapshot(snapshot), LinkScriptShell(false) +{ +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, + std::string const& result, + OutputFormat format) +{ + // If this is a windows shell, the result has a space, and the path + // already exists, we can use a short-path to reference it without a + // space. + if(this->GetState()->UseWindowsShell() && result.find(' ') != result.npos && + cmSystemTools::FileExists(remote.c_str())) + { + std::string tmp; + if(cmSystemTools::GetShortPath(remote, tmp)) + { + return this->ConvertToOutputFormat(tmp, format); + } + } + + // Otherwise, leave it unchanged. + return result; +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToOutputForExisting(const std::string& remote, + RelativeRoot local, + OutputFormat format) +{ + static_cast(local); + + // Perform standard conversion. + std::string result = this->ConvertToOutputFormat(remote, format); + + // Consider short-path. + return this->ConvertToOutputForExistingCommon(remote, result, format); +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote, + const std::string& local, + OutputFormat format) +{ + // Perform standard conversion. + std::string result = this->Convert(remote, local, format, true); + + // Consider short-path. + const char* remotePath = this->GetRelativeRootPath(remote); + return this->ConvertToOutputForExistingCommon(remotePath, result, format); +} + +//---------------------------------------------------------------------------- +const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) +{ + switch (relroot) + { + case HOME: return this->GetState()->GetSourceDirectory(); + case START: return this->StateSnapshot.GetCurrentSourceDirectory(); + case HOME_OUTPUT: return this->GetState()->GetBinaryDirectory(); + case START_OUTPUT: return this->StateSnapshot.GetCurrentBinaryDirectory(); + default: break; + } + return 0; +} + +std::string cmOutputConverter::Convert(const std::string& source, + RelativeRoot relative, + OutputFormat output) +{ + // Convert the path to a relative path. + std::string result = source; + + switch (relative) + { + case HOME: + result = this->ConvertToRelativePath( + this->GetState()->GetSourceDirectoryComponents(), result); + break; + case START: + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentSourceDirectoryComponents(), result); + break; + case HOME_OUTPUT: + result = this->ConvertToRelativePath( + this->GetState()->GetBinaryDirectoryComponents(), result); + break; + case START_OUTPUT: + result = this->ConvertToRelativePath( + this->StateSnapshot.GetCurrentBinaryDirectoryComponents(), result); + break; + case FULL: + result = cmSystemTools::CollapseFullPath(result); + break; + case NONE: + break; + } + return this->ConvertToOutputFormat(result, output); +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source, + OutputFormat output) +{ + std::string result = source; + // Convert it to an output path. + if (output == MAKERULE) + { + result = cmSystemTools::ConvertToOutputPath(result.c_str()); + } + else if(output == SHELL || output == WATCOMQUOTE) + { + // For the MSYS shell convert drive letters to posix paths, so + // that c:/some/path becomes /c/some/path. This is needed to + // avoid problems with the shell path translation. + if(this->GetState()->UseMSYSShell() && !this->LinkScriptShell) + { + if(result.size() > 2 && result[1] == ':') + { + result[1] = result[0]; + result[0] = '/'; + } + } + if(this->GetState()->UseWindowsShell()) + { + std::replace(result.begin(), result.end(), '/', '\\'); + } + result = this->EscapeForShell(result, true, false, output == WATCOMQUOTE); + } + else if(output == RESPONSE) + { + result = this->EscapeForShell(result, false, false, false); + } + return result; +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::Convert(RelativeRoot remote, + const std::string& local, + OutputFormat output, + bool optional) +{ + const char* remotePath = this->GetRelativeRootPath(remote); + + // The relative root must have a path (i.e. not FULL or NONE) + assert(remotePath != 0); + + if(!local.empty() && !optional) + { + std::vector components; + cmSystemTools::SplitPath(local, components); + std::string result = this->ConvertToRelativePath(components, remotePath); + return this->ConvertToOutputFormat(result, output); + } + + return this->ConvertToOutputFormat(remotePath, output); +} + +//---------------------------------------------------------------------------- +static bool cmOutputConverterNotAbove(const char* a, const char* b) +{ + return (cmSystemTools::ComparePath(a, b) || + cmSystemTools::IsSubDirectory(a, b)); +} + +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::ConvertToRelativePath(const std::vector& local, + const std::string& in_remote, + bool force) +{ + // The path should never be quoted. + assert(in_remote[0] != '\"'); + + // The local path should never have a trailing slash. + assert(!local.empty() && !(local[local.size()-1] == "")); + + // If the path is already relative then just return the path. + if(!cmSystemTools::FileIsFullPath(in_remote.c_str())) + { + return in_remote; + } + + if(!force) + { + // Skip conversion if the path and local are not both in the source + // or both in the binary tree. + std::string local_path = cmSystemTools::JoinPath(local); + if(!((cmOutputConverterNotAbove(local_path.c_str(), + this->StateSnapshot.GetRelativePathTopBinary()) && + cmOutputConverterNotAbove(in_remote.c_str(), + this->StateSnapshot.GetRelativePathTopBinary())) || + (cmOutputConverterNotAbove(local_path.c_str(), + this->StateSnapshot.GetRelativePathTopSource()) && + cmOutputConverterNotAbove(in_remote.c_str(), + this->StateSnapshot.GetRelativePathTopSource())))) + { + return in_remote; + } + } + + // Identify the longest shared path component between the remote + // path and the local path. + std::vector remote; + cmSystemTools::SplitPath(in_remote, remote); + unsigned int common=0; + while(common < remote.size() && + common < local.size() && + cmSystemTools::ComparePath(remote[common], + local[common])) + { + ++common; + } + + // If no part of the path is in common then return the full path. + if(common == 0) + { + return in_remote; + } + + // If the entire path is in common then just return a ".". + if(common == remote.size() && + common == local.size()) + { + return "."; + } + + // If the entire path is in common except for a trailing slash then + // just return a "./". + if(common+1 == remote.size() && + remote[common].empty() && + common == local.size()) + { + return "./"; + } + + // Construct the relative path. + std::string relative; + + // First add enough ../ to get up to the level of the shared portion + // of the path. Leave off the trailing slash. Note that the last + // component of local will never be empty because local should never + // have a trailing slash. + for(unsigned int i=common; i < local.size(); ++i) + { + relative += ".."; + if(i < local.size()-1) + { + relative += "/"; + } + } + + // Now add the portion of the destination path that is not included + // in the shared portion of the path. Add a slash the first time + // only if there was already something in the path. If there was a + // trailing slash in the input then the last iteration of the loop + // will add a slash followed by an empty string which will preserve + // the trailing slash in the output. + + if(!relative.empty() && !remote.empty()) + { + relative += "/"; + } + relative += cmJoin(cmRange(remote).advance(common), "/"); + + // Finally return the path. + return relative; +} + +//---------------------------------------------------------------------------- +static bool cmOutputConverterIsShellOperator(const std::string& str) +{ + static std::set shellOperators; + if(shellOperators.empty()) + { + shellOperators.insert("<"); + shellOperators.insert(">"); + shellOperators.insert("<<"); + shellOperators.insert(">>"); + shellOperators.insert("|"); + shellOperators.insert("||"); + shellOperators.insert("&&"); + shellOperators.insert("&>"); + shellOperators.insert("1>"); + shellOperators.insert("2>"); + shellOperators.insert("2>&1"); + shellOperators.insert("1>&2"); + } + return shellOperators.count(str) > 0; +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::EscapeForShell(const std::string& str, + bool makeVars, + bool forEcho, + bool useWatcomQuote) +{ + // Do not escape shell operators. + if(cmOutputConverterIsShellOperator(str)) + { + return str; + } + + // Compute the flags for the target shell environment. + int flags = 0; + if(this->GetState()->UseWindowsVSIDE()) + { + flags |= cmsysSystem_Shell_Flag_VSIDE; + } + else if(!this->LinkScriptShell) + { + flags |= cmsysSystem_Shell_Flag_Make; + } + if(makeVars) + { + flags |= cmsysSystem_Shell_Flag_AllowMakeVariables; + } + if(forEcho) + { + flags |= cmsysSystem_Shell_Flag_EchoWindows; + } + if(useWatcomQuote) + { + flags |= cmsysSystem_Shell_Flag_WatcomQuote; + } + if(this->GetState()->UseWatcomWMake()) + { + flags |= cmsysSystem_Shell_Flag_WatcomWMake; + } + if(this->GetState()->UseMinGWMake()) + { + flags |= cmsysSystem_Shell_Flag_MinGWMake; + } + if(this->GetState()->UseNMake()) + { + flags |= cmsysSystem_Shell_Flag_NMake; + } + + // Compute the buffer size needed. + int size = (this->GetState()->UseWindowsShell() ? + cmsysSystem_Shell_GetArgumentSizeForWindows(str.c_str(), flags) : + cmsysSystem_Shell_GetArgumentSizeForUnix(str.c_str(), flags)); + + // Compute the shell argument itself. + std::vector arg(size); + if(this->GetState()->UseWindowsShell()) + { + cmsysSystem_Shell_GetArgumentForWindows(str.c_str(), &arg[0], flags); + } + else + { + cmsysSystem_Shell_GetArgumentForUnix(str.c_str(), &arg[0], flags); + } + return std::string(&arg[0]); +} + +//---------------------------------------------------------------------------- +std::string cmOutputConverter::EscapeForCMake(const std::string& str) +{ + // Always double-quote the argument to take care of most escapes. + std::string result = "\""; + for(const char* c = str.c_str(); *c; ++c) + { + if(*c == '"') + { + // Escape the double quote to avoid ending the argument. + result += "\\\""; + } + else if(*c == '$') + { + // Escape the dollar to avoid expanding variables. + result += "\\$"; + } + else if(*c == '\\') + { + // Escape the backslash to avoid other escapes. + result += "\\\\"; + } + else + { + // Other characters will be parsed correctly. + result += *c; + } + } + result += "\""; + return result; +} + +//---------------------------------------------------------------------------- +cmOutputConverter::FortranFormat +cmOutputConverter::GetFortranFormat(const char* value) +{ + FortranFormat format = FortranFormatNone; + if(value && *value) + { + std::vector fmt; + cmSystemTools::ExpandListArgument(value, fmt); + for(std::vector::iterator fi = fmt.begin(); + fi != fmt.end(); ++fi) + { + if(*fi == "FIXED") + { + format = FortranFormatFixed; + } + if(*fi == "FREE") + { + format = FortranFormatFree; + } + } + } + return format; +} + +void cmOutputConverter::SetLinkScriptShell(bool linkScriptShell) +{ + this->LinkScriptShell = linkScriptShell; +} + +cmState* cmOutputConverter::GetState() const +{ + return this->StateSnapshot.GetState(); +} diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h new file mode 100644 index 0000000..1d3f8c7 --- /dev/null +++ b/Source/cmOutputConverter.h @@ -0,0 +1,106 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmOutputConverter_h +#define cmOutputConverter_h + +#include "cmStandardIncludes.h" + +#include "cmGlobalGenerator.h" +#include "cmState.h" + +class cmOutputConverter +{ +public: + cmOutputConverter(cmState::Snapshot snapshot); + + /** + * Convert something to something else. This is a centralized conversion + * routine used by the generators to handle relative paths and the like. + * The flags determine what is actually done. + * + * relative: treat the argument as a directory and convert it to make it + * relative or full or unchanged. If relative (HOME, START etc) then that + * specifies what it should be relative to. + * + * output: make the result suitable for output to a... + * + * optional: should any relative path operation be controlled by the rel + * path setting + */ + enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT }; + enum OutputFormat { UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, RESPONSE }; + std::string ConvertToOutputFormat(const std::string& source, + OutputFormat output); + std::string Convert(const std::string& remote, RelativeRoot local, + OutputFormat output = UNCHANGED); + std::string Convert(RelativeRoot remote, const std::string& local, + OutputFormat output = UNCHANGED, + bool optional = false); + + /** + * Get path for the specified relative root. + */ + const char* GetRelativeRootPath(RelativeRoot relroot); + + ///! for existing files convert to output path and short path if spaces + std::string ConvertToOutputForExisting(const std::string& remote, + RelativeRoot local = START_OUTPUT, + OutputFormat format = SHELL); + + /** For existing path identified by RelativeRoot convert to output + path and short path if spaces. */ + std::string ConvertToOutputForExisting(RelativeRoot remote, + const std::string& local = "", + OutputFormat format = SHELL); + + void SetLinkScriptShell(bool linkScriptShell); + + std::string EscapeForShell(const std::string& str, + bool makeVars = false, + bool forEcho = false, + bool useWatcomQuote = false); + + static std::string EscapeForCMake(const std::string& str); + + enum FortranFormat + { + FortranFormatNone, + FortranFormatFixed, + FortranFormatFree + }; + static FortranFormat GetFortranFormat(const char* value); + + /** + * Convert the given remote path to a relative path with respect to + * the given local path. The local path must be given in component + * form (see SystemTools::SplitPath) without a trailing slash. The + * remote path must use forward slashes and not already be escaped + * or quoted. + */ + std::string ConvertToRelativePath(const std::vector& local, + const std::string& in_remote, + bool force = false); + +private: + cmState* GetState() const; + + std::string ConvertToOutputForExistingCommon(const std::string& remote, + std::string const& result, + OutputFormat format); + +private: + cmState::Snapshot StateSnapshot; + + bool LinkScriptShell; +}; + +#endif diff --git a/bootstrap b/bootstrap index 14046ee..98cdcd0 100755 --- a/bootstrap +++ b/bootstrap @@ -299,6 +299,7 @@ CMAKE_CXX_SOURCES="\ cmMakefileLibraryTargetGenerator \ cmMakefileTargetGenerator \ cmMakefileUtilityTargetGenerator \ + cmOutputConverter \ cmOSXBundleGenerator \ cmNewLineStyle \ cmBootstrapCommands1 \ ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 03:30:04 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 03:30:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-147-gca69528 Message-ID: <20150606073004.77879B00BF@public.kitware.com> 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 ca6952860c9fda285bee5ce7c199cca0ece1c519 (commit) via f36f86bc1afdc548dfc45ebf602f2869346a1f04 (commit) via 586c866adc831e902a41ecd9f06a10ab7f1e7a57 (commit) from b042e8c3c02d1e054881271be331af01c5afed79 (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=ca6952860c9fda285bee5ce7c199cca0ece1c519 commit ca6952860c9fda285bee5ce7c199cca0ece1c519 Merge: b042e8c f36f86b Author: Stephen Kelly AuthorDate: Sat Jun 6 03:30:03 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 03:30:03 2015 -0400 Merge topic 'clean-up-cmMakefile' into next f36f86bc cmMakefile: Simplify InitializeFromParent method. 586c866a cmMakefile: Remove unused GetPolicies method. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f36f86bc1afdc548dfc45ebf602f2869346a1f04 commit f36f86bc1afdc548dfc45ebf602f2869346a1f04 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:17:45 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:17:45 2015 +0200 cmMakefile: Simplify InitializeFromParent method. Provide a parent instead of requiring it to be computed through the cmLocalGenerator. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index e94cffa..9bf985d 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1494,10 +1494,8 @@ void cmMakefile::AddLinkDirectory(const std::string& dir) } } -void cmMakefile::InitializeFromParent() +void cmMakefile::InitializeFromParent(cmMakefile* parent) { - cmMakefile *parent = this->LocalGenerator->GetParent()->GetMakefile(); - // Initialize definitions with the closure of the parent scope. this->Internal->InitializeDefinitions(parent); @@ -1681,7 +1679,7 @@ void cmMakefile::Configure() void cmMakefile::ConfigureSubDirectory(cmMakefile *mf) { - mf->InitializeFromParent(); + mf->InitializeFromParent(this); std::string currentStart = mf->GetCurrentSourceDirectory(); if (this->GetCMakeInstance()->GetDebugOutput()) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 3f976c7..00218bf 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -730,7 +730,7 @@ public: cmPropertyMap &GetProperties() { return this->Properties; } ///! Initialize a makefile from its parent - void InitializeFromParent(); + void InitializeFromParent(cmMakefile* parent); void AddInstallGenerator(cmInstallGenerator* g) { if(g) this->InstallGenerators.push_back(g); } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=586c866adc831e902a41ecd9f06a10ab7f1e7a57 commit 586c866adc831e902a41ecd9f06a10ab7f1e7a57 Author: Stephen Kelly AuthorDate: Sun May 3 00:47:53 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:16:36 2015 +0200 cmMakefile: Remove unused GetPolicies method. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 1806b5b..3f976c7 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -14,7 +14,6 @@ #include "cmExecutionStatus.h" #include "cmListFileCache.h" -#include "cmPolicies.h" #include "cmPropertyMap.h" #include "cmSystemTools.h" #include "cmTarget.h" @@ -373,11 +372,6 @@ public: }; friend class PolicyPushPop; - /** - * Get the Policies Instance - */ - cmPolicies *GetPolicies() const; - mutable std::set CMP0054ReportedIds; /** diff --git a/Source/cmake.h b/Source/cmake.h index 0fe7bfc..f0f9411 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -222,9 +222,6 @@ class cmake ///! this is called by generators to update the progress void UpdateProgress(const char *msg, float prog); - ///! get the cmake policies instance - cmPolicies *GetPolicies() {return this->Policies;} - ///! Get the variable watch object cmVariableWatch* GetVariableWatch() { return this->VariableWatch; } ----------------------------------------------------------------------- Summary of changes: Source/cmMakefile.cxx | 6 ++---- Source/cmMakefile.h | 8 +------- Source/cmake.h | 3 --- 3 files changed, 3 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 03:35:26 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 03:35:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-149-g641a3e3 Message-ID: <20150606073526.AF284B018A@public.kitware.com> 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 641a3e3f88314ef78a27c55f92a369c844a24b4f (commit) via da68b59e51199d851b8d956cbfbdf8c8f2e487f5 (commit) from ca6952860c9fda285bee5ce7c199cca0ece1c519 (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=641a3e3f88314ef78a27c55f92a369c844a24b4f commit 641a3e3f88314ef78a27c55f92a369c844a24b4f Merge: ca69528 da68b59 Author: Stephen Kelly AuthorDate: Sat Jun 6 03:35:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 03:35:26 2015 -0400 Merge topic 'clean-up-cmMakefile' into next da68b59e Revert "cmMakefile: Add a method to abstract access to execution file." http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=da68b59e51199d851b8d956cbfbdf8c8f2e487f5 commit da68b59e51199d851b8d956cbfbdf8c8f2e487f5 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:34:40 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:35:07 2015 +0200 Revert "cmMakefile: Add a method to abstract access to execution file." This reverts commit ce14340c7a8a1beb32a5cb6f8f1129d3d5a5dda8. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9bf985d..3ac77e9 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -306,15 +306,6 @@ cmListFileContext cmMakefile::GetExecutionContext() const return *this->CallStack.back().Context; } -std::string cmMakefile::GetExecutionFilePath() const -{ - if (this->CallStack.empty()) - { - return std::string(); - } - return this->CallStack.back().Context->FilePath; -} - //---------------------------------------------------------------------------- void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 00218bf..def0c23 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -570,8 +570,6 @@ public: cmListFileBacktrace GetBacktrace() const; cmListFileBacktrace GetBacktrace(cmListFileContext const& lfc) const; cmListFileContext GetExecutionContext() const; - std::string GetExecutionFilePath() const; - /** * Get the vector of files created by this makefile ----------------------------------------------------------------------- Summary of changes: Source/cmMakefile.cxx | 9 --------- Source/cmMakefile.h | 2 -- 2 files changed, 11 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 03:36:26 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 03:36:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-154-ge591a11 Message-ID: <20150606073626.674F5B018E@public.kitware.com> 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 e591a1131a651503cd46e37a31456e13b928da51 (commit) via 1981c9718b7099670b03535a241c735477d6bc6c (commit) via 353e422b2ad3d51dfc6c6db968ebcece10cbcc8d (commit) via 00bfa047481ed9f75444cb4954d7d72f616aef0f (commit) via db74ce5820e0d0a99649c6b472de74277e3fa6bf (commit) from 641a3e3f88314ef78a27c55f92a369c844a24b4f (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=e591a1131a651503cd46e37a31456e13b928da51 commit e591a1131a651503cd46e37a31456e13b928da51 Merge: 641a3e3 1981c97 Author: Stephen Kelly AuthorDate: Sat Jun 6 03:36:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 03:36:25 2015 -0400 Merge topic 'clean-up-cmMakefile' into next 1981c971 cmMakefile: Simplify InitializeFromParent method. 353e422b cmMakefile: Remove unused GetPolicies method. 00bfa047 cmMakefile: Out-of-line the cmMakefileCall. db74ce58 cmMakefile: Inline PushScope into PushFunctionScope. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1981c9718b7099670b03535a241c735477d6bc6c commit 1981c9718b7099670b03535a241c735477d6bc6c Author: Stephen Kelly AuthorDate: Sat Jun 6 09:17:45 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:35:55 2015 +0200 cmMakefile: Simplify InitializeFromParent method. Provide a parent instead of requiring it to be computed through the cmLocalGenerator. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d4bf6c1..3ac77e9 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1485,10 +1485,8 @@ void cmMakefile::AddLinkDirectory(const std::string& dir) } } -void cmMakefile::InitializeFromParent() +void cmMakefile::InitializeFromParent(cmMakefile* parent) { - cmMakefile *parent = this->LocalGenerator->GetParent()->GetMakefile(); - // Initialize definitions with the closure of the parent scope. this->Internal->InitializeDefinitions(parent); @@ -1672,7 +1670,7 @@ void cmMakefile::Configure() void cmMakefile::ConfigureSubDirectory(cmMakefile *mf) { - mf->InitializeFromParent(); + mf->InitializeFromParent(this); std::string currentStart = mf->GetCurrentSourceDirectory(); if (this->GetCMakeInstance()->GetDebugOutput()) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 85451ad..def0c23 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -728,7 +728,7 @@ public: cmPropertyMap &GetProperties() { return this->Properties; } ///! Initialize a makefile from its parent - void InitializeFromParent(); + void InitializeFromParent(cmMakefile* parent); void AddInstallGenerator(cmInstallGenerator* g) { if(g) this->InstallGenerators.push_back(g); } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=353e422b2ad3d51dfc6c6db968ebcece10cbcc8d commit 353e422b2ad3d51dfc6c6db968ebcece10cbcc8d Author: Stephen Kelly AuthorDate: Sun May 3 00:47:53 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:35:55 2015 +0200 cmMakefile: Remove unused GetPolicies method. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 0b328e9..85451ad 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -14,7 +14,6 @@ #include "cmExecutionStatus.h" #include "cmListFileCache.h" -#include "cmPolicies.h" #include "cmPropertyMap.h" #include "cmSystemTools.h" #include "cmTarget.h" @@ -373,11 +372,6 @@ public: }; friend class PolicyPushPop; - /** - * Get the Policies Instance - */ - cmPolicies *GetPolicies() const; - mutable std::set CMP0054ReportedIds; /** diff --git a/Source/cmake.h b/Source/cmake.h index 0fe7bfc..f0f9411 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -222,9 +222,6 @@ class cmake ///! this is called by generators to update the progress void UpdateProgress(const char *msg, float prog); - ///! get the cmake policies instance - cmPolicies *GetPolicies() {return this->Policies;} - ///! Get the variable watch object cmVariableWatch* GetVariableWatch() { return this->VariableWatch; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=00bfa047481ed9f75444cb4954d7d72f616aef0f commit 00bfa047481ed9f75444cb4954d7d72f616aef0f Author: Stephen Kelly AuthorDate: Sun May 31 19:03:46 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:31:16 2015 +0200 cmMakefile: Out-of-line the cmMakefileCall. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 2072418..d4bf6c1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -5494,3 +5494,15 @@ cmMakefile::MacroPushPop::~MacroPushPop() { this->Makefile->PopMacroScope(this->ReportError); } + +cmMakefileCall::cmMakefileCall(cmMakefile* mf, const cmListFileContext& lfc, + cmExecutionStatus& status): Makefile(mf) +{ + cmMakefile::CallStackEntry entry = {&lfc, &status}; + this->Makefile->CallStack.push_back(entry); +} + +cmMakefileCall::~cmMakefileCall() +{ + this->Makefile->CallStack.pop_back(); +} diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 0914a99..0b328e9 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -1084,15 +1084,8 @@ class cmMakefileCall public: cmMakefileCall(cmMakefile* mf, cmListFileContext const& lfc, - cmExecutionStatus& status): Makefile(mf) - { - cmMakefile::CallStackEntry entry = {&lfc, &status}; - this->Makefile->CallStack.push_back(entry); - } - ~cmMakefileCall() - { - this->Makefile->CallStack.pop_back(); - } + cmExecutionStatus& status); + ~cmMakefileCall(); private: cmMakefile* Makefile; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=db74ce5820e0d0a99649c6b472de74277e3fa6bf commit db74ce5820e0d0a99649c6b472de74277e3fa6bf Author: Stephen Kelly AuthorDate: Sun May 31 23:45:52 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 09:30:45 2015 +0200 cmMakefile: Inline PushScope into PushFunctionScope. Make it possible to group the various methods here a different way. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d3a8121..2072418 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1564,7 +1564,13 @@ void cmMakefile::InitializeFromParent() void cmMakefile::PushFunctionScope(const cmPolicies::PolicyMap& pm) { - this->PushScope(); + this->Internal->PushDefinitions(); + + this->PushLoopBlockBarrier(); + +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GetGlobalGenerator()->GetFileLockPool().PushFunctionScope(); +#endif this->PushFunctionBlockerBarrier(); @@ -1579,7 +1585,15 @@ void cmMakefile::PopFunctionScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); - this->PopScope(); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GetGlobalGenerator()->GetFileLockPool().PopFunctionScope(); +#endif + + this->PopLoopBlockBarrier(); + + this->CheckForUnusedVariables(); + + this->Internal->PopDefinitions(); } void cmMakefile::PushMacroScope(const cmPolicies::PolicyMap& pm) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 04:10:31 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 04:10:31 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-169-ga8dcd68 Message-ID: <20150606081031.9BF37AD3E6@public.kitware.com> 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 a8dcd688efb9b9fbeb0fdcb57dd0818a1542d621 (commit) via 33abc98e41ac1388f48a27575a94dcefddf100bb (commit) via 42bb8d70c1ce9bf9b3230cb06b7bfe822048f3fd (commit) via 8337df7a3e04e0a602c136307ad784a7399789dd (commit) via 9a42299207bf0df4c694ab4396752a26ca86c3f5 (commit) via cf74b910b77c173a543910d01b2240a9c9c6fd54 (commit) via 0202752dc07a9b34620f023a8acd572614d2f0cd (commit) via 3389e78806c07cdabadf556c19fda84379644fca (commit) via 0891463e49665a6ef5b325585bb39016cbb6326e (commit) via 4465af8594615f2b913d1ee92f571da27319994a (commit) via 3c383a3d45b67d74b365ee51137ed7da3a3a3e38 (commit) via 29a8121ffbc39629b15b5210b30ab9851800f49b (commit) via a6101179de70dfffbe4a9f8ca37a7b5114e3fe2d (commit) via 3bae6910db6787463cee904bcb62aaca533238a1 (commit) via 44a8115797cc3f804d653928d71b126b39e29210 (commit) from e591a1131a651503cd46e37a31456e13b928da51 (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=a8dcd688efb9b9fbeb0fdcb57dd0818a1542d621 commit a8dcd688efb9b9fbeb0fdcb57dd0818a1542d621 Merge: e591a11 33abc98 Author: Stephen Kelly AuthorDate: Sat Jun 6 04:10:29 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 04:10:29 2015 -0400 Merge topic 'data-layout' into next 33abc98e cmComputeLinkInformation: Re-arrange data layout. 42bb8d70 cmLocalUnixMakefileGenerator: Re-arrange data layout. 8337df7a cmMakefile: Re-arrange data layout. 9a422992 cmSourceFile: Re-arrange data. cf74b910 cmTarget: Re-arrange data layout. 0202752d cmTarget: Replace PolicyStatus members with PolicyMap. 3389e788 cmTarget: Use method abstraction for policy status. 0891463e cmPropertyMap: Remove chaining logic. 4465af85 cmPropertyMap: Require a non-empty name parameter. 3c383a3d cmPropertyMap: Remove scope parameter from API where not used. 29a8121f Constify property definition API. a6101179 cmProperty: Remove needless Name member. 3bae6910 cmPolicies: Store all statuses in a single bitset. 44a81157 cmPolicies: Replace UNDEFINED bitset with WARN bitset. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=33abc98e41ac1388f48a27575a94dcefddf100bb commit 33abc98e41ac1388f48a27575a94dcefddf100bb Author: Stephen Kelly AuthorDate: Sat Jun 6 09:59:24 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:57 2015 +0200 cmComputeLinkInformation: Re-arrange data layout. Size goes from 1944 to 1920 bytes. diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h index 8847141..ccf520b 100644 --- a/Source/cmComputeLinkInformation.h +++ b/Source/cmComputeLinkInformation.h @@ -82,7 +82,6 @@ private: // Configuration information. std::string Config; std::string LinkLanguage; - bool LinkDependsNoShared; // Modes for dealing with dependent shared libraries. enum SharedDepMode @@ -93,8 +92,6 @@ private: SharedDepModeLink // List file on link line }; - // System info. - bool UseImportLibrary; const char* LoaderFlag; std::string LibLinkFlag; std::string LibLinkFileFlag; @@ -102,22 +99,18 @@ private: std::string RuntimeFlag; std::string RuntimeSep; std::string RuntimeAlways; - bool RuntimeUseChrpath; - bool NoSONameUsesPath; - bool LinkWithRuntimePath; std::string RPathLinkFlag; SharedDepMode SharedDependencyMode; + enum LinkType { LinkUnknown, LinkStatic, LinkShared }; + void SetCurrentLinkType(LinkType lt); + // Link type adjustment. void ComputeLinkTypeInfo(); - enum LinkType { LinkUnknown, LinkStatic, LinkShared }; LinkType StartLinkType; LinkType CurrentLinkType; std::string StaticLinkTypeFlag; std::string SharedLinkTypeFlag; - bool LinkTypeEnabled; - void SetCurrentLinkType(LinkType lt); - bool ArchivesMayBeShared; // Link item parsing. void ComputeItemParserInfo(); @@ -129,7 +122,6 @@ private: cmsys::RegularExpression ExtractSharedLibraryName; cmsys::RegularExpression ExtractAnyLibraryName; std::string SharedRegexString; - bool OpenBSD; void AddLinkPrefix(const char* p); void AddLinkExtension(const char* e, LinkType type); std::string CreateExtensionRegex(std::vector const& exts, @@ -173,20 +165,27 @@ private: std::set OldLinkDirMask; std::vector OldLinkDirItems; std::vector OldUserFlagItems; - bool OldLinkDirMode; - - // CMP0060 warnings. - bool CMP0060Warn; std::set CMP0060WarnItems; - + // Dependent library path computation. + cmOrderDirectories* OrderDependentRPath; // Runtime path computation. cmOrderDirectories* OrderRuntimeSearchPath; + + bool OldLinkDirMode; + bool OpenBSD; + bool LinkDependsNoShared; + bool UseImportLibrary; + bool RuntimeUseChrpath; + bool NoSONameUsesPath; + bool LinkWithRuntimePath; + bool LinkTypeEnabled; + bool ArchivesMayBeShared; + bool CMP0060Warn; + void AddLibraryRuntimeInfo(std::string const& fullPath, cmTarget const* target); void AddLibraryRuntimeInfo(std::string const& fullPath); - // Dependent library path computation. - cmOrderDirectories* OrderDependentRPath; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=42bb8d70c1ce9bf9b3230cb06b7bfe822048f3fd commit 42bb8d70c1ce9bf9b3230cb06b7bfe822048f3fd Author: Stephen Kelly AuthorDate: Sat Jun 6 09:46:10 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:57 2015 +0200 cmLocalUnixMakefileGenerator: Re-arrange data layout. Size goes from 536 to 528 bytes. diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index f2a1389..dcb3016 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -254,26 +254,10 @@ private: ImplicitDependTargetMap ImplicitDepends; - //========================================================================== - // Configuration settings. - int MakefileVariableSize; std::string ConfigurationName; - bool MakeCommandEscapeTargetTwice; - bool BorlandMakeCurlyHack; - //========================================================================== std::string HomeRelativeOutputPath; - /* Copy the setting of CMAKE_COLOR_MAKEFILE from the makefile at the - beginning of generation to avoid many duplicate lookups. */ - bool ColorMakefile; - - /* Copy the setting of CMAKE_SKIP_PREPROCESSED_SOURCE_RULES and - CMAKE_SKIP_ASSEMBLY_SOURCE_RULES at the beginning of generation to - avoid many duplicate lookups. */ - bool SkipPreprocessedSourceRules; - bool SkipAssemblySourceRules; - struct LocalObjectEntry { cmTarget* Target; @@ -302,6 +286,13 @@ private: /* does the work for each target */ std::map MakeVariableMap; std::map ShortMakeVariableMap; + + int MakefileVariableSize; + bool MakeCommandEscapeTargetTwice; + bool BorlandMakeCurlyHack; + bool ColorMakefile; + bool SkipPreprocessedSourceRules; + bool SkipAssemblySourceRules; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8337df7a3e04e0a602c136307ad784a7399789dd commit 8337df7a3e04e0a602c136307ad784a7399789dd Author: Stephen Kelly AuthorDate: Sat Jun 6 09:45:56 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:57 2015 +0200 cmMakefile: Re-arrange data layout. 2176 to 2160 bytes with GNU libstdc++-5.1. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 7518631..32223b4 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -372,8 +372,6 @@ public: }; friend class PolicyPushPop; - mutable std::set CMP0054ReportedIds; - /** * Determine if the given context, name pair has already been reported * in context of CMP0054. @@ -848,6 +846,8 @@ protected: // Check for a an unused variable void LogUnused(const char* reason, const std::string& name) const; + mutable std::set CMP0054ReportedIds; + std::string ProjectName; // project name // libraries, classes, and executables @@ -949,10 +949,6 @@ private: cmPropertyMap Properties; - // Unused variable flags - bool WarnUnused; - bool CheckSystemVars; - // stack of list files being read std::vector ListFileStack; @@ -994,8 +990,6 @@ private: cmPolicies::PolicyStatus GetPolicyStatusInternal(cmPolicies::PolicyID id) const; - bool CheckCMP0000; - // Enforce rules about CMakeLists.txt files. void EnforceDirectoryLevelRules() const; @@ -1021,7 +1015,6 @@ private: long line, bool removeEmpty, bool replaceAt) const; - bool Configured; /** * Old version of GetSourceFileWithOutput(const std::string&) kept for * backward-compatibility. It implements a linear search and support @@ -1067,6 +1060,11 @@ private: void CheckForUnusedVariables() const; + // Unused variable flags + bool WarnUnused; + bool CheckSystemVars; + bool CheckCMP0000; + bool Configured; mutable bool SuppressWatches; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9a42299207bf0df4c694ab4396752a26ca86c3f5 commit 9a42299207bf0df4c694ab4396752a26ca86c3f5 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:45:50 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:46 2015 +0200 cmSourceFile: Re-arrange data. diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index f898260..1433b54 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -107,8 +107,9 @@ private: std::string Extension; std::string Language; std::string FullPath; - bool FindFullPathFailed; std::string ObjectLibrary; + std::vector Depends; + bool FindFullPathFailed; bool IsUiFile; bool FindFullPath(std::string* error); @@ -116,7 +117,6 @@ private: void CheckExtension(); void CheckLanguage(std::string const& ext); - std::vector Depends; static const std::string propLANGUAGE; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cf74b910b77c173a543910d01b2240a9c9c6fd54 commit cf74b910b77c173a543910d01b2240a9c9c6fd54 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:44:47 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:46 2015 +0200 cmTarget: Re-arrange data layout. Size with GNU libstdc++-5.1 goes from 840 bytes to 808 bytes. diff --git a/Source/cmTarget.h b/Source/cmTarget.h index cade7ab..ddc8d35 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -642,12 +642,6 @@ public: private: bool HandleLocationPropertyPolicy(cmMakefile* context) const; - // The set of include directories that are marked as system include - // directories. - std::set SystemIncludeDirectories; - - std::vector > TLLCommands; - #if defined(_WIN32) && !defined(__CYGWIN__) /** * A list of direct dependencies. Use in conjunction with DependencyMap. @@ -742,40 +736,48 @@ private: void GetSourceFiles(std::vector &files, const std::string& config) const; private: + mutable cmPropertyMap Properties; + std::set SystemIncludeDirectories; + std::set LinkDirectoriesEmmitted; + std::set Utilities; + mutable std::set LinkImplicitNullProperties; + std::map UtilityBacktraces; + mutable std::map DebugCompatiblePropertiesDone; + mutable std::map MaxLanguageStandards; + cmPolicies::PolicyMap PolicyMap; std::string Name; + std::string InstallPath; + std::string RuntimeInstallPath; + mutable std::string ExportMacro; + std::vector LinkDirectories; std::vector PreBuildCommands; std::vector PreLinkCommands; std::vector PostBuildCommands; - TargetType TargetTypeValue; + std::vector > TLLCommands; LinkLibraryVectorType PrevLinkedLibraries; + LinkLibraryVectorType OriginalLinkLibraries; #if defined(_WIN32) && !defined(__CYGWIN__) LinkLibraryVectorType LinkLibrariesForVS6; - bool LinkLibrariesForVS6Analyzed; #endif - std::vector LinkDirectories; - std::set LinkDirectoriesEmmitted; + cmMakefile* Makefile; + cmTargetInternalPointer Internal; + TargetType TargetTypeValue; bool HaveInstallRule; - std::string InstallPath; - std::string RuntimeInstallPath; - mutable std::string ExportMacro; - std::set Utilities; - std::map UtilityBacktraces; bool RecordDependencies; - mutable cmPropertyMap Properties; - LinkLibraryVectorType OriginalLinkLibraries; bool DLLPlatform; bool IsAndroid; bool IsApple; bool IsImportedTarget; + bool BuildInterfaceIncludesAppended; mutable bool DebugIncludesDone; - mutable std::map DebugCompatiblePropertiesDone; mutable bool DebugCompileOptionsDone; mutable bool DebugCompileDefinitionsDone; mutable bool DebugSourcesDone; mutable bool DebugCompileFeaturesDone; - mutable std::set LinkImplicitNullProperties; - mutable std::map MaxLanguageStandards; - bool BuildInterfaceIncludesAppended; + mutable bool LinkImplementationLanguageIsContextDependent; +#if defined(_WIN32) && !defined(__CYGWIN__) + bool LinkLibrariesForVS6Analyzed; +#endif // Cache target output paths for each configuration. struct OutputInfo; @@ -825,16 +827,10 @@ private: void ProcessSourceExpression(std::string const& expr); - // The cmMakefile instance that owns this target. This should - // always be set. - cmMakefile* Makefile; - cmPolicies::PolicyMap PolicyMap; - // Internal representation details. friend class cmTargetInternals; friend class cmGeneratorTarget; friend class cmTargetTraceDependencies; - cmTargetInternalPointer Internal; void ComputeVersionedName(std::string& vName, std::string const& prefix, @@ -842,8 +838,6 @@ private: std::string const& suffix, std::string const& name, const char* version) const; - - mutable bool LinkImplementationLanguageIsContextDependent; }; #ifdef CMAKE_BUILD_WITH_CMAKE http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0202752dc07a9b34620f023a8acd572614d2f0cd commit 0202752dc07a9b34620f023a8acd572614d2f0cd Author: Stephen Kelly AuthorDate: Sat May 2 14:50:02 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:46 2015 +0200 cmTarget: Replace PolicyStatus members with PolicyMap. sizeof(cmTarget) goes from 856 to 840 with GNU libstdc++ 5.1. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 5e866ef..daf5282 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -239,13 +239,6 @@ cmTargetInternals::~cmTargetInternals() //---------------------------------------------------------------------------- cmTarget::cmTarget() { -#define INITIALIZE_TARGET_POLICY_MEMBER(POLICY) \ - this->PolicyStatus ## POLICY = cmPolicies::WARN; - - CM_FOR_EACH_TARGET_POLICY(INITIALIZE_TARGET_POLICY_MEMBER) - -#undef INITIALIZE_TARGET_POLICY_MEMBER - this->Makefile = 0; #if defined(_WIN32) && !defined(__CYGWIN__) this->LinkLibrariesForVS6Analyzed = false; @@ -440,20 +433,14 @@ void cmTarget::SetMakefile(cmMakefile* mf) } // Record current policies for later use. -#define CAPTURE_TARGET_POLICY(POLICY) \ - this->PolicyStatus ## POLICY = \ - this->Makefile->GetPolicyStatus(cmPolicies::POLICY); - - CM_FOR_EACH_TARGET_POLICY(CAPTURE_TARGET_POLICY) - -#undef CAPTURE_TARGET_POLICY + this->Makefile->RecordPolicies(this->PolicyMap); if (this->TargetTypeValue == INTERFACE_LIBRARY) { // This policy is checked in a few conditions. The properties relevant // to the policy are always ignored for INTERFACE_LIBRARY targets, // so ensure that the conditions don't lead to nonsense. - this->PolicyStatusCMP0022 = cmPolicies::NEW; + this->PolicyMap.Set(cmPolicies::CMP0022, cmPolicies::NEW); } if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY) diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 0cbb575..cade7ab 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -144,7 +144,7 @@ public: #define DECLARE_TARGET_POLICY(POLICY) \ cmPolicies::PolicyStatus GetPolicyStatus ## POLICY () const \ - { return this->PolicyStatus ## POLICY; } + { return this->PolicyMap.Get(cmPolicies::POLICY); } CM_FOR_EACH_TARGET_POLICY(DECLARE_TARGET_POLICY) @@ -828,14 +828,7 @@ private: // The cmMakefile instance that owns this target. This should // always be set. cmMakefile* Makefile; - - // Policy status recorded when target was created. -#define TARGET_POLICY_MEMBER(POLICY) \ - cmPolicies::PolicyStatus PolicyStatus ## POLICY; - - CM_FOR_EACH_TARGET_POLICY(TARGET_POLICY_MEMBER) - -#undef TARGET_POLICY_MEMBER + cmPolicies::PolicyMap PolicyMap; // Internal representation details. friend class cmTargetInternals; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3389e78806c07cdabadf556c19fda84379644fca commit 3389e78806c07cdabadf556c19fda84379644fca Author: Stephen Kelly AuthorDate: Sat Jun 6 09:42:09 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmTarget: Use method abstraction for policy status. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index d1399ef..5e866ef 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -5925,8 +5925,8 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( // libraries and executables that export symbols. const char* explicitLibraries = 0; std::string linkIfaceProp; - if(thisTarget->PolicyStatusCMP0022 != cmPolicies::OLD && - thisTarget->PolicyStatusCMP0022 != cmPolicies::WARN) + if(thisTarget->GetPolicyStatusCMP0022() != cmPolicies::OLD && + thisTarget->GetPolicyStatusCMP0022() != cmPolicies::WARN) { // CMP0022 NEW behavior is to use INTERFACE_LINK_LIBRARIES. linkIfaceProp = "INTERFACE_LINK_LIBRARIES"; @@ -5952,7 +5952,7 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( } if(explicitLibraries && - thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN && + thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN && !this->PolicyWarnedCMP0022) { // Compare the explicitly set old link interface properties to the @@ -5996,8 +5996,8 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( iface.Libraries, iface.HadHeadSensitiveCondition); } - else if (thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN - || thisTarget->PolicyStatusCMP0022 == cmPolicies::OLD) + else if (thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN + || thisTarget->GetPolicyStatusCMP0022() == cmPolicies::OLD) // If CMP0022 is NEW then the plain tll signature sets the // INTERFACE_LINK_LIBRARIES, so if we get here then the project // cleared the property explicitly and we should not fall back @@ -6008,7 +6008,7 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( thisTarget->GetLinkImplementationLibrariesInternal(config, headTarget); iface.Libraries.insert(iface.Libraries.end(), impl->Libraries.begin(), impl->Libraries.end()); - if(thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN && + if(thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN && !this->PolicyWarnedCMP0022 && !usage_requirements_only) { // Compare the link implementation fallback link interface to the @@ -6100,8 +6100,8 @@ void cmTargetInternals::ComputeLinkInterface(cmTarget const* thisTarget, } } } - else if (thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN - || thisTarget->PolicyStatusCMP0022 == cmPolicies::OLD) + else if (thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN + || thisTarget->GetPolicyStatusCMP0022() == cmPolicies::OLD) { // The link implementation is the default link interface. cmTarget::LinkImplementationLibraries const* @@ -6421,7 +6421,7 @@ std::string cmTarget::CheckCMP0004(std::string const& item) const if(lib != item) { cmake* cm = this->Makefile->GetCMakeInstance(); - switch(this->PolicyStatusCMP0004) + switch(this->GetPolicyStatusCMP0004()) { case cmPolicies::WARN: { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0891463e49665a6ef5b325585bb39016cbb6326e commit 0891463e49665a6ef5b325585bb39016cbb6326e Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:30 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmPropertyMap: Remove chaining logic. The chaining logic doesn't belong to the container, and the CMakeInstance pointer doesn't need to be in cmPropertyMap. Size goes from 56 to 48 bytes with GNU libstdc++-5.1. diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index bd8c10c..0d24ed5 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -526,11 +526,9 @@ void * CCONV cmCreateSourceFile(void) return (void*)new cmCPluginAPISourceFile; } -void * CCONV cmCreateNewSourceFile(void *arg) +void * CCONV cmCreateNewSourceFile(void *) { - cmMakefile *mf = static_cast(arg); cmCPluginAPISourceFile *sf = new cmCPluginAPISourceFile; - sf->Properties.SetCMakeInstance(mf->GetCMakeInstance()); return (void*)sf; } @@ -630,11 +628,7 @@ const char * CCONV cmSourceFileGetProperty(void *arg,const char *prop) { return sf->FullPath.c_str(); } - bool chain = false; - // Ignore chain because old code will not expect it and it is a - // pain to implement here anyway. - return sf->Properties.GetPropertyValue(prop, cmProperty::SOURCE_FILE, - chain); + return sf->Properties.GetPropertyValue(prop); } } diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 6af14f2..54209c5 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -161,7 +161,6 @@ bool cmCacheManager::LoadCache(const std::string& path, // Format is key:type=value std::string helpString; CacheEntry e; - e.Properties.SetCMakeInstance(this->CMakeInstance); cmSystemTools::GetLineFromStream(fin, buffer); realbuffer = buffer.c_str(); while(*realbuffer != '0' && @@ -323,7 +322,6 @@ bool cmCacheManager::ReadPropertyEntry(std::string const& entryKey, { // Create an entry and store the property. CacheEntry& ne = this->Cache[key]; - ne.Properties.SetCMakeInstance(this->CMakeInstance); ne.Type = cmState::UNINITIALIZED; ne.SetProperty(*p, e.Value.c_str()); } @@ -645,7 +643,6 @@ void cmCacheManager::AddCacheEntry(const std::string& key, cmState::CacheEntryType type) { CacheEntry& e = this->Cache[key]; - e.Properties.SetCMakeInstance(this->CMakeInstance); if ( value ) { e.Value = value; @@ -744,9 +741,7 @@ cmCacheManager::CacheEntry::GetProperty(const std::string& prop) const { return this->Value.c_str(); } - bool c = false; - return - this->Properties.GetPropertyValue(prop, cmProperty::CACHE, c); + return this->Properties.GetPropertyValue(prop); } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 481de19..bd949bb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2438,7 +2438,6 @@ cmTarget cmGlobalGenerator::CreateGlobalTarget( { // Package cmTarget target; - target.GetProperties().SetCMakeInstance(this->CMakeInstance); target.SetType(cmTarget::GLOBAL_TARGET, name); target.SetProperty("EXCLUDE_FROM_ALL","TRUE"); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9c0d4b1..bc308f1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -213,8 +213,6 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) this->AddSourceGroup("Object Files", "\\.(lo|o|obj)$"); #endif - this->Properties.SetCMakeInstance(this->GetCMakeInstance()); - { const char* dir = this->GetCMakeInstance()->GetHomeDirectory(); this->AddDefinition("CMAKE_SOURCE_DIR", dir); @@ -4134,11 +4132,13 @@ void cmMakefile::AppendProperty(const std::string& prop, const char *cmMakefile::GetProperty(const std::string& prop) const { - return this->GetProperty(prop, cmProperty::DIRECTORY); + const bool chain = this->GetState()-> + IsPropertyChained(prop, cmProperty::DIRECTORY); + return this->GetProperty(prop, chain); } const char *cmMakefile::GetProperty(const std::string& prop, - cmProperty::ScopeType scope) const + bool chain) const { // watch for specific properties static std::string output; @@ -4242,15 +4242,13 @@ const char *cmMakefile::GetProperty(const std::string& prop, return output.c_str(); } - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, scope, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal && chain) { if(this->LocalGenerator->GetParent()) { return this->LocalGenerator->GetParent()->GetMakefile()-> - GetProperty(prop, scope); + GetProperty(prop, chain); } return this->GetState()->GetGlobalProperty(prop); } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index def0c23..7518631 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -717,8 +717,7 @@ public: void AppendProperty(const std::string& prop, const char *value, bool asString=false); const char *GetProperty(const std::string& prop) const; - const char *GetProperty(const std::string& prop, - cmProperty::ScopeType scope) const; + const char *GetProperty(const std::string& prop, bool chain) const; bool GetPropertyAsBool(const std::string& prop) const; const char* GetFeature(const std::string& feature, diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index de2cd05..ef09dbc 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -57,22 +57,13 @@ void cmPropertyMap::AppendProperty(const std::string& name, const char* value, } const char *cmPropertyMap -::GetPropertyValue(const std::string& name, - cmProperty::ScopeType scope, - bool &chain) const +::GetPropertyValue(const std::string& name) const { - chain = false; assert(!name.empty()); cmPropertyMap::const_iterator it = this->find(name); if (it == this->end()) { - // should we chain up? - if (this->CMakeInstance) - { - chain = this->CMakeInstance->GetState()-> - IsPropertyChained(name,scope); - } return 0; } return it->second.GetValue(); diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 722732b..7410239 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -26,16 +26,7 @@ public: void AppendProperty(const std::string& name, const char* value, bool asString=false); - const char *GetPropertyValue(const std::string& name, - cmProperty::ScopeType scope, - bool &chain) const; - - void SetCMakeInstance(cmake *cm) { this->CMakeInstance = cm; } - - cmPropertyMap() { this->CMakeInstance = 0;} - -private: - cmake *CMakeInstance; + const char *GetPropertyValue(const std::string& name) const; }; #endif diff --git a/Source/cmSetTestsPropertiesCommand.cxx b/Source/cmSetTestsPropertiesCommand.cxx index e9cfacc..53dc5a8 100644 --- a/Source/cmSetTestsPropertiesCommand.cxx +++ b/Source/cmSetTestsPropertiesCommand.cxx @@ -85,8 +85,10 @@ bool cmSetTestsPropertiesCommand unsigned int k; for (k = 0; k < propertyPairs.size(); k = k + 2) { - test->SetProperty(propertyPairs[k], - propertyPairs[k+1].c_str()); + if (!propertyPairs[k].empty()) + { + test->SetProperty(propertyPairs[k], propertyPairs[k+1].c_str()); + } } } else diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index df511d8..86f0a7a 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -22,7 +22,6 @@ cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name): Location(mf, name) { this->CustomCommand = 0; - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); this->FindFullPathFailed = false; this->IsUiFile = (".ui" == cmSystemTools::GetFilenameLastExtension(this->Location.GetName())); @@ -361,13 +360,16 @@ const char* cmSourceFile::GetProperty(const std::string& prop) const } } - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, cmProperty::SOURCE_FILE, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal) { cmMakefile const* mf = this->Location.GetMakefile(); - return mf->GetProperty(prop,cmProperty::SOURCE_FILE); + const bool chain = mf->GetState()-> + IsPropertyChained(prop, cmProperty::SOURCE_FILE); + if (chain) + { + return mf->GetProperty(prop, chain); + } } return retVal; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 7bfeda1..25b4966 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -482,9 +482,7 @@ const char *cmState::GetGlobalProperty(const std::string& prop) return FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT) + 1; } #undef STRING_LIST_ELEMENT - bool dummy = false; - return this->GlobalProperties.GetPropertyValue(prop, cmProperty::GLOBAL, - dummy); + return this->GlobalProperties.GetPropertyValue(prop); } bool cmState::GetGlobalPropertyAsBool(const std::string& prop) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 8731632..d1399ef 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -286,9 +286,6 @@ void cmTarget::SetMakefile(cmMakefile* mf) // Set our makefile. this->Makefile = mf; - // set the cmake instance of the properties - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); - // Check whether this is a DLL platform. this->DLLPlatform = (this->Makefile->IsOn("WIN32") || this->Makefile->IsOn("CYGWIN") || @@ -3167,12 +3164,15 @@ const char *cmTarget::GetProperty(const std::string& prop, } } - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, cmProperty::TARGET, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal) { - return this->Makefile->GetProperty(prop, cmProperty::TARGET); + const bool chain = this->GetMakefile()->GetState()-> + IsPropertyChained(prop, cmProperty::TARGET); + if (chain) + { + return this->Makefile->GetProperty(prop, chain); + } } return retVal; } diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index c606859..6fcd0dc 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -21,7 +21,6 @@ cmTest::cmTest(cmMakefile* mf) { this->Makefile = mf; this->OldStyle = true; - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); } //---------------------------------------------------------------------------- @@ -50,12 +49,15 @@ void cmTest::SetCommand(std::vector const& command) //---------------------------------------------------------------------------- const char *cmTest::GetProperty(const std::string& prop) const { - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, cmProperty::TEST, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal) { - return this->Makefile->GetProperty(prop,cmProperty::TEST); + const bool chain = this->Makefile->GetState()-> + IsPropertyChained(prop, cmProperty::TEST); + if (chain) + { + return this->Makefile->GetProperty(prop, chain); + } } return retVal; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4465af8594615f2b913d1ee92f571da27319994a commit 4465af8594615f2b913d1ee92f571da27319994a Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:20 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmPropertyMap: Require a non-empty name parameter. The cmGetPropertyCommand already checks for this. diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index 76803c1..6717035 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -52,9 +52,11 @@ bool cmGetCMakePropertyCommand } else { - const char *prop = - this->Makefile->GetState() - ->GetGlobalProperty(args[1]); + const char *prop = 0; + if (!args[1].empty()) + { + prop = this->Makefile->GetState()->GetGlobalProperty(args[1]); + } if (prop) { output = prop; diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index 4fe3318..228e53c 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -84,7 +84,11 @@ bool cmGetDirectoryPropertyCommand return true; } - const char *prop = dir->GetProperty(*i); + const char *prop = 0; + if (!i->empty()) + { + prop = dir->GetProperty(*i); + } if (prop) { this->Makefile->AddDefinition(variable, prop); diff --git a/Source/cmGetSourceFilePropertyCommand.cxx b/Source/cmGetSourceFilePropertyCommand.cxx index 7667a85..46daa34 100644 --- a/Source/cmGetSourceFilePropertyCommand.cxx +++ b/Source/cmGetSourceFilePropertyCommand.cxx @@ -38,7 +38,11 @@ bool cmGetSourceFilePropertyCommand this->Makefile->AddDefinition(var, sf->GetLanguage().c_str()); return true; } - const char *prop = sf->GetPropertyForUser(args[2]); + const char *prop = 0; + if (!args[2].empty()) + { + prop = sf->GetPropertyForUser(args[2]); + } if (prop) { this->Makefile->AddDefinition(var, prop); diff --git a/Source/cmGetTargetPropertyCommand.cxx b/Source/cmGetTargetPropertyCommand.cxx index 315e851..ca40bd0 100644 --- a/Source/cmGetTargetPropertyCommand.cxx +++ b/Source/cmGetTargetPropertyCommand.cxx @@ -40,7 +40,11 @@ bool cmGetTargetPropertyCommand else if(cmTarget* tgt = this->Makefile->FindTargetToUse(targetName)) { cmTarget& target = *tgt; - const char* prop_cstr = target.GetProperty(args[2], this->Makefile); + const char* prop_cstr = 0; + if (!args[2].empty()) + { + prop_cstr = target.GetProperty(args[2], this->Makefile); + } if(prop_cstr) { prop = prop_cstr; diff --git a/Source/cmGetTestPropertyCommand.cxx b/Source/cmGetTestPropertyCommand.cxx index b3df4c3..bf34589 100644 --- a/Source/cmGetTestPropertyCommand.cxx +++ b/Source/cmGetTestPropertyCommand.cxx @@ -29,7 +29,11 @@ bool cmGetTestPropertyCommand cmTest *test = this->Makefile->GetTest(testName); if (test) { - const char *prop = test->GetProperty(args[1]); + const char *prop = 0; + if (!args[1].empty()) + { + prop = test->GetProperty(args[1]); + } if (prop) { this->Makefile->AddDefinition(var, prop); diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index d1402c8..de2cd05 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -14,6 +14,8 @@ #include "cmake.h" #include "cmState.h" +#include + cmProperty *cmPropertyMap::GetOrCreateProperty(const std::string& name) { cmPropertyMap::iterator it = this->find(name); @@ -60,10 +62,7 @@ const char *cmPropertyMap bool &chain) const { chain = false; - if (name.empty()) - { - return 0; - } + assert(!name.empty()); cmPropertyMap::const_iterator it = this->find(name); if (it == this->end()) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3c383a3d45b67d74b365ee51137ed7da3a3a3e38 commit 3c383a3d45b67d74b365ee51137ed7da3a3a3e38 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:15 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmPropertyMap: Remove scope parameter from API where not used. diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index c55ea35..bd8c10c 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -662,7 +662,7 @@ void CCONV cmSourceFileSetProperty(void *arg,const char *prop, else if(prop) { if(!value) { value = "NOTFOUND"; } - sf->Properties.SetProperty(prop, value, cmProperty::SOURCE_FILE); + sf->Properties.SetProperty(prop, value); } } @@ -801,8 +801,7 @@ void CCONV cmSourceFileSetName2(void *arg, const char* name, const char* dir, // Implement the old SetName method code here. if(headerFileOnly) { - sf->Properties.SetProperty("HEADER_FILE_ONLY", "1", - cmProperty::SOURCE_FILE); + sf->Properties.SetProperty("HEADER_FILE_ONLY", "1"); } sf->SourceName = name; std::string fname = sf->SourceName; diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 108208e..6af14f2 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -763,7 +763,7 @@ void cmCacheManager::CacheEntry::SetProperty(const std::string& prop, } else { - this->Properties.SetProperty(prop, value, cmProperty::CACHE); + this->Properties.SetProperty(prop, value); } } @@ -789,7 +789,7 @@ void cmCacheManager::CacheEntry::AppendProperty(const std::string& prop, } else { - this->Properties.AppendProperty(prop, value, cmProperty::CACHE, asString); + this->Properties.AppendProperty(prop, value, asString); } } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3ac77e9..9c0d4b1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4089,7 +4089,7 @@ void cmMakefile::SetProperty(const std::string& prop, const char* value) } } - this->Properties.SetProperty(prop,value,cmProperty::DIRECTORY); + this->Properties.SetProperty(prop, value); } void cmMakefile::AppendProperty(const std::string& prop, @@ -4129,7 +4129,7 @@ void cmMakefile::AppendProperty(const std::string& prop, return; } - this->Properties.AppendProperty(prop,value,cmProperty::DIRECTORY,asString); + this->Properties.AppendProperty(prop, value, asString); } const char *cmMakefile::GetProperty(const std::string& prop) const diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 03124dc..d1402c8 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -29,29 +29,26 @@ cmProperty *cmPropertyMap::GetOrCreateProperty(const std::string& name) return prop; } -void cmPropertyMap::SetProperty(const std::string& name, const char *value, - cmProperty::ScopeType scope) +void cmPropertyMap::SetProperty(const std::string& name, const char *value) { if(!value) { this->erase(name); return; } - (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); prop->Set(value); } void cmPropertyMap::AppendProperty(const std::string& name, const char* value, - cmProperty::ScopeType scope, bool asString) + bool asString) { // Skip if nothing to append. if(!value || !*value) { return; } - (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); prop->Append(value,asString); diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 02d4235..722732b 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -21,11 +21,10 @@ class cmPropertyMap : public std::map public: cmProperty *GetOrCreateProperty(const std::string& name); - void SetProperty(const std::string& name, const char *value, - cmProperty::ScopeType scope); + void SetProperty(const std::string& name, const char *value); void AppendProperty(const std::string& name, const char* value, - cmProperty::ScopeType scope, bool asString=false); + bool asString=false); const char *GetPropertyValue(const std::string& name, cmProperty::ScopeType scope, diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 724ab39..df511d8 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -299,7 +299,7 @@ bool cmSourceFile::Matches(cmSourceFileLocation const& loc) //---------------------------------------------------------------------------- void cmSourceFile::SetProperty(const std::string& prop, const char* value) { - this->Properties.SetProperty(prop, value, cmProperty::SOURCE_FILE); + this->Properties.SetProperty(prop, value); if (this->IsUiFile) { @@ -315,8 +315,7 @@ void cmSourceFile::SetProperty(const std::string& prop, const char* value) void cmSourceFile::AppendProperty(const std::string& prop, const char* value, bool asString) { - this->Properties.AppendProperty(prop, value, cmProperty::SOURCE_FILE, - asString); + this->Properties.AppendProperty(prop, value, asString); } //---------------------------------------------------------------------------- diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 15a4638..7bfeda1 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -438,14 +438,13 @@ void cmState::RemoveUserDefinedCommands() void cmState::SetGlobalProperty(const std::string& prop, const char* value) { - this->GlobalProperties.SetProperty(prop, value, cmProperty::GLOBAL); + this->GlobalProperties.SetProperty(prop, value); } void cmState::AppendGlobalProperty(const std::string& prop, const char* value, bool asString) { - this->GlobalProperties.AppendProperty(prop, value, - cmProperty::GLOBAL, asString); + this->GlobalProperties.AppendProperty(prop, value, asString); } const char *cmState::GetGlobalProperty(const std::string& prop) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 4436966..8731632 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -1772,7 +1772,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) } else { - this->Properties.SetProperty(prop, value, cmProperty::TARGET); + this->Properties.SetProperty(prop, value); this->MaybeInvalidatePropertyCache(prop); } } @@ -1857,7 +1857,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value, } else { - this->Properties.AppendProperty(prop, value, cmProperty::TARGET, asString); + this->Properties.AppendProperty(prop, value, asString); this->MaybeInvalidatePropertyCache(prop); } } @@ -2938,8 +2938,7 @@ const char *cmTarget::GetProperty(const std::string& prop, // cannot take into account the per-configuration name of the // target because the configuration type may not be known at // CMake time. - this->Properties.SetProperty(propLOCATION, this->GetLocationForBuild(), - cmProperty::TARGET); + this->Properties.SetProperty(propLOCATION, this->GetLocationForBuild()); } // Support "LOCATION_". @@ -2950,9 +2949,7 @@ const char *cmTarget::GetProperty(const std::string& prop, return 0; } const char* configName = prop.c_str() + 9; - this->Properties.SetProperty(prop, - this->GetLocation(configName), - cmProperty::TARGET); + this->Properties.SetProperty(prop, this->GetLocation(configName)); } // Support "_LOCATION". else if(cmHasLiteralSuffix(prop, "_LOCATION")) @@ -2964,9 +2961,7 @@ const char *cmTarget::GetProperty(const std::string& prop, { return 0; } - this->Properties.SetProperty(prop, - this->GetLocation(configName), - cmProperty::TARGET); + this->Properties.SetProperty(prop, this->GetLocation(configName)); } } } @@ -3168,8 +3163,7 @@ const char *cmTarget::GetProperty(const std::string& prop, } } } - this->Properties.SetProperty("SOURCES", ss.str().c_str(), - cmProperty::TARGET); + this->Properties.SetProperty("SOURCES", ss.str().c_str()); } } diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index ff5d411..c606859 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -69,12 +69,12 @@ bool cmTest::GetPropertyAsBool(const std::string& prop) const //---------------------------------------------------------------------------- void cmTest::SetProperty(const std::string& prop, const char* value) { - this->Properties.SetProperty(prop, value, cmProperty::TEST); + this->Properties.SetProperty(prop, value); } //---------------------------------------------------------------------------- void cmTest::AppendProperty(const std::string& prop, const char* value, bool asString) { - this->Properties.AppendProperty(prop, value, cmProperty::TEST, asString); + this->Properties.AppendProperty(prop, value, asString); } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=29a8121ffbc39629b15b5210b30ab9851800f49b commit 29a8121ffbc39629b15b5210b30ab9851800f49b Author: Stephen Kelly AuthorDate: Sat Jun 6 09:46:38 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 Constify property definition API. diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx index 250bd35..36b6c64 100644 --- a/Source/cmGetPropertyCommand.cxx +++ b/Source/cmGetPropertyCommand.cxx @@ -142,8 +142,7 @@ bool cmGetPropertyCommand { // Lookup brief documentation. std::string output; - if(cmPropertyDefinition* def = - this->Makefile->GetState()-> + if(cmPropertyDefinition const* def = this->Makefile->GetState()-> GetPropertyDefinition(this->PropertyName, scope)) { output = def->GetShortDescription(); @@ -158,8 +157,7 @@ bool cmGetPropertyCommand { // Lookup full documentation. std::string output; - if(cmPropertyDefinition* def = - this->Makefile->GetState()-> + if(cmPropertyDefinition const* def = this->Makefile->GetState()-> GetPropertyDefinition(this->PropertyName, scope)) { output = def->GetFullDescription(); diff --git a/Source/cmPropertyDefinitionMap.cxx b/Source/cmPropertyDefinitionMap.cxx index 3875318..776fad1 100644 --- a/Source/cmPropertyDefinitionMap.cxx +++ b/Source/cmPropertyDefinitionMap.cxx @@ -29,9 +29,9 @@ void cmPropertyDefinitionMap } } -bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) +bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) const { - cmPropertyDefinitionMap::iterator it = this->find(name); + cmPropertyDefinitionMap::const_iterator it = this->find(name); if (it == this->end()) { return false; @@ -40,9 +40,9 @@ bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) return true; } -bool cmPropertyDefinitionMap::IsPropertyChained(const std::string& name) +bool cmPropertyDefinitionMap::IsPropertyChained(const std::string& name) const { - cmPropertyDefinitionMap::iterator it = this->find(name); + cmPropertyDefinitionMap::const_iterator it = this->find(name); if (it == this->end()) { return false; diff --git a/Source/cmPropertyDefinitionMap.h b/Source/cmPropertyDefinitionMap.h index 00c7328..f95c721 100644 --- a/Source/cmPropertyDefinitionMap.h +++ b/Source/cmPropertyDefinitionMap.h @@ -27,10 +27,10 @@ public: bool chain); // has a named property been defined - bool IsPropertyDefined(const std::string& name); + bool IsPropertyDefined(const std::string& name) const; // is a named property set to chain - bool IsPropertyChained(const std::string& name); + bool IsPropertyChained(const std::string& name) const; }; #endif diff --git a/Source/cmState.cxx b/Source/cmState.cxx index c6fb299..15a4638 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -256,27 +256,41 @@ void cmState::DefineProperty(const std::string& name, chained); } -cmPropertyDefinition *cmState +cmPropertyDefinition const* cmState ::GetPropertyDefinition(const std::string& name, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope) const { if (this->IsPropertyDefined(name,scope)) { - return &(this->PropertyDefinitions[scope][name]); + cmPropertyDefinitionMap const& defs = + this->PropertyDefinitions.find(scope)->second; + return &defs.find(name)->second; } return 0; } bool cmState::IsPropertyDefined(const std::string& name, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope) const { - return this->PropertyDefinitions[scope].IsPropertyDefined(name); + std::map::const_iterator it + = this->PropertyDefinitions.find(scope); + if (it == this->PropertyDefinitions.end()) + { + return false; + } + return it->second.IsPropertyDefined(name); } bool cmState::IsPropertyChained(const std::string& name, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope) const { - return this->PropertyDefinitions[scope].IsPropertyChained(name); + std::map::const_iterator it + = this->PropertyDefinitions.find(scope); + if (it == this->PropertyDefinitions.end()) + { + return false; + } + return it->second.IsPropertyChained(name); } void cmState::SetLanguageEnabled(std::string const& l) diff --git a/Source/cmState.h b/Source/cmState.h index 60b024f..b06f77c 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -102,12 +102,14 @@ public: bool chain = false); // get property definition - cmPropertyDefinition *GetPropertyDefinition - (const std::string& name, cmProperty::ScopeType scope); + cmPropertyDefinition const* GetPropertyDefinition + (const std::string& name, cmProperty::ScopeType scope) const; // Is a property defined? - bool IsPropertyDefined(const std::string& name, cmProperty::ScopeType scope); - bool IsPropertyChained(const std::string& name, cmProperty::ScopeType scope); + bool IsPropertyDefined(const std::string& name, + cmProperty::ScopeType scope) const; + bool IsPropertyChained(const std::string& name, + cmProperty::ScopeType scope) const; void SetLanguageEnabled(std::string const& l); bool GetLanguageEnabled(std::string const& l) const; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a6101179de70dfffbe4a9f8ca37a7b5114e3fe2d commit a6101179de70dfffbe4a9f8ca37a7b5114e3fe2d Author: Stephen Kelly AuthorDate: Sat Jun 6 09:46:26 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmProperty: Remove needless Name member. Size goes from 72 to 40 bytes with GNU libstdc++-5.1. diff --git a/Source/cmProperty.cxx b/Source/cmProperty.cxx index 40976db..ef57068 100644 --- a/Source/cmProperty.cxx +++ b/Source/cmProperty.cxx @@ -12,17 +12,14 @@ #include "cmProperty.h" #include "cmSystemTools.h" -void cmProperty::Set(const std::string& name, const char *value) +void cmProperty::Set(const char *value) { - this->Name = name; this->Value = value; this->ValueHasBeenSet = true; } -void cmProperty::Append(const std::string& name, const char *value, - bool asString) +void cmProperty::Append(const char *value, bool asString) { - this->Name = name; if(!this->Value.empty() && *value && !asString) { this->Value += ";"; diff --git a/Source/cmProperty.h b/Source/cmProperty.h index 659c4c3..e026372 100644 --- a/Source/cmProperty.h +++ b/Source/cmProperty.h @@ -21,11 +21,10 @@ public: TEST, VARIABLE, CACHED_VARIABLE, INSTALL }; // set this property - void Set(const std::string& name, const char *value); + void Set(const char *value); // append to this property - void Append(const std::string& name, const char *value, - bool asString = false); + void Append(const char *value, bool asString = false); // get the value const char *GetValue() const; @@ -34,7 +33,6 @@ public: cmProperty() { this->ValueHasBeenSet = false; } protected: - std::string Name; std::string Value; bool ValueHasBeenSet; }; diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 070f6f1..03124dc 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -40,7 +40,7 @@ void cmPropertyMap::SetProperty(const std::string& name, const char *value, (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); - prop->Set(name,value); + prop->Set(value); } void cmPropertyMap::AppendProperty(const std::string& name, const char* value, @@ -54,7 +54,7 @@ void cmPropertyMap::AppendProperty(const std::string& name, const char* value, (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); - prop->Append(name,value,asString); + prop->Append(value,asString); } const char *cmPropertyMap http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3bae6910db6787463cee904bcb62aaca533238a1 commit 3bae6910db6787463cee904bcb62aaca533238a1 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:05 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmPolicies: Store all statuses in a single bitset. Currently there are an optimal number of policies (64) such that there are no wasted bits. When another policy is added, the cmPolicyMap will grow from 40 bytes to 80, and occupy 45. By storing all in a single bitset, we stay under the cache line size of 64 bytes until there are 512 policies in a range. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 3498adc..586ec87 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -348,19 +348,19 @@ cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const { PolicyStatus status = cmPolicies::WARN; - if (this->OLD[id]) + if (this->Status[(POLICY_STATUS_COUNT * id) + OLD]) { status = cmPolicies::OLD; } - else if (this->NEW[id]) + else if (this->Status[(POLICY_STATUS_COUNT * id) + NEW]) { status = cmPolicies::NEW; } - else if (this->REQUIRED_ALWAYS[id]) + else if (this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS]) { status = cmPolicies::REQUIRED_ALWAYS; } - else if (this->REQUIRED_IF_USED[id]) + else if (this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED]) { status = cmPolicies::REQUIRED_IF_USED; } @@ -370,21 +370,23 @@ cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status) { - this->OLD[id] = (status == cmPolicies::OLD); - this->WARN[id] = (status == cmPolicies::WARN); - this->NEW[id] = (status == cmPolicies::NEW); - this->REQUIRED_ALWAYS[id] = (status == cmPolicies::REQUIRED_ALWAYS); - this->REQUIRED_IF_USED[id] = (status == cmPolicies::REQUIRED_IF_USED); + this->Status[(POLICY_STATUS_COUNT * id) + OLD] = (status == OLD); + this->Status[(POLICY_STATUS_COUNT * id) + WARN] = (status == WARN); + this->Status[(POLICY_STATUS_COUNT * id) + NEW] = (status == NEW); + this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS] = (status == REQUIRED_ALWAYS); + this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED] = (status == REQUIRED_IF_USED); } bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const { - return this->OLD[id] || this->WARN[id] || this->NEW[id] - || this->REQUIRED_ALWAYS[id] || this->REQUIRED_IF_USED[id]; + return this->Status[(POLICY_STATUS_COUNT * id) + OLD] + || this->Status[(POLICY_STATUS_COUNT * id) + WARN] + || this->Status[(POLICY_STATUS_COUNT * id) + NEW] + || this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS] + || this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED]; } bool cmPolicies::PolicyMap::IsEmpty() const { - return this->OLD.none() && this->WARN.none() && this->NEW.none() - && this->REQUIRED_ALWAYS.none() && this->REQUIRED_IF_USED.none(); + return this->Status.none(); } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 8c72dfe..8a3c27d 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -244,6 +244,7 @@ public: REQUIRED_IF_USED, REQUIRED_ALWAYS ///< Issue an error unless user sets policy status to NEW. }; +#define POLICY_STATUS_COUNT 5 /// Policy identifiers enum PolicyID @@ -287,11 +288,7 @@ public: bool IsEmpty() const; private: - std::bitset OLD; - std::bitset WARN; - std::bitset NEW; - std::bitset REQUIRED_IF_USED; - std::bitset REQUIRED_ALWAYS; + std::bitset Status; }; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44a8115797cc3f804d653928d71b126b39e29210 commit 44a8115797cc3f804d653928d71b126b39e29210 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:40:58 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmPolicies: Replace UNDEFINED bitset with WARN bitset. Might as well use the existing concept. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index f8d61db..3498adc 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -343,11 +343,6 @@ cmPolicies::GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id) return e.str(); } -cmPolicies::PolicyMap::PolicyMap() -{ - this->UNDEFINED.set(); -} - cmPolicies::PolicyStatus cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const { @@ -375,8 +370,8 @@ cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status) { - this->UNDEFINED.reset(id); this->OLD[id] = (status == cmPolicies::OLD); + this->WARN[id] = (status == cmPolicies::WARN); this->NEW[id] = (status == cmPolicies::NEW); this->REQUIRED_ALWAYS[id] = (status == cmPolicies::REQUIRED_ALWAYS); this->REQUIRED_IF_USED[id] = (status == cmPolicies::REQUIRED_IF_USED); @@ -384,10 +379,12 @@ void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const { - return !this->UNDEFINED[id]; + return this->OLD[id] || this->WARN[id] || this->NEW[id] + || this->REQUIRED_ALWAYS[id] || this->REQUIRED_IF_USED[id]; } bool cmPolicies::PolicyMap::IsEmpty() const { - return !this->UNDEFINED.none(); + return this->OLD.none() && this->WARN.none() && this->NEW.none() + && this->REQUIRED_ALWAYS.none() && this->REQUIRED_IF_USED.none(); } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 00d857a..8c72dfe 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -281,15 +281,14 @@ public: /** Represent a set of policy values. */ struct PolicyMap { - PolicyMap(); PolicyStatus Get(PolicyID id) const; void Set(PolicyID id, PolicyStatus status); bool IsDefined(PolicyID id) const; bool IsEmpty() const; private: - std::bitset UNDEFINED; std::bitset OLD; + std::bitset WARN; std::bitset NEW; std::bitset REQUIRED_IF_USED; std::bitset REQUIRED_ALWAYS; ----------------------------------------------------------------------- Summary of changes: Source/cmCPluginAPI.cxx | 15 ++----- Source/cmCacheManager.cxx | 11 ++--- Source/cmComputeLinkInformation.h | 35 +++++++-------- Source/cmGetCMakePropertyCommand.cxx | 8 ++-- Source/cmGetDirectoryPropertyCommand.cxx | 6 ++- Source/cmGetPropertyCommand.cxx | 6 +-- Source/cmGetSourceFilePropertyCommand.cxx | 6 ++- Source/cmGetTargetPropertyCommand.cxx | 6 ++- Source/cmGetTestPropertyCommand.cxx | 6 ++- Source/cmGlobalGenerator.cxx | 1 - Source/cmLocalUnixMakefileGenerator3.h | 23 +++------- Source/cmMakefile.cxx | 20 ++++----- Source/cmMakefile.h | 19 ++++---- Source/cmPolicies.cxx | 31 +++++++------ Source/cmPolicies.h | 8 +--- Source/cmProperty.cxx | 7 +-- Source/cmProperty.h | 6 +-- Source/cmPropertyDefinitionMap.cxx | 8 ++-- Source/cmPropertyDefinitionMap.h | 4 +- Source/cmPropertyMap.cxx | 29 ++++-------- Source/cmPropertyMap.h | 16 ++----- Source/cmSetTestsPropertiesCommand.cxx | 6 ++- Source/cmSourceFile.cxx | 19 ++++---- Source/cmSourceFile.h | 4 +- Source/cmState.cxx | 37 ++++++++++------ Source/cmState.h | 10 +++-- Source/cmTarget.cxx | 69 +++++++++++------------------ Source/cmTarget.h | 61 ++++++++++--------------- Source/cmTest.cxx | 18 ++++---- 29 files changed, 218 insertions(+), 277 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 6 09:58:00 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 6 Jun 2015 09:58:00 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-173-g01066f3 Message-ID: <20150606135800.52D19B0232@public.kitware.com> 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 01066f3643a68ed4bb67504f3809f1c82e6e3cea (commit) via f573bd22e4049746b53789fc0502cff8423dbe56 (commit) via ccbc2259137fe61a770bb0b5538a20bf5e00bc8f (commit) via 50a1bd3df13d47167d55fb1584b2c1bc7235884b (commit) from a8dcd688efb9b9fbeb0fdcb57dd0818a1542d621 (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=01066f3643a68ed4bb67504f3809f1c82e6e3cea commit 01066f3643a68ed4bb67504f3809f1c82e6e3cea Merge: a8dcd68 f573bd2 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:57:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 6 09:57:58 2015 -0400 Merge topic 'move-Feature-API' into next f573bd22 cmLocalGenerator: Add Feature API from cmMakefile. ccbc2259 cmGeneratorTarget: Move Feature API from cmTarget. 50a1bd3d CMake Nightly Date Stamp diff --cc Source/cmMakefile.h index 670afa2,a601067..b348c80 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@@ -715,12 -723,10 +715,9 @@@ public void AppendProperty(const std::string& prop, const char *value, bool asString=false); const char *GetProperty(const std::string& prop) const; - const char *GetProperty(const std::string& prop, - cmProperty::ScopeType scope) const; + const char *GetProperty(const std::string& prop, bool chain) const; bool GetPropertyAsBool(const std::string& prop) const; - const char* GetFeature(const std::string& feature, - const std::string& config); - // Get the properties cmPropertyMap &GetProperties() { return this->Properties; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f573bd22e4049746b53789fc0502cff8423dbe56 commit f573bd22e4049746b53789fc0502cff8423dbe56 Author: Stephen Kelly AuthorDate: Sat Jun 6 15:42:31 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 15:44:17 2015 +0200 cmLocalGenerator: Add Feature API from cmMakefile. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 4901820..67d0d54 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -370,7 +370,7 @@ const char* cmGeneratorTarget::GetFeature(const std::string& feature, { return value; } - return this->Makefile->GetFeature(feature, config); + return this->LocalGenerator->GetFeature(feature, config); } //---------------------------------------------------------------------------- diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index da95a4d..899da56 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2573,6 +2573,33 @@ void cmLocalGenerator::AppendFeatureOptions( } //---------------------------------------------------------------------------- +const char* cmLocalGenerator::GetFeature(const std::string& feature, + const std::string& config) +{ + // TODO: Define accumulation policy for features (prepend, append, replace). + // Currently we always replace. + if(!config.empty()) + { + std::string featureConfig = feature; + featureConfig += "_"; + featureConfig += cmSystemTools::UpperCase(config); + if(const char* value = this->Makefile->GetProperty(featureConfig)) + { + return value; + } + } + if(const char* value = this->Makefile->GetProperty(feature)) + { + return value; + } + if(cmLocalGenerator* parent = this->GetParent()) + { + return parent->GetFeature(feature, config); + } + return 0; +} + +//---------------------------------------------------------------------------- std::string cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, const char* default_comment) diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 1359dd6..3e3b4bc 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -179,6 +179,9 @@ public: void AppendFeatureOptions(std::string& flags, const std::string& lang, const char* feature); + const char* GetFeature(const std::string& feature, + const std::string& config); + /** \brief Get absolute path to dependency \a name * * Translate a dependency as given in CMake code to the name to diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b5d976a..806dc52 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4215,33 +4215,6 @@ bool cmMakefile::GetPropertyAsBool(const std::string& prop) const return cmSystemTools::IsOn(this->GetProperty(prop)); } -//---------------------------------------------------------------------------- -const char* cmMakefile::GetFeature(const std::string& feature, - const std::string& config) -{ - // TODO: Define accumulation policy for features (prepend, append, replace). - // Currently we always replace. - if(!config.empty()) - { - std::string featureConfig = feature; - featureConfig += "_"; - featureConfig += cmSystemTools::UpperCase(config); - if(const char* value = this->GetProperty(featureConfig)) - { - return value; - } - } - if(const char* value = this->GetProperty(feature)) - { - return value; - } - if(cmLocalGenerator* parent = this->LocalGenerator->GetParent()) - { - return parent->GetMakefile()->GetFeature(feature, config); - } - return 0; -} - cmTarget* cmMakefile::FindTarget(const std::string& name, bool excludeAliases) const { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 431ed08..a601067 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -727,9 +727,6 @@ public: cmProperty::ScopeType scope) const; bool GetPropertyAsBool(const std::string& prop) const; - const char* GetFeature(const std::string& feature, - const std::string& config); - // Get the properties cmPropertyMap &GetProperties() { return this->Properties; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ccbc2259137fe61a770bb0b5538a20bf5e00bc8f commit ccbc2259137fe61a770bb0b5538a20bf5e00bc8f Author: Stephen Kelly AuthorDate: Sat Jun 6 15:40:26 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 15:44:16 2015 +0200 cmGeneratorTarget: Move Feature API from cmTarget. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index e2b8c45..4901820 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -353,6 +353,34 @@ void cmGeneratorTarget::ComputeObjectMapping() } //---------------------------------------------------------------------------- +const char* cmGeneratorTarget::GetFeature(const std::string& feature, + const std::string& config) const +{ + if(!config.empty()) + { + std::string featureConfig = feature; + featureConfig += "_"; + featureConfig += cmSystemTools::UpperCase(config); + if(const char* value = this->Target->GetProperty(featureConfig)) + { + return value; + } + } + if(const char* value = this->Target->GetProperty(feature)) + { + return value; + } + return this->Makefile->GetFeature(feature, config); +} + +//---------------------------------------------------------------------------- +bool cmGeneratorTarget::GetFeatureAsBool(const std::string& feature, + const std::string& config) const +{ + return cmSystemTools::IsOn(this->GetFeature(feature, config)); +} + +//---------------------------------------------------------------------------- const std::string& cmGeneratorTarget::GetObjectName(cmSourceFile const* file) { this->ComputeObjectMapping(); @@ -983,7 +1011,7 @@ cmGeneratorTarget::GetCreateRuleVariable(std::string const& lang, case cmTarget::STATIC_LIBRARY: { std::string var = "CMAKE_" + lang + "_CREATE_STATIC_LIBRARY"; - if(this->Target->GetFeatureAsBool( + if(this->GetFeatureAsBool( "INTERPROCEDURAL_OPTIMIZATION", config)) { std::string varIPO = var + "_IPO"; diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index c79aa72..a8edcb8 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -67,6 +67,11 @@ public: void ComputeObjectMapping(); + const char* GetFeature(const std::string& feature, + const std::string& config) const; + bool GetFeatureAsBool(const std::string& feature, + const std::string& config) const; + cmTarget* Target; cmMakefile* Makefile; cmLocalGenerator* LocalGenerator; diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index a242046..f2d58ec 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -1023,12 +1023,13 @@ cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild( { return activeConfigs; } + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); // inspect EXCLUDE_FROM_DEFAULT_BUILD[_] properties for(std::vector::const_iterator i = configs.begin(); i != configs.end(); ++i) { const char* propertyValue = - target->GetFeature("EXCLUDE_FROM_DEFAULT_BUILD", i->c_str()); + gt->GetFeature("EXCLUDE_FROM_DEFAULT_BUILD", i->c_str()); if(cmSystemTools::IsOff(propertyValue)) { activeConfigs.insert(*i); diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 9ac9ddb..b2a10a6 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -2086,13 +2086,13 @@ void cmMakefileTargetGenerator::AddModuleDefinitionFlag(std::string& flags) //---------------------------------------------------------------------------- const char* cmMakefileTargetGenerator::GetFeature(const std::string& feature) { - return this->Target->GetFeature(feature, this->ConfigName); + return this->GeneratorTarget->GetFeature(feature, this->ConfigName); } //---------------------------------------------------------------------------- bool cmMakefileTargetGenerator::GetFeatureAsBool(const std::string& feature) { - return this->Target->GetFeatureAsBool(feature, this->ConfigName); + return this->GeneratorTarget->GetFeatureAsBool(feature, this->ConfigName); } //---------------------------------------------------------------------------- diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 879d6b7..b2aef68 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -107,13 +107,14 @@ std::string cmNinjaTargetGenerator::LanguageCompilerRule( // TODO: Picked up from cmMakefileTargetGenerator. Refactor it. const char* cmNinjaTargetGenerator::GetFeature(const std::string& feature) { - return this->Target->GetFeature(feature, this->GetConfigName()); + return this->GeneratorTarget->GetFeature(feature, this->GetConfigName()); } // TODO: Picked up from cmMakefileTargetGenerator. Refactor it. bool cmNinjaTargetGenerator::GetFeatureAsBool(const std::string& feature) { - return this->Target->GetFeatureAsBool(feature, this->GetConfigName()); + return this->GeneratorTarget->GetFeatureAsBool(feature, + this->GetConfigName()); } // TODO: Picked up from cmMakefileTargetGenerator. Refactor it. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 4436966..fd732d7 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -2814,34 +2814,6 @@ void cmTarget::GetTargetVersion(bool soversion, } //---------------------------------------------------------------------------- -const char* cmTarget::GetFeature(const std::string& feature, - const std::string& config) const -{ - if(!config.empty()) - { - std::string featureConfig = feature; - featureConfig += "_"; - featureConfig += cmSystemTools::UpperCase(config); - if(const char* value = this->GetProperty(featureConfig)) - { - return value; - } - } - if(const char* value = this->GetProperty(feature)) - { - return value; - } - return this->Makefile->GetFeature(feature, config); -} - -//---------------------------------------------------------------------------- -bool cmTarget::GetFeatureAsBool(const std::string& feature, - const std::string& config) const -{ - return cmSystemTools::IsOn(this->GetFeature(feature, config)); -} - -//---------------------------------------------------------------------------- bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const { if (this->IsImported()) diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 0cbb575..f20966a 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -260,11 +260,6 @@ public: bool GetPropertyAsBool(const std::string& prop) const; void CheckProperty(const std::string& prop, cmMakefile* context) const; - const char* GetFeature(const std::string& feature, - const std::string& config) const; - bool GetFeatureAsBool(const std::string& feature, - const std::string& config) const; - bool IsImported() const {return this->IsImportedTarget;} void GetObjectLibrariesCMP0026(std::vector& objlibs) const; ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Source/cmGeneratorTarget.cxx | 30 ++++++++++++++++++++++++++++- Source/cmGeneratorTarget.h | 5 +++++ Source/cmGlobalVisualStudio7Generator.cxx | 3 ++- Source/cmLocalGenerator.cxx | 27 ++++++++++++++++++++++++++ Source/cmLocalGenerator.h | 3 +++ Source/cmMakefile.cxx | 27 -------------------------- Source/cmMakefile.h | 3 --- Source/cmMakefileTargetGenerator.cxx | 4 ++-- Source/cmNinjaTargetGenerator.cxx | 5 +++-- Source/cmTarget.cxx | 28 --------------------------- Source/cmTarget.h | 5 ----- 12 files changed, 72 insertions(+), 70 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Jun 7 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 7 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-42-gcb1a9c7 Message-ID: <20150607040105.12409B028F@public.kitware.com> 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, master has been updated via cb1a9c7b9cc48ac1f908ece7bb55a342bd943fec (commit) from 50a1bd3df13d47167d55fb1584b2c1bc7235884b (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=cb1a9c7b9cc48ac1f908ece7bb55a342bd943fec commit cb1a9c7b9cc48ac1f908ece7bb55a342bd943fec Author: Kitware Robot AuthorDate: Sun Jun 7 00:01:03 2015 -0400 Commit: Kitware Robot CommitDate: Sun Jun 7 00:01:03 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 29e81a6..7ac1082 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150606) +set(CMake_VERSION_PATCH 20150607) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 03:28:52 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 03:28:52 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-176-g8d3c59f Message-ID: <20150607072852.BAFF0AFFD0@public.kitware.com> 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 8d3c59f6a1e48f3b5788860933fd6ba9e53f846b (commit) via c9852e1ba279747a4b70eb4eadd781695c72073d (commit) via 676b77c77c611b1ac58db420d743ae1b16ca03ea (commit) from 01066f3643a68ed4bb67504f3809f1c82e6e3cea (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=8d3c59f6a1e48f3b5788860933fd6ba9e53f846b commit 8d3c59f6a1e48f3b5788860933fd6ba9e53f846b Merge: 01066f3 c9852e1 Author: Stephen Kelly AuthorDate: Sun Jun 7 03:28:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 03:28:51 2015 -0400 Merge topic 'data-layout' into next c9852e1b fixup! cmPropertyMap: Remove chaining logic. 676b77c7 fixup! cmPolicies: Store all statuses in a single bitset. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c9852e1ba279747a4b70eb4eadd781695c72073d commit c9852e1ba279747a4b70eb4eadd781695c72073d Author: Stephen Kelly AuthorDate: Sun Jun 7 09:25:01 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:25:01 2015 +0200 fixup! cmPropertyMap: Remove chaining logic. diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 7410239..a9062db 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -14,8 +14,6 @@ #include "cmProperty.h" -class cmake; - class cmPropertyMap : public std::map { public: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=676b77c77c611b1ac58db420d743ae1b16ca03ea commit 676b77c77c611b1ac58db420d743ae1b16ca03ea Author: Stephen Kelly AuthorDate: Sun Jun 7 09:24:27 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:24:27 2015 +0200 fixup! cmPolicies: Store all statuses in a single bitset. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 586ec87..5026893 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -373,8 +373,10 @@ void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, this->Status[(POLICY_STATUS_COUNT * id) + OLD] = (status == OLD); this->Status[(POLICY_STATUS_COUNT * id) + WARN] = (status == WARN); this->Status[(POLICY_STATUS_COUNT * id) + NEW] = (status == NEW); - this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS] = (status == REQUIRED_ALWAYS); - this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED] = (status == REQUIRED_IF_USED); + this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS] = + (status == REQUIRED_ALWAYS); + this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED] = + (status == REQUIRED_IF_USED); } bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const ----------------------------------------------------------------------- Summary of changes: Source/cmPolicies.cxx | 6 ++++-- Source/cmPropertyMap.h | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 04:25:24 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 04:25:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-199-g5355cb1 Message-ID: <20150607082524.95FB2AFE37@public.kitware.com> 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 5355cb142ed77f2f4ada6a0d5abc21f09be150da (commit) via b661d6c631884e48b27353b0ee9f4f0eb6f5eea7 (commit) via 40844a1487ea576987ecec148f77bbeebea9433d (commit) via b1ff32afc67799d08130d457347290a41e426ed0 (commit) via dd0417c7becb9d00bf60827d299b3d520bb138c5 (commit) via 125c48660ce5f58e8fa9371cfb9c192f42b19401 (commit) via 92b8b1fc3d885091cfef210216b682a389eaf2fb (commit) via 7f3e16239fd120eded5e23ee8a836d9e73119244 (commit) via d9df7fa70c854207bb36b45ca0fdca6665bd4bd8 (commit) via db24e41b9d939fb8ad9106f7a8511670505a8ad0 (commit) via 4cd13e80f00d4441112f400ff774d91a7fecfff8 (commit) via 3e087a408b4a5bad1eb079c61c982ce2dab0973a (commit) via e04217010345fd350d3ddd7897e47eb47eaec1d8 (commit) via c26696eb404888cec525bf3ee2e538ae8532156f (commit) via 41fef23b9b8bfa795e2d61e27b12f055ef9bbc39 (commit) via 647488570bfe7ce210bfd0675df0eb5147e36ab6 (commit) via 6f148e4a48f3f879998e67d9bb30de07f5cf5608 (commit) via 5181fae264444ad7736614ceb1e78c51def2b97c (commit) via 3ac4b90bfdcca97f1f63056c97afee38cf66ea12 (commit) via 7c0aa672fe4f1b5c4a15a89d90cd80009a1399d0 (commit) via 9058e27a431b01319b18cc4099780fa017ada113 (commit) via 1c48edf8fc8cec71c780cbb1c587f10df0ab7185 (commit) via 93cc2eef38eab76831916bfee9d6fe16fbaaf4c1 (commit) via 44a8115797cc3f804d653928d71b126b39e29210 (commit) from 8d3c59f6a1e48f3b5788860933fd6ba9e53f846b (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=5355cb142ed77f2f4ada6a0d5abc21f09be150da commit 5355cb142ed77f2f4ada6a0d5abc21f09be150da Merge: 8d3c59f b661d6c Author: Stephen Kelly AuthorDate: Sun Jun 7 04:25:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 04:25:22 2015 -0400 Merge topic 'data-layout' into next b661d6c6 cmQtAutoGenerators: Re-arrange data layout. 40844a14 cmProcessTools: Re-arrange data layout. b1ff32af cmOrderDirectories: Re-arrange data layout. dd0417c7 cmInstallTargetGenerator: Re-arrange data layout. 125c4866 cmInstallFilesGenerator: Re-arrange data layout. 92b8b1fc cmGraphVizWriter: Re-arrange data layout. 7f3e1623 cmGlobalGenerator: Re-arrange data layout. d9df7fa7 cmComputeComponentGraph: Re-arrange data layout. db24e41b cmCommandArgumentParserHelper: Re-arrange data. 4cd13e80 cmComputeLinkInformation: Re-arrange data layout. 3e087a40 cmLocalUnixMakefileGenerator: Re-arrange data layout. e0421701 cmMakefile: Re-arrange data layout. c26696eb cmSourceFile: Re-arrange data. 41fef23b cmTarget: Re-arrange data layout. 64748857 cmTarget: Replace PolicyStatus members with PolicyMap. 6f148e4a cmTarget: Use method abstraction for policy status. ... http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b661d6c631884e48b27353b0ee9f4f0eb6f5eea7 commit b661d6c631884e48b27353b0ee9f4f0eb6f5eea7 Author: Stephen Kelly AuthorDate: Sun Jun 7 10:11:42 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:28 2015 +0200 cmQtAutoGenerators: Re-arrange data layout. Size goes from 920 to 912 bytes. diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h index f74e3c5..4c0fcbc 100644 --- a/Source/cmQtAutoGenerators.h +++ b/Source/cmQtAutoGenerators.h @@ -105,7 +105,6 @@ private: std::string SkipMoc; std::string SkipUic; std::string Headers; - bool IncludeProjectDirsBefore; std::string Srcdir; std::string Builddir; std::string MocExecutable; @@ -131,6 +130,7 @@ private: std::map RccOptions; std::map > RccInputs; + bool IncludeProjectDirsBefore; bool Verbose; bool ColorOutput; bool RunMocFailed; @@ -138,7 +138,6 @@ private: bool RunRccFailed; bool GenerateAll; bool RelaxedMode; - }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=40844a1487ea576987ecec148f77bbeebea9433d commit 40844a1487ea576987ecec148f77bbeebea9433d Author: Stephen Kelly AuthorDate: Sun Jun 7 10:09:47 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:28 2015 +0200 cmProcessTools: Re-arrange data layout. Size goes from 72 to 64 bytes. diff --git a/Source/cmProcessTools.cxx b/Source/cmProcessTools.cxx index d2f7bf3..15d9ed0 100644 --- a/Source/cmProcessTools.cxx +++ b/Source/cmProcessTools.cxx @@ -44,7 +44,7 @@ void cmProcessTools::RunProcess(struct cmsysProcess_s* cp, //---------------------------------------------------------------------------- cmProcessTools::LineParser::LineParser(char sep, bool ignoreCR): - Separator(sep), IgnoreCR(ignoreCR), Log(0), Prefix(0), LineEnd('\0') + Log(0), Prefix(0), Separator(sep), LineEnd('\0'), IgnoreCR(ignoreCR) { } diff --git a/Source/cmProcessTools.h b/Source/cmProcessTools.h index 439726d..23833ca 100644 --- a/Source/cmProcessTools.h +++ b/Source/cmProcessTools.h @@ -51,12 +51,12 @@ public: /** Configure logging of lines as they are extracted. */ void SetLog(std::ostream* log, const char* prefix); protected: - char Separator; - bool IgnoreCR; std::ostream* Log; const char* Prefix; - char LineEnd; std::string Line; + char Separator; + char LineEnd; + bool IgnoreCR; virtual bool ProcessChunk(const char* data, int length); /** Implement in a subclass to process one line of input. It http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b1ff32afc67799d08130d457347290a41e426ed0 commit b1ff32afc67799d08130d457347290a41e426ed0 Author: Stephen Kelly AuthorDate: Sun Jun 7 10:06:19 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:27 2015 +0200 cmOrderDirectories: Re-arrange data layout. Size goes from 680 to 672 bytes. diff --git a/Source/cmOrderDirectories.h b/Source/cmOrderDirectories.h index 07c85dd..cb5a51f 100644 --- a/Source/cmOrderDirectories.h +++ b/Source/cmOrderDirectories.h @@ -44,8 +44,6 @@ private: cmTarget const* Target; std::string Purpose; - bool Computed; - std::vector OrderedDirectories; std::vector ConstraintEntries; @@ -68,8 +66,9 @@ private: void OrderDirectories(); void VisitDirectory(unsigned int i); void DiagnoseCycle(); - bool CycleDiagnosed; int WalkId; + bool CycleDiagnosed; + bool Computed; // Adjacency-list representation of runtime path ordering graph. // This maps from directory to those that must come *before* it. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dd0417c7becb9d00bf60827d299b3d520bb138c5 commit dd0417c7becb9d00bf60827d299b3d520bb138c5 Author: Stephen Kelly AuthorDate: Sun Jun 7 10:01:00 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:27 2015 +0200 cmInstallTargetGenerator: Re-arrange data layout. Remove unused cmGeneratorTarget member. Size goes from 238 to 232 bytes. diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 082a78c..5115788 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -29,7 +29,9 @@ cmInstallTargetGenerator MessageLevel message, bool optional): cmInstallGenerator(dest, configurations, component, message), Target(&t), - ImportLibrary(implib), FilePermissions(file_permissions), Optional(optional) + FilePermissions(file_permissions), + ImportLibrary(implib), + Optional(optional) { this->ActionsPerConfig = true; this->NamelinkMode = NamelinkModeNone; diff --git a/Source/cmInstallTargetGenerator.h b/Source/cmInstallTargetGenerator.h index 075c8a4..db69220 100644 --- a/Source/cmInstallTargetGenerator.h +++ b/Source/cmInstallTargetGenerator.h @@ -14,7 +14,6 @@ #include "cmInstallGenerator.h" #include "cmTarget.h" -#include "cmGeneratorTarget.h" /** \class cmInstallTargetGenerator * \brief Generate target installation rules. @@ -100,11 +99,10 @@ protected: const std::string& toDestDirPath); cmTarget* Target; - bool ImportLibrary; std::string FilePermissions; - bool Optional; NamelinkModeType NamelinkMode; - cmGeneratorTarget* GeneratorTarget; + bool ImportLibrary; + bool Optional; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=125c48660ce5f58e8fa9371cfb9c192f42b19401 commit 125c48660ce5f58e8fa9371cfb9c192f42b19401 Author: Stephen Kelly AuthorDate: Sun Jun 7 09:57:33 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:27 2015 +0200 cmInstallFilesGenerator: Re-arrange data layout. Size goes from 296 to 288 bytes. diff --git a/Source/cmInstallFilesGenerator.cxx b/Source/cmInstallFilesGenerator.cxx index 28c27c2..ff2c6e5 100644 --- a/Source/cmInstallFilesGenerator.cxx +++ b/Source/cmInstallFilesGenerator.cxx @@ -28,9 +28,11 @@ cmInstallFilesGenerator bool optional): cmInstallGenerator(dest, configurations, component, message), Makefile(mf), - Files(files), Programs(programs), + Files(files), FilePermissions(file_permissions), - Rename(rename), Optional(optional) + Rename(rename), + Programs(programs), + Optional(optional) { // We need per-config actions if any files have generator expressions. for(std::vector::const_iterator i = files.begin(); diff --git a/Source/cmInstallFilesGenerator.h b/Source/cmInstallFilesGenerator.h index 0dbd712..bf482d6 100644 --- a/Source/cmInstallFilesGenerator.h +++ b/Source/cmInstallFilesGenerator.h @@ -43,9 +43,9 @@ protected: cmMakefile* Makefile; std::vector Files; - bool Programs; std::string FilePermissions; std::string Rename; + bool Programs; bool Optional; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=92b8b1fc3d885091cfef210216b682a389eaf2fb commit 92b8b1fc3d885091cfef210216b682a389eaf2fb Author: Stephen Kelly AuthorDate: Sun Jun 7 09:54:55 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:26 2015 +0200 cmGraphVizWriter: Re-arrange data layout. Size goes from 272 to 264 bytes. diff --git a/Source/cmGraphVizWriter.cxx b/Source/cmGraphVizWriter.cxx index 7f4c4c9..fa29b4f 100644 --- a/Source/cmGraphVizWriter.cxx +++ b/Source/cmGraphVizWriter.cxx @@ -48,6 +48,7 @@ cmGraphVizWriter::cmGraphVizWriter(const std::vector& ,GraphName("GG") ,GraphHeader("node [\n fontsize = \"12\"\n];") ,GraphNodePrefix("node") +,LocalGenerators(localGenerators) ,GenerateForExecutables(true) ,GenerateForStaticLibs(true) ,GenerateForSharedLibs(true) @@ -55,7 +56,6 @@ cmGraphVizWriter::cmGraphVizWriter(const std::vector& ,GenerateForExternals(true) ,GeneratePerTarget(true) ,GenerateDependers(true) -,LocalGenerators(localGenerators) ,HaveTargetsAndLibs(false) { } diff --git a/Source/cmGraphVizWriter.h b/Source/cmGraphVizWriter.h index a7acd0e..64de684 100644 --- a/Source/cmGraphVizWriter.h +++ b/Source/cmGraphVizWriter.h @@ -69,14 +69,6 @@ protected: std::string GraphHeader; std::string GraphNodePrefix; - bool GenerateForExecutables; - bool GenerateForStaticLibs; - bool GenerateForSharedLibs; - bool GenerateForModuleLibs; - bool GenerateForExternals; - bool GeneratePerTarget; - bool GenerateDependers; - std::vector TargetsToIgnoreRegex; const std::vector& LocalGenerators; @@ -85,6 +77,13 @@ protected: // maps from the actual target names to node names in dot: std::map TargetNamesNodes; + bool GenerateForExecutables; + bool GenerateForStaticLibs; + bool GenerateForSharedLibs; + bool GenerateForModuleLibs; + bool GenerateForExternals; + bool GeneratePerTarget; + bool GenerateDependers; bool HaveTargetsAndLibs; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7f3e16239fd120eded5e23ee8a836d9e73119244 commit 7f3e16239fd120eded5e23ee8a836d9e73119244 Author: Stephen Kelly AuthorDate: Sun Jun 7 09:47:37 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:24:26 2015 +0200 cmGlobalGenerator: Re-arrange data layout. Size goes from 1488 to 1480 bytes. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 3b368c6..f02df90 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -398,10 +398,6 @@ protected: std::vector depends, const char* workingDir, bool uses_terminal); - bool NeedSymbolicMark; - bool UseLinkScript; - bool ForceUnixPaths; - bool ToolSupportsColor; std::string FindMakeProgramFile; std::string ConfiguredFilesPath; cmake *CMakeInstance; @@ -414,7 +410,6 @@ protected: // Set of named installation components requested by the project. std::set InstallComponents; - bool InstallTargetEnabled; // Sets of named target exports cmExportSetMap ExportSets; std::map BuildExportSets; @@ -448,7 +443,6 @@ private: cmState::Snapshot snapshot); cmMakefile* TryCompileOuterMakefile; - float FirstTimeProgress; // If you add a new map here, make sure it is copied // in EnableLanguagesFromGenerator std::map IgnoreExtensions; @@ -521,6 +515,14 @@ private: // Pool of file locks cmFileLockPool FileLockPool; #endif + +protected: + float FirstTimeProgress; + bool NeedSymbolicMark; + bool UseLinkScript; + bool ForceUnixPaths; + bool ToolSupportsColor; + bool InstallTargetEnabled; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9df7fa70c854207bb36b45ca0fdca6665bd4bd8 commit d9df7fa70c854207bb36b45ca0fdca6665bd4bd8 Author: Stephen Kelly AuthorDate: Sun Jun 7 09:43:11 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:43:39 2015 +0200 cmComputeComponentGraph: Re-arrange data layout. Size goes from 224 to 216 bytes. diff --git a/Source/cmComputeComponentGraph.h b/Source/cmComputeComponentGraph.h index a2ce946..4dbac4a 100644 --- a/Source/cmComputeComponentGraph.h +++ b/Source/cmComputeComponentGraph.h @@ -67,17 +67,17 @@ private: int Root; int VisitIndex; }; - int TarjanWalkId; std::vector TarjanVisited; std::vector TarjanComponents; std::vector TarjanEntries; + std::vector Components; std::stack TarjanStack; + int TarjanWalkId; int TarjanIndex; void Tarjan(); void TarjanVisit(int i); // Connected components. - std::vector Components; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=db24e41b9d939fb8ad9106f7a8511670505a8ad0 commit db24e41b9d939fb8ad9106f7a8511670505a8ad0 Author: Stephen Kelly AuthorDate: Sun Jun 7 09:40:57 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:41:19 2015 +0200 cmCommandArgumentParserHelper: Re-arrange data. Size goes from 232 to 216 bytes. diff --git a/Source/cmCommandArgumentParserHelper.h b/Source/cmCommandArgumentParserHelper.h index d375ae6..387afc6 100644 --- a/Source/cmCommandArgumentParserHelper.h +++ b/Source/cmCommandArgumentParserHelper.h @@ -80,8 +80,6 @@ private: std::string::size_type InputBufferPos; std::string InputBuffer; std::vector OutputBuffer; - int CurrentLine; - int Verbose; void Print(const char* place, const char* str); void SafePrintMissing(const char* str, int line, int cnt); @@ -94,12 +92,14 @@ private: std::vector Variables; const cmMakefile* Makefile; std::string Result; + std::string ErrorString; const char* FileName; + long FileLine; + int CurrentLine; + int Verbose; bool WarnUninitialized; bool CheckSystemVars; - long FileLine; bool EscapeQuotes; - std::string ErrorString; bool NoEscapeMode; bool ReplaceAtSyntax; bool RemoveEmpty; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4cd13e80f00d4441112f400ff774d91a7fecfff8 commit 4cd13e80f00d4441112f400ff774d91a7fecfff8 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:59:24 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:32:39 2015 +0200 cmComputeLinkInformation: Re-arrange data layout. Size goes from 1944 to 1920 bytes. diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h index 8847141..ccf520b 100644 --- a/Source/cmComputeLinkInformation.h +++ b/Source/cmComputeLinkInformation.h @@ -82,7 +82,6 @@ private: // Configuration information. std::string Config; std::string LinkLanguage; - bool LinkDependsNoShared; // Modes for dealing with dependent shared libraries. enum SharedDepMode @@ -93,8 +92,6 @@ private: SharedDepModeLink // List file on link line }; - // System info. - bool UseImportLibrary; const char* LoaderFlag; std::string LibLinkFlag; std::string LibLinkFileFlag; @@ -102,22 +99,18 @@ private: std::string RuntimeFlag; std::string RuntimeSep; std::string RuntimeAlways; - bool RuntimeUseChrpath; - bool NoSONameUsesPath; - bool LinkWithRuntimePath; std::string RPathLinkFlag; SharedDepMode SharedDependencyMode; + enum LinkType { LinkUnknown, LinkStatic, LinkShared }; + void SetCurrentLinkType(LinkType lt); + // Link type adjustment. void ComputeLinkTypeInfo(); - enum LinkType { LinkUnknown, LinkStatic, LinkShared }; LinkType StartLinkType; LinkType CurrentLinkType; std::string StaticLinkTypeFlag; std::string SharedLinkTypeFlag; - bool LinkTypeEnabled; - void SetCurrentLinkType(LinkType lt); - bool ArchivesMayBeShared; // Link item parsing. void ComputeItemParserInfo(); @@ -129,7 +122,6 @@ private: cmsys::RegularExpression ExtractSharedLibraryName; cmsys::RegularExpression ExtractAnyLibraryName; std::string SharedRegexString; - bool OpenBSD; void AddLinkPrefix(const char* p); void AddLinkExtension(const char* e, LinkType type); std::string CreateExtensionRegex(std::vector const& exts, @@ -173,20 +165,27 @@ private: std::set OldLinkDirMask; std::vector OldLinkDirItems; std::vector OldUserFlagItems; - bool OldLinkDirMode; - - // CMP0060 warnings. - bool CMP0060Warn; std::set CMP0060WarnItems; - + // Dependent library path computation. + cmOrderDirectories* OrderDependentRPath; // Runtime path computation. cmOrderDirectories* OrderRuntimeSearchPath; + + bool OldLinkDirMode; + bool OpenBSD; + bool LinkDependsNoShared; + bool UseImportLibrary; + bool RuntimeUseChrpath; + bool NoSONameUsesPath; + bool LinkWithRuntimePath; + bool LinkTypeEnabled; + bool ArchivesMayBeShared; + bool CMP0060Warn; + void AddLibraryRuntimeInfo(std::string const& fullPath, cmTarget const* target); void AddLibraryRuntimeInfo(std::string const& fullPath); - // Dependent library path computation. - cmOrderDirectories* OrderDependentRPath; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3e087a408b4a5bad1eb079c61c982ce2dab0973a commit 3e087a408b4a5bad1eb079c61c982ce2dab0973a Author: Stephen Kelly AuthorDate: Sat Jun 6 09:46:10 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:32:38 2015 +0200 cmLocalUnixMakefileGenerator: Re-arrange data layout. Size goes from 536 to 528 bytes. diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index f2a1389..dcb3016 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -254,26 +254,10 @@ private: ImplicitDependTargetMap ImplicitDepends; - //========================================================================== - // Configuration settings. - int MakefileVariableSize; std::string ConfigurationName; - bool MakeCommandEscapeTargetTwice; - bool BorlandMakeCurlyHack; - //========================================================================== std::string HomeRelativeOutputPath; - /* Copy the setting of CMAKE_COLOR_MAKEFILE from the makefile at the - beginning of generation to avoid many duplicate lookups. */ - bool ColorMakefile; - - /* Copy the setting of CMAKE_SKIP_PREPROCESSED_SOURCE_RULES and - CMAKE_SKIP_ASSEMBLY_SOURCE_RULES at the beginning of generation to - avoid many duplicate lookups. */ - bool SkipPreprocessedSourceRules; - bool SkipAssemblySourceRules; - struct LocalObjectEntry { cmTarget* Target; @@ -302,6 +286,13 @@ private: /* does the work for each target */ std::map MakeVariableMap; std::map ShortMakeVariableMap; + + int MakefileVariableSize; + bool MakeCommandEscapeTargetTwice; + bool BorlandMakeCurlyHack; + bool ColorMakefile; + bool SkipPreprocessedSourceRules; + bool SkipAssemblySourceRules; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e04217010345fd350d3ddd7897e47eb47eaec1d8 commit e04217010345fd350d3ddd7897e47eb47eaec1d8 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:45:56 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:32:38 2015 +0200 cmMakefile: Re-arrange data layout. 2168 to 2152 bytes with GNU libstdc++-5.1. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 7518631..32223b4 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -372,8 +372,6 @@ public: }; friend class PolicyPushPop; - mutable std::set CMP0054ReportedIds; - /** * Determine if the given context, name pair has already been reported * in context of CMP0054. @@ -848,6 +846,8 @@ protected: // Check for a an unused variable void LogUnused(const char* reason, const std::string& name) const; + mutable std::set CMP0054ReportedIds; + std::string ProjectName; // project name // libraries, classes, and executables @@ -949,10 +949,6 @@ private: cmPropertyMap Properties; - // Unused variable flags - bool WarnUnused; - bool CheckSystemVars; - // stack of list files being read std::vector ListFileStack; @@ -994,8 +990,6 @@ private: cmPolicies::PolicyStatus GetPolicyStatusInternal(cmPolicies::PolicyID id) const; - bool CheckCMP0000; - // Enforce rules about CMakeLists.txt files. void EnforceDirectoryLevelRules() const; @@ -1021,7 +1015,6 @@ private: long line, bool removeEmpty, bool replaceAt) const; - bool Configured; /** * Old version of GetSourceFileWithOutput(const std::string&) kept for * backward-compatibility. It implements a linear search and support @@ -1067,6 +1060,11 @@ private: void CheckForUnusedVariables() const; + // Unused variable flags + bool WarnUnused; + bool CheckSystemVars; + bool CheckCMP0000; + bool Configured; mutable bool SuppressWatches; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c26696eb404888cec525bf3ee2e538ae8532156f commit c26696eb404888cec525bf3ee2e538ae8532156f Author: Stephen Kelly AuthorDate: Sat Jun 6 09:45:50 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:32:24 2015 +0200 cmSourceFile: Re-arrange data. Size goes from 304 to 296 bytes. diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index f898260..1433b54 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -107,8 +107,9 @@ private: std::string Extension; std::string Language; std::string FullPath; - bool FindFullPathFailed; std::string ObjectLibrary; + std::vector Depends; + bool FindFullPathFailed; bool IsUiFile; bool FindFullPath(std::string* error); @@ -116,7 +117,6 @@ private: void CheckExtension(); void CheckLanguage(std::string const& ext); - std::vector Depends; static const std::string propLANGUAGE; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=41fef23b9b8bfa795e2d61e27b12f055ef9bbc39 commit 41fef23b9b8bfa795e2d61e27b12f055ef9bbc39 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:44:47 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:31 2015 +0200 cmTarget: Re-arrange data layout. Size with GNU libstdc++-5.1 goes from 840 bytes to 808 bytes. diff --git a/Source/cmTarget.h b/Source/cmTarget.h index cade7ab..ddc8d35 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -642,12 +642,6 @@ public: private: bool HandleLocationPropertyPolicy(cmMakefile* context) const; - // The set of include directories that are marked as system include - // directories. - std::set SystemIncludeDirectories; - - std::vector > TLLCommands; - #if defined(_WIN32) && !defined(__CYGWIN__) /** * A list of direct dependencies. Use in conjunction with DependencyMap. @@ -742,40 +736,48 @@ private: void GetSourceFiles(std::vector &files, const std::string& config) const; private: + mutable cmPropertyMap Properties; + std::set SystemIncludeDirectories; + std::set LinkDirectoriesEmmitted; + std::set Utilities; + mutable std::set LinkImplicitNullProperties; + std::map UtilityBacktraces; + mutable std::map DebugCompatiblePropertiesDone; + mutable std::map MaxLanguageStandards; + cmPolicies::PolicyMap PolicyMap; std::string Name; + std::string InstallPath; + std::string RuntimeInstallPath; + mutable std::string ExportMacro; + std::vector LinkDirectories; std::vector PreBuildCommands; std::vector PreLinkCommands; std::vector PostBuildCommands; - TargetType TargetTypeValue; + std::vector > TLLCommands; LinkLibraryVectorType PrevLinkedLibraries; + LinkLibraryVectorType OriginalLinkLibraries; #if defined(_WIN32) && !defined(__CYGWIN__) LinkLibraryVectorType LinkLibrariesForVS6; - bool LinkLibrariesForVS6Analyzed; #endif - std::vector LinkDirectories; - std::set LinkDirectoriesEmmitted; + cmMakefile* Makefile; + cmTargetInternalPointer Internal; + TargetType TargetTypeValue; bool HaveInstallRule; - std::string InstallPath; - std::string RuntimeInstallPath; - mutable std::string ExportMacro; - std::set Utilities; - std::map UtilityBacktraces; bool RecordDependencies; - mutable cmPropertyMap Properties; - LinkLibraryVectorType OriginalLinkLibraries; bool DLLPlatform; bool IsAndroid; bool IsApple; bool IsImportedTarget; + bool BuildInterfaceIncludesAppended; mutable bool DebugIncludesDone; - mutable std::map DebugCompatiblePropertiesDone; mutable bool DebugCompileOptionsDone; mutable bool DebugCompileDefinitionsDone; mutable bool DebugSourcesDone; mutable bool DebugCompileFeaturesDone; - mutable std::set LinkImplicitNullProperties; - mutable std::map MaxLanguageStandards; - bool BuildInterfaceIncludesAppended; + mutable bool LinkImplementationLanguageIsContextDependent; +#if defined(_WIN32) && !defined(__CYGWIN__) + bool LinkLibrariesForVS6Analyzed; +#endif // Cache target output paths for each configuration. struct OutputInfo; @@ -825,16 +827,10 @@ private: void ProcessSourceExpression(std::string const& expr); - // The cmMakefile instance that owns this target. This should - // always be set. - cmMakefile* Makefile; - cmPolicies::PolicyMap PolicyMap; - // Internal representation details. friend class cmTargetInternals; friend class cmGeneratorTarget; friend class cmTargetTraceDependencies; - cmTargetInternalPointer Internal; void ComputeVersionedName(std::string& vName, std::string const& prefix, @@ -842,8 +838,6 @@ private: std::string const& suffix, std::string const& name, const char* version) const; - - mutable bool LinkImplementationLanguageIsContextDependent; }; #ifdef CMAKE_BUILD_WITH_CMAKE http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=647488570bfe7ce210bfd0675df0eb5147e36ab6 commit 647488570bfe7ce210bfd0675df0eb5147e36ab6 Author: Stephen Kelly AuthorDate: Sat May 2 14:50:02 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:31 2015 +0200 cmTarget: Replace PolicyStatus members with PolicyMap. sizeof(cmTarget) goes from 856 to 840 with GNU libstdc++ 5.1. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 5e866ef..daf5282 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -239,13 +239,6 @@ cmTargetInternals::~cmTargetInternals() //---------------------------------------------------------------------------- cmTarget::cmTarget() { -#define INITIALIZE_TARGET_POLICY_MEMBER(POLICY) \ - this->PolicyStatus ## POLICY = cmPolicies::WARN; - - CM_FOR_EACH_TARGET_POLICY(INITIALIZE_TARGET_POLICY_MEMBER) - -#undef INITIALIZE_TARGET_POLICY_MEMBER - this->Makefile = 0; #if defined(_WIN32) && !defined(__CYGWIN__) this->LinkLibrariesForVS6Analyzed = false; @@ -440,20 +433,14 @@ void cmTarget::SetMakefile(cmMakefile* mf) } // Record current policies for later use. -#define CAPTURE_TARGET_POLICY(POLICY) \ - this->PolicyStatus ## POLICY = \ - this->Makefile->GetPolicyStatus(cmPolicies::POLICY); - - CM_FOR_EACH_TARGET_POLICY(CAPTURE_TARGET_POLICY) - -#undef CAPTURE_TARGET_POLICY + this->Makefile->RecordPolicies(this->PolicyMap); if (this->TargetTypeValue == INTERFACE_LIBRARY) { // This policy is checked in a few conditions. The properties relevant // to the policy are always ignored for INTERFACE_LIBRARY targets, // so ensure that the conditions don't lead to nonsense. - this->PolicyStatusCMP0022 = cmPolicies::NEW; + this->PolicyMap.Set(cmPolicies::CMP0022, cmPolicies::NEW); } if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY) diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 0cbb575..cade7ab 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -144,7 +144,7 @@ public: #define DECLARE_TARGET_POLICY(POLICY) \ cmPolicies::PolicyStatus GetPolicyStatus ## POLICY () const \ - { return this->PolicyStatus ## POLICY; } + { return this->PolicyMap.Get(cmPolicies::POLICY); } CM_FOR_EACH_TARGET_POLICY(DECLARE_TARGET_POLICY) @@ -828,14 +828,7 @@ private: // The cmMakefile instance that owns this target. This should // always be set. cmMakefile* Makefile; - - // Policy status recorded when target was created. -#define TARGET_POLICY_MEMBER(POLICY) \ - cmPolicies::PolicyStatus PolicyStatus ## POLICY; - - CM_FOR_EACH_TARGET_POLICY(TARGET_POLICY_MEMBER) - -#undef TARGET_POLICY_MEMBER + cmPolicies::PolicyMap PolicyMap; // Internal representation details. friend class cmTargetInternals; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6f148e4a48f3f879998e67d9bb30de07f5cf5608 commit 6f148e4a48f3f879998e67d9bb30de07f5cf5608 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:42:09 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:31 2015 +0200 cmTarget: Use method abstraction for policy status. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index d1399ef..5e866ef 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -5925,8 +5925,8 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( // libraries and executables that export symbols. const char* explicitLibraries = 0; std::string linkIfaceProp; - if(thisTarget->PolicyStatusCMP0022 != cmPolicies::OLD && - thisTarget->PolicyStatusCMP0022 != cmPolicies::WARN) + if(thisTarget->GetPolicyStatusCMP0022() != cmPolicies::OLD && + thisTarget->GetPolicyStatusCMP0022() != cmPolicies::WARN) { // CMP0022 NEW behavior is to use INTERFACE_LINK_LIBRARIES. linkIfaceProp = "INTERFACE_LINK_LIBRARIES"; @@ -5952,7 +5952,7 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( } if(explicitLibraries && - thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN && + thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN && !this->PolicyWarnedCMP0022) { // Compare the explicitly set old link interface properties to the @@ -5996,8 +5996,8 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( iface.Libraries, iface.HadHeadSensitiveCondition); } - else if (thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN - || thisTarget->PolicyStatusCMP0022 == cmPolicies::OLD) + else if (thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN + || thisTarget->GetPolicyStatusCMP0022() == cmPolicies::OLD) // If CMP0022 is NEW then the plain tll signature sets the // INTERFACE_LINK_LIBRARIES, so if we get here then the project // cleared the property explicitly and we should not fall back @@ -6008,7 +6008,7 @@ cmTargetInternals::ComputeLinkInterfaceLibraries( thisTarget->GetLinkImplementationLibrariesInternal(config, headTarget); iface.Libraries.insert(iface.Libraries.end(), impl->Libraries.begin(), impl->Libraries.end()); - if(thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN && + if(thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN && !this->PolicyWarnedCMP0022 && !usage_requirements_only) { // Compare the link implementation fallback link interface to the @@ -6100,8 +6100,8 @@ void cmTargetInternals::ComputeLinkInterface(cmTarget const* thisTarget, } } } - else if (thisTarget->PolicyStatusCMP0022 == cmPolicies::WARN - || thisTarget->PolicyStatusCMP0022 == cmPolicies::OLD) + else if (thisTarget->GetPolicyStatusCMP0022() == cmPolicies::WARN + || thisTarget->GetPolicyStatusCMP0022() == cmPolicies::OLD) { // The link implementation is the default link interface. cmTarget::LinkImplementationLibraries const* @@ -6421,7 +6421,7 @@ std::string cmTarget::CheckCMP0004(std::string const& item) const if(lib != item) { cmake* cm = this->Makefile->GetCMakeInstance(); - switch(this->PolicyStatusCMP0004) + switch(this->GetPolicyStatusCMP0004()) { case cmPolicies::WARN: { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5181fae264444ad7736614ceb1e78c51def2b97c commit 5181fae264444ad7736614ceb1e78c51def2b97c Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:30 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:31 2015 +0200 cmPropertyMap: Remove chaining logic. The chaining logic doesn't belong to the container, and the CMakeInstance pointer doesn't need to be in cmPropertyMap. Size goes from 56 to 48 bytes with GNU libstdc++-5.1. diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index bd8c10c..0d24ed5 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -526,11 +526,9 @@ void * CCONV cmCreateSourceFile(void) return (void*)new cmCPluginAPISourceFile; } -void * CCONV cmCreateNewSourceFile(void *arg) +void * CCONV cmCreateNewSourceFile(void *) { - cmMakefile *mf = static_cast(arg); cmCPluginAPISourceFile *sf = new cmCPluginAPISourceFile; - sf->Properties.SetCMakeInstance(mf->GetCMakeInstance()); return (void*)sf; } @@ -630,11 +628,7 @@ const char * CCONV cmSourceFileGetProperty(void *arg,const char *prop) { return sf->FullPath.c_str(); } - bool chain = false; - // Ignore chain because old code will not expect it and it is a - // pain to implement here anyway. - return sf->Properties.GetPropertyValue(prop, cmProperty::SOURCE_FILE, - chain); + return sf->Properties.GetPropertyValue(prop); } } diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 6af14f2..54209c5 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -161,7 +161,6 @@ bool cmCacheManager::LoadCache(const std::string& path, // Format is key:type=value std::string helpString; CacheEntry e; - e.Properties.SetCMakeInstance(this->CMakeInstance); cmSystemTools::GetLineFromStream(fin, buffer); realbuffer = buffer.c_str(); while(*realbuffer != '0' && @@ -323,7 +322,6 @@ bool cmCacheManager::ReadPropertyEntry(std::string const& entryKey, { // Create an entry and store the property. CacheEntry& ne = this->Cache[key]; - ne.Properties.SetCMakeInstance(this->CMakeInstance); ne.Type = cmState::UNINITIALIZED; ne.SetProperty(*p, e.Value.c_str()); } @@ -645,7 +643,6 @@ void cmCacheManager::AddCacheEntry(const std::string& key, cmState::CacheEntryType type) { CacheEntry& e = this->Cache[key]; - e.Properties.SetCMakeInstance(this->CMakeInstance); if ( value ) { e.Value = value; @@ -744,9 +741,7 @@ cmCacheManager::CacheEntry::GetProperty(const std::string& prop) const { return this->Value.c_str(); } - bool c = false; - return - this->Properties.GetPropertyValue(prop, cmProperty::CACHE, c); + return this->Properties.GetPropertyValue(prop); } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 481de19..bd949bb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2438,7 +2438,6 @@ cmTarget cmGlobalGenerator::CreateGlobalTarget( { // Package cmTarget target; - target.GetProperties().SetCMakeInstance(this->CMakeInstance); target.SetType(cmTarget::GLOBAL_TARGET, name); target.SetProperty("EXCLUDE_FROM_ALL","TRUE"); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9c0d4b1..bc308f1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -213,8 +213,6 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) this->AddSourceGroup("Object Files", "\\.(lo|o|obj)$"); #endif - this->Properties.SetCMakeInstance(this->GetCMakeInstance()); - { const char* dir = this->GetCMakeInstance()->GetHomeDirectory(); this->AddDefinition("CMAKE_SOURCE_DIR", dir); @@ -4134,11 +4132,13 @@ void cmMakefile::AppendProperty(const std::string& prop, const char *cmMakefile::GetProperty(const std::string& prop) const { - return this->GetProperty(prop, cmProperty::DIRECTORY); + const bool chain = this->GetState()-> + IsPropertyChained(prop, cmProperty::DIRECTORY); + return this->GetProperty(prop, chain); } const char *cmMakefile::GetProperty(const std::string& prop, - cmProperty::ScopeType scope) const + bool chain) const { // watch for specific properties static std::string output; @@ -4242,15 +4242,13 @@ const char *cmMakefile::GetProperty(const std::string& prop, return output.c_str(); } - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, scope, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal && chain) { if(this->LocalGenerator->GetParent()) { return this->LocalGenerator->GetParent()->GetMakefile()-> - GetProperty(prop, scope); + GetProperty(prop, chain); } return this->GetState()->GetGlobalProperty(prop); } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index def0c23..7518631 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -717,8 +717,7 @@ public: void AppendProperty(const std::string& prop, const char *value, bool asString=false); const char *GetProperty(const std::string& prop) const; - const char *GetProperty(const std::string& prop, - cmProperty::ScopeType scope) const; + const char *GetProperty(const std::string& prop, bool chain) const; bool GetPropertyAsBool(const std::string& prop) const; const char* GetFeature(const std::string& feature, diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index de2cd05..ef09dbc 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -57,22 +57,13 @@ void cmPropertyMap::AppendProperty(const std::string& name, const char* value, } const char *cmPropertyMap -::GetPropertyValue(const std::string& name, - cmProperty::ScopeType scope, - bool &chain) const +::GetPropertyValue(const std::string& name) const { - chain = false; assert(!name.empty()); cmPropertyMap::const_iterator it = this->find(name); if (it == this->end()) { - // should we chain up? - if (this->CMakeInstance) - { - chain = this->CMakeInstance->GetState()-> - IsPropertyChained(name,scope); - } return 0; } return it->second.GetValue(); diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 722732b..a9062db 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -14,8 +14,6 @@ #include "cmProperty.h" -class cmake; - class cmPropertyMap : public std::map { public: @@ -26,16 +24,7 @@ public: void AppendProperty(const std::string& name, const char* value, bool asString=false); - const char *GetPropertyValue(const std::string& name, - cmProperty::ScopeType scope, - bool &chain) const; - - void SetCMakeInstance(cmake *cm) { this->CMakeInstance = cm; } - - cmPropertyMap() { this->CMakeInstance = 0;} - -private: - cmake *CMakeInstance; + const char *GetPropertyValue(const std::string& name) const; }; #endif diff --git a/Source/cmSetTestsPropertiesCommand.cxx b/Source/cmSetTestsPropertiesCommand.cxx index e9cfacc..53dc5a8 100644 --- a/Source/cmSetTestsPropertiesCommand.cxx +++ b/Source/cmSetTestsPropertiesCommand.cxx @@ -85,8 +85,10 @@ bool cmSetTestsPropertiesCommand unsigned int k; for (k = 0; k < propertyPairs.size(); k = k + 2) { - test->SetProperty(propertyPairs[k], - propertyPairs[k+1].c_str()); + if (!propertyPairs[k].empty()) + { + test->SetProperty(propertyPairs[k], propertyPairs[k+1].c_str()); + } } } else diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index df511d8..86f0a7a 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -22,7 +22,6 @@ cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name): Location(mf, name) { this->CustomCommand = 0; - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); this->FindFullPathFailed = false; this->IsUiFile = (".ui" == cmSystemTools::GetFilenameLastExtension(this->Location.GetName())); @@ -361,13 +360,16 @@ const char* cmSourceFile::GetProperty(const std::string& prop) const } } - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, cmProperty::SOURCE_FILE, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal) { cmMakefile const* mf = this->Location.GetMakefile(); - return mf->GetProperty(prop,cmProperty::SOURCE_FILE); + const bool chain = mf->GetState()-> + IsPropertyChained(prop, cmProperty::SOURCE_FILE); + if (chain) + { + return mf->GetProperty(prop, chain); + } } return retVal; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 7bfeda1..25b4966 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -482,9 +482,7 @@ const char *cmState::GetGlobalProperty(const std::string& prop) return FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT) + 1; } #undef STRING_LIST_ELEMENT - bool dummy = false; - return this->GlobalProperties.GetPropertyValue(prop, cmProperty::GLOBAL, - dummy); + return this->GlobalProperties.GetPropertyValue(prop); } bool cmState::GetGlobalPropertyAsBool(const std::string& prop) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 8731632..d1399ef 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -286,9 +286,6 @@ void cmTarget::SetMakefile(cmMakefile* mf) // Set our makefile. this->Makefile = mf; - // set the cmake instance of the properties - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); - // Check whether this is a DLL platform. this->DLLPlatform = (this->Makefile->IsOn("WIN32") || this->Makefile->IsOn("CYGWIN") || @@ -3167,12 +3164,15 @@ const char *cmTarget::GetProperty(const std::string& prop, } } - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, cmProperty::TARGET, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal) { - return this->Makefile->GetProperty(prop, cmProperty::TARGET); + const bool chain = this->GetMakefile()->GetState()-> + IsPropertyChained(prop, cmProperty::TARGET); + if (chain) + { + return this->Makefile->GetProperty(prop, chain); + } } return retVal; } diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index c606859..6fcd0dc 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -21,7 +21,6 @@ cmTest::cmTest(cmMakefile* mf) { this->Makefile = mf; this->OldStyle = true; - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); } //---------------------------------------------------------------------------- @@ -50,12 +49,15 @@ void cmTest::SetCommand(std::vector const& command) //---------------------------------------------------------------------------- const char *cmTest::GetProperty(const std::string& prop) const { - bool chain = false; - const char *retVal = - this->Properties.GetPropertyValue(prop, cmProperty::TEST, chain); - if (chain) + const char *retVal = this->Properties.GetPropertyValue(prop); + if (!retVal) { - return this->Makefile->GetProperty(prop,cmProperty::TEST); + const bool chain = this->Makefile->GetState()-> + IsPropertyChained(prop, cmProperty::TEST); + if (chain) + { + return this->Makefile->GetProperty(prop, chain); + } } return retVal; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3ac4b90bfdcca97f1f63056c97afee38cf66ea12 commit 3ac4b90bfdcca97f1f63056c97afee38cf66ea12 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:20 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:30 2015 +0200 cmPropertyMap: Require a non-empty name parameter. The cmGetPropertyCommand already checks for this. diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index 76803c1..6717035 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -52,9 +52,11 @@ bool cmGetCMakePropertyCommand } else { - const char *prop = - this->Makefile->GetState() - ->GetGlobalProperty(args[1]); + const char *prop = 0; + if (!args[1].empty()) + { + prop = this->Makefile->GetState()->GetGlobalProperty(args[1]); + } if (prop) { output = prop; diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index 4fe3318..228e53c 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -84,7 +84,11 @@ bool cmGetDirectoryPropertyCommand return true; } - const char *prop = dir->GetProperty(*i); + const char *prop = 0; + if (!i->empty()) + { + prop = dir->GetProperty(*i); + } if (prop) { this->Makefile->AddDefinition(variable, prop); diff --git a/Source/cmGetSourceFilePropertyCommand.cxx b/Source/cmGetSourceFilePropertyCommand.cxx index 7667a85..46daa34 100644 --- a/Source/cmGetSourceFilePropertyCommand.cxx +++ b/Source/cmGetSourceFilePropertyCommand.cxx @@ -38,7 +38,11 @@ bool cmGetSourceFilePropertyCommand this->Makefile->AddDefinition(var, sf->GetLanguage().c_str()); return true; } - const char *prop = sf->GetPropertyForUser(args[2]); + const char *prop = 0; + if (!args[2].empty()) + { + prop = sf->GetPropertyForUser(args[2]); + } if (prop) { this->Makefile->AddDefinition(var, prop); diff --git a/Source/cmGetTargetPropertyCommand.cxx b/Source/cmGetTargetPropertyCommand.cxx index 315e851..ca40bd0 100644 --- a/Source/cmGetTargetPropertyCommand.cxx +++ b/Source/cmGetTargetPropertyCommand.cxx @@ -40,7 +40,11 @@ bool cmGetTargetPropertyCommand else if(cmTarget* tgt = this->Makefile->FindTargetToUse(targetName)) { cmTarget& target = *tgt; - const char* prop_cstr = target.GetProperty(args[2], this->Makefile); + const char* prop_cstr = 0; + if (!args[2].empty()) + { + prop_cstr = target.GetProperty(args[2], this->Makefile); + } if(prop_cstr) { prop = prop_cstr; diff --git a/Source/cmGetTestPropertyCommand.cxx b/Source/cmGetTestPropertyCommand.cxx index b3df4c3..bf34589 100644 --- a/Source/cmGetTestPropertyCommand.cxx +++ b/Source/cmGetTestPropertyCommand.cxx @@ -29,7 +29,11 @@ bool cmGetTestPropertyCommand cmTest *test = this->Makefile->GetTest(testName); if (test) { - const char *prop = test->GetProperty(args[1]); + const char *prop = 0; + if (!args[1].empty()) + { + prop = test->GetProperty(args[1]); + } if (prop) { this->Makefile->AddDefinition(var, prop); diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index d1402c8..de2cd05 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -14,6 +14,8 @@ #include "cmake.h" #include "cmState.h" +#include + cmProperty *cmPropertyMap::GetOrCreateProperty(const std::string& name) { cmPropertyMap::iterator it = this->find(name); @@ -60,10 +62,7 @@ const char *cmPropertyMap bool &chain) const { chain = false; - if (name.empty()) - { - return 0; - } + assert(!name.empty()); cmPropertyMap::const_iterator it = this->find(name); if (it == this->end()) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7c0aa672fe4f1b5c4a15a89d90cd80009a1399d0 commit 7c0aa672fe4f1b5c4a15a89d90cd80009a1399d0 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:15 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:30 2015 +0200 cmPropertyMap: Remove scope parameter from API where not used. diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index c55ea35..bd8c10c 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -662,7 +662,7 @@ void CCONV cmSourceFileSetProperty(void *arg,const char *prop, else if(prop) { if(!value) { value = "NOTFOUND"; } - sf->Properties.SetProperty(prop, value, cmProperty::SOURCE_FILE); + sf->Properties.SetProperty(prop, value); } } @@ -801,8 +801,7 @@ void CCONV cmSourceFileSetName2(void *arg, const char* name, const char* dir, // Implement the old SetName method code here. if(headerFileOnly) { - sf->Properties.SetProperty("HEADER_FILE_ONLY", "1", - cmProperty::SOURCE_FILE); + sf->Properties.SetProperty("HEADER_FILE_ONLY", "1"); } sf->SourceName = name; std::string fname = sf->SourceName; diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 108208e..6af14f2 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -763,7 +763,7 @@ void cmCacheManager::CacheEntry::SetProperty(const std::string& prop, } else { - this->Properties.SetProperty(prop, value, cmProperty::CACHE); + this->Properties.SetProperty(prop, value); } } @@ -789,7 +789,7 @@ void cmCacheManager::CacheEntry::AppendProperty(const std::string& prop, } else { - this->Properties.AppendProperty(prop, value, cmProperty::CACHE, asString); + this->Properties.AppendProperty(prop, value, asString); } } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3ac77e9..9c0d4b1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4089,7 +4089,7 @@ void cmMakefile::SetProperty(const std::string& prop, const char* value) } } - this->Properties.SetProperty(prop,value,cmProperty::DIRECTORY); + this->Properties.SetProperty(prop, value); } void cmMakefile::AppendProperty(const std::string& prop, @@ -4129,7 +4129,7 @@ void cmMakefile::AppendProperty(const std::string& prop, return; } - this->Properties.AppendProperty(prop,value,cmProperty::DIRECTORY,asString); + this->Properties.AppendProperty(prop, value, asString); } const char *cmMakefile::GetProperty(const std::string& prop) const diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 03124dc..d1402c8 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -29,29 +29,26 @@ cmProperty *cmPropertyMap::GetOrCreateProperty(const std::string& name) return prop; } -void cmPropertyMap::SetProperty(const std::string& name, const char *value, - cmProperty::ScopeType scope) +void cmPropertyMap::SetProperty(const std::string& name, const char *value) { if(!value) { this->erase(name); return; } - (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); prop->Set(value); } void cmPropertyMap::AppendProperty(const std::string& name, const char* value, - cmProperty::ScopeType scope, bool asString) + bool asString) { // Skip if nothing to append. if(!value || !*value) { return; } - (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); prop->Append(value,asString); diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 02d4235..722732b 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -21,11 +21,10 @@ class cmPropertyMap : public std::map public: cmProperty *GetOrCreateProperty(const std::string& name); - void SetProperty(const std::string& name, const char *value, - cmProperty::ScopeType scope); + void SetProperty(const std::string& name, const char *value); void AppendProperty(const std::string& name, const char* value, - cmProperty::ScopeType scope, bool asString=false); + bool asString=false); const char *GetPropertyValue(const std::string& name, cmProperty::ScopeType scope, diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 724ab39..df511d8 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -299,7 +299,7 @@ bool cmSourceFile::Matches(cmSourceFileLocation const& loc) //---------------------------------------------------------------------------- void cmSourceFile::SetProperty(const std::string& prop, const char* value) { - this->Properties.SetProperty(prop, value, cmProperty::SOURCE_FILE); + this->Properties.SetProperty(prop, value); if (this->IsUiFile) { @@ -315,8 +315,7 @@ void cmSourceFile::SetProperty(const std::string& prop, const char* value) void cmSourceFile::AppendProperty(const std::string& prop, const char* value, bool asString) { - this->Properties.AppendProperty(prop, value, cmProperty::SOURCE_FILE, - asString); + this->Properties.AppendProperty(prop, value, asString); } //---------------------------------------------------------------------------- diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 15a4638..7bfeda1 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -438,14 +438,13 @@ void cmState::RemoveUserDefinedCommands() void cmState::SetGlobalProperty(const std::string& prop, const char* value) { - this->GlobalProperties.SetProperty(prop, value, cmProperty::GLOBAL); + this->GlobalProperties.SetProperty(prop, value); } void cmState::AppendGlobalProperty(const std::string& prop, const char* value, bool asString) { - this->GlobalProperties.AppendProperty(prop, value, - cmProperty::GLOBAL, asString); + this->GlobalProperties.AppendProperty(prop, value, asString); } const char *cmState::GetGlobalProperty(const std::string& prop) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 4436966..8731632 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -1772,7 +1772,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) } else { - this->Properties.SetProperty(prop, value, cmProperty::TARGET); + this->Properties.SetProperty(prop, value); this->MaybeInvalidatePropertyCache(prop); } } @@ -1857,7 +1857,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value, } else { - this->Properties.AppendProperty(prop, value, cmProperty::TARGET, asString); + this->Properties.AppendProperty(prop, value, asString); this->MaybeInvalidatePropertyCache(prop); } } @@ -2938,8 +2938,7 @@ const char *cmTarget::GetProperty(const std::string& prop, // cannot take into account the per-configuration name of the // target because the configuration type may not be known at // CMake time. - this->Properties.SetProperty(propLOCATION, this->GetLocationForBuild(), - cmProperty::TARGET); + this->Properties.SetProperty(propLOCATION, this->GetLocationForBuild()); } // Support "LOCATION_". @@ -2950,9 +2949,7 @@ const char *cmTarget::GetProperty(const std::string& prop, return 0; } const char* configName = prop.c_str() + 9; - this->Properties.SetProperty(prop, - this->GetLocation(configName), - cmProperty::TARGET); + this->Properties.SetProperty(prop, this->GetLocation(configName)); } // Support "_LOCATION". else if(cmHasLiteralSuffix(prop, "_LOCATION")) @@ -2964,9 +2961,7 @@ const char *cmTarget::GetProperty(const std::string& prop, { return 0; } - this->Properties.SetProperty(prop, - this->GetLocation(configName), - cmProperty::TARGET); + this->Properties.SetProperty(prop, this->GetLocation(configName)); } } } @@ -3168,8 +3163,7 @@ const char *cmTarget::GetProperty(const std::string& prop, } } } - this->Properties.SetProperty("SOURCES", ss.str().c_str(), - cmProperty::TARGET); + this->Properties.SetProperty("SOURCES", ss.str().c_str()); } } diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index ff5d411..c606859 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -69,12 +69,12 @@ bool cmTest::GetPropertyAsBool(const std::string& prop) const //---------------------------------------------------------------------------- void cmTest::SetProperty(const std::string& prop, const char* value) { - this->Properties.SetProperty(prop, value, cmProperty::TEST); + this->Properties.SetProperty(prop, value); } //---------------------------------------------------------------------------- void cmTest::AppendProperty(const std::string& prop, const char* value, bool asString) { - this->Properties.AppendProperty(prop, value, cmProperty::TEST, asString); + this->Properties.AppendProperty(prop, value, asString); } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9058e27a431b01319b18cc4099780fa017ada113 commit 9058e27a431b01319b18cc4099780fa017ada113 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:46:38 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:30 2015 +0200 Constify property definition API. diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx index 250bd35..36b6c64 100644 --- a/Source/cmGetPropertyCommand.cxx +++ b/Source/cmGetPropertyCommand.cxx @@ -142,8 +142,7 @@ bool cmGetPropertyCommand { // Lookup brief documentation. std::string output; - if(cmPropertyDefinition* def = - this->Makefile->GetState()-> + if(cmPropertyDefinition const* def = this->Makefile->GetState()-> GetPropertyDefinition(this->PropertyName, scope)) { output = def->GetShortDescription(); @@ -158,8 +157,7 @@ bool cmGetPropertyCommand { // Lookup full documentation. std::string output; - if(cmPropertyDefinition* def = - this->Makefile->GetState()-> + if(cmPropertyDefinition const* def = this->Makefile->GetState()-> GetPropertyDefinition(this->PropertyName, scope)) { output = def->GetFullDescription(); diff --git a/Source/cmPropertyDefinitionMap.cxx b/Source/cmPropertyDefinitionMap.cxx index 3875318..776fad1 100644 --- a/Source/cmPropertyDefinitionMap.cxx +++ b/Source/cmPropertyDefinitionMap.cxx @@ -29,9 +29,9 @@ void cmPropertyDefinitionMap } } -bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) +bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) const { - cmPropertyDefinitionMap::iterator it = this->find(name); + cmPropertyDefinitionMap::const_iterator it = this->find(name); if (it == this->end()) { return false; @@ -40,9 +40,9 @@ bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) return true; } -bool cmPropertyDefinitionMap::IsPropertyChained(const std::string& name) +bool cmPropertyDefinitionMap::IsPropertyChained(const std::string& name) const { - cmPropertyDefinitionMap::iterator it = this->find(name); + cmPropertyDefinitionMap::const_iterator it = this->find(name); if (it == this->end()) { return false; diff --git a/Source/cmPropertyDefinitionMap.h b/Source/cmPropertyDefinitionMap.h index 00c7328..f95c721 100644 --- a/Source/cmPropertyDefinitionMap.h +++ b/Source/cmPropertyDefinitionMap.h @@ -27,10 +27,10 @@ public: bool chain); // has a named property been defined - bool IsPropertyDefined(const std::string& name); + bool IsPropertyDefined(const std::string& name) const; // is a named property set to chain - bool IsPropertyChained(const std::string& name); + bool IsPropertyChained(const std::string& name) const; }; #endif diff --git a/Source/cmState.cxx b/Source/cmState.cxx index c6fb299..15a4638 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -256,27 +256,41 @@ void cmState::DefineProperty(const std::string& name, chained); } -cmPropertyDefinition *cmState +cmPropertyDefinition const* cmState ::GetPropertyDefinition(const std::string& name, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope) const { if (this->IsPropertyDefined(name,scope)) { - return &(this->PropertyDefinitions[scope][name]); + cmPropertyDefinitionMap const& defs = + this->PropertyDefinitions.find(scope)->second; + return &defs.find(name)->second; } return 0; } bool cmState::IsPropertyDefined(const std::string& name, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope) const { - return this->PropertyDefinitions[scope].IsPropertyDefined(name); + std::map::const_iterator it + = this->PropertyDefinitions.find(scope); + if (it == this->PropertyDefinitions.end()) + { + return false; + } + return it->second.IsPropertyDefined(name); } bool cmState::IsPropertyChained(const std::string& name, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope) const { - return this->PropertyDefinitions[scope].IsPropertyChained(name); + std::map::const_iterator it + = this->PropertyDefinitions.find(scope); + if (it == this->PropertyDefinitions.end()) + { + return false; + } + return it->second.IsPropertyChained(name); } void cmState::SetLanguageEnabled(std::string const& l) diff --git a/Source/cmState.h b/Source/cmState.h index 60b024f..b06f77c 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -102,12 +102,14 @@ public: bool chain = false); // get property definition - cmPropertyDefinition *GetPropertyDefinition - (const std::string& name, cmProperty::ScopeType scope); + cmPropertyDefinition const* GetPropertyDefinition + (const std::string& name, cmProperty::ScopeType scope) const; // Is a property defined? - bool IsPropertyDefined(const std::string& name, cmProperty::ScopeType scope); - bool IsPropertyChained(const std::string& name, cmProperty::ScopeType scope); + bool IsPropertyDefined(const std::string& name, + cmProperty::ScopeType scope) const; + bool IsPropertyChained(const std::string& name, + cmProperty::ScopeType scope) const; void SetLanguageEnabled(std::string const& l); bool GetLanguageEnabled(std::string const& l) const; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1c48edf8fc8cec71c780cbb1c587f10df0ab7185 commit 1c48edf8fc8cec71c780cbb1c587f10df0ab7185 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:46:26 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:29 2015 +0200 cmProperty: Remove needless Name member. Size goes from 72 to 40 bytes with GNU libstdc++-5.1. diff --git a/Source/cmProperty.cxx b/Source/cmProperty.cxx index 40976db..ef57068 100644 --- a/Source/cmProperty.cxx +++ b/Source/cmProperty.cxx @@ -12,17 +12,14 @@ #include "cmProperty.h" #include "cmSystemTools.h" -void cmProperty::Set(const std::string& name, const char *value) +void cmProperty::Set(const char *value) { - this->Name = name; this->Value = value; this->ValueHasBeenSet = true; } -void cmProperty::Append(const std::string& name, const char *value, - bool asString) +void cmProperty::Append(const char *value, bool asString) { - this->Name = name; if(!this->Value.empty() && *value && !asString) { this->Value += ";"; diff --git a/Source/cmProperty.h b/Source/cmProperty.h index 659c4c3..e026372 100644 --- a/Source/cmProperty.h +++ b/Source/cmProperty.h @@ -21,11 +21,10 @@ public: TEST, VARIABLE, CACHED_VARIABLE, INSTALL }; // set this property - void Set(const std::string& name, const char *value); + void Set(const char *value); // append to this property - void Append(const std::string& name, const char *value, - bool asString = false); + void Append(const char *value, bool asString = false); // get the value const char *GetValue() const; @@ -34,7 +33,6 @@ public: cmProperty() { this->ValueHasBeenSet = false; } protected: - std::string Name; std::string Value; bool ValueHasBeenSet; }; diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 070f6f1..03124dc 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -40,7 +40,7 @@ void cmPropertyMap::SetProperty(const std::string& name, const char *value, (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); - prop->Set(name,value); + prop->Set(value); } void cmPropertyMap::AppendProperty(const std::string& name, const char* value, @@ -54,7 +54,7 @@ void cmPropertyMap::AppendProperty(const std::string& name, const char* value, (void)scope; cmProperty *prop = this->GetOrCreateProperty(name); - prop->Append(name,value,asString); + prop->Append(value,asString); } const char *cmPropertyMap http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=93cc2eef38eab76831916bfee9d6fe16fbaaf4c1 commit 93cc2eef38eab76831916bfee9d6fe16fbaaf4c1 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:41:05 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 09:29:29 2015 +0200 cmPolicies: Store all statuses in a single bitset. Currently there are an optimal number of policies (64) such that there are no wasted bits. When another policy is added, the cmPolicyMap will grow from 40 bytes to 80, and occupy 45. By storing all in a single bitset, we stay under the cache line size of 64 bytes until there are 512 policies in a range. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 3498adc..5026893 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -348,19 +348,19 @@ cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const { PolicyStatus status = cmPolicies::WARN; - if (this->OLD[id]) + if (this->Status[(POLICY_STATUS_COUNT * id) + OLD]) { status = cmPolicies::OLD; } - else if (this->NEW[id]) + else if (this->Status[(POLICY_STATUS_COUNT * id) + NEW]) { status = cmPolicies::NEW; } - else if (this->REQUIRED_ALWAYS[id]) + else if (this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS]) { status = cmPolicies::REQUIRED_ALWAYS; } - else if (this->REQUIRED_IF_USED[id]) + else if (this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED]) { status = cmPolicies::REQUIRED_IF_USED; } @@ -370,21 +370,25 @@ cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status) { - this->OLD[id] = (status == cmPolicies::OLD); - this->WARN[id] = (status == cmPolicies::WARN); - this->NEW[id] = (status == cmPolicies::NEW); - this->REQUIRED_ALWAYS[id] = (status == cmPolicies::REQUIRED_ALWAYS); - this->REQUIRED_IF_USED[id] = (status == cmPolicies::REQUIRED_IF_USED); + this->Status[(POLICY_STATUS_COUNT * id) + OLD] = (status == OLD); + this->Status[(POLICY_STATUS_COUNT * id) + WARN] = (status == WARN); + this->Status[(POLICY_STATUS_COUNT * id) + NEW] = (status == NEW); + this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS] = + (status == REQUIRED_ALWAYS); + this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED] = + (status == REQUIRED_IF_USED); } bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const { - return this->OLD[id] || this->WARN[id] || this->NEW[id] - || this->REQUIRED_ALWAYS[id] || this->REQUIRED_IF_USED[id]; + return this->Status[(POLICY_STATUS_COUNT * id) + OLD] + || this->Status[(POLICY_STATUS_COUNT * id) + WARN] + || this->Status[(POLICY_STATUS_COUNT * id) + NEW] + || this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_ALWAYS] + || this->Status[(POLICY_STATUS_COUNT * id) + REQUIRED_IF_USED]; } bool cmPolicies::PolicyMap::IsEmpty() const { - return this->OLD.none() && this->WARN.none() && this->NEW.none() - && this->REQUIRED_ALWAYS.none() && this->REQUIRED_IF_USED.none(); + return this->Status.none(); } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 8c72dfe..8a3c27d 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -244,6 +244,7 @@ public: REQUIRED_IF_USED, REQUIRED_ALWAYS ///< Issue an error unless user sets policy status to NEW. }; +#define POLICY_STATUS_COUNT 5 /// Policy identifiers enum PolicyID @@ -287,11 +288,7 @@ public: bool IsEmpty() const; private: - std::bitset OLD; - std::bitset WARN; - std::bitset NEW; - std::bitset REQUIRED_IF_USED; - std::bitset REQUIRED_ALWAYS; + std::bitset Status; }; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44a8115797cc3f804d653928d71b126b39e29210 commit 44a8115797cc3f804d653928d71b126b39e29210 Author: Stephen Kelly AuthorDate: Sat Jun 6 09:40:58 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 6 10:09:45 2015 +0200 cmPolicies: Replace UNDEFINED bitset with WARN bitset. Might as well use the existing concept. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index f8d61db..3498adc 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -343,11 +343,6 @@ cmPolicies::GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id) return e.str(); } -cmPolicies::PolicyMap::PolicyMap() -{ - this->UNDEFINED.set(); -} - cmPolicies::PolicyStatus cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const { @@ -375,8 +370,8 @@ cmPolicies::PolicyMap::Get(cmPolicies::PolicyID id) const void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status) { - this->UNDEFINED.reset(id); this->OLD[id] = (status == cmPolicies::OLD); + this->WARN[id] = (status == cmPolicies::WARN); this->NEW[id] = (status == cmPolicies::NEW); this->REQUIRED_ALWAYS[id] = (status == cmPolicies::REQUIRED_ALWAYS); this->REQUIRED_IF_USED[id] = (status == cmPolicies::REQUIRED_IF_USED); @@ -384,10 +379,12 @@ void cmPolicies::PolicyMap::Set(cmPolicies::PolicyID id, bool cmPolicies::PolicyMap::IsDefined(cmPolicies::PolicyID id) const { - return !this->UNDEFINED[id]; + return this->OLD[id] || this->WARN[id] || this->NEW[id] + || this->REQUIRED_ALWAYS[id] || this->REQUIRED_IF_USED[id]; } bool cmPolicies::PolicyMap::IsEmpty() const { - return !this->UNDEFINED.none(); + return this->OLD.none() && this->WARN.none() && this->NEW.none() + && this->REQUIRED_ALWAYS.none() && this->REQUIRED_IF_USED.none(); } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 00d857a..8c72dfe 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -281,15 +281,14 @@ public: /** Represent a set of policy values. */ struct PolicyMap { - PolicyMap(); PolicyStatus Get(PolicyID id) const; void Set(PolicyID id, PolicyStatus status); bool IsDefined(PolicyID id) const; bool IsEmpty() const; private: - std::bitset UNDEFINED; std::bitset OLD; + std::bitset WARN; std::bitset NEW; std::bitset REQUIRED_IF_USED; std::bitset REQUIRED_ALWAYS; ----------------------------------------------------------------------- Summary of changes: Source/cmCommandArgumentParserHelper.h | 8 ++++---- Source/cmComputeComponentGraph.h | 4 ++-- Source/cmGlobalGenerator.h | 14 ++++++++------ Source/cmGraphVizWriter.cxx | 2 +- Source/cmGraphVizWriter.h | 15 +++++++-------- Source/cmInstallFilesGenerator.cxx | 6 ++++-- Source/cmInstallFilesGenerator.h | 2 +- Source/cmInstallTargetGenerator.cxx | 4 +++- Source/cmInstallTargetGenerator.h | 6 ++---- Source/cmOrderDirectories.h | 5 ++--- Source/cmProcessTools.cxx | 2 +- Source/cmProcessTools.h | 6 +++--- Source/cmQtAutoGenerators.h | 3 +-- 13 files changed, 39 insertions(+), 38 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 04:38:07 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 04:38:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-204-g2c96d81 Message-ID: <20150607083807.9FAE6B0193@public.kitware.com> 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 2c96d8121c0b5d524d432361f1e628eccffd5f72 (commit) via 4ab7d407a5e46f91bf57fb1f9be7387ba989e0ec (commit) via e133e40937031004d11b0d16289cee1bf0dc5e4f (commit) via c197c6928128558e24ee094286e494e74b272f20 (commit) via cb1a9c7b9cc48ac1f908ece7bb55a342bd943fec (commit) from 5355cb142ed77f2f4ada6a0d5abc21f09be150da (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=2c96d8121c0b5d524d432361f1e628eccffd5f72 commit 2c96d8121c0b5d524d432361f1e628eccffd5f72 Merge: 5355cb1 4ab7d40 Author: Stephen Kelly AuthorDate: Sun Jun 7 04:38:06 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 04:38:06 2015 -0400 Merge topic 'minor-cleanups' into next 4ab7d407 cmExportTryCompileFileGenerator: Add newline between methods. e133e409 cmExportTryCompileFileGenerator: Remove unused variable. c197c692 cmDocumentation: Remove unused include. cb1a9c7b CMake Nightly Date Stamp http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4ab7d407a5e46f91bf57fb1f9be7387ba989e0ec commit 4ab7d407a5e46f91bf57fb1f9be7387ba989e0ec Author: Stephen Kelly AuthorDate: Sat Jun 6 22:54:50 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:32:53 2015 +0200 cmExportTryCompileFileGenerator: Add newline between methods. diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx index 6c5f48f..dfb991b 100644 --- a/Source/cmExportTryCompileFileGenerator.cxx +++ b/Source/cmExportTryCompileFileGenerator.cxx @@ -116,6 +116,7 @@ cmExportTryCompileFileGenerator::PopulateProperties(cmTarget const* target, } } } + std::string cmExportTryCompileFileGenerator::InstallNameDir(cmTarget* target, const std::string& config) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e133e40937031004d11b0d16289cee1bf0dc5e4f commit e133e40937031004d11b0d16289cee1bf0dc5e4f Author: Stephen Kelly AuthorDate: Sat Jun 6 22:52:44 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:32:27 2015 +0200 cmExportTryCompileFileGenerator: Remove unused variable. diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx index eb8d193..6c5f48f 100644 --- a/Source/cmExportTryCompileFileGenerator.cxx +++ b/Source/cmExportTryCompileFileGenerator.cxx @@ -99,8 +99,6 @@ cmExportTryCompileFileGenerator::PopulateProperties(cmTarget const* target, || i->first.find("IMPORTED_LINK_DEPENDENT_LIBRARIES") == 0 || i->first.find("INTERFACE_LINK_LIBRARIES") == 0) { - const std::string libs = i->second.GetValue(); - std::string evalResult = this->FindTargets(i->first, target, emitted); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c197c6928128558e24ee094286e494e74b272f20 commit c197c6928128558e24ee094286e494e74b272f20 Author: Stephen Kelly AuthorDate: Sat Jun 6 22:44:44 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:32:02 2015 +0200 cmDocumentation: Remove unused include. diff --git a/Source/cmDocumentation.h b/Source/cmDocumentation.h index 8854c36..b6c5fde 100644 --- a/Source/cmDocumentation.h +++ b/Source/cmDocumentation.h @@ -13,7 +13,6 @@ #define _cmDocumentation_h #include "cmStandardIncludes.h" -#include "cmProperty.h" #include "cmDocumentationFormatter.h" #include "cmDocumentationSection.h" #include "cmake.h" ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Source/cmDocumentation.h | 1 - Source/cmExportTryCompileFileGenerator.cxx | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 05:00:25 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 05:00:25 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-207-g553626c Message-ID: <20150607090025.D4128B03F8@public.kitware.com> 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 553626cab6cb2a9173422359f2e1e62d1912c6b9 (commit) via 34e1d6db722b34bb6b4f7b8a7ea53a0bb61c5f58 (commit) via 54cb76f299ebcdd07e59d3d0c61f1aa0ffe03a33 (commit) from 2c96d8121c0b5d524d432361f1e628eccffd5f72 (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=553626cab6cb2a9173422359f2e1e62d1912c6b9 commit 553626cab6cb2a9173422359f2e1e62d1912c6b9 Merge: 2c96d81 34e1d6d Author: Stephen Kelly AuthorDate: Sun Jun 7 05:00:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 05:00:25 2015 -0400 Merge topic 'data-layout' into next 34e1d6db cmCustomCommand: Re-arrange data layout. 54cb76f2 cmComputeLinkDepends: Re-arrange data layout. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=34e1d6db722b34bb6b4f7b8a7ea53a0bb61c5f58 commit 34e1d6db722b34bb6b4f7b8a7ea53a0bb61c5f58 Author: Stephen Kelly AuthorDate: Sun Jun 7 10:44:59 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:48:15 2015 +0200 cmCustomCommand: Re-arrange data layout. Size goes from 240 to 224 bytes. diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx index 4032b08..7418413 100644 --- a/Source/cmCustomCommand.cxx +++ b/Source/cmCustomCommand.cxx @@ -31,12 +31,12 @@ cmCustomCommand::cmCustomCommand(const cmCustomCommand& r): Byproducts(r.Byproducts), Depends(r.Depends), CommandLines(r.CommandLines), - HaveComment(r.HaveComment), + Backtrace(r.Backtrace), Comment(r.Comment), WorkingDirectory(r.WorkingDirectory), + HaveComment(r.HaveComment), EscapeAllowMakeVars(r.EscapeAllowMakeVars), EscapeOldStyle(r.EscapeOldStyle), - Backtrace(r.Backtrace), UsesTerminal(r.UsesTerminal) { } @@ -77,15 +77,13 @@ cmCustomCommand::cmCustomCommand(cmMakefile const* mf, Byproducts(byproducts), Depends(depends), CommandLines(commandLines), - HaveComment(comment?true:false), + Backtrace(), Comment(comment?comment:""), WorkingDirectory(workingDirectory?workingDirectory:""), + HaveComment(comment?true:false), EscapeAllowMakeVars(false), - EscapeOldStyle(true), - Backtrace() + EscapeOldStyle(true) { - this->EscapeOldStyle = true; - this->EscapeAllowMakeVars = false; if(mf) { this->Backtrace = mf->GetBacktrace(); diff --git a/Source/cmCustomCommand.h b/Source/cmCustomCommand.h index 0bfaef2..cc5501f 100644 --- a/Source/cmCustomCommand.h +++ b/Source/cmCustomCommand.h @@ -93,13 +93,13 @@ private: std::vector Byproducts; std::vector Depends; cmCustomCommandLines CommandLines; - bool HaveComment; + cmListFileBacktrace Backtrace; + ImplicitDependsList ImplicitDepends; std::string Comment; std::string WorkingDirectory; + bool HaveComment; bool EscapeAllowMakeVars; bool EscapeOldStyle; - cmListFileBacktrace Backtrace; - ImplicitDependsList ImplicitDepends; bool UsesTerminal; }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=54cb76f299ebcdd07e59d3d0c61f1aa0ffe03a33 commit 54cb76f299ebcdd07e59d3d0c61f1aa0ffe03a33 Author: Stephen Kelly AuthorDate: Sun Jun 7 10:41:16 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 10:41:47 2015 +0200 cmComputeLinkDepends: Re-arrange data layout. Size goes from 648 to 632 bytes. diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h index 09b9d70..51a08c5 100644 --- a/Source/cmComputeLinkDepends.h +++ b/Source/cmComputeLinkDepends.h @@ -61,14 +61,7 @@ private: cmMakefile* Makefile; cmGlobalGenerator const* GlobalGenerator; cmake* CMakeInstance; - bool DebugMode; - - // Configuration information. - bool HasConfig; std::string Config; - cmTarget::LinkLibraryType LinkType; - - // Output information. EntryVector FinalLinkEntries; typedef cmTarget::LinkLibraryVectorType LinkLibraryVectorType; @@ -131,7 +124,7 @@ private: void OrderLinkEntires(); std::vector ComponentVisited; std::vector ComponentOrder; - int ComponentOrderId; + struct PendingComponent { // The real component id. Needed because the map is indexed by @@ -158,11 +151,14 @@ private: // Record of the original link line. std::vector OriginalEntries; + std::set OldWrongConfigItems; + void CheckWrongConfigItem(cmLinkItem const& item); - // Compatibility help. + int ComponentOrderId; + cmTarget::LinkLibraryType LinkType; + bool HasConfig; + bool DebugMode; bool OldLinkDirMode; - void CheckWrongConfigItem(cmLinkItem const& item); - std::set OldWrongConfigItems; }; #endif ----------------------------------------------------------------------- Summary of changes: Source/cmComputeLinkDepends.h | 18 +++++++----------- Source/cmCustomCommand.cxx | 12 +++++------- Source/cmCustomCommand.h | 6 +++--- 3 files changed, 15 insertions(+), 21 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 05:35:04 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 05:35:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-209-g2020cee Message-ID: <20150607093504.52F1DB006D@public.kitware.com> 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 2020cee1a8030aa2cc762216fc41f79a58e9ed20 (commit) via 8174e5cd9424a7f45174562f21eb80eb06a3f3d0 (commit) from 553626cab6cb2a9173422359f2e1e62d1912c6b9 (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=2020cee1a8030aa2cc762216fc41f79a58e9ed20 commit 2020cee1a8030aa2cc762216fc41f79a58e9ed20 Merge: 553626c 8174e5c Author: Stephen Kelly AuthorDate: Sun Jun 7 05:35:03 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 05:35:03 2015 -0400 Merge topic 'data-layout' into next 8174e5cd cmCustomCommand: Remove special member functions. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8174e5cd9424a7f45174562f21eb80eb06a3f3d0 commit 8174e5cd9424a7f45174562f21eb80eb06a3f3d0 Author: Stephen Kelly AuthorDate: Sun Jun 7 11:09:32 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 11:09:32 2015 +0200 cmCustomCommand: Remove special member functions. The compiler generated ones are fine. The existing implementations here are incorrect as they omit some members. diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx index 7418413..7c37e3b 100644 --- a/Source/cmCustomCommand.cxx +++ b/Source/cmCustomCommand.cxx @@ -26,46 +26,6 @@ cmCustomCommand::cmCustomCommand() } //---------------------------------------------------------------------------- -cmCustomCommand::cmCustomCommand(const cmCustomCommand& r): - Outputs(r.Outputs), - Byproducts(r.Byproducts), - Depends(r.Depends), - CommandLines(r.CommandLines), - Backtrace(r.Backtrace), - Comment(r.Comment), - WorkingDirectory(r.WorkingDirectory), - HaveComment(r.HaveComment), - EscapeAllowMakeVars(r.EscapeAllowMakeVars), - EscapeOldStyle(r.EscapeOldStyle), - UsesTerminal(r.UsesTerminal) -{ -} - -//---------------------------------------------------------------------------- -cmCustomCommand& cmCustomCommand::operator=(cmCustomCommand const& r) -{ - if(this == &r) - { - return *this; - } - - this->Outputs = r.Outputs; - this->Byproducts= r.Byproducts; - this->Depends = r.Depends; - this->CommandLines = r.CommandLines; - this->HaveComment = r.HaveComment; - this->Comment = r.Comment; - this->WorkingDirectory = r.WorkingDirectory; - this->EscapeAllowMakeVars = r.EscapeAllowMakeVars; - this->EscapeOldStyle = r.EscapeOldStyle; - this->ImplicitDepends = r.ImplicitDepends; - this->Backtrace = r.Backtrace; - this->UsesTerminal = r.UsesTerminal; - - return *this; -} - -//---------------------------------------------------------------------------- cmCustomCommand::cmCustomCommand(cmMakefile const* mf, const std::vector& outputs, const std::vector& byproducts, @@ -91,11 +51,6 @@ cmCustomCommand::cmCustomCommand(cmMakefile const* mf, } //---------------------------------------------------------------------------- -cmCustomCommand::~cmCustomCommand() -{ -} - -//---------------------------------------------------------------------------- const std::vector& cmCustomCommand::GetOutputs() const { return this->Outputs; diff --git a/Source/cmCustomCommand.h b/Source/cmCustomCommand.h index cc5501f..f9b38c3 100644 --- a/Source/cmCustomCommand.h +++ b/Source/cmCustomCommand.h @@ -26,8 +26,6 @@ class cmCustomCommand public: /** Default and copy constructors for STL containers. */ cmCustomCommand(); - cmCustomCommand(const cmCustomCommand& r); - cmCustomCommand& operator=(cmCustomCommand const& r); /** Main constructor specifies all information for the command. */ cmCustomCommand(cmMakefile const* mf, @@ -38,8 +36,6 @@ public: const char* comment, const char* workingDirectory); - ~cmCustomCommand(); - /** Get the output file produced by the command. */ const std::vector& GetOutputs() const; ----------------------------------------------------------------------- Summary of changes: Source/cmCustomCommand.cxx | 45 -------------------------------------------- Source/cmCustomCommand.h | 4 ---- 2 files changed, 49 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 09:19:07 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 09:19:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-213-g1070aa3 Message-ID: <20150607131907.2A754AB1A1@public.kitware.com> 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 1070aa3f78dd5d8b78080cc3921a8d786799493a (commit) via d0681b13d8785d1aed8b520d6be11e8f83dbb5e5 (commit) via aaf9b53f2ec25dbad9df7a457c46694de3c10d83 (commit) via cf7c5a0c7b11b6622c1e475be267a550cacca78c (commit) from 2020cee1a8030aa2cc762216fc41f79a58e9ed20 (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=1070aa3f78dd5d8b78080cc3921a8d786799493a commit 1070aa3f78dd5d8b78080cc3921a8d786799493a Merge: 2020cee d0681b1 Author: Stephen Kelly AuthorDate: Sun Jun 7 09:19:06 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 09:19:06 2015 -0400 Merge topic 'clean-up-cmMakefile' into next d0681b13 cmMakefile: Remove cacheOnly option from GetDefinitions. aaf9b53f cmGetCMakePropertyCommand: Don't explicitly specify default param. cf7c5a0c cmMakefile: Simplify handling of CACHE_VARIABLES property. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d0681b13d8785d1aed8b520d6be11e8f83dbb5e5 commit d0681b13d8785d1aed8b520d6be11e8f83dbb5e5 Author: Stephen Kelly AuthorDate: Sun Jun 7 15:12:51 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:15:49 2015 +0200 cmMakefile: Remove cacheOnly option from GetDefinitions. It is now unused. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 08f8da7..b00f293 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2497,18 +2497,11 @@ const char* cmMakefile::GetSafeDefinition(const std::string& def) const return ret; } -std::vector cmMakefile -::GetDefinitions(int cacheonly /* = 0 */) const +std::vector cmMakefile::GetDefinitions() const { - std::vector res; - if ( !cacheonly ) - { - res = this->Internal->ClosureKeys(); - } - std::vector cacheKeys = - this->GetState()->GetCacheEntryKeys(); + std::vector res = this->Internal->ClosureKeys(); + std::vector cacheKeys = this->GetState()->GetCacheEntryKeys(); res.insert(res.end(), cacheKeys.begin(), cacheKeys.end()); - std::sort(res.begin(), res.end()); return res; } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index def0c23..ca7d4b0 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -511,7 +511,7 @@ public: * cacheonly is specified and is greater than 0, then only cache * variables will be listed. */ - std::vector GetDefinitions(int cacheonly=0) const; + std::vector GetDefinitions() const; /** * Test a boolean variable to see if it is true or false. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aaf9b53f2ec25dbad9df7a457c46694de3c10d83 commit aaf9b53f2ec25dbad9df7a457c46694de3c10d83 Author: Stephen Kelly AuthorDate: Sun Jun 7 15:11:42 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:15:49 2015 +0200 cmGetCMakePropertyCommand: Don't explicitly specify default param. diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index 76803c1..61cf85b 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -32,8 +32,7 @@ bool cmGetCMakePropertyCommand if ( args[1] == "VARIABLES" ) { - int cacheonly = 0; - std::vector vars = this->Makefile->GetDefinitions(cacheonly); + std::vector vars = this->Makefile->GetDefinitions(); if (!vars.empty()) { output = cmJoin(vars, ";"); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cf7c5a0c7b11b6622c1e475be267a550cacca78c commit cf7c5a0c7b11b6622c1e475be267a550cacca78c Author: Stephen Kelly AuthorDate: Sun Jun 7 15:11:04 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:15:46 2015 +0200 cmMakefile: Simplify handling of CACHE_VARIABLES property. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3ac77e9..08f8da7 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4163,14 +4163,18 @@ const char *cmMakefile::GetProperty(const std::string& prop, output = cmJoin(this->ListFileStack, ";"); return output.c_str(); } - else if (prop == "VARIABLES" || prop == "CACHE_VARIABLES") + else if ( prop == "CACHE_VARIABLES" ) { - int cacheonly = 0; - if ( prop == "CACHE_VARIABLES" ) - { - cacheonly = 1; - } - output = cmJoin(this->GetDefinitions(cacheonly), ";"); + std::vector result = this->Internal->ClosureKeys(); + std::vector cacheKeys = this->GetState()->GetCacheEntryKeys(); + result.insert(result.end(), cacheKeys.begin(), cacheKeys.end()); + std::sort(result.begin(), result.end()); + output = cmJoin(result, ";"); + return output.c_str(); + } + else if (prop == "VARIABLES") + { + output = cmJoin(this->GetDefinitions(), ";"); return output.c_str(); } else if (prop == "MACROS") ----------------------------------------------------------------------- Summary of changes: Source/cmGetCMakePropertyCommand.cxx | 3 +-- Source/cmMakefile.cxx | 31 ++++++++++++++----------------- Source/cmMakefile.h | 2 +- 3 files changed, 16 insertions(+), 20 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 09:21:49 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 09:21:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-215-g54391ec Message-ID: <20150607132149.573DEAFFC8@public.kitware.com> 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 54391ec936461f964127223c2832fa7a4f297f14 (commit) via d4a14a7820e7a3a2a5648f52ae7b027d1b5ed6f5 (commit) from 1070aa3f78dd5d8b78080cc3921a8d786799493a (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=54391ec936461f964127223c2832fa7a4f297f14 commit 54391ec936461f964127223c2832fa7a4f297f14 Merge: 1070aa3 d4a14a7 Author: Stephen Kelly AuthorDate: Sun Jun 7 09:21:48 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 09:21:48 2015 -0400 Merge topic 'clean-up-cmMakefile' into next d4a14a78 fixup! cmMakefile: Simplify handling of CACHE_VARIABLES property. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d4a14a7820e7a3a2a5648f52ae7b027d1b5ed6f5 commit d4a14a7820e7a3a2a5648f52ae7b027d1b5ed6f5 Author: Stephen Kelly AuthorDate: Sun Jun 7 15:21:25 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:21:25 2015 +0200 fixup! cmMakefile: Simplify handling of CACHE_VARIABLES property. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b00f293..2a3c51b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4158,11 +4158,7 @@ const char *cmMakefile::GetProperty(const std::string& prop, } else if ( prop == "CACHE_VARIABLES" ) { - std::vector result = this->Internal->ClosureKeys(); - std::vector cacheKeys = this->GetState()->GetCacheEntryKeys(); - result.insert(result.end(), cacheKeys.begin(), cacheKeys.end()); - std::sort(result.begin(), result.end()); - output = cmJoin(result, ";"); + output = cmJoin(this->GetState()->GetCacheEntryKeys(), ";"); return output.c_str(); } else if (prop == "VARIABLES") ----------------------------------------------------------------------- Summary of changes: Source/cmMakefile.cxx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 7 09:22:08 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 7 Jun 2015 09:22:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-219-g2f67bcf Message-ID: <20150607132208.AAACCAFFD1@public.kitware.com> 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 2f67bcf5266384a557dceaa17161616a5d2044dd (commit) via 4c192fb53152a61015eb29c0a3826adeec16f8f8 (commit) via 046aafff12e6fa9834c7c114a59389df404ddf18 (commit) via 021c4b6f2bced25c9adbb472b94148987e1b6398 (commit) from 54391ec936461f964127223c2832fa7a4f297f14 (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=2f67bcf5266384a557dceaa17161616a5d2044dd commit 2f67bcf5266384a557dceaa17161616a5d2044dd Merge: 54391ec 4c192fb Author: Stephen Kelly AuthorDate: Sun Jun 7 09:22:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 7 09:22:07 2015 -0400 Merge topic 'clean-up-cmMakefile' into next 4c192fb5 cmMakefile: Remove cacheOnly option from GetDefinitions. 046aafff cmGetCMakePropertyCommand: Don't explicitly specify default param. 021c4b6f cmMakefile: Simplify handling of CACHE_VARIABLES property. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4c192fb53152a61015eb29c0a3826adeec16f8f8 commit 4c192fb53152a61015eb29c0a3826adeec16f8f8 Author: Stephen Kelly AuthorDate: Sun Jun 7 15:12:51 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:21:56 2015 +0200 cmMakefile: Remove cacheOnly option from GetDefinitions. It is now unused. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b083f70..2a3c51b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2497,18 +2497,11 @@ const char* cmMakefile::GetSafeDefinition(const std::string& def) const return ret; } -std::vector cmMakefile -::GetDefinitions(int cacheonly /* = 0 */) const +std::vector cmMakefile::GetDefinitions() const { - std::vector res; - if ( !cacheonly ) - { - res = this->Internal->ClosureKeys(); - } - std::vector cacheKeys = - this->GetState()->GetCacheEntryKeys(); + std::vector res = this->Internal->ClosureKeys(); + std::vector cacheKeys = this->GetState()->GetCacheEntryKeys(); res.insert(res.end(), cacheKeys.begin(), cacheKeys.end()); - std::sort(res.begin(), res.end()); return res; } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index def0c23..ca7d4b0 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -511,7 +511,7 @@ public: * cacheonly is specified and is greater than 0, then only cache * variables will be listed. */ - std::vector GetDefinitions(int cacheonly=0) const; + std::vector GetDefinitions() const; /** * Test a boolean variable to see if it is true or false. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=046aafff12e6fa9834c7c114a59389df404ddf18 commit 046aafff12e6fa9834c7c114a59389df404ddf18 Author: Stephen Kelly AuthorDate: Sun Jun 7 15:11:42 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:21:55 2015 +0200 cmGetCMakePropertyCommand: Don't explicitly specify default param. diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index 76803c1..61cf85b 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -32,8 +32,7 @@ bool cmGetCMakePropertyCommand if ( args[1] == "VARIABLES" ) { - int cacheonly = 0; - std::vector vars = this->Makefile->GetDefinitions(cacheonly); + std::vector vars = this->Makefile->GetDefinitions(); if (!vars.empty()) { output = cmJoin(vars, ";"); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=021c4b6f2bced25c9adbb472b94148987e1b6398 commit 021c4b6f2bced25c9adbb472b94148987e1b6398 Author: Stephen Kelly AuthorDate: Sun Jun 7 15:11:04 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 7 15:21:55 2015 +0200 cmMakefile: Simplify handling of CACHE_VARIABLES property. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3ac77e9..b083f70 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4163,14 +4163,14 @@ const char *cmMakefile::GetProperty(const std::string& prop, output = cmJoin(this->ListFileStack, ";"); return output.c_str(); } - else if (prop == "VARIABLES" || prop == "CACHE_VARIABLES") + else if ( prop == "CACHE_VARIABLES" ) { - int cacheonly = 0; - if ( prop == "CACHE_VARIABLES" ) - { - cacheonly = 1; - } - output = cmJoin(this->GetDefinitions(cacheonly), ";"); + output = cmJoin(this->GetState()->GetCacheEntryKeys(), ";"); + return output.c_str(); + } + else if (prop == "VARIABLES") + { + output = cmJoin(this->GetDefinitions(), ";"); return output.c_str(); } else if (prop == "MACROS") ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Mon Jun 8 00:01:04 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 8 Jun 2015 00:01:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-43-g9d68bd6 Message-ID: <20150608040104.E9785B03CC@public.kitware.com> 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, master has been updated via 9d68bd6a249e3c58fe4f7cb383ce27c14417c43c (commit) from cb1a9c7b9cc48ac1f908ece7bb55a342bd943fec (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=9d68bd6a249e3c58fe4f7cb383ce27c14417c43c commit 9d68bd6a249e3c58fe4f7cb383ce27c14417c43c Author: Kitware Robot AuthorDate: Mon Jun 8 00:01:03 2015 -0400 Commit: Kitware Robot CommitDate: Mon Jun 8 00:01:03 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 7ac1082..c9aec51 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150607) +set(CMake_VERSION_PATCH 20150608) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 09:07:21 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 09:07:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-221-g572f5cd Message-ID: <20150608130721.E30AFB05A6@public.kitware.com> 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 572f5cd0f989be995ddffee88cad9fe465569cbb (commit) via 0e708d17e9d667764d6363a3e03cadff27ca7992 (commit) from 2f67bcf5266384a557dceaa17161616a5d2044dd (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=572f5cd0f989be995ddffee88cad9fe465569cbb commit 572f5cd0f989be995ddffee88cad9fe465569cbb Merge: 2f67bcf 0e708d1 Author: Brad King AuthorDate: Mon Jun 8 09:07:21 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 09:07:21 2015 -0400 Merge topic 'doc-add_custom_command-clarify-TARGET_FILE' into next 0e708d17 Help: Reference TARGET_FILE genex in add_custom_command docs (#15605) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0e708d17e9d667764d6363a3e03cadff27ca7992 commit 0e708d17e9d667764d6363a3e03cadff27ca7992 Author: Brad King AuthorDate: Mon Jun 8 09:04:23 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 09:06:26 2015 -0400 Help: Reference TARGET_FILE genex in add_custom_command docs (#15605) When documenting in the COMMAND option how to reference an executable, we previously only explicitly covered how to do it for argv[0] and left it to the reader to follow the reference to the generator expressions manual. Add explicit mention of the TARGET_FILE genex in this documentation since it will be a commonly used generator expression in this context. diff --git a/Help/command/add_custom_command.rst b/Help/command/add_custom_command.rst index e646c56..ecbf9dd 100644 --- a/Help/command/add_custom_command.rst +++ b/Help/command/add_custom_command.rst @@ -79,6 +79,9 @@ The options are: If ``COMMAND`` specifies an executable target (created by the :command:`add_executable` command) it will automatically be replaced by the location of the executable created at build time. + (Use the ``TARGET_FILE`` + :manual:`generator expression ` to + reference an executable later in the command line.) Additionally a target-level dependency will be added so that the executable target will be built before any target using this custom command. However this does NOT add a file-level dependency that ----------------------------------------------------------------------- Summary of changes: Help/command/add_custom_command.rst | 3 +++ 1 file changed, 3 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 09:15:45 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 09:15:45 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-223-gfe8eb21 Message-ID: <20150608131545.78B5FAFDAE@public.kitware.com> 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 fe8eb21f76a0a61ef19d48002958757ece0ce298 (commit) via 2c9697431528ce78aa3aab9c0e1849641d9f61ec (commit) from 572f5cd0f989be995ddffee88cad9fe465569cbb (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=fe8eb21f76a0a61ef19d48002958757ece0ce298 commit fe8eb21f76a0a61ef19d48002958757ece0ce298 Merge: 572f5cd 2c96974 Author: Brad King AuthorDate: Mon Jun 8 09:15:44 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 09:15:44 2015 -0400 Merge topic 'FindwxWidgets-versioned-executable' into next 2c969743 FindwxWidgets: Fix find_program call for versioned names http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2c9697431528ce78aa3aab9c0e1849641d9f61ec commit 2c9697431528ce78aa3aab9c0e1849641d9f61ec Author: Brad King AuthorDate: Mon Jun 8 09:12:07 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 09:13:29 2015 -0400 FindwxWidgets: Fix find_program call for versioned names In commit v3.3.0-rc1~132^2 (FindwxWidgets: Search for wx-config-3.0 in addition to wx-config, 2015-04-29) we added a second (versioned) name to the find_program call. Specifying multiple names requires use of the NAMES option. Add it now. While at it, also add versioned names for 2.9 and 2.8. diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake index c16c011..9a70678 100644 --- a/Modules/FindwxWidgets.cmake +++ b/Modules/FindwxWidgets.cmake @@ -740,7 +740,8 @@ else() # UNIX: Start actual work. #----------------------------------------------------------------- # Support cross-compiling, only search in the target platform. - find_program(wxWidgets_CONFIG_EXECUTABLE wx-config wx-config-3.0 + find_program(wxWidgets_CONFIG_EXECUTABLE + NAMES wx-config wx-config-3.0 wx-config-2.9 wx-config-2.8 DOC "Location of wxWidgets library configuration provider binary (wx-config)." ONLY_CMAKE_FIND_ROOT_PATH ) ----------------------------------------------------------------------- Summary of changes: Modules/FindwxWidgets.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 09:59:50 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 09:59:50 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-225-g29450b7 Message-ID: <20150608135950.EB6B0B043A@public.kitware.com> 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 29450b7c1f9c9f9a3c64d49e0c53c28590247276 (commit) via d9b974b18ebad4bd84f40e7cebe01725f081bd5e (commit) from fe8eb21f76a0a61ef19d48002958757ece0ce298 (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=29450b7c1f9c9f9a3c64d49e0c53c28590247276 commit 29450b7c1f9c9f9a3c64d49e0c53c28590247276 Merge: fe8eb21 d9b974b Author: Brad King AuthorDate: Mon Jun 8 09:59:50 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 09:59:50 2015 -0400 Merge topic 'cmake-gui-osx-install-command-line' into next d9b974b1 cmake-gui: Make command-line install help text selectable http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9b974b18ebad4bd84f40e7cebe01725f081bd5e commit d9b974b18ebad4bd84f40e7cebe01725f081bd5e Author: Clinton Stimpson AuthorDate: Mon Jun 8 09:22:24 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 09:59:11 2015 -0400 cmake-gui: Make command-line install help text selectable This will allow users to cut-n-paste the instructions over to a command prompt. diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index 426fa12..bc783a3 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -445,6 +445,7 @@ void CMakeSetupDialog::doInstallForCommandLine() l->addWidget(lab); lab->setText(msg); lab->setWordWrap(false); + lab->setTextInteractionFlags(Qt::TextSelectableByMouse); QDialogButtonBox* btns = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, &dialog); QObject::connect(btns, SIGNAL(accepted()), &dialog, SLOT(accept())); ----------------------------------------------------------------------- Summary of changes: Source/QtDialog/CMakeSetupDialog.cxx | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:16:38 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:16:38 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-227-gafeb510 Message-ID: <20150608141638.78B70AFB24@public.kitware.com> 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 afeb51082864437d99ad97375f24e1f960466c49 (commit) via f5dbf00da67223c6f1d03cc4c88e05aa83b32f5b (commit) from 29450b7c1f9c9f9a3c64d49e0c53c28590247276 (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=afeb51082864437d99ad97375f24e1f960466c49 commit afeb51082864437d99ad97375f24e1f960466c49 Merge: 29450b7 f5dbf00 Author: Brad King AuthorDate: Mon Jun 8 10:16:37 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 10:16:37 2015 -0400 Merge topic 'mingw-find_library-dll-last' into next f5dbf00d Windows-GNU: Restore find_library treatment of '.dll' as linkable (#15409) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f5dbf00da67223c6f1d03cc4c88e05aa83b32f5b commit f5dbf00da67223c6f1d03cc4c88e05aa83b32f5b Author: Brad King AuthorDate: Mon Jun 8 10:08:59 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 10:16:18 2015 -0400 Windows-GNU: Restore find_library treatment of '.dll' as linkable (#15409) Revert commit v3.3.0-rc1~435^2 (Windows-GNU: Do not tell find_library to treat '.dll' as linkable, 2015-02-18). MinGW tools support linking to '.dll' files directly and many non-CMake build systems still do not provide a separate '.dll.a' file. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index 15127cc..0beb354 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -251,12 +251,6 @@ Deprecated and Removed Features Projects may populate the :ref:`User Package Registry` to aid users building multiple dependent projects one after another. -* When building with GNU tools on Windows (MinGW tools), the - :command:`find_library` command will no longer consider - ``.dll`` files to be linkable libraries. All dynamic link - libraries are expected to provide separate ``.dll.a`` or - ``.lib`` import libraries. - * The :command:`add_definitions()` command no longer causes a :prop_dir:`DEFINITIONS` directory property to be populated. See policy :policy:`CMP0059`. diff --git a/Modules/Platform/Windows-GNU.cmake b/Modules/Platform/Windows-GNU.cmake index b571b16..b97409c 100644 --- a/Modules/Platform/Windows-GNU.cmake +++ b/Modules/Platform/Windows-GNU.cmake @@ -35,7 +35,7 @@ endif() if(MINGW) set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") - set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib") + set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib") set(CMAKE_C_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32") set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") endif() ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 6 ------ Modules/Platform/Windows-GNU.cmake | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:27:25 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:27:25 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-230-g0a6a399 Message-ID: <20150608142725.8E439B016E@public.kitware.com> 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 0a6a39952fd764fc005041806dccb4945128be74 (commit) via 77ee6db50529abc784408d10156d5e4be61b8f18 (commit) via 124243c0eb6977690d4f99f17e8019c748af3668 (commit) from afeb51082864437d99ad97375f24e1f960466c49 (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=0a6a39952fd764fc005041806dccb4945128be74 commit 0a6a39952fd764fc005041806dccb4945128be74 Merge: afeb510 77ee6db Author: Brad King AuthorDate: Mon Jun 8 10:27:24 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 10:27:24 2015 -0400 Merge topic 'ExternalProject_init_selected_submodules' into next 77ee6db5 Help: Add notes for topic 'ExternalProject_init_selected_submodules' 124243c0 ExternalProject: Add unit tests for GIT_SUBMODULES argument http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=77ee6db50529abc784408d10156d5e4be61b8f18 commit 77ee6db50529abc784408d10156d5e4be61b8f18 Author: Brad King AuthorDate: Tue Jun 2 14:29:45 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 10:27:06 2015 -0400 Help: Add notes for topic 'ExternalProject_init_selected_submodules' diff --git a/Help/release/dev/ExternalProject_init_selected_submodules.rst b/Help/release/dev/ExternalProject_init_selected_submodules.rst new file mode 100644 index 0000000..e642c19 --- /dev/null +++ b/Help/release/dev/ExternalProject_init_selected_submodules.rst @@ -0,0 +1,7 @@ +ExternalProject_init_selected_submodules +---------------------------------------- + +* The :module:`ExternalProject` module :command:`ExternalProject_Add` + function ``GIT_SUBMODULES`` option now also limits the set of + submodules that are initialized in addition to the prior behavior + of limiting the set of submodules that are updated. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=124243c0eb6977690d4f99f17e8019c748af3668 commit 124243c0eb6977690d4f99f17e8019c748af3668 Author: Daniele E. Domenichelli AuthorDate: Thu May 28 19:39:19 2015 +0200 Commit: Brad King CommitDate: Mon Jun 8 10:27:06 2015 -0400 ExternalProject: Add unit tests for GIT_SUBMODULES argument diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt index de62ce7..b5041c7 100644 --- a/Tests/ExternalProject/CMakeLists.txt +++ b/Tests/ExternalProject/CMakeLists.txt @@ -364,6 +364,66 @@ if(do_git_tests) ) set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + # Unzip/untar the git repository in our source folder so that other + # projects below may use it to test git args of ExternalProject_Add + # + set(proj SetupLocalGITRepositoryWithSubmodules) + ExternalProject_Add(${proj} + SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/GIT-with-submodules + URL ${CMAKE_CURRENT_SOURCE_DIR}/gitrepo-sub.tgz + BUILD_COMMAND "" + CONFIGURE_COMMAND "${GIT_EXECUTABLE}" --version + INSTALL_COMMAND "" + ) + set_property(TARGET ${proj} + PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing") + + set(local_git_repo "../../LocalRepositories/GIT-with-submodules") + + set(proj TS1-GIT-no-GIT_SUBMODULES) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DWITH_m1:BOOL=ON + -DWITH_m2:BOOL=ON + BUILD_COMMAND "" + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + "SetupLocalGITRepositoryWithSubmodules" + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + + set(proj TS1-GIT-empty-GIT_SUBMODULES) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + GIT_SUBMODULES "" + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DWITH_m1:BOOL=ON + -DWITH_m2:BOOL=ON + BUILD_COMMAND "" + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + "SetupLocalGITRepositoryWithSubmodules" + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + + set(proj TS1-GIT-some-GIT_SUBMODULES) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + GIT_SUBMODULES "m/m1" + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DWITH_m1:BOOL=ON + -DWITH_m2:BOOL=OFF + BUILD_COMMAND "" + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + "SetupLocalGITRepositoryWithSubmodules" + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + endif() set(do_hg_tests 0) diff --git a/Tests/ExternalProject/gitrepo-sub.tgz b/Tests/ExternalProject/gitrepo-sub.tgz new file mode 100644 index 0000000..c0b5360 Binary files /dev/null and b/Tests/ExternalProject/gitrepo-sub.tgz differ ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:34:51 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:34:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-47-g092133b Message-ID: <20150608143451.36696B056C@public.kitware.com> 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, master has been updated via 092133b1bace24c718a5798a800570a3f384e618 (commit) via 77ee6db50529abc784408d10156d5e4be61b8f18 (commit) via 124243c0eb6977690d4f99f17e8019c748af3668 (commit) via 14e2c3ad181e2090cb0846fb87743f7543484d08 (commit) from 9d68bd6a249e3c58fe4f7cb383ce27c14417c43c (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=092133b1bace24c718a5798a800570a3f384e618 commit 092133b1bace24c718a5798a800570a3f384e618 Merge: 9d68bd6 77ee6db Author: Brad King AuthorDate: Mon Jun 8 10:34:49 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 10:34:49 2015 -0400 Merge topic 'ExternalProject_init_selected_submodules' 77ee6db5 Help: Add notes for topic 'ExternalProject_init_selected_submodules' 124243c0 ExternalProject: Add unit tests for GIT_SUBMODULES argument 14e2c3ad ExternalProject: Initialize only selected git submodules (#15590) ----------------------------------------------------------------------- Summary of changes: .../ExternalProject_init_selected_submodules.rst | 7 +++ Modules/ExternalProject.cmake | 2 +- Tests/ExternalProject/CMakeLists.txt | 60 ++++++++++++++++++++ Tests/ExternalProject/gitrepo-sub.tgz | Bin 0 -> 1911 bytes 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 Help/release/dev/ExternalProject_init_selected_submodules.rst create mode 100644 Tests/ExternalProject/gitrepo-sub.tgz hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:34:53 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:34:53 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-49-g534cc47 Message-ID: <20150608143453.02A02B056D@public.kitware.com> 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, master has been updated via 534cc47cd603b10aecb212576d03c9f687dce292 (commit) via 0e708d17e9d667764d6363a3e03cadff27ca7992 (commit) from 092133b1bace24c718a5798a800570a3f384e618 (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=534cc47cd603b10aecb212576d03c9f687dce292 commit 534cc47cd603b10aecb212576d03c9f687dce292 Merge: 092133b 0e708d1 Author: Brad King AuthorDate: Mon Jun 8 10:34:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 10:34:51 2015 -0400 Merge topic 'doc-add_custom_command-clarify-TARGET_FILE' 0e708d17 Help: Reference TARGET_FILE genex in add_custom_command docs (#15605) ----------------------------------------------------------------------- Summary of changes: Help/command/add_custom_command.rst | 3 +++ 1 file changed, 3 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:34:54 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:34:54 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-51-g25136d7 Message-ID: <20150608143454.DC9E8B0570@public.kitware.com> 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, master has been updated via 25136d73945f9e0a6fbfc4abfde61e4dbd10e6c6 (commit) via cdf2cba3e71b92c5bddf7afe760c131953f999a4 (commit) from 534cc47cd603b10aecb212576d03c9f687dce292 (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=25136d73945f9e0a6fbfc4abfde61e4dbd10e6c6 commit 25136d73945f9e0a6fbfc4abfde61e4dbd10e6c6 Merge: 534cc47 cdf2cba Author: Brad King AuthorDate: Mon Jun 8 10:34:53 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 10:34:53 2015 -0400 Merge topic 'vs-deterministic-guid' cdf2cba3 VS: Use cmUuid RFC 4122 compliant hash based UUID generation ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudio7Generator.cxx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:34:56 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:34:56 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-55-gc8997d1 Message-ID: <20150608143456.E6784B0570@public.kitware.com> 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, master has been updated via c8997d1b32c866b9f45c3af51e4abc431ca2ebc7 (commit) via 4e5c70abe27997f17318cc6aca38eeddec486798 (commit) via 7b9c75860d25479a153831740d289e8aca540f4d (commit) via 1b323949fe6770fa36846a5a85d049121c7ce2c4 (commit) from 25136d73945f9e0a6fbfc4abfde61e4dbd10e6c6 (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=c8997d1b32c866b9f45c3af51e4abc431ca2ebc7 commit c8997d1b32c866b9f45c3af51e4abc431ca2ebc7 Merge: 25136d7 4e5c70a Author: Brad King AuthorDate: Mon Jun 8 10:34:55 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 10:34:55 2015 -0400 Merge topic 'extract-cmLinkedTree' 4e5c70ab cmState: Extract a cmLinkedTree container adaptor. 7b9c7586 cmState: Group BuildsystemDirectory state together in a struct. 1b323949 cmState: Extend Snapshot concept with a SnapshotType. ----------------------------------------------------------------------- Summary of changes: Source/CMakeLists.txt | 1 + Source/cmLinkedTree.h | 164 +++++++++++++++++++++++++++++++++++++++++++++++++ Source/cmState.cxx | 144 +++++++++++++++++++++---------------------- Source/cmState.h | 29 +++++---- 4 files changed, 250 insertions(+), 88 deletions(-) create mode 100644 Source/cmLinkedTree.h hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 10:37:09 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 10:37:09 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-236-g3619ae8 Message-ID: <20150608143709.BD418B05E3@public.kitware.com> 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 3619ae8de984c60ce34c3471ef95a38f61eeaf99 (commit) via c8997d1b32c866b9f45c3af51e4abc431ca2ebc7 (commit) via 25136d73945f9e0a6fbfc4abfde61e4dbd10e6c6 (commit) via 534cc47cd603b10aecb212576d03c9f687dce292 (commit) via 092133b1bace24c718a5798a800570a3f384e618 (commit) via 9d68bd6a249e3c58fe4f7cb383ce27c14417c43c (commit) from 0a6a39952fd764fc005041806dccb4945128be74 (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=3619ae8de984c60ce34c3471ef95a38f61eeaf99 commit 3619ae8de984c60ce34c3471ef95a38f61eeaf99 Merge: 0a6a399 c8997d1 Author: Brad King AuthorDate: Mon Jun 8 10:37:01 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 10:37:01 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 13:54:04 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 13:54:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-66-gd18852d Message-ID: <20150608175404.6DCE6B028C@public.kitware.com> 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, master has been updated via d18852d5961584125ae113fae23f4b55a760e159 (commit) via 59e21ffa134faf0b089d9a704b3763e7f6f237d5 (commit) via 242dcc2c22535c00348de18bba41605428ccdb73 (commit) via 1cff330b0fcd635f47047bd1a2d94f344e88c0f9 (commit) via 2f1bd62b2308c234b5c4bc749afa27c7b616bdf1 (commit) via 0f2a132437d7a553e20cc0427279c212b428e55d (commit) via 4d8b79ad7e132ff876d131526a03a21c4f424f33 (commit) via 8680520feab8421f79c9762f1d3b6b92384c0b1e (commit) via 6d7abb6326d422dabdf72e8486b492ac20f8b347 (commit) via a82441572493e4f420fca24041b594da9d3c14e6 (commit) via 1f4ef39603f3184ac3f78e1f52529947303b1bd1 (commit) from c8997d1b32c866b9f45c3af51e4abc431ca2ebc7 (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=d18852d5961584125ae113fae23f4b55a760e159 commit d18852d5961584125ae113fae23f4b55a760e159 Merge: c8997d1 59e21ff Author: Brad King AuthorDate: Mon Jun 8 13:54:02 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 13:54:02 2015 -0400 Merge topic 'extract-cmOutputConverter' 59e21ffa Port static calls from cmLocalGenerator to cmOutputConverter. 242dcc2c cmListFileBacktrace: Replace local generator with cmState::Snapshot. 1cff330b cmTarget: Port to cmOutputConverter. 2f1bd62b cmCustomCommandGenerator: Port to cmOutputConverter. 0f2a1324 cmCommandArgumentParserHelper: Port to cmOutputConverter. 4d8b79ad cmComputeLinkInformation: Port to cmOutputConverter. 8680520f cmMakefile: Make the cmState::Snapshot accessible. 6d7abb63 cmOutputConverter: Extract from cmLocalGenerator. a8244157 cmState::Snapshot: Provide accessor for the cmState. 1f4ef396 cmLocalGenerator: Remove some commented lines of code. ----------------------------------------------------------------------- Summary of changes: Source/CMakeLists.txt | 2 + Source/cmCPackPropertiesGenerator.cxx | 8 +- Source/cmCommandArgumentParserHelper.cxx | 7 +- Source/cmComputeLinkInformation.cxx | 6 +- Source/cmComputeLinkInformation.h | 2 - Source/cmCoreTryCompile.cxx | 6 +- Source/cmCustomCommandGenerator.cxx | 7 +- Source/cmCustomCommandGenerator.h | 2 - Source/cmIfCommand.cxx | 2 +- Source/cmListFileCache.cxx | 8 +- Source/cmListFileCache.h | 8 +- Source/cmLocalGenerator.cxx | 423 +--------------------------- Source/cmLocalGenerator.h | 82 +----- Source/cmLocalUnixMakefileGenerator3.cxx | 6 +- Source/cmMakefile.cxx | 9 +- Source/cmMakefile.h | 2 + Source/cmMakefileTargetGenerator.cxx | 4 +- Source/cmOutputConverter.cxx | 447 ++++++++++++++++++++++++++++++ Source/cmOutputConverter.h | 106 +++++++ Source/cmQtAutoGenerators.cxx | 40 +-- Source/cmState.cxx | 5 + Source/cmState.h | 2 + Source/cmTarget.cxx | 6 +- Source/cmTestGenerator.cxx | 14 +- bootstrap | 1 + 25 files changed, 637 insertions(+), 568 deletions(-) create mode 100644 Source/cmOutputConverter.cxx create mode 100644 Source/cmOutputConverter.h hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 13:54:06 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 13:54:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-69-gf5690cc Message-ID: <20150608175406.8C4BBB02AE@public.kitware.com> 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, master has been updated via f5690cc57c0cd18ee8619332379f523c8fac46a1 (commit) via f573bd22e4049746b53789fc0502cff8423dbe56 (commit) via ccbc2259137fe61a770bb0b5538a20bf5e00bc8f (commit) from d18852d5961584125ae113fae23f4b55a760e159 (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=f5690cc57c0cd18ee8619332379f523c8fac46a1 commit f5690cc57c0cd18ee8619332379f523c8fac46a1 Merge: d18852d f573bd2 Author: Brad King AuthorDate: Mon Jun 8 13:54:05 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 13:54:05 2015 -0400 Merge topic 'move-Feature-API' f573bd22 cmLocalGenerator: Add Feature API from cmMakefile. ccbc2259 cmGeneratorTarget: Move Feature API from cmTarget. ----------------------------------------------------------------------- Summary of changes: Source/cmGeneratorTarget.cxx | 30 ++++++++++++++++++++++++++++- Source/cmGeneratorTarget.h | 5 +++++ Source/cmGlobalVisualStudio7Generator.cxx | 3 ++- Source/cmLocalGenerator.cxx | 27 ++++++++++++++++++++++++++ Source/cmLocalGenerator.h | 3 +++ Source/cmMakefile.cxx | 27 -------------------------- Source/cmMakefile.h | 3 --- Source/cmMakefileTargetGenerator.cxx | 4 ++-- Source/cmNinjaTargetGenerator.cxx | 5 +++-- Source/cmTarget.cxx | 28 --------------------------- Source/cmTarget.h | 5 ----- 11 files changed, 71 insertions(+), 69 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 13:54:08 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 13:54:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-73-g21c92a0 Message-ID: <20150608175408.5DA2BB02B3@public.kitware.com> 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, master has been updated via 21c92a00bf50afedf52388c5f5a73cba7f756561 (commit) via 4ab7d407a5e46f91bf57fb1f9be7387ba989e0ec (commit) via e133e40937031004d11b0d16289cee1bf0dc5e4f (commit) via c197c6928128558e24ee094286e494e74b272f20 (commit) from f5690cc57c0cd18ee8619332379f523c8fac46a1 (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=21c92a00bf50afedf52388c5f5a73cba7f756561 commit 21c92a00bf50afedf52388c5f5a73cba7f756561 Merge: f5690cc 4ab7d40 Author: Brad King AuthorDate: Mon Jun 8 13:54:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 13:54:07 2015 -0400 Merge topic 'minor-cleanups' 4ab7d407 cmExportTryCompileFileGenerator: Add newline between methods. e133e409 cmExportTryCompileFileGenerator: Remove unused variable. c197c692 cmDocumentation: Remove unused include. ----------------------------------------------------------------------- Summary of changes: Source/cmDocumentation.h | 1 - Source/cmExportTryCompileFileGenerator.cxx | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 13:54:10 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 13:54:10 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-83-gccc6fe9 Message-ID: <20150608175410.54C09B02BA@public.kitware.com> 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, master has been updated via ccc6fe94453444ebd5e655a9f90a5d074049f846 (commit) via 4c192fb53152a61015eb29c0a3826adeec16f8f8 (commit) via 046aafff12e6fa9834c7c114a59389df404ddf18 (commit) via 021c4b6f2bced25c9adbb472b94148987e1b6398 (commit) via 1981c9718b7099670b03535a241c735477d6bc6c (commit) via 353e422b2ad3d51dfc6c6db968ebcece10cbcc8d (commit) via 00bfa047481ed9f75444cb4954d7d72f616aef0f (commit) via db74ce5820e0d0a99649c6b472de74277e3fa6bf (commit) via ca140c2e898ca74a7daa305449b136b1294a41f0 (commit) via d5dc4169ac1c4dd5abd385b1e8499119df88c657 (commit) from 21c92a00bf50afedf52388c5f5a73cba7f756561 (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=ccc6fe94453444ebd5e655a9f90a5d074049f846 commit ccc6fe94453444ebd5e655a9f90a5d074049f846 Merge: 21c92a0 4c192fb Author: Brad King AuthorDate: Mon Jun 8 13:54:09 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 13:54:09 2015 -0400 Merge topic 'clean-up-cmMakefile' 4c192fb5 cmMakefile: Remove cacheOnly option from GetDefinitions. 046aafff cmGetCMakePropertyCommand: Don't explicitly specify default param. 021c4b6f cmMakefile: Simplify handling of CACHE_VARIABLES property. 1981c971 cmMakefile: Simplify InitializeFromParent method. 353e422b cmMakefile: Remove unused GetPolicies method. 00bfa047 cmMakefile: Out-of-line the cmMakefileCall. db74ce58 cmMakefile: Inline PushScope into PushFunctionScope. ca140c2e cmMakefile: Create a unified raii for macro scopes. d5dc4169 cmMakefile: Create a unified raii for function scopes. ----------------------------------------------------------------------- Summary of changes: Source/cmFunctionCommand.cxx | 14 +--- Source/cmGetCMakePropertyCommand.cxx | 3 +- Source/cmMacroCommand.cxx | 11 +--- Source/cmMakefile.cxx | 121 ++++++++++++++++++++++++++++------ Source/cmMakefile.h | 52 ++++++++++----- Source/cmake.h | 3 - 6 files changed, 141 insertions(+), 63 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 13:54:12 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 13:54:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-110-gd17aa60 Message-ID: <20150608175412.85CF2B02B4@public.kitware.com> 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, master has been updated via d17aa60659a1a69f9101c61a149eca5842291226 (commit) via 8174e5cd9424a7f45174562f21eb80eb06a3f3d0 (commit) via 34e1d6db722b34bb6b4f7b8a7ea53a0bb61c5f58 (commit) via 54cb76f299ebcdd07e59d3d0c61f1aa0ffe03a33 (commit) via b661d6c631884e48b27353b0ee9f4f0eb6f5eea7 (commit) via 40844a1487ea576987ecec148f77bbeebea9433d (commit) via b1ff32afc67799d08130d457347290a41e426ed0 (commit) via dd0417c7becb9d00bf60827d299b3d520bb138c5 (commit) via 125c48660ce5f58e8fa9371cfb9c192f42b19401 (commit) via 92b8b1fc3d885091cfef210216b682a389eaf2fb (commit) via 7f3e16239fd120eded5e23ee8a836d9e73119244 (commit) via d9df7fa70c854207bb36b45ca0fdca6665bd4bd8 (commit) via db24e41b9d939fb8ad9106f7a8511670505a8ad0 (commit) via 4cd13e80f00d4441112f400ff774d91a7fecfff8 (commit) via 3e087a408b4a5bad1eb079c61c982ce2dab0973a (commit) via e04217010345fd350d3ddd7897e47eb47eaec1d8 (commit) via c26696eb404888cec525bf3ee2e538ae8532156f (commit) via 41fef23b9b8bfa795e2d61e27b12f055ef9bbc39 (commit) via 647488570bfe7ce210bfd0675df0eb5147e36ab6 (commit) via 6f148e4a48f3f879998e67d9bb30de07f5cf5608 (commit) via 5181fae264444ad7736614ceb1e78c51def2b97c (commit) via 3ac4b90bfdcca97f1f63056c97afee38cf66ea12 (commit) via 7c0aa672fe4f1b5c4a15a89d90cd80009a1399d0 (commit) via 9058e27a431b01319b18cc4099780fa017ada113 (commit) via 1c48edf8fc8cec71c780cbb1c587f10df0ab7185 (commit) via 93cc2eef38eab76831916bfee9d6fe16fbaaf4c1 (commit) via 44a8115797cc3f804d653928d71b126b39e29210 (commit) from ccc6fe94453444ebd5e655a9f90a5d074049f846 (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=d17aa60659a1a69f9101c61a149eca5842291226 commit d17aa60659a1a69f9101c61a149eca5842291226 Merge: ccc6fe9 8174e5c Author: Brad King AuthorDate: Mon Jun 8 13:54:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 13:54:11 2015 -0400 Merge topic 'data-layout' 8174e5cd cmCustomCommand: Remove special member functions. 34e1d6db cmCustomCommand: Re-arrange data layout. 54cb76f2 cmComputeLinkDepends: Re-arrange data layout. b661d6c6 cmQtAutoGenerators: Re-arrange data layout. 40844a14 cmProcessTools: Re-arrange data layout. b1ff32af cmOrderDirectories: Re-arrange data layout. dd0417c7 cmInstallTargetGenerator: Re-arrange data layout. 125c4866 cmInstallFilesGenerator: Re-arrange data layout. 92b8b1fc cmGraphVizWriter: Re-arrange data layout. 7f3e1623 cmGlobalGenerator: Re-arrange data layout. d9df7fa7 cmComputeComponentGraph: Re-arrange data layout. db24e41b cmCommandArgumentParserHelper: Re-arrange data. 4cd13e80 cmComputeLinkInformation: Re-arrange data layout. 3e087a40 cmLocalUnixMakefileGenerator: Re-arrange data layout. e0421701 cmMakefile: Re-arrange data layout. c26696eb cmSourceFile: Re-arrange data. ... diff --cc Source/cmMakefile.h index 46df37b,32223b4..6f6ed27 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@@ -717,10 -715,12 +715,9 @@@ public void AppendProperty(const std::string& prop, const char *value, bool asString=false); const char *GetProperty(const std::string& prop) const; - const char *GetProperty(const std::string& prop, - cmProperty::ScopeType scope) const; + const char *GetProperty(const std::string& prop, bool chain) const; bool GetPropertyAsBool(const std::string& prop) const; - const char* GetFeature(const std::string& feature, - const std::string& config); - // Get the properties cmPropertyMap &GetProperties() { return this->Properties; } ----------------------------------------------------------------------- Summary of changes: Source/cmCPluginAPI.cxx | 15 ++----- Source/cmCacheManager.cxx | 11 ++--- Source/cmCommandArgumentParserHelper.h | 8 ++-- Source/cmComputeComponentGraph.h | 4 +- Source/cmComputeLinkDepends.h | 18 +++----- Source/cmComputeLinkInformation.h | 35 +++++++-------- Source/cmCustomCommand.cxx | 53 ++-------------------- Source/cmCustomCommand.h | 10 ++--- Source/cmGetCMakePropertyCommand.cxx | 8 ++-- Source/cmGetDirectoryPropertyCommand.cxx | 6 ++- Source/cmGetPropertyCommand.cxx | 6 +-- Source/cmGetSourceFilePropertyCommand.cxx | 6 ++- Source/cmGetTargetPropertyCommand.cxx | 6 ++- Source/cmGetTestPropertyCommand.cxx | 6 ++- Source/cmGlobalGenerator.cxx | 1 - Source/cmGlobalGenerator.h | 14 +++--- Source/cmGraphVizWriter.cxx | 2 +- Source/cmGraphVizWriter.h | 15 +++---- Source/cmInstallFilesGenerator.cxx | 6 ++- Source/cmInstallFilesGenerator.h | 2 +- Source/cmInstallTargetGenerator.cxx | 4 +- Source/cmInstallTargetGenerator.h | 6 +-- Source/cmLocalUnixMakefileGenerator3.h | 23 +++------- Source/cmMakefile.cxx | 20 ++++----- Source/cmMakefile.h | 19 ++++---- Source/cmOrderDirectories.h | 5 +-- Source/cmPolicies.cxx | 33 +++++++------- Source/cmPolicies.h | 8 +--- Source/cmProcessTools.cxx | 2 +- Source/cmProcessTools.h | 6 +-- Source/cmProperty.cxx | 7 +-- Source/cmProperty.h | 6 +-- Source/cmPropertyDefinitionMap.cxx | 8 ++-- Source/cmPropertyDefinitionMap.h | 4 +- Source/cmPropertyMap.cxx | 29 ++++-------- Source/cmPropertyMap.h | 18 ++------ Source/cmQtAutoGenerators.h | 3 +- Source/cmSetTestsPropertiesCommand.cxx | 6 ++- Source/cmSourceFile.cxx | 19 ++++---- Source/cmSourceFile.h | 4 +- Source/cmState.cxx | 37 ++++++++++------ Source/cmState.h | 10 +++-- Source/cmTarget.cxx | 69 +++++++++++------------------ Source/cmTarget.h | 61 ++++++++++--------------- Source/cmTest.cxx | 18 ++++---- 45 files changed, 272 insertions(+), 385 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 13:54:51 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 13:54:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-242-gef14e90 Message-ID: <20150608175451.598D8B02BD@public.kitware.com> 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 ef14e90a3fad93cc61c05560c364b8e22b9cbc92 (commit) via d17aa60659a1a69f9101c61a149eca5842291226 (commit) via ccc6fe94453444ebd5e655a9f90a5d074049f846 (commit) via 21c92a00bf50afedf52388c5f5a73cba7f756561 (commit) via f5690cc57c0cd18ee8619332379f523c8fac46a1 (commit) via d18852d5961584125ae113fae23f4b55a760e159 (commit) from 3619ae8de984c60ce34c3471ef95a38f61eeaf99 (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=ef14e90a3fad93cc61c05560c364b8e22b9cbc92 commit ef14e90a3fad93cc61c05560c364b8e22b9cbc92 Merge: 3619ae8 d17aa60 Author: Brad King AuthorDate: Mon Jun 8 13:54:40 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 13:54:40 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 14:16:48 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 14:16:48 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-244-g06d2158 Message-ID: <20150608181648.70E49AE429@public.kitware.com> 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 06d21584b51c2de5d520e3d201053a2a7d0af5be (commit) via 12436efc1483e8e0e5fd6ce616c0b8ed94af72a3 (commit) from ef14e90a3fad93cc61c05560c364b8e22b9cbc92 (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=06d21584b51c2de5d520e3d201053a2a7d0af5be commit 06d21584b51c2de5d520e3d201053a2a7d0af5be Merge: ef14e90 12436ef Author: Brad King AuthorDate: Mon Jun 8 14:16:47 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 14:16:47 2015 -0400 Merge topic 'ctest-script-mode-no-legacy-cygwin' into next 12436efc ctest: Disable CMake Cygwin legacy warning in dashboard client script http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=12436efc1483e8e0e5fd6ce616c0b8ed94af72a3 commit 12436efc1483e8e0e5fd6ce616c0b8ed94af72a3 Author: Brad King AuthorDate: Mon Jun 8 14:13:47 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 14:16:28 2015 -0400 ctest: Disable CMake Cygwin legacy warning in dashboard client script In ctest -S mode we load the CTestScriptMode module to give the configuration scripts access to the host system information. CYGWIN.cmake warns unless we explicitly tell it not to warn since there is no chance for a cmake_minimum_required(VERSION) to be called. diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 1e493b0..047bd98 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -421,6 +421,10 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) this->Makefile->AddDefinition("CTEST_SCRIPT_ARG", script_arg.c_str()); } +#if defined(__CYGWIN__) + this->Makefile->AddDefinition("CMAKE_LEGACY_CYGWIN_WIN32", "0"); +#endif + // always add a function blocker to update the elapsed time cmCTestScriptFunctionBlocker *f = new cmCTestScriptFunctionBlocker(); f->CTestScriptHandler = this; ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestScriptHandler.cxx | 4 ++++ 1 file changed, 4 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 14:50:23 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 14:50:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-246-g72a12fb Message-ID: <20150608185023.72C8FB01B9@public.kitware.com> 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 72a12fb34610456a4be3cc00540f6c9e90f9bf22 (commit) via 972853b15b6aa874644089bd3cf73197c7b874f8 (commit) from 06d21584b51c2de5d520e3d201053a2a7d0af5be (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=72a12fb34610456a4be3cc00540f6c9e90f9bf22 commit 72a12fb34610456a4be3cc00540f6c9e90f9bf22 Merge: 06d2158 972853b Author: Brad King AuthorDate: Mon Jun 8 14:50:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 14:50:22 2015 -0400 Merge topic 'doc-drop-incorrect-cmake-developer-advice' into next 972853b1 Help: Drop incorrect advice from cmake-developer.7 manual http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=972853b15b6aa874644089bd3cf73197c7b874f8 commit 972853b15b6aa874644089bd3cf73197c7b874f8 Author: Brad King AuthorDate: Mon Jun 8 14:38:32 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 14:50:03 2015 -0400 Help: Drop incorrect advice from cmake-developer.7 manual Drop the comment on the purpose of PATH_SUFFIXES in our Find Module example. It was incorrect. diff --git a/Help/manual/cmake-developer.7.rst b/Help/manual/cmake-developer.7.rst index ab74140..90a081d 100644 --- a/Help/manual/cmake-developer.7.rst +++ b/Help/manual/cmake-developer.7.rst @@ -867,7 +867,6 @@ look. find_path(Foo_INCLUDE_DIR NAMES foo.h PATHS ${PC_Foo_INCLUDE_DIRS} - # if you need to put #include in your code, add: PATH_SUFFIXES Foo ) find_library(Foo_LIBRARY ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-developer.7.rst | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 15:02:24 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 15:02:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-248-g70d6d5f Message-ID: <20150608190224.3C2C9B04D6@public.kitware.com> 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 70d6d5f03ccdce6373add0bc3bce95281cf1143f (commit) via a02d42580fb0da4378ff3fe512ca366b55f03ed5 (commit) from 72a12fb34610456a4be3cc00540f6c9e90f9bf22 (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=70d6d5f03ccdce6373add0bc3bce95281cf1143f commit 70d6d5f03ccdce6373add0bc3bce95281cf1143f Merge: 72a12fb a02d425 Author: Stephen Kelly AuthorDate: Mon Jun 8 15:02:23 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 15:02:23 2015 -0400 Merge topic 'deprecate-CMP0011' into next a02d4258 Help: Document deprecation of CMP0011 in the release notes. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a02d42580fb0da4378ff3fe512ca366b55f03ed5 commit a02d42580fb0da4378ff3fe512ca366b55f03ed5 Author: Stephen Kelly AuthorDate: Mon Jun 8 21:01:35 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 21:01:35 2015 +0200 Help: Document deprecation of CMP0011 in the release notes. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index 15127cc..2758254 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -271,6 +271,10 @@ Deprecated and Removed Features Other Changes ============= +* Policy :policy:`CMP0011` is deprecated. In the next release of CMake, + it will not be possible to set it to ``OLD``. See + also :manual:`cmake-policies(7)` + * The :generator:`Ninja` generator now requires that calls to the :command:`add_custom_command` and :command:`add_custom_target` commands use the ``BYPRODUCTS`` option to explicitly specify any ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 4 ++++ 1 file changed, 4 insertions(+) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 15:51:00 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 15:51:00 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-250-g1dc15ca Message-ID: <20150608195100.D299EAFFE8@public.kitware.com> 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 1dc15ca4be6f66cfe33c86b41665cb7c4962567a (commit) via 09af4381285dd5f0f44ca30aa3443bafd4317bc8 (commit) from 70d6d5f03ccdce6373add0bc3bce95281cf1143f (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=1dc15ca4be6f66cfe33c86b41665cb7c4962567a commit 1dc15ca4be6f66cfe33c86b41665cb7c4962567a Merge: 70d6d5f 09af438 Author: Stephen Kelly AuthorDate: Mon Jun 8 15:51:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 15:51:00 2015 -0400 Merge topic 'deprecate-ancient-Policies' into next 09af4381 fixup! Help: Document deprecation of CMP0011 in the release notes. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=09af4381285dd5f0f44ca30aa3443bafd4317bc8 commit 09af4381285dd5f0f44ca30aa3443bafd4317bc8 Author: Stephen Kelly AuthorDate: Mon Jun 8 21:49:40 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 21:49:43 2015 +0200 fixup! Help: Document deprecation of CMP0011 in the release notes. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index 2758254..43d8805 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -271,9 +271,23 @@ Deprecated and Removed Features Other Changes ============= -* Policy :policy:`CMP0011` is deprecated. In the next release of CMake, - it will not be possible to set it to ``OLD``. See - also :manual:`cmake-policies(7)` +* Policies + + * :policy:`CMP0000` + * :policy:`CMP0001` + * :policy:`CMP0002` + * :policy:`CMP0003` + * :policy:`CMP0004` + * :policy:`CMP0005` + * :policy:`CMP0006` + * :policy:`CMP0007` + * :policy:`CMP0008` + * :policy:`CMP0009` + * :policy:`CMP0010` + * :policy:`CMP0011` + + are now deprecated. In the next release of CMake, it will not be possible + to set them to ``OLD``. See also :manual:`cmake-policies(7)` * The :generator:`Ninja` generator now requires that calls to the :command:`add_custom_command` and :command:`add_custom_target` ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 15:53:40 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 15:53:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-255-g5b810f6 Message-ID: <20150608195340.50115B01E4@public.kitware.com> 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 5b810f62f12feabf0a77265b68ac5d33c6e7161c (commit) via 3de3544fcd38680652d5bbe0790b78477ffa26f1 (commit) via 8c64c4783dde25d84b1549945b95d192c1b7fd68 (commit) via 25b4483ef8d6f6f074f05cf99e0282abf22d8939 (commit) via e2f349864dea91bec1d4c07428ab94225ff589dd (commit) from 1dc15ca4be6f66cfe33c86b41665cb7c4962567a (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=5b810f62f12feabf0a77265b68ac5d33c6e7161c commit 5b810f62f12feabf0a77265b68ac5d33c6e7161c Merge: 1dc15ca 3de3544 Author: Brad King AuthorDate: Mon Jun 8 15:53:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 15:53:39 2015 -0400 Merge topic 'doc-find-command-cleanup' into next 3de3544f Help: Improve documentation formatting of find_* commands 8c64c478 Help: Document CMAKE_FIND_APPBUNDLE and CMAKE_FIND_FRAMEWORK 25b4483e Help: Document CMAKE_SYSTEM_APPBUNDLE_PATH variable e2f34986 Help: Document CMAKE_SYSTEM_FRAMEWORK_PATH variable http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3de3544fcd38680652d5bbe0790b78477ffa26f1 commit 3de3544fcd38680652d5bbe0790b78477ffa26f1 Author: Brad King AuthorDate: Mon Jun 8 15:52:21 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 15:52:21 2015 -0400 Help: Improve documentation formatting of find_* commands Use inline reStructuredText markup and add cross-references in more places. diff --git a/Help/command/FIND_XXX.txt b/Help/command/FIND_XXX.txt index 474127d..966db06 100644 --- a/Help/command/FIND_XXX.txt +++ b/Help/command/FIND_XXX.txt @@ -33,36 +33,42 @@ and the search will not be repeated unless the variable is cleared. If nothing is found, the result will be ``-NOTFOUND``, and the search will be attempted again the next time |FIND_XXX| is invoked with the same variable. -The name of the |SEARCH_XXX| that -is searched for is specified by the names listed -after the NAMES argument. Additional search locations -can be specified after the PATHS argument. If ENV var is -found in the HINTS or PATHS section the environment variable var -will be read and converted from a system environment variable to -a cmake style list of paths. For example ENV PATH would be a way -to list the system path variable. The argument -after DOC will be used for the documentation string in -the cache. -PATH_SUFFIXES specifies additional subdirectories to check below -each search path. - -If NO_DEFAULT_PATH is specified, then no additional paths are + +Options include: + +``NAMES`` + Specify one or more possible names for the |SEARCH_XXX|. + +``HINTS``, ``PATHS`` + Specify directories to search in addition to the default locations. + The ``ENV var`` sub-option reads paths from a system environment + variable. + +``PATH_SUFFIXES`` + Specify additional subdirectories to check below each directory + location otherwise considered. + +``DOC`` + Specify the documentation string for the ```` cache entry. + +If ``NO_DEFAULT_PATH`` is specified, then no additional paths are added to the search. -If NO_DEFAULT_PATH is not specified, the search process is as follows: +If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows: .. |CMAKE_PREFIX_PATH_XXX_SUBDIR| replace:: - /|XXX_SUBDIR| for each in CMAKE_PREFIX_PATH + |prefix_XXX_SUBDIR| for each ```` in :variable:`CMAKE_PREFIX_PATH` .. |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR| replace:: - /|XXX_SUBDIR| for each /[s]bin in PATH, and - /|XXX_SUBDIR| for other entries in PATH + |prefix_XXX_SUBDIR| for each ``/[s]bin`` in ``PATH``, and + |entry_XXX_SUBDIR| for other entries in ``PATH`` .. |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| replace:: - /|XXX_SUBDIR| for each in CMAKE_SYSTEM_PREFIX_PATH + |prefix_XXX_SUBDIR| for each ```` in + :variable:`CMAKE_SYSTEM_PREFIX_PATH` 1. Search paths specified in cmake-specific cache variables. - These are intended to be used on the command line with a -DVAR=value. - This can be skipped if NO_CMAKE_PATH is passed. + These are intended to be used on the command line with a ``-DVAR=value``. + This can be skipped if ``NO_CMAKE_PATH`` is passed. * |CMAKE_PREFIX_PATH_XXX| * |CMAKE_XXX_PATH| @@ -70,24 +76,24 @@ If NO_DEFAULT_PATH is not specified, the search process is as follows: 2. Search paths specified in cmake-specific environment variables. These are intended to be set in the user's shell configuration. - This can be skipped if NO_CMAKE_ENVIRONMENT_PATH is passed. + This can be skipped if ``NO_CMAKE_ENVIRONMENT_PATH`` is passed. * |CMAKE_PREFIX_PATH_XXX| * |CMAKE_XXX_PATH| * |CMAKE_XXX_MAC_PATH| -3. Search the paths specified by the HINTS option. +3. Search the paths specified by the ``HINTS`` option. These should be paths computed by system introspection, such as a hint provided by the location of another item already found. - Hard-coded guesses should be specified with the PATHS option. + Hard-coded guesses should be specified with the ``PATHS`` option. 4. Search the standard system environment variables. - This can be skipped if NO_SYSTEM_ENVIRONMENT_PATH is an argument. + This can be skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is an argument. * |SYSTEM_ENVIRONMENT_PATH_XXX| 5. Search cmake variables defined in the Platform files - for the current system. This can be skipped if NO_CMAKE_SYSTEM_PATH + for the current system. This can be skipped if ``NO_CMAKE_SYSTEM_PATH`` is passed. * |CMAKE_SYSTEM_PREFIX_PATH_XXX| diff --git a/Help/command/FIND_XXX_ROOT.txt b/Help/command/FIND_XXX_ROOT.txt index b5cab68..fab2303 100644 --- a/Help/command/FIND_XXX_ROOT.txt +++ b/Help/command/FIND_XXX_ROOT.txt @@ -16,8 +16,14 @@ search there too. By default at first the directories listed in directory is searched, and then the non-rooted directories will be searched. The default behavior can be adjusted by setting |CMAKE_FIND_ROOT_PATH_MODE_XXX|. This behavior can be manually -overridden on a per-call basis. By using CMAKE_FIND_ROOT_PATH_BOTH -the search order will be as described above. If -NO_CMAKE_FIND_ROOT_PATH is used then :variable:`CMAKE_FIND_ROOT_PATH` will not be -used. If ONLY_CMAKE_FIND_ROOT_PATH is used then only the re-rooted -directories and directories below :variable:`CMAKE_STAGING_PREFIX` will be searched. +overridden on a per-call basis using options: + +``CMAKE_FIND_ROOT_PATH_BOTH`` + Search in the order described above. + +``NO_CMAKE_FIND_ROOT_PATH`` + Do not use the :variable:`CMAKE_FIND_ROOT_PATH` variable. + +``ONLY_CMAKE_FIND_ROOT_PATH`` + Search only the re-rooted directories and directories below + :variable:`CMAKE_STAGING_PREFIX`. diff --git a/Help/command/find_file.rst b/Help/command/find_file.rst index be309a5..bf7a919 100644 --- a/Help/command/find_file.rst +++ b/Help/command/find_file.rst @@ -5,24 +5,27 @@ find_file .. |NAMES| replace:: NAMES name1 [name2 ...] .. |SEARCH_XXX| replace:: full path to a file .. |SEARCH_XXX_DESC| replace:: full path to named file -.. |XXX_SUBDIR| replace:: include +.. |prefix_XXX_SUBDIR| replace:: ``/include`` +.. |entry_XXX_SUBDIR| replace:: ``/include`` .. |CMAKE_PREFIX_PATH_XXX| replace:: - /include/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |CMAKE_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_XXX_PATH| replace:: CMAKE_INCLUDE_PATH -.. |CMAKE_XXX_MAC_PATH| replace:: CMAKE_FRAMEWORK_PATH + ``/include/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` + is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR| +.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH` +.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in INCLUDE, - /include/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, - and the directories in PATH itself. +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``, + ``/include/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` + is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the + directories in ``PATH`` itself. .. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace:: - /include/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_SYSTEM_XXX_PATH| replace:: CMAKE_SYSTEM_INCLUDE_PATH -.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: CMAKE_SYSTEM_FRAMEWORK_PATH + ``/include/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` + is set, and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| +.. |CMAKE_SYSTEM_XXX_PATH| replace:: + :variable:`CMAKE_SYSTEM_INCLUDE_PATH` +.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: + :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH` .. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace:: :variable:`CMAKE_FIND_ROOT_PATH_MODE_INCLUDE` diff --git a/Help/command/find_library.rst b/Help/command/find_library.rst index e3dcd2b..5d07574 100644 --- a/Help/command/find_library.rst +++ b/Help/command/find_library.rst @@ -5,33 +5,36 @@ find_library .. |NAMES| replace:: NAMES name1 [name2 ...] [NAMES_PER_DIR] .. |SEARCH_XXX| replace:: library .. |SEARCH_XXX_DESC| replace:: library -.. |XXX_SUBDIR| replace:: lib +.. |prefix_XXX_SUBDIR| replace:: ``/lib`` +.. |entry_XXX_SUBDIR| replace:: ``/lib`` .. |CMAKE_PREFIX_PATH_XXX| replace:: - /lib/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |CMAKE_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_XXX_PATH| replace:: CMAKE_LIBRARY_PATH -.. |CMAKE_XXX_MAC_PATH| replace:: CMAKE_FRAMEWORK_PATH + ``/lib/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, + and |CMAKE_PREFIX_PATH_XXX_SUBDIR| +.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_LIBRARY_PATH` +.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in LIB, - /lib/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, - and the directories in PATH itself. +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``LIB``, + ``/lib/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, + and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, + and the directories in ``PATH`` itself. .. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace:: - /lib/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_SYSTEM_XXX_PATH| replace:: CMAKE_SYSTEM_LIBRARY_PATH -.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: CMAKE_SYSTEM_FRAMEWORK_PATH + ``/lib/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, + and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| +.. |CMAKE_SYSTEM_XXX_PATH| replace:: + :variable:`CMAKE_SYSTEM_LIBRARY_PATH` +.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: + :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH` .. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace:: :variable:`CMAKE_FIND_ROOT_PATH_MODE_LIBRARY` .. include:: FIND_XXX.txt -When more than one value is given to the NAMES option this command by +When more than one value is given to the ``NAMES`` option this command by default will consider one name at a time and search every directory -for it. The NAMES_PER_DIR option tells this command to consider one +for it. The ``NAMES_PER_DIR`` option tells this command to consider one directory at a time and search for all names in it. Each library name given to the ``NAMES`` option is first considered @@ -40,14 +43,14 @@ prefixes (e.g. ``lib``) and suffixes (e.g. ``.so``). Therefore one may specify library file names such as ``libfoo.a`` directly. This can be used to locate static libraries on UNIX-like systems. -If the library found is a framework, then VAR will be set to the full -path to the framework /A.framework. When a full path to a -framework is used as a library, CMake will use a -framework A, and a --F to link the framework to the target. +If the library found is a framework, then ```` will be set to the full +path to the framework ``/A.framework``. When a full path to a +framework is used as a library, CMake will use a ``-framework A``, and a +``-F`` to link the framework to the target. -If the global property FIND_LIBRARY_USE_LIB64_PATHS is set all search -paths will be tested as normal, with "64/" appended, and with all -matches of "lib/" replaced with "lib64/". This property is +If the :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` global property is set +all search paths will be tested as normal, with ``64/`` appended, and +with all matches of ``lib/`` replaced with ``lib64/``. This property is automatically set for the platforms that are known to need it if at -least one of the languages supported by the PROJECT command is -enabled. +least one of the languages supported by the :command:`project` command +is enabled. diff --git a/Help/command/find_path.rst b/Help/command/find_path.rst index b5a6e37..4403cb5 100644 --- a/Help/command/find_path.rst +++ b/Help/command/find_path.rst @@ -5,31 +5,34 @@ find_path .. |NAMES| replace:: NAMES name1 [name2 ...] .. |SEARCH_XXX| replace:: file in a directory .. |SEARCH_XXX_DESC| replace:: directory containing the named file -.. |XXX_SUBDIR| replace:: include +.. |prefix_XXX_SUBDIR| replace:: ``/include`` +.. |entry_XXX_SUBDIR| replace:: ``/include`` .. |CMAKE_PREFIX_PATH_XXX| replace:: - /include/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |CMAKE_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_XXX_PATH| replace:: CMAKE_INCLUDE_PATH -.. |CMAKE_XXX_MAC_PATH| replace:: CMAKE_FRAMEWORK_PATH + ``/include/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` + is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR| +.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH` +.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in INCLUDE, - /include/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, - and the directories in PATH itself. +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``, + ``/include/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` + is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the + directories in ``PATH`` itself. .. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace:: - /include/ if CMAKE_LIBRARY_ARCHITECTURE is set, and - |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_SYSTEM_XXX_PATH| replace:: CMAKE_SYSTEM_INCLUDE_PATH -.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: CMAKE_SYSTEM_FRAMEWORK_PATH + ``/include/`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` + is set, and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| +.. |CMAKE_SYSTEM_XXX_PATH| replace:: + :variable:`CMAKE_SYSTEM_INCLUDE_PATH` +.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: + :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH` .. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace:: :variable:`CMAKE_FIND_ROOT_PATH_MODE_INCLUDE` .. include:: FIND_XXX.txt -When searching for frameworks, if the file is specified as A/b.h, then -the framework search will look for A.framework/Headers/b.h. If that +When searching for frameworks, if the file is specified as ``A/b.h``, then +the framework search will look for ``A.framework/Headers/b.h``. If that is found the path will be set to the path to the framework. CMake -will convert this to the correct -F option to include the file. +will convert this to the correct ``-F`` option to include the file. diff --git a/Help/command/find_program.rst b/Help/command/find_program.rst index c62a8a5..2a5ce9a 100644 --- a/Help/command/find_program.rst +++ b/Help/command/find_program.rst @@ -5,19 +5,22 @@ find_program .. |NAMES| replace:: NAMES name1 [name2 ...] .. |SEARCH_XXX| replace:: program .. |SEARCH_XXX_DESC| replace:: program -.. |XXX_SUBDIR| replace:: [s]bin +.. |prefix_XXX_SUBDIR| replace:: ``/[s]bin`` +.. |entry_XXX_SUBDIR| replace:: ``/[s]bin`` .. |CMAKE_PREFIX_PATH_XXX| replace:: |CMAKE_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_XXX_PATH| replace:: CMAKE_PROGRAM_PATH -.. |CMAKE_XXX_MAC_PATH| replace:: CMAKE_APPBUNDLE_PATH +.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_PROGRAM_PATH` +.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_APPBUNDLE_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: PATH +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: ``PATH`` .. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace:: |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| -.. |CMAKE_SYSTEM_XXX_PATH| replace:: CMAKE_SYSTEM_PROGRAM_PATH -.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: CMAKE_SYSTEM_APPBUNDLE_PATH +.. |CMAKE_SYSTEM_XXX_PATH| replace:: + :variable:`CMAKE_SYSTEM_PROGRAM_PATH` +.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace:: + :variable:`CMAKE_SYSTEM_APPBUNDLE_PATH` .. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace:: :variable:`CMAKE_FIND_ROOT_PATH_MODE_PROGRAM` http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8c64c4783dde25d84b1549945b95d192c1b7fd68 commit 8c64c4783dde25d84b1549945b95d192c1b7fd68 Author: Brad King AuthorDate: Mon Jun 8 15:36:31 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 15:45:59 2015 -0400 Help: Document CMAKE_FIND_APPBUNDLE and CMAKE_FIND_FRAMEWORK Add dedicated documents for these and link to them instead of duplicating their documentation in every find command. diff --git a/Help/command/FIND_XXX.txt b/Help/command/FIND_XXX.txt index 9358329..474127d 100644 --- a/Help/command/FIND_XXX.txt +++ b/Help/command/FIND_XXX.txt @@ -100,6 +100,9 @@ If NO_DEFAULT_PATH is not specified, the search process is as follows: .. |FIND_ARGS_XXX| replace:: NAMES name -.. include:: FIND_XXX_MAC.txt +On OS X the :variable:`CMAKE_FIND_FRAMEWORK` and +:variable:`CMAKE_FIND_APPBUNDLE` variables determine the order of +preference between Apple-style and unix-style package components. + .. include:: FIND_XXX_ROOT.txt .. include:: FIND_XXX_ORDER.txt diff --git a/Help/command/FIND_XXX_MAC.txt b/Help/command/FIND_XXX_MAC.txt deleted file mode 100644 index eb3900c..0000000 --- a/Help/command/FIND_XXX_MAC.txt +++ /dev/null @@ -1,24 +0,0 @@ -On Darwin or systems supporting OS X Frameworks, the cmake variable -CMAKE_FIND_FRAMEWORK can be set to empty or one of the following: - -* FIRST: Try to find frameworks before standard libraries or headers. - This is the default on Darwin. - -* LAST: Try to find frameworks after standard libraries or headers. - -* ONLY: Only try to find frameworks. - -* NEVER: Never try to find frameworks. - -On Darwin or systems supporting OS X Application Bundles, the cmake -variable CMAKE_FIND_APPBUNDLE can be set to empty or one of the -following: - -* FIRST: Try to find application bundles before standard programs. - This is the default on Darwin. - -* LAST: Try to find application bundles after standard programs. - -* ONLY: Only try to find application bundles. - -* NEVER: Never try to find application bundles. diff --git a/Help/command/find_package.rst b/Help/command/find_package.rst index a5efba6..58dff9d 100644 --- a/Help/command/find_package.rst +++ b/Help/command/find_package.rst @@ -228,9 +228,9 @@ installation directory. Those marked with (U) are intended for installations on UNIX platforms where the prefix is shared by multiple packages. This is merely a convention, so all (W) and (U) directories are still searched on all platforms. Directories marked with (A) are -intended for installations on Apple platforms. The cmake variables -``CMAKE_FIND_FRAMEWORK`` and ``CMAKE_FIND_APPBUNDLE`` -determine the order of preference as specified below. +intended for installations on Apple platforms. The +:variable:`CMAKE_FIND_FRAMEWORK` and :variable:`CMAKE_FIND_APPBUNDLE` +variables determine the order of preference. The set of installation prefixes is constructed using the following steps. If ``NO_DEFAULT_PATH`` is specified all ``NO_*`` options are @@ -295,7 +295,6 @@ enabled. .. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace:: :variable:`CMAKE_FIND_ROOT_PATH_MODE_PACKAGE` -.. include:: FIND_XXX_MAC.txt .. include:: FIND_XXX_ROOT.txt .. include:: FIND_XXX_ORDER.txt diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 4c51fe1..f010d28 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -117,6 +117,8 @@ Variables that Change Behavior /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION /variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY /variable/CMAKE_SYSROOT + /variable/CMAKE_FIND_APPBUNDLE + /variable/CMAKE_FIND_FRAMEWORK /variable/CMAKE_FIND_LIBRARY_PREFIXES /variable/CMAKE_FIND_LIBRARY_SUFFIXES /variable/CMAKE_FIND_NO_INSTALL_PREFIX diff --git a/Help/variable/CMAKE_FIND_APPBUNDLE.rst b/Help/variable/CMAKE_FIND_APPBUNDLE.rst new file mode 100644 index 0000000..e0727b5 --- /dev/null +++ b/Help/variable/CMAKE_FIND_APPBUNDLE.rst @@ -0,0 +1,22 @@ +CMAKE_FIND_APPBUNDLE +-------------------- + +This variable affects how ``find_*`` commands choose between +OS X Application Bundles and unix-style package components. + +On Darwin or systems supporting OS X Application Bundles, the +``CMAKE_FIND_APPBUNDLE`` variable can be set to empty or +one of the following: + +``FIRST`` + Try to find application bundles before standard programs. + This is the default on Darwin. + +``LAST`` + Try to find application bundles after standard programs. + +``ONLY`` + Only try to find application bundles. + +``NEVER`` + Never try to find application bundles. diff --git a/Help/variable/CMAKE_FIND_FRAMEWORK.rst b/Help/variable/CMAKE_FIND_FRAMEWORK.rst new file mode 100644 index 0000000..790694a --- /dev/null +++ b/Help/variable/CMAKE_FIND_FRAMEWORK.rst @@ -0,0 +1,22 @@ +CMAKE_FIND_FRAMEWORK +-------------------- + +This variable affects how ``find_*`` commands choose between +OS X Frameworks and unix-style package components. + +On Darwin or systems supporting OS X Frameworks, the +``CMAKE_FIND_FRAMEWORK`` variable can be set to empty or +one of the following: + +``FIRST`` + Try to find frameworks before standard libraries or headers. + This is the default on Darwin. + +``LAST`` + Try to find frameworks after standard libraries or headers. + +``ONLY`` + Only try to find frameworks. + +``NEVER`` + Never try to find frameworks. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=25b4483ef8d6f6f074f05cf99e0282abf22d8939 commit 25b4483ef8d6f6f074f05cf99e0282abf22d8939 Author: Brad King AuthorDate: Mon Jun 8 15:21:47 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 15:21:47 2015 -0400 Help: Document CMAKE_SYSTEM_APPBUNDLE_PATH variable diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index d621945..4c51fe1 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -147,6 +147,7 @@ Variables that Change Behavior /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE /variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY /variable/CMAKE_STAGING_PREFIX + /variable/CMAKE_SYSTEM_APPBUNDLE_PATH /variable/CMAKE_SYSTEM_FRAMEWORK_PATH /variable/CMAKE_SYSTEM_IGNORE_PATH /variable/CMAKE_SYSTEM_INCLUDE_PATH diff --git a/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst b/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst new file mode 100644 index 0000000..3c6687c --- /dev/null +++ b/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst @@ -0,0 +1,7 @@ +CMAKE_SYSTEM_APPBUNDLE_PATH +--------------------------- + +Search path for OS X application bundles used by the :command:`find_program`, +and :command:`find_package` commands. By default it contains the standard +directories for the current system. It is *not* intended to be modified by +the project, use :variable:`CMAKE_APPBUNDLE_PATH` for this. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e2f349864dea91bec1d4c07428ab94225ff589dd commit e2f349864dea91bec1d4c07428ab94225ff589dd Author: Brad King AuthorDate: Mon Jun 8 15:15:47 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 15:15:47 2015 -0400 Help: Document CMAKE_SYSTEM_FRAMEWORK_PATH variable diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index bd02f8b..d621945 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -147,6 +147,7 @@ Variables that Change Behavior /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE /variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY /variable/CMAKE_STAGING_PREFIX + /variable/CMAKE_SYSTEM_FRAMEWORK_PATH /variable/CMAKE_SYSTEM_IGNORE_PATH /variable/CMAKE_SYSTEM_INCLUDE_PATH /variable/CMAKE_SYSTEM_LIBRARY_PATH diff --git a/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst b/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst new file mode 100644 index 0000000..1e8b0d9 --- /dev/null +++ b/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst @@ -0,0 +1,8 @@ +CMAKE_SYSTEM_FRAMEWORK_PATH +--------------------------- + +Search path for OS X frameworks used by the :command:`find_library`, +:command:`find_package`, :command:`find_path`, and :command:`find_file` +commands. By default it contains the standard directories for the +current system. It is *not* intended to be modified by the project, +use :variable:`CMAKE_FRAMEWORK_PATH` for this. ----------------------------------------------------------------------- Summary of changes: Help/command/FIND_XXX.txt | 63 ++++++++++++++----------- Help/command/FIND_XXX_MAC.txt | 24 ---------- Help/command/FIND_XXX_ROOT.txt | 16 +++++-- Help/command/find_file.rst | 29 +++++++----- Help/command/find_library.rst | 51 ++++++++++---------- Help/command/find_package.rst | 7 ++- Help/command/find_path.rst | 35 +++++++------- Help/command/find_program.rst | 15 +++--- Help/manual/cmake-variables.7.rst | 4 ++ Help/variable/CMAKE_FIND_APPBUNDLE.rst | 22 +++++++++ Help/variable/CMAKE_FIND_FRAMEWORK.rst | 22 +++++++++ Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst | 7 +++ Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst | 8 ++++ 13 files changed, 184 insertions(+), 119 deletions(-) delete mode 100644 Help/command/FIND_XXX_MAC.txt create mode 100644 Help/variable/CMAKE_FIND_APPBUNDLE.rst create mode 100644 Help/variable/CMAKE_FIND_FRAMEWORK.rst create mode 100644 Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst create mode 100644 Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 16:10:51 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 16:10:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-257-g66826cd Message-ID: <20150608201051.E419C1440B@public.kitware.com> 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 66826cd41dcea7e43d8ad74e9167f8afd285d364 (commit) via e59ace963a314a3a4a9edd324f5f2103945fd6f6 (commit) from 5b810f62f12feabf0a77265b68ac5d33c6e7161c (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=66826cd41dcea7e43d8ad74e9167f8afd285d364 commit 66826cd41dcea7e43d8ad74e9167f8afd285d364 Merge: 5b810f6 e59ace9 Author: Stephen Kelly AuthorDate: Mon Jun 8 16:10:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:10:51 2015 -0400 Merge topic 'deprecate-ancient-Policies' into next e59ace96 fixup! Help: Document deprecation of CMP0011 in the release notes. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e59ace963a314a3a4a9edd324f5f2103945fd6f6 commit e59ace963a314a3a4a9edd324f5f2103945fd6f6 Author: Stephen Kelly AuthorDate: Mon Jun 8 22:10:17 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:10:17 2015 +0200 fixup! Help: Document deprecation of CMP0011 in the release notes. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index 43d8805..d2457dd 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -286,7 +286,7 @@ Other Changes * :policy:`CMP0010` * :policy:`CMP0011` - are now deprecated. In the next release of CMake, it will not be possible + are now deprecated. In a future release of CMake, it will not be possible to set them to ``OLD``. See also :manual:`cmake-policies(7)` * The :generator:`Ninja` generator now requires that calls to the ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 16:15:52 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 16:15:52 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-259-g4d868e1 Message-ID: <20150608201552.8E0EDAF020@public.kitware.com> 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 4d868e122b49e63e7e0ad2474e631cd059858aa6 (commit) via 7ab0806fef24d4982adbbef9b37f48111d2eced4 (commit) from 66826cd41dcea7e43d8ad74e9167f8afd285d364 (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=4d868e122b49e63e7e0ad2474e631cd059858aa6 commit 4d868e122b49e63e7e0ad2474e631cd059858aa6 Merge: 66826cd 7ab0806 Author: Brad King AuthorDate: Mon Jun 8 16:15:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:15:51 2015 -0400 Merge topic 'doc-find-versioned-location' into next 7ab0806f Help: Document find_* command versioned/unversioned name ordering http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7ab0806fef24d4982adbbef9b37f48111d2eced4 commit 7ab0806fef24d4982adbbef9b37f48111d2eced4 Author: Brad King AuthorDate: Mon Jun 8 16:11:10 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 16:13:56 2015 -0400 Help: Document find_* command versioned/unversioned name ordering Suggest in the NAMES option that unversioned names go first to prefer local builds over distro-provided files. diff --git a/Help/command/FIND_XXX.txt b/Help/command/FIND_XXX.txt index 966db06..bd4d295 100644 --- a/Help/command/FIND_XXX.txt +++ b/Help/command/FIND_XXX.txt @@ -39,6 +39,11 @@ Options include: ``NAMES`` Specify one or more possible names for the |SEARCH_XXX|. + When using this to specify names with and without a version + suffix, we recommend specifying the unversioned name first + so that locally-built packages can be found before those + provided by distributions. + ``HINTS``, ``PATHS`` Specify directories to search in addition to the default locations. The ``ENV var`` sub-option reads paths from a system environment ----------------------------------------------------------------------- Summary of changes: Help/command/FIND_XXX.txt | 5 +++++ 1 file changed, 5 insertions(+) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 16:24:30 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 16:24:30 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-263-g90cc6d7 Message-ID: <20150608202430.C5DADAFFDD@public.kitware.com> 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 90cc6d71587a98361d7f627ea560ed654d41cd88 (commit) via 52b9d828ab482f5eaae3313d821d9a4a492f069b (commit) via fe603c7dfb8a3d0dfc892b46f9df0b4c32a892f9 (commit) via 8fc53c3ce89e76a4e5cf1968307c513041e9a7b7 (commit) from 4d868e122b49e63e7e0ad2474e631cd059858aa6 (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=90cc6d71587a98361d7f627ea560ed654d41cd88 commit 90cc6d71587a98361d7f627ea560ed654d41cd88 Merge: 4d868e1 52b9d82 Author: Stephen Kelly AuthorDate: Mon Jun 8 16:24:30 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:24:30 2015 -0400 Merge topic 'move-CMP0059-handling' into next 52b9d828 cmMakefile: Move CMP0059 handling to command code. fe603c7d cmGetDirectoryPropertyCommand: Move variable to the point of use. 8fc53c3c cmGetDirectoryPropertyCommand: Extract StoreResult method. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=52b9d828ab482f5eaae3313d821d9a4a492f069b commit 52b9d828ab482f5eaae3313d821d9a4a492f069b Author: Stephen Kelly AuthorDate: Sun Jun 7 14:50:54 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:23:44 2015 +0200 cmMakefile: Move CMP0059 handling to command code. Don't pay a penalty for it in all GetProperty calls. Additionally, the storage of properties will eventually move to cmState, which should only contain state and not logic for policies like this. diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index f60eba7..c056d95 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -86,6 +86,23 @@ bool cmGetDirectoryPropertyCommand const char *prop = 0; if (!i->empty()) { + if (*i == "DEFINITIONS") + { + switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0059)) + { + case cmPolicies::WARN: + this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, + cmPolicies::GetPolicyWarning(cmPolicies::CMP0059)); + case cmPolicies::OLD: + this->StoreResult(variable, + this->Makefile->GetDefineFlagsCMP0059()); + return true; + case cmPolicies::NEW: + case cmPolicies::REQUIRED_ALWAYS: + case cmPolicies::REQUIRED_IF_USED: + break; + } + } prop = dir->GetProperty(*i); } this->StoreResult(variable, prop); diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx index 36b6c64..33d638b 100644 --- a/Source/cmGetPropertyCommand.cxx +++ b/Source/cmGetPropertyCommand.cxx @@ -279,6 +279,22 @@ bool cmGetPropertyCommand::HandleDirectoryMode() } } + if (this->PropertyName == "DEFINITIONS") + { + switch(mf->GetPolicyStatus(cmPolicies::CMP0059)) + { + case cmPolicies::WARN: + mf->IssueMessage(cmake::AUTHOR_WARNING, + cmPolicies::GetPolicyWarning(cmPolicies::CMP0059)); + case cmPolicies::OLD: + return this->StoreResult(mf->GetDefineFlagsCMP0059()); + case cmPolicies::NEW: + case cmPolicies::REQUIRED_ALWAYS: + case cmPolicies::REQUIRED_IF_USED: + break; + } + } + // Get the property. return this->StoreResult(mf->GetProperty(this->PropertyName)); } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a8b163a..63dbe27 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4171,22 +4171,6 @@ const char *cmMakefile::GetProperty(const std::string& prop, this->GetListOfMacros(output); return output.c_str(); } - else if (prop == "DEFINITIONS") - { - switch(this->GetPolicyStatus(cmPolicies::CMP0059)) - { - case cmPolicies::WARN: - this->IssueMessage(cmake::AUTHOR_WARNING, cmPolicies:: - GetPolicyWarning(cmPolicies::CMP0059)); - case cmPolicies::OLD: - output += this->DefineFlagsOrig; - return output.c_str(); - case cmPolicies::NEW: - case cmPolicies::REQUIRED_ALWAYS: - case cmPolicies::REQUIRED_IF_USED: - break; - } - } else if (prop == "LINK_DIRECTORIES") { output = cmJoin(this->GetLinkDirectories(), ";"); @@ -4674,6 +4658,11 @@ cmState::Snapshot cmMakefile::GetStateSnapshot() const return this->StateSnapshot; } +const char* cmMakefile::GetDefineFlagsCMP0059() const +{ + return this->DefineFlagsOrig.c_str(); +} + //---------------------------------------------------------------------------- cmPolicies::PolicyStatus cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 6f6ed27..86bde0c 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -838,6 +838,8 @@ public: cmState::Snapshot GetStateSnapshot() const; + const char* GetDefineFlagsCMP0059() const; + protected: // add link libraries and directories to the target void AddGlobalLinkInformation(const std::string& name, cmTarget& target); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fe603c7dfb8a3d0dfc892b46f9df0b4c32a892f9 commit fe603c7dfb8a3d0dfc892b46f9df0b4c32a892f9 Author: Stephen Kelly AuthorDate: Mon Jun 8 22:03:07 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:18:42 2015 +0200 cmGetDirectoryPropertyCommand: Move variable to the point of use. diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index bb1801c..f60eba7 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -26,7 +26,6 @@ bool cmGetDirectoryPropertyCommand std::vector::const_iterator i = args.begin(); std::string variable = *i; ++i; - std::string output = ""; // get the directory argument if there is one cmMakefile *dir = this->Makefile; @@ -79,7 +78,7 @@ bool cmGetDirectoryPropertyCommand "providing the name of the variable to get."); return false; } - output = dir->GetSafeDefinition(*i); + std::string output = dir->GetSafeDefinition(*i); this->Makefile->AddDefinition(variable, output.c_str()); return true; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8fc53c3ce89e76a4e5cf1968307c513041e9a7b7 commit 8fc53c3ce89e76a4e5cf1968307c513041e9a7b7 Author: Stephen Kelly AuthorDate: Mon Jun 8 22:00:37 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:18:40 2015 +0200 cmGetDirectoryPropertyCommand: Extract StoreResult method. diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index 228e53c..bb1801c 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -89,12 +89,18 @@ bool cmGetDirectoryPropertyCommand { prop = dir->GetProperty(*i); } + this->StoreResult(variable, prop); + return true; +} + +void cmGetDirectoryPropertyCommand::StoreResult(std::string const& variable, + const char* prop) +{ if (prop) { this->Makefile->AddDefinition(variable, prop); - return true; + return; } this->Makefile->AddDefinition(variable, ""); - return true; } diff --git a/Source/cmGetDirectoryPropertyCommand.h b/Source/cmGetDirectoryPropertyCommand.h index 6c5750a..f418886 100644 --- a/Source/cmGetDirectoryPropertyCommand.h +++ b/Source/cmGetDirectoryPropertyCommand.h @@ -40,8 +40,9 @@ public: virtual std::string GetName() const { return "get_directory_property";} cmTypeMacro(cmGetDirectoryPropertyCommand, cmCommand); -}; - +private: + void StoreResult(const std::string& variable, const char* prop); +}; #endif ----------------------------------------------------------------------- Summary of changes: Source/cmGetDirectoryPropertyCommand.cxx | 30 ++++++++++++++++++++++++++---- Source/cmGetDirectoryPropertyCommand.h | 5 +++-- Source/cmGetPropertyCommand.cxx | 16 ++++++++++++++++ Source/cmMakefile.cxx | 21 +++++---------------- Source/cmMakefile.h | 2 ++ 5 files changed, 52 insertions(+), 22 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 16:32:36 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 16:32:36 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-265-gf286bc1 Message-ID: <20150608203236.6B48BB03F6@public.kitware.com> 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 f286bc11e75e18b11c3625e85bae4fc6f61c5ef0 (commit) via c3f40f4fd98388a2fd31c707e7225d33a7fc76f6 (commit) from 90cc6d71587a98361d7f627ea560ed654d41cd88 (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=f286bc11e75e18b11c3625e85bae4fc6f61c5ef0 commit f286bc11e75e18b11c3625e85bae4fc6f61c5ef0 Merge: 90cc6d7 c3f40f4 Author: Brad King AuthorDate: Mon Jun 8 16:32:35 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:32:35 2015 -0400 Merge topic 'doc-formatting' into next c3f40f4f Help: Improve formatting of command documentation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c3f40f4fd98388a2fd31c707e7225d33a7fc76f6 commit c3f40f4fd98388a2fd31c707e7225d33a7fc76f6 Author: Michael Scott AuthorDate: Thu Jun 4 22:51:22 2015 +0100 Commit: Brad King CommitDate: Mon Jun 8 16:28:31 2015 -0400 Help: Improve formatting of command documentation Use inline reStructuredText markup and add cross-references in more places. diff --git a/Help/command/add_subdirectory.rst b/Help/command/add_subdirectory.rst index 29b5017..e979253 100644 --- a/Help/command/add_subdirectory.rst +++ b/Help/command/add_subdirectory.rst @@ -12,23 +12,23 @@ Add a subdirectory to the build. The source_dir specifies the directory in which the source CMakeLists.txt and code files are located. If it is a relative path it will be evaluated with respect to the current directory (the typical usage), but it may also be an -absolute path. The binary_dir specifies the directory in which to +absolute path. The ``binary_dir`` specifies the directory in which to place the output files. If it is a relative path it will be evaluated with respect to the current output directory, but it may also be an -absolute path. If binary_dir is not specified, the value of -source_dir, before expanding any relative path, will be used (the +absolute path. If ``binary_dir`` is not specified, the value of +``source_dir``, before expanding any relative path, will be used (the typical usage). The CMakeLists.txt file in the specified source directory will be processed immediately by CMake before processing in the current input file continues beyond this command. -If the EXCLUDE_FROM_ALL argument is provided then targets in the -subdirectory will not be included in the ALL target of the parent +If the ``EXCLUDE_FROM_ALL`` argument is provided then targets in the +subdirectory will not be included in the ``ALL`` target of the parent directory by default, and will be excluded from IDE project files. Users must explicitly build targets in the subdirectory. This is meant for use when the subdirectory contains a separate part of the project that is useful but not necessary, such as a set of examples. -Typically the subdirectory should contain its own project() command -invocation so that a full build system will be generated in the +Typically the subdirectory should contain its own :command:`project` +command invocation so that a full build system will be generated in the subdirectory (such as a VS IDE solution file). Note that inter-target dependencies supercede this exclusion. If a target built by the parent project depends on a target in the subdirectory, the dependee diff --git a/Help/command/aux_source_directory.rst b/Help/command/aux_source_directory.rst index 434d7a9..dcd1cdf 100644 --- a/Help/command/aux_source_directory.rst +++ b/Help/command/aux_source_directory.rst @@ -8,7 +8,7 @@ Find all source files in a directory. aux_source_directory( ) Collects the names of all the source files in the specified directory -and stores the list in the provided. This command is +and stores the list in the ```` provided. This command is intended to be used by projects that use explicit template instantiation. Template instantiation files can be stored in a "Templates" subdirectory and collected automatically using this diff --git a/Help/command/build_name.rst b/Help/command/build_name.rst index 53cd05e..f717db1 100644 --- a/Help/command/build_name.rst +++ b/Help/command/build_name.rst @@ -3,7 +3,7 @@ build_name Disallowed. See CMake Policy :policy:`CMP0036`. -Use ${CMAKE_SYSTEM} and ${CMAKE_CXX_COMPILER} instead. +Use ``${CMAKE_SYSTEM}`` and ``${CMAKE_CXX_COMPILER}`` instead. :: @@ -11,4 +11,5 @@ Use ${CMAKE_SYSTEM} and ${CMAKE_CXX_COMPILER} instead. Sets the specified variable to a string representing the platform and compiler settings. These values are now available through the -CMAKE_SYSTEM and CMAKE_CXX_COMPILER variables. +:variable:`CMAKE_SYSTEM` and +:variable:`CMAKE_CXX_COMPILER _COMPILER>` variables. diff --git a/Help/command/cmake_host_system_information.rst b/Help/command/cmake_host_system_information.rst index ba545d5..9402d57 100644 --- a/Help/command/cmake_host_system_information.rst +++ b/Help/command/cmake_host_system_information.rst @@ -8,10 +8,10 @@ Query host system specific information. cmake_host_system_information(RESULT QUERY ...) Queries system information of the host system on which cmake runs. -One or more can be provided to select the information to be -queried. The list of queried values is stored in . +One or more ```` can be provided to select the information to be +queried. The list of queried values is stored in ````. - can be one of the following values: +```` can be one of the following values: :: diff --git a/Help/command/cmake_minimum_required.rst b/Help/command/cmake_minimum_required.rst index 9865eeb..8573218 100644 --- a/Help/command/cmake_minimum_required.rst +++ b/Help/command/cmake_minimum_required.rst @@ -25,7 +25,7 @@ When version 2.4 or lower is given the command implicitly invokes which enables compatibility features for CMake 2.4 and lower. -The FATAL_ERROR option is accepted but ignored by CMake 2.6 and +The ``FATAL_ERROR`` option is accepted but ignored by CMake 2.6 and higher. It should be specified so CMake versions 2.4 and lower fail with an error instead of just a warning. diff --git a/Help/command/create_test_sourcelist.rst b/Help/command/create_test_sourcelist.rst index 9addd67..dde6812 100644 --- a/Help/command/create_test_sourcelist.rst +++ b/Help/command/create_test_sourcelist.rst @@ -14,17 +14,17 @@ A test driver is a program that links together many small tests into a single executable. This is useful when building static executables with large libraries to shrink the total required size. The list of source files needed to build the test driver will be in -sourceListName. DriverName is the name of the test driver program. +``sourceListName``. ``driverName`` is the name of the test driver program. The rest of the arguments consist of a list of test source files, can be semicolon separated. Each test source file should have a function in it that is the same name as the file with no extension (foo.cxx -should have int foo(int, char*[]);) DriverName will be able to call -each of the tests by name on the command line. If EXTRA_INCLUDE is +should have int foo(int, char*[]);) ``driverName`` will be able to call +each of the tests by name on the command line. If ``EXTRA_INCLUDE`` is specified, then the next argument is included into the generated file. -If FUNCTION is specified, then the next argument is taken as a +If ``FUNCTION`` is specified, then the next argument is taken as a function name that is passed a pointer to ac and av. This can be used -to add extra command line processing to each test. The cmake variable -CMAKE_TESTDRIVER_BEFORE_TESTMAIN can be set to have code that will be -placed directly before calling the test main function. -CMAKE_TESTDRIVER_AFTER_TESTMAIN can be set to have code that will be -placed directly after the call to the test main function. +to add extra command line processing to each test. The +``CMAKE_TESTDRIVER_BEFORE_TESTMAIN`` cmake variable can be set to +have code that will be placed directly before calling the test main function. +``CMAKE_TESTDRIVER_AFTER_TESTMAIN`` can be set to have code that +will be placed directly after the call to the test main function. diff --git a/Help/command/ctest_run_script.rst b/Help/command/ctest_run_script.rst index 0f35019..5ec543e 100644 --- a/Help/command/ctest_run_script.rst +++ b/Help/command/ctest_run_script.rst @@ -10,6 +10,6 @@ runs a ctest -S script Runs a script or scripts much like if it was run from ctest -S. If no argument is provided then the current script is run using the current -settings of the variables. If NEW_PROCESS is specified then each -script will be run in a separate process.If RETURN_VALUE is specified -the return value of the last script run will be put into var. +settings of the variables. If ``NEW_PROCESS`` is specified then each +script will be run in a separate process.If ``RETURN_VALUE`` is specified +the return value of the last script run will be put into ``var``. diff --git a/Help/command/ctest_start.rst b/Help/command/ctest_start.rst index b5c7b34..63db32f 100644 --- a/Help/command/ctest_start.rst +++ b/Help/command/ctest_start.rst @@ -14,7 +14,7 @@ after the binary directory is initialized. If the 'source' and If the track is specified, the submissions will go to the specified track. If APPEND is used, the existing TAG is used rather than creating a new one based -on the current time stamp. If QUIET is used, CTest will suppress any +on the current time stamp. If ``QUIET`` is used, CTest will suppress any non-error messages that it otherwise would have printed to the console. If the :variable:`CTEST_CHECKOUT_COMMAND` variable diff --git a/Help/command/define_property.rst b/Help/command/define_property.rst index 62bcd1b..873c6ca 100644 --- a/Help/command/define_property.rst +++ b/Help/command/define_property.rst @@ -11,11 +11,11 @@ Define and document custom properties. BRIEF_DOCS [docs...] FULL_DOCS [docs...]) -Define one property in a scope for use with the set_property and -get_property commands. This is primarily useful to associate +Define one property in a scope for use with the :command:`set_property` and +:command:`get_property` commands. This is primarily useful to associate documentation with property names that may be retrieved with the -get_property command. The first argument determines the kind of scope -in which the property should be used. It must be one of the +:command:`get_property` command. The first argument determines the kind of +scope in which the property should be used. It must be one of the following: :: @@ -28,18 +28,18 @@ following: VARIABLE = documents a CMake language variable CACHED_VARIABLE = documents a CMake cache variable -Note that unlike set_property and get_property no actual scope needs -to be given; only the kind of scope is important. +Note that unlike :command:`set_property` and :command:`get_property` no +actual scope needs to be given; only the kind of scope is important. -The required PROPERTY option is immediately followed by the name of +The required ``PROPERTY`` option is immediately followed by the name of the property being defined. -If the INHERITED option then the get_property command will chain up to -the next higher scope when the requested property is not set in the -scope given to the command. DIRECTORY scope chains to GLOBAL. -TARGET, SOURCE, and TEST chain to DIRECTORY. +If the ``INHERITED`` option then the :command:`get_property` command will +chain up to the next higher scope when the requested property is not set +in the scope given to the command. ``DIRECTORY`` scope chains to +``GLOBAL``. ``TARGET``, ``SOURCE``, and ``TEST`` chain to ``DIRECTORY``. -The BRIEF_DOCS and FULL_DOCS options are followed by strings to be +The ``BRIEF_DOCS`` and ``FULL_DOCS`` options are followed by strings to be associated with the property as its brief and full documentation. -Corresponding options to the get_property command will retrieve the -documentation. +Corresponding options to the :command:`get_property` command will retrieve +the documentation. diff --git a/Help/command/else.rst b/Help/command/else.rst index 5eece95..0e5a198 100644 --- a/Help/command/else.rst +++ b/Help/command/else.rst @@ -7,4 +7,4 @@ Starts the else portion of an if block. else(expression) -See the if command. +See the :command:`if` command. diff --git a/Help/command/elseif.rst b/Help/command/elseif.rst index 96ee0e9..9a8dfed 100644 --- a/Help/command/elseif.rst +++ b/Help/command/elseif.rst @@ -7,4 +7,4 @@ Starts the elseif portion of an if block. elseif(expression) -See the if command. +See the :command:`if` command. diff --git a/Help/command/enable_language.rst b/Help/command/enable_language.rst index d46ff7e..4445561 100644 --- a/Help/command/enable_language.rst +++ b/Help/command/enable_language.rst @@ -18,5 +18,5 @@ targets using the named language directly for compiling sources or indirectly through link dependencies. It is simplest to enable all needed languages in the top-level directory of a project. -The OPTIONAL keyword is a placeholder for future implementation and +The ``OPTIONAL`` keyword is a placeholder for future implementation and does not currently work. diff --git a/Help/command/enable_testing.rst b/Help/command/enable_testing.rst index 41ecd5b..1e3e279 100644 --- a/Help/command/enable_testing.rst +++ b/Help/command/enable_testing.rst @@ -7,7 +7,7 @@ Enable testing for current directory and below. enable_testing() -Enables testing for this directory and below. See also the add_test -command. Note that ctest expects to find a test file in the build -directory root. Therefore, this command should be in the source -directory root. +Enables testing for this directory and below. See also the +:command:`add_test` command. Note that ctest expects to find a test file +in the build directory root. Therefore, this command should be in the +source directory root. diff --git a/Help/command/endforeach.rst b/Help/command/endforeach.rst index f23552d..9af972b 100644 --- a/Help/command/endforeach.rst +++ b/Help/command/endforeach.rst @@ -1,10 +1,10 @@ endforeach ---------- -Ends a list of commands in a FOREACH block. +Ends a list of commands in a foreach block. :: endforeach(expression) -See the FOREACH command. +See the :command:`foreach` command. diff --git a/Help/command/endfunction.rst b/Help/command/endfunction.rst index 63e70ba..6cc196c 100644 --- a/Help/command/endfunction.rst +++ b/Help/command/endfunction.rst @@ -7,4 +7,4 @@ Ends a list of commands in a function block. endfunction(expression) -See the function command. +See the :command:`function` command. diff --git a/Help/command/endif.rst b/Help/command/endif.rst index 4c9955c..a0163bf 100644 --- a/Help/command/endif.rst +++ b/Help/command/endif.rst @@ -7,4 +7,4 @@ Ends a list of commands in an if block. endif(expression) -See the if command. +See the :command:`if` command. diff --git a/Help/command/endmacro.rst b/Help/command/endmacro.rst index 524fc80..47327a7 100644 --- a/Help/command/endmacro.rst +++ b/Help/command/endmacro.rst @@ -7,4 +7,4 @@ Ends a list of commands in a macro block. endmacro(expression) -See the macro command. +See the :command:`macro` command. diff --git a/Help/command/endwhile.rst b/Help/command/endwhile.rst index 11fdc1b..798c20e 100644 --- a/Help/command/endwhile.rst +++ b/Help/command/endwhile.rst @@ -7,4 +7,4 @@ Ends a list of commands in a while block. endwhile(expression) -See the while command. +See the :command:`while` command. diff --git a/Help/command/exec_program.rst b/Help/command/exec_program.rst index aaa0dac..6dfdad3 100644 --- a/Help/command/exec_program.rst +++ b/Help/command/exec_program.rst @@ -1,7 +1,7 @@ exec_program ------------ -Deprecated. Use the execute_process() command instead. +Deprecated. Use the :command:`execute_process` command instead. Run an executable program during the processing of the CMakeList.txt file. @@ -15,10 +15,10 @@ file. The executable is run in the optionally specified directory. The executable can include arguments if it is double quoted, but it is -better to use the optional ARGS argument to specify arguments to the +better to use the optional ``ARGS`` argument to specify arguments to the program. This is because cmake will then be able to escape spaces in -the executable path. An optional argument OUTPUT_VARIABLE specifies a +the executable path. An optional argument ``OUTPUT_VARIABLE`` specifies a variable in which to store the output. To capture the return value of -the execution, provide a RETURN_VALUE. If OUTPUT_VARIABLE is +the execution, provide a ``RETURN_VALUE``. If ``OUTPUT_VARIABLE`` is specified, then no output will go to the stdout/stderr of the console running cmake. diff --git a/Help/command/execute_process.rst b/Help/command/execute_process.rst index c38ec1a..ca44b53 100644 --- a/Help/command/execute_process.rst +++ b/Help/command/execute_process.rst @@ -26,7 +26,7 @@ A single standard error pipe is used for all processes. Options: -COMMAND +``COMMAND`` A child process command line. CMake executes the child process using operating system APIs directly. @@ -36,31 +36,31 @@ COMMAND (Use the ``INPUT_*``, ``OUTPUT_*``, and ``ERROR_*`` options to redirect stdin, stdout, and stderr.) -WORKING_DIRECTORY +``WORKING_DIRECTORY`` The named directory will be set as the current working directory of the child processes. -TIMEOUT +``TIMEOUT`` The child processes will be terminated if they do not finish in the specified number of seconds (fractions are allowed). -RESULT_VARIABLE +``RESULT_VARIABLE`` The variable will be set to contain the result of running the processes. This will be an integer return code from the last child or a string describing an error condition. -OUTPUT_VARIABLE, ERROR_VARIABLE +``OUTPUT_VARIABLE``, ``ERROR_VARIABLE`` The variable named will be set with the contents of the standard output and standard error pipes, respectively. If the same variable is named for both pipes their output will be merged in the order produced. -INPUT_FILE, OUTPUT_FILE, ERROR_FILE +``INPUT_FILE, OUTPUT_FILE``, ``ERROR_FILE`` The file named will be attached to the standard input of the first process, standard output of the last process, or standard error of all processes, respectively. If the same file is named for both output and error then it will be used for both. -OUTPUT_QUIET, ERROR_QUIET +``OUTPUT_QUIET``, ``ERROR_QUIET`` The standard output or standard error results will be quietly ignored. If more than one ``OUTPUT_*`` or ``ERROR_*`` option is given for the diff --git a/Help/command/export.rst b/Help/command/export.rst index d4bab35..4419dc1 100644 --- a/Help/command/export.rst +++ b/Help/command/export.rst @@ -7,20 +7,20 @@ Export targets from the build tree for use by outside projects. export(EXPORT [NAMESPACE ] [FILE ]) -Create a file that may be included by outside projects to +Create a file ```` that may be included by outside projects to import targets from the current project's build tree. This is useful during cross-compiling to build utility executables that can run on the host platform in one project and then import them into another -project being compiled for the target platform. If the NAMESPACE -option is given the string will be prepended to all target +project being compiled for the target platform. If the ``NAMESPACE`` +option is given the ```` string will be prepended to all target names written to the file. -Target installations are associated with the export +Target installations are associated with the export ```` using the ``EXPORT`` option of the :command:`install(TARGETS)` command. The file created by this command is specific to the build tree and -should never be installed. See the install(EXPORT) command to export -targets from an installation tree. +should never be installed. See the :command:`install(EXPORT)` command to +export targets from an installation tree. The properties set on the generated IMPORTED targets will have the same values as the final values of the input TARGETS. @@ -45,12 +45,12 @@ unspecified. export(PACKAGE ) Store the current build directory in the CMake user package registry -for package . The find_package command may consider the -directory while searching for package . This helps dependent +for package ````. The find_package command may consider the +directory while searching for package ````. This helps dependent projects find and use a package from the current project's build tree without help from the user. Note that the entry in the package registry that this command creates works only in conjunction with a -package configuration file (Config.cmake) that works with the +package configuration file (``Config.cmake``) that works with the build tree. In some cases, for example for packaging and for system wide installations, it is not desirable to write the user package registry. If the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable diff --git a/Help/command/export_library_dependencies.rst b/Help/command/export_library_dependencies.rst index 73c0b42..2cb437e 100644 --- a/Help/command/export_library_dependencies.rst +++ b/Help/command/export_library_dependencies.rst @@ -7,22 +7,22 @@ Use :command:`install(EXPORT)` or :command:`export` command. This command generates an old-style library dependencies file. Projects requiring CMake 2.6 or later should not use the command. Use -instead the install(EXPORT) command to help export targets from an -installation tree and the export() command to export targets from a +instead the :command:`install(EXPORT)` command to help export targets from an +installation tree and the :command:`export` command to export targets from a build tree. The old-style library dependencies file does not take into account -per-configuration names of libraries or the LINK_INTERFACE_LIBRARIES -target property. +per-configuration names of libraries or the +:prop_tgt:`LINK_INTERFACE_LIBRARIES` target property. :: export_library_dependencies( [APPEND]) -Create a file named that can be included into a CMake listfile +Create a file named ```` that can be included into a CMake listfile with the INCLUDE command. The file will contain a number of SET commands that will set all the variables needed for library dependency information. This should be the last command in the top level -CMakeLists.txt file of the project. If the APPEND option is +CMakeLists.txt file of the project. If the ``APPEND`` option is specified, the SET commands will be appended to the given file instead of replacing it. diff --git a/Help/command/fltk_wrap_ui.rst b/Help/command/fltk_wrap_ui.rst index 448ae64..041e5a7 100644 --- a/Help/command/fltk_wrap_ui.rst +++ b/Help/command/fltk_wrap_ui.rst @@ -10,5 +10,5 @@ Create FLTK user interfaces Wrappers. Produce .h and .cxx files for all the .fl and .fld files listed. The resulting .h and .cxx files will be added to a variable named -resultingLibraryName_FLTK_UI_SRCS which should be added to your +``resultingLibraryName_FLTK_UI_SRCS`` which should be added to your library. diff --git a/Help/command/foreach.rst b/Help/command/foreach.rst index 348ebd8..c0f3679 100644 --- a/Help/command/foreach.rst +++ b/Help/command/foreach.rst @@ -15,7 +15,7 @@ All commands between foreach and the matching endforeach are recorded without being invoked. Once the endforeach is evaluated, the recorded list of commands is invoked once for each argument listed in the original foreach command. Before each iteration of the loop -"${loop_var}" will be set as a variable with the current value in the +``${loop_var}`` will be set as a variable with the current value in the list. :: @@ -40,8 +40,8 @@ three types of this iteration: foreach(loop_var IN [LISTS [list1 [...]]] [ITEMS [item1 [...]]]) -Iterates over a precise list of items. The LISTS option names +Iterates over a precise list of items. The ``LISTS`` option names list-valued variables to be traversed, including empty elements (an empty string is a zero-length list). (Note macro -arguments are not variables.) The ITEMS option ends argument +arguments are not variables.) The ``ITEMS`` option ends argument parsing and includes all arguments following it in the iteration. diff --git a/Help/command/get_cmake_property.rst b/Help/command/get_cmake_property.rst index bcfc5e8..3a6fb41 100644 --- a/Help/command/get_cmake_property.rst +++ b/Help/command/get_cmake_property.rst @@ -8,8 +8,8 @@ Get a property of the CMake instance. get_cmake_property(VAR property) Get a property from the CMake instance. The value of the property is -stored in the variable VAR. If the property is not found, VAR will be -set to "NOTFOUND". Some supported properties include: VARIABLES, -CACHE_VARIABLES, COMMANDS, MACROS, and COMPONENTS. +stored in the variable ``VAR``. If the property is not found, ``VAR`` +will be set to "NOTFOUND". See the :manual:`cmake-properties(7)` manual +for available properties. -See also the more general get_property() command. +See also the more general :command:`get_property` command. diff --git a/Help/command/get_directory_property.rst b/Help/command/get_directory_property.rst index f2a0a80..e50abe0 100644 --- a/Help/command/get_directory_property.rst +++ b/Help/command/get_directory_property.rst @@ -1,14 +1,14 @@ get_directory_property ---------------------- -Get a property of DIRECTORY scope. +Get a property of ``DIRECTORY`` scope. :: get_directory_property( [DIRECTORY ] ) Store a property of directory scope in the named variable. If the -property is not defined the empty-string is returned. The DIRECTORY +property is not defined the empty-string is returned. The ``DIRECTORY`` argument specifies another directory from which to retrieve the property value. The specified directory must have already been traversed by CMake. @@ -21,4 +21,4 @@ traversed by CMake. Get a variable definition from a directory. This form is useful to get a variable definition from another directory. -See also the more general get_property() command. +See also the more general :command:`get_property` command. diff --git a/Help/command/get_filename_component.rst b/Help/command/get_filename_component.rst index 5eec792..60488da 100644 --- a/Help/command/get_filename_component.rst +++ b/Help/command/get_filename_component.rst @@ -7,7 +7,7 @@ Get a specific component of a full filename. get_filename_component( [CACHE]) -Set to a component of , where is one of: +Set ```` to a component of ````, where ```` is one of: :: @@ -21,7 +21,7 @@ Set to a component of , where is one of: Paths are returned with forward slashes and have no trailing slahes. The longest file extension is always considered. If the optional -CACHE argument is specified, the result variable is added to the +``CACHE`` argument is specified, the result variable is added to the cache. :: @@ -30,8 +30,8 @@ cache. PROGRAM [PROGRAM_ARGS ] [CACHE]) -The program in FileName will be found in the system search path or -left as a full path. If PROGRAM_ARGS is present with PROGRAM, then -any command-line arguments present in the FileName string are split -from the program name and stored in . This is used to +The program in ``FileName`` will be found in the system search path or +left as a full path. If ``PROGRAM_ARGS`` is present with ``PROGRAM``, then +any command-line arguments present in the ``FileName`` string are split +from the program name and stored in ````. This is used to separate a program name from its arguments in a command line string. diff --git a/Help/command/get_source_file_property.rst b/Help/command/get_source_file_property.rst index 80c512b..3e975c2 100644 --- a/Help/command/get_source_file_property.rst +++ b/Help/command/get_source_file_property.rst @@ -8,9 +8,9 @@ Get a property for a source file. get_source_file_property(VAR file property) Get a property from a source file. The value of the property is -stored in the variable VAR. If the property is not found, VAR will be -set to "NOTFOUND". Use set_source_files_properties to set property -values. Source file properties usually control how the file is built. -One property that is always there is LOCATION +stored in the variable ``VAR``. If the property is not found, ``VAR`` +will be set to "NOTFOUND". Use :command:`set_source_files_properties` +to set property values. Source file properties usually control how the +file is built. One property that is always there is :prop_sf:`LOCATION` -See also the more general get_property() command. +See also the more general :command:`get_property` command. diff --git a/Help/command/get_target_property.rst b/Help/command/get_target_property.rst index 4017d31..7798252 100644 --- a/Help/command/get_target_property.rst +++ b/Help/command/get_target_property.rst @@ -8,11 +8,11 @@ Get a property from a target. get_target_property(VAR target property) Get a property from a target. The value of the property is stored in -the variable VAR. If the property is not found, VAR will be set to -"NOTFOUND". Use set_target_properties to set property values. +the variable ``VAR``. If the property is not found, ``VAR`` will be set to +"NOTFOUND". Use :command:`set_target_properties` to set property values. Properties are usually used to control how a target is built, but some query the target instead. This command can get properties for any target so far created. The targets do not need to be in the current CMakeLists.txt file. -See also the more general get_property() command. +See also the more general :command:`get_property` command. diff --git a/Help/command/get_test_property.rst b/Help/command/get_test_property.rst index 391a32e..e359f4b 100644 --- a/Help/command/get_test_property.rst +++ b/Help/command/get_test_property.rst @@ -8,8 +8,8 @@ Get a property of the test. get_test_property(test property VAR) Get a property from the test. The value of the property is stored in -the variable VAR. If the test or property is not found, VAR will be -set to "NOTFOUND". For a list of standard properties you can type cmake ---help-property-list. +the variable ``VAR``. If the test or property is not found, ``VAR`` will +be set to "NOTFOUND". For a list of standard properties you can type +``cmake --help-property-list``. -See also the more general get_property() command. +See also the more general :command:`get_property` command. diff --git a/Help/command/include.rst b/Help/command/include.rst index a9074c1..c391561 100644 --- a/Help/command/include.rst +++ b/Help/command/include.rst @@ -9,17 +9,17 @@ Load and run CMake code from a file or module. [NO_POLICY_SCOPE]) Load and run CMake code from the file given. Variable reads and -writes access the scope of the caller (dynamic scoping). If OPTIONAL +writes access the scope of the caller (dynamic scoping). If ``OPTIONAL`` is present, then no error is raised if the file does not exist. If -RESULT_VARIABLE is given the variable will be set to the full filename +``RESULT_VARIABLE`` is given the variable will be set to the full filename which has been included or NOTFOUND if it failed. If a module is specified instead of a file, the file with name -.cmake is searched first in CMAKE_MODULE_PATH, then in the -CMake module directory. There is one exception to this: if the file -which calls include() is located itself in the CMake module directory, -then first the CMake module directory is searched and -CMAKE_MODULE_PATH afterwards. See also policy CMP0017. +.cmake is searched first in :variable:`CMAKE_MODULE_PATH`, +then in the CMake module directory. There is one exception to this: if +the file which calls ``include()`` is located itself in the CMake module +directory, then first the CMake module directory is searched and +:variable:`CMAKE_MODULE_PATH` afterwards. See also policy :policy:`CMP0017`. -See the cmake_policy() command documentation for discussion of the -NO_POLICY_SCOPE option. +See the :command:`cmake_policy` command documentation for discussion of the +``NO_POLICY_SCOPE`` option. diff --git a/Help/command/include_external_msproject.rst b/Help/command/include_external_msproject.rst index ba9a393..595762d 100644 --- a/Help/command/include_external_msproject.rst +++ b/Help/command/include_external_msproject.rst @@ -13,10 +13,10 @@ Include an external Microsoft project file in a workspace. Includes an external Microsoft project in the generated workspace file. Currently does nothing on UNIX. This will create a target -named [projectname]. This can be used in the add_dependencies command -to make things depend on the external project. +named [projectname]. This can be used in the :command:`add_dependencies` +command to make things depend on the external project. -TYPE, GUID and PLATFORM are optional parameters that allow one to +``TYPE``, ``GUID`` and ``PLATFORM`` are optional parameters that allow one to specify the type of project, id (GUID) of the project and the name of the target platform. This is useful for projects requiring values other than the default (e.g. WIX projects). These options are not diff --git a/Help/command/include_regular_expression.rst b/Help/command/include_regular_expression.rst index dd887df..ab5a563 100644 --- a/Help/command/include_regular_expression.rst +++ b/Help/command/include_regular_expression.rst @@ -8,8 +8,8 @@ Set the regular expression used for dependency checking. include_regular_expression(regex_match [regex_complain]) Set the regular expressions used in dependency checking. Only files -matching regex_match will be traced as dependencies. Only files -matching regex_complain will generate warnings if they cannot be found +matching ``regex_match`` will be traced as dependencies. Only files +matching ``regex_complain`` will generate warnings if they cannot be found (standard header paths are not searched). The defaults are: :: diff --git a/Help/command/install_files.rst b/Help/command/install_files.rst index 7b6bd81..1850be6 100644 --- a/Help/command/install_files.rst +++ b/Help/command/install_files.rst @@ -1,13 +1,13 @@ install_files ------------- -Deprecated. Use the install(FILES ) command instead. +Deprecated. Use the :command:`install(FILES)` command instead. -This command has been superceded by the install command. It is -provided for compatibility with older CMake code. The FILES form is -directly replaced by the FILES form of the install command. The -regexp form can be expressed more clearly using the GLOB form of the -file command. +This command has been superceded by the :command:`install` command. It is +provided for compatibility with older CMake code. The ``FILES`` form is +directly replaced by the ``FILES`` form of the :command:`install` +command. The regexp form can be expressed more clearly using the ``GLOB`` +form of the :command:`file` command. :: @@ -32,8 +32,8 @@ expression will be installed. install_files( FILES file file ...) -Any files listed after the FILES keyword will be installed explicitly +Any files listed after the ``FILES`` keyword will be installed explicitly from the names given. Full paths are allowed in this form. -The directory is relative to the installation prefix, which is -stored in the variable CMAKE_INSTALL_PREFIX. +The directory ```` is relative to the installation prefix, which is +stored in the variable :variable:`CMAKE_INSTALL_PREFIX`. diff --git a/Help/command/install_programs.rst b/Help/command/install_programs.rst index 26789d8..79aa486 100644 --- a/Help/command/install_programs.rst +++ b/Help/command/install_programs.rst @@ -1,13 +1,13 @@ install_programs ---------------- -Deprecated. Use the install(PROGRAMS ) command instead. +Deprecated. Use the :command:`install(PROGRAMS)` command instead. -This command has been superceded by the install command. It is -provided for compatibility with older CMake code. The FILES form is -directly replaced by the PROGRAMS form of the INSTALL command. The -regexp form can be expressed more clearly using the GLOB form of the -FILE command. +This command has been superceded by the :command:`install` command. It is +provided for compatibility with older CMake code. The ``FILES`` form is +directly replaced by the ``PROGRAMS`` form of the :command:`install` +command. The regexp form can be expressed more clearly using the ``GLOB`` +form of the :command:`file` command. :: @@ -15,7 +15,7 @@ FILE command. install_programs( FILES file1 [file2 ...]) Create rules to install the listed programs into the given directory. -Use the FILES argument to guarantee that the file list version of the +Use the ``FILES`` argument to guarantee that the file list version of the command will be used even when there is only one argument. :: @@ -26,8 +26,9 @@ In the second form any program in the current source directory that matches the regular expression will be installed. This command is intended to install programs that are not built by -cmake, such as shell scripts. See the TARGETS form of the INSTALL -command to create installation rules for targets built by cmake. +cmake, such as shell scripts. See the ``TARGETS`` form of the +:command:`install` command to create installation rules for targets built +by cmake. -The directory is relative to the installation prefix, which is -stored in the variable CMAKE_INSTALL_PREFIX. +The directory ```` is relative to the installation prefix, which is +stored in the variable :variable:`CMAKE_INSTALL_PREFIX`. diff --git a/Help/command/install_targets.rst b/Help/command/install_targets.rst index caa933f..49ca696 100644 --- a/Help/command/install_targets.rst +++ b/Help/command/install_targets.rst @@ -1,9 +1,9 @@ install_targets --------------- -Deprecated. Use the install(TARGETS ) command instead. +Deprecated. Use the :command:`install(TARGETS)` command instead. -This command has been superceded by the install command. It is +This command has been superceded by the :command:`install` command. It is provided for compatibility with older CMake code. :: @@ -11,7 +11,7 @@ provided for compatibility with older CMake code. install_targets( [RUNTIME_DIRECTORY dir] target target) Create rules to install the listed targets into the given directory. -The directory is relative to the installation prefix, which is -stored in the variable CMAKE_INSTALL_PREFIX. If RUNTIME_DIRECTORY is -specified, then on systems with special runtime files (Windows DLL), -the files will be copied to that directory. +The directory ```` is relative to the installation prefix, which is +stored in the variable :variable:`CMAKE_INSTALL_PREFIX`. If +``RUNTIME_DIRECTORY`` is specified, then on systems with special runtime +files (Windows DLL), the files will be copied to that directory. diff --git a/Help/command/link_directories.rst b/Help/command/link_directories.rst index bdc94cd..5c64bc6 100644 --- a/Help/command/link_directories.rst +++ b/Help/command/link_directories.rst @@ -10,10 +10,10 @@ Specify directories in which the linker will look for libraries. Specify the paths in which the linker should search for libraries. The command will apply only to targets created after it is called. Relative paths given to this command are interpreted as relative to -the current source directory, see CMP0015. +the current source directory, see :policy:`CMP0015`. Note that this command is rarely necessary. Library locations -returned by find_package() and find_library() are absolute paths. -Pass these absolute library file paths directly to the -target_link_libraries() command. CMake will ensure the linker finds +returned by :command:`find_package` and :command:`find_library` are +absolute paths. Pass these absolute library file paths directly to the +:command:`target_link_libraries` command. CMake will ensure the linker finds them. diff --git a/Help/command/list.rst b/Help/command/list.rst index aeb1e94..a7a05c7 100644 --- a/Help/command/list.rst +++ b/Help/command/list.rst @@ -17,45 +17,45 @@ List operations. list(REVERSE ) list(SORT ) -LENGTH will return a given list's length. +``LENGTH`` will return a given list's length. -GET will return list of elements specified by indices from the list. +``GET`` will return list of elements specified by indices from the list. -APPEND will append elements to the list. +``APPEND`` will append elements to the list. -FIND will return the index of the element specified in the list or -1 +``FIND`` will return the index of the element specified in the list or -1 if it wasn't found. -INSERT will insert elements to the list to the specified location. +``INSERT`` will insert elements to the list to the specified location. -REMOVE_AT and REMOVE_ITEM will remove items from the list. The -difference is that REMOVE_ITEM will remove the given items, while -REMOVE_AT will remove the items at the given indices. +``REMOVE_AT`` and ``REMOVE_ITEM`` will remove items from the list. The +difference is that ``REMOVE_ITEM`` will remove the given items, while +``REMOVE_AT`` will remove the items at the given indices. -REMOVE_DUPLICATES will remove duplicated items in the list. +``REMOVE_DUPLICATES`` will remove duplicated items in the list. -REVERSE reverses the contents of the list in-place. +``REVERSE`` reverses the contents of the list in-place. -SORT sorts the list in-place alphabetically. +``SORT`` sorts the list in-place alphabetically. -The list subcommands APPEND, INSERT, REMOVE_AT, REMOVE_ITEM, -REMOVE_DUPLICATES, REVERSE and SORT may create new values for the list -within the current CMake variable scope. Similar to the SET command, -the LIST command creates new variable values in the current scope, -even if the list itself is actually defined in a parent scope. To -propagate the results of these operations upwards, use SET with -PARENT_SCOPE, SET with CACHE INTERNAL, or some other means of value -propagation. +The list subcommands ``APPEND``, ``INSERT``, ``REMOVE_AT``, ``REMOVE_ITEM``, +``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create new values for +the list within the current CMake variable scope. Similar to the +:command:`set` command, the LIST command creates new variable values in the +current scope, even if the list itself is actually defined in a parent +scope. To propagate the results of these operations upwards, use +:command:`set` with ``PARENT_SCOPE``, :command:`set` with +``CACHE INTERNAL``, or some other means of value propagation. -NOTES: A list in cmake is a ; separated group of strings. To create a -list the set command can be used. For example, set(var a b c d e) -creates a list with a;b;c;d;e, and set(var "a b c d e") creates a +NOTES: A list in cmake is a ``;`` separated group of strings. To create a +list the set command can be used. For example, ``set(var a b c d e)`` +creates a list with ``a;b;c;d;e``, and ``set(var "a b c d e")`` creates a string or a list with one item in it. (Note macro arguments are not variables, and therefore cannot be used in LIST commands.) -When specifying index values, if is 0 or greater, it +When specifying index values, if ```` is 0 or greater, it is indexed from the beginning of the list, with 0 representing the -first list element. If is -1 or lesser, it is indexed +first list element. If ```` is -1 or lesser, it is indexed from the end of the list, with -1 representing the last list element. Be careful when counting with negative indices: they do not start from 0. -0 is equivalent to 0, the first list element. diff --git a/Help/command/load_cache.rst b/Help/command/load_cache.rst index b7484cb..f113447 100644 --- a/Help/command/load_cache.rst +++ b/Help/command/load_cache.rst @@ -19,9 +19,9 @@ does not create entries in the local project's cache. Load in the values from another cache and store them in the local project's cache as internal entries. This is useful for a project -that depends on another project built in a different tree. EXCLUDE +that depends on another project built in a different tree. ``EXCLUDE`` option can be used to provide a list of entries to be excluded. -INCLUDE_INTERNALS can be used to provide a list of internal entries to +``INCLUDE_INTERNALS`` can be used to provide a list of internal entries to be included. Normally, no internal entries are brought in. Use of this form of the command is strongly discouraged, but it is provided for backward compatibility. diff --git a/Help/command/load_command.rst b/Help/command/load_command.rst index fc316d4..a1576e8 100644 --- a/Help/command/load_command.rst +++ b/Help/command/load_command.rst @@ -11,9 +11,9 @@ Load a command into a running CMake. The given locations are searched for a library whose name is cmCOMMAND_NAME. If found, it is loaded as a module and the command is -added to the set of available CMake commands. Usually, TRY_COMPILE is -used before this command to compile the module. If the command is -successfully loaded a variable named +added to the set of available CMake commands. Usually, +:command:`try_compile` is used before this command to compile the +module. If the command is successfully loaded a variable named :: diff --git a/Help/command/make_directory.rst b/Help/command/make_directory.rst index 44dbe97..27ecf51 100644 --- a/Help/command/make_directory.rst +++ b/Help/command/make_directory.rst @@ -1,7 +1,7 @@ make_directory -------------- -Deprecated. Use the file(MAKE_DIRECTORY ) command instead. +Deprecated. Use the :command:`file(MAKE_DIRECTORY)` command instead. :: diff --git a/Help/command/mark_as_advanced.rst b/Help/command/mark_as_advanced.rst index 30b1289..c3f94fc 100644 --- a/Help/command/mark_as_advanced.rst +++ b/Help/command/mark_as_advanced.rst @@ -9,10 +9,10 @@ Mark cmake cached variables as advanced. Mark the named cached variables as advanced. An advanced variable will not be displayed in any of the cmake GUIs unless the show -advanced option is on. If CLEAR is the first argument advanced -variables are changed back to unadvanced. If FORCE is the first -argument, then the variable is made advanced. If neither FORCE nor -CLEAR is specified, new values will be marked as advanced, but if the +advanced option is on. If ``CLEAR`` is the first argument advanced +variables are changed back to unadvanced. If ``FORCE`` is the first +argument, then the variable is made advanced. If neither ``FORCE`` nor +``CLEAR`` is specified, new values will be marked as advanced, but if the variable already has an advanced/non-advanced state, it will not be changed. diff --git a/Help/command/math.rst b/Help/command/math.rst index 38fde1d..d4deb16 100644 --- a/Help/command/math.rst +++ b/Help/command/math.rst @@ -7,7 +7,7 @@ Mathematical expressions. math(EXPR ) -EXPR evaluates mathematical expression and returns result in the +``EXPR`` evaluates mathematical expression and returns result in the output variable. Example mathematical expression is '5 * ( 10 + 13 )'. Supported operators are + - * / % | & ^ ~ << >> * / %. They have the same meaning as they do in C code. diff --git a/Help/command/message.rst b/Help/command/message.rst index a20325a..04c62fd 100644 --- a/Help/command/message.rst +++ b/Help/command/message.rst @@ -7,7 +7,7 @@ Display a message to the user. message([] "message to display" ...) -The optional keyword determines the type of message: +The optional ```` keyword determines the type of message: :: diff --git a/Help/command/option.rst b/Help/command/option.rst index 244ed07..91cd0a7 100644 --- a/Help/command/option.rst +++ b/Help/command/option.rst @@ -8,8 +8,8 @@ Provides an option that the user can optionally select. option( "help string describing option" [initial value]) -Provide an option for the user to select as ON or OFF. If no initial -value is provided, OFF is used. +Provide an option for the user to select as ``ON`` or ``OFF``. If no +initial value is provided, ``OFF`` is used. If you have options that depend on the values of other options, see -the module help for CMakeDependentOption. +the module help for :module:`CMakeDependentOption`. diff --git a/Help/command/qt_wrap_cpp.rst b/Help/command/qt_wrap_cpp.rst index 81bbc06..3843bf5 100644 --- a/Help/command/qt_wrap_cpp.rst +++ b/Help/command/qt_wrap_cpp.rst @@ -9,4 +9,4 @@ Create Qt Wrappers. SourceLists ...) Produce moc files for all the .h files listed in the SourceLists. The -moc files will be added to the library using the DestName source list. +moc files will be added to the library using the ``DestName`` source list. diff --git a/Help/command/qt_wrap_ui.rst b/Help/command/qt_wrap_ui.rst index 4e033a8..f731ed9 100644 --- a/Help/command/qt_wrap_ui.rst +++ b/Help/command/qt_wrap_ui.rst @@ -9,6 +9,6 @@ Create Qt user interfaces Wrappers. SourcesDestName SourceLists ...) Produce .h and .cxx files for all the .ui files listed in the -SourceLists. The .h files will be added to the library using the -HeadersDestNamesource list. The .cxx files will be added to the -library using the SourcesDestNamesource list. +``SourceLists``. The .h files will be added to the library using the +``HeadersDestNamesource`` list. The .cxx files will be added to the +library using the ``SourcesDestNamesource`` list. diff --git a/Help/command/remove.rst b/Help/command/remove.rst index ddf0e9a..4628277 100644 --- a/Help/command/remove.rst +++ b/Help/command/remove.rst @@ -1,12 +1,12 @@ remove ------ -Deprecated. Use the list(REMOVE_ITEM ) command instead. +Deprecated. Use the :command:`list(REMOVE_ITEM)` command instead. :: remove(VAR VALUE VALUE ...) -Removes VALUE from the variable VAR. This is typically used to remove -entries from a vector (e.g. semicolon separated list). VALUE is -expanded. +Removes ``VALUE`` from the variable ``VAR``. This is typically used to +remove entries from a vector (e.g. semicolon separated list). ``VALUE`` +is expanded. diff --git a/Help/command/remove_definitions.rst b/Help/command/remove_definitions.rst index 566da6e..ea18918 100644 --- a/Help/command/remove_definitions.rst +++ b/Help/command/remove_definitions.rst @@ -1,11 +1,11 @@ remove_definitions ------------------ -Removes -D define flags added by add_definitions. +Removes -D define flags added by :command:`add_definitions`. :: remove_definitions(-DFOO -DBAR ...) -Removes flags (added by add_definitions) from the compiler command -line for sources in the current directory and below. +Removes flags (added by :command:`add_definitions`) from the compiler +command line for sources in the current directory and below. diff --git a/Help/command/return.rst b/Help/command/return.rst index 899470c..e49fb3c 100644 --- a/Help/command/return.rst +++ b/Help/command/return.rst @@ -8,11 +8,11 @@ Return from a file, directory or function. return() Returns from a file, directory or function. When this command is -encountered in an included file (via include() or find_package()), it -causes processing of the current file to stop and control is returned -to the including file. If it is encountered in a file which is not -included by another file, e.g. a CMakeLists.txt, control is returned -to the parent directory if there is one. If return is called in a -function, control is returned to the caller of the function. Note -that a macro is not a function and does not handle return like a +encountered in an included file (via :command:`include` or +:command:`find_package`), it causes processing of the current file to stop +and control is returned to the including file. If it is encountered in a +file which is not included by another file, e.g. a ``CMakeLists.txt``, +control is returned to the parent directory if there is one. If return is +called in a function, control is returned to the caller of the function. +Note that a macro is not a function and does not handle return like a function does. diff --git a/Help/command/separate_arguments.rst b/Help/command/separate_arguments.rst index a876595..0e3e5a5 100644 --- a/Help/command/separate_arguments.rst +++ b/Help/command/separate_arguments.rst @@ -8,15 +8,15 @@ Parse space-separated arguments into a semicolon-separated list. separate_arguments( _COMMAND "") Parses a unix- or windows-style command-line string "" and -stores a semicolon-separated list of the arguments in . The +stores a semicolon-separated list of the arguments in ````. The entire command line must be given in one "" argument. -The UNIX_COMMAND mode separates arguments by unquoted whitespace. It +The ``UNIX_COMMAND`` mode separates arguments by unquoted whitespace. It recognizes both single-quote and double-quote pairs. A backslash escapes the next literal character (\" is "); there are no special escapes (\n is just n). -The WINDOWS_COMMAND mode parses a windows command-line using the same +The ``WINDOWS_COMMAND`` mode parses a windows command-line using the same syntax the runtime library uses to construct argv at startup. It separates arguments by whitespace that is not double-quoted. Backslashes are literal unless they precede double-quotes. See the @@ -26,6 +26,6 @@ MSDN article "Parsing C Command-Line Arguments" for details. separate_arguments(VARIABLE) -Convert the value of VARIABLE to a semi-colon separated list. All +Convert the value of ``VARIABLE`` to a semi-colon separated list. All spaces are replaced with ';'. This helps with generating command lines. diff --git a/Help/command/set_target_properties.rst b/Help/command/set_target_properties.rst index f65ee24..2accfb0 100644 --- a/Help/command/set_target_properties.rst +++ b/Help/command/set_target_properties.rst @@ -12,93 +12,98 @@ Targets can have properties that affect how they are built. Set properties on a target. The syntax for the command is to list all the files you want to change, and then provide the values you want to set next. You can use any prop value pair you want and extract it -later with the GET_TARGET_PROPERTY command. +later with the :command:`get_target_property` command. Properties that affect the name of a target's output file are as -follows. The PREFIX and SUFFIX properties override the default target -name prefix (such as "lib") and suffix (such as ".so"). IMPORT_PREFIX -and IMPORT_SUFFIX are the equivalent properties for the import library -corresponding to a DLL (for SHARED library targets). OUTPUT_NAME sets -the real name of a target when it is built and can be used to help -create two targets of the same name even though CMake requires unique -logical target names. There is also a _OUTPUT_NAME that can -set the output name on a per-configuration basis. _POSTFIX -sets a postfix for the real name of the target when it is built under -the configuration named by (in upper-case, such as -"DEBUG_POSTFIX"). The value of this property is initialized when the -target is created to the value of the variable CMAKE__POSTFIX +follows. The :prop_tgt:`PREFIX` and :prop_tgt:`SUFFIX` properties +override the default target name prefix (such as "lib") and suffix +(such as ".so"). :prop_tgt:`IMPORT_PREFIX` and +:prop_tgt:`IMPORT_SUFFIX` are the equivalent properties for the import +library corresponding to a DLL (for SHARED library targets). +:prop_tgt:`OUTPUT_NAME` sets the real name of a target when it is built +and can be used to help create two targets of the same name even though +CMake requires unique logical target names. There is also a +:prop_tgt:`_OUTPUT_NAME` that can set the output name on a +per-configuration basis. :prop_tgt:`_POSTFIX` sets a postfix for +the real name of the target when it is built under the configuration named +by ```` (in upper-case, such as "DEBUG_POSTFIX"). The value of this +property is initialized when the target is created to the value of the +variable :variable:`CMAKE__POSTFIX` (except for executable targets because earlier CMake versions which did not use this variable for executables). -The LINK_FLAGS property can be used to add extra flags to the link -step of a target. LINK_FLAGS_ will add to the configuration -, for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO. -DEFINE_SYMBOL sets the name of the preprocessor symbol defined when -compiling sources in a shared library. If not set here then it is set -to target_EXPORTS by default (with some substitutions if the target is -not a valid C identifier). This is useful for headers to know whether -they are being included from inside their library or outside to -properly setup dllexport/dllimport decorations. The COMPILE_FLAGS -property sets additional compiler flags used to build sources within -the target. It may also be used to pass additional preprocessor -definitions. +The :prop_tgt:`LINK_FLAGS` property can be used to add extra flags to the +link step of a target. :prop_tgt:`LINK_FLAGS_` will add to the +configuration ````, for example, ``DEBUG``, ``RELEASE``, +``MINSIZEREL``,``RELWITHDEBINFO``. :prop_tgt:`DEFINE_SYMBOL` sets the name +of the preprocessor symbol defined when compiling sources in a shared +library. If not set here then it is set to target_EXPORTS by default +(with some substitutions if the target is not a valid C identifier). This +is useful for headers to know whether they are being included from inside +their library or outside to properly setup dllexport/dllimport +decorations. The :prop_tgt:`COMPILE_FLAGS` property sets additional +compiler flags used to build sources within the target. It may also be +used to pass additional preprocessor definitions. -The LINKER_LANGUAGE property is used to change the tool used to link -an executable or shared library. The default is set the language to -match the files in the library. CXX and C are common values for this +The :prop_tgt:`LINKER_LANGUAGE` property is used to change the tool used +to link an executable or shared library. The default is set the language to +match the files in the library. ``CXX`` and ``C`` are common values for this property. -For shared libraries VERSION and SOVERSION can be used to specify the -build version and API version respectively. When building or -installing appropriate symlinks are created if the platform supports -symlinks and the linker supports so-names. If only one of both is +For shared libraries :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` can be +used to specify the build version and API version respectively. When +building or installing appropriate symlinks are created if the platform +supports symlinks and the linker supports so-names. If only one of both is specified the missing is assumed to have the same version number. For -executables VERSION can be used to specify the build version. When -building or installing appropriate symlinks are created if the -platform supports symlinks. For shared libraries and executables on -Windows the VERSION attribute is parsed to extract a "major.minor" -version number. These numbers are used as the image version of the -binary. +executables :prop_tgt:`VERSION` can be used to specify the build +version. When building or installing appropriate symlinks are created if +the platform supports symlinks. For shared libraries and executables on +Windows the :prop_tgt:`VERSION` attribute is parsed to extract a +"major.minor" version number. These numbers are used as the image +version of the binary. -There are a few properties used to specify RPATH rules. INSTALL_RPATH -is a semicolon-separated list specifying the rpath to use in installed -targets (for platforms that support it). INSTALL_RPATH_USE_LINK_PATH -is a boolean that if set to true will append directories in the linker -search path and outside the project to the INSTALL_RPATH. -SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic -generation of an rpath allowing the target to run from the build tree. -BUILD_WITH_INSTALL_RPATH is a boolean specifying whether to link the -target in the build tree with the INSTALL_RPATH. This takes -precedence over SKIP_BUILD_RPATH and avoids the need for relinking -before installation. INSTALL_NAME_DIR is a string specifying the +There are a few properties used to specify RPATH rules. +:prop_tgt:`INSTALL_RPATH` is a semicolon-separated list specifying the +rpath to use in installed targets (for platforms that support it). +:prop_tgt:`INSTALL_RPATH_USE_LINK_PATH` is a boolean that if set to true +will append directories in the linker search path and outside the project +to the :prop_tgt:`INSTALL_RPATH`. :prop_tgt:`SKIP_BUILD_RPATH` is a boolean +specifying whether to skip automatic generation of an rpath allowing the +target to run from the build tree. :prop_tgt:`BUILD_WITH_INSTALL_RPATH` is +a boolean specifying whether to link the target in the build tree with the +:prop_tgt:`INSTALL_RPATH`. This takes precedence over +:prop_tgt:`SKIP_BUILD_RPATH` and avoids the need for relinking before +installation. :prop_tgt:`INSTALL_NAME_DIR` is a string specifying the directory portion of the "install_name" field of shared libraries on Mac OSX to use in the installed targets. When the target is created -the values of the variables CMAKE_INSTALL_RPATH, -CMAKE_INSTALL_RPATH_USE_LINK_PATH, CMAKE_SKIP_BUILD_RPATH, -CMAKE_BUILD_WITH_INSTALL_RPATH, and CMAKE_INSTALL_NAME_DIR are used to -initialize these properties. +the values of the variables :variable:`CMAKE_INSTALL_RPATH`, +:variable:`CMAKE_INSTALL_RPATH_USE_LINK_PATH`, +:variable:`CMAKE_SKIP_BUILD_RPATH`, +:variable:`CMAKE_BUILD_WITH_INSTALL_RPATH`, and +:variable:`CMAKE_INSTALL_NAME_DIR` are used to initialize these properties. -PROJECT_LABEL can be used to change the name of the target in an IDE -like visual studio. VS_KEYWORD can be set to change the visual studio -keyword, for example Qt integration works better if this is set to -Qt4VSv1.0. +:prop_tgt:`PROJECT_LABEL` can be used to change the name of the target in +an IDE like visual studio. :prop_tgt:`VS_KEYWORD` can be set to change +the visual studio keyword, for example Qt integration works better if this +is set to ``Qt4VSv1.0``. -VS_SCC_PROJECTNAME, VS_SCC_LOCALPATH, VS_SCC_PROVIDER and -VS_SCC_AUXPATH can be set to add support for source control bindings -in a Visual Studio project file. +:prop_tgt:`VS_SCC_PROJECTNAME`, :prop_tgt:`VS_SCC_LOCALPATH`, +:prop_tgt:`VS_SCC_PROVIDER` and :prop_tgt:`VS_SCC_AUXPATH` can be set to +add support for source control bindings in a Visual Studio project file. -VS_GLOBAL_ can be set to add a Visual Studio +:prop_tgt:`VS_GLOBAL_` can be set to add a Visual Studio project-specific global variable. Qt integration works better if -VS_GLOBAL_QtVersion is set to the Qt version FindQt4.cmake found. For -example, "4.7.3" +``VS_GLOBAL_QtVersion`` is set to the Qt version :module:`FindQt4` +found. For example, "4.7.3" -The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are the old -way to specify CMake scripts to run before and after installing a -target. They are used only when the old INSTALL_TARGETS command is -used to install the target. Use the INSTALL command instead. +The :prop_tgt:`PRE_INSTALL_SCRIPT` and :prop_tgt:`POST_INSTALL_SCRIPT` +properties are the old way to specify CMake scripts to run before and +after installing a target. They are used only when the old +:command:`install_targets` command is used to install the target. Use the +:command:`install` command instead. -The EXCLUDE_FROM_DEFAULT_BUILD property is used by the visual studio -generators. If it is set to 1 the target will not be part of the +The :prop_tgt:`EXCLUDE_FROM_DEFAULT_BUILD` property is used by the visual +studio generators. If it is set to 1 the target will not be part of the default build when you select "Build Solution". This can also be set on a per-configuration basis using -EXCLUDE_FROM_DEFAULT_BUILD_. +:prop_tgt:`EXCLUDE_FROM_DEFAULT_BUILD_`. diff --git a/Help/command/string.rst b/Help/command/string.rst index 351385b..34c1b61 100644 --- a/Help/command/string.rst +++ b/Help/command/string.rst @@ -39,41 +39,41 @@ String operations. string(UUID NAMESPACE NAME TYPE [UPPER]) -REGEX MATCH will match the regular expression once and store the match +``REGEX MATCH`` will match the regular expression once and store the match in the output variable. -REGEX MATCHALL will match the regular expression as many times as +``REGEX MATCHALL`` will match the regular expression as many times as possible and store the matches in the output variable as a list. -REGEX REPLACE will match the regular expression as many times as +``REGEX REPLACE`` will match the regular expression as many times as possible and substitute the replacement expression for the match in the output. The replace expression may refer to paren-delimited subexpressions of the match using \1, \2, ..., \9. Note that two backslashes (\\1) are required in CMake code to get a backslash through argument parsing. -REPLACE will replace all occurrences of match_string in the input with -replace_string and store the result in the output. +``REPLACE`` will replace all occurrences of ``match_string`` in the input +with ``replace_string`` and store the result in the output. -CONCAT will concatenate all the input arguments together and store +``CONCAT`` will concatenate all the input arguments together and store the result in the named output variable. -MD5, SHA1, SHA224, SHA256, SHA384, and SHA512 will compute a -cryptographic hash of the input string. +``MD5``, ``SHA1``, ``SHA224``, ``SHA256``, ``SHA384``, and ``SHA512`` will +compute a cryptographic hash of the input string. -COMPARE EQUAL/NOTEQUAL/LESS/GREATER will compare the strings and store -true or false in the output variable. +``COMPARE EQUAL``/``COMPARE NOTEQUAL``/``COMPARE LESS/GREATER`` will +compare the strings and store true or false in the output variable. -ASCII will convert all numbers into corresponding ASCII characters. +``ASCII`` will convert all numbers into corresponding ASCII characters. -CONFIGURE will transform a string like CONFIGURE_FILE transforms a -file. +``CONFIGURE`` will transform a string like :command:`configure_file` +transforms a file. -TOUPPER/TOLOWER will convert string to upper/lower characters. +``TOUPPER``/``TOLOWER`` will convert string to upper/lower characters. -LENGTH will return a given string's length. +``LENGTH`` will return a given string's length. -SUBSTRING will return a substring of a given string. If length is -1 +``SUBSTRING`` will return a substring of a given string. If length is -1 the remainder of the string starting at begin will be returned. If string is shorter than length then end of string is used instead. @@ -81,17 +81,17 @@ If string is shorter than length then end of string is used instead. CMake 3.1 and below reported an error if length pointed past the end of string. -STRIP will return a substring of a given string with leading and +``STRIP`` will return a substring of a given string with leading and trailing spaces removed. -RANDOM will return a random string of given length consisting of +``RANDOM`` will return a random string of given length consisting of characters from the given alphabet. Default length is 5 characters and default alphabet is all numbers and upper and lower case letters. -If an integer RANDOM_SEED is given, its value will be used to seed the +If an integer ``RANDOM_SEED`` is given, its value will be used to seed the random number generator. -FIND will return the position where the given substring was found in -the supplied string. If the REVERSE flag was used, the command will +``FIND`` will return the position where the given substring was found in +the supplied string. If the ``REVERSE`` flag was used, the command will search for the position of the last occurrence of the specified substring. @@ -118,21 +118,21 @@ The following characters have special meaning in regular expressions: by all regular expression-related commands, including e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9). -``*``, ``+`` and ``?`` have higher precedence than concatenation. | has lower -precedence than concatenation. This means that the regular expression -"^ab+d$" matches "abbd" but not "ababd", and the regular expression -"^(ab|cd)$" matches "ab" but not "abd". +``*``, ``+`` and ``?`` have higher precedence than concatenation. ``|`` +has lower precedence than concatenation. This means that the regular +expression "^ab+d$" matches "abbd" but not "ababd", and the regular +expression "^(ab|cd)$" matches "ab" but not "abd". -TIMESTAMP will write a string representation of the current date +``TIMESTAMP`` will write a string representation of the current date and/or time to the output variable. Should the command be unable to obtain a timestamp the output variable will be set to the empty string "". -The optional UTC flag requests the current date/time representation to +The optional ``UTC`` flag requests the current date/time representation to be in Coordinated Universal Time (UTC) rather than local time. -The optional may contain the following format +The optional ```` may contain the following format specifiers: :: @@ -153,23 +153,23 @@ specifiers: Unknown format specifiers will be ignored and copied to the output as-is. -If no explicit is given it will default to: +If no explicit ```` is given it will default to: :: %Y-%m-%dT%H:%M:%S for local time. %Y-%m-%dT%H:%M:%SZ for UTC. -MAKE_C_IDENTIFIER will write a string which can be used as an +``MAKE_C_IDENTIFIER`` will write a string which can be used as an identifier in C. ``GENEX_STRIP`` will strip any :manual:`generator expressions ` from the ``input string`` and store the result in the ``output variable``. -UUID creates a univerally unique identifier (aka GUID) as per RFC4122 -based on the hash of the combined values of -(which itself has to be a valid UUID) and . +``UUID`` creates a univerally unique identifier (aka GUID) as per RFC4122 +based on the hash of the combined values of ```` +(which itself has to be a valid UUID) and ````. The hash algorithm can be either ``MD5`` (Version 3 UUID) or ``SHA1`` (Version 5 UUID). A UUID has the format ``xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`` diff --git a/Help/command/subdirs.rst b/Help/command/subdirs.rst index dee49f8..43b87d4 100644 --- a/Help/command/subdirs.rst +++ b/Help/command/subdirs.rst @@ -1,7 +1,7 @@ subdirs ------- -Deprecated. Use the add_subdirectory() command instead. +Deprecated. Use the :command:`add_subdirectory` command instead. Add a list of subdirectories to the build. @@ -10,12 +10,12 @@ Add a list of subdirectories to the build. subdirs(dir1 dir2 ...[EXCLUDE_FROM_ALL exclude_dir1 exclude_dir2 ...] [PREORDER] ) -Add a list of subdirectories to the build. The add_subdirectory -command should be used instead of subdirs although subdirs will still +Add a list of subdirectories to the build. The :command:`add_subdirectory` +command should be used instead of ``subdirs`` although ``subdirs`` will still work. This will cause any CMakeLists.txt files in the sub directories -to be processed by CMake. Any directories after the PREORDER flag are -traversed first by makefile builds, the PREORDER flag has no effect on -IDE projects. Any directories after the EXCLUDE_FROM_ALL marker will +to be processed by CMake. Any directories after the ``PREORDER`` flag are +traversed first by makefile builds, the ``PREORDER`` flag has no effect on +IDE projects. Any directories after the ``EXCLUDE_FROM_ALL`` marker will not be included in the top level makefile or project file. This is useful for having CMake create makefiles or projects for a set of examples in a project. You would want CMake to generate makefiles or diff --git a/Help/command/unset.rst b/Help/command/unset.rst index d8f0dcd..a1fc95c 100644 --- a/Help/command/unset.rst +++ b/Help/command/unset.rst @@ -8,14 +8,14 @@ Unset a variable, cache variable, or environment variable. unset( [CACHE | PARENT_SCOPE]) Removes the specified variable causing it to become undefined. If -CACHE is present then the variable is removed from the cache instead +``CACHE`` is present then the variable is removed from the cache instead of the current scope. -If PARENT_SCOPE is present then the variable is removed from the scope -above the current scope. See the same option in the set() command for -further details. +If ``PARENT_SCOPE`` is present then the variable is removed from the scope +above the current scope. See the same option in the :command:`set` command +for further details. - can be an environment variable such as: +```` can be an environment variable such as: :: diff --git a/Help/command/utility_source.rst b/Help/command/utility_source.rst index 5122e52..ee34492 100644 --- a/Help/command/utility_source.rst +++ b/Help/command/utility_source.rst @@ -12,11 +12,11 @@ Specify the source tree of a third-party utility. When a third-party utility's source is included in the distribution, this command specifies its location and name. The cache entry will -not be set unless the path_to_source and all listed files exist. It +not be set unless the ``path_to_source`` and all listed files exist. It is assumed that the source tree of the utility will have been built before it is needed. -When cross compiling CMake will print a warning if a utility_source() +When cross compiling CMake will print a warning if a ``utility_source()`` command is executed, because in many cases it is used to build an executable which is executed later on. This doesn't work when cross compiling, since the executable can run only on their target platform. diff --git a/Help/command/variable_requires.rst b/Help/command/variable_requires.rst index 831dd00..9cf9f3f 100644 --- a/Help/command/variable_requires.rst +++ b/Help/command/variable_requires.rst @@ -3,7 +3,7 @@ variable_requires Disallowed. See CMake Policy :policy:`CMP0035`. -Use the if() command instead. +Use the :command:`if` command instead. Assert satisfaction of an option's required variables. @@ -13,10 +13,10 @@ Assert satisfaction of an option's required variables. REQUIRED_VARIABLE1 REQUIRED_VARIABLE2 ...) -The first argument (TEST_VARIABLE) is the name of the variable to be +The first argument (``TEST_VARIABLE``) is the name of the variable to be tested, if that variable is false nothing else is done. If -TEST_VARIABLE is true, then the next argument (RESULT_VARIABLE) is a -variable that is set to true if all the required variables are set. +``TEST_VARIABLE`` is true, then the next argument (``RESULT_VARIABLE``) +is a variable that is set to true if all the required variables are set. The rest of the arguments are variables that must be true or not set to NOTFOUND to avoid an error. If any are not true, an error is reported. diff --git a/Help/command/while.rst b/Help/command/while.rst index 72c055d..7509da3 100644 --- a/Help/command/while.rst +++ b/Help/command/while.rst @@ -11,7 +11,7 @@ Evaluate a group of commands while a condition is true ... endwhile(condition) -All commands between while and the matching endwhile are recorded -without being invoked. Once the endwhile is evaluated, the recorded -list of commands is invoked as long as the condition is true. The -condition is evaluated using the same logic as the if command. +All commands between while and the matching :command:`endwhile` are recorded +without being invoked. Once the :command:`endwhile` is evaluated, the +recorded list of commands is invoked as long as the condition is true. The +condition is evaluated using the same logic as the :command:`if` command. diff --git a/Help/command/write_file.rst b/Help/command/write_file.rst index 015514b..40e7557 100644 --- a/Help/command/write_file.rst +++ b/Help/command/write_file.rst @@ -1,20 +1,20 @@ write_file ---------- -Deprecated. Use the file(WRITE ) command instead. +Deprecated. Use the :command:`file(WRITE)` command instead. :: write_file(filename "message to write"... [APPEND]) The first argument is the file name, the rest of the arguments are -messages to write. If the argument APPEND is specified, then the +messages to write. If the argument ``APPEND`` is specified, then the message will be appended. -NOTE 1: file(WRITE ... and file(APPEND ... do exactly the same as -this one but add some more functionality. +NOTE 1: :command:`file(WRITE)` and :command:`file(APPEND)` do exactly +the same as this one but add some more functionality. -NOTE 2: When using write_file the produced file cannot be used as an +NOTE 2: When using ``write_file`` the produced file cannot be used as an input to CMake (CONFIGURE_FILE, source file ...) because it will lead -to an infinite loop. Use configure_file if you want to generate input -files to CMake. +to an infinite loop. Use :command:`configure_file` if you want to +generate input files to CMake. ----------------------------------------------------------------------- Summary of changes: Help/command/add_subdirectory.rst | 14 +-- Help/command/aux_source_directory.rst | 2 +- Help/command/build_name.rst | 5 +- Help/command/cmake_host_system_information.rst | 6 +- Help/command/cmake_minimum_required.rst | 2 +- Help/command/create_test_sourcelist.rst | 18 +-- Help/command/ctest_run_script.rst | 6 +- Help/command/ctest_start.rst | 2 +- Help/command/define_property.rst | 28 ++--- Help/command/else.rst | 2 +- Help/command/elseif.rst | 2 +- Help/command/enable_language.rst | 2 +- Help/command/enable_testing.rst | 8 +- Help/command/endforeach.rst | 4 +- Help/command/endfunction.rst | 2 +- Help/command/endif.rst | 2 +- Help/command/endmacro.rst | 2 +- Help/command/endwhile.rst | 2 +- Help/command/exec_program.rst | 8 +- Help/command/execute_process.rst | 14 +-- Help/command/export.rst | 18 +-- Help/command/export_library_dependencies.rst | 12 +- Help/command/fltk_wrap_ui.rst | 2 +- Help/command/foreach.rst | 6 +- Help/command/get_cmake_property.rst | 8 +- Help/command/get_directory_property.rst | 6 +- Help/command/get_filename_component.rst | 12 +- Help/command/get_source_file_property.rst | 10 +- Help/command/get_target_property.rst | 6 +- Help/command/get_test_property.rst | 8 +- Help/command/include.rst | 18 +-- Help/command/include_external_msproject.rst | 6 +- Help/command/include_regular_expression.rst | 4 +- Help/command/install_files.rst | 18 +-- Help/command/install_programs.rst | 23 ++-- Help/command/install_targets.rst | 12 +- Help/command/link_directories.rst | 8 +- Help/command/list.rst | 48 ++++---- Help/command/load_cache.rst | 4 +- Help/command/load_command.rst | 6 +- Help/command/make_directory.rst | 2 +- Help/command/mark_as_advanced.rst | 8 +- Help/command/math.rst | 2 +- Help/command/message.rst | 2 +- Help/command/option.rst | 6 +- Help/command/qt_wrap_cpp.rst | 2 +- Help/command/qt_wrap_ui.rst | 6 +- Help/command/remove.rst | 8 +- Help/command/remove_definitions.rst | 6 +- Help/command/return.rst | 14 +-- Help/command/separate_arguments.rst | 8 +- Help/command/set_target_properties.rst | 145 ++++++++++++------------ Help/command/string.rst | 66 +++++------ Help/command/subdirs.rst | 12 +- Help/command/unset.rst | 10 +- Help/command/utility_source.rst | 4 +- Help/command/variable_requires.rst | 8 +- Help/command/while.rst | 8 +- Help/command/write_file.rst | 14 +-- 59 files changed, 352 insertions(+), 345 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 8 16:37:11 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 8 Jun 2015 16:37:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-267-g59e6bc2 Message-ID: <20150608203711.D548EB04EC@public.kitware.com> 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 59e6bc2cb25956eabefc11bb1a50952a4078dc71 (commit) via 1594edba9ead291eaf3a9b4e63ba41edc43d4f99 (commit) from f286bc11e75e18b11c3625e85bae4fc6f61c5ef0 (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=59e6bc2cb25956eabefc11bb1a50952a4078dc71 commit 59e6bc2cb25956eabefc11bb1a50952a4078dc71 Merge: f286bc1 1594edb Author: Brad King AuthorDate: Mon Jun 8 16:37:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:37:11 2015 -0400 Merge topic 'binary-release-osx-qt-4.8-update' into next 1594edba Utilities/Release: Update to more recent Qt 4.8 on OS X http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1594edba9ead291eaf3a9b4e63ba41edc43d4f99 commit 1594edba9ead291eaf3a9b4e63ba41edc43d4f99 Author: Brad King AuthorDate: Mon Jun 8 11:28:35 2015 -0400 Commit: Brad King CommitDate: Mon Jun 8 16:36:06 2015 -0400 Utilities/Release: Update to more recent Qt 4.8 on OS X Update to a version newer than 4.8.0 to get the fix for this issue: https://bugreports.qt.io/browse/QTBUG-23704 https://codereview.qt-project.org/13576 http://code.qt.io/cgit/qt/qt.git/commit/?id=e88dbaa7fc We hit it in the cmake-gui command-line install help dialog. diff --git a/Utilities/Release/dashmacmini5_release.cmake b/Utilities/Release/dashmacmini5_release.cmake index bc95982..b407554 100644 --- a/Utilities/Release/dashmacmini5_release.cmake +++ b/Utilities/Release/dashmacmini5_release.cmake @@ -20,7 +20,7 @@ CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CPACK_SYSTEM_NAME:STRING=Darwin-x86_64 BUILD_QtDialog:BOOL=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE -QT_QMAKE_EXECUTABLE:FILEPATH=/Users/kitware/Support/qt-4.8.0/install/bin/qmake +QT_QMAKE_EXECUTABLE:FILEPATH=/Users/kitware/Support/qt-4.8.6/install/bin/qmake ") get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) include(${path}/release_cmake.cmake) ----------------------------------------------------------------------- Summary of changes: Utilities/Release/dashmacmini5_release.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 16:53:01 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 16:53:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-269-g468f4c8 Message-ID: <20150608205301.55E13AFDDE@public.kitware.com> 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 468f4c8e856221bc34eb5b21936d9ae4f8db74f8 (commit) via 2f76a6b7b06467fd1080c7b80657f1f9f30e6c23 (commit) from 59e6bc2cb25956eabefc11bb1a50952a4078dc71 (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=468f4c8e856221bc34eb5b21936d9ae4f8db74f8 commit 468f4c8e856221bc34eb5b21936d9ae4f8db74f8 Merge: 59e6bc2 2f76a6b Author: Stephen Kelly AuthorDate: Mon Jun 8 16:53:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:53:00 2015 -0400 Merge topic 'deprecate-ancient-Policies' into next 2f76a6b7 fixup! Help: Document deprecation of CMP0011 in the release notes. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2f76a6b7b06467fd1080c7b80657f1f9f30e6c23 commit 2f76a6b7b06467fd1080c7b80657f1f9f30e6c23 Author: Stephen Kelly AuthorDate: Mon Jun 8 22:49:58 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:49:58 2015 +0200 fixup! Help: Document deprecation of CMP0011 in the release notes. diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index d2457dd..a6158d2 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -286,8 +286,10 @@ Other Changes * :policy:`CMP0010` * :policy:`CMP0011` - are now deprecated. In a future release of CMake, it will not be possible - to set them to ``OLD``. See also :manual:`cmake-policies(7)` + are now deprecated. In the next release of CMake, they will be required + to be set to ``NEW`` by either the :command:`cmake_policy` command or the + :command:`cmake_minimum_required` command. See + also :manual:`cmake-policies(7)` * The :generator:`Ninja` generator now requires that calls to the :command:`add_custom_command` and :command:`add_custom_target` ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 16:54:33 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 16:54:33 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-271-g484c49d Message-ID: <20150608205433.F228FB00B0@public.kitware.com> 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 484c49d69550d895ac90570f594bab6ad611050d (commit) via 975108b7b25b3628868e438384ca7cdbd5c6888f (commit) from 468f4c8e856221bc34eb5b21936d9ae4f8db74f8 (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=484c49d69550d895ac90570f594bab6ad611050d commit 484c49d69550d895ac90570f594bab6ad611050d Merge: 468f4c8 975108b Author: Stephen Kelly AuthorDate: Mon Jun 8 16:54:33 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:54:33 2015 -0400 Merge topic 'deprecate-ancient-Policies' into next 975108b7 Revert "Help: Document deprecation of CMP0011 in the release notes." http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=975108b7b25b3628868e438384ca7cdbd5c6888f commit 975108b7b25b3628868e438384ca7cdbd5c6888f Author: Stephen Kelly AuthorDate: Mon Jun 8 22:54:04 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:54:19 2015 +0200 Revert "Help: Document deprecation of CMP0011 in the release notes." diff --git a/Help/release/3.3.rst b/Help/release/3.3.rst index a6158d2..15127cc 100644 --- a/Help/release/3.3.rst +++ b/Help/release/3.3.rst @@ -271,26 +271,6 @@ Deprecated and Removed Features Other Changes ============= -* Policies - - * :policy:`CMP0000` - * :policy:`CMP0001` - * :policy:`CMP0002` - * :policy:`CMP0003` - * :policy:`CMP0004` - * :policy:`CMP0005` - * :policy:`CMP0006` - * :policy:`CMP0007` - * :policy:`CMP0008` - * :policy:`CMP0009` - * :policy:`CMP0010` - * :policy:`CMP0011` - - are now deprecated. In the next release of CMake, they will be required - to be set to ``NEW`` by either the :command:`cmake_policy` command or the - :command:`cmake_minimum_required` command. See - also :manual:`cmake-policies(7)` - * The :generator:`Ninja` generator now requires that calls to the :command:`add_custom_command` and :command:`add_custom_target` commands use the ``BYPRODUCTS`` option to explicitly specify any ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 20 -------------------- 1 file changed, 20 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 16:55:47 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 16:55:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-289-gc057802 Message-ID: <20150608205547.B8223B01BB@public.kitware.com> 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 c057802e482031a7a05e86e8fc0931c1ebd76ddb (commit) via 2cb5708a212e532963d70795d234db593ca5a892 (commit) via aa8cd1ededcf9770759f7d9b5cae7f2c58cd3908 (commit) via 0402b578f22fc6a8c982e2b0824dae25c3d9bc3b (commit) via b5a805f2f36aaeb183ec7a2e9f7b7736381a06ff (commit) via 010092def04d5cf9cb37d47a4b1d0e5901a23c7f (commit) via 74ed9a8c5943e043ec3b24d9f55d900b26b61205 (commit) via 812496a6a94eb46290b63a69a831658165893a06 (commit) via 6abd2a91bd952aab90b8954d44284ee670916afc (commit) via e06e2c16a14b2095fb3f4aed5cacfbe12bad1657 (commit) via 0f7740f1342241af4a82b67379b12c2e88fe97f7 (commit) via 2045137c5a2c98fe92bd8f67c50c55397c176854 (commit) via 32857d96bf17ba9943c26b3ae42eb744f01efa4b (commit) via f5ef691b27eff45bd77b5f09e86a0bc9f69a1b4a (commit) via eaeccc5fc9bea3227c3bf1d6a4da915fd1eea627 (commit) via 6e8c521268f4aa496e9aec9130a1f4d9a4654ec4 (commit) via dbe3fc87bd9389ea028b9f024f5d5d15ed81de57 (commit) via 84c26be931f7d24d51c478e52753c3c2204f7389 (commit) from 484c49d69550d895ac90570f594bab6ad611050d (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=c057802e482031a7a05e86e8fc0931c1ebd76ddb commit c057802e482031a7a05e86e8fc0931c1ebd76ddb Merge: 484c49d 2cb5708 Author: Stephen Kelly AuthorDate: Mon Jun 8 16:55:45 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 16:55:45 2015 -0400 Merge topic 'use-generator-target' into next 2cb5708a cmGlobalGenerator: Map local generators to generator targets. aa8cd1ed cmMakefile: Remove unused method. 0402b578 cmComputeTargetDepends: Change API to use cmGeneratorTarget. b5a805f2 Get the local generator from the GeneratorTarget. 010092de cmMakefileTargetGenerator: Require cmGeneratorTarget. 74ed9a8c cmNinjaGenerator: Require cmGeneratorTarget. 812496a6 cmGeneratorTarget: Require a cmLocalGenerator to construct. 6abd2a91 cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget. e06e2c16 cmGlobalGenerator: Create GeneratorTargets with a local generator. 0f7740f1 GHS: Use a cmGeneratorTarget in generator API. 2045137c cmGeneratorTarget: Add accessor for cmLocalGenerator. 32857d96 C::B: Get the Makefile from the LocalGenerator, not vice-versa. f5ef691b cmLocalGenerator: Constify GetIncludeDirectories method. eaeccc5f QtAutogen: Get the global generator from the Makefile. 6e8c5212 cmMakefile: Move IsRoot API from cmLocalGenerator. dbe3fc87 cmMakefile: Use member directly instead of through method. ... http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2cb5708a212e532963d70795d234db593ca5a892 commit 2cb5708a212e532963d70795d234db593ca5a892 Author: Stephen Kelly AuthorDate: Sat Jun 6 15:24:24 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:32:34 2015 +0200 cmGlobalGenerator: Map local generators to generator targets. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 23f676a..83cf810 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2036,9 +2036,9 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() clg = clg->GetParent()) { // This local generator includes the target. - std::set& targetSet = + std::set& targetSet = this->LocalGeneratorToTargetMap[clg]; - targetSet.insert(&target); + targetSet.insert(gt); // Add dependencies of the included target. An excluded // target may still be included if it is a dependency of a @@ -2047,8 +2047,7 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() for(TargetDependSet::const_iterator ti = tgtdeps.begin(); ti != tgtdeps.end(); ++ti) { - cmGeneratorTarget const* ttt = *ti; - targetSet.insert(ttt->Target); + targetSet.insert(*ti); } } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index bb5af5d..3d5c8aa 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -406,7 +406,7 @@ protected: cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; - std::map > + std::map > LocalGeneratorToTargetMap; // Set of named installation components requested by the project. diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index acc72af..980b6cd 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -830,7 +830,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalGenerator::FULL, cmLocalGenerator::SHELL); // - std::set emitted; + std::set emitted; progCmd << " " << this->CountProgressMarksInTarget(gtarget, emitted); commands.push_back(progCmd.str()); @@ -909,10 +909,10 @@ cmGlobalUnixMakefileGenerator3 size_t cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted) + std::set& emitted) { size_t count = 0; - if(emitted.insert(target->Target).second) + if(emitted.insert(target).second) { count = this->ProgressMap[target->Target].Marks.size(); TargetDependSet const& depends = this->GetTargetDirectDepends(target); @@ -935,14 +935,13 @@ cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg) { size_t count = 0; - std::set emitted; - std::set const& targets + std::set emitted; + std::set const& targets = this->LocalGeneratorToTargetMap[lg]; - for(std::set::const_iterator t = targets.begin(); + for(std::set::const_iterator t = targets.begin(); t != targets.end(); ++t) { - cmGeneratorTarget* gt = this->GetGeneratorTarget(*t); - count += this->CountProgressMarksInTarget(gt, emitted); + count += this->CountProgressMarksInTarget(*t, emitted); } return count; } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 8805011..14adf2e 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -199,7 +199,7 @@ protected: ProgressMapType ProgressMap; size_t CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted); + std::set& emitted); size_t CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg); cmGeneratedFileStream *CommandDatabase; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aa8cd1ededcf9770759f7d9b5cae7f2c58cd3908 commit aa8cd1ededcf9770759f7d9b5cae7f2c58cd3908 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:27:52 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:32:34 2015 +0200 cmMakefile: Remove unused method. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index aef6c9e..c031ee8 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -134,10 +134,6 @@ public: bool GetIsSourceFileTryCompile() const; - ///! Get the current makefile generator. - cmLocalGenerator* GetLocalGenerator() const - { return this->LocalGenerator;} - /** * Help enforce global target name uniqueness. */ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0402b578f22fc6a8c982e2b0824dae25c3d9bc3b commit 0402b578f22fc6a8c982e2b0824dae25c3d9bc3b Author: Stephen Kelly AuthorDate: Sat Jun 6 13:08:17 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:32:34 2015 +0200 cmComputeTargetDepends: Change API to use cmGeneratorTarget. diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 87b47b4..c4a03a0 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -147,12 +147,12 @@ bool cmComputeTargetDepends::Compute() //---------------------------------------------------------------------------- void -cmComputeTargetDepends::GetTargetDirectDepends(cmTarget const* t, +cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t, cmTargetDependSet& deps) { // Lookup the index for this target. All targets should be known by // this point. - std::map::const_iterator tii + std::map::const_iterator tii = this->TargetIndex.find(t); assert(tii != this->TargetIndex.end()); int i = tii->second; @@ -161,7 +161,7 @@ cmComputeTargetDepends::GetTargetDirectDepends(cmTarget const* t, EdgeList const& nl = this->FinalGraph[i]; for(EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { - cmTarget const* dep = this->Targets[*ni]; + cmGeneratorTarget const* dep = this->Targets[*ni]; cmTargetDependSet::iterator di = deps.insert(dep).first; di->SetType(ni->IsStrong()); } @@ -180,9 +180,11 @@ void cmComputeTargetDepends::CollectTargets() ti != targets.end(); ++ti) { cmTarget const* target = &ti->second; + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(target); int index = static_cast(this->Targets.size()); - this->TargetIndex[target] = index; - this->Targets.push_back(target); + this->TargetIndex[gt] = index; + this->Targets.push_back(gt); } } } @@ -204,7 +206,7 @@ void cmComputeTargetDepends::CollectDepends() void cmComputeTargetDepends::CollectTargetDepends(int depender_index) { // Get the depender. - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; if (depender->GetType() == cmTarget::INTERFACE_LIBRARY) { return; @@ -216,10 +218,9 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) // deal with config-specific dependencies. { std::set emitted; - cmGeneratorTarget* gt = this->GlobalGenerator->GetGeneratorTarget(depender); std::vector configs; - depender->GetMakefile()->GetConfigurations(configs); + depender->Makefile->GetConfigurations(configs); if (configs.empty()) { configs.push_back(""); @@ -228,7 +229,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) it != configs.end(); ++it) { std::vector objectFiles; - gt->GetExternalObjects(objectFiles, *it); + depender->GetExternalObjects(objectFiles, *it); for(std::vector::const_iterator oi = objectFiles.begin(); oi != objectFiles.end(); ++oi) { @@ -244,15 +245,15 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) ->IssueMessage(cmake::FATAL_ERROR, "Only executables and non-OBJECT libraries may " "reference target objects.", - depender->GetBacktrace()); + depender->Target->GetBacktrace()); return; } - const_cast(depender)->AddUtility(objLib); + const_cast(depender)->Target->AddUtility(objLib); } } cmTarget::LinkImplementation const* impl = - depender->GetLinkImplementation(*it); + depender->Target->GetLinkImplementation(*it); // A target should not depend on itself. emitted.insert(depender->GetName()); @@ -272,7 +273,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) // Loop over all utility dependencies. { - std::set const& tutils = depender->GetUtilityItems(); + std::set const& tutils = depender->Target->GetUtilityItems(); std::set emitted; // A target should not depend on itself. emitted.insert(depender->GetName()); @@ -290,13 +291,14 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) //---------------------------------------------------------------------------- void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, - cmTarget const* dependee, - const std::string& config, - std::set &emitted) + const cmGeneratorTarget* dependee, + const std::string& config, + std::set &emitted) { - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; if(cmTarget::LinkInterface const* iface = - dependee->GetLinkInterface(config, depender)) + dependee->Target->GetLinkInterface(config, + depender->Target)) { for(std::vector::const_iterator lib = iface->Libraries.begin(); @@ -317,7 +319,7 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set &emitted) { - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; cmTarget const* dependee = dependee_name.Target; // Skip targets that will not really be linked. This is probably a // name conflict between an external library and an executable @@ -331,16 +333,17 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, if(dependee) { - this->AddInterfaceDepends(depender_index, dependee, "", emitted); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(dependee); + this->AddInterfaceDepends(depender_index, gt, "", emitted); std::vector configs; - depender->GetMakefile()->GetConfigurations(configs); + depender->Makefile->GetConfigurations(configs); for (std::vector::const_iterator it = configs.begin(); it != configs.end(); ++it) { // A target should not depend on itself. emitted.insert(depender->GetName()); - this->AddInterfaceDepends(depender_index, dependee, - *it, emitted); + this->AddInterfaceDepends(depender_index, gt, *it, emitted); } } } @@ -351,7 +354,7 @@ void cmComputeTargetDepends::AddTargetDepend( bool linking) { // Get the depender. - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; // Check the target's makefile first. cmTarget const* dependee = dependee_name.Target; @@ -362,7 +365,7 @@ void cmComputeTargetDepends::AddTargetDepend( cmake::MessageType messageType = cmake::AUTHOR_WARNING; bool issueMessage = false; std::ostringstream e; - switch(depender->GetPolicyStatusCMP0046()) + switch(depender->Target->GetPolicyStatusCMP0046()) { case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0046) << "\n"; @@ -383,7 +386,7 @@ void cmComputeTargetDepends::AddTargetDepend( << "\" of target \"" << depender->GetName() << "\" does not exist."; cmListFileBacktrace const* backtrace = - depender->GetUtilityBacktrace(dependee_name); + depender->Target->GetUtilityBacktrace(dependee_name); if(backtrace) { cm->IssueMessage(messageType, e.str(), *backtrace); @@ -408,27 +411,31 @@ void cmComputeTargetDepends::AddTargetDepend( if(dependee) { - this->AddTargetDepend(depender_index, dependee, linking); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(dependee); + this->AddTargetDepend(depender_index, gt, linking); } } //---------------------------------------------------------------------------- void cmComputeTargetDepends::AddTargetDepend(int depender_index, - cmTarget const* dependee, + const cmGeneratorTarget* dependee, bool linking) { - if(dependee->IsImported() || + if(dependee->Target->IsImported() || dependee->GetType() == cmTarget::INTERFACE_LIBRARY) { // Skip IMPORTED and INTERFACE targets but follow their utility // dependencies. - std::set const& utils = dependee->GetUtilityItems(); + std::set const& utils = dependee->Target->GetUtilityItems(); for(std::set::const_iterator i = utils.begin(); i != utils.end(); ++i) { if(cmTarget const* transitive_dependee = i->Target) { - this->AddTargetDepend(depender_index, transitive_dependee, false); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(transitive_dependee); + this->AddTargetDepend(depender_index, gt, false); } } } @@ -436,7 +443,7 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, { // Lookup the index for this target. All targets should be known by // this point. - std::map::const_iterator tii = + std::map::const_iterator tii = this->TargetIndex.find(dependee); assert(tii != this->TargetIndex.end()); int dependee_index = tii->second; @@ -457,13 +464,13 @@ cmComputeTargetDepends::DisplayGraph(Graph const& graph, for(int depender_index = 0; depender_index < n; ++depender_index) { EdgeList const& nl = graph[depender_index]; - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; fprintf(stderr, "target %d is [%s]\n", depender_index, depender->GetName().c_str()); for(EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { int dependee_index = *ni; - cmTarget const* dependee = this->Targets[dependee_index]; + cmGeneratorTarget const* dependee = this->Targets[dependee_index]; fprintf(stderr, " depends on target %d [%s] (%s)\n", dependee_index, dependee->GetName().c_str(), ni->IsStrong()? "strong" : "weak"); } @@ -550,11 +557,11 @@ cmComputeTargetDepends { // Get the depender. int i = *ci; - cmTarget const* depender = this->Targets[i]; + cmGeneratorTarget const* depender = this->Targets[i]; // Describe the depender. e << " \"" << depender->GetName() << "\" of type " - << cmTarget::GetTargetTypeName(depender->GetType()) << "\n"; + << cmTarget::GetTargetTypeName(depender->Target->GetType()) << "\n"; // List its dependencies that are inside the component. EdgeList const& nl = this->InitialGraph[i]; @@ -563,7 +570,7 @@ cmComputeTargetDepends int j = *ni; if(cmap[j] == c) { - cmTarget const* dependee = this->Targets[j]; + cmGeneratorTarget const* dependee = this->Targets[j]; e << " depends on \"" << dependee->GetName() << "\"" << " (" << (ni->IsStrong()? "strong" : "weak") << ")\n"; } diff --git a/Source/cmComputeTargetDepends.h b/Source/cmComputeTargetDepends.h index 902f342..6100d97 100644 --- a/Source/cmComputeTargetDepends.h +++ b/Source/cmComputeTargetDepends.h @@ -21,7 +21,7 @@ class cmComputeComponentGraph; class cmGlobalGenerator; class cmLinkItem; -class cmTarget; +class cmGeneratorTarget; class cmTargetDependSet; /** \class cmComputeTargetDepends @@ -39,9 +39,10 @@ public: bool Compute(); - std::vector const& + std::vector const& GetTargets() const { return this->Targets; } - void GetTargetDirectDepends(cmTarget const* t, cmTargetDependSet& deps); + void GetTargetDirectDepends(cmGeneratorTarget const* t, + cmTargetDependSet& deps); private: void CollectTargets(); void CollectDepends(); @@ -49,13 +50,14 @@ private: void AddTargetDepend(int depender_index, cmLinkItem const& dependee_name, bool linking); - void AddTargetDepend(int depender_index, cmTarget const* dependee, + void AddTargetDepend(int depender_index, cmGeneratorTarget const* dependee, bool linking); bool ComputeFinalDepends(cmComputeComponentGraph const& ccg); void AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set &emitted); - void AddInterfaceDepends(int depender_index, cmTarget const* dependee, + void AddInterfaceDepends(int depender_index, + cmGeneratorTarget const* dependee, const std::string& config, std::set &emitted); cmGlobalGenerator* GlobalGenerator; @@ -63,8 +65,8 @@ private: bool NoCycles; // Collect all targets. - std::vector Targets; - std::map TargetIndex; + std::vector Targets; + std::map TargetIndex; // Represent the target dependency graph. The entry at each // top-level index corresponds to a depender whose dependencies are diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 5d22cd7..23f676a 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1345,9 +1345,9 @@ bool cmGlobalGenerator::ComputeTargetDepends() { return false; } - std::vector const& targets = ctd.GetTargets(); - for(std::vector::const_iterator ti = targets.begin(); - ti != targets.end(); ++ti) + std::vector const& targets = ctd.GetTargets(); + for(std::vector::const_iterator ti + = targets.begin(); ti != targets.end(); ++ti) { ctd.GetTargetDirectDepends(*ti, this->TargetDependencies[*ti]); } @@ -2043,12 +2043,12 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() // Add dependencies of the included target. An excluded // target may still be included if it is a dependency of a // non-excluded target. - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target); + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator ti = tgtdeps.begin(); ti != tgtdeps.end(); ++ti) { - cmTarget const* ttt = *ti; - targetSet.insert(ttt); + cmGeneratorTarget const* ttt = *ti; + targetSet.insert(ttt->Target); } } } @@ -2510,9 +2510,9 @@ void cmGlobalGenerator::AppendDirectoryForConfig(const std::string&, //---------------------------------------------------------------------------- cmGlobalGenerator::TargetDependSet const& -cmGlobalGenerator::GetTargetDirectDepends(cmTarget const& target) +cmGlobalGenerator::GetTargetDirectDepends(cmGeneratorTarget const* target) { - return this->TargetDependencies[&target]; + return this->TargetDependencies[target]; } void cmGlobalGenerator::AddTarget(cmTarget* t) @@ -2612,9 +2612,10 @@ void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets, continue; } // put the target in the set of original targets - originalTargets.insert(target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + originalTargets.insert(gt); // Get the set of targets that depend on target - this->AddTargetDepends(target, projectTargets); + this->AddTargetDepends(gt, projectTargets); } } } @@ -2627,7 +2628,7 @@ bool cmGlobalGenerator::IsRootOnlyTarget(cmTarget* target) const } //---------------------------------------------------------------------------- -void cmGlobalGenerator::AddTargetDepends(cmTarget const* target, +void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target, TargetDependSet& projectTargets) { // add the target itself @@ -2635,11 +2636,10 @@ void cmGlobalGenerator::AddTargetDepends(cmTarget const* target, { // This is the first time we have encountered the target. // Recursively follow its dependencies. - TargetDependSet const& ts = this->GetTargetDirectDepends(*target); + TargetDependSet const& ts = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator i = ts.begin(); i != ts.end(); ++i) { - cmTarget const* dtarget = *i; - this->AddTargetDepends(dtarget, projectTargets); + this->AddTargetDepends(*i, projectTargets); } } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 8c092c0..bb5af5d 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -292,7 +292,8 @@ public: // what targets does the specified target depend on directly // via a target_link_libraries or add_dependencies - TargetDependSet const& GetTargetDirectDepends(cmTarget const& target); + TargetDependSet const& GetTargetDirectDepends( + const cmGeneratorTarget* target); /** Get per-target generator information. */ cmGeneratorTarget* GetGeneratorTarget(cmTarget const*) const; @@ -368,7 +369,7 @@ protected: TargetDependSet& originalTargets, cmLocalGenerator* root, GeneratorVector const&); bool IsRootOnlyTarget(cmTarget* target) const; - void AddTargetDepends(cmTarget const* target, + void AddTargetDepends(const cmGeneratorTarget* target, TargetDependSet& projectTargets); void SetLanguageEnabledFlag(const std::string& l, cmMakefile* mf); void SetLanguageEnabledMaps(const std::string& l, cmMakefile* mf); @@ -477,7 +478,7 @@ private: std::vector FilesReplacedDuringGenerate; // Store computed inter-target dependencies. - typedef std::map TargetDependMap; + typedef std::map TargetDependMap; TargetDependMap TargetDependencies; // Per-target generator information. diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 103d75a..722294b 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -949,8 +949,8 @@ cmGlobalNinjaGenerator std::set const& utils = target->GetUtilities(); std::copy(utils.begin(), utils.end(), std::back_inserter(outputs)); } else { - cmTargetDependSet const& targetDeps = - this->GetTargetDirectDepends(*target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(gt); for (cmTargetDependSet::const_iterator i = targetDeps.begin(); i != targetDeps.end(); ++i) { @@ -958,7 +958,7 @@ cmGlobalNinjaGenerator { continue; } - this->AppendTargetOutputs(*i, outputs); + this->AppendTargetOutputs((*i)->Target, outputs); } } } diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 6c34436..acc72af 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -804,7 +804,7 @@ cmGlobalUnixMakefileGenerator3 lg->AppendEcho(commands, "Built target " + name, cmLocalUnixMakefileGenerator3::EchoNormal, &progress); - this->AppendGlobalTargetDepends(depends,*gtarget->Target); + this->AppendGlobalTargetDepends(depends, gtarget); lg->WriteMakeRule(ruleFileStream, "All Build rule for target.", localName, depends, commands, true); @@ -832,7 +832,7 @@ cmGlobalUnixMakefileGenerator3 // std::set emitted; progCmd << " " - << this->CountProgressMarksInTarget(gtarget->Target, emitted); + << this->CountProgressMarksInTarget(gtarget, emitted); commands.push_back(progCmd.str()); } std::string tmp = cmake::GetCMakeFilesDirectoryPostSlash(); @@ -908,14 +908,14 @@ cmGlobalUnixMakefileGenerator3 //---------------------------------------------------------------------------- size_t cmGlobalUnixMakefileGenerator3 -::CountProgressMarksInTarget(cmTarget const* target, +::CountProgressMarksInTarget(cmGeneratorTarget const* target, std::set& emitted) { size_t count = 0; - if(emitted.insert(target).second) + if(emitted.insert(target->Target).second) { - count = this->ProgressMap[target].Marks.size(); - TargetDependSet const& depends = this->GetTargetDirectDepends(*target); + count = this->ProgressMap[target->Target].Marks.size(); + TargetDependSet const& depends = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { @@ -941,7 +941,8 @@ cmGlobalUnixMakefileGenerator3 for(std::set::const_iterator t = targets.begin(); t != targets.end(); ++t) { - count += this->CountProgressMarksInTarget(*t, emitted); + cmGeneratorTarget* gt = this->GetGeneratorTarget(*t); + count += this->CountProgressMarksInTarget(gt, emitted); } return count; } @@ -987,22 +988,21 @@ cmGlobalUnixMakefileGenerator3::TargetProgress void cmGlobalUnixMakefileGenerator3 ::AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target) + cmGeneratorTarget* target) { TargetDependSet const& depends_set = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator i = depends_set.begin(); i != depends_set.end(); ++i) { // Create the target-level dependency. - cmTarget const* dep = *i; + cmGeneratorTarget const* dep = *i; if (dep->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; } cmLocalUnixMakefileGenerator3* lg3 = - static_cast - (dep->GetMakefile()->GetLocalGenerator()); - std::string tgtName = lg3->GetRelativeTargetDirectory(*dep); + static_cast(dep->GetLocalGenerator()); + std::string tgtName = lg3->GetRelativeTargetDirectory(*(*dep).Target); tgtName += "/all"; depends.push_back(tgtName); } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index a639ff0..8805011 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -153,7 +153,7 @@ protected: cmLocalUnixMakefileGenerator3* lg); void AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target); + cmGeneratorTarget* target); // does this generator need a requires step for any of its targets bool NeedRequiresStep(cmTarget const&); @@ -198,7 +198,7 @@ protected: cmStrictTargetComparison> ProgressMapType; ProgressMapType ProgressMap; - size_t CountProgressMarksInTarget(cmTarget const* target, + size_t CountProgressMarksInTarget(cmGeneratorTarget const* target, std::set& emitted); size_t CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg); diff --git a/Source/cmTargetDepend.h b/Source/cmTargetDepend.h index 1feb072..c5059ee 100644 --- a/Source/cmTargetDepend.h +++ b/Source/cmTargetDepend.h @@ -14,23 +14,24 @@ #include "cmStandardIncludes.h" -class cmTarget; +class cmGeneratorTarget; /** One edge in the global target dependency graph. It may be marked as a 'link' or 'util' edge or both. */ class cmTargetDepend { - cmTarget const* Target; + cmGeneratorTarget const* Target; // The set order depends only on the Target, so we use // mutable members to acheive a map with set syntax. mutable bool Link; mutable bool Util; public: - cmTargetDepend(cmTarget const* t): Target(t), Link(false), Util(false) {} - operator cmTarget const*() const { return this->Target; } - cmTarget const* operator->() const { return this->Target; } - cmTarget const& operator*() const { return *this->Target; } + cmTargetDepend(cmGeneratorTarget const* t) + : Target(t), Link(false), Util(false) {} + operator cmGeneratorTarget const*() const { return this->Target; } + cmGeneratorTarget const* operator->() const { return this->Target; } + cmGeneratorTarget const& operator*() const { return *this->Target; } friend bool operator < (cmTargetDepend const& l, cmTargetDepend const& r) { return l.Target < r.Target; } void SetType(bool strong) const http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b5a805f2f36aaeb183ec7a2e9f7b7736381a06ff commit b5a805f2f36aaeb183ec7a2e9f7b7736381a06ff Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:06 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:32:18 2015 +0200 Get the local generator from the GeneratorTarget. The Makefile should not know the LocalGenerator at all diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7e9ccf3..dd60a1f 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1154,8 +1154,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(linkee); + cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); - cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index a8eef82..3bc0eb7 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(Makefile->GetLocalGenerator()) + , LocalGenerator(target->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 89ad02f..3d6ef57 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -521,10 +521,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() - ->GetGeneratorTarget(target); + cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); + cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9b78df3..12a1e42 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->Makefile->GetLocalGenerator(); + this->GeneratorTarget->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=010092def04d5cf9cb37d47a4b1d0e5901a23c7f commit 010092def04d5cf9cb37d47a4b1d0e5901a23c7f Author: Stephen Kelly AuthorDate: Sat Jun 6 14:57:26 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:59 2015 +0200 cmMakefileTargetGenerator: Require cmGeneratorTarget. diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 37b297e..416063f 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 450f573..660027c 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 923aa7b..7e9ccf3 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,16 +41,15 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target; + this->Target = target->Target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast( - this->Makefile->GetLocalGenerator()); + static_cast(target->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); + this->GeneratorTarget = target; cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 2e1b052..9182236 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmTarget* target); + cmMakefileTargetGenerator(cmGeneratorTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 25d929c..303ca63 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=74ed9a8c5943e043ec3b24d9f55d900b26b61205 commit 74ed9a8c5943e043ec3b24d9f55d900b26b61205 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:02:24 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:59 2015 +0200 cmNinjaGenerator: Require cmGeneratorTarget. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index bbf03ff..2fe53bf 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target->Target) + : cmNinjaTargetGenerator(target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index b2aef68..fcf4a62 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -56,19 +56,18 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target), - Makefile(target->GetMakefile()), + Target(target->Target), + Makefile(target->Makefile), LocalGenerator( - static_cast(Makefile->GetLocalGenerator())), + static_cast(target->GetLocalGenerator())), Objects() { - this->GeneratorTarget = - this->GetGlobalGenerator()->GetGeneratorTarget(target); + this->GeneratorTarget = target; MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 4e7d8b3..fc361b2 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmTarget* target); + cmNinjaTargetGenerator(cmGeneratorTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index 42d6b46..c3bf011 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target->Target) {} + : cmNinjaTargetGenerator(target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=812496a6a94eb46290b63a69a831658165893a06 commit 812496a6a94eb46290b63a69a831658165893a06 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:14:04 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:59 2015 +0200 cmGeneratorTarget: Require a cmLocalGenerator to construct. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 1c25f59..7aeb613 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,11 +220,12 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) + : Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); + this->LocalGenerator = lg; this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 645b792..675ee9f 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,7 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*); + cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); cmLocalGenerator* GetLocalGenerator() const; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 185756b..5d22cd7 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1460,7 +1460,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t); + cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1470,7 +1470,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6abd2a91bd952aab90b8954d44284ee670916afc commit 6abd2a91bd952aab90b8954d44284ee670916afc Author: Stephen Kelly AuthorDate: Sat Jun 6 14:09:35 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:59 2015 +0200 cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fbdccac..185756b 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1955,10 +1955,10 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, } bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, - cmTarget const& target) const + cmGeneratorTarget* target) const { - if(target.GetType() == cmTarget::INTERFACE_LIBRARY - || target.GetPropertyAsBool("EXCLUDE_FROM_ALL")) + if(target->GetType() == cmTarget::INTERFACE_LIBRARY + || target->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL")) { // This target is excluded from its directory. return true; @@ -1967,7 +1967,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, { // This target is included in its directory. Check whether the // directory is excluded. - return this->IsExcluded(root, target.GetMakefile()->GetLocalGenerator()); + return this->IsExcluded(root, target->GetLocalGenerator()); } } @@ -2028,9 +2028,11 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() { cmTarget const& target = t->second; + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + // Consider the directory containing the target and all its // parents until something excludes the target. - for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, target); + for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); clg = clg->GetParent()) { // This local generator includes the target. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index d606cc9..8c092c0 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -390,7 +390,7 @@ protected: void FillProjectMap(); void CheckLocalGenerators(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; - bool IsExcluded(cmLocalGenerator* root, cmTarget const& target) const; + bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; void FillLocalGeneratorToTargetMap(); void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const std::string& name, const char* message, diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index ffd1cdc..0d3177c 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -289,7 +289,7 @@ public: const std::vector& GetLocalGenerators() const { return LocalGenerators; } - bool IsExcluded(cmLocalGenerator* root, cmTarget& target) { + bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) { return cmGlobalGenerator::IsExcluded(root, target); } int GetRuleCmdLength(const std::string& name) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 0f61225..6c34436 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -809,7 +809,7 @@ cmGlobalUnixMakefileGenerator3 localName, depends, commands, true); // add the all/all dependency - if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) + if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) { depends.clear(); depends.push_back(localName); @@ -877,7 +877,7 @@ cmGlobalUnixMakefileGenerator3 "Pre-install relink rule for target.", localName, depends, commands, true); - if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) + if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) { depends.clear(); depends.push_back(localName); diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 4db36fc..aac85f9 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -91,7 +91,7 @@ void cmLocalNinjaGenerator::Generate() // Add the target to "all" if required. if (!this->GetGlobalNinjaGenerator()->IsExcluded( this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0], - *t->second->Target)) + t->second)) this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target); delete tg; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e06e2c16a14b2095fb3f4aed5cacfbe12bad1657 commit e06e2c16a14b2095fb3f4aed5cacfbe12bad1657 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:12:24 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:59 2015 +0200 cmGlobalGenerator: Create GeneratorTargets with a local generator. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bd949bb..fbdccac 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1451,9 +1451,10 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) +void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) { cmGeneratorTargetsType generatorTargets; + cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) @@ -1482,7 +1483,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); + this->CreateGeneratorTargets(this->LocalGenerators[i]); } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f02df90..d606cc9 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -483,7 +483,7 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmMakefile* mf); + void CreateGeneratorTargets(cmLocalGenerator* lg); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index eeb6575..6ff388d 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -482,7 +482,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(mf); + gg->CreateGeneratorTargets(lg.get()); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0f7740f1342241af4a82b67379b12c2e88fe97f7 commit 0f7740f1342241af4a82b67379b12c2e88fe97f7 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:02:59 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:58 2015 +0200 GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 01e2011..f4c9a83 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,11 +21,11 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) - : Target(target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) + : Target(target->Target) , LocalGenerator(static_cast( - target->GetMakefile()->GetLocalGenerator())) - , Makefile(target->GetMakefile()) + target->GetLocalGenerator())) + , Makefile(target->Target->GetMakefile()) , TargetGroup(DetermineIfTargetGroup(target)) , DynamicDownload(false) { diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index 8e81db8..fc9532a 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmTarget *target); + cmGhsMultiTargetGenerator(cmGeneratorTarget* target); virtual ~cmGhsMultiTargetGenerator(); diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 870b9b9..8e498dd 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second->Target); + cmGhsMultiTargetGenerator tg(l->second); tg.Generate(); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2045137c5a2c98fe92bd8f67c50c55397c176854 commit 2045137c5a2c98fe92bd8f67c50c55397c176854 Author: Stephen Kelly AuthorDate: Sat Jun 6 12:59:25 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:58 2015 +0200 cmGeneratorTarget: Add accessor for cmLocalGenerator. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 67d0d54..1c25f59 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -228,6 +228,11 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } +cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const +{ + return this->LocalGenerator; +} + //---------------------------------------------------------------------------- int cmGeneratorTarget::GetType() const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index a8edcb8..645b792 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -26,6 +26,8 @@ class cmGeneratorTarget public: cmGeneratorTarget(cmTarget*); + cmLocalGenerator* GetLocalGenerator() const; + int GetType() const; std::string GetName() const; const char *GetProperty(const std::string& prop) const; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=32857d96bf17ba9943c26b3ae42eb744f01efa4b commit 32857d96bf17ba9943c26b3ae42eb744f01efa4b Author: Stephen Kelly AuthorDate: Sat Jun 6 13:00:51 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:58 2015 +0200 C::B: Get the Makefile from the LocalGenerator, not vice-versa. The Makefile is a configure-time concept, and the LocalGenerator is a generate time concept. The LocalGenerator should not be available from the Makefile. diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e374387..a31e832 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -313,7 +313,7 @@ void cmExtraCodeBlocksGenerator " "<\n"; - this->AppendTarget(fout, "all", 0, make.c_str(), mf, compiler.c_str()); + this->AppendTarget(fout, "all", 0, make.c_str(), lgs[0], compiler.c_str()); // add all executable and library targets and some of the GLOBAL // and UTILITY targets @@ -335,7 +335,7 @@ void cmExtraCodeBlocksGenerator makefile->GetHomeOutputDirectory())==0) { this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } } break; @@ -351,7 +351,7 @@ void cmExtraCodeBlocksGenerator } this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); break; case cmTarget::EXECUTABLE: case cmTarget::STATIC_LIBRARY: @@ -360,11 +360,11 @@ void cmExtraCodeBlocksGenerator case cmTarget::OBJECT_LIBRARY: { this->AppendTarget(fout, ti->first, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; this->AppendTarget(fout, fastTarget, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } break; default: @@ -519,14 +519,16 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( - cmMakefile* mf, cmTarget* target) const + cmLocalGenerator* lg, + cmTarget* target) const { + cmMakefile *mf = lg->GetMakefile(); // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = mf->GetCurrentBinaryDirectory(); filename += "/"; - filename += mf->GetLocalGenerator()->GetTargetDirectory(*target); + filename += lg->GetTargetDirectory(*target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -547,9 +549,10 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler) { + cmMakefile const* makefile = lg->GetMakefile(); std::string makefileName = makefile->GetCurrentBinaryDirectory(); makefileName += "/Makefile"; @@ -583,7 +586,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::string location; if ( target->GetType()==cmTarget::OBJECT_LIBRARY) { - location = this->CreateDummyTargetFile(const_cast(makefile), + location = this->CreateDummyTargetFile(const_cast(lg), target); } else @@ -618,8 +621,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::set uniqIncludeDirs; std::vector includes; - target->GetMakefile()->GetLocalGenerator()-> - GetIncludeDirectories(includes, gtgt, "C", buildType); + lg->GetIncludeDirectories(includes, gtgt, "C", buildType); uniqIncludeDirs.insert(includes.begin(), includes.end()); diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h index 97da1b8..e5ede9a 100644 --- a/Source/cmExtraCodeBlocksGenerator.h +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -48,7 +48,8 @@ private: void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); - std::string CreateDummyTargetFile(cmMakefile* mf, cmTarget* target) const; + std::string CreateDummyTargetFile(cmLocalGenerator* lg, + cmTarget* target) const; std::string GetCBCompilerId(const cmMakefile* mf); int GetCBTargetType(cmTarget* target); @@ -58,7 +59,7 @@ private: const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler); }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f5ef691b27eff45bd77b5f09e86a0bc9f69a1b4a commit f5ef691b27eff45bd77b5f09e86a0bc9f69a1b4a Author: Stephen Kelly AuthorDate: Sat Jun 6 12:57:19 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:58 2015 +0200 cmLocalGenerator: Constify GetIncludeDirectories method. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5d0394f..2587764 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1330,7 +1330,7 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, const std::string& lang, const std::string& config, bool stripImplicitInclDirs - ) + ) const { // Need to decide whether to automatically include the source and // binary directories at the beginning of the include path. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index de9a177..9b1dfaf 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -185,7 +185,7 @@ public: cmGeneratorTarget* target, const std::string& lang = "C", const std::string& config = "", - bool stripImplicitInclDirs = true); + bool stripImplicitInclDirs = true) const; void AddCompileOptions(std::string& flags, cmTarget* target, const std::string& lang, const std::string& config); void AddCompileDefinitions(std::set& defines, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eaeccc5fc9bea3227c3bf1d6a4da915fd1eea627 commit eaeccc5fc9bea3227c3bf1d6a4da915fd1eea627 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:22 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:58 2015 +0200 QtAutogen: Get the global generator from the Makefile. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index ef32c75..89ad02f 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -368,8 +368,7 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) #if defined(_WIN32) && !defined(__CYGWIN__) bool usePRE_BUILD = false; - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); - cmGlobalGenerator* gg = localGen->GetGlobalGenerator(); + cmGlobalGenerator* gg = makefile->GetGlobalGenerator(); if(gg->GetName().find("Visual Studio") != std::string::npos) { cmGlobalVisualStudioGenerator* vsgg = http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e8c521268f4aa496e9aec9130a1f4d9a4654ec4 commit 6e8c521268f4aa496e9aec9130a1f4d9a4654ec4 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:07:15 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:58 2015 +0200 cmMakefile: Move IsRoot API from cmLocalGenerator. diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 4fe52dd..0f61225 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -529,7 +529,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalUnixMakefileGenerator3* lg) { // Only subdirectories need these rules. - if(lg->IsRootMakefile()) + if(lg->GetMakefile()->IsRootMakefile()) { return; } @@ -1034,7 +1034,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule static_cast(this->LocalGenerators[i]); // for the passed in makefile or if this is the top Makefile wripte out // the targets - if (lg2 == lg || lg->IsRootMakefile()) + if (lg2 == lg || lg->GetMakefile()->IsRootMakefile()) { // for each target Generate the rule files for each target. cmTargets& targets = lg2->GetMakefile()->GetTargets(); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5ed53d0..5d0394f 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -68,11 +68,6 @@ cmLocalGenerator::~cmLocalGenerator() delete this->Makefile; } -bool cmLocalGenerator::IsRootMakefile() const -{ - return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); -} - //---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index efdd487..de9a177 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -39,9 +39,6 @@ public: cmState::Snapshot snapshot); virtual ~cmLocalGenerator(); - /// @return whether we are processing the top CMakeLists.txt file. - bool IsRootMakefile() const; - /** * Generate the makefile for this directory. */ diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 427ae10..4db36fc 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -58,7 +58,7 @@ void cmLocalNinjaGenerator::Generate() #endif // We do that only once for the top CMakeLists.txt file. - if(this->IsRootMakefile()) + if(this->Makefile->IsRootMakefile()) { this->WriteBuildFileTop(); @@ -298,7 +298,7 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os) << "# Write statements declared in CMakeLists.txt:" << std::endl << "# " << this->Makefile->GetDefinition("CMAKE_CURRENT_LIST_FILE") << std::endl; - if(this->IsRootMakefile()) + if(this->Makefile->IsRootMakefile()) os << "# Which is the root file." << std::endl; cmGlobalNinjaGenerator::WriteDivider(os); os << std::endl; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 6a99edd..bc9f9d6 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1608,6 +1608,11 @@ void cmMakefile::PopMacroScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); } +bool cmMakefile::IsRootMakefile() const +{ + return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); +} + //---------------------------------------------------------------------------- class cmMakefileCurrent { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 6f6ed27..aef6c9e 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -79,6 +79,9 @@ public: */ ~cmMakefile(); + /// @return whether we are processing the top CMakeLists.txt file. + bool IsRootMakefile() const; + bool ReadListFile(const char* listfile); bool ReadDependentFile(const char* listfile, bool noPolicyScope = true); diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 176cb0d..2e17a7d 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -53,7 +53,7 @@ bool cmProjectCommand // CMAKE_PROJECT_NAME will match PROJECT_NAME, and cmake --build // will work. if(!this->Makefile->GetDefinition("CMAKE_PROJECT_NAME") - || (this->Makefile->GetLocalGenerator()->IsRootMakefile())) + || (this->Makefile->IsRootMakefile())) { this->Makefile->AddDefinition("CMAKE_PROJECT_NAME", args[0].c_str()); this->Makefile->AddCacheDefinition http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dbe3fc87bd9389ea028b9f024f5d5d15ed81de57 commit dbe3fc87bd9389ea028b9f024f5d5d15ed81de57 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:39:27 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:32 2015 +0200 cmMakefile: Use member directly instead of through method. This function will not be around much longer anyway. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a8b163a..6a99edd 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -105,7 +105,7 @@ public: ++it; if(it == this->VarStack.rend()) { - cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); + cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=84c26be931f7d24d51c478e52753c3c2204f7389 commit 84c26be931f7d24d51c478e52753c3c2204f7389 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:06:47 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 22:28:32 2015 +0200 cmLocalUnixMakefileGenerator3: Remove unused method. diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index dcb3016..78fe19d 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -147,9 +147,6 @@ public: void AddImplicitDepends(cmTarget const& tgt, const std::string& lang, const char* obj, const char* src); - void AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target); - // write the target rules for the local Makefile into the stream void WriteLocalAllRules(std::ostream& ruleFileStream); ----------------------------------------------------------------------- Summary of changes: Source/cmComputeTargetDepends.cxx | 81 +++++++++++++----------- Source/cmComputeTargetDepends.h | 16 +++-- Source/cmExtraCodeBlocksGenerator.cxx | 24 +++---- Source/cmExtraCodeBlocksGenerator.h | 5 +- Source/cmGeneratorTarget.cxx | 10 ++- Source/cmGeneratorTarget.h | 4 +- Source/cmGhsMultiTargetGenerator.cxx | 8 +-- Source/cmGhsMultiTargetGenerator.h | 2 +- Source/cmGlobalGenerator.cxx | 52 +++++++-------- Source/cmGlobalGenerator.h | 13 ++-- Source/cmGlobalNinjaGenerator.cxx | 6 +- Source/cmGlobalNinjaGenerator.h | 2 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 37 ++++++----- Source/cmGlobalUnixMakefileGenerator3.h | 6 +- Source/cmLocalGenerator.cxx | 7 +- Source/cmLocalGenerator.h | 5 +- Source/cmLocalGhsMultiGenerator.cxx | 2 +- Source/cmLocalNinjaGenerator.cxx | 6 +- Source/cmLocalUnixMakefileGenerator3.h | 3 - Source/cmMakefile.cxx | 7 +- Source/cmMakefile.h | 7 +- Source/cmMakefileExecutableTargetGenerator.cxx | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 13 ++-- Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 11 ++-- Source/cmNinjaTargetGenerator.h | 2 +- Source/cmNinjaUtilityTargetGenerator.cxx | 2 +- Source/cmOSXBundleGenerator.cxx | 2 +- Source/cmProjectCommand.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 9 ++- Source/cmTargetDepend.h | 13 ++-- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Source/cmake.cxx | 2 +- 36 files changed, 193 insertions(+), 178 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 17:17:29 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 17:17:29 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-294-g9e18e80 Message-ID: <20150608211729.3CEFDAD89E@public.kitware.com> 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 9e18e80a4235f5c8ff453057ff58349a1171fbac (commit) via 9477e5fc3796d4e9d4e66a78ebdcdd9855013a2c (commit) via bc61da9da1eefbca0c01d53a0f409d38de5aa418 (commit) via ff4fef0db4e585e543ea270bf099791c65692143 (commit) via 2ef3f2c2b67f47a8b649aa1c9b83cbfe4b81e674 (commit) from c057802e482031a7a05e86e8fc0931c1ebd76ddb (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=9e18e80a4235f5c8ff453057ff58349a1171fbac commit 9e18e80a4235f5c8ff453057ff58349a1171fbac Merge: c057802 9477e5f Author: Stephen Kelly AuthorDate: Mon Jun 8 17:17:28 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 17:17:28 2015 -0400 Merge topic 'cmLinkedTree-definitions' into next 9477e5fc cmMakefile: Decouple the container of cmDefinitions from scoping logic. bc61da9d cmDefinitions: Implement in terms of cmLinkedTree. ff4fef0d cmLinkedTree: Add operator* to the iterator. 2ef3f2c2 cmMakefile: Extract InitializeVarStack method. diff --cc Source/cmMakefile.cxx index cb9611a,afc46ae..615bedc --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@@ -100,12 -129,10 +129,10 @@@ public bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - std::list::reverse_iterator it = this->VarStack.rbegin(); - assert(it != this->VarStack.rend()); - ++it; - if(it == this->VarStack.rend()) + assert(this->VarScopeIter->Vars != this->VarTree.Root()); + if(this->VarScopeIter->Parent == this->VarTree.Root()) { - cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); + cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9477e5fc3796d4e9d4e66a78ebdcdd9855013a2c commit 9477e5fc3796d4e9d4e66a78ebdcdd9855013a2c Author: Stephen Kelly AuthorDate: Sun May 31 11:26:05 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 23:11:40 2015 +0200 cmMakefile: Decouple the container of cmDefinitions from scoping logic. Maintain a Parent tree node for writing to in RaiseScope. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 8fc8e7c..afc46ae 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -45,73 +45,92 @@ class cmMakefile::Internals { public: + struct VarScope + { + cmLinkedTree::iterator Vars; + cmLinkedTree::iterator Parent; + }; + cmLinkedTree VarTree; - cmLinkedTree::iterator VarTreeIter; + cmLinkedTree VarScopes; + cmLinkedTree::iterator VarScopeIter; bool IsSourceFileTryCompile; void PushDefinitions() { - assert(this->VarTreeIter.IsValid()); - this->VarTreeIter = this->VarTree.Extend(this->VarTreeIter); + assert(this->VarScopeIter.IsValid()); + assert(this->VarScopeIter->Vars.IsValid()); + cmLinkedTree::iterator origin = + this->VarScopeIter->Vars; + cmLinkedTree::iterator parentScope = + this->VarTree.Extend(origin); + this->VarScopeIter->Vars = parentScope; + this->VarScopeIter = this->VarScopes.Extend(this->VarScopeIter); + this->VarScopeIter->Parent = parentScope; + this->VarScopeIter->Vars = this->VarTree.Extend(origin); } - void InitializeVarStack() + void InitializeVarScope() { - this->VarTreeIter = this->VarTree.Root(); - this->PushDefinitions(); + assert(!this->VarScopeIter.IsValid()); + this->VarScopeIter = this->VarScopes.Extend(this->VarScopes.Root()); + this->VarScopeIter->Vars = this->VarTree.Extend(this->VarTree.Root()); + this->VarScopeIter->Parent = this->VarTree.Root(); } void InitializeDefinitions(cmMakefile* parent) { - *this->VarTreeIter = - cmDefinitions::MakeClosure(parent->Internal->VarTreeIter, + assert(this->VarScopeIter.IsValid()); + assert(this->VarScopeIter->Vars.IsValid()); + *this->VarScopeIter->Vars = + cmDefinitions::MakeClosure(parent->Internal->VarScopeIter->Vars, parent->Internal->VarTree.Root()); } const char* GetDefinition(std::string const& name) { - assert(this->VarTreeIter != this->VarTree.Root()); + assert(this->VarScopeIter.IsValid()); + assert(this->VarScopeIter->Vars.IsValid()); return cmDefinitions::Get(name, - this->VarTreeIter, this->VarTree.Root()); + this->VarScopeIter->Vars, this->VarTree.Root()); } bool IsInitialized(std::string const& name) { return cmDefinitions::HasKey(name, - this->VarTreeIter, this->VarTree.Root()); + this->VarScopeIter->Vars, this->VarTree.Root()); } void SetDefinition(std::string const& name, std::string const& value) { - this->VarTreeIter->Set(name, value.c_str()); + this->VarScopeIter->Vars->Set(name, value.c_str()); } void RemoveDefinition(std::string const& name) { - this->VarTreeIter->Set(name, 0); + this->VarScopeIter->Vars->Set(name, 0); } std::vector UnusedKeys() const { - return this->VarTreeIter->UnusedKeys(); + return this->VarScopeIter->Vars->UnusedKeys(); } std::vector ClosureKeys() const { - return cmDefinitions::ClosureKeys(this->VarTreeIter, this->VarTree.Root()); + return cmDefinitions::ClosureKeys(this->VarScopeIter->Vars, + this->VarTree.Root()); } void PopDefinitions() { - ++this->VarTreeIter; + ++this->VarScopeIter; } bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - cmLinkedTree::iterator it = this->VarTreeIter; - assert(it != this->VarTree.Root()); - ++it; - if(it == this->VarTree.Root()) + assert(this->VarScopeIter->Vars != this->VarTree.Root()); + if(this->VarScopeIter->Parent == this->VarTree.Root()) { cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) @@ -133,10 +152,10 @@ public: return true; } // First localize the definition in the current scope. - cmDefinitions::Raise(var, this->VarTreeIter, this->VarTree.Root()); + cmDefinitions::Raise(var, this->VarScopeIter->Vars, this->VarTree.Root()); // Now update the definition in the parent scope. - it->Set(var, varDef); + this->VarScopeIter->Parent->Set(var, varDef); return true; } }; @@ -147,7 +166,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) LocalGenerator(localGenerator), StateSnapshot(localGenerator->GetStateSnapshot()) { - this->Internal->InitializeVarStack(); + this->Internal->InitializeVarScope(); this->Internal->IsSourceFileTryCompile = false; // Initialize these first since AddDefaultDefinitions calls AddDefinition http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc61da9da1eefbca0c01d53a0f409d38de5aa418 commit bc61da9da1eefbca0c01d53a0f409d38de5aa418 Author: Stephen Kelly AuthorDate: Sat May 30 17:08:34 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 23:10:09 2015 +0200 cmDefinitions: Implement in terms of cmLinkedTree. Store the definitions in a cmLinkedTree in the cmMakefile. This can be moved to cmState and then the tree will provide snapshotting possibilities. It will also make the Closure copy created at the start of each cmMakefile unnecesarry. diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx index 2dab169..b06fb5c 100644 --- a/Source/cmDefinitions.cxx +++ b/Source/cmDefinitions.cxx @@ -56,9 +56,9 @@ void cmDefinitions::Raise(const std::string& key, } bool cmDefinitions::HasKey(const std::string& key, - StackConstIter begin, StackConstIter end) + StackIter begin, StackIter end) { - for (StackConstIter it = begin; it != end; ++it) + for (StackIter it = begin; it != end; ++it) { MapType::const_iterator i = it->Map.find(key); if (i != it->Map.end()) @@ -94,12 +94,12 @@ std::vector cmDefinitions::UnusedKeys() const } //---------------------------------------------------------------------------- -cmDefinitions cmDefinitions::MakeClosure(StackConstIter begin, - StackConstIter end) +cmDefinitions cmDefinitions::MakeClosure(StackIter begin, + StackIter end) { cmDefinitions closure; std::set undefined; - for (StackConstIter it = begin; it != end; ++it) + for (StackIter it = begin; it != end; ++it) { // Consider local definitions. for(MapType::const_iterator mi = it->Map.begin(); @@ -125,12 +125,12 @@ cmDefinitions cmDefinitions::MakeClosure(StackConstIter begin, //---------------------------------------------------------------------------- std::vector -cmDefinitions::ClosureKeys(StackConstIter begin, StackConstIter end) +cmDefinitions::ClosureKeys(StackIter begin, StackIter end) { std::set bound; std::vector defined; - for (StackConstIter it = begin; it != end; ++it) + for (StackIter it = begin; it != end; ++it) { defined.reserve(defined.size() + it->Map.size()); for(MapType::const_iterator mi = it->Map.begin(); diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h index 5fdcaab..411867c 100644 --- a/Source/cmDefinitions.h +++ b/Source/cmDefinitions.h @@ -13,6 +13,9 @@ #define cmDefinitions_h #include "cmStandardIncludes.h" + +#include "cmLinkedTree.h" + #if defined(CMAKE_BUILD_WITH_CMAKE) #ifdef CMake_HAVE_CXX11_UNORDERED_MAP #include @@ -32,26 +35,26 @@ */ class cmDefinitions { - typedef std::list::reverse_iterator StackIter; - typedef std::list::const_reverse_iterator StackConstIter; + typedef cmLinkedTree::iterator StackIter; public: static const char* Get(const std::string& key, StackIter begin, StackIter end); - static void Raise(const std::string& key, StackIter begin, StackIter end); + static void Raise(const std::string& key, + StackIter begin, StackIter end); static bool HasKey(const std::string& key, - StackConstIter begin, StackConstIter end); + StackIter begin, StackIter end); /** Set (or unset if null) a value associated with a key. */ void Set(const std::string& key, const char* value); std::vector UnusedKeys() const; - static std::vector ClosureKeys(StackConstIter begin, - StackConstIter end); + static std::vector ClosureKeys(StackIter begin, + StackIter end); - static cmDefinitions MakeClosure(StackConstIter begin, StackConstIter end); + static cmDefinitions MakeClosure(StackIter begin, StackIter end); private: // String with existence boolean. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 2eff2bc..8fc8e7c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -45,70 +45,73 @@ class cmMakefile::Internals { public: - std::list VarStack; + cmLinkedTree VarTree; + cmLinkedTree::iterator VarTreeIter; bool IsSourceFileTryCompile; void PushDefinitions() { - this->VarStack.push_back(cmDefinitions()); + assert(this->VarTreeIter.IsValid()); + this->VarTreeIter = this->VarTree.Extend(this->VarTreeIter); } void InitializeVarStack() { + this->VarTreeIter = this->VarTree.Root(); this->PushDefinitions(); } void InitializeDefinitions(cmMakefile* parent) { - this->VarStack.back() = - cmDefinitions::MakeClosure(parent->Internal->VarStack.rbegin(), - parent->Internal->VarStack.rend()); + *this->VarTreeIter = + cmDefinitions::MakeClosure(parent->Internal->VarTreeIter, + parent->Internal->VarTree.Root()); } const char* GetDefinition(std::string const& name) { - return cmDefinitions::Get(name, this->VarStack.rbegin(), - this->VarStack.rend()); + assert(this->VarTreeIter != this->VarTree.Root()); + return cmDefinitions::Get(name, + this->VarTreeIter, this->VarTree.Root()); } bool IsInitialized(std::string const& name) { - return cmDefinitions::HasKey(name, this->VarStack.rbegin(), - this->VarStack.rend()); + return cmDefinitions::HasKey(name, + this->VarTreeIter, this->VarTree.Root()); } void SetDefinition(std::string const& name, std::string const& value) { - this->VarStack.back().Set(name, value.c_str()); + this->VarTreeIter->Set(name, value.c_str()); } void RemoveDefinition(std::string const& name) { - this->VarStack.back().Set(name, 0); + this->VarTreeIter->Set(name, 0); } std::vector UnusedKeys() const { - return this->VarStack.back().UnusedKeys(); + return this->VarTreeIter->UnusedKeys(); } std::vector ClosureKeys() const { - return cmDefinitions::ClosureKeys(this->VarStack.rbegin(), - this->VarStack.rend()); + return cmDefinitions::ClosureKeys(this->VarTreeIter, this->VarTree.Root()); } void PopDefinitions() { - this->VarStack.pop_back(); + ++this->VarTreeIter; } bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - std::list::reverse_iterator it = this->VarStack.rbegin(); - assert(it != this->VarStack.rend()); + cmLinkedTree::iterator it = this->VarTreeIter; + assert(it != this->VarTree.Root()); ++it; - if(it == this->VarStack.rend()) + if(it == this->VarTree.Root()) { cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) @@ -130,7 +133,7 @@ public: return true; } // First localize the definition in the current scope. - cmDefinitions::Raise(var, this->VarStack.rbegin(), this->VarStack.rend()); + cmDefinitions::Raise(var, this->VarTreeIter, this->VarTree.Root()); // Now update the definition in the parent scope. it->Set(var, varDef); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ff4fef0db4e585e543ea270bf099791c65692143 commit ff4fef0db4e585e543ea270bf099791c65692143 Author: Stephen Kelly AuthorDate: Mon Jun 8 20:09:55 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 23:07:01 2015 +0200 cmLinkedTree: Add operator* to the iterator. This is needed to make it possible to assign new definitions to a point in the tree. This can be removed when that is not needed anymore. diff --git a/Source/cmLinkedTree.h b/Source/cmLinkedTree.h index d2339c4..df00b30 100644 --- a/Source/cmLinkedTree.h +++ b/Source/cmLinkedTree.h @@ -87,6 +87,24 @@ public: return this->Tree->GetPointer(this->Position - 1); } + ReferenceType operator*() const + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + assert(this->Position <= this->Tree->Data.size()); + assert(this->Position > 0); + return this->Tree->GetReference(this->Position - 1); + } + + ReferenceType operator*() + { + assert(this->Tree); + assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); + assert(this->Position <= this->Tree->Data.size()); + assert(this->Position > 0); + return this->Tree->GetReference(this->Position - 1); + } + bool operator==(iterator other) const { assert(this->Tree); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2ef3f2c2b67f47a8b649aa1c9b83cbfe4b81e674 commit 2ef3f2c2b67f47a8b649aa1c9b83cbfe4b81e674 Author: Stephen Kelly AuthorDate: Mon Jun 8 20:04:24 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 23:06:41 2015 +0200 cmMakefile: Extract InitializeVarStack method. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a8b163a..2eff2bc 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -53,6 +53,11 @@ public: this->VarStack.push_back(cmDefinitions()); } + void InitializeVarStack() + { + this->PushDefinitions(); + } + void InitializeDefinitions(cmMakefile* parent) { this->VarStack.back() = @@ -139,7 +144,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) LocalGenerator(localGenerator), StateSnapshot(localGenerator->GetStateSnapshot()) { - this->Internal->PushDefinitions(); + this->Internal->InitializeVarStack(); this->Internal->IsSourceFileTryCompile = false; // Initialize these first since AddDefaultDefinitions calls AddDefinition ----------------------------------------------------------------------- Summary of changes: Source/cmDefinitions.cxx | 14 ++++----- Source/cmDefinitions.h | 17 ++++++----- Source/cmLinkedTree.h | 18 ++++++++++++ Source/cmMakefile.cxx | 71 ++++++++++++++++++++++++++++++++-------------- 4 files changed, 84 insertions(+), 36 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 17:47:50 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 17:47:50 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-297-g541191b Message-ID: <20150608214750.6BE12AFBAF@public.kitware.com> 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 541191bf9bf9da11893f4a4e0aef7315db8637ad (commit) via 55d6c5a91f7261edcc1e62866fa186647f8325f3 (commit) via 82a256e44096483fd8c09cffc7faf8f519298ff8 (commit) from 9e18e80a4235f5c8ff453057ff58349a1171fbac (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=541191bf9bf9da11893f4a4e0aef7315db8637ad commit 541191bf9bf9da11893f4a4e0aef7315db8637ad Merge: 9e18e80 55d6c5a Author: Stephen Kelly AuthorDate: Mon Jun 8 17:47:49 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 17:47:49 2015 -0400 Merge topic 'use-generator-target' into next 55d6c5a9 fixup! cmComputeTargetDepends: Change API to use cmGeneratorTarget. 82a256e4 fixup! GHS: Use a cmGeneratorTarget in generator API. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=55d6c5a91f7261edcc1e62866fa186647f8325f3 commit 55d6c5a91f7261edcc1e62866fa186647f8325f3 Author: Stephen Kelly AuthorDate: Mon Jun 8 23:47:28 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 23:47:28 2015 +0200 fixup! cmComputeTargetDepends: Change API to use cmGeneratorTarget. diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index 632141a..65a15ee 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -224,7 +224,7 @@ void cmGlobalVisualStudio6Generator tt = orderedProjectTargets.begin(); tt != orderedProjectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index f453da1..1674e98 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -402,7 +402,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetConfigurations( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -442,7 +442,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -534,7 +534,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetDepends( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -1045,12 +1045,12 @@ cmGlobalVisualStudio7Generator ::IsDependedOn(OrderedTargetDependSet const& projectTargets, cmTarget const* targetIn) { + cmGeneratorTarget* gtIn = this->GetGeneratorTarget(targetIn); for (OrderedTargetDependSet::const_iterator l = projectTargets.begin(); l != projectTargets.end(); ++l) { - cmTarget const& target = **l; - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target); - if(tgtdeps.count(targetIn)) + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(*l); + if(tgtdeps.count(gtIn)) { return true; } diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index b96a799..f3cf36e 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -441,7 +441,8 @@ bool cmGlobalVisualStudio8Generator::ComputeTargetDepends() void cmGlobalVisualStudio8Generator::WriteProjectDepends( std::ostream& fout, const std::string&, const char*, cmTarget const& t) { - TargetDependSet const& unordered = this->GetTargetDirectDepends(t); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&t); + TargetDependSet const& unordered = this->GetTargetDirectDepends(gt); OrderedTargetDependSet depends(unordered); for(OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 585d19a..8723956 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -106,7 +106,8 @@ void cmGlobalVisualStudioGenerator::Generate() for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) { - if(!this->IsExcluded(gen[0], t->second)) + cmGeneratorTarget* gt = this->GetGeneratorTarget(&t->second); + if(!this->IsExcluded(gen[0], gt)) { allBuild->AddUtility(t->second.GetName()); } @@ -299,13 +300,14 @@ void cmGlobalVisualStudioGenerator::FillLinkClosure(cmTarget const* target, { if(linked.insert(target).second) { - TargetDependSet const& depends = this->GetTargetDirectDepends(*target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + TargetDependSet const& depends = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { if(di->IsLink()) { - this->FillLinkClosure(*di, linked); + this->FillLinkClosure(di->Target, linked); } } } @@ -320,7 +322,8 @@ cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmTarget* target) { TargetSetMap::value_type entry(target, TargetSet()); i = this->TargetLinkClosure.insert(entry).first; - this->FillLinkClosure(target, i->second); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + this->FillLinkClosure(gt, i->second); } return i->second; } @@ -338,13 +341,14 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends( { // Static library targets do not list their link dependencies so // we must follow them transitively now. - TargetDependSet const& depends = this->GetTargetDirectDepends(*target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + TargetDependSet const& depends = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { if(di->IsLink()) { - this->FollowLinkDepends(*di, linked); + this->FollowLinkDepends(di->Target, linked); } } } @@ -413,7 +417,8 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) target.GetType() != cmTarget::MODULE_LIBRARY && target.GetType() != cmTarget::EXECUTABLE); - TargetDependSet const& depends = this->GetTargetDirectDepends(target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + TargetDependSet const& depends = this->GetTargetDirectDepends(gt); // Collect implicit link dependencies (target_link_libraries). // Static libraries cannot depend on their link implementation @@ -427,7 +432,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) cmTargetDepend dep = *di; if(dep.IsLink()) { - this->FollowLinkDepends(dep, linkDepends); + this->FollowLinkDepends(dep->Target, linkDepends); } } } @@ -440,7 +445,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) cmTargetDepend dep = *di; if(dep.IsUtil()) { - this->FollowLinkDepends(dep, utilDepends); + this->FollowLinkDepends(dep->Target, utilDepends); } } diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 12a1e42..591c2db 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2660,7 +2660,7 @@ void cmVisualStudio10TargetGenerator::WriteEvent( void cmVisualStudio10TargetGenerator::WriteProjectReferences() { cmGlobalGenerator::TargetDependSet const& unordered - = this->GlobalGenerator->GetTargetDirectDepends(*this->Target); + = this->GlobalGenerator->GetTargetDirectDepends(this->GeneratorTarget); typedef cmGlobalVisualStudioGenerator::OrderedTargetDependSet OrderedTargetDependSet; OrderedTargetDependSet depends(unordered); @@ -2668,7 +2668,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences() for( OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) { - cmTarget const* dt = *i; + cmTarget const* dt = (*i)->Target; if(dt->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=82a256e44096483fd8c09cffc7faf8f519298ff8 commit 82a256e44096483fd8c09cffc7faf8f519298ff8 Author: Stephen Kelly AuthorDate: Mon Jun 8 23:36:13 2015 +0200 Commit: Stephen Kelly CommitDate: Mon Jun 8 23:36:13 2015 +0200 fixup! GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index f4c9a83..83b6cff 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -26,7 +26,7 @@ cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) , LocalGenerator(static_cast( target->GetLocalGenerator())) , Makefile(target->Target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target)) + , TargetGroup(DetermineIfTargetGroup(target->Target)) , DynamicDownload(false) { this->RelBuildFilePath = this->GetRelBuildFilePath(target); ----------------------------------------------------------------------- Summary of changes: Source/cmGhsMultiTargetGenerator.cxx | 2 +- Source/cmGlobalVisualStudio6Generator.cxx | 2 +- Source/cmGlobalVisualStudio7Generator.cxx | 12 ++++++------ Source/cmGlobalVisualStudio8Generator.cxx | 3 ++- Source/cmGlobalVisualStudioGenerator.cxx | 23 ++++++++++++++--------- Source/cmVisualStudio10TargetGenerator.cxx | 4 ++-- 6 files changed, 26 insertions(+), 20 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 18:02:38 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 18:02:38 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-299-gc2b8218 Message-ID: <20150608220238.5E211B02B3@public.kitware.com> 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 c2b8218563aa73173833131b1b107511f765dc28 (commit) via c1528cf8ae58cf8b37c3e0bd6ecdb1e18ec4b7d0 (commit) from 541191bf9bf9da11893f4a4e0aef7315db8637ad (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=c2b8218563aa73173833131b1b107511f765dc28 commit c2b8218563aa73173833131b1b107511f765dc28 Merge: 541191b c1528cf Author: Stephen Kelly AuthorDate: Mon Jun 8 18:02:37 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 18:02:37 2015 -0400 Merge topic 'use-generator-target' into next c1528cf8 Compile Fixups. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c1528cf8ae58cf8b37c3e0bd6ecdb1e18ec4b7d0 commit c1528cf8ae58cf8b37c3e0bd6ecdb1e18ec4b7d0 Author: Stephen Kelly AuthorDate: Tue Jun 9 00:02:06 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 00:02:06 2015 +0200 Compile Fixups. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 83b6cff..da371b1 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -23,21 +23,22 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) : Target(target->Target) + , GeneratorTarget(target) , LocalGenerator(static_cast( target->GetLocalGenerator())) , Makefile(target->Target->GetMakefile()) , TargetGroup(DetermineIfTargetGroup(target->Target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target); + this->RelBuildFileName += this->GetBuildFileName(target->Target); - std::string absPathToRoot = this->GetAbsPathToRoot(target); + std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; @@ -354,11 +355,11 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() { // library directories cmTargetDependSet tds = - this->GetGlobalGenerator()->GetTargetDirectDepends(*this->Target); + this->GetGlobalGenerator()->GetTargetDirectDepends(this->GeneratorTarget); for (cmTargetDependSet::iterator tdsI = tds.begin(); tdsI != tds.end(); ++tdsI) { - const cmTarget *tg(*tdsI); + const cmTarget *tg = (*tdsI)->Target; *this->GetFolderBuildStreams() << " -L\"" << GetAbsBuildFilePath(tg) << "\"" << std::endl; } @@ -373,7 +374,8 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGhsMultiTargetGenerator gmtg(tg); + cmGeneratorTarget* gt = GetGlobalGenerator()->GetGeneratorTarget(tg); + cmGhsMultiTargetGenerator gmtg(gt); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index fc9532a..f268071 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -100,6 +100,7 @@ private: const std::string &language); cmTarget *Target; + cmGeneratorTarget GeneratorTarget; cmLocalGhsMultiGenerator *LocalGenerator; cmMakefile *Makefile; std::string AbsBuildFilePath; diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 8723956..475f079 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -307,7 +307,7 @@ void cmGlobalVisualStudioGenerator::FillLinkClosure(cmTarget const* target, { if(di->IsLink()) { - this->FillLinkClosure(di->Target, linked); + this->FillLinkClosure((*di)->Target, linked); } } } @@ -322,8 +322,7 @@ cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmTarget* target) { TargetSetMap::value_type entry(target, TargetSet()); i = this->TargetLinkClosure.insert(entry).first; - cmGeneratorTarget* gt = this->GetGeneratorTarget(target); - this->FillLinkClosure(gt, i->second); + this->FillLinkClosure(target, i->second); } return i->second; } @@ -348,7 +347,7 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends( { if(di->IsLink()) { - this->FollowLinkDepends(di->Target, linked); + this->FollowLinkDepends((*di)->Target->Target, linked); } } } ----------------------------------------------------------------------- Summary of changes: Source/cmGhsMultiTargetGenerator.cxx | 14 ++++++++------ Source/cmGhsMultiTargetGenerator.h | 1 + Source/cmGlobalVisualStudioGenerator.cxx | 7 +++---- 3 files changed, 12 insertions(+), 10 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 18:08:51 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 18:08:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-301-gbe3425b Message-ID: <20150608220851.5C9FAB0351@public.kitware.com> 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 be3425b53e9033950a71dde897e7a47a2f7ef6d5 (commit) via c7ca73b16e135ef599feaf8bb4971ba434ab0a31 (commit) from c2b8218563aa73173833131b1b107511f765dc28 (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=be3425b53e9033950a71dde897e7a47a2f7ef6d5 commit be3425b53e9033950a71dde897e7a47a2f7ef6d5 Merge: c2b8218 c7ca73b Author: Stephen Kelly AuthorDate: Mon Jun 8 18:08:50 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 18:08:50 2015 -0400 Merge topic 'use-generator-target' into next c7ca73b1 Compile fix. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c7ca73b16e135ef599feaf8bb4971ba434ab0a31 commit c7ca73b16e135ef599feaf8bb4971ba434ab0a31 Author: Stephen Kelly AuthorDate: Tue Jun 9 00:07:55 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 00:08:31 2015 +0200 Compile fix. diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index f268071..c29a31e 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -100,7 +100,7 @@ private: const std::string &language); cmTarget *Target; - cmGeneratorTarget GeneratorTarget; + cmGeneratorTarget* GeneratorTarget; cmLocalGhsMultiGenerator *LocalGenerator; cmMakefile *Makefile; std::string AbsBuildFilePath; diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 475f079..e130937 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -347,7 +347,7 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends( { if(di->IsLink()) { - this->FollowLinkDepends((*di)->Target->Target, linked); + this->FollowLinkDepends((*di)->Target, linked); } } } ----------------------------------------------------------------------- Summary of changes: Source/cmGhsMultiTargetGenerator.h | 2 +- Source/cmGlobalVisualStudioGenerator.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 18:17:37 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 18:17:37 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-303-g1f30b2e Message-ID: <20150608221737.52FAFADDD5@public.kitware.com> 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 1f30b2e8dfdff2379cfc408bdf5d42aa1ad9092b (commit) via 434e29a09cd7ae7195b30d3311290cca7cb0e007 (commit) from be3425b53e9033950a71dde897e7a47a2f7ef6d5 (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=1f30b2e8dfdff2379cfc408bdf5d42aa1ad9092b commit 1f30b2e8dfdff2379cfc408bdf5d42aa1ad9092b Merge: be3425b 434e29a Author: Stephen Kelly AuthorDate: Mon Jun 8 18:17:36 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 18:17:36 2015 -0400 Merge topic 'use-generator-target' into next 434e29a0 Compile fix. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=434e29a09cd7ae7195b30d3311290cca7cb0e007 commit 434e29a09cd7ae7195b30d3311290cca7cb0e007 Author: Stephen Kelly AuthorDate: Tue Jun 9 00:17:11 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 00:17:21 2015 +0200 Compile fix. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index e130937..b10610a 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -872,7 +872,13 @@ cmGlobalVisualStudioGenerator::OrderedTargetDependSet cmGlobalVisualStudioGenerator::OrderedTargetDependSet ::OrderedTargetDependSet(TargetSet const& targets) { - this->insert(targets.begin(), targets.end()); + for (TargetSet::const_iterator it = targets.begin(); + it != targets.end(); ++it) + { + cmGeneratorTarget* gt = + (*it)->GetGlobalGenerator()->GetGeneratorTarget(*it); + this->insert(gt); + } } std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir( ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudioGenerator.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 18:31:44 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 18:31:44 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-305-g8453383 Message-ID: <20150608223144.93CEBAFBAE@public.kitware.com> 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 84533831fddbb42fb04ee9b193ea6ac3c67ec064 (commit) via 7b9ea5012013c6f8c26e19084a1ea66136b84939 (commit) from 1f30b2e8dfdff2379cfc408bdf5d42aa1ad9092b (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=84533831fddbb42fb04ee9b193ea6ac3c67ec064 commit 84533831fddbb42fb04ee9b193ea6ac3c67ec064 Merge: 1f30b2e 7b9ea50 Author: Stephen Kelly AuthorDate: Mon Jun 8 18:31:43 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 18:31:43 2015 -0400 Merge topic 'use-generator-target' into next 7b9ea501 Compile fix. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7b9ea5012013c6f8c26e19084a1ea66136b84939 commit 7b9ea5012013c6f8c26e19084a1ea66136b84939 Author: Stephen Kelly AuthorDate: Tue Jun 9 00:31:29 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 00:31:29 2015 +0200 Compile fix. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index b10610a..ee4d21c 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -876,7 +876,7 @@ cmGlobalVisualStudioGenerator::OrderedTargetDependSet it != targets.end(); ++it) { cmGeneratorTarget* gt = - (*it)->GetGlobalGenerator()->GetGeneratorTarget(*it); + (*it)->GetMakefile()->GetGlobalGenerator()->GetGeneratorTarget(*it); this->insert(gt); } } ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudioGenerator.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 18:38:54 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 18:38:54 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-307-g0efeb96 Message-ID: <20150608223854.E8B64B0086@public.kitware.com> 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 0efeb967c31ca2ab2fb38ffde27f20349517c423 (commit) via 142f26c3b782fd558d4d0d11756516b2380b67be (commit) from 84533831fddbb42fb04ee9b193ea6ac3c67ec064 (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=0efeb967c31ca2ab2fb38ffde27f20349517c423 commit 0efeb967c31ca2ab2fb38ffde27f20349517c423 Merge: 8453383 142f26c Author: Stephen Kelly AuthorDate: Mon Jun 8 18:38:54 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 18:38:54 2015 -0400 Merge topic 'use-generator-target' into next 142f26c3 Compile fix. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=142f26c3b782fd558d4d0d11756516b2380b67be commit 142f26c3b782fd558d4d0d11756516b2380b67be Author: Stephen Kelly AuthorDate: Tue Jun 9 00:38:41 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 00:38:41 2015 +0200 Compile fix. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index ee4d21c..bdf2b8d 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -847,7 +847,7 @@ cmGlobalVisualStudioGenerator::TargetIsFortranOnly(cmTarget const& target) //---------------------------------------------------------------------------- bool cmGlobalVisualStudioGenerator::TargetCompare -::operator()(cmTarget const* l, cmTarget const* r) const +::operator()(cmGeneratorTarget const* l, cmGeneratorTarget const* r) const { // Make sure ALL_BUILD is first so it is the default active project. if(r->GetName() == "ALL_BUILD") diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 69b4564..41843b3 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -91,7 +91,8 @@ public: class TargetSet: public std::set {}; struct TargetCompare { - bool operator()(cmTarget const* l, cmTarget const* r) const; + bool operator()(cmGeneratorTarget const* l, + cmGeneratorTarget const* r) const; }; class OrderedTargetDependSet; ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudioGenerator.cxx | 2 +- Source/cmGlobalVisualStudioGenerator.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Mon Jun 8 18:47:40 2015 From: steveire at gmail.com (Stephen Kelly) Date: Mon, 8 Jun 2015 18:47:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-309-gda4fd95 Message-ID: <20150608224740.A0866AEDDA@public.kitware.com> 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 da4fd959e23e6775e31f7911d56f6f862279bb6b (commit) via f5ba69f99b7d2620409c9fe650a39005120e2df7 (commit) from 0efeb967c31ca2ab2fb38ffde27f20349517c423 (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=da4fd959e23e6775e31f7911d56f6f862279bb6b commit da4fd959e23e6775e31f7911d56f6f862279bb6b Merge: 0efeb96 f5ba69f Author: Stephen Kelly AuthorDate: Mon Jun 8 18:47:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 8 18:47:39 2015 -0400 Merge topic 'use-generator-target' into next f5ba69f9 Revert topic. diff --cc Source/cmMakefile.cxx index 615bedc,a8b163a..2a9a806 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@@ -129,10 -100,12 +129,10 @@@ public bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - std::list::reverse_iterator it = this->VarStack.rbegin(); - assert(it != this->VarStack.rend()); - ++it; - if(it == this->VarStack.rend()) + assert(this->VarScopeIter->Vars != this->VarTree.Root()); + if(this->VarScopeIter->Parent == this->VarTree.Root()) { - cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); + cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f5ba69f99b7d2620409c9fe650a39005120e2df7 commit f5ba69f99b7d2620409c9fe650a39005120e2df7 Author: Stephen Kelly AuthorDate: Tue Jun 9 00:47:06 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 00:47:24 2015 +0200 Revert topic. diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index c4a03a0..87b47b4 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -147,12 +147,12 @@ bool cmComputeTargetDepends::Compute() //---------------------------------------------------------------------------- void -cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t, +cmComputeTargetDepends::GetTargetDirectDepends(cmTarget const* t, cmTargetDependSet& deps) { // Lookup the index for this target. All targets should be known by // this point. - std::map::const_iterator tii + std::map::const_iterator tii = this->TargetIndex.find(t); assert(tii != this->TargetIndex.end()); int i = tii->second; @@ -161,7 +161,7 @@ cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t, EdgeList const& nl = this->FinalGraph[i]; for(EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { - cmGeneratorTarget const* dep = this->Targets[*ni]; + cmTarget const* dep = this->Targets[*ni]; cmTargetDependSet::iterator di = deps.insert(dep).first; di->SetType(ni->IsStrong()); } @@ -180,11 +180,9 @@ void cmComputeTargetDepends::CollectTargets() ti != targets.end(); ++ti) { cmTarget const* target = &ti->second; - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(target); int index = static_cast(this->Targets.size()); - this->TargetIndex[gt] = index; - this->Targets.push_back(gt); + this->TargetIndex[target] = index; + this->Targets.push_back(target); } } } @@ -206,7 +204,7 @@ void cmComputeTargetDepends::CollectDepends() void cmComputeTargetDepends::CollectTargetDepends(int depender_index) { // Get the depender. - cmGeneratorTarget const* depender = this->Targets[depender_index]; + cmTarget const* depender = this->Targets[depender_index]; if (depender->GetType() == cmTarget::INTERFACE_LIBRARY) { return; @@ -218,9 +216,10 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) // deal with config-specific dependencies. { std::set emitted; + cmGeneratorTarget* gt = this->GlobalGenerator->GetGeneratorTarget(depender); std::vector configs; - depender->Makefile->GetConfigurations(configs); + depender->GetMakefile()->GetConfigurations(configs); if (configs.empty()) { configs.push_back(""); @@ -229,7 +228,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) it != configs.end(); ++it) { std::vector objectFiles; - depender->GetExternalObjects(objectFiles, *it); + gt->GetExternalObjects(objectFiles, *it); for(std::vector::const_iterator oi = objectFiles.begin(); oi != objectFiles.end(); ++oi) { @@ -245,15 +244,15 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) ->IssueMessage(cmake::FATAL_ERROR, "Only executables and non-OBJECT libraries may " "reference target objects.", - depender->Target->GetBacktrace()); + depender->GetBacktrace()); return; } - const_cast(depender)->Target->AddUtility(objLib); + const_cast(depender)->AddUtility(objLib); } } cmTarget::LinkImplementation const* impl = - depender->Target->GetLinkImplementation(*it); + depender->GetLinkImplementation(*it); // A target should not depend on itself. emitted.insert(depender->GetName()); @@ -273,7 +272,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) // Loop over all utility dependencies. { - std::set const& tutils = depender->Target->GetUtilityItems(); + std::set const& tutils = depender->GetUtilityItems(); std::set emitted; // A target should not depend on itself. emitted.insert(depender->GetName()); @@ -291,14 +290,13 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) //---------------------------------------------------------------------------- void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, - const cmGeneratorTarget* dependee, - const std::string& config, - std::set &emitted) + cmTarget const* dependee, + const std::string& config, + std::set &emitted) { - cmGeneratorTarget const* depender = this->Targets[depender_index]; + cmTarget const* depender = this->Targets[depender_index]; if(cmTarget::LinkInterface const* iface = - dependee->Target->GetLinkInterface(config, - depender->Target)) + dependee->GetLinkInterface(config, depender)) { for(std::vector::const_iterator lib = iface->Libraries.begin(); @@ -319,7 +317,7 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set &emitted) { - cmGeneratorTarget const* depender = this->Targets[depender_index]; + cmTarget const* depender = this->Targets[depender_index]; cmTarget const* dependee = dependee_name.Target; // Skip targets that will not really be linked. This is probably a // name conflict between an external library and an executable @@ -333,17 +331,16 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, if(dependee) { - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(dependee); - this->AddInterfaceDepends(depender_index, gt, "", emitted); + this->AddInterfaceDepends(depender_index, dependee, "", emitted); std::vector configs; - depender->Makefile->GetConfigurations(configs); + depender->GetMakefile()->GetConfigurations(configs); for (std::vector::const_iterator it = configs.begin(); it != configs.end(); ++it) { // A target should not depend on itself. emitted.insert(depender->GetName()); - this->AddInterfaceDepends(depender_index, gt, *it, emitted); + this->AddInterfaceDepends(depender_index, dependee, + *it, emitted); } } } @@ -354,7 +351,7 @@ void cmComputeTargetDepends::AddTargetDepend( bool linking) { // Get the depender. - cmGeneratorTarget const* depender = this->Targets[depender_index]; + cmTarget const* depender = this->Targets[depender_index]; // Check the target's makefile first. cmTarget const* dependee = dependee_name.Target; @@ -365,7 +362,7 @@ void cmComputeTargetDepends::AddTargetDepend( cmake::MessageType messageType = cmake::AUTHOR_WARNING; bool issueMessage = false; std::ostringstream e; - switch(depender->Target->GetPolicyStatusCMP0046()) + switch(depender->GetPolicyStatusCMP0046()) { case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0046) << "\n"; @@ -386,7 +383,7 @@ void cmComputeTargetDepends::AddTargetDepend( << "\" of target \"" << depender->GetName() << "\" does not exist."; cmListFileBacktrace const* backtrace = - depender->Target->GetUtilityBacktrace(dependee_name); + depender->GetUtilityBacktrace(dependee_name); if(backtrace) { cm->IssueMessage(messageType, e.str(), *backtrace); @@ -411,31 +408,27 @@ void cmComputeTargetDepends::AddTargetDepend( if(dependee) { - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(dependee); - this->AddTargetDepend(depender_index, gt, linking); + this->AddTargetDepend(depender_index, dependee, linking); } } //---------------------------------------------------------------------------- void cmComputeTargetDepends::AddTargetDepend(int depender_index, - const cmGeneratorTarget* dependee, + cmTarget const* dependee, bool linking) { - if(dependee->Target->IsImported() || + if(dependee->IsImported() || dependee->GetType() == cmTarget::INTERFACE_LIBRARY) { // Skip IMPORTED and INTERFACE targets but follow their utility // dependencies. - std::set const& utils = dependee->Target->GetUtilityItems(); + std::set const& utils = dependee->GetUtilityItems(); for(std::set::const_iterator i = utils.begin(); i != utils.end(); ++i) { if(cmTarget const* transitive_dependee = i->Target) { - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(transitive_dependee); - this->AddTargetDepend(depender_index, gt, false); + this->AddTargetDepend(depender_index, transitive_dependee, false); } } } @@ -443,7 +436,7 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, { // Lookup the index for this target. All targets should be known by // this point. - std::map::const_iterator tii = + std::map::const_iterator tii = this->TargetIndex.find(dependee); assert(tii != this->TargetIndex.end()); int dependee_index = tii->second; @@ -464,13 +457,13 @@ cmComputeTargetDepends::DisplayGraph(Graph const& graph, for(int depender_index = 0; depender_index < n; ++depender_index) { EdgeList const& nl = graph[depender_index]; - cmGeneratorTarget const* depender = this->Targets[depender_index]; + cmTarget const* depender = this->Targets[depender_index]; fprintf(stderr, "target %d is [%s]\n", depender_index, depender->GetName().c_str()); for(EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { int dependee_index = *ni; - cmGeneratorTarget const* dependee = this->Targets[dependee_index]; + cmTarget const* dependee = this->Targets[dependee_index]; fprintf(stderr, " depends on target %d [%s] (%s)\n", dependee_index, dependee->GetName().c_str(), ni->IsStrong()? "strong" : "weak"); } @@ -557,11 +550,11 @@ cmComputeTargetDepends { // Get the depender. int i = *ci; - cmGeneratorTarget const* depender = this->Targets[i]; + cmTarget const* depender = this->Targets[i]; // Describe the depender. e << " \"" << depender->GetName() << "\" of type " - << cmTarget::GetTargetTypeName(depender->Target->GetType()) << "\n"; + << cmTarget::GetTargetTypeName(depender->GetType()) << "\n"; // List its dependencies that are inside the component. EdgeList const& nl = this->InitialGraph[i]; @@ -570,7 +563,7 @@ cmComputeTargetDepends int j = *ni; if(cmap[j] == c) { - cmGeneratorTarget const* dependee = this->Targets[j]; + cmTarget const* dependee = this->Targets[j]; e << " depends on \"" << dependee->GetName() << "\"" << " (" << (ni->IsStrong()? "strong" : "weak") << ")\n"; } diff --git a/Source/cmComputeTargetDepends.h b/Source/cmComputeTargetDepends.h index 6100d97..902f342 100644 --- a/Source/cmComputeTargetDepends.h +++ b/Source/cmComputeTargetDepends.h @@ -21,7 +21,7 @@ class cmComputeComponentGraph; class cmGlobalGenerator; class cmLinkItem; -class cmGeneratorTarget; +class cmTarget; class cmTargetDependSet; /** \class cmComputeTargetDepends @@ -39,10 +39,9 @@ public: bool Compute(); - std::vector const& + std::vector const& GetTargets() const { return this->Targets; } - void GetTargetDirectDepends(cmGeneratorTarget const* t, - cmTargetDependSet& deps); + void GetTargetDirectDepends(cmTarget const* t, cmTargetDependSet& deps); private: void CollectTargets(); void CollectDepends(); @@ -50,14 +49,13 @@ private: void AddTargetDepend(int depender_index, cmLinkItem const& dependee_name, bool linking); - void AddTargetDepend(int depender_index, cmGeneratorTarget const* dependee, + void AddTargetDepend(int depender_index, cmTarget const* dependee, bool linking); bool ComputeFinalDepends(cmComputeComponentGraph const& ccg); void AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set &emitted); - void AddInterfaceDepends(int depender_index, - cmGeneratorTarget const* dependee, + void AddInterfaceDepends(int depender_index, cmTarget const* dependee, const std::string& config, std::set &emitted); cmGlobalGenerator* GlobalGenerator; @@ -65,8 +63,8 @@ private: bool NoCycles; // Collect all targets. - std::vector Targets; - std::map TargetIndex; + std::vector Targets; + std::map TargetIndex; // Represent the target dependency graph. The entry at each // top-level index corresponds to a depender whose dependencies are diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index a31e832..e374387 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -313,7 +313,7 @@ void cmExtraCodeBlocksGenerator " "<\n"; - this->AppendTarget(fout, "all", 0, make.c_str(), lgs[0], compiler.c_str()); + this->AppendTarget(fout, "all", 0, make.c_str(), mf, compiler.c_str()); // add all executable and library targets and some of the GLOBAL // and UTILITY targets @@ -335,7 +335,7 @@ void cmExtraCodeBlocksGenerator makefile->GetHomeOutputDirectory())==0) { this->AppendTarget(fout, ti->first, 0, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); } } break; @@ -351,7 +351,7 @@ void cmExtraCodeBlocksGenerator } this->AppendTarget(fout, ti->first, 0, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); break; case cmTarget::EXECUTABLE: case cmTarget::STATIC_LIBRARY: @@ -360,11 +360,11 @@ void cmExtraCodeBlocksGenerator case cmTarget::OBJECT_LIBRARY: { this->AppendTarget(fout, ti->first, &ti->second, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; this->AppendTarget(fout, fastTarget, &ti->second, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); } break; default: @@ -519,16 +519,14 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( - cmLocalGenerator* lg, - cmTarget* target) const + cmMakefile* mf, cmTarget* target) const { - cmMakefile *mf = lg->GetMakefile(); // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = mf->GetCurrentBinaryDirectory(); filename += "/"; - filename += lg->GetTargetDirectory(*target); + filename += mf->GetLocalGenerator()->GetTargetDirectory(*target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -549,10 +547,9 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, cmTarget* target, const char* make, - const cmLocalGenerator* lg, + const cmMakefile* makefile, const char* compiler) { - cmMakefile const* makefile = lg->GetMakefile(); std::string makefileName = makefile->GetCurrentBinaryDirectory(); makefileName += "/Makefile"; @@ -586,7 +583,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::string location; if ( target->GetType()==cmTarget::OBJECT_LIBRARY) { - location = this->CreateDummyTargetFile(const_cast(lg), + location = this->CreateDummyTargetFile(const_cast(makefile), target); } else @@ -621,7 +618,8 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::set uniqIncludeDirs; std::vector includes; - lg->GetIncludeDirectories(includes, gtgt, "C", buildType); + target->GetMakefile()->GetLocalGenerator()-> + GetIncludeDirectories(includes, gtgt, "C", buildType); uniqIncludeDirs.insert(includes.begin(), includes.end()); diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h index e5ede9a..97da1b8 100644 --- a/Source/cmExtraCodeBlocksGenerator.h +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -48,8 +48,7 @@ private: void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); - std::string CreateDummyTargetFile(cmLocalGenerator* lg, - cmTarget* target) const; + std::string CreateDummyTargetFile(cmMakefile* mf, cmTarget* target) const; std::string GetCBCompilerId(const cmMakefile* mf); int GetCBTargetType(cmTarget* target); @@ -59,7 +58,7 @@ private: const std::string& targetName, cmTarget* target, const char* make, - const cmLocalGenerator* lg, + const cmMakefile* makefile, const char* compiler); }; diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 7aeb613..67d0d54 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,20 +220,14 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) - : Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = lg; + this->LocalGenerator = this->Makefile->GetLocalGenerator(); this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } -cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const -{ - return this->LocalGenerator; -} - //---------------------------------------------------------------------------- int cmGeneratorTarget::GetType() const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 675ee9f..a8edcb8 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,9 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); - - cmLocalGenerator* GetLocalGenerator() const; + cmGeneratorTarget(cmTarget*); int GetType() const; std::string GetName() const; diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index da371b1..01e2011 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,24 +21,23 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) - : Target(target->Target) - , GeneratorTarget(target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) + : Target(target) , LocalGenerator(static_cast( - target->GetLocalGenerator())) - , Makefile(target->Target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target->Target)) + target->GetMakefile()->GetLocalGenerator())) + , Makefile(target->GetMakefile()) + , TargetGroup(DetermineIfTargetGroup(target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target->Target); + this->RelBuildFileName += this->GetBuildFileName(target); - std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); + std::string absPathToRoot = this->GetAbsPathToRoot(target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; @@ -355,11 +354,11 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() { // library directories cmTargetDependSet tds = - this->GetGlobalGenerator()->GetTargetDirectDepends(this->GeneratorTarget); + this->GetGlobalGenerator()->GetTargetDirectDepends(*this->Target); for (cmTargetDependSet::iterator tdsI = tds.begin(); tdsI != tds.end(); ++tdsI) { - const cmTarget *tg = (*tdsI)->Target; + const cmTarget *tg(*tdsI); *this->GetFolderBuildStreams() << " -L\"" << GetAbsBuildFilePath(tg) << "\"" << std::endl; } @@ -374,8 +373,7 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGeneratorTarget* gt = GetGlobalGenerator()->GetGeneratorTarget(tg); - cmGhsMultiTargetGenerator gmtg(gt); + cmGhsMultiTargetGenerator gmtg(tg); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index c29a31e..8e81db8 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmGeneratorTarget* target); + cmGhsMultiTargetGenerator(cmTarget *target); virtual ~cmGhsMultiTargetGenerator(); @@ -100,7 +100,6 @@ private: const std::string &language); cmTarget *Target; - cmGeneratorTarget* GeneratorTarget; cmLocalGhsMultiGenerator *LocalGenerator; cmMakefile *Makefile; std::string AbsBuildFilePath; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 83cf810..bd949bb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1345,9 +1345,9 @@ bool cmGlobalGenerator::ComputeTargetDepends() { return false; } - std::vector const& targets = ctd.GetTargets(); - for(std::vector::const_iterator ti - = targets.begin(); ti != targets.end(); ++ti) + std::vector const& targets = ctd.GetTargets(); + for(std::vector::const_iterator ti = targets.begin(); + ti != targets.end(); ++ti) { ctd.GetTargetDirectDepends(*ti, this->TargetDependencies[*ti]); } @@ -1451,16 +1451,15 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) +void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) { cmGeneratorTargetsType generatorTargets; - cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); + cmGeneratorTarget* gt = new cmGeneratorTarget(t); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1470,7 +1469,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } @@ -1483,7 +1482,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]); + this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); } } @@ -1955,10 +1954,10 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, } bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, - cmGeneratorTarget* target) const + cmTarget const& target) const { - if(target->GetType() == cmTarget::INTERFACE_LIBRARY - || target->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL")) + if(target.GetType() == cmTarget::INTERFACE_LIBRARY + || target.GetPropertyAsBool("EXCLUDE_FROM_ALL")) { // This target is excluded from its directory. return true; @@ -1967,7 +1966,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, { // This target is included in its directory. Check whether the // directory is excluded. - return this->IsExcluded(root, target->GetLocalGenerator()); + return this->IsExcluded(root, target.GetMakefile()->GetLocalGenerator()); } } @@ -2028,26 +2027,25 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() { cmTarget const& target = t->second; - cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); - // Consider the directory containing the target and all its // parents until something excludes the target. - for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); + for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, target); clg = clg->GetParent()) { // This local generator includes the target. - std::set& targetSet = + std::set& targetSet = this->LocalGeneratorToTargetMap[clg]; - targetSet.insert(gt); + targetSet.insert(&target); // Add dependencies of the included target. An excluded // target may still be included if it is a dependency of a // non-excluded target. - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator ti = tgtdeps.begin(); ti != tgtdeps.end(); ++ti) { - targetSet.insert(*ti); + cmTarget const* ttt = *ti; + targetSet.insert(ttt); } } } @@ -2509,9 +2507,9 @@ void cmGlobalGenerator::AppendDirectoryForConfig(const std::string&, //---------------------------------------------------------------------------- cmGlobalGenerator::TargetDependSet const& -cmGlobalGenerator::GetTargetDirectDepends(cmGeneratorTarget const* target) +cmGlobalGenerator::GetTargetDirectDepends(cmTarget const& target) { - return this->TargetDependencies[target]; + return this->TargetDependencies[&target]; } void cmGlobalGenerator::AddTarget(cmTarget* t) @@ -2611,10 +2609,9 @@ void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets, continue; } // put the target in the set of original targets - cmGeneratorTarget* gt = this->GetGeneratorTarget(target); - originalTargets.insert(gt); + originalTargets.insert(target); // Get the set of targets that depend on target - this->AddTargetDepends(gt, projectTargets); + this->AddTargetDepends(target, projectTargets); } } } @@ -2627,7 +2624,7 @@ bool cmGlobalGenerator::IsRootOnlyTarget(cmTarget* target) const } //---------------------------------------------------------------------------- -void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target, +void cmGlobalGenerator::AddTargetDepends(cmTarget const* target, TargetDependSet& projectTargets) { // add the target itself @@ -2635,10 +2632,11 @@ void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target, { // This is the first time we have encountered the target. // Recursively follow its dependencies. - TargetDependSet const& ts = this->GetTargetDirectDepends(target); + TargetDependSet const& ts = this->GetTargetDirectDepends(*target); for(TargetDependSet::const_iterator i = ts.begin(); i != ts.end(); ++i) { - this->AddTargetDepends(*i, projectTargets); + cmTarget const* dtarget = *i; + this->AddTargetDepends(dtarget, projectTargets); } } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 3d5c8aa..f02df90 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -292,8 +292,7 @@ public: // what targets does the specified target depend on directly // via a target_link_libraries or add_dependencies - TargetDependSet const& GetTargetDirectDepends( - const cmGeneratorTarget* target); + TargetDependSet const& GetTargetDirectDepends(cmTarget const& target); /** Get per-target generator information. */ cmGeneratorTarget* GetGeneratorTarget(cmTarget const*) const; @@ -369,7 +368,7 @@ protected: TargetDependSet& originalTargets, cmLocalGenerator* root, GeneratorVector const&); bool IsRootOnlyTarget(cmTarget* target) const; - void AddTargetDepends(const cmGeneratorTarget* target, + void AddTargetDepends(cmTarget const* target, TargetDependSet& projectTargets); void SetLanguageEnabledFlag(const std::string& l, cmMakefile* mf); void SetLanguageEnabledMaps(const std::string& l, cmMakefile* mf); @@ -391,7 +390,7 @@ protected: void FillProjectMap(); void CheckLocalGenerators(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; - bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; + bool IsExcluded(cmLocalGenerator* root, cmTarget const& target) const; void FillLocalGeneratorToTargetMap(); void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const std::string& name, const char* message, @@ -406,7 +405,7 @@ protected: cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; - std::map > + std::map > LocalGeneratorToTargetMap; // Set of named installation components requested by the project. @@ -478,13 +477,13 @@ private: std::vector FilesReplacedDuringGenerate; // Store computed inter-target dependencies. - typedef std::map TargetDependMap; + typedef std::map TargetDependMap; TargetDependMap TargetDependencies; // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmLocalGenerator* lg); + void CreateGeneratorTargets(cmMakefile* mf); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 722294b..103d75a 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -949,8 +949,8 @@ cmGlobalNinjaGenerator std::set const& utils = target->GetUtilities(); std::copy(utils.begin(), utils.end(), std::back_inserter(outputs)); } else { - cmGeneratorTarget* gt = this->GetGeneratorTarget(target); - cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(gt); + cmTargetDependSet const& targetDeps = + this->GetTargetDirectDepends(*target); for (cmTargetDependSet::const_iterator i = targetDeps.begin(); i != targetDeps.end(); ++i) { @@ -958,7 +958,7 @@ cmGlobalNinjaGenerator { continue; } - this->AppendTargetOutputs((*i)->Target, outputs); + this->AppendTargetOutputs(*i, outputs); } } } diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 0d3177c..ffd1cdc 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -289,7 +289,7 @@ public: const std::vector& GetLocalGenerators() const { return LocalGenerators; } - bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) { + bool IsExcluded(cmLocalGenerator* root, cmTarget& target) { return cmGlobalGenerator::IsExcluded(root, target); } int GetRuleCmdLength(const std::string& name) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 980b6cd..4fe52dd 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -529,7 +529,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalUnixMakefileGenerator3* lg) { // Only subdirectories need these rules. - if(lg->GetMakefile()->IsRootMakefile()) + if(lg->IsRootMakefile()) { return; } @@ -804,12 +804,12 @@ cmGlobalUnixMakefileGenerator3 lg->AppendEcho(commands, "Built target " + name, cmLocalUnixMakefileGenerator3::EchoNormal, &progress); - this->AppendGlobalTargetDepends(depends, gtarget); + this->AppendGlobalTargetDepends(depends,*gtarget->Target); lg->WriteMakeRule(ruleFileStream, "All Build rule for target.", localName, depends, commands, true); // add the all/all dependency - if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) + if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) { depends.clear(); depends.push_back(localName); @@ -830,9 +830,9 @@ cmGlobalUnixMakefileGenerator3 cmLocalGenerator::FULL, cmLocalGenerator::SHELL); // - std::set emitted; + std::set emitted; progCmd << " " - << this->CountProgressMarksInTarget(gtarget, emitted); + << this->CountProgressMarksInTarget(gtarget->Target, emitted); commands.push_back(progCmd.str()); } std::string tmp = cmake::GetCMakeFilesDirectoryPostSlash(); @@ -877,7 +877,7 @@ cmGlobalUnixMakefileGenerator3 "Pre-install relink rule for target.", localName, depends, commands, true); - if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) + if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) { depends.clear(); depends.push_back(localName); @@ -908,14 +908,14 @@ cmGlobalUnixMakefileGenerator3 //---------------------------------------------------------------------------- size_t cmGlobalUnixMakefileGenerator3 -::CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted) +::CountProgressMarksInTarget(cmTarget const* target, + std::set& emitted) { size_t count = 0; if(emitted.insert(target).second) { - count = this->ProgressMap[target->Target].Marks.size(); - TargetDependSet const& depends = this->GetTargetDirectDepends(target); + count = this->ProgressMap[target].Marks.size(); + TargetDependSet const& depends = this->GetTargetDirectDepends(*target); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { @@ -935,10 +935,10 @@ cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg) { size_t count = 0; - std::set emitted; - std::set const& targets + std::set emitted; + std::set const& targets = this->LocalGeneratorToTargetMap[lg]; - for(std::set::const_iterator t = targets.begin(); + for(std::set::const_iterator t = targets.begin(); t != targets.end(); ++t) { count += this->CountProgressMarksInTarget(*t, emitted); @@ -987,21 +987,22 @@ cmGlobalUnixMakefileGenerator3::TargetProgress void cmGlobalUnixMakefileGenerator3 ::AppendGlobalTargetDepends(std::vector& depends, - cmGeneratorTarget* target) + cmTarget& target) { TargetDependSet const& depends_set = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator i = depends_set.begin(); i != depends_set.end(); ++i) { // Create the target-level dependency. - cmGeneratorTarget const* dep = *i; + cmTarget const* dep = *i; if (dep->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; } cmLocalUnixMakefileGenerator3* lg3 = - static_cast(dep->GetLocalGenerator()); - std::string tgtName = lg3->GetRelativeTargetDirectory(*(*dep).Target); + static_cast + (dep->GetMakefile()->GetLocalGenerator()); + std::string tgtName = lg3->GetRelativeTargetDirectory(*dep); tgtName += "/all"; depends.push_back(tgtName); } @@ -1033,7 +1034,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule static_cast(this->LocalGenerators[i]); // for the passed in makefile or if this is the top Makefile wripte out // the targets - if (lg2 == lg || lg->GetMakefile()->IsRootMakefile()) + if (lg2 == lg || lg->IsRootMakefile()) { // for each target Generate the rule files for each target. cmTargets& targets = lg2->GetMakefile()->GetTargets(); diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 14adf2e..a639ff0 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -153,7 +153,7 @@ protected: cmLocalUnixMakefileGenerator3* lg); void AppendGlobalTargetDepends(std::vector& depends, - cmGeneratorTarget* target); + cmTarget& target); // does this generator need a requires step for any of its targets bool NeedRequiresStep(cmTarget const&); @@ -198,8 +198,8 @@ protected: cmStrictTargetComparison> ProgressMapType; ProgressMapType ProgressMap; - size_t CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted); + size_t CountProgressMarksInTarget(cmTarget const* target, + std::set& emitted); size_t CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg); cmGeneratedFileStream *CommandDatabase; diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index 65a15ee..632141a 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -224,7 +224,7 @@ void cmGlobalVisualStudio6Generator tt = orderedProjectTargets.begin(); tt != orderedProjectTargets.end(); ++tt) { - cmTarget const* target = (*tt)->Target; + cmTarget const* target = *tt; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 1674e98..f453da1 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -402,7 +402,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetConfigurations( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = (*tt)->Target; + cmTarget const* target = *tt; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -442,7 +442,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = (*tt)->Target; + cmTarget const* target = *tt; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -534,7 +534,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetDepends( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = (*tt)->Target; + cmTarget const* target = *tt; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -1045,12 +1045,12 @@ cmGlobalVisualStudio7Generator ::IsDependedOn(OrderedTargetDependSet const& projectTargets, cmTarget const* targetIn) { - cmGeneratorTarget* gtIn = this->GetGeneratorTarget(targetIn); for (OrderedTargetDependSet::const_iterator l = projectTargets.begin(); l != projectTargets.end(); ++l) { - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(*l); - if(tgtdeps.count(gtIn)) + cmTarget const& target = **l; + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target); + if(tgtdeps.count(targetIn)) { return true; } diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index f3cf36e..b96a799 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -441,8 +441,7 @@ bool cmGlobalVisualStudio8Generator::ComputeTargetDepends() void cmGlobalVisualStudio8Generator::WriteProjectDepends( std::ostream& fout, const std::string&, const char*, cmTarget const& t) { - cmGeneratorTarget* gt = this->GetGeneratorTarget(&t); - TargetDependSet const& unordered = this->GetTargetDirectDepends(gt); + TargetDependSet const& unordered = this->GetTargetDirectDepends(t); OrderedTargetDependSet depends(unordered); for(OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index bdf2b8d..585d19a 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -106,8 +106,7 @@ void cmGlobalVisualStudioGenerator::Generate() for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t) { - cmGeneratorTarget* gt = this->GetGeneratorTarget(&t->second); - if(!this->IsExcluded(gen[0], gt)) + if(!this->IsExcluded(gen[0], t->second)) { allBuild->AddUtility(t->second.GetName()); } @@ -300,14 +299,13 @@ void cmGlobalVisualStudioGenerator::FillLinkClosure(cmTarget const* target, { if(linked.insert(target).second) { - cmGeneratorTarget* gt = this->GetGeneratorTarget(target); - TargetDependSet const& depends = this->GetTargetDirectDepends(gt); + TargetDependSet const& depends = this->GetTargetDirectDepends(*target); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { if(di->IsLink()) { - this->FillLinkClosure((*di)->Target, linked); + this->FillLinkClosure(*di, linked); } } } @@ -340,14 +338,13 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends( { // Static library targets do not list their link dependencies so // we must follow them transitively now. - cmGeneratorTarget* gt = this->GetGeneratorTarget(target); - TargetDependSet const& depends = this->GetTargetDirectDepends(gt); + TargetDependSet const& depends = this->GetTargetDirectDepends(*target); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { if(di->IsLink()) { - this->FollowLinkDepends((*di)->Target, linked); + this->FollowLinkDepends(*di, linked); } } } @@ -416,8 +413,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) target.GetType() != cmTarget::MODULE_LIBRARY && target.GetType() != cmTarget::EXECUTABLE); - cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); - TargetDependSet const& depends = this->GetTargetDirectDepends(gt); + TargetDependSet const& depends = this->GetTargetDirectDepends(target); // Collect implicit link dependencies (target_link_libraries). // Static libraries cannot depend on their link implementation @@ -431,7 +427,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) cmTargetDepend dep = *di; if(dep.IsLink()) { - this->FollowLinkDepends(dep->Target, linkDepends); + this->FollowLinkDepends(dep, linkDepends); } } } @@ -444,7 +440,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) cmTargetDepend dep = *di; if(dep.IsUtil()) { - this->FollowLinkDepends(dep->Target, utilDepends); + this->FollowLinkDepends(dep, utilDepends); } } @@ -847,7 +843,7 @@ cmGlobalVisualStudioGenerator::TargetIsFortranOnly(cmTarget const& target) //---------------------------------------------------------------------------- bool cmGlobalVisualStudioGenerator::TargetCompare -::operator()(cmGeneratorTarget const* l, cmGeneratorTarget const* r) const +::operator()(cmTarget const* l, cmTarget const* r) const { // Make sure ALL_BUILD is first so it is the default active project. if(r->GetName() == "ALL_BUILD") @@ -872,13 +868,7 @@ cmGlobalVisualStudioGenerator::OrderedTargetDependSet cmGlobalVisualStudioGenerator::OrderedTargetDependSet ::OrderedTargetDependSet(TargetSet const& targets) { - for (TargetSet::const_iterator it = targets.begin(); - it != targets.end(); ++it) - { - cmGeneratorTarget* gt = - (*it)->GetMakefile()->GetGlobalGenerator()->GetGeneratorTarget(*it); - this->insert(gt); - } + this->insert(targets.begin(), targets.end()); } std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir( diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 41843b3..69b4564 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -91,8 +91,7 @@ public: class TargetSet: public std::set {}; struct TargetCompare { - bool operator()(cmGeneratorTarget const* l, - cmGeneratorTarget const* r) const; + bool operator()(cmTarget const* l, cmTarget const* r) const; }; class OrderedTargetDependSet; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 2587764..5ed53d0 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -68,6 +68,11 @@ cmLocalGenerator::~cmLocalGenerator() delete this->Makefile; } +bool cmLocalGenerator::IsRootMakefile() const +{ + return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); +} + //---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { @@ -1330,7 +1335,7 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, const std::string& lang, const std::string& config, bool stripImplicitInclDirs - ) const + ) { // Need to decide whether to automatically include the source and // binary directories at the beginning of the include path. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 9b1dfaf..efdd487 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -39,6 +39,9 @@ public: cmState::Snapshot snapshot); virtual ~cmLocalGenerator(); + /// @return whether we are processing the top CMakeLists.txt file. + bool IsRootMakefile() const; + /** * Generate the makefile for this directory. */ @@ -185,7 +188,7 @@ public: cmGeneratorTarget* target, const std::string& lang = "C", const std::string& config = "", - bool stripImplicitInclDirs = true) const; + bool stripImplicitInclDirs = true); void AddCompileOptions(std::string& flags, cmTarget* target, const std::string& lang, const std::string& config); void AddCompileDefinitions(std::set& defines, diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 8e498dd..870b9b9 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second); + cmGhsMultiTargetGenerator tg(l->second->Target); tg.Generate(); } } diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index aac85f9..427ae10 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -58,7 +58,7 @@ void cmLocalNinjaGenerator::Generate() #endif // We do that only once for the top CMakeLists.txt file. - if(this->Makefile->IsRootMakefile()) + if(this->IsRootMakefile()) { this->WriteBuildFileTop(); @@ -91,7 +91,7 @@ void cmLocalNinjaGenerator::Generate() // Add the target to "all" if required. if (!this->GetGlobalNinjaGenerator()->IsExcluded( this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0], - t->second)) + *t->second->Target)) this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target); delete tg; } @@ -298,7 +298,7 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os) << "# Write statements declared in CMakeLists.txt:" << std::endl << "# " << this->Makefile->GetDefinition("CMAKE_CURRENT_LIST_FILE") << std::endl; - if(this->Makefile->IsRootMakefile()) + if(this->IsRootMakefile()) os << "# Which is the root file." << std::endl; cmGlobalNinjaGenerator::WriteDivider(os); os << std::endl; diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 78fe19d..dcb3016 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -147,6 +147,9 @@ public: void AddImplicitDepends(cmTarget const& tgt, const std::string& lang, const char* obj, const char* src); + void AppendGlobalTargetDepends(std::vector& depends, + cmTarget& target); + // write the target rules for the local Makefile into the stream void WriteLocalAllRules(std::ostream& ruleFileStream); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index bc9f9d6..a8b163a 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -105,7 +105,7 @@ public: ++it; if(it == this->VarStack.rend()) { - cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); + cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) { return false; @@ -1608,11 +1608,6 @@ void cmMakefile::PopMacroScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); } -bool cmMakefile::IsRootMakefile() const -{ - return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); -} - //---------------------------------------------------------------------------- class cmMakefileCurrent { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index c031ee8..6f6ed27 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -79,9 +79,6 @@ public: */ ~cmMakefile(); - /// @return whether we are processing the top CMakeLists.txt file. - bool IsRootMakefile() const; - bool ReadListFile(const char* listfile); bool ReadDependentFile(const char* listfile, bool noPolicyScope = true); @@ -134,6 +131,10 @@ public: bool GetIsSourceFileTryCompile() const; + ///! Get the current makefile generator. + cmLocalGenerator* GetLocalGenerator() const + { return this->LocalGenerator;} + /** * Help enforce global target name uniqueness. */ diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 416063f..37b297e 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target) + cmMakefileTargetGenerator(target->Target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 660027c..450f573 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target) + cmMakefileTargetGenerator(target->Target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index dd60a1f..923aa7b 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,15 +41,16 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target->Target; + this->Target = target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast(target->GetLocalGenerator()); + static_cast( + this->Makefile->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = target; + this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() @@ -1154,10 +1155,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(linkee); - cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); + cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 9182236..2e1b052 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmGeneratorTarget* target); + cmMakefileTargetGenerator(cmTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 303ca63..25d929c 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target) + cmMakefileTargetGenerator(target->Target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 2fe53bf..bbf03ff 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target) + : cmNinjaTargetGenerator(target->Target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index fcf4a62..b2aef68 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -56,18 +56,19 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target->Target), - Makefile(target->Makefile), + Target(target), + Makefile(target->GetMakefile()), LocalGenerator( - static_cast(target->GetLocalGenerator())), + static_cast(Makefile->GetLocalGenerator())), Objects() { - this->GeneratorTarget = target; + this->GeneratorTarget = + this->GetGlobalGenerator()->GetGeneratorTarget(target); MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index fc361b2..4e7d8b3 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmGeneratorTarget* target); + cmNinjaTargetGenerator(cmTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index c3bf011..42d6b46 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target) {} + : cmNinjaTargetGenerator(target->Target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index 3bc0eb7..a8eef82 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(target->GetLocalGenerator()) + , LocalGenerator(Makefile->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 2e17a7d..176cb0d 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -53,7 +53,7 @@ bool cmProjectCommand // CMAKE_PROJECT_NAME will match PROJECT_NAME, and cmake --build // will work. if(!this->Makefile->GetDefinition("CMAKE_PROJECT_NAME") - || (this->Makefile->IsRootMakefile())) + || (this->Makefile->GetLocalGenerator()->IsRootMakefile())) { this->Makefile->AddDefinition("CMAKE_PROJECT_NAME", args[0].c_str()); this->Makefile->AddCacheDefinition diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 3d6ef57..ef32c75 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -368,7 +368,8 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) #if defined(_WIN32) && !defined(__CYGWIN__) bool usePRE_BUILD = false; - cmGlobalGenerator* gg = makefile->GetGlobalGenerator(); + cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* gg = localGen->GetGlobalGenerator(); if(gg->GetName().find("Visual Studio") != std::string::npos) { cmGlobalVisualStudioGenerator* vsgg = @@ -521,10 +522,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); + cmLocalGenerator* localGen = makefile->GetLocalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); - cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); + cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() + ->GetGeneratorTarget(target); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmTargetDepend.h b/Source/cmTargetDepend.h index c5059ee..1feb072 100644 --- a/Source/cmTargetDepend.h +++ b/Source/cmTargetDepend.h @@ -14,24 +14,23 @@ #include "cmStandardIncludes.h" -class cmGeneratorTarget; +class cmTarget; /** One edge in the global target dependency graph. It may be marked as a 'link' or 'util' edge or both. */ class cmTargetDepend { - cmGeneratorTarget const* Target; + cmTarget const* Target; // The set order depends only on the Target, so we use // mutable members to acheive a map with set syntax. mutable bool Link; mutable bool Util; public: - cmTargetDepend(cmGeneratorTarget const* t) - : Target(t), Link(false), Util(false) {} - operator cmGeneratorTarget const*() const { return this->Target; } - cmGeneratorTarget const* operator->() const { return this->Target; } - cmGeneratorTarget const& operator*() const { return *this->Target; } + cmTargetDepend(cmTarget const* t): Target(t), Link(false), Util(false) {} + operator cmTarget const*() const { return this->Target; } + cmTarget const* operator->() const { return this->Target; } + cmTarget const& operator*() const { return *this->Target; } friend bool operator < (cmTargetDepend const& l, cmTargetDepend const& r) { return l.Target < r.Target; } void SetType(bool strong) const diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 591c2db..9b78df3 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->GeneratorTarget->GetLocalGenerator(); + this->Makefile->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); @@ -2660,7 +2660,7 @@ void cmVisualStudio10TargetGenerator::WriteEvent( void cmVisualStudio10TargetGenerator::WriteProjectReferences() { cmGlobalGenerator::TargetDependSet const& unordered - = this->GlobalGenerator->GetTargetDirectDepends(this->GeneratorTarget); + = this->GlobalGenerator->GetTargetDirectDepends(*this->Target); typedef cmGlobalVisualStudioGenerator::OrderedTargetDependSet OrderedTargetDependSet; OrderedTargetDependSet depends(unordered); @@ -2668,7 +2668,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences() for( OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) { - cmTarget const* dt = (*i)->Target; + cmTarget const* dt = *i; if(dt->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 6ff388d..eeb6575 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -482,7 +482,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(lg.get()); + gg->CreateGeneratorTargets(mf); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); ----------------------------------------------------------------------- Summary of changes: Source/cmComputeTargetDepends.cxx | 81 +++++++++++------------- Source/cmComputeTargetDepends.h | 16 ++--- Source/cmExtraCodeBlocksGenerator.cxx | 24 ++++--- Source/cmExtraCodeBlocksGenerator.h | 5 +- Source/cmGeneratorTarget.cxx | 10 +-- Source/cmGeneratorTarget.h | 4 +- Source/cmGhsMultiTargetGenerator.cxx | 24 ++++--- Source/cmGhsMultiTargetGenerator.h | 3 +- Source/cmGlobalGenerator.cxx | 52 ++++++++------- Source/cmGlobalGenerator.h | 13 ++-- Source/cmGlobalNinjaGenerator.cxx | 6 +- Source/cmGlobalNinjaGenerator.h | 2 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 37 +++++------ Source/cmGlobalUnixMakefileGenerator3.h | 6 +- Source/cmGlobalVisualStudio6Generator.cxx | 2 +- Source/cmGlobalVisualStudio7Generator.cxx | 12 ++-- Source/cmGlobalVisualStudio8Generator.cxx | 3 +- Source/cmGlobalVisualStudioGenerator.cxx | 30 +++------ Source/cmGlobalVisualStudioGenerator.h | 3 +- Source/cmLocalGenerator.cxx | 7 +- Source/cmLocalGenerator.h | 5 +- Source/cmLocalGhsMultiGenerator.cxx | 2 +- Source/cmLocalNinjaGenerator.cxx | 6 +- Source/cmLocalUnixMakefileGenerator3.h | 3 + Source/cmMakefile.cxx | 7 +- Source/cmMakefile.h | 7 +- Source/cmMakefileExecutableTargetGenerator.cxx | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 13 ++-- Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 11 ++-- Source/cmNinjaTargetGenerator.h | 2 +- Source/cmNinjaUtilityTargetGenerator.cxx | 2 +- Source/cmOSXBundleGenerator.cxx | 2 +- Source/cmProjectCommand.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 9 +-- Source/cmTargetDepend.h | 13 ++-- Source/cmVisualStudio10TargetGenerator.cxx | 6 +- Source/cmake.cxx | 2 +- 41 files changed, 206 insertions(+), 236 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Tue Jun 9 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 9 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-111-g2848f93 Message-ID: <20150609040106.218A2B00DE@public.kitware.com> 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, master has been updated via 2848f93d1aa8420fa57351385aefe8042b675540 (commit) from d17aa60659a1a69f9101c61a149eca5842291226 (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=2848f93d1aa8420fa57351385aefe8042b675540 commit 2848f93d1aa8420fa57351385aefe8042b675540 Author: Kitware Robot AuthorDate: Tue Jun 9 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Tue Jun 9 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index c9aec51..67be073 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150608) +set(CMake_VERSION_PATCH 20150609) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:41 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:41 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-113-g5a5a81e Message-ID: <20150609131841.74803B00AF@public.kitware.com> 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, master has been updated via 5a5a81e550325e1d5fdd0bb86429188e069e192d (commit) via 2c9697431528ce78aa3aab9c0e1849641d9f61ec (commit) from 2848f93d1aa8420fa57351385aefe8042b675540 (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=5a5a81e550325e1d5fdd0bb86429188e069e192d commit 5a5a81e550325e1d5fdd0bb86429188e069e192d Merge: 2848f93 2c96974 Author: Brad King AuthorDate: Tue Jun 9 09:18:40 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:40 2015 -0400 Merge topic 'FindwxWidgets-versioned-executable' 2c969743 FindwxWidgets: Fix find_program call for versioned names ----------------------------------------------------------------------- Summary of changes: Modules/FindwxWidgets.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:43 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:43 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-115-gd6011a6 Message-ID: <20150609131843.B8DC1B0127@public.kitware.com> 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, master has been updated via d6011a61e94ef181a0aa6044216b6e8d327343e9 (commit) via d9b974b18ebad4bd84f40e7cebe01725f081bd5e (commit) from 5a5a81e550325e1d5fdd0bb86429188e069e192d (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=d6011a61e94ef181a0aa6044216b6e8d327343e9 commit d6011a61e94ef181a0aa6044216b6e8d327343e9 Merge: 5a5a81e d9b974b Author: Brad King AuthorDate: Tue Jun 9 09:18:42 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:42 2015 -0400 Merge topic 'cmake-gui-osx-install-command-line' d9b974b1 cmake-gui: Make command-line install help text selectable ----------------------------------------------------------------------- Summary of changes: Source/QtDialog/CMakeSetupDialog.cxx | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:45 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:45 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-117-ga53d920 Message-ID: <20150609131845.F3555B0146@public.kitware.com> 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, master has been updated via a53d920290f15a55737c944f3abf563d8d5d002d (commit) via f5dbf00da67223c6f1d03cc4c88e05aa83b32f5b (commit) from d6011a61e94ef181a0aa6044216b6e8d327343e9 (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=a53d920290f15a55737c944f3abf563d8d5d002d commit a53d920290f15a55737c944f3abf563d8d5d002d Merge: d6011a6 f5dbf00 Author: Brad King AuthorDate: Tue Jun 9 09:18:44 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:44 2015 -0400 Merge topic 'revert-mingw-no-find_library-dll' f5dbf00d Windows-GNU: Restore find_library treatment of '.dll' as linkable (#15409) ----------------------------------------------------------------------- Summary of changes: Help/release/3.3.rst | 6 ------ Modules/Platform/Windows-GNU.cmake | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:47 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-119-g8298670 Message-ID: <20150609131847.D0F37B0163@public.kitware.com> 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, master has been updated via 82986700d132a25f4ef8ad2756b767661af7fab8 (commit) via 12436efc1483e8e0e5fd6ce616c0b8ed94af72a3 (commit) from a53d920290f15a55737c944f3abf563d8d5d002d (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=82986700d132a25f4ef8ad2756b767661af7fab8 commit 82986700d132a25f4ef8ad2756b767661af7fab8 Merge: a53d920 12436ef Author: Brad King AuthorDate: Tue Jun 9 09:18:46 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:46 2015 -0400 Merge topic 'ctest-script-mode-no-legacy-cygwin' 12436efc ctest: Disable CMake Cygwin legacy warning in dashboard client script ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestScriptHandler.cxx | 4 ++++ 1 file changed, 4 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:49 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-121-gf7be278 Message-ID: <20150609131849.A30DDB0162@public.kitware.com> 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, master has been updated via f7be278a30d2dee93184de624aac29bbc29cb79d (commit) via 972853b15b6aa874644089bd3cf73197c7b874f8 (commit) from 82986700d132a25f4ef8ad2756b767661af7fab8 (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=f7be278a30d2dee93184de624aac29bbc29cb79d commit f7be278a30d2dee93184de624aac29bbc29cb79d Merge: 8298670 972853b Author: Brad King AuthorDate: Tue Jun 9 09:18:48 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:48 2015 -0400 Merge topic 'doc-drop-incorrect-cmake-developer-advice' 972853b1 Help: Drop incorrect advice from cmake-developer.7 manual ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-developer.7.rst | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:51 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-126-g3e49888 Message-ID: <20150609131851.CC32FB010A@public.kitware.com> 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, master has been updated via 3e49888ff01c61f9d21911ca0b2ac7f482f5f26e (commit) via 3de3544fcd38680652d5bbe0790b78477ffa26f1 (commit) via 8c64c4783dde25d84b1549945b95d192c1b7fd68 (commit) via 25b4483ef8d6f6f074f05cf99e0282abf22d8939 (commit) via e2f349864dea91bec1d4c07428ab94225ff589dd (commit) from f7be278a30d2dee93184de624aac29bbc29cb79d (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=3e49888ff01c61f9d21911ca0b2ac7f482f5f26e commit 3e49888ff01c61f9d21911ca0b2ac7f482f5f26e Merge: f7be278 3de3544 Author: Brad King AuthorDate: Tue Jun 9 09:18:50 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:50 2015 -0400 Merge topic 'doc-find-command-cleanup' 3de3544f Help: Improve documentation formatting of find_* commands 8c64c478 Help: Document CMAKE_FIND_APPBUNDLE and CMAKE_FIND_FRAMEWORK 25b4483e Help: Document CMAKE_SYSTEM_APPBUNDLE_PATH variable e2f34986 Help: Document CMAKE_SYSTEM_FRAMEWORK_PATH variable ----------------------------------------------------------------------- Summary of changes: Help/command/FIND_XXX.txt | 63 ++++++++++++++----------- Help/command/FIND_XXX_MAC.txt | 24 ---------- Help/command/FIND_XXX_ROOT.txt | 16 +++++-- Help/command/find_file.rst | 29 +++++++----- Help/command/find_library.rst | 51 ++++++++++---------- Help/command/find_package.rst | 7 ++- Help/command/find_path.rst | 35 +++++++------- Help/command/find_program.rst | 15 +++--- Help/manual/cmake-variables.7.rst | 4 ++ Help/variable/CMAKE_FIND_APPBUNDLE.rst | 22 +++++++++ Help/variable/CMAKE_FIND_FRAMEWORK.rst | 22 +++++++++ Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst | 7 +++ Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst | 8 ++++ 13 files changed, 184 insertions(+), 119 deletions(-) delete mode 100644 Help/command/FIND_XXX_MAC.txt create mode 100644 Help/variable/CMAKE_FIND_APPBUNDLE.rst create mode 100644 Help/variable/CMAKE_FIND_FRAMEWORK.rst create mode 100644 Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst create mode 100644 Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:53 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:53 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-128-g7f14943 Message-ID: <20150609131853.985DCB015D@public.kitware.com> 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, master has been updated via 7f14943e5c7d508e937d45cb2608b07dd7c1e2b0 (commit) via 7ab0806fef24d4982adbbef9b37f48111d2eced4 (commit) from 3e49888ff01c61f9d21911ca0b2ac7f482f5f26e (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=7f14943e5c7d508e937d45cb2608b07dd7c1e2b0 commit 7f14943e5c7d508e937d45cb2608b07dd7c1e2b0 Merge: 3e49888 7ab0806 Author: Brad King AuthorDate: Tue Jun 9 09:18:52 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:52 2015 -0400 Merge topic 'doc-find-versioned-location' 7ab0806f Help: Document find_* command versioned/unversioned name ordering ----------------------------------------------------------------------- Summary of changes: Help/command/FIND_XXX.txt | 5 +++++ 1 file changed, 5 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:18:55 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:18:55 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-130-g1adcec3 Message-ID: <20150609131855.9F91BB0194@public.kitware.com> 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, master has been updated via 1adcec3983c4c017f4e0d79e5bb7d68742ec58ea (commit) via c3f40f4fd98388a2fd31c707e7225d33a7fc76f6 (commit) from 7f14943e5c7d508e937d45cb2608b07dd7c1e2b0 (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=1adcec3983c4c017f4e0d79e5bb7d68742ec58ea commit 1adcec3983c4c017f4e0d79e5bb7d68742ec58ea Merge: 7f14943 c3f40f4 Author: Brad King AuthorDate: Tue Jun 9 09:18:54 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:18:54 2015 -0400 Merge topic 'doc-formatting' c3f40f4f Help: Improve formatting of command documentation ----------------------------------------------------------------------- Summary of changes: Help/command/add_subdirectory.rst | 14 +-- Help/command/aux_source_directory.rst | 2 +- Help/command/build_name.rst | 5 +- Help/command/cmake_host_system_information.rst | 6 +- Help/command/cmake_minimum_required.rst | 2 +- Help/command/create_test_sourcelist.rst | 18 +-- Help/command/ctest_run_script.rst | 6 +- Help/command/ctest_start.rst | 2 +- Help/command/define_property.rst | 28 ++--- Help/command/else.rst | 2 +- Help/command/elseif.rst | 2 +- Help/command/enable_language.rst | 2 +- Help/command/enable_testing.rst | 8 +- Help/command/endforeach.rst | 4 +- Help/command/endfunction.rst | 2 +- Help/command/endif.rst | 2 +- Help/command/endmacro.rst | 2 +- Help/command/endwhile.rst | 2 +- Help/command/exec_program.rst | 8 +- Help/command/execute_process.rst | 14 +-- Help/command/export.rst | 18 +-- Help/command/export_library_dependencies.rst | 12 +- Help/command/fltk_wrap_ui.rst | 2 +- Help/command/foreach.rst | 6 +- Help/command/get_cmake_property.rst | 8 +- Help/command/get_directory_property.rst | 6 +- Help/command/get_filename_component.rst | 12 +- Help/command/get_source_file_property.rst | 10 +- Help/command/get_target_property.rst | 6 +- Help/command/get_test_property.rst | 8 +- Help/command/include.rst | 18 +-- Help/command/include_external_msproject.rst | 6 +- Help/command/include_regular_expression.rst | 4 +- Help/command/install_files.rst | 18 +-- Help/command/install_programs.rst | 23 ++-- Help/command/install_targets.rst | 12 +- Help/command/link_directories.rst | 8 +- Help/command/list.rst | 48 ++++---- Help/command/load_cache.rst | 4 +- Help/command/load_command.rst | 6 +- Help/command/make_directory.rst | 2 +- Help/command/mark_as_advanced.rst | 8 +- Help/command/math.rst | 2 +- Help/command/message.rst | 2 +- Help/command/option.rst | 6 +- Help/command/qt_wrap_cpp.rst | 2 +- Help/command/qt_wrap_ui.rst | 6 +- Help/command/remove.rst | 8 +- Help/command/remove_definitions.rst | 6 +- Help/command/return.rst | 14 +-- Help/command/separate_arguments.rst | 8 +- Help/command/set_target_properties.rst | 145 ++++++++++++------------ Help/command/string.rst | 66 +++++------ Help/command/subdirs.rst | 12 +- Help/command/unset.rst | 10 +- Help/command/utility_source.rst | 4 +- Help/command/variable_requires.rst | 8 +- Help/command/while.rst | 8 +- Help/command/write_file.rst | 14 +-- 59 files changed, 352 insertions(+), 345 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:19:01 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:19:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-134-gd78fbb6 Message-ID: <20150609131901.971B9B0174@public.kitware.com> 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, master has been updated via d78fbb6ad460dee47f53a0680368c2f536087800 (commit) via 52b9d828ab482f5eaae3313d821d9a4a492f069b (commit) via fe603c7dfb8a3d0dfc892b46f9df0b4c32a892f9 (commit) via 8fc53c3ce89e76a4e5cf1968307c513041e9a7b7 (commit) from 1adcec3983c4c017f4e0d79e5bb7d68742ec58ea (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=d78fbb6ad460dee47f53a0680368c2f536087800 commit d78fbb6ad460dee47f53a0680368c2f536087800 Merge: 1adcec3 52b9d82 Author: Brad King AuthorDate: Tue Jun 9 09:19:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:19:00 2015 -0400 Merge topic 'move-CMP0059-handling' 52b9d828 cmMakefile: Move CMP0059 handling to command code. fe603c7d cmGetDirectoryPropertyCommand: Move variable to the point of use. 8fc53c3c cmGetDirectoryPropertyCommand: Extract StoreResult method. ----------------------------------------------------------------------- Summary of changes: Source/cmGetDirectoryPropertyCommand.cxx | 30 ++++++++++++++++++++++++++---- Source/cmGetDirectoryPropertyCommand.h | 5 +++-- Source/cmGetPropertyCommand.cxx | 16 ++++++++++++++++ Source/cmMakefile.cxx | 21 +++++---------------- Source/cmMakefile.h | 2 ++ 5 files changed, 52 insertions(+), 22 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:19:03 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:19:03 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-136-g223e2ec Message-ID: <20150609131903.609D9B0174@public.kitware.com> 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, master has been updated via 223e2ec28dab4360f573932dfc0991744ddc0918 (commit) via 1594edba9ead291eaf3a9b4e63ba41edc43d4f99 (commit) from d78fbb6ad460dee47f53a0680368c2f536087800 (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=223e2ec28dab4360f573932dfc0991744ddc0918 commit 223e2ec28dab4360f573932dfc0991744ddc0918 Merge: d78fbb6 1594edb Author: Brad King AuthorDate: Tue Jun 9 09:19:02 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:19:02 2015 -0400 Merge topic 'binary-release-osx-qt-4.8-update' 1594edba Utilities/Release: Update to more recent Qt 4.8 on OS X ----------------------------------------------------------------------- Summary of changes: Utilities/Release/dashmacmini5_release.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:19:26 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:19:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-321-g09345b7 Message-ID: <20150609131926.AAA8AB01CC@public.kitware.com> 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 09345b773824c5ae0f4b232218c98f6d9b405335 (commit) via 223e2ec28dab4360f573932dfc0991744ddc0918 (commit) via d78fbb6ad460dee47f53a0680368c2f536087800 (commit) via 1adcec3983c4c017f4e0d79e5bb7d68742ec58ea (commit) via 7f14943e5c7d508e937d45cb2608b07dd7c1e2b0 (commit) via 3e49888ff01c61f9d21911ca0b2ac7f482f5f26e (commit) via f7be278a30d2dee93184de624aac29bbc29cb79d (commit) via 82986700d132a25f4ef8ad2756b767661af7fab8 (commit) via a53d920290f15a55737c944f3abf563d8d5d002d (commit) via d6011a61e94ef181a0aa6044216b6e8d327343e9 (commit) via 5a5a81e550325e1d5fdd0bb86429188e069e192d (commit) via 2848f93d1aa8420fa57351385aefe8042b675540 (commit) from da4fd959e23e6775e31f7911d56f6f862279bb6b (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=09345b773824c5ae0f4b232218c98f6d9b405335 commit 09345b773824c5ae0f4b232218c98f6d9b405335 Merge: da4fd95 223e2ec Author: Brad King AuthorDate: Tue Jun 9 09:19:13 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 09:19:13 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 09:33:47 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 09:33:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-323-g5dc6ebb Message-ID: <20150609133347.08F01B04FC@public.kitware.com> 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 5dc6ebb7cb65e01efe4d8ee9c3b6ed7e5c81e5a0 (commit) via 482a3bf3f0b0d3cc1835666e570d8f65a0342ee7 (commit) from 09345b773824c5ae0f4b232218c98f6d9b405335 (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=5dc6ebb7cb65e01efe4d8ee9c3b6ed7e5c81e5a0 commit 5dc6ebb7cb65e01efe4d8ee9c3b6ed7e5c81e5a0 Merge: 09345b7 482a3bf Author: Brad King AuthorDate: Tue Jun 9 09:33:45 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 09:33:45 2015 -0400 Merge topic 'doc-policy-OLD-deprecated' into next 482a3bf3 Help: Document explicitly that policy OLD behavior is deprecated http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=482a3bf3f0b0d3cc1835666e570d8f65a0342ee7 commit 482a3bf3f0b0d3cc1835666e570d8f65a0342ee7 Author: Brad King AuthorDate: Tue Jun 9 09:29:41 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 09:29:41 2015 -0400 Help: Document explicitly that policy OLD behavior is deprecated The most likely documentation page a project author will read in response to a policy warning is the page for the policy itself. Add to every policy documentation page a note explicitly stating that the OLD behavior is deprecated. Also mention this in the cmake_policy() command documentation that explains how to set a policy to OLD. Suggested-by: Fraser Hutchison diff --git a/Help/command/cmake_policy.rst b/Help/command/cmake_policy.rst index 2bc3287..b51b951 100644 --- a/Help/command/cmake_policy.rst +++ b/Help/command/cmake_policy.rst @@ -53,6 +53,8 @@ policy warning by setting the policy state to ``OLD``. Alternatively one may fix the project to work with the new behavior and set the policy state to ``NEW``. +.. include:: ../policy/DEPRECATED.txt + Checking Policy Settings ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index c5970bb..0a313cd 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -20,11 +20,11 @@ for a policy, also avoiding the warning. Each policy can also be set to either ``NEW`` or ``OLD`` behavior explicitly on the command line with the :variable:`CMAKE_POLICY_DEFAULT_CMP` variable. -Note that policies are not reliable feature toggles. A policy should -almost never be set to ``OLD``, except to silence warnings in an otherwise -frozen or stable codebase, or temporarily as part of a larger migration -path. The ``OLD`` behavior of each policy is undesirable and will be -replaced with an error condition in a future release. +A policy is a deprecation mechanism and not a reliable feature toggle. +A policy should almost never be set to ``OLD``, except to silence warnings +in an otherwise frozen or stable codebase, or temporarily as part of a +larger migration path. The ``OLD`` behavior of each policy is undesirable +and will be replaced with an error condition in a future release. The :command:`cmake_minimum_required` command does more than report an error if a too-old version of CMake is used to build a project. It diff --git a/Help/policy/CMP0000.rst b/Help/policy/CMP0000.rst index 9fbf842..97ea633 100644 --- a/Help/policy/CMP0000.rst +++ b/Help/policy/CMP0000.rst @@ -28,3 +28,5 @@ a warning. An included file may set CMP0000 explicitly to affect how this policy is enforced for the main CMakeLists.txt file. This policy was introduced in CMake version 2.6.0. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0001.rst b/Help/policy/CMP0001.rst index 344f1e2..09ad387 100644 --- a/Help/policy/CMP0001.rst +++ b/Help/policy/CMP0001.rst @@ -17,3 +17,5 @@ below. This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0002.rst b/Help/policy/CMP0002.rst index 2c15bd4..7cc53ef 100644 --- a/Help/policy/CMP0002.rst +++ b/Help/policy/CMP0002.rst @@ -24,3 +24,5 @@ property ALLOW_DUPLICATE_CUSTOM_TARGETS with a Makefiles generator). This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0003.rst b/Help/policy/CMP0003.rst index 27b83f8..16b0451 100644 --- a/Help/policy/CMP0003.rst +++ b/Help/policy/CMP0003.rst @@ -100,3 +100,5 @@ when setting the policy once will probably fix all targets. This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0004.rst b/Help/policy/CMP0004.rst index 80045f5..55da4d2 100644 --- a/Help/policy/CMP0004.rst +++ b/Help/policy/CMP0004.rst @@ -21,3 +21,5 @@ target is created by an add_executable or add_library command. This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0005.rst b/Help/policy/CMP0005.rst index c11a9e6..66d125f 100644 --- a/Help/policy/CMP0005.rst +++ b/Help/policy/CMP0005.rst @@ -22,3 +22,5 @@ limitations of the escaping implementation. This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0006.rst b/Help/policy/CMP0006.rst index 8d1e5bd..d1b9ece 100644 --- a/Help/policy/CMP0006.rst +++ b/Help/policy/CMP0006.rst @@ -20,3 +20,5 @@ without a BUNDLE DESTINATION. This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0007.rst b/Help/policy/CMP0007.rst index f0d8c16..3927645 100644 --- a/Help/policy/CMP0007.rst +++ b/Help/policy/CMP0007.rst @@ -13,3 +13,5 @@ empty elements in a list. This policy was introduced in CMake version 2.6.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0008.rst b/Help/policy/CMP0008.rst index b118ece..f1e2ddd 100644 --- a/Help/policy/CMP0008.rst +++ b/Help/policy/CMP0008.rst @@ -30,3 +30,5 @@ pass it directly to the native build tool unchanged. This policy was introduced in CMake version 2.6.1. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0009.rst b/Help/policy/CMP0009.rst index 481af1a..44baeb4 100644 --- a/Help/policy/CMP0009.rst +++ b/Help/policy/CMP0009.rst @@ -17,3 +17,5 @@ as an additional argument to the FILE command. This policy was introduced in CMake version 2.6.2. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0010.rst b/Help/policy/CMP0010.rst index 9d2eb76..344d704 100644 --- a/Help/policy/CMP0010.rst +++ b/Help/policy/CMP0010.rst @@ -16,3 +16,5 @@ and is treated as always being ``NEW``. This policy was introduced in CMake version 2.6.3. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0011.rst b/Help/policy/CMP0011.rst index 0f41fff..d281e0e 100644 --- a/Help/policy/CMP0011.rst +++ b/Help/policy/CMP0011.rst @@ -20,3 +20,5 @@ cmake_policy PUSH and POP. This policy was introduced in CMake version 2.6.3. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0012.rst b/Help/policy/CMP0012.rst index 7a749bf..85d64f4 100644 --- a/Help/policy/CMP0012.rst +++ b/Help/policy/CMP0012.rst @@ -23,3 +23,5 @@ dereferencing variables with such names. This policy was introduced in CMake version 2.8.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0013.rst b/Help/policy/CMP0013.rst index e99997b..2fabb89 100644 --- a/Help/policy/CMP0013.rst +++ b/Help/policy/CMP0013.rst @@ -17,3 +17,5 @@ with an error. This policy was introduced in CMake version 2.8.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0014.rst b/Help/policy/CMP0014.rst index 37178d1..f1f7b77 100644 --- a/Help/policy/CMP0014.rst +++ b/Help/policy/CMP0014.rst @@ -13,3 +13,5 @@ behavior for this policy is to report an error. This policy was introduced in CMake version 2.8.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0015.rst b/Help/policy/CMP0015.rst index 1b54979..9a48e3d 100644 --- a/Help/policy/CMP0015.rst +++ b/Help/policy/CMP0015.rst @@ -15,3 +15,5 @@ paths by appending the relative path to CMAKE_CURRENT_SOURCE_DIR. This policy was introduced in CMake version 2.8.1. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0016.rst b/Help/policy/CMP0016.rst index 743b1a9..cc898c8 100644 --- a/Help/policy/CMP0016.rst +++ b/Help/policy/CMP0016.rst @@ -11,3 +11,5 @@ in this case. This policy was introduced in CMake version 2.8.3. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0017.rst b/Help/policy/CMP0017.rst index f74e6f0..9f0f038 100644 --- a/Help/policy/CMP0017.rst +++ b/Help/policy/CMP0017.rst @@ -17,3 +17,5 @@ from the CMake modules directory. This policy was introduced in CMake version 2.8.4. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0018.rst b/Help/policy/CMP0018.rst index 0f68267..a3a7a12 100644 --- a/Help/policy/CMP0018.rst +++ b/Help/policy/CMP0018.rst @@ -30,3 +30,5 @@ honor the POSITION_INDEPENDENT_CODE target property. This policy was introduced in CMake version 2.8.9. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0019.rst b/Help/policy/CMP0019.rst index 2b37fa1..2e3557d 100644 --- a/Help/policy/CMP0019.rst +++ b/Help/policy/CMP0019.rst @@ -18,3 +18,5 @@ the values untouched. This policy was introduced in CMake version 2.8.11. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0020.rst b/Help/policy/CMP0020.rst index 6767d08..75ca9de 100644 --- a/Help/policy/CMP0020.rst +++ b/Help/policy/CMP0020.rst @@ -23,3 +23,5 @@ automatically when they link to QtCore IMPORTED target. This policy was introduced in CMake version 2.8.11. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0021.rst b/Help/policy/CMP0021.rst index 3f5bd03..3a792ca 100644 --- a/Help/policy/CMP0021.rst +++ b/Help/policy/CMP0021.rst @@ -16,3 +16,5 @@ relative path. This policy was introduced in CMake version 2.8.12. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0022.rst b/Help/policy/CMP0022.rst index 22c7c4f..579d09a 100644 --- a/Help/policy/CMP0022.rst +++ b/Help/policy/CMP0022.rst @@ -35,3 +35,5 @@ property for in-build targets, and ignore the old properties matching This policy was introduced in CMake version 2.8.12. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0023.rst b/Help/policy/CMP0023.rst index 962b624..76a4900 100644 --- a/Help/policy/CMP0023.rst +++ b/Help/policy/CMP0023.rst @@ -31,3 +31,5 @@ signatures. This policy was introduced in CMake version 2.8.12. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0024.rst b/Help/policy/CMP0024.rst index ee53d5f..272a56c 100644 --- a/Help/policy/CMP0024.rst +++ b/Help/policy/CMP0024.rst @@ -20,3 +20,5 @@ allow including the result of an export() command. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0025.rst b/Help/policy/CMP0025.rst index 8d19edf..62dd509 100644 --- a/Help/policy/CMP0025.rst +++ b/Help/policy/CMP0025.rst @@ -25,3 +25,5 @@ by default when this policy is not set and simply uses OLD behavior. See documentation of the :variable:`CMAKE_POLICY_WARNING_CMP0025 >` variable to control the warning. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0026.rst b/Help/policy/CMP0026.rst index 4889249..3fe1374 100644 --- a/Help/policy/CMP0026.rst +++ b/Help/policy/CMP0026.rst @@ -24,3 +24,5 @@ not to allow reading the LOCATION properties from build-targets. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0027.rst b/Help/policy/CMP0027.rst index bedaffe..28913ce 100644 --- a/Help/policy/CMP0027.rst +++ b/Help/policy/CMP0027.rst @@ -23,3 +23,5 @@ conditionally linked IMPORTED target does not exist. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0028.rst b/Help/policy/CMP0028.rst index 24889ec..be57125 100644 --- a/Help/policy/CMP0028.rst +++ b/Help/policy/CMP0028.rst @@ -21,3 +21,5 @@ double-colons but is not an IMPORTED target or an ALIAS target. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0029.rst b/Help/policy/CMP0029.rst index 8f58a12..aa10b97 100644 --- a/Help/policy/CMP0029.rst +++ b/Help/policy/CMP0029.rst @@ -8,3 +8,5 @@ but was kept in CMake for compatibility for a long time. .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0030.rst b/Help/policy/CMP0030.rst index 9e31b38..81bbb84 100644 --- a/Help/policy/CMP0030.rst +++ b/Help/policy/CMP0030.rst @@ -9,3 +9,5 @@ not used it in years. .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0031.rst b/Help/policy/CMP0031.rst index 6b89558..8c3eef6 100644 --- a/Help/policy/CMP0031.rst +++ b/Help/policy/CMP0031.rst @@ -11,3 +11,5 @@ the CMake process. It has been mostly superseded by the .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0032.rst b/Help/policy/CMP0032.rst index f394a06..5c1fa4b 100644 --- a/Help/policy/CMP0032.rst +++ b/Help/policy/CMP0032.rst @@ -11,3 +11,5 @@ functionality is better achieved through dedicated outside tools. .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0033.rst b/Help/policy/CMP0033.rst index b420065..4a6cc59 100644 --- a/Help/policy/CMP0033.rst +++ b/Help/policy/CMP0033.rst @@ -12,3 +12,5 @@ The functionality has been superseded by the :command:`export` and .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0034.rst b/Help/policy/CMP0034.rst index 2133997..0f3934a 100644 --- a/Help/policy/CMP0034.rst +++ b/Help/policy/CMP0034.rst @@ -9,3 +9,5 @@ generate other files. This approach has long been replaced by .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0035.rst b/Help/policy/CMP0035.rst index 7335b22..58199a4 100644 --- a/Help/policy/CMP0035.rst +++ b/Help/policy/CMP0035.rst @@ -8,3 +8,5 @@ logic. It has long been replaced by the :command:`if` command. .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0036.rst b/Help/policy/CMP0036.rst index 817f156..4bcfc54 100644 --- a/Help/policy/CMP0036.rst +++ b/Help/policy/CMP0036.rst @@ -10,3 +10,5 @@ and :variable:`CMAKE__COMPILER` variables. .. |disallowed_version| replace:: 3.0 .. include:: DISALLOWED_COMMAND.txt + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0037.rst b/Help/policy/CMP0037.rst index 4d485bf..9f8457c 100644 --- a/Help/policy/CMP0037.rst +++ b/Help/policy/CMP0037.rst @@ -24,3 +24,5 @@ if an add_* command is used with an invalid target name. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0038.rst b/Help/policy/CMP0038.rst index df5af6a..a306d90 100644 --- a/Help/policy/CMP0038.rst +++ b/Help/policy/CMP0038.rst @@ -14,3 +14,5 @@ report an error if a target attempts to link to itself. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0039.rst b/Help/policy/CMP0039.rst index 58ccc41..97d78ae 100644 --- a/Help/policy/CMP0039.rst +++ b/Help/policy/CMP0039.rst @@ -15,3 +15,5 @@ utility target. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0040.rst b/Help/policy/CMP0040.rst index 77a3c81..e746c03 100644 --- a/Help/policy/CMP0040.rst +++ b/Help/policy/CMP0040.rst @@ -14,3 +14,5 @@ if the target referenced in :command:`add_custom_command` is unknown. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0041.rst b/Help/policy/CMP0041.rst index 5a47de0..f027d5d 100644 --- a/Help/policy/CMP0041.rst +++ b/Help/policy/CMP0041.rst @@ -23,3 +23,5 @@ relative. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0042.rst b/Help/policy/CMP0042.rst index fce870c..31314b2 100644 --- a/Help/policy/CMP0042.rst +++ b/Help/policy/CMP0042.rst @@ -17,3 +17,5 @@ variables. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0043.rst b/Help/policy/CMP0043.rst index 629e502..9e427c3 100644 --- a/Help/policy/CMP0043.rst +++ b/Help/policy/CMP0043.rst @@ -43,3 +43,5 @@ of the :prop_tgt:`COMPILE_DEFINITIONS_` target property . This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0044.rst b/Help/policy/CMP0044.rst index 4a3e215..02afa9f 100644 --- a/Help/policy/CMP0044.rst +++ b/Help/policy/CMP0044.rst @@ -17,3 +17,5 @@ the ``_COMPILER_ID`` expression. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0045.rst b/Help/policy/CMP0045.rst index 58c422f..c7e1a90 100644 --- a/Help/policy/CMP0045.rst +++ b/Help/policy/CMP0045.rst @@ -15,3 +15,5 @@ non-existent target. This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0046.rst b/Help/policy/CMP0046.rst index 1a3bc65..576d1b1 100644 --- a/Help/policy/CMP0046.rst +++ b/Help/policy/CMP0046.rst @@ -15,3 +15,5 @@ This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0047.rst b/Help/policy/CMP0047.rst index 26ae439..882dd78 100644 --- a/Help/policy/CMP0047.rst +++ b/Help/policy/CMP0047.rst @@ -26,3 +26,5 @@ by default when this policy is not set and simply uses OLD behavior. See documentation of the :variable:`CMAKE_POLICY_WARNING_CMP0047 >` variable to control the warning. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0048.rst b/Help/policy/CMP0048.rst index a54205e..0e7e606 100644 --- a/Help/policy/CMP0048.rst +++ b/Help/policy/CMP0048.rst @@ -20,3 +20,5 @@ This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0049.rst b/Help/policy/CMP0049.rst index 5c8d4a8..a3ce4b1 100644 --- a/Help/policy/CMP0049.rst +++ b/Help/policy/CMP0049.rst @@ -21,3 +21,5 @@ This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0050.rst b/Help/policy/CMP0050.rst index 76ae0aa..39e40b6 100644 --- a/Help/policy/CMP0050.rst +++ b/Help/policy/CMP0050.rst @@ -16,3 +16,5 @@ This policy was introduced in CMake version 3.0. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0051.rst b/Help/policy/CMP0051.rst index 1b56cb0..6b679e5 100644 --- a/Help/policy/CMP0051.rst +++ b/Help/policy/CMP0051.rst @@ -22,3 +22,5 @@ This policy was introduced in CMake version 3.1. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0052.rst b/Help/policy/CMP0052.rst index 48cfc9c..0ea5ace 100644 --- a/Help/policy/CMP0052.rst +++ b/Help/policy/CMP0052.rst @@ -22,3 +22,5 @@ This policy was introduced in CMake version 3.1. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0053.rst b/Help/policy/CMP0053.rst index bb0ff8b..2620a60 100644 --- a/Help/policy/CMP0053.rst +++ b/Help/policy/CMP0053.rst @@ -42,3 +42,5 @@ This policy was introduced in CMake version 3.1. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0054.rst b/Help/policy/CMP0054.rst index 3754fda..1e000a6 100644 --- a/Help/policy/CMP0054.rst +++ b/Help/policy/CMP0054.rst @@ -48,3 +48,5 @@ This policy was introduced in CMake version 3.1. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0055.rst b/Help/policy/CMP0055.rst index fe7ab6f..b3df758 100644 --- a/Help/policy/CMP0055.rst +++ b/Help/policy/CMP0055.rst @@ -15,3 +15,5 @@ This policy was introduced in CMake version 3.2. CMake version |release| warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0056.rst b/Help/policy/CMP0056.rst index 3c75ff4..3ba89d5 100644 --- a/Help/policy/CMP0056.rst +++ b/Help/policy/CMP0056.rst @@ -30,3 +30,5 @@ CMake version |release| does *not* warn by default when this policy is not set and simply uses OLD behavior. See documentation of the :variable:`CMAKE_POLICY_WARNING_CMP0056 >` variable to control the warning. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0057.rst b/Help/policy/CMP0057.rst index 1298a16..83db186 100644 --- a/Help/policy/CMP0057.rst +++ b/Help/policy/CMP0057.rst @@ -12,3 +12,5 @@ This policy was introduced in CMake version 3.3. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0058.rst b/Help/policy/CMP0058.rst index 0f20383..05efd48 100644 --- a/Help/policy/CMP0058.rst +++ b/Help/policy/CMP0058.rst @@ -106,3 +106,5 @@ out-of-source build trees if the policy is not set and then uses the policy to ``OLD`` or ``NEW`` explicitly. The policy setting must be in scope at the end of the top-level ``CMakeLists.txt`` file of the project and has global effect. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0059.rst b/Help/policy/CMP0059.rst index e40f450..5da479a 100644 --- a/Help/policy/CMP0059.rst +++ b/Help/policy/CMP0059.rst @@ -15,3 +15,5 @@ This policy was introduced in CMake version 3.3. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0060.rst b/Help/policy/CMP0060.rst index cc37b1b..8611aff 100644 --- a/Help/policy/CMP0060.rst +++ b/Help/policy/CMP0060.rst @@ -61,3 +61,5 @@ CMake version |release| does *not* warn by default when this policy is not set and simply uses OLD behavior. See documentation of the :variable:`CMAKE_POLICY_WARNING_CMP0060 >` variable to control the warning. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0061.rst b/Help/policy/CMP0061.rst index 069a1ab..cb2ac28 100644 --- a/Help/policy/CMP0061.rst +++ b/Help/policy/CMP0061.rst @@ -22,3 +22,5 @@ add ``-i``. This policy was introduced in CMake version 3.3. Unlike most policies, CMake version |release| does *not* warn when this policy is not set and simply uses OLD behavior. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0062.rst b/Help/policy/CMP0062.rst index e2f5a5a..9047fff 100644 --- a/Help/policy/CMP0062.rst +++ b/Help/policy/CMP0062.rst @@ -25,3 +25,5 @@ This policy was introduced in CMake version 3.3. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/CMP0063.rst b/Help/policy/CMP0063.rst index 298e9c2..d736d06 100644 --- a/Help/policy/CMP0063.rst +++ b/Help/policy/CMP0063.rst @@ -24,3 +24,5 @@ This policy was introduced in CMake version 3.3. CMake version |release| warns when the policy is not set and uses ``OLD`` behavior. Use the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW`` explicitly. + +.. include:: DEPRECATED.txt diff --git a/Help/policy/DEPRECATED.txt b/Help/policy/DEPRECATED.txt new file mode 100644 index 0000000..f66de55 --- /dev/null +++ b/Help/policy/DEPRECATED.txt @@ -0,0 +1,4 @@ +.. note:: + The ``OLD`` behavior of a policy is + :manual:`deprecated by definition ` + and may be removed in a future version of CMake. ----------------------------------------------------------------------- Summary of changes: Help/command/cmake_policy.rst | 2 ++ Help/manual/cmake-policies.7.rst | 10 +++++----- Help/policy/CMP0000.rst | 2 ++ Help/policy/CMP0001.rst | 2 ++ Help/policy/CMP0002.rst | 2 ++ Help/policy/CMP0003.rst | 2 ++ Help/policy/CMP0004.rst | 2 ++ Help/policy/CMP0005.rst | 2 ++ Help/policy/CMP0006.rst | 2 ++ Help/policy/CMP0007.rst | 2 ++ Help/policy/CMP0008.rst | 2 ++ Help/policy/CMP0009.rst | 2 ++ Help/policy/CMP0010.rst | 2 ++ Help/policy/CMP0011.rst | 2 ++ Help/policy/CMP0012.rst | 2 ++ Help/policy/CMP0013.rst | 2 ++ Help/policy/CMP0014.rst | 2 ++ Help/policy/CMP0015.rst | 2 ++ Help/policy/CMP0016.rst | 2 ++ Help/policy/CMP0017.rst | 2 ++ Help/policy/CMP0018.rst | 2 ++ Help/policy/CMP0019.rst | 2 ++ Help/policy/CMP0020.rst | 2 ++ Help/policy/CMP0021.rst | 2 ++ Help/policy/CMP0022.rst | 2 ++ Help/policy/CMP0023.rst | 2 ++ Help/policy/CMP0024.rst | 2 ++ Help/policy/CMP0025.rst | 2 ++ Help/policy/CMP0026.rst | 2 ++ Help/policy/CMP0027.rst | 2 ++ Help/policy/CMP0028.rst | 2 ++ Help/policy/CMP0029.rst | 2 ++ Help/policy/CMP0030.rst | 2 ++ Help/policy/CMP0031.rst | 2 ++ Help/policy/CMP0032.rst | 2 ++ Help/policy/CMP0033.rst | 2 ++ Help/policy/CMP0034.rst | 2 ++ Help/policy/CMP0035.rst | 2 ++ Help/policy/CMP0036.rst | 2 ++ Help/policy/CMP0037.rst | 2 ++ Help/policy/CMP0038.rst | 2 ++ Help/policy/CMP0039.rst | 2 ++ Help/policy/CMP0040.rst | 2 ++ Help/policy/CMP0041.rst | 2 ++ Help/policy/CMP0042.rst | 2 ++ Help/policy/CMP0043.rst | 2 ++ Help/policy/CMP0044.rst | 2 ++ Help/policy/CMP0045.rst | 2 ++ Help/policy/CMP0046.rst | 2 ++ Help/policy/CMP0047.rst | 2 ++ Help/policy/CMP0048.rst | 2 ++ Help/policy/CMP0049.rst | 2 ++ Help/policy/CMP0050.rst | 2 ++ Help/policy/CMP0051.rst | 2 ++ Help/policy/CMP0052.rst | 2 ++ Help/policy/CMP0053.rst | 2 ++ Help/policy/CMP0054.rst | 2 ++ Help/policy/CMP0055.rst | 2 ++ Help/policy/CMP0056.rst | 2 ++ Help/policy/CMP0057.rst | 2 ++ Help/policy/CMP0058.rst | 2 ++ Help/policy/CMP0059.rst | 2 ++ Help/policy/CMP0060.rst | 2 ++ Help/policy/CMP0061.rst | 2 ++ Help/policy/CMP0062.rst | 2 ++ Help/policy/CMP0063.rst | 2 ++ Help/policy/DEPRECATED.txt | 4 ++++ 67 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 Help/policy/DEPRECATED.txt hooks/post-receive -- CMake From zack.galbreath at kitware.com Tue Jun 9 10:10:18 2015 From: zack.galbreath at kitware.com (Zack Galbreath) Date: Tue, 9 Jun 2015 10:10:18 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-337-g0fae1c3 Message-ID: <20150609141018.8C6D4A4C99@public.kitware.com> 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 0fae1c377fbed45b45d8a1b5a624fa6b6cb297af (commit) via 1a6837185a13bd10fefc22e73930c7623a845ad7 (commit) via a9376c9020332fd687d8c3a9e35373fd6d0d8e3b (commit) via b50e351fde72e4054607a0b248361abf59c15364 (commit) via 03c32aad6839bce09cb8398b16e8bb9ae0758390 (commit) via 07a71c9e7f2e11c5b87bd7f4f4eb8b8042fd7aad (commit) via 3c593df0194efff4e9b83a179af8fe1e71f2aef3 (commit) via b315ab28ceabbf3735b54fce6cb0d894d2adc773 (commit) via 599eeb0057688f32a1f4ee26993d85627af6c52b (commit) via 856b08211b9d112f4992e4939782eb8ed0ded094 (commit) via ba5c785567b3af2c3221f5550d5561e4c96f6366 (commit) via 44e1fd0af4defe80e903a18d72e5ff8488b0bc42 (commit) via 646eb9b2a5504e4114b87cfb60cec292a306ddb2 (commit) via 28c028e5fb5d0f542a74df738b4658d112c49b95 (commit) from 5dc6ebb7cb65e01efe4d8ee9c3b6ed7e5c81e5a0 (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=0fae1c377fbed45b45d8a1b5a624fa6b6cb297af commit 0fae1c377fbed45b45d8a1b5a624fa6b6cb297af Merge: 5dc6ebb 1a68371 Author: Zack Galbreath AuthorDate: Tue Jun 9 10:10:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 10:10:16 2015 -0400 Merge topic 'ctest-test-load' into next 1a683718 Use cmSystemTools::RandomSeed() instead of rand() a9376c90 Make --test-load test pass more reliably b50e351f new test of ctest --test-load 03c32aad update documentation for CTEST_TEST_LOAD 07a71c9e Add TEST_LOAD option to ctest_test 3c593df0 rename max-load to test-load b315ab28 create CTEST_MAX_LOAD cache variable 599eeb00 change how RUN_SERIAL is implemented 856b0821 More improvements to max-load check ba5c7855 Improvements to max-load monitoring 44e1fd0a Added debug output to determine why tests hang before completion 646eb9b2 Added document with release notes. 28c028e5 Added "--max-load" option to CTest http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1a6837185a13bd10fefc22e73930c7623a845ad7 commit 1a6837185a13bd10fefc22e73930c7623a845ad7 Author: Zack Galbreath AuthorDate: Tue Jun 9 08:50:44 2015 -0400 Commit: Zack Galbreath CommitDate: Tue Jun 9 08:50:44 2015 -0400 Use cmSystemTools::RandomSeed() instead of rand() diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 5176715..f9357d6 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -431,8 +431,9 @@ void cmCTestMultiProcessHandler::StartNextTests() } else { - // Wait between 1 and 5 seconds before trying again... - cmCTestScriptHandler::SleepInSeconds(rand() % 5 + 1); + // Wait between 1 and 5 seconds before trying again. + cmCTestScriptHandler::SleepInSeconds( + cmSystemTools::RandomSeed() % 5 + 1); } } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a9376c9020332fd687d8c3a9e35373fd6d0d8e3b commit a9376c9020332fd687d8c3a9e35373fd6d0d8e3b Author: Zack Galbreath AuthorDate: Mon Jun 8 16:11:03 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 16:11:03 2015 -0400 Make --test-load test pass more reliably More gracefully handle race condition caused by parallel testing diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt index 418f2e0..7ee3dae 100644 --- a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt @@ -1,7 +1,7 @@ ^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad Start 1: TestLoad1 Start 2: TestLoad2 -1/2 Test #2: TestLoad2 ........................ Passed +[0-9.]+ sec -2/2 Test #1: TestLoad1 ........................ Passed +[0-9.]+ sec +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec + 100% tests passed, 0 tests failed out of 2 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b50e351fde72e4054607a0b248361abf59c15364 commit b50e351fde72e4054607a0b248361abf59c15364 Author: Zack Galbreath AuthorDate: Mon Jun 8 15:52:30 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 15:53:18 2015 -0400 new test of ctest --test-load diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 2ea088b..5176715 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -276,6 +276,7 @@ void cmCTestMultiProcessHandler::StartNextTests() } bool allTestsFailedTestLoadCheck = false; + bool testingThisFeature = false; size_t minProcessorsRequired = this->ParallelLevel; std::string testWithMinProcessors = ""; @@ -297,6 +298,8 @@ void cmCTestMultiProcessHandler::StartNextTests() } cmFileLock testLoadLock; + double systemLoad = 0.0; + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { @@ -322,7 +325,19 @@ void cmCTestMultiProcessHandler::StartNextTests() cmFileLockResult result = testLoadLock.Lock(lockFile, 1); if (result.IsOk()) { - const double systemLoad = info.GetLoadAverage(); + // Check for a fake load average value used in testing. + const char* fake_load_value = + getenv("__FAKE_LOAD_AVERAGE_FOR_CTEST_TESTING"); + if (fake_load_value) + { + testingThisFeature = true; + systemLoad = atoi(fake_load_value); + } + // If it's not set, look up the true load average. + else + { + systemLoad = info.GetLoadAverage(); + } // Don't start more tests than your max load can support. if (numToStart > (this->TestLoad - systemLoad)) @@ -333,7 +348,7 @@ void cmCTestMultiProcessHandler::StartNextTests() testLoadOk = processors <= (this->TestLoad - systemLoad); if (testLoadOk) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "OK to run " << GetName(*test) << ", it requires " << processors << " procs & system load is: " << info.GetLoadAverage() << std::endl); + cmCTestLog(this->CTest, DEBUG, "OK to run " << GetName(*test) << ", it requires " << processors << " procs & system load is: " << systemLoad << std::endl); } } else @@ -383,13 +398,13 @@ void cmCTestMultiProcessHandler::StartNextTests() if (allTestsFailedTestLoadCheck) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING,"); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING, "); time_t currenttime = time(0); struct tm* t = localtime(¤ttime); char current_time[1024]; strftime(current_time, 1000, "%s", t); cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Time: " - << current_time << ","); + << current_time << ", "); if (this->SerialTestRunning) { @@ -400,16 +415,25 @@ void cmCTestMultiProcessHandler::StartNextTests() else { cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " - << info.GetLoadAverage() << ","); + << systemLoad << ", "); cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " - << this->TestLoad << ","); + << this->TestLoad << ", "); cmCTestLog(this->CTest, HANDLER_OUTPUT, "Smallest test " << testWithMinProcessors << " requires " << minProcessorsRequired); cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); } - // Wait between 1 and 60 seconds before trying again... - cmCTestScriptHandler::SleepInSeconds(rand() % 60 + 1); + if (testingThisFeature) + { + // Break out of the infinite loop of waiting for our fake load + // to come down. + this->StopTimePassed = true; + } + else + { + // Wait between 1 and 5 seconds before trying again... + cmCTestScriptHandler::SleepInSeconds(rand() % 5 + 1); + } } } diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index a3ce139..dc13c9f 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -52,3 +52,31 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) endfunction() run_MergeOutput() + + +function(run_TestLoad name load) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " + add_test(TestLoad1 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") + add_test(TestLoad2 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") +") + run_cmake_command(${name} ${CMAKE_CTEST_COMMAND} -j2 --test-load ${load} --test-timeout 5) +endfunction() + +# Tests for the --test-load feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__FAKE_LOAD_AVERAGE_FOR_CTEST_TESTING} 5) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_TestLoad(test-load-fail 2) + +# Verify that new tests are started when the load average falls below +# our threshold. +run_TestLoad(test-load-pass 10) + +unset(ENV{__FAKE_LOAD_AVERAGE_FOR_CTEST_TESTING}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt new file mode 100644 index 0000000..fb36bb1 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt @@ -0,0 +1,2 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad +\*\*\*\*\* WAITING, System Time: [0-9]+, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad2 requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt new file mode 100644 index 0000000..418f2e0 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #2: TestLoad2 ........................ Passed +[0-9.]+ sec +2/2 Test #1: TestLoad1 ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=03c32aad6839bce09cb8398b16e8bb9ae0758390 commit 03c32aad6839bce09cb8398b16e8bb9ae0758390 Author: Zack Galbreath AuthorDate: Mon Jun 8 10:50:25 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 15:53:18 2015 -0400 update documentation for CTEST_TEST_LOAD diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index 8cbb9ec..189093d 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] @@ -41,7 +42,7 @@ The options are: Specify the end of a range of test numbers. ``STRIDE `` - Specify the stride by which to step acorss a range of test numbers. + Specify the stride by which to step across a range of test numbers. ``EXCLUDE `` Specify a regular expression matching test names to exclude. @@ -61,6 +62,10 @@ The options are: Specify a positive number representing the number of tests to be run in parallel. +``TEST_LOAD `` + Specify a CPU load threshold that CTest should attempt to + not cross. See :variable:`CTEST_TEST_LOAD` for more details. + ``SCHEDULE_RANDOM `` Launch tests in a random order. This may be useful for detecting implicit test dependencies. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index bd02f8b..6ab7f3d 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -152,6 +152,7 @@ Variables that Change Behavior /variable/CMAKE_SYSTEM_LIBRARY_PATH /variable/CMAKE_SYSTEM_PREFIX_PATH /variable/CMAKE_SYSTEM_PROGRAM_PATH + /variable/CMAKE_TEST_LOAD /variable/CMAKE_USER_MAKE_RULES_OVERRIDE /variable/CMAKE_WARN_DEPRECATED /variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION @@ -381,6 +382,7 @@ Variables for CTest /variable/CTEST_SVN_COMMAND /variable/CTEST_SVN_OPTIONS /variable/CTEST_SVN_UPDATE_OPTIONS + /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index c76bf95..6dd7330 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -67,10 +67,8 @@ Options environment variable ``CTEST_PARALLEL_LEVEL``. ``--test-load `` - Limit machine load during parallel testing. - - This option tells ctest not to start new tests if doing so would be - likely to raise the machine load above the given level. + Limit CPU load during parallel testing. + See :variable:`CTEST_TEST_LOAD` for more details. ``-Q,--quiet`` Make ctest quiet. diff --git a/Help/release/dev/ctest-test-load-option.rst b/Help/release/dev/ctest-test-load-option.rst index ec31788..25efc26 100644 --- a/Help/release/dev/ctest-test-load-option.rst +++ b/Help/release/dev/ctest-test-load-option.rst @@ -2,5 +2,5 @@ ctest-test-load-option ---------------------- * It is now possible to set the 'test-load' option in CTest. - If set, then CTest will not run any tests that would be projected - to increase the machine load above this level. + If set, then CTest will not start any new tests that would be + projected to increase the CPU load above this level. diff --git a/Help/variable/CMAKE_TEST_LOAD.rst b/Help/variable/CMAKE_TEST_LOAD.rst new file mode 100644 index 0000000..7baf6dd --- /dev/null +++ b/Help/variable/CMAKE_TEST_LOAD.rst @@ -0,0 +1,9 @@ +CMAKE_TEST_LOAD +------------------ + +CMake variable to specify the CTest ``TestLoad`` setting. +See :variable:`CTEST_TEST_LOAD` for more details. + +Note that this variable is not honored during script mode. +If you intend to drive your tests with ``ctest -S``, please set +:variable:`CTEST_TEST_LOAD` in your dashboard script instead. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst new file mode 100644 index 0000000..6d7aea6 --- /dev/null +++ b/Help/variable/CTEST_TEST_LOAD.rst @@ -0,0 +1,24 @@ +CTEST_TEST_LOAD +------------------ + +Specify the ``TestLoad`` setting +in a :manual:`ctest(1)` dashboard client script. + +This creates a CPU load threshold that CTest will attempt to +not cross. CTest will not start a new test if doing so +would be likely to raise the CPU load above this threshold. +Please note that this variable is only honored during parallel testing +(``ctest -j`` or similar). + +Here are the various ways that you can set this threshold: + +* The ``TEST_LOAD`` option to :command:`ctest_test`. +* :variable:`CTEST_TEST_LOAD` in a dashboard script. +* Passing the ``--ctest-load`` command-line argument to :manual:`ctest(1)`. +* Setting the :variable:`CMAKE_TEST_LOAD` variable in your CMake project. + +These are listed here in descending priority order, ie +``ctest_test(TEST_LOAD ...)`` will override any of the other +methods of setting this threshold. Also note that +:variable:`CMAKE_TEST_LOAD` is not honored when running ctest +in script (``-S``) mode. diff --git a/Source/ctest.cxx b/Source/ctest.cxx index e784759..afcbd61 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -98,6 +98,7 @@ static const char * cmDocumentationOptions[][2] = {"--test-command", "The test to run with the --build-and-test option."}, {"--test-timeout", "The time limit in seconds, internal use only."}, + {"--test-load", "CPU load threshold for starting new parallel tests."}, {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, {"--ctest-config", "The configuration file used to initialize CTest state " "when submitting dashboards."}, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=07a71c9e7f2e11c5b87bd7f4f4eb8b8042fd7aad commit 07a71c9e7f2e11c5b87bd7f4f4eb8b8042fd7aad Author: Zack Galbreath AuthorDate: Thu Jun 4 13:38:37 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 15:53:13 2015 -0400 Add TEST_LOAD option to ctest_test This allows us to specify the value for TEST_LOAD within a call to ctest_test() diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index a7dd658..2f8016f 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -26,6 +26,7 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_SCHEDULE_RANDOM] = "SCHEDULE_RANDOM"; this->Arguments[ctt_STOP_TIME] = "STOP_TIME"; + this->Arguments[ctt_TEST_LOAD] = "TEST_LOAD"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -114,6 +115,14 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { this->CTest->SetStopTime(this->Values[ctt_STOP_TIME]); } + if(this->Values[ctt_TEST_LOAD]) + { + int testLoad = atoi(this->Values[ctt_TEST_LOAD]); + if (testLoad > 0) + { + this->CTest->SetTestLoad(testLoad); + } + } handler->SetQuiet(this->Quiet); return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index a1e5f36..0dfca97 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -60,6 +60,7 @@ protected: ctt_PARALLEL_LEVEL, ctt_SCHEDULE_RANDOM, ctt_STOP_TIME, + ctt_TEST_LOAD, ctt_LAST }; }; diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e66e069..17dfafc 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -826,7 +826,10 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); - this->SetTestLoad(atoi(this->GetCTestConfiguration("TestLoad").c_str())); + if ( !this->GetCTestConfiguration("TestLoad").empty() ) + { + this->SetTestLoad(atoi(this->GetCTestConfiguration("TestLoad").c_str())); + } if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3c593df0194efff4e9b83a179af8fe1e71f2aef3 commit 3c593df0194efff4e9b83a179af8fe1e71f2aef3 Author: Zack Galbreath AuthorDate: Thu Jun 4 13:15:14 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 10:59:49 2015 -0400 rename max-load to test-load diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index 4589f32..c76bf95 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,11 +66,11 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. -``--max-load `` - Set maximum allowed machine load. +``--test-load `` + Limit machine load during parallel testing. - This option tells ctest to only start tests that will not increase - the machine load above the given level. + This option tells ctest not to start new tests if doing so would be + likely to raise the machine load above the given level. ``-Q,--quiet`` Make ctest quiet. diff --git a/Help/release/dev/ctest-max-load-option.rst b/Help/release/dev/ctest-test-load-option.rst similarity index 52% rename from Help/release/dev/ctest-max-load-option.rst rename to Help/release/dev/ctest-test-load-option.rst index 037c61f..ec31788 100644 --- a/Help/release/dev/ctest-max-load-option.rst +++ b/Help/release/dev/ctest-test-load-option.rst @@ -1,6 +1,6 @@ -ctest-max-load-option --------------- +ctest-test-load-option +---------------------- -* It is now possible to set the 'max-load' option in CTest. +* It is now possible to set the 'test-load' option in CTest. If set, then CTest will not run any tests that would be projected to increase the machine load above this level. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 96c3d4f..2ea088b 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -44,7 +44,7 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; - this->MaxLoad = 0; + this->TestLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; @@ -89,9 +89,9 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } -void cmCTestMultiProcessHandler::SetMaxLoad(size_t max) +void cmCTestMultiProcessHandler::SetTestLoad(size_t load) { - this->MaxLoad = max < 1 ? 0 : max; + this->TestLoad = load < 1 ? 0 : load; } //--------------------------------------------------------- @@ -280,8 +280,8 @@ void cmCTestMultiProcessHandler::StartNextTests() std::string testWithMinProcessors = ""; cmsys::SystemInformation info; - const std::string lockFile = "/tmp/.cmake_maxload.lock"; // TODO: Filename - if (this->MaxLoad > 0) + const std::string lockFile = "/tmp/.cmake_testload.lock"; // TODO: Filename + if (this->TestLoad > 0) { allTestsFailedTestLoadCheck = true; @@ -295,7 +295,7 @@ void cmCTestMultiProcessHandler::StartNextTests() fclose(file); } } - cmFileLock maxLoadLock; + cmFileLock testLoadLock; TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) @@ -303,7 +303,7 @@ void cmCTestMultiProcessHandler::StartNextTests() // Take a nap if we're currently performing a RUN_SERIAL test. if (this->SerialTestRunning) { - allTestsFailedMaxLoadCheck = true; + allTestsFailedTestLoadCheck = true; break; } // We can only start a RUN_SERIAL test if no other tests are also running. @@ -313,44 +313,44 @@ void cmCTestMultiProcessHandler::StartNextTests() } size_t processors = GetProcessorsUsed(*test); - bool maxLoadOk; - if (this->MaxLoad > 0) + bool testLoadOk; + if (this->TestLoad > 0) { // First, try to get file lock.. - if (!maxLoadLock.IsLocked(lockFile)) + if (!testLoadLock.IsLocked(lockFile)) { - cmFileLockResult result = maxLoadLock.Lock(lockFile, 1); + cmFileLockResult result = testLoadLock.Lock(lockFile, 1); if (result.IsOk()) { const double systemLoad = info.GetLoadAverage(); // Don't start more tests than your max load can support. - if (numToStart > (this->MaxLoad - systemLoad)) + if (numToStart > (this->TestLoad - systemLoad)) { - numToStart = this->MaxLoad - systemLoad; + numToStart = this->TestLoad - systemLoad; } - maxLoadOk = processors <= (this->MaxLoad - systemLoad); - if (maxLoadOk) + testLoadOk = processors <= (this->TestLoad - systemLoad); + if (testLoadOk) { cmCTestLog(this->CTest, HANDLER_OUTPUT, "OK to run " << GetName(*test) << ", it requires " << processors << " procs & system load is: " << info.GetLoadAverage() << std::endl); } } else { - maxLoadOk = false; + testLoadOk = false; } } else { - maxLoadOk = false; + testLoadOk = false; } - allTestsFailedMaxLoadCheck &= !maxLoadOk; + allTestsFailedTestLoadCheck &= !testLoadOk; } else { - maxLoadOk = true; + testLoadOk = true; } if (processors <= minProcessorsRequired) @@ -359,9 +359,9 @@ void cmCTestMultiProcessHandler::StartNextTests() testWithMinProcessors = GetName(*test); } - if(maxLoadOk && processors <= numToStart && this->StartTest(*test)) + if(testLoadOk && processors <= numToStart && this->StartTest(*test)) { - maxLoadLock.Release(); + testLoadLock.Release(); if(this->StopTimePassed) { @@ -372,16 +372,16 @@ void cmCTestMultiProcessHandler::StartNextTests() } else if(numToStart == 0) { - maxLoadLock.Release(); + testLoadLock.Release(); return; } else { - maxLoadLock.Release(); + testLoadLock.Release(); } } // for - if (allTestsFailedMaxLoadCheck) + if (allTestsFailedTestLoadCheck) { cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING,"); time_t currenttime = time(0); @@ -402,7 +402,7 @@ void cmCTestMultiProcessHandler::StartNextTests() cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " << info.GetLoadAverage() << ","); cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " - << this->MaxLoad << ","); + << this->TestLoad << ","); cmCTestLog(this->CTest, HANDLER_OUTPUT, "Smallest test " << testWithMinProcessors << " requires " << minProcessorsRequired); cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 461c728..1ca7e7c 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,7 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); - void SetMaxLoad(size_t max); + void SetTestLoad(size_t max); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -118,7 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once - size_t MaxLoad; + size_t TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index f0e1c99..a7dd658 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -50,13 +50,13 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() } this->CTest->SetTimeOut(timeout); - if(const char* ctestMaxLoad = - this->Makefile->GetDefinition("CTEST_MAX_LOAD")) + if(const char* ctestTestLoad = + this->Makefile->GetDefinition("CTEST_TEST_LOAD")) { - int maxLoad = atoi(ctestMaxLoad); - if (maxLoad > 0) + int testLoad = atoi(ctestTestLoad); + if (testLoad > 0) { - this->CTest->SetMaxLoad(maxLoad); + this->CTest->SetTestLoad(testLoad); } } diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 3d6b746..3f3c650 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1060,7 +1060,7 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, new cmCTestBatchTestHandler : new cmCTestMultiProcessHandler; parallel->SetCTest(this->CTest); parallel->SetParallelLevel(this->CTest->GetParallelLevel()); - parallel->SetMaxLoad(this->CTest->GetMaxLoad()); + parallel->SetTestLoad(this->CTest->GetTestLoad()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 73f282e..e66e069 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,7 +294,7 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; - this->MaxLoad = 0; + this->TestLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -394,9 +394,9 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } -void cmCTest::SetMaxLoad(int max) +void cmCTest::SetTestLoad(int max) { - this->MaxLoad = max < 1 ? 0 : max; + this->TestLoad = max < 1 ? 0 : max; } //---------------------------------------------------------------------------- @@ -826,7 +826,7 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); - this->SetMaxLoad(atoi(this->GetCTestConfiguration("MaxLoad").c_str())); + this->SetTestLoad(atoi(this->GetCTestConfiguration("TestLoad").c_str())); if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( @@ -2058,11 +2058,11 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } - if(this->CheckArgument(arg, "--max-load") && i < args.size() - 1) + if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) { i++; int max = atoi(args[i].c_str()); - this->SetMaxLoad(max); + this->SetTestLoad(max); } if(this->CheckArgument(arg, "--no-compress-output")) diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 4fbfbff..c47c786 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,8 +161,8 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); - int GetMaxLoad() { return this->MaxLoad; } - void SetMaxLoad(int); + int GetTestLoad() { return this->TestLoad; } + void SetTestLoad(int); /** * Check if CTest file exists @@ -502,7 +502,7 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; - int MaxLoad; + int TestLoad; int CompatibilityMode; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b315ab28ceabbf3735b54fce6cb0d894d2adc773 commit b315ab28ceabbf3735b54fce6cb0d894d2adc773 Author: Zack Galbreath AuthorDate: Mon Jun 1 10:21:14 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 10:58:55 2015 -0400 create CTEST_MAX_LOAD cache variable This allows users to set a max load for CTest at configure time or within a CTest driver script. diff --git a/Modules/CTest.cmake b/Modules/CTest.cmake index 8278c5c..0b34fcd 100644 --- a/Modules/CTest.cmake +++ b/Modules/CTest.cmake @@ -173,6 +173,9 @@ if(BUILD_TESTING) set(DART_TESTING_TIMEOUT 1500 CACHE STRING "Maximum time allowed before CTest will kill the test.") + set(CTEST_MAX_LOAD 0 CACHE STRING + "Maximum system load that CTest should not exceed during parallel testing. Specify 0 for no maximum.") + set(CTEST_SUBMIT_RETRY_DELAY 5 CACHE STRING "How long to wait between timed-out CTest submissions.") set(CTEST_SUBMIT_RETRY_COUNT 3 CACHE STRING diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 37a0a40..d8ec84a 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -95,6 +95,10 @@ SlurmRunCommand: @SLURM_SRUN_COMMAND@ # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: @CMAKE_TEST_LOAD@ + UseLaunchers: @CTEST_USE_LAUNCHERS@ CurlOptions: @CTEST_CURL_OPTIONS@ # warning, if you add new options here that have to do with submit, diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 8b357ac..f0e1c99 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -49,6 +49,17 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() } } this->CTest->SetTimeOut(timeout); + + if(const char* ctestMaxLoad = + this->Makefile->GetDefinition("CTEST_MAX_LOAD")) + { + int maxLoad = atoi(ctestMaxLoad); + if (maxLoad > 0) + { + this->CTest->SetMaxLoad(maxLoad); + } + } + cmCTestGenericHandler* handler = this->InitializeActualHandler(); if ( this->Values[ctt_START] || this->Values[ctt_END] || this->Values[ctt_STRIDE] ) diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index fc36b62..73f282e 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -826,6 +826,7 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); + this->SetMaxLoad(atoi(this->GetCTestConfiguration("MaxLoad").c_str())); if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=599eeb0057688f32a1f4ee26993d85627af6c52b commit 599eeb0057688f32a1f4ee26993d85627af6c52b Author: Zack Galbreath AuthorDate: Mon Jun 1 09:42:44 2015 -0400 Commit: Zack Galbreath CommitDate: Mon Jun 8 10:58:20 2015 -0400 change how RUN_SERIAL is implemented The original implementation of the RUN_SERIAL test property worked by having such a test consume all available processors. This strategy causes unnecessary timeouts and delays when used in conjunction with the new --max-load feature. So instead of artificially inflating the number of processors that a RUN_SERIAL test requires, we now use a boolean ivar to ensure that such a test is not run in parallel with any other tests. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index bfcd74d..96c3d4f 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -49,6 +49,7 @@ cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() this->RunningCount = 0; this->StopTimePassed = false; this->HasCycles = false; + this->SerialTestRunning = false; } cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() @@ -182,6 +183,11 @@ void cmCTestMultiProcessHandler::LockResources(int index) this->LockedResources.insert( this->Properties[index]->LockedResources.begin(), this->Properties[index]->LockedResources.end()); + + if (this->Properties[index]->RunSerial) + { + this->SerialTestRunning = true; + } } //--------------------------------------------------------- @@ -208,11 +214,9 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) { size_t processors = static_cast(this->Properties[test]->Processors); - //If this is set to run serially, it must run alone. - //Also, if processors setting is set higher than the -j + //If processors setting is set higher than the -j //setting, we default to using all of the process slots. - if(this->Properties[test]->RunSerial - || processors > this->ParallelLevel) + if (processors > this->ParallelLevel) { processors = this->ParallelLevel; } @@ -264,7 +268,14 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } - bool allTestsFailedMaxLoadCheck = true; + // Don't start any new tests if one with the RUN_SERIAL property + // is already running. + if (this->SerialTestRunning) + { + return; + } + + bool allTestsFailedTestLoadCheck = false; size_t minProcessorsRequired = this->ParallelLevel; std::string testWithMinProcessors = ""; @@ -272,6 +283,8 @@ void cmCTestMultiProcessHandler::StartNextTests() const std::string lockFile = "/tmp/.cmake_maxload.lock"; // TODO: Filename if (this->MaxLoad > 0) { + allTestsFailedTestLoadCheck = true; + if (!cmSystemTools::FileExists(lockFile)) { FILE *file = cmsys::SystemTools::Fopen(lockFile, "w"); @@ -287,6 +300,18 @@ void cmCTestMultiProcessHandler::StartNextTests() TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { + // Take a nap if we're currently performing a RUN_SERIAL test. + if (this->SerialTestRunning) + { + allTestsFailedMaxLoadCheck = true; + break; + } + // We can only start a RUN_SERIAL test if no other tests are also running. + if (this->Properties[*test]->RunSerial && this->RunningCount > 0) + { + continue; + } + size_t processors = GetProcessorsUsed(*test); bool maxLoadOk; if (this->MaxLoad > 0) @@ -298,7 +323,18 @@ void cmCTestMultiProcessHandler::StartNextTests() if (result.IsOk()) { const double systemLoad = info.GetLoadAverage(); + + // Don't start more tests than your max load can support. + if (numToStart > (this->MaxLoad - systemLoad)) + { + numToStart = this->MaxLoad - systemLoad; + } + maxLoadOk = processors <= (this->MaxLoad - systemLoad); + if (maxLoadOk) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "OK to run " << GetName(*test) << ", it requires " << processors << " procs & system load is: " << info.GetLoadAverage() << std::endl); + } } else { @@ -354,13 +390,23 @@ void cmCTestMultiProcessHandler::StartNextTests() strftime(current_time, 1000, "%s", t); cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Time: " << current_time << ","); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " - << info.GetLoadAverage() << ","); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " - << this->MaxLoad << ","); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Smallest test " - << testWithMinProcessors << " requries " << minProcessorsRequired); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + + if (this->SerialTestRunning) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "Waiting for RUN_SERIAL test to finish." << std::endl); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " + << info.GetLoadAverage() << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " + << this->MaxLoad << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Smallest test " + << testWithMinProcessors << " requires " << minProcessorsRequired); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + } // Wait between 1 and 60 seconds before trying again... cmCTestScriptHandler::SleepInSeconds(rand() % 60 + 1); @@ -418,6 +464,11 @@ bool cmCTestMultiProcessHandler::CheckOutput() this->WriteCheckpoint(test); this->UnlockResources(test); this->RunningCount -= GetProcessorsUsed(test); + if (this->Properties[test]->RunSerial) + { + this->SerialTestRunning = false; + } + delete p; } return true; diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index e60aef0..461c728 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -124,6 +124,7 @@ protected: cmCTest* CTest; bool HasCycles; bool Quiet; + bool SerialTestRunning; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=856b08211b9d112f4992e4939782eb8ed0ded094 commit 856b08211b9d112f4992e4939782eb8ed0ded094 Author: Betsy McPhail AuthorDate: Wed Apr 1 13:05:55 2015 -0400 Commit: Zack Galbreath CommitDate: Fri Jun 5 16:15:32 2015 -0400 More improvements to max-load check * Get the system load after the lock. * If fail to start any tests, wait a variable amount of time (1 - 60 seconds). diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index d5a135e..bfcd74d 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -288,8 +288,6 @@ void cmCTestMultiProcessHandler::StartNextTests() for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { size_t processors = GetProcessorsUsed(*test); - const double systemLoad = info.GetLoadAverage(); - bool maxLoadOk; if (this->MaxLoad > 0) { @@ -299,6 +297,7 @@ void cmCTestMultiProcessHandler::StartNextTests() cmFileLockResult result = maxLoadLock.Lock(lockFile, 1); if (result.IsOk()) { + const double systemLoad = info.GetLoadAverage(); maxLoadOk = processors <= (this->MaxLoad - systemLoad); } else @@ -363,8 +362,8 @@ void cmCTestMultiProcessHandler::StartNextTests() << testWithMinProcessors << " requries " << minProcessorsRequired); cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); - // Wait before trying again... - cmCTestScriptHandler::SleepInSeconds(1); + // Wait between 1 and 60 seconds before trying again... + cmCTestScriptHandler::SleepInSeconds(rand() % 60 + 1); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ba5c785567b3af2c3221f5550d5561e4c96f6366 commit ba5c785567b3af2c3221f5550d5561e4c96f6366 Author: Betsy McPhail AuthorDate: Tue Mar 24 17:32:42 2015 -0400 Commit: Zack Galbreath CommitDate: Fri Jun 5 16:15:32 2015 -0400 Improvements to max-load monitoring Each process is required to hold a common file lock before checking the system load. diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index c91321b..4589f32 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,6 +66,12 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. +``--max-load `` + Set maximum allowed machine load. + + This option tells ctest to only start tests that will not increase + the machine load above the given level. + ``-Q,--quiet`` Make ctest quiet. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index fcfa6fa..d5a135e 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -15,6 +15,8 @@ #include "cmCTest.h" #include "cmCTestScriptHandler.h" #include "cmSystemTools.h" +#include "cmFileLock.h" +#include "cmFileLockResult.h" #include #include #include @@ -267,16 +269,55 @@ void cmCTestMultiProcessHandler::StartNextTests() std::string testWithMinProcessors = ""; cmsys::SystemInformation info; + const std::string lockFile = "/tmp/.cmake_maxload.lock"; // TODO: Filename + if (this->MaxLoad > 0) + { + if (!cmSystemTools::FileExists(lockFile)) + { + FILE *file = cmsys::SystemTools::Fopen(lockFile, "w"); + if (!file) + { + // TODO: ? + } + fclose(file); + } + } + cmFileLock maxLoadLock; TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { size_t processors = GetProcessorsUsed(*test); const double systemLoad = info.GetLoadAverage(); - const bool maxLoadOk = (this->MaxLoad > 0) ? - processors <= (this->MaxLoad - systemLoad) : true; - allTestsFailedMaxLoadCheck &= !maxLoadOk; + bool maxLoadOk; + if (this->MaxLoad > 0) + { + // First, try to get file lock.. + if (!maxLoadLock.IsLocked(lockFile)) + { + cmFileLockResult result = maxLoadLock.Lock(lockFile, 1); + if (result.IsOk()) + { + maxLoadOk = processors <= (this->MaxLoad - systemLoad); + } + else + { + maxLoadOk = false; + } + } + else + { + maxLoadOk = false; + } + + allTestsFailedMaxLoadCheck &= !maxLoadOk; + } + else + { + maxLoadOk = true; + } + if (processors <= minProcessorsRequired) { minProcessorsRequired = processors; @@ -285,34 +326,25 @@ void cmCTestMultiProcessHandler::StartNextTests() if(maxLoadOk && processors <= numToStart && this->StartTest(*test)) { + maxLoadLock.Release(); + if(this->StopTimePassed) { return; } - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** STARTED TEST : " - << GetName(*test) << ","); - time_t currenttime = time(0); - struct tm* t = localtime(¤ttime); - char current_time[1024]; - strftime(current_time, 1000, "%s", t); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Time: " - << current_time << ","); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " - << systemLoad << ","); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " - << this->MaxLoad << ","); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Test Processors: " - << processors); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); - numToStart -= processors; } else if(numToStart == 0) { + maxLoadLock.Release(); return; } - } + else + { + maxLoadLock.Release(); + } + } // for if (allTestsFailedMaxLoadCheck) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44e1fd0af4defe80e903a18d72e5ff8488b0bc42 commit 44e1fd0af4defe80e903a18d72e5ff8488b0bc42 Author: Betsy McPhail AuthorDate: Thu Feb 26 09:21:44 2015 -0500 Commit: Zack Galbreath CommitDate: Fri Jun 5 16:15:31 2015 -0400 Added debug output to determine why tests hang before completion Also, moved system load functions from cmSystemTools to kwsys/SystemInformation. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 7a401cb..fcfa6fa 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -20,6 +20,7 @@ #include #include #include +#include class TestComparator { @@ -265,13 +266,15 @@ void cmCTestMultiProcessHandler::StartNextTests() size_t minProcessorsRequired = this->ParallelLevel; std::string testWithMinProcessors = ""; + cmsys::SystemInformation info; + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { size_t processors = GetProcessorsUsed(*test); - + const double systemLoad = info.GetLoadAverage(); const bool maxLoadOk = (this->MaxLoad > 0) ? - processors <= (this->MaxLoad - cmSystemTools::GetLoadAverage()) : true; + processors <= (this->MaxLoad - systemLoad) : true; allTestsFailedMaxLoadCheck &= !maxLoadOk; if (processors <= minProcessorsRequired) @@ -286,6 +289,23 @@ void cmCTestMultiProcessHandler::StartNextTests() { return; } + + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** STARTED TEST : " + << GetName(*test) << ","); + time_t currenttime = time(0); + struct tm* t = localtime(¤ttime); + char current_time[1024]; + strftime(current_time, 1000, "%s", t); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Time: " + << current_time << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " + << systemLoad << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " + << this->MaxLoad << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Test Processors: " + << processors); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + numToStart -= processors; } else if(numToStart == 0) @@ -296,15 +316,20 @@ void cmCTestMultiProcessHandler::StartNextTests() if (allTestsFailedMaxLoadCheck) { - cmCTestLog(this->CTest, DEBUG, "Time: " << this->CTest->CurrentTime() - << std::endl); - cmCTestLog(this->CTest, DEBUG, "Current Load: " - << cmSystemTools::GetLoadAverage() << std::endl); - cmCTestLog(this->CTest, DEBUG, "Max Load: " << this->MaxLoad << std::endl); - cmCTestLog(this->CTest, DEBUG, " Smallest test " << testWithMinProcessors - << " requries " << minProcessorsRequired - << " cores/processes and can't be run without violating the max load." - << std::endl); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING,"); + time_t currenttime = time(0); + struct tm* t = localtime(¤ttime); + char current_time[1024]; + strftime(current_time, 1000, "%s", t); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Time: " + << current_time << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " + << info.GetLoadAverage() << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " + << this->MaxLoad << ","); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Smallest test " + << testWithMinProcessors << " requries " << minProcessorsRequired); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); // Wait before trying again... cmCTestScriptHandler::SleepInSeconds(1); diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 16382da..e2adabe 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -2955,107 +2955,3 @@ bool cmSystemTools::StringToLong(const char* str, long* value) *value = strtol(str, &endp, 10); return (*endp == '\0') && (endp != str) && (errno == 0); } - -//---------------------------------------------------------------------------- -namespace{ -int get_processor_count() -{ -#ifdef _WIN32 - SYSTEM_INFO info; - GetSystemInfo(&info); - return info.dwNumberOfProcessors; -#else - return sysconf(_SC_NPROCESSORS_ONLN); -#endif -} - -#if defined(_WIN32) || defined(__CYGWIN__) -double calculate_processor_load(uint64_t idleTicks, uint64_t totalTicks) -{ - static uint64_t previousIdleTicks = 0; - static uint64_t previousTotalTicks = 0; - static double previousLoad = -0.0; - - uint64_t idleTicksSinceLastTime = idleTicks - previousIdleTicks; - uint64_t totalTicksSinceLastTime = totalTicks - previousTotalTicks; - - bool firstCall = (previousTotalTicks == 0); - bool ticksNotUpdatedSinceLastCall = (totalTicksSinceLastTime == 0); - - double load; - if (firstCall || ticksNotUpdatedSinceLastCall) - { - load = previousLoad; - } - else - { - // Calculate load. - double idleToTotalRatio = - ((double)idleTicksSinceLastTime) / totalTicksSinceLastTime; - double loadSinceLastCall = 1.0 - idleToTotalRatio; - - // Filter/smooth result when possible. - if (previousLoad > 0) - { - load = 0.9 * previousLoad + 0.1 * loadSinceLastCall; - } - else - { - load = loadSinceLastCall; - } - } - - previousLoad = load; - previousTotalTicks = totalTicks; - previousIdleTicks = idleTicks; - - return load; -} - -uint64_t file_time_to_tick_count(const FILETIME & ft) -{ - uint64_t high = (((uint64_t)(ft.dwHighDateTime)) << 32); - uint64_t low = ft.dwLowDateTime; - return (high | low); -} -#endif - -} // namespace - -#if defined(_WIN32) || defined(__CYGWIN__) -double cmSystemTools::GetLoadAverage() -{ - FILETIME idleTime, kernelTime, userTime; - BOOL getSystemTimeSucceeded = - GetSystemTimes(&idleTime, &kernelTime, &userTime); - - double posixCompatibleLoad; - if (getSystemTimeSucceeded) - { - uint64_t idleTicks = file_time_to_tick_count(idleTime); - - // kernelTime from GetSystemTimes already includes idleTime. - uint64_t totalTicks = file_time_to_tick_count(kernelTime) + - file_time_to_tick_count(userTime); - - double processorLoad = calculate_processor_load(idleTicks, totalTicks); - posixCompatibleLoad = processorLoad * get_processor_count(); - } - else - { - posixCompatibleLoad = -0.0; - } - return posixCompatibleLoad; -} -#else -double cmSystemTools::GetLoadAverage() -{ - double loadavg[3] = { 0.0f, 0.0f, 0.0f }; - if (getloadavg(loadavg, 3) < 0) - { - // Return error here instead? - return -0.0f; - } - return loadavg[0]; -} -#endif diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 30ec449..6feb6c5 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -470,10 +470,6 @@ public: /** Convert string to long. Expected that the whole string is an integer */ static bool StringToLong(const char* str, long* value); - /** Return the load average of the machine. A negative value is returned on - error. */ - static double GetLoadAverage(); - #ifdef _WIN32 struct WindowsFileRetry { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=646eb9b2a5504e4114b87cfb60cec292a306ddb2 commit 646eb9b2a5504e4114b87cfb60cec292a306ddb2 Author: Betsy McPhail AuthorDate: Tue Feb 17 16:06:01 2015 -0500 Commit: Zack Galbreath CommitDate: Fri Jun 5 16:14:41 2015 -0400 Added document with release notes. diff --git a/Help/release/dev/ctest-max-load-option.rst b/Help/release/dev/ctest-max-load-option.rst new file mode 100644 index 0000000..037c61f --- /dev/null +++ b/Help/release/dev/ctest-max-load-option.rst @@ -0,0 +1,6 @@ +ctest-max-load-option +-------------- + +* It is now possible to set the 'max-load' option in CTest. + If set, then CTest will not run any tests that would be projected + to increase the machine load above this level. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=28c028e5fb5d0f542a74df738b4658d112c49b95 commit 28c028e5fb5d0f542a74df738b4658d112c49b95 Author: Betsy McPhail AuthorDate: Tue Feb 17 15:54:42 2015 -0500 Commit: Zack Galbreath CommitDate: Fri Jun 5 16:14:41 2015 -0400 Added "--max-load" option to CTest When max-load is set, only run tests such that: + <= If no tests meet this criteria, wait for 1 second and try again. The debug option will show more information. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index bd090db..7a401cb 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -13,6 +13,7 @@ #include "cmProcess.h" #include "cmStandardIncludes.h" #include "cmCTest.h" +#include "cmCTestScriptHandler.h" #include "cmSystemTools.h" #include #include @@ -40,6 +41,7 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; + this->MaxLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; @@ -83,6 +85,11 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTestMultiProcessHandler::SetMaxLoad(size_t max) +{ + this->MaxLoad = max < 1 ? 0 : max; +} + //--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { @@ -209,6 +216,12 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) return processors; } +std::string cmCTestMultiProcessHandler::GetName(int test) +{ + return this->Properties[test]->Name; +} + + //--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { @@ -248,24 +261,54 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + bool allTestsFailedMaxLoadCheck = true; + size_t minProcessorsRequired = this->ParallelLevel; + std::string testWithMinProcessors = ""; + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { size_t processors = GetProcessorsUsed(*test); - if(processors <= numToStart && this->StartTest(*test)) + const bool maxLoadOk = (this->MaxLoad > 0) ? + processors <= (this->MaxLoad - cmSystemTools::GetLoadAverage()) : true; + + allTestsFailedMaxLoadCheck &= !maxLoadOk; + if (processors <= minProcessorsRequired) { - if(this->StopTimePassed) - { - return; - } - numToStart -= processors; + minProcessorsRequired = processors; + testWithMinProcessors = GetName(*test); + } + + if(maxLoadOk && processors <= numToStart && this->StartTest(*test)) + { + if(this->StopTimePassed) + { + return; + } + numToStart -= processors; } else if(numToStart == 0) { return; } } + + if (allTestsFailedMaxLoadCheck) + { + cmCTestLog(this->CTest, DEBUG, "Time: " << this->CTest->CurrentTime() + << std::endl); + cmCTestLog(this->CTest, DEBUG, "Current Load: " + << cmSystemTools::GetLoadAverage() << std::endl); + cmCTestLog(this->CTest, DEBUG, "Max Load: " << this->MaxLoad << std::endl); + cmCTestLog(this->CTest, DEBUG, " Smallest test " << testWithMinProcessors + << " requries " << minProcessorsRequired + << " cores/processes and can't be run without violating the max load." + << std::endl); + + // Wait before trying again... + cmCTestScriptHandler::SleepInSeconds(1); + } } //--------------------------------------------------------- diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 6440fbc..e60aef0 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,6 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); + void SetMaxLoad(size_t max); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -93,6 +94,7 @@ protected: bool CheckCycles(); int FindMaxIndex(); inline size_t GetProcessorsUsed(int index); + std::string GetName(int index); void LockResources(int index); void UnlockResources(int index); @@ -116,6 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once + size_t MaxLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 70b7f5c..3d6b746 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1060,6 +1060,7 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, new cmCTestBatchTestHandler : new cmCTestMultiProcessHandler; parallel->SetCTest(this->CTest); parallel->SetParallelLevel(this->CTest->GetParallelLevel()); + parallel->SetMaxLoad(this->CTest->GetMaxLoad()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e3b7a2b..fc36b62 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,6 +294,7 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; + this->MaxLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -393,6 +394,11 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTest::SetMaxLoad(int max) +{ + this->MaxLoad = max < 1 ? 0 : max; +} + //---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { @@ -2051,6 +2057,13 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } + if(this->CheckArgument(arg, "--max-load") && i < args.size() - 1) + { + i++; + int max = atoi(args[i].c_str()); + this->SetMaxLoad(max); + } + if(this->CheckArgument(arg, "--no-compress-output")) { this->CompressTestOutput = false; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index db3ea10..4fbfbff 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,6 +161,9 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); + int GetMaxLoad() { return this->MaxLoad; } + void SetMaxLoad(int); + /** * Check if CTest file exists */ @@ -499,6 +502,8 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; + int MaxLoad; + int CompatibilityMode; // information for the --build-and-test options diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index e2adabe..16382da 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -2955,3 +2955,107 @@ bool cmSystemTools::StringToLong(const char* str, long* value) *value = strtol(str, &endp, 10); return (*endp == '\0') && (endp != str) && (errno == 0); } + +//---------------------------------------------------------------------------- +namespace{ +int get_processor_count() +{ +#ifdef _WIN32 + SYSTEM_INFO info; + GetSystemInfo(&info); + return info.dwNumberOfProcessors; +#else + return sysconf(_SC_NPROCESSORS_ONLN); +#endif +} + +#if defined(_WIN32) || defined(__CYGWIN__) +double calculate_processor_load(uint64_t idleTicks, uint64_t totalTicks) +{ + static uint64_t previousIdleTicks = 0; + static uint64_t previousTotalTicks = 0; + static double previousLoad = -0.0; + + uint64_t idleTicksSinceLastTime = idleTicks - previousIdleTicks; + uint64_t totalTicksSinceLastTime = totalTicks - previousTotalTicks; + + bool firstCall = (previousTotalTicks == 0); + bool ticksNotUpdatedSinceLastCall = (totalTicksSinceLastTime == 0); + + double load; + if (firstCall || ticksNotUpdatedSinceLastCall) + { + load = previousLoad; + } + else + { + // Calculate load. + double idleToTotalRatio = + ((double)idleTicksSinceLastTime) / totalTicksSinceLastTime; + double loadSinceLastCall = 1.0 - idleToTotalRatio; + + // Filter/smooth result when possible. + if (previousLoad > 0) + { + load = 0.9 * previousLoad + 0.1 * loadSinceLastCall; + } + else + { + load = loadSinceLastCall; + } + } + + previousLoad = load; + previousTotalTicks = totalTicks; + previousIdleTicks = idleTicks; + + return load; +} + +uint64_t file_time_to_tick_count(const FILETIME & ft) +{ + uint64_t high = (((uint64_t)(ft.dwHighDateTime)) << 32); + uint64_t low = ft.dwLowDateTime; + return (high | low); +} +#endif + +} // namespace + +#if defined(_WIN32) || defined(__CYGWIN__) +double cmSystemTools::GetLoadAverage() +{ + FILETIME idleTime, kernelTime, userTime; + BOOL getSystemTimeSucceeded = + GetSystemTimes(&idleTime, &kernelTime, &userTime); + + double posixCompatibleLoad; + if (getSystemTimeSucceeded) + { + uint64_t idleTicks = file_time_to_tick_count(idleTime); + + // kernelTime from GetSystemTimes already includes idleTime. + uint64_t totalTicks = file_time_to_tick_count(kernelTime) + + file_time_to_tick_count(userTime); + + double processorLoad = calculate_processor_load(idleTicks, totalTicks); + posixCompatibleLoad = processorLoad * get_processor_count(); + } + else + { + posixCompatibleLoad = -0.0; + } + return posixCompatibleLoad; +} +#else +double cmSystemTools::GetLoadAverage() +{ + double loadavg[3] = { 0.0f, 0.0f, 0.0f }; + if (getloadavg(loadavg, 3) < 0) + { + // Return error here instead? + return -0.0f; + } + return loadavg[0]; +} +#endif diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 6feb6c5..30ec449 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -470,6 +470,10 @@ public: /** Convert string to long. Expected that the whole string is an integer */ static bool StringToLong(const char* str, long* value); + /** Return the load average of the machine. A negative value is returned on + error. */ + static double GetLoadAverage(); + #ifdef _WIN32 struct WindowsFileRetry { ----------------------------------------------------------------------- Summary of changes: Help/command/ctest_test.rst | 7 +- Help/manual/cmake-variables.7.rst | 2 + Help/manual/ctest.1.rst | 4 + Help/release/dev/ctest-test-load-option.rst | 6 + Help/variable/CMAKE_TEST_LOAD.rst | 9 + Help/variable/CTEST_TEST_LOAD.rst | 24 +++ Modules/CTest.cmake | 3 + Modules/DartConfiguration.tcl.in | 4 + Source/CTest/cmCTestMultiProcessHandler.cxx | 193 +++++++++++++++++++- Source/CTest/cmCTestMultiProcessHandler.h | 4 + Source/CTest/cmCTestTestCommand.cxx | 20 ++ Source/CTest/cmCTestTestCommand.h | 1 + Source/CTest/cmCTestTestHandler.cxx | 1 + Source/cmCTest.cxx | 17 ++ Source/cmCTest.h | 5 + Source/ctest.cxx | 1 + Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 28 +++ .../CTestCommandLine/test-load-fail-stderr.txt | 1 + .../CTestCommandLine/test-load-fail-stdout.txt | 2 + .../test-load-pass-stderr.txt} | 0 .../CTestCommandLine/test-load-pass-stdout.txt | 7 + 21 files changed, 329 insertions(+), 10 deletions(-) create mode 100644 Help/release/dev/ctest-test-load-option.rst create mode 100644 Help/variable/CMAKE_TEST_LOAD.rst create mode 100644 Help/variable/CTEST_TEST_LOAD.rst create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt copy Tests/RunCMake/{ctest_start/StartQuiet-stdout.txt => CTestCommandLine/test-load-pass-stderr.txt} (100%) create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:26:20 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:26:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-342-g5a919c2 Message-ID: <20150609142620.2EAABB03A3@public.kitware.com> 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 5a919c2389342205c99ba51f6f8ef57c978607b9 (commit) via 12e534c2b8ad0009aba746ee6e4b47423c52f3e3 (commit) via eb859263aeffc79d73d046dbf9f5656e4c9739ef (commit) via 29985ad8948af74d8b6ad4e58428f65434e68f0c (commit) via 801b799f9d5f1d904c4605d19b798ed489be925d (commit) from 0fae1c377fbed45b45d8a1b5a624fa6b6cb297af (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=5a919c2389342205c99ba51f6f8ef57c978607b9 commit 5a919c2389342205c99ba51f6f8ef57c978607b9 Merge: 0fae1c3 12e534c Author: Brad King AuthorDate: Tue Jun 9 10:26:19 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 10:26:19 2015 -0400 Merge topic 'FindBISON-DEFINES_FILE' into next 12e534c2 FindBISON: Add DEFINES_FILE option to pass --defines=FILE eb859263 FindBISON: Use CMAKE_PARSE_ARGUMENTS to parse arguments 29985ad8 FindBISON: Use BISON_TARGET macro argument names internally 801b799f FindBISON: Improve documentation formatting http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=12e534c2b8ad0009aba746ee6e4b47423c52f3e3 commit 12e534c2b8ad0009aba746ee6e4b47423c52f3e3 Author: Eon Jeong AuthorDate: Tue Jun 9 09:59:15 2015 +0900 Commit: Brad King CommitDate: Tue Jun 9 10:26:01 2015 -0400 FindBISON: Add DEFINES_FILE option to pass --defines=FILE diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index 30d7c4f..7d81276 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -22,6 +22,7 @@ # # BISON_TARGET( # [COMPILE_FLAGS ] +# [DEFINES_FILE ] # [VERBOSE ] # ) # @@ -35,6 +36,9 @@ # ``COMPILE_FLAGS `` # Specify flags to be added to the ``bison`` command line. # +# ``DEFINES_FILE `` +# Specify a non-default header ```` to be generated by ``bison``. +# # ``VERBOSE `` # Tell ``bison`` to write verbose descriptions of the grammar and # parser to the given ````. @@ -64,7 +68,8 @@ # .. code-block:: cmake # # find_package(BISON) -# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) +# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp +# DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h) # add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS}) #============================================================================= @@ -140,6 +145,12 @@ if(BISON_EXECUTABLE) list(APPEND BISON_TARGET_cmdopt ${BISON_TARGET_extraopts}) endmacro() + # internal macro + macro(BISON_TARGET_option_defines Header) + set(BISON_TARGET_output_header "${Header}") + list(APPEND BISON_TARGET_cmdopt --defines=${BISON_TARGET_output_header}) + endmacro() + #============================================================ # BISON_TARGET (public macro) #============================================================ @@ -154,6 +165,7 @@ if(BISON_EXECUTABLE) set(BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS VERBOSE COMPILE_FLAGS + DEFINES_FILE ) set(BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS) cmake_parse_arguments( @@ -173,14 +185,19 @@ if(BISON_EXECUTABLE) if(NOT "${BISON_TARGET_ARG_COMPILE_FLAGS}" STREQUAL "") BISON_TARGET_option_extraopts("${BISON_TARGET_ARG_COMPILE_FLAGS}") endif() + if(NOT "${BISON_TARGET_ARG_DEFINES_FILE}" STREQUAL "") + BISON_TARGET_option_defines("${BISON_TARGET_ARG_DEFINES_FILE}") + endif() - # Header's name generated by bison (see option -d) - list(APPEND BISON_TARGET_cmdopt "-d") - string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${BisonOutput}") - string(REPLACE "c" "h" _fileext ${_fileext}) - string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}" - BISON_${Name}_OUTPUT_HEADER "${BisonOutput}") - list(APPEND BISON_TARGET_outputs "${BISON_${Name}_OUTPUT_HEADER}") + if("${BISON_TARGET_output_header}" STREQUAL "") + # Header's name generated by bison (see option -d) + list(APPEND BISON_TARGET_cmdopt "-d") + string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${BisonOutput}") + string(REPLACE "c" "h" _fileext ${_fileext}) + string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}" + BISON_TARGET_output_header "${BisonOutput}") + endif() + list(APPEND BISON_TARGET_outputs "${BISON_TARGET_output_header}") add_custom_command(OUTPUT ${BISON_TARGET_outputs} ${BISON_TARGET_extraoutputs} @@ -196,6 +213,7 @@ if(BISON_EXECUTABLE) set(BISON_${Name}_OUTPUTS ${BISON_TARGET_outputs}) set(BISON_${Name}_COMPILE_FLAGS ${BISON_TARGET_cmdopt}) set(BISON_${Name}_OUTPUT_SOURCE "${BisonOutput}") + set(BISON_${Name}_OUTPUT_HEADER "${BISON_TARGET_output_header}") endif() endmacro() http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eb859263aeffc79d73d046dbf9f5656e4c9739ef commit eb859263aeffc79d73d046dbf9f5656e4c9739ef Author: Eon Jeong AuthorDate: Mon Jun 8 23:35:49 2015 +0900 Commit: Brad King CommitDate: Tue Jun 9 10:21:52 2015 -0400 FindBISON: Use CMAKE_PARSE_ARGUMENTS to parse arguments diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index e1cad81..30d7c4f 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -84,6 +84,8 @@ find_program(BISON_EXECUTABLE NAMES bison win_bison DOC "path to the bison executable") mark_as_advanced(BISON_EXECUTABLE) +include(CMakeParseArguments) + if(BISON_EXECUTABLE) # the bison commands should be executed with the C locale, otherwise # the message (which are parsed) may be translated @@ -146,27 +148,30 @@ if(BISON_EXECUTABLE) set(BISON_TARGET_output_header "") set(BISON_TARGET_cmdopt "") set(BISON_TARGET_outputs "${BisonOutput}") - if(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7) + + # Parsing parameters + set(BISON_TARGET_PARAM_OPTIONS) + set(BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS + VERBOSE + COMPILE_FLAGS + ) + set(BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS) + cmake_parse_arguments( + BISON_TARGET_ARG + "${BISON_TARGET_PARAM_OPTIONS}" + "${BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS}" + "${BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS}" + ${ARGN} + ) + + if(NOT "${BISON_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "") message(SEND_ERROR "Usage") else() - # Parsing parameters - if(${ARGC} GREATER 5 OR ${ARGC} EQUAL 5) - if("${ARGV3}" STREQUAL "VERBOSE") - BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${ARGV4}") - endif() - if("${ARGV3}" STREQUAL "COMPILE_FLAGS") - BISON_TARGET_option_extraopts("${ARGV4}") - endif() + if(NOT "${BISON_TARGET_ARG_VERBOSE}" STREQUAL "") + BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${BISON_TARGET_ARG_VERBOSE}") endif() - - if(${ARGC} EQUAL 7) - if("${ARGV5}" STREQUAL "VERBOSE") - BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${ARGV6}") - endif() - - if("${ARGV5}" STREQUAL "COMPILE_FLAGS") - BISON_TARGET_option_extraopts("${ARGV6}") - endif() + if(NOT "${BISON_TARGET_ARG_COMPILE_FLAGS}" STREQUAL "") + BISON_TARGET_option_extraopts("${BISON_TARGET_ARG_COMPILE_FLAGS}") endif() # Header's name generated by bison (see option -d) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=29985ad8948af74d8b6ad4e58428f65434e68f0c commit 29985ad8948af74d8b6ad4e58428f65434e68f0c Author: Eon Jeong AuthorDate: Mon Jun 8 23:35:49 2015 +0900 Commit: Brad King CommitDate: Tue Jun 9 10:21:51 2015 -0400 FindBISON: Use BISON_TARGET macro argument names internally The macro argument names are much clearer than ${ARGV#} references. diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index 4002cc6..e1cad81 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -171,23 +171,23 @@ if(BISON_EXECUTABLE) # Header's name generated by bison (see option -d) list(APPEND BISON_TARGET_cmdopt "-d") - string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${ARGV2}") + string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${BisonOutput}") string(REPLACE "c" "h" _fileext ${_fileext}) string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}" - BISON_${Name}_OUTPUT_HEADER "${ARGV2}") + BISON_${Name}_OUTPUT_HEADER "${BisonOutput}") list(APPEND BISON_TARGET_outputs "${BISON_${Name}_OUTPUT_HEADER}") add_custom_command(OUTPUT ${BISON_TARGET_outputs} ${BISON_TARGET_extraoutputs} COMMAND ${BISON_EXECUTABLE} - ARGS ${BISON_TARGET_cmdopt} -o ${ARGV2} ${ARGV1} - DEPENDS ${ARGV1} + ARGS ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${BisonInput} + DEPENDS ${BisonInput} COMMENT "[BISON][${Name}] Building parser with bison ${BISON_VERSION}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) # define target variables set(BISON_${Name}_DEFINED TRUE) - set(BISON_${Name}_INPUT ${ARGV1}) + set(BISON_${Name}_INPUT ${BisonInput}) set(BISON_${Name}_OUTPUTS ${BISON_TARGET_outputs}) set(BISON_${Name}_COMPILE_FLAGS ${BISON_TARGET_cmdopt}) set(BISON_${Name}_OUTPUT_SOURCE "${BisonOutput}") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=801b799f9d5f1d904c4605d19b798ed489be925d commit 801b799f9d5f1d904c4605d19b798ed489be925d Author: Brad King AuthorDate: Tue Jun 9 10:21:07 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 10:21:42 2015 -0400 FindBISON: Improve documentation formatting diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index ec3ee78..4002cc6 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -2,60 +2,70 @@ # FindBISON # --------- # -# Find bison executable and provides macros to generate custom build rules +# Find ``bison`` executable and provide a macro to generate custom build rules. # # The module defines the following variables: # -# :: +# ``BISON_EXECUTABLE`` +# path to the ``bison`` program # -# BISON_EXECUTABLE - path to the bison program -# BISON_VERSION - version of bison -# BISON_FOUND - true if the program was found +# ``BISON_VERSION`` +# version of ``bison`` # +# ``BISON_FOUND`` +# true if the program was found # +# The minimum required version of ``bison`` can be specified using the +# standard CMake syntax, e.g. ``find_package(BISON 2.1.3)``. # -# The minimum required version of bison can be specified using the -# standard CMake syntax, e.g. find_package(BISON 2.1.3) +# If ``bison`` is found, the module defines the macro:: # -# If bison is found, the module defines the macros: +# BISON_TARGET( +# [COMPILE_FLAGS ] +# [VERBOSE ] +# ) # -# :: +# which will create a custom rule to generate a parser. ```` is +# the path to a yacc file. ```` is the name of the source file +# generated by bison. A header file is also be generated, and contains +# the token list. # -# BISON_TARGET( [VERBOSE ] -# [COMPILE_FLAGS ]) +# The options are: # -# which will create a custom rule to generate a parser. is -# the path to a yacc file. is the name of the source file -# generated by bison. A header file is also be generated, and contains -# the token list. If COMPILE_FLAGS option is specified, the next -# parameter is added in the bison command line. if VERBOSE option is -# specified, is created and contains verbose descriptions of the -# grammar and parser. The macro defines a set of variables: +# ``COMPILE_FLAGS `` +# Specify flags to be added to the ``bison`` command line. +# +# ``VERBOSE `` +# Tell ``bison`` to write verbose descriptions of the grammar and +# parser to the given ````. # -# :: +# The macro defines the following variables: # -# BISON_${Name}_DEFINED - true is the macro ran successfully -# BISON_${Name}_INPUT - The input source file, an alias for -# BISON_${Name}_OUTPUT_SOURCE - The source file generated by bison -# BISON_${Name}_OUTPUT_HEADER - The header file generated by bison -# BISON_${Name}_OUTPUTS - The sources files generated by bison -# BISON_${Name}_COMPILE_FLAGS - Options used in the bison command line +# ``BISON__DEFINED`` +# true is the macro ran successfully # +# ``BISON__INPUT`` +# The input source file, an alias for # +# ``BISON__OUTPUT_SOURCE`` +# The source file generated by bison # -# :: +# ``BISON__OUTPUT_HEADER`` +# The header file generated by bison # -# ==================================================================== -# Example: +# ``BISON__OUTPUTS`` +# The sources files generated by bison # +# ``BISON__COMPILE_FLAGS`` +# Options used in the ``bison`` command line # +# Example usage: # -# :: +# .. code-block:: cmake # -# find_package(BISON) -# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) -# add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS}) -# ==================================================================== +# find_package(BISON) +# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) +# add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS}) #============================================================================= # Copyright 2009 Kitware, Inc. ----------------------------------------------------------------------- Summary of changes: Modules/FindBISON.cmake | 155 ++++++++++++++++++++++++++++------------------- 1 file changed, 94 insertions(+), 61 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:29:39 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:29:39 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-138-gab660b8 Message-ID: <20150609142939.6E67CB045D@public.kitware.com> 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, master has been updated via ab660b8d223ee3a2753cfe2dc38969f02cf13593 (commit) via 482a3bf3f0b0d3cc1835666e570d8f65a0342ee7 (commit) from 223e2ec28dab4360f573932dfc0991744ddc0918 (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=ab660b8d223ee3a2753cfe2dc38969f02cf13593 commit ab660b8d223ee3a2753cfe2dc38969f02cf13593 Merge: 223e2ec 482a3bf Author: Brad King AuthorDate: Tue Jun 9 10:29:38 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 10:29:38 2015 -0400 Merge topic 'doc-policy-OLD-deprecated' 482a3bf3 Help: Document explicitly that policy OLD behavior is deprecated ----------------------------------------------------------------------- Summary of changes: Help/command/cmake_policy.rst | 2 ++ Help/manual/cmake-policies.7.rst | 10 +++++----- Help/policy/CMP0000.rst | 2 ++ Help/policy/CMP0001.rst | 2 ++ Help/policy/CMP0002.rst | 2 ++ Help/policy/CMP0003.rst | 2 ++ Help/policy/CMP0004.rst | 2 ++ Help/policy/CMP0005.rst | 2 ++ Help/policy/CMP0006.rst | 2 ++ Help/policy/CMP0007.rst | 2 ++ Help/policy/CMP0008.rst | 2 ++ Help/policy/CMP0009.rst | 2 ++ Help/policy/CMP0010.rst | 2 ++ Help/policy/CMP0011.rst | 2 ++ Help/policy/CMP0012.rst | 2 ++ Help/policy/CMP0013.rst | 2 ++ Help/policy/CMP0014.rst | 2 ++ Help/policy/CMP0015.rst | 2 ++ Help/policy/CMP0016.rst | 2 ++ Help/policy/CMP0017.rst | 2 ++ Help/policy/CMP0018.rst | 2 ++ Help/policy/CMP0019.rst | 2 ++ Help/policy/CMP0020.rst | 2 ++ Help/policy/CMP0021.rst | 2 ++ Help/policy/CMP0022.rst | 2 ++ Help/policy/CMP0023.rst | 2 ++ Help/policy/CMP0024.rst | 2 ++ Help/policy/CMP0025.rst | 2 ++ Help/policy/CMP0026.rst | 2 ++ Help/policy/CMP0027.rst | 2 ++ Help/policy/CMP0028.rst | 2 ++ Help/policy/CMP0029.rst | 2 ++ Help/policy/CMP0030.rst | 2 ++ Help/policy/CMP0031.rst | 2 ++ Help/policy/CMP0032.rst | 2 ++ Help/policy/CMP0033.rst | 2 ++ Help/policy/CMP0034.rst | 2 ++ Help/policy/CMP0035.rst | 2 ++ Help/policy/CMP0036.rst | 2 ++ Help/policy/CMP0037.rst | 2 ++ Help/policy/CMP0038.rst | 2 ++ Help/policy/CMP0039.rst | 2 ++ Help/policy/CMP0040.rst | 2 ++ Help/policy/CMP0041.rst | 2 ++ Help/policy/CMP0042.rst | 2 ++ Help/policy/CMP0043.rst | 2 ++ Help/policy/CMP0044.rst | 2 ++ Help/policy/CMP0045.rst | 2 ++ Help/policy/CMP0046.rst | 2 ++ Help/policy/CMP0047.rst | 2 ++ Help/policy/CMP0048.rst | 2 ++ Help/policy/CMP0049.rst | 2 ++ Help/policy/CMP0050.rst | 2 ++ Help/policy/CMP0051.rst | 2 ++ Help/policy/CMP0052.rst | 2 ++ Help/policy/CMP0053.rst | 2 ++ Help/policy/CMP0054.rst | 2 ++ Help/policy/CMP0055.rst | 2 ++ Help/policy/CMP0056.rst | 2 ++ Help/policy/CMP0057.rst | 2 ++ Help/policy/CMP0058.rst | 2 ++ Help/policy/CMP0059.rst | 2 ++ Help/policy/CMP0060.rst | 2 ++ Help/policy/CMP0061.rst | 2 ++ Help/policy/CMP0062.rst | 2 ++ Help/policy/CMP0063.rst | 2 ++ Help/policy/DEPRECATED.txt | 4 ++++ 67 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 Help/policy/DEPRECATED.txt hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:29:55 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:29:55 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-344-ge8046d7 Message-ID: <20150609142955.28E10B045E@public.kitware.com> 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 e8046d7779247b31ee651abfcbe3be429aae4190 (commit) via ab660b8d223ee3a2753cfe2dc38969f02cf13593 (commit) from 5a919c2389342205c99ba51f6f8ef57c978607b9 (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=e8046d7779247b31ee651abfcbe3be429aae4190 commit e8046d7779247b31ee651abfcbe3be429aae4190 Merge: 5a919c2 ab660b8 Author: Brad King AuthorDate: Tue Jun 9 10:29:49 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 10:29:49 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:31:23 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:31:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-146-g1c65ce5 Message-ID: <20150609143123.CDC27B048E@public.kitware.com> 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, master has been updated via 1c65ce52454db3cd7d9aff47e30456a50825de44 (commit) via d6619acf77903187f1b37a6ef2fdf21beb986d32 (commit) via 91131844cecae7c0af0ccfda757798480551404d (commit) via 7ac02e0bc555dc1361d1b73e6608ca9c9b784033 (commit) via 40e1ed9f9d0aa6b4e33bbbf71eece5175e098c8d (commit) via c279078f14bf3cdcae945d234e33b9b4027173eb (commit) via a20ca0c603659b6b53e680d377540d4f8057b208 (commit) via a97b910655af03787fbb4dca64752602d14d3910 (commit) from ab660b8d223ee3a2753cfe2dc38969f02cf13593 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:31:23 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:31:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-353-g23a7d0b Message-ID: <20150609143123.ED0B7B0492@public.kitware.com> 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 23a7d0babd375e57c60e56ee1434aab82e2b3bfa (commit) via 1c65ce52454db3cd7d9aff47e30456a50825de44 (commit) via d6619acf77903187f1b37a6ef2fdf21beb986d32 (commit) via 91131844cecae7c0af0ccfda757798480551404d (commit) via 7ac02e0bc555dc1361d1b73e6608ca9c9b784033 (commit) via 40e1ed9f9d0aa6b4e33bbbf71eece5175e098c8d (commit) via c279078f14bf3cdcae945d234e33b9b4027173eb (commit) via a20ca0c603659b6b53e680d377540d4f8057b208 (commit) via a97b910655af03787fbb4dca64752602d14d3910 (commit) from e8046d7779247b31ee651abfcbe3be429aae4190 (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=23a7d0babd375e57c60e56ee1434aab82e2b3bfa commit 23a7d0babd375e57c60e56ee1434aab82e2b3bfa Merge: e8046d7 1c65ce5 Author: Brad King AuthorDate: Tue Jun 9 10:31:10 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 10:31:10 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:31:24 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:31:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.3.0-rc1-14-gd6619ac Message-ID: <20150609143124.4218DB0493@public.kitware.com> 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, release has been updated via d6619acf77903187f1b37a6ef2fdf21beb986d32 (commit) via 482a3bf3f0b0d3cc1835666e570d8f65a0342ee7 (commit) via 91131844cecae7c0af0ccfda757798480551404d (commit) via 972853b15b6aa874644089bd3cf73197c7b874f8 (commit) via 7ac02e0bc555dc1361d1b73e6608ca9c9b784033 (commit) via 40e1ed9f9d0aa6b4e33bbbf71eece5175e098c8d (commit) via 12436efc1483e8e0e5fd6ce616c0b8ed94af72a3 (commit) via f5dbf00da67223c6f1d03cc4c88e05aa83b32f5b (commit) via c279078f14bf3cdcae945d234e33b9b4027173eb (commit) via d9b974b18ebad4bd84f40e7cebe01725f081bd5e (commit) via a20ca0c603659b6b53e680d377540d4f8057b208 (commit) via 2c9697431528ce78aa3aab9c0e1849641d9f61ec (commit) via a97b910655af03787fbb4dca64752602d14d3910 (commit) via 0e708d17e9d667764d6363a3e03cadff27ca7992 (commit) from b8746c4cfe325f05dbcb4e9a99ca78496c90e74e (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Help/command/add_custom_command.rst | 3 +++ Help/command/cmake_policy.rst | 2 ++ Help/manual/cmake-developer.7.rst | 1 - Help/manual/cmake-policies.7.rst | 10 +++++----- Help/policy/CMP0000.rst | 2 ++ Help/policy/CMP0001.rst | 2 ++ Help/policy/CMP0002.rst | 2 ++ Help/policy/CMP0003.rst | 2 ++ Help/policy/CMP0004.rst | 2 ++ Help/policy/CMP0005.rst | 2 ++ Help/policy/CMP0006.rst | 2 ++ Help/policy/CMP0007.rst | 2 ++ Help/policy/CMP0008.rst | 2 ++ Help/policy/CMP0009.rst | 2 ++ Help/policy/CMP0010.rst | 2 ++ Help/policy/CMP0011.rst | 2 ++ Help/policy/CMP0012.rst | 2 ++ Help/policy/CMP0013.rst | 2 ++ Help/policy/CMP0014.rst | 2 ++ Help/policy/CMP0015.rst | 2 ++ Help/policy/CMP0016.rst | 2 ++ Help/policy/CMP0017.rst | 2 ++ Help/policy/CMP0018.rst | 2 ++ Help/policy/CMP0019.rst | 2 ++ Help/policy/CMP0020.rst | 2 ++ Help/policy/CMP0021.rst | 2 ++ Help/policy/CMP0022.rst | 2 ++ Help/policy/CMP0023.rst | 2 ++ Help/policy/CMP0024.rst | 2 ++ Help/policy/CMP0025.rst | 2 ++ Help/policy/CMP0026.rst | 2 ++ Help/policy/CMP0027.rst | 2 ++ Help/policy/CMP0028.rst | 2 ++ Help/policy/CMP0029.rst | 2 ++ Help/policy/CMP0030.rst | 2 ++ Help/policy/CMP0031.rst | 2 ++ Help/policy/CMP0032.rst | 2 ++ Help/policy/CMP0033.rst | 2 ++ Help/policy/CMP0034.rst | 2 ++ Help/policy/CMP0035.rst | 2 ++ Help/policy/CMP0036.rst | 2 ++ Help/policy/CMP0037.rst | 2 ++ Help/policy/CMP0038.rst | 2 ++ Help/policy/CMP0039.rst | 2 ++ Help/policy/CMP0040.rst | 2 ++ Help/policy/CMP0041.rst | 2 ++ Help/policy/CMP0042.rst | 2 ++ Help/policy/CMP0043.rst | 2 ++ Help/policy/CMP0044.rst | 2 ++ Help/policy/CMP0045.rst | 2 ++ Help/policy/CMP0046.rst | 2 ++ Help/policy/CMP0047.rst | 2 ++ Help/policy/CMP0048.rst | 2 ++ Help/policy/CMP0049.rst | 2 ++ Help/policy/CMP0050.rst | 2 ++ Help/policy/CMP0051.rst | 2 ++ Help/policy/CMP0052.rst | 2 ++ Help/policy/CMP0053.rst | 2 ++ Help/policy/CMP0054.rst | 2 ++ Help/policy/CMP0055.rst | 2 ++ Help/policy/CMP0056.rst | 2 ++ Help/policy/CMP0057.rst | 2 ++ Help/policy/CMP0058.rst | 2 ++ Help/policy/CMP0059.rst | 2 ++ Help/policy/CMP0060.rst | 2 ++ Help/policy/CMP0061.rst | 2 ++ Help/policy/CMP0062.rst | 2 ++ Help/policy/CMP0063.rst | 2 ++ Help/policy/DEPRECATED.txt | 4 ++++ Help/release/3.3.rst | 6 ------ Modules/FindwxWidgets.cmake | 3 ++- Modules/Platform/Windows-GNU.cmake | 2 +- Source/CTest/cmCTestScriptHandler.cxx | 4 ++++ Source/QtDialog/CMakeSetupDialog.cxx | 1 + 74 files changed, 150 insertions(+), 14 deletions(-) create mode 100644 Help/policy/DEPRECATED.txt hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 10:35:51 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 10:35:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-356-g1e97629 Message-ID: <20150609143551.DA95DB051B@public.kitware.com> 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 1e97629e39c01a41a8343a0d2b5cdc7ea5e472c5 (commit) via 1ac9e00e2707b4b826383616158a7b306c2f2b74 (commit) via 86bde2ef3e5d56ca7326b51e6608a79a08eb90cd (commit) from 23a7d0babd375e57c60e56ee1434aab82e2b3bfa (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=1e97629e39c01a41a8343a0d2b5cdc7ea5e472c5 commit 1e97629e39c01a41a8343a0d2b5cdc7ea5e472c5 Merge: 23a7d0b 1ac9e00 Author: Brad King AuthorDate: Tue Jun 9 10:35:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 10:35:51 2015 -0400 Merge topic 'test-release' into next 1ac9e00e Merge branch 'release' into test-release 86bde2ef CMake 3.3.0-rc2 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1ac9e00e2707b4b826383616158a7b306c2f2b74 commit 1ac9e00e2707b4b826383616158a7b306c2f2b74 Merge: 1c65ce5 86bde2e Author: Brad King AuthorDate: Tue Jun 9 10:34:34 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 10:34:34 2015 -0400 Merge branch 'release' into test-release http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=86bde2ef3e5d56ca7326b51e6608a79a08eb90cd commit 86bde2ef3e5d56ca7326b51e6608a79a08eb90cd Author: Brad King AuthorDate: Tue Jun 9 10:31:54 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 10:31:54 2015 -0400 CMake 3.3.0-rc2 diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 727cbcc..26a3b8a 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -2,4 +2,4 @@ set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) set(CMake_VERSION_PATCH 0) -set(CMake_VERSION_RC 1) +set(CMake_VERSION_RC 2) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 9 13:33:19 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 9 Jun 2015 13:33:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-358-gc94dec1 Message-ID: <20150609173319.D15FDB044F@public.kitware.com> 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 c94dec14b30fcff16c91df0102ef96299e0ab147 (commit) via e1a72359424392e4417a403222f4dbb49152eae9 (commit) from 1e97629e39c01a41a8343a0d2b5cdc7ea5e472c5 (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=c94dec14b30fcff16c91df0102ef96299e0ab147 commit c94dec14b30fcff16c91df0102ef96299e0ab147 Merge: 1e97629 e1a7235 Author: Brad King AuthorDate: Tue Jun 9 13:33:18 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 13:33:18 2015 -0400 Merge topic 'ctest-test-load' into next e1a72359 Revert topic 'ctest-test-load' http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e1a72359424392e4417a403222f4dbb49152eae9 commit e1a72359424392e4417a403222f4dbb49152eae9 Author: Brad King AuthorDate: Tue Jun 9 13:32:44 2015 -0400 Commit: Brad King CommitDate: Tue Jun 9 13:32:44 2015 -0400 Revert topic 'ctest-test-load' It will be revised and restored after tracking down crashes. diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index 189093d..8cbb9ec 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -14,7 +14,6 @@ Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] - [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] @@ -42,7 +41,7 @@ The options are: Specify the end of a range of test numbers. ``STRIDE `` - Specify the stride by which to step across a range of test numbers. + Specify the stride by which to step acorss a range of test numbers. ``EXCLUDE `` Specify a regular expression matching test names to exclude. @@ -62,10 +61,6 @@ The options are: Specify a positive number representing the number of tests to be run in parallel. -``TEST_LOAD `` - Specify a CPU load threshold that CTest should attempt to - not cross. See :variable:`CTEST_TEST_LOAD` for more details. - ``SCHEDULE_RANDOM `` Launch tests in a random order. This may be useful for detecting implicit test dependencies. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 6ab7f3d..bd02f8b 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -152,7 +152,6 @@ Variables that Change Behavior /variable/CMAKE_SYSTEM_LIBRARY_PATH /variable/CMAKE_SYSTEM_PREFIX_PATH /variable/CMAKE_SYSTEM_PROGRAM_PATH - /variable/CMAKE_TEST_LOAD /variable/CMAKE_USER_MAKE_RULES_OVERRIDE /variable/CMAKE_WARN_DEPRECATED /variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION @@ -382,7 +381,6 @@ Variables for CTest /variable/CTEST_SVN_COMMAND /variable/CTEST_SVN_OPTIONS /variable/CTEST_SVN_UPDATE_OPTIONS - /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index 6dd7330..c91321b 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,10 +66,6 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. -``--test-load `` - Limit CPU load during parallel testing. - See :variable:`CTEST_TEST_LOAD` for more details. - ``-Q,--quiet`` Make ctest quiet. diff --git a/Help/release/dev/ctest-test-load-option.rst b/Help/release/dev/ctest-test-load-option.rst deleted file mode 100644 index 25efc26..0000000 --- a/Help/release/dev/ctest-test-load-option.rst +++ /dev/null @@ -1,6 +0,0 @@ -ctest-test-load-option ----------------------- - -* It is now possible to set the 'test-load' option in CTest. - If set, then CTest will not start any new tests that would be - projected to increase the CPU load above this level. diff --git a/Help/variable/CMAKE_TEST_LOAD.rst b/Help/variable/CMAKE_TEST_LOAD.rst deleted file mode 100644 index 7baf6dd..0000000 --- a/Help/variable/CMAKE_TEST_LOAD.rst +++ /dev/null @@ -1,9 +0,0 @@ -CMAKE_TEST_LOAD ------------------- - -CMake variable to specify the CTest ``TestLoad`` setting. -See :variable:`CTEST_TEST_LOAD` for more details. - -Note that this variable is not honored during script mode. -If you intend to drive your tests with ``ctest -S``, please set -:variable:`CTEST_TEST_LOAD` in your dashboard script instead. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst deleted file mode 100644 index 6d7aea6..0000000 --- a/Help/variable/CTEST_TEST_LOAD.rst +++ /dev/null @@ -1,24 +0,0 @@ -CTEST_TEST_LOAD ------------------- - -Specify the ``TestLoad`` setting -in a :manual:`ctest(1)` dashboard client script. - -This creates a CPU load threshold that CTest will attempt to -not cross. CTest will not start a new test if doing so -would be likely to raise the CPU load above this threshold. -Please note that this variable is only honored during parallel testing -(``ctest -j`` or similar). - -Here are the various ways that you can set this threshold: - -* The ``TEST_LOAD`` option to :command:`ctest_test`. -* :variable:`CTEST_TEST_LOAD` in a dashboard script. -* Passing the ``--ctest-load`` command-line argument to :manual:`ctest(1)`. -* Setting the :variable:`CMAKE_TEST_LOAD` variable in your CMake project. - -These are listed here in descending priority order, ie -``ctest_test(TEST_LOAD ...)`` will override any of the other -methods of setting this threshold. Also note that -:variable:`CMAKE_TEST_LOAD` is not honored when running ctest -in script (``-S``) mode. diff --git a/Modules/CTest.cmake b/Modules/CTest.cmake index 0b34fcd..8278c5c 100644 --- a/Modules/CTest.cmake +++ b/Modules/CTest.cmake @@ -173,9 +173,6 @@ if(BUILD_TESTING) set(DART_TESTING_TIMEOUT 1500 CACHE STRING "Maximum time allowed before CTest will kill the test.") - set(CTEST_MAX_LOAD 0 CACHE STRING - "Maximum system load that CTest should not exceed during parallel testing. Specify 0 for no maximum.") - set(CTEST_SUBMIT_RETRY_DELAY 5 CACHE STRING "How long to wait between timed-out CTest submissions.") set(CTEST_SUBMIT_RETRY_COUNT 3 CACHE STRING diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index d8ec84a..37a0a40 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -95,10 +95,6 @@ SlurmRunCommand: @SLURM_SRUN_COMMAND@ # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ -# During parallel testing CTest will not start a new test if doing -# so would cause the system load to exceed this value. -TestLoad: @CMAKE_TEST_LOAD@ - UseLaunchers: @CTEST_USE_LAUNCHERS@ CurlOptions: @CTEST_CURL_OPTIONS@ # warning, if you add new options here that have to do with submit, diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index f9357d6..bd090db 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -13,16 +13,12 @@ #include "cmProcess.h" #include "cmStandardIncludes.h" #include "cmCTest.h" -#include "cmCTestScriptHandler.h" #include "cmSystemTools.h" -#include "cmFileLock.h" -#include "cmFileLockResult.h" #include #include #include #include #include -#include class TestComparator { @@ -44,12 +40,10 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; - this->TestLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; this->HasCycles = false; - this->SerialTestRunning = false; } cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() @@ -89,11 +83,6 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } -void cmCTestMultiProcessHandler::SetTestLoad(size_t load) -{ - this->TestLoad = load < 1 ? 0 : load; -} - //--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { @@ -183,11 +172,6 @@ void cmCTestMultiProcessHandler::LockResources(int index) this->LockedResources.insert( this->Properties[index]->LockedResources.begin(), this->Properties[index]->LockedResources.end()); - - if (this->Properties[index]->RunSerial) - { - this->SerialTestRunning = true; - } } //--------------------------------------------------------- @@ -214,21 +198,17 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) { size_t processors = static_cast(this->Properties[test]->Processors); - //If processors setting is set higher than the -j + //If this is set to run serially, it must run alone. + //Also, if processors setting is set higher than the -j //setting, we default to using all of the process slots. - if (processors > this->ParallelLevel) + if(this->Properties[test]->RunSerial + || processors > this->ParallelLevel) { processors = this->ParallelLevel; } return processors; } -std::string cmCTestMultiProcessHandler::GetName(int test) -{ - return this->Properties[test]->Name; -} - - //--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { @@ -268,173 +248,23 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } - // Don't start any new tests if one with the RUN_SERIAL property - // is already running. - if (this->SerialTestRunning) - { - return; - } - - bool allTestsFailedTestLoadCheck = false; - bool testingThisFeature = false; - size_t minProcessorsRequired = this->ParallelLevel; - std::string testWithMinProcessors = ""; - - cmsys::SystemInformation info; - const std::string lockFile = "/tmp/.cmake_testload.lock"; // TODO: Filename - if (this->TestLoad > 0) - { - allTestsFailedTestLoadCheck = true; - - if (!cmSystemTools::FileExists(lockFile)) - { - FILE *file = cmsys::SystemTools::Fopen(lockFile, "w"); - if (!file) - { - // TODO: ? - } - fclose(file); - } - } - cmFileLock testLoadLock; - - double systemLoad = 0.0; - TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { - // Take a nap if we're currently performing a RUN_SERIAL test. - if (this->SerialTestRunning) - { - allTestsFailedTestLoadCheck = true; - break; - } - // We can only start a RUN_SERIAL test if no other tests are also running. - if (this->Properties[*test]->RunSerial && this->RunningCount > 0) - { - continue; - } - size_t processors = GetProcessorsUsed(*test); - bool testLoadOk; - if (this->TestLoad > 0) - { - // First, try to get file lock.. - if (!testLoadLock.IsLocked(lockFile)) - { - cmFileLockResult result = testLoadLock.Lock(lockFile, 1); - if (result.IsOk()) - { - // Check for a fake load average value used in testing. - const char* fake_load_value = - getenv("__FAKE_LOAD_AVERAGE_FOR_CTEST_TESTING"); - if (fake_load_value) - { - testingThisFeature = true; - systemLoad = atoi(fake_load_value); - } - // If it's not set, look up the true load average. - else - { - systemLoad = info.GetLoadAverage(); - } - // Don't start more tests than your max load can support. - if (numToStart > (this->TestLoad - systemLoad)) - { - numToStart = this->TestLoad - systemLoad; - } - - testLoadOk = processors <= (this->TestLoad - systemLoad); - if (testLoadOk) - { - cmCTestLog(this->CTest, DEBUG, "OK to run " << GetName(*test) << ", it requires " << processors << " procs & system load is: " << systemLoad << std::endl); - } - } - else + if(processors <= numToStart && this->StartTest(*test)) + { + if(this->StopTimePassed) { - testLoadOk = false; + return; } - } - else - { - testLoadOk = false; - } - - allTestsFailedTestLoadCheck &= !testLoadOk; - } - else - { - testLoadOk = true; - } - - if (processors <= minProcessorsRequired) - { - minProcessorsRequired = processors; - testWithMinProcessors = GetName(*test); - } - - if(testLoadOk && processors <= numToStart && this->StartTest(*test)) - { - testLoadLock.Release(); - - if(this->StopTimePassed) - { - return; - } - - numToStart -= processors; + numToStart -= processors; } else if(numToStart == 0) { - testLoadLock.Release(); return; } - else - { - testLoadLock.Release(); - } - } // for - - if (allTestsFailedTestLoadCheck) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING, "); - time_t currenttime = time(0); - struct tm* t = localtime(¤ttime); - char current_time[1024]; - strftime(current_time, 1000, "%s", t); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Time: " - << current_time << ", "); - - if (this->SerialTestRunning) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, - "Waiting for RUN_SERIAL test to finish." << std::endl); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); - } - else - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " - << systemLoad << ", "); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Max Allowed Load: " - << this->TestLoad << ", "); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Smallest test " - << testWithMinProcessors << " requires " << minProcessorsRequired); - cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); - } - - if (testingThisFeature) - { - // Break out of the infinite loop of waiting for our fake load - // to come down. - this->StopTimePassed = true; - } - else - { - // Wait between 1 and 5 seconds before trying again. - cmCTestScriptHandler::SleepInSeconds( - cmSystemTools::RandomSeed() % 5 + 1); - } } } @@ -489,11 +319,6 @@ bool cmCTestMultiProcessHandler::CheckOutput() this->WriteCheckpoint(test); this->UnlockResources(test); this->RunningCount -= GetProcessorsUsed(test); - if (this->Properties[test]->RunSerial) - { - this->SerialTestRunning = false; - } - delete p; } return true; diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 1ca7e7c..6440fbc 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,7 +37,6 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); - void SetTestLoad(size_t max); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -94,7 +93,6 @@ protected: bool CheckCycles(); int FindMaxIndex(); inline size_t GetProcessorsUsed(int index); - std::string GetName(int index); void LockResources(int index); void UnlockResources(int index); @@ -118,13 +116,11 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once - size_t TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; bool HasCycles; bool Quiet; - bool SerialTestRunning; }; #endif diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 2f8016f..8b357ac 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -26,7 +26,6 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_SCHEDULE_RANDOM] = "SCHEDULE_RANDOM"; this->Arguments[ctt_STOP_TIME] = "STOP_TIME"; - this->Arguments[ctt_TEST_LOAD] = "TEST_LOAD"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -50,17 +49,6 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() } } this->CTest->SetTimeOut(timeout); - - if(const char* ctestTestLoad = - this->Makefile->GetDefinition("CTEST_TEST_LOAD")) - { - int testLoad = atoi(ctestTestLoad); - if (testLoad > 0) - { - this->CTest->SetTestLoad(testLoad); - } - } - cmCTestGenericHandler* handler = this->InitializeActualHandler(); if ( this->Values[ctt_START] || this->Values[ctt_END] || this->Values[ctt_STRIDE] ) @@ -115,14 +103,6 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { this->CTest->SetStopTime(this->Values[ctt_STOP_TIME]); } - if(this->Values[ctt_TEST_LOAD]) - { - int testLoad = atoi(this->Values[ctt_TEST_LOAD]); - if (testLoad > 0) - { - this->CTest->SetTestLoad(testLoad); - } - } handler->SetQuiet(this->Quiet); return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index 0dfca97..a1e5f36 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -60,7 +60,6 @@ protected: ctt_PARALLEL_LEVEL, ctt_SCHEDULE_RANDOM, ctt_STOP_TIME, - ctt_TEST_LOAD, ctt_LAST }; }; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 3f3c650..70b7f5c 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1060,7 +1060,6 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, new cmCTestBatchTestHandler : new cmCTestMultiProcessHandler; parallel->SetCTest(this->CTest); parallel->SetParallelLevel(this->CTest->GetParallelLevel()); - parallel->SetTestLoad(this->CTest->GetTestLoad()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 17dfafc..e3b7a2b 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,7 +294,6 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; - this->TestLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -394,11 +393,6 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } -void cmCTest::SetTestLoad(int max) -{ - this->TestLoad = max < 1 ? 0 : max; -} - //---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { @@ -826,10 +820,6 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); - if ( !this->GetCTestConfiguration("TestLoad").empty() ) - { - this->SetTestLoad(atoi(this->GetCTestConfiguration("TestLoad").c_str())); - } if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( @@ -2061,13 +2051,6 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } - if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) - { - i++; - int max = atoi(args[i].c_str()); - this->SetTestLoad(max); - } - if(this->CheckArgument(arg, "--no-compress-output")) { this->CompressTestOutput = false; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index c47c786..db3ea10 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,9 +161,6 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); - int GetTestLoad() { return this->TestLoad; } - void SetTestLoad(int); - /** * Check if CTest file exists */ @@ -502,8 +499,6 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; - int TestLoad; - int CompatibilityMode; // information for the --build-and-test options diff --git a/Source/ctest.cxx b/Source/ctest.cxx index afcbd61..e784759 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -98,7 +98,6 @@ static const char * cmDocumentationOptions[][2] = {"--test-command", "The test to run with the --build-and-test option."}, {"--test-timeout", "The time limit in seconds, internal use only."}, - {"--test-load", "CPU load threshold for starting new parallel tests."}, {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, {"--ctest-config", "The configuration file used to initialize CTest state " "when submitting dashboards."}, diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index dc13c9f..a3ce139 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -52,31 +52,3 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) endfunction() run_MergeOutput() - - -function(run_TestLoad name load) - set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) - set(RunCMake_TEST_NO_CLEAN 1) - file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") - file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " - add_test(TestLoad1 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") - add_test(TestLoad2 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") -") - run_cmake_command(${name} ${CMAKE_CTEST_COMMAND} -j2 --test-load ${load} --test-timeout 5) -endfunction() - -# Tests for the --test-load feature of ctest -# -# Spoof a load average value to make these tests more reliable. -set(ENV{__FAKE_LOAD_AVERAGE_FOR_CTEST_TESTING} 5) - -# Verify that new tests are not started when the load average exceeds -# our threshold. -run_TestLoad(test-load-fail 2) - -# Verify that new tests are started when the load average falls below -# our threshold. -run_TestLoad(test-load-pass 10) - -unset(ENV{__FAKE_LOAD_AVERAGE_FOR_CTEST_TESTING}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt deleted file mode 100644 index eafba1c..0000000 --- a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt +++ /dev/null @@ -1 +0,0 @@ -No tests were found!!! diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt deleted file mode 100644 index fb36bb1..0000000 --- a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt +++ /dev/null @@ -1,2 +0,0 @@ -^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad -\*\*\*\*\* WAITING, System Time: [0-9]+, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad2 requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt deleted file mode 100644 index 10f3293..0000000 --- a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt +++ /dev/null @@ -1 +0,0 @@ -^$ diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt deleted file mode 100644 index 7ee3dae..0000000 --- a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt +++ /dev/null @@ -1,7 +0,0 @@ -^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad - Start 1: TestLoad1 - Start 2: TestLoad2 -1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec -2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec -+ -100% tests passed, 0 tests failed out of 2 ----------------------------------------------------------------------- Summary of changes: Help/command/ctest_test.rst | 7 +- Help/manual/cmake-variables.7.rst | 2 - Help/manual/ctest.1.rst | 4 - Help/release/dev/ctest-test-load-option.rst | 6 - Help/variable/CMAKE_TEST_LOAD.rst | 9 - Help/variable/CTEST_TEST_LOAD.rst | 24 --- Modules/CTest.cmake | 3 - Modules/DartConfiguration.tcl.in | 4 - Source/CTest/cmCTestMultiProcessHandler.cxx | 193 +------------------- Source/CTest/cmCTestMultiProcessHandler.h | 4 - Source/CTest/cmCTestTestCommand.cxx | 20 -- Source/CTest/cmCTestTestCommand.h | 1 - Source/CTest/cmCTestTestHandler.cxx | 1 - Source/cmCTest.cxx | 17 -- Source/cmCTest.h | 5 - Source/ctest.cxx | 1 - Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 28 --- .../CTestCommandLine/test-load-fail-stderr.txt | 1 - .../CTestCommandLine/test-load-fail-stdout.txt | 2 - .../CTestCommandLine/test-load-pass-stderr.txt | 1 - .../CTestCommandLine/test-load-pass-stdout.txt | 7 - 21 files changed, 10 insertions(+), 330 deletions(-) delete mode 100644 Help/release/dev/ctest-test-load-option.rst delete mode 100644 Help/variable/CMAKE_TEST_LOAD.rst delete mode 100644 Help/variable/CTEST_TEST_LOAD.rst delete mode 100644 Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt delete mode 100644 Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt delete mode 100644 Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt delete mode 100644 Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt hooks/post-receive -- CMake From bill.hoffman at kitware.com Tue Jun 9 13:33:23 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Tue, 9 Jun 2015 13:33:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-360-g6ad4ea7 Message-ID: <20150609173323.102FFB0453@public.kitware.com> 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 6ad4ea7baa433296f82133898e6eaf45bd6cd08f (commit) via 1e3b22f6d1379a14406a3a3a89c504a7bca2a863 (commit) from c94dec14b30fcff16c91df0102ef96299e0ab147 (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=6ad4ea7baa433296f82133898e6eaf45bd6cd08f commit 6ad4ea7baa433296f82133898e6eaf45bd6cd08f Merge: c94dec1 1e3b22f Author: Bill Hoffman AuthorDate: Tue Jun 9 13:33:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 13:33:22 2015 -0400 Merge topic 'compiler-launcher' into next 1e3b22f6 Change launcher to use cmake ; lists to specifiy the launcher command. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1e3b22f6d1379a14406a3a3a89c504a7bca2a863 commit 1e3b22f6d1379a14406a3a3a89c504a7bca2a863 Author: Bill Hoffman AuthorDate: Tue Jun 9 13:32:20 2015 -0400 Commit: Bill Hoffman CommitDate: Tue Jun 9 13:32:20 2015 -0400 Change launcher to use cmake ; lists to specifiy the launcher command. diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst index 9a16687..3a59497 100644 --- a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -1,9 +1,9 @@ _COMPILER_LAUNCHER ---------------------------- +------------------------ This property is implemented only when ```` is ``C`` or ``CXX``. -Specify a string containing a command line for a compiler launching tool. +Specify a :ref:`;-list containing a command line for a compiler launching tool. The :ref:`Makefile Generators` and the :generator:`Ninja` generator will run this tool and pass the compiler and its arguments to the tool. Some example tools are distcc and ccache. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 6c630a5..f820b74 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -782,14 +782,16 @@ cmMakefileTargetGenerator const char *clauncher = this->Target->GetProperty(clauncher_prop); if (clauncher && *clauncher) { - // handle the case where launcher has its own arguments inside - // the variable handling spaces in the path, etc. - std::string cmd, args; - cmSystemTools::SplitProgramFromArgs(clauncher, - cmd, args); + std::vector launcher_cmd; + cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); std::string run_launcher = - this->LocalGenerator->EscapeForShell(cmd); - run_launcher += args; + this->LocalGenerator->EscapeForShell(launcher_cmd[0]); + // now put any arguments in if they exist + for(size_t i =1; i < launcher_cmd.size(); ++i) + { + run_launcher += " "; + run_launcher += launcher_cmd[i]; + } run_launcher += " "; compileCommands.front().insert(0, run_launcher); } diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 3e3c9cd..095e1f7 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -482,14 +482,16 @@ cmNinjaTargetGenerator const char *clauncher = this->Target->GetProperty(clauncher_prop); if (clauncher && *clauncher) { - // handle the case where launcher has its own arguments inside - // the variable handling spaces in the path, etc. - std::string cmd, args; - cmSystemTools::SplitProgramFromArgs(clauncher, - cmd, args); + std::vector launcher_cmd; + cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); std::string run_launcher = - this->LocalGenerator->EscapeForShell(cmd); - run_launcher += args; + this->LocalGenerator->EscapeForShell(launcher_cmd[0]); + // now put any arguments in if they exist + for(size_t i =1; i < launcher_cmd.size(); ++i) + { + run_launcher += " "; + run_launcher += launcher_cmd[i]; + } run_launcher += " "; compileCmds.front().insert(0, run_launcher); } @@ -507,7 +509,6 @@ cmNinjaTargetGenerator std::string cmdLine = this->GetLocalGenerator()->BuildCommandLine(compileCmds); - // Write the rule for compiling file of the given language. std::ostringstream comment; comment << "Rule for compiling " << lang << " files."; diff --git a/Tests/RunCMake/CompilerLauncher/C.cmake b/Tests/RunCMake/CompilerLauncher/C.cmake index 7bf2b57..67bf7c4 100644 --- a/Tests/RunCMake/CompilerLauncher/C.cmake +++ b/Tests/RunCMake/CompilerLauncher/C.cmake @@ -1,4 +1,4 @@ enable_language(C) -set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_COMMAND} -E env USED_LAUNCHER=1") +set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") set(CMAKE_VERBOSE_MAKEFILE TRUE) add_executable(main main.c) diff --git a/Tests/RunCMake/CompilerLauncher/CXX.cmake b/Tests/RunCMake/CompilerLauncher/CXX.cmake index 66e75c9..cdd3478 100644 --- a/Tests/RunCMake/CompilerLauncher/CXX.cmake +++ b/Tests/RunCMake/CompilerLauncher/CXX.cmake @@ -1,4 +1,4 @@ enable_language(CXX) -set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_COMMAND} -E env USED_LAUNCHER=1") +set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") set(CMAKE_VERBOSE_MAKEFILE TRUE) add_executable(main main.cxx) ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 4 ++-- Source/cmMakefileTargetGenerator.cxx | 16 +++++++++------- Source/cmNinjaTargetGenerator.cxx | 17 +++++++++-------- Tests/RunCMake/CompilerLauncher/C.cmake | 2 +- Tests/RunCMake/CompilerLauncher/CXX.cmake | 2 +- 5 files changed, 22 insertions(+), 19 deletions(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Tue Jun 9 13:51:24 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Tue, 9 Jun 2015 13:51:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-362-g61bf98d Message-ID: <20150609175124.02613AFC32@public.kitware.com> 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 61bf98d1fa5b00a1769cf6dfa7ef2bc4723f0004 (commit) via 29ac20ebcffb58b610b6713fff6b9ea475a86842 (commit) from 6ad4ea7baa433296f82133898e6eaf45bd6cd08f (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=61bf98d1fa5b00a1769cf6dfa7ef2bc4723f0004 commit 61bf98d1fa5b00a1769cf6dfa7ef2bc4723f0004 Merge: 6ad4ea7 29ac20e Author: Bill Hoffman AuthorDate: Tue Jun 9 13:51:23 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 13:51:23 2015 -0400 Merge topic 'compiler-launcher' into next 29ac20eb Fix reference to cmake list. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=29ac20ebcffb58b610b6713fff6b9ea475a86842 commit 29ac20ebcffb58b610b6713fff6b9ea475a86842 Author: Bill Hoffman AuthorDate: Tue Jun 9 13:50:57 2015 -0400 Commit: Bill Hoffman CommitDate: Tue Jun 9 13:50:57 2015 -0400 Fix reference to cmake list. diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst index 3a59497..0fe0b31 100644 --- a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -3,10 +3,10 @@ This property is implemented only when ```` is ``C`` or ``CXX``. -Specify a :ref:`;-list containing a command line for a compiler launching tool. -The :ref:`Makefile Generators` and the :generator:`Ninja` generator will -run this tool and pass the compiler and its arguments to the tool. Some -example tools are distcc and ccache. +Specify a :ref:`;-list ` containing a command line +for a compiler launching tool. The :ref:`Makefile Generators` and the +:generator:`Ninja` generator will run this tool and pass the compiler and +its arguments to the tool. Some example tools are distcc and ccache. This property is initialized by the value of the :variable:`CMAKE__COMPILER_LAUNCHER` variable if it is set ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 16:21:34 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 16:21:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-377-gef02f50 Message-ID: <20150609202134.64B60B001F@public.kitware.com> 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 ef02f50e55b46ee9c60b0a3f49065461a722b0ae (commit) via e9a218891cba249df9fd0612d1ea95b292e63833 (commit) via 5932837d98e99edba95af45c4880ed507dc5ddcd (commit) via f0f8ce3fc4da5900a7c38597787724f83addf982 (commit) via 07f329d2a9206332714f1de6fb15747c2e615b78 (commit) via ab3724d4200bad5803edc9d404264466d9b2ac5b (commit) via 056c6d00c251bec3bb9e542ca09a2d83254cdbab (commit) via 5ccfa1a41c046c9f0db384fda3151d815131dedc (commit) via 9119441562ebe7b54b6e2b7d7dd23b4f2d4deed4 (commit) via 640a2de1a06ce062809330538db9331502fbcf58 (commit) via f80c403068a5b98372da6af88263af5dae3ee095 (commit) via 3aa2efcfb4b2393b534b34bb0f5d5b47ccfb6f9a (commit) via 28c038f28d8594b2604b33e709a836063201e3e6 (commit) via 5caa629819570acee67864331c453c3535c1c77d (commit) via 2391aed0e2100d7cfa17738635729f371f99893d (commit) from 61bf98d1fa5b00a1769cf6dfa7ef2bc4723f0004 (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=ef02f50e55b46ee9c60b0a3f49065461a722b0ae commit ef02f50e55b46ee9c60b0a3f49065461a722b0ae Merge: 61bf98d e9a2188 Author: Stephen Kelly AuthorDate: Tue Jun 9 16:21:32 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 16:21:32 2015 -0400 Merge topic 'use-generator-target' into next e9a21889 Get the local generator from the GeneratorTarget. 5932837d cmMakefileTargetGenerator: Require cmGeneratorTarget. f0f8ce3f cmNinjaGenerator: Require cmGeneratorTarget. 07f329d2 cmGeneratorTarget: Require a cmLocalGenerator to construct. ab3724d4 cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget. 056c6d00 cmGlobalGenerator: Create GeneratorTargets with a local generator. 5ccfa1a4 GHS: Use a cmGeneratorTarget in generator API. 91194415 cmGeneratorTarget: Add accessor for cmLocalGenerator. 640a2de1 C::B: Get the Makefile from the LocalGenerator, not vice-versa. f80c4030 cmLocalGenerator: Constify GetIncludeDirectories method. 3aa2efcf QtAutogen: Get the global generator from the Makefile. 28c038f2 cmMakefile: Move IsRoot API from cmLocalGenerator. 5caa6298 cmMakefile: Use member directly instead of through method. 2391aed0 cmLocalUnixMakefileGenerator3: Remove unused method. diff --cc Source/cmMakefile.cxx index 2a9a806,cb9611a..615bedc --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@@ -129,10 -100,12 +129,10 @@@ public bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - std::list::reverse_iterator it = this->VarStack.rbegin(); - assert(it != this->VarStack.rend()); - ++it; - if(it == this->VarStack.rend()) + assert(this->VarScopeIter->Vars != this->VarTree.Root()); + if(this->VarScopeIter->Parent == this->VarTree.Root()) { - cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); + cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e9a218891cba249df9fd0612d1ea95b292e63833 commit e9a218891cba249df9fd0612d1ea95b292e63833 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:06 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 Get the local generator from the GeneratorTarget. The Makefile should not know the LocalGenerator at all diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7e9ccf3..dd60a1f 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1154,8 +1154,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(linkee); + cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); - cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index a8eef82..3bc0eb7 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(Makefile->GetLocalGenerator()) + , LocalGenerator(target->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 89ad02f..3d6ef57 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -521,10 +521,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() - ->GetGeneratorTarget(target); + cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); + cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9b78df3..12a1e42 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->Makefile->GetLocalGenerator(); + this->GeneratorTarget->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5932837d98e99edba95af45c4880ed507dc5ddcd commit 5932837d98e99edba95af45c4880ed507dc5ddcd Author: Stephen Kelly AuthorDate: Sat Jun 6 14:57:26 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmMakefileTargetGenerator: Require cmGeneratorTarget. diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 37b297e..416063f 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 450f573..660027c 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 923aa7b..7e9ccf3 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,16 +41,15 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target; + this->Target = target->Target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast( - this->Makefile->GetLocalGenerator()); + static_cast(target->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); + this->GeneratorTarget = target; cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 2e1b052..9182236 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmTarget* target); + cmMakefileTargetGenerator(cmGeneratorTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 25d929c..303ca63 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f0f8ce3fc4da5900a7c38597787724f83addf982 commit f0f8ce3fc4da5900a7c38597787724f83addf982 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:02:24 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmNinjaGenerator: Require cmGeneratorTarget. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index bbf03ff..2fe53bf 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target->Target) + : cmNinjaTargetGenerator(target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index b2aef68..fcf4a62 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -56,19 +56,18 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target), - Makefile(target->GetMakefile()), + Target(target->Target), + Makefile(target->Makefile), LocalGenerator( - static_cast(Makefile->GetLocalGenerator())), + static_cast(target->GetLocalGenerator())), Objects() { - this->GeneratorTarget = - this->GetGlobalGenerator()->GetGeneratorTarget(target); + this->GeneratorTarget = target; MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 4e7d8b3..fc361b2 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmTarget* target); + cmNinjaTargetGenerator(cmGeneratorTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index 42d6b46..c3bf011 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target->Target) {} + : cmNinjaTargetGenerator(target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=07f329d2a9206332714f1de6fb15747c2e615b78 commit 07f329d2a9206332714f1de6fb15747c2e615b78 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:14:04 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmGeneratorTarget: Require a cmLocalGenerator to construct. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 1c25f59..7aeb613 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,11 +220,12 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) + : Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); + this->LocalGenerator = lg; this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 645b792..675ee9f 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,7 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*); + cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); cmLocalGenerator* GetLocalGenerator() const; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 185756b..5d22cd7 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1460,7 +1460,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t); + cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1470,7 +1470,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ab3724d4200bad5803edc9d404264466d9b2ac5b commit ab3724d4200bad5803edc9d404264466d9b2ac5b Author: Stephen Kelly AuthorDate: Sat Jun 6 14:09:35 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fbdccac..185756b 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1955,10 +1955,10 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, } bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, - cmTarget const& target) const + cmGeneratorTarget* target) const { - if(target.GetType() == cmTarget::INTERFACE_LIBRARY - || target.GetPropertyAsBool("EXCLUDE_FROM_ALL")) + if(target->GetType() == cmTarget::INTERFACE_LIBRARY + || target->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL")) { // This target is excluded from its directory. return true; @@ -1967,7 +1967,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, { // This target is included in its directory. Check whether the // directory is excluded. - return this->IsExcluded(root, target.GetMakefile()->GetLocalGenerator()); + return this->IsExcluded(root, target->GetLocalGenerator()); } } @@ -2028,9 +2028,11 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() { cmTarget const& target = t->second; + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + // Consider the directory containing the target and all its // parents until something excludes the target. - for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, target); + for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); clg = clg->GetParent()) { // This local generator includes the target. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index d606cc9..8c092c0 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -390,7 +390,7 @@ protected: void FillProjectMap(); void CheckLocalGenerators(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; - bool IsExcluded(cmLocalGenerator* root, cmTarget const& target) const; + bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; void FillLocalGeneratorToTargetMap(); void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const std::string& name, const char* message, diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index ffd1cdc..0d3177c 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -289,7 +289,7 @@ public: const std::vector& GetLocalGenerators() const { return LocalGenerators; } - bool IsExcluded(cmLocalGenerator* root, cmTarget& target) { + bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) { return cmGlobalGenerator::IsExcluded(root, target); } int GetRuleCmdLength(const std::string& name) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 0f61225..6c34436 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -809,7 +809,7 @@ cmGlobalUnixMakefileGenerator3 localName, depends, commands, true); // add the all/all dependency - if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) + if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) { depends.clear(); depends.push_back(localName); @@ -877,7 +877,7 @@ cmGlobalUnixMakefileGenerator3 "Pre-install relink rule for target.", localName, depends, commands, true); - if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) + if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) { depends.clear(); depends.push_back(localName); diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 4db36fc..aac85f9 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -91,7 +91,7 @@ void cmLocalNinjaGenerator::Generate() // Add the target to "all" if required. if (!this->GetGlobalNinjaGenerator()->IsExcluded( this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0], - *t->second->Target)) + t->second)) this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target); delete tg; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=056c6d00c251bec3bb9e542ca09a2d83254cdbab commit 056c6d00c251bec3bb9e542ca09a2d83254cdbab Author: Stephen Kelly AuthorDate: Sat Jun 6 13:12:24 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmGlobalGenerator: Create GeneratorTargets with a local generator. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bd949bb..fbdccac 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1451,9 +1451,10 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) +void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) { cmGeneratorTargetsType generatorTargets; + cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) @@ -1482,7 +1483,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); + this->CreateGeneratorTargets(this->LocalGenerators[i]); } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f02df90..d606cc9 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -483,7 +483,7 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmMakefile* mf); + void CreateGeneratorTargets(cmLocalGenerator* lg); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index eeb6575..6ff388d 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -482,7 +482,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(mf); + gg->CreateGeneratorTargets(lg.get()); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5ccfa1a41c046c9f0db384fda3151d815131dedc commit 5ccfa1a41c046c9f0db384fda3151d815131dedc Author: Stephen Kelly AuthorDate: Sat Jun 6 13:02:59 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 01e2011..4f1ebe0 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,23 +21,23 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) - : Target(target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) + : Target(target->Target) , LocalGenerator(static_cast( - target->GetMakefile()->GetLocalGenerator())) - , Makefile(target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target)) + target->GetLocalGenerator())) + , Makefile(target->Target->GetMakefile()) + , TargetGroup(DetermineIfTargetGroup(target->Target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target); + this->RelBuildFileName += this->GetBuildFileName(target->Target); - std::string absPathToRoot = this->GetAbsPathToRoot(target); + std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index 8e81db8..fc9532a 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmTarget *target); + cmGhsMultiTargetGenerator(cmGeneratorTarget* target); virtual ~cmGhsMultiTargetGenerator(); diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 870b9b9..8e498dd 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second->Target); + cmGhsMultiTargetGenerator tg(l->second); tg.Generate(); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9119441562ebe7b54b6e2b7d7dd23b4f2d4deed4 commit 9119441562ebe7b54b6e2b7d7dd23b4f2d4deed4 Author: Stephen Kelly AuthorDate: Sat Jun 6 12:59:25 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmGeneratorTarget: Add accessor for cmLocalGenerator. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 67d0d54..1c25f59 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -228,6 +228,11 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } +cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const +{ + return this->LocalGenerator; +} + //---------------------------------------------------------------------------- int cmGeneratorTarget::GetType() const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index a8edcb8..645b792 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -26,6 +26,8 @@ class cmGeneratorTarget public: cmGeneratorTarget(cmTarget*); + cmLocalGenerator* GetLocalGenerator() const; + int GetType() const; std::string GetName() const; const char *GetProperty(const std::string& prop) const; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=640a2de1a06ce062809330538db9331502fbcf58 commit 640a2de1a06ce062809330538db9331502fbcf58 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:00:51 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 C::B: Get the Makefile from the LocalGenerator, not vice-versa. The Makefile is a configure-time concept, and the LocalGenerator is a generate time concept. The LocalGenerator should not be available from the Makefile. diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e374387..a31e832 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -313,7 +313,7 @@ void cmExtraCodeBlocksGenerator " "<\n"; - this->AppendTarget(fout, "all", 0, make.c_str(), mf, compiler.c_str()); + this->AppendTarget(fout, "all", 0, make.c_str(), lgs[0], compiler.c_str()); // add all executable and library targets and some of the GLOBAL // and UTILITY targets @@ -335,7 +335,7 @@ void cmExtraCodeBlocksGenerator makefile->GetHomeOutputDirectory())==0) { this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } } break; @@ -351,7 +351,7 @@ void cmExtraCodeBlocksGenerator } this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); break; case cmTarget::EXECUTABLE: case cmTarget::STATIC_LIBRARY: @@ -360,11 +360,11 @@ void cmExtraCodeBlocksGenerator case cmTarget::OBJECT_LIBRARY: { this->AppendTarget(fout, ti->first, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; this->AppendTarget(fout, fastTarget, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } break; default: @@ -519,14 +519,16 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( - cmMakefile* mf, cmTarget* target) const + cmLocalGenerator* lg, + cmTarget* target) const { + cmMakefile *mf = lg->GetMakefile(); // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = mf->GetCurrentBinaryDirectory(); filename += "/"; - filename += mf->GetLocalGenerator()->GetTargetDirectory(*target); + filename += lg->GetTargetDirectory(*target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -547,9 +549,10 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler) { + cmMakefile const* makefile = lg->GetMakefile(); std::string makefileName = makefile->GetCurrentBinaryDirectory(); makefileName += "/Makefile"; @@ -583,7 +586,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::string location; if ( target->GetType()==cmTarget::OBJECT_LIBRARY) { - location = this->CreateDummyTargetFile(const_cast(makefile), + location = this->CreateDummyTargetFile(const_cast(lg), target); } else @@ -618,8 +621,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::set uniqIncludeDirs; std::vector includes; - target->GetMakefile()->GetLocalGenerator()-> - GetIncludeDirectories(includes, gtgt, "C", buildType); + lg->GetIncludeDirectories(includes, gtgt, "C", buildType); uniqIncludeDirs.insert(includes.begin(), includes.end()); diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h index 97da1b8..e5ede9a 100644 --- a/Source/cmExtraCodeBlocksGenerator.h +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -48,7 +48,8 @@ private: void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); - std::string CreateDummyTargetFile(cmMakefile* mf, cmTarget* target) const; + std::string CreateDummyTargetFile(cmLocalGenerator* lg, + cmTarget* target) const; std::string GetCBCompilerId(const cmMakefile* mf); int GetCBTargetType(cmTarget* target); @@ -58,7 +59,7 @@ private: const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler); }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f80c403068a5b98372da6af88263af5dae3ee095 commit f80c403068a5b98372da6af88263af5dae3ee095 Author: Stephen Kelly AuthorDate: Sat Jun 6 12:57:19 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmLocalGenerator: Constify GetIncludeDirectories method. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5d0394f..2587764 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1330,7 +1330,7 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, const std::string& lang, const std::string& config, bool stripImplicitInclDirs - ) + ) const { // Need to decide whether to automatically include the source and // binary directories at the beginning of the include path. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index de9a177..9b1dfaf 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -185,7 +185,7 @@ public: cmGeneratorTarget* target, const std::string& lang = "C", const std::string& config = "", - bool stripImplicitInclDirs = true); + bool stripImplicitInclDirs = true) const; void AddCompileOptions(std::string& flags, cmTarget* target, const std::string& lang, const std::string& config); void AddCompileDefinitions(std::set& defines, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3aa2efcfb4b2393b534b34bb0f5d5b47ccfb6f9a commit 3aa2efcfb4b2393b534b34bb0f5d5b47ccfb6f9a Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:22 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 QtAutogen: Get the global generator from the Makefile. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index ef32c75..89ad02f 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -368,8 +368,7 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) #if defined(_WIN32) && !defined(__CYGWIN__) bool usePRE_BUILD = false; - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); - cmGlobalGenerator* gg = localGen->GetGlobalGenerator(); + cmGlobalGenerator* gg = makefile->GetGlobalGenerator(); if(gg->GetName().find("Visual Studio") != std::string::npos) { cmGlobalVisualStudioGenerator* vsgg = http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=28c038f28d8594b2604b33e709a836063201e3e6 commit 28c038f28d8594b2604b33e709a836063201e3e6 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:07:15 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmMakefile: Move IsRoot API from cmLocalGenerator. diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 4fe52dd..0f61225 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -529,7 +529,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalUnixMakefileGenerator3* lg) { // Only subdirectories need these rules. - if(lg->IsRootMakefile()) + if(lg->GetMakefile()->IsRootMakefile()) { return; } @@ -1034,7 +1034,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule static_cast(this->LocalGenerators[i]); // for the passed in makefile or if this is the top Makefile wripte out // the targets - if (lg2 == lg || lg->IsRootMakefile()) + if (lg2 == lg || lg->GetMakefile()->IsRootMakefile()) { // for each target Generate the rule files for each target. cmTargets& targets = lg2->GetMakefile()->GetTargets(); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5ed53d0..5d0394f 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -68,11 +68,6 @@ cmLocalGenerator::~cmLocalGenerator() delete this->Makefile; } -bool cmLocalGenerator::IsRootMakefile() const -{ - return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); -} - //---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index efdd487..de9a177 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -39,9 +39,6 @@ public: cmState::Snapshot snapshot); virtual ~cmLocalGenerator(); - /// @return whether we are processing the top CMakeLists.txt file. - bool IsRootMakefile() const; - /** * Generate the makefile for this directory. */ diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 427ae10..4db36fc 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -58,7 +58,7 @@ void cmLocalNinjaGenerator::Generate() #endif // We do that only once for the top CMakeLists.txt file. - if(this->IsRootMakefile()) + if(this->Makefile->IsRootMakefile()) { this->WriteBuildFileTop(); @@ -298,7 +298,7 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os) << "# Write statements declared in CMakeLists.txt:" << std::endl << "# " << this->Makefile->GetDefinition("CMAKE_CURRENT_LIST_FILE") << std::endl; - if(this->IsRootMakefile()) + if(this->Makefile->IsRootMakefile()) os << "# Which is the root file." << std::endl; cmGlobalNinjaGenerator::WriteDivider(os); os << std::endl; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 99210fa..cb9611a 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1608,6 +1608,11 @@ void cmMakefile::PopMacroScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); } +bool cmMakefile::IsRootMakefile() const +{ + return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); +} + //---------------------------------------------------------------------------- class cmMakefileCurrent { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 86bde0c..b551c55 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -79,6 +79,9 @@ public: */ ~cmMakefile(); + /// @return whether we are processing the top CMakeLists.txt file. + bool IsRootMakefile() const; + bool ReadListFile(const char* listfile); bool ReadDependentFile(const char* listfile, bool noPolicyScope = true); diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 176cb0d..2e17a7d 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -53,7 +53,7 @@ bool cmProjectCommand // CMAKE_PROJECT_NAME will match PROJECT_NAME, and cmake --build // will work. if(!this->Makefile->GetDefinition("CMAKE_PROJECT_NAME") - || (this->Makefile->GetLocalGenerator()->IsRootMakefile())) + || (this->Makefile->IsRootMakefile())) { this->Makefile->AddDefinition("CMAKE_PROJECT_NAME", args[0].c_str()); this->Makefile->AddCacheDefinition http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5caa629819570acee67864331c453c3535c1c77d commit 5caa629819570acee67864331c453c3535c1c77d Author: Stephen Kelly AuthorDate: Sat Jun 6 14:39:27 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmMakefile: Use member directly instead of through method. This function will not be around much longer anyway. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 63dbe27..99210fa 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -105,7 +105,7 @@ public: ++it; if(it == this->VarStack.rend()) { - cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); + cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2391aed0e2100d7cfa17738635729f371f99893d commit 2391aed0e2100d7cfa17738635729f371f99893d Author: Stephen Kelly AuthorDate: Sat Jun 6 13:06:47 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:18:11 2015 +0200 cmLocalUnixMakefileGenerator3: Remove unused method. diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index dcb3016..78fe19d 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -147,9 +147,6 @@ public: void AddImplicitDepends(cmTarget const& tgt, const std::string& lang, const char* obj, const char* src); - void AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target); - // write the target rules for the local Makefile into the stream void WriteLocalAllRules(std::ostream& ruleFileStream); ----------------------------------------------------------------------- Summary of changes: Source/cmExtraCodeBlocksGenerator.cxx | 24 +++++++++++++----------- Source/cmExtraCodeBlocksGenerator.h | 5 +++-- Source/cmGeneratorTarget.cxx | 10 ++++++++-- Source/cmGeneratorTarget.h | 4 +++- Source/cmGhsMultiTargetGenerator.cxx | 16 ++++++++-------- Source/cmGhsMultiTargetGenerator.h | 2 +- Source/cmGlobalGenerator.cxx | 21 ++++++++++++--------- Source/cmGlobalGenerator.h | 4 ++-- Source/cmGlobalNinjaGenerator.h | 2 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 8 ++++---- Source/cmLocalGenerator.cxx | 7 +------ Source/cmLocalGenerator.h | 5 +---- Source/cmLocalGhsMultiGenerator.cxx | 2 +- Source/cmLocalNinjaGenerator.cxx | 6 +++--- Source/cmLocalUnixMakefileGenerator3.h | 3 --- Source/cmMakefile.cxx | 7 ++++++- Source/cmMakefile.h | 3 +++ Source/cmMakefileExecutableTargetGenerator.cxx | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 13 +++++++------ Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 11 +++++------ Source/cmNinjaTargetGenerator.h | 2 +- Source/cmNinjaUtilityTargetGenerator.cxx | 2 +- Source/cmOSXBundleGenerator.cxx | 2 +- Source/cmProjectCommand.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 9 ++++----- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Source/cmake.cxx | 2 +- 31 files changed, 97 insertions(+), 87 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 16:30:34 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 16:30:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-381-g63b7ee1 Message-ID: <20150609203034.3C21AB02EB@public.kitware.com> 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 63b7ee1583b6ae3cdf5566b90d86454730ed61c3 (commit) via 5222eb6337fe0f7959887204b261ecb57b357bf1 (commit) via 38e773e2c6efb2c318165964bae4aa95a694cea1 (commit) via a2d5323bff7ede7cb62407c7ad69f8431860d06c (commit) from ef02f50e55b46ee9c60b0a3f49065461a722b0ae (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=63b7ee1583b6ae3cdf5566b90d86454730ed61c3 commit 63b7ee1583b6ae3cdf5566b90d86454730ed61c3 Merge: ef02f50 5222eb6 Author: Stephen Kelly AuthorDate: Tue Jun 9 16:30:33 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 16:30:33 2015 -0400 Merge topic 'minor-cleanups' into next 5222eb63 cmLocalGenerator: Remove ConfigureFinalPass. 38e773e2 project(): Remove unused variable. a2d5323b GHS: Remove unused and apparently ineffectual variable. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5222eb6337fe0f7959887204b261ecb57b357bf1 commit 5222eb6337fe0f7959887204b261ecb57b357bf1 Author: Stephen Kelly AuthorDate: Tue Jun 9 22:27:35 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:27:35 2015 +0200 cmLocalGenerator: Remove ConfigureFinalPass. Call the cmMakefile implementation directly. This is a configure-time construct. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bd949bb..9b02cbb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1540,7 +1540,7 @@ void cmGlobalGenerator::CheckLocalGenerators() cmState* state = this->GetCMakeInstance()->GetState(); for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) { - this->LocalGenerators[i]->ConfigureFinalPass(); + this->LocalGenerators[i]->GetMakefile()->ConfigureFinalPass(); cmTargets &targets = this->LocalGenerators[i]->GetMakefile()->GetTargets(); for (cmTargets::iterator l = targets.begin(); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5ed53d0..98accf9 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -113,11 +113,6 @@ void cmLocalGenerator::ComputeObjectMaxPath() this->ObjectMaxPathViolations.clear(); } -void cmLocalGenerator::ConfigureFinalPass() -{ - this->Makefile->ConfigureFinalPass(); -} - void cmLocalGenerator::TraceDependencies() { std::vector configs; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index efdd487..42df2b8 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -55,11 +55,6 @@ public: virtual void AddHelperCommands() {} /** - * Perform any final calculations prior to generation - */ - void ConfigureFinalPass(); - - /** * Generate the install rules files in this directory. */ void GenerateInstallRules(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=38e773e2c6efb2c318165964bae4aa95a694cea1 commit 38e773e2c6efb2c318165964bae4aa95a694cea1 Author: Stephen Kelly AuthorDate: Tue Jun 9 22:23:56 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:23:56 2015 +0200 project(): Remove unused variable. diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 176cb0d..90bc111 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -233,7 +233,6 @@ bool cmProjectCommand const char* include = this->Makefile->GetDefinition(extraInclude); if(include) { - std::string fullFilePath; bool readit = this->Makefile->ReadDependentFile(include); if(!readit && !cmSystemTools::GetFatalErrorOccured()) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a2d5323bff7ede7cb62407c7ad69f8431860d06c commit a2d5323bff7ede7cb62407c7ad69f8431860d06c Author: Stephen Kelly AuthorDate: Tue Jun 9 22:22:52 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 22:22:52 2015 +0200 GHS: Remove unused and apparently ineffectual variable. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 01e2011..4437c05 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -373,7 +373,6 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGhsMultiTargetGenerator gmtg(tg); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" ----------------------------------------------------------------------- Summary of changes: Source/cmGhsMultiTargetGenerator.cxx | 1 - Source/cmGlobalGenerator.cxx | 2 +- Source/cmLocalGenerator.cxx | 5 ----- Source/cmLocalGenerator.h | 5 ----- Source/cmProjectCommand.cxx | 1 - 5 files changed, 1 insertion(+), 13 deletions(-) hooks/post-receive -- CMake From domen.vrankar at gmail.com Tue Jun 9 17:26:23 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Tue, 9 Jun 2015 17:26:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-383-gf137f00 Message-ID: <20150609212623.40CE6B0189@public.kitware.com> 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 f137f00243965ee0f7312f8fcafb8b233689e199 (commit) via 568e75e2001297830f836c817b808fc6d5ac12f6 (commit) from 63b7ee1583b6ae3cdf5566b90d86454730ed61c3 (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=f137f00243965ee0f7312f8fcafb8b233689e199 commit f137f00243965ee0f7312f8fcafb8b233689e199 Merge: 63b7ee1 568e75e Author: Domen Vrankar AuthorDate: Tue Jun 9 17:26:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 17:26:22 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 568e75e2 Fixup! CPack Deb and RPM RunCMake tests diff --cc Tests/RunCMake/CMakeLists.txt index 646eb71,43df312..eee7bb4 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@@ -258,5 -261,6 +261,7 @@@ endif( if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) + add_RunCMake_test(CompilerLauncher) endif() + + add_RunCMake_test_group(CPack "DEB;RPM") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=568e75e2001297830f836c817b808fc6d5ac12f6 commit 568e75e2001297830f836c817b808fc6d5ac12f6 Author: Domen Vrankar AuthorDate: Tue Jun 9 23:24:08 2015 +0200 Commit: Domen Vrankar CommitDate: Tue Jun 9 23:24:08 2015 +0200 Fixup! CPack Deb and RPM RunCMake tests CTest has less information about the environment as CMake so prerequirements such as programs should be set in CMake. Example where this was a problem is MAC OS where /sw/bin is not necessarily in path but dpkg program is detected there by CMake while CTest misses it. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 4a4f54f..43df312 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -27,20 +27,35 @@ macro(add_RunCMake_test test) endmacro() function(add_RunCMake_test_group test types) - set(Test_Dir ${test}) + # create directory for common content + set(BASE_TEST_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${test}") + file(REMOVE_RECURSE "${BASE_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${BASE_TEST_BINARY_DIR}") foreach(type IN LISTS types) - add_test(NAME RunCMake.${test}_${type} COMMAND ${CMAKE_CMAKE_COMMAND} - -DTEST_TYPE=${type} - -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} - -DRunCMake_GENERATOR=${CMAKE_GENERATOR} - -DRunCMake_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} - -DRunCMake_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} - -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} - -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${Test_Dir} - -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${type}/${test} - -P "${CMAKE_CURRENT_SOURCE_DIR}/${Test_Dir}/RunCMakeTest.cmake" - ) + # generate prerequirements config file in cmake as ctest doesn't have as + # much system information so it is easier to set programs and environment + # values here + unset(${test}_${type}_FOUND_PREREQUIREMENTS) + include("${CMAKE_CURRENT_SOURCE_DIR}/${test}/${type}/Prerequirements.cmake") + get_test_prerequirements("${test}_${type}_FOUND_PREREQUIREMENTS" + "${BASE_TEST_BINARY_DIR}/${type}_config.cmake") + + # only add the test if prerequirements are met + if(${test}_${type}_FOUND_PREREQUIREMENTS) + add_test(NAME RunCMake.${test}_${type} COMMAND ${CMAKE_CMAKE_COMMAND} + -DTEST_TYPE=${type} + -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} + -DRunCMake_GENERATOR=${CMAKE_GENERATOR} + -DRunCMake_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} + -DRunCMake_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} + -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} + -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${test} + -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${type}/${test} + -Dconfig_file=${BASE_TEST_BINARY_DIR}/${type}_config.cmake + -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" + ) + endif() endforeach() endfunction() @@ -224,18 +239,6 @@ add_RunCMake_test(IfacePaths_INCLUDE_DIRECTORIES TEST_DIR IfacePaths) set(IfacePaths_SOURCES_ARGS -DTEST_PROP=SOURCES) add_RunCMake_test(IfacePaths_SOURCES TEST_DIR IfacePaths) -# CPack related tests -if(RPMBUILD_EXECUTABLE) - list(APPEND CPACK_TEST_GENERATORS "RPM") -endif() - -if(DPKG_EXECUTABLE) - list(APPEND CPACK_TEST_GENERATORS "DEB") -endif() - -add_RunCMake_test_group(CPack "${CPACK_TEST_GENERATORS}") -# end of CPack related tests - add_RunCMake_test(COMPILE_LANGUAGE-genex) # Matlab module related tests @@ -259,3 +262,5 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) endif() + +add_RunCMake_test_group(CPack "DEB;RPM") diff --git a/Tests/RunCMake/CPack/CPackTestHelpers.cmake b/Tests/RunCMake/CPack/CPackTestHelpers.cmake index 395fe22..7ea2a24 100644 --- a/Tests/RunCMake/CPack/CPackTestHelpers.cmake +++ b/Tests/RunCMake/CPack/CPackTestHelpers.cmake @@ -69,6 +69,7 @@ function(run_cpack_test TEST_NAME types build) -DGENERATOR_TYPE=${TEST_TYPE} "-Dsrc_dir=${RunCMake_SOURCE_DIR}" "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + "-Dconfig_file=${config_file}" -P "${RunCMake_SOURCE_DIR}/VerifyResult.cmake" ) endif() diff --git a/Tests/RunCMake/CPack/DEB/Helpers.cmake b/Tests/RunCMake/CPack/DEB/Helpers.cmake index f0fa932..4ed3fbd 100644 --- a/Tests/RunCMake/CPack/DEB/Helpers.cmake +++ b/Tests/RunCMake/CPack/DEB/Helpers.cmake @@ -1,12 +1,7 @@ set(ALL_FILES_GLOB "*.deb") -find_program(DEB_EXECUTABLE dpkg) -if(NOT DEB_EXECUTABLE) - message(FATAL_ERROR "error: missing dpkg executable required by the test") -endif() - function(getPackageContent FILE RESULT_VAR) - execute_process(COMMAND ${DEB_EXECUTABLE} -c ${FILE} + execute_process(COMMAND ${DPKG_EXECUTABLE} -c ${FILE} OUTPUT_VARIABLE package_content_ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/Tests/RunCMake/CPack/DEB/Prerequirements.cmake b/Tests/RunCMake/CPack/DEB/Prerequirements.cmake new file mode 100644 index 0000000..197b99d --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/Prerequirements.cmake @@ -0,0 +1,8 @@ +function(get_test_prerequirements found_var config_file) + find_program(DPKG_EXECUTABLE dpkg) + + if(DPKG_EXECUTABLE) + file(WRITE "${config_file}" "set(DPKG_EXECUTABLE \"${DPKG_EXECUTABLE}\")") + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/README.txt b/Tests/RunCMake/CPack/README.txt index d00f688..365c737 100644 --- a/Tests/RunCMake/CPack/README.txt +++ b/Tests/RunCMake/CPack/README.txt @@ -10,7 +10,7 @@ CPack test root directory: 'Tests/RunCMake/CPack'. All phases are executed separately for each generator that is bound to a test. Tests for each generator are subtests of test 'RunCMake.CPack_'. -Each test must also be added to 'RunCMakeTest.cmake' script located in Cpack +Each test must also be added to 'RunCMakeTest.cmake' script located in CPack test root directory. Line that adds a test is: run_cpack_test( "") @@ -58,18 +58,18 @@ CMake script '/-ExpectedFiles.cmake' is required by this step and must contain - EXPECTED_FILES_COUNT variable that contains the number of expected files that will be generated (0 or more) -- EXPECTED_FILE_ that contains globbing expression - that uniquelly defines expected file name (will be used to find expected file) +- EXPECTED_FILE_ that contains globing expression + that uniquely defines expected file name (will be used to find expected file) and should be present once for each expected file - EXPECTED_FILE_CONTENT_ that contains regular expression of files that should be present in generated file and should be present once for each expected file -Optional verification phase is generator speciffic and is optionaly executed. +Optional verification phase is generator specific and is optionaly executed. This phase is executed if '/-VerifyResult.cmake' script exists. In case that the script doesn't exist VerifyResult.cmake script automatically -prints out standard outpu and standard error from CPack execution phase that +prints out standard output and standard error from CPack execution phase that is compared with '/-stdout.txt' regular expression and '/-stderr.txt' regular expresson respectively. @@ -86,6 +86,14 @@ To add a new generator we must listed + RESULT_VAR that will tell the function which variable in parent scope should contain the result (list of files inside package file) +- add 'Prerequirements.cmake' script to generator directory. In this script a + function named 'get_test_prerequirements' must exist. This function should + set a variable in parent scope (name of the variable is the first parameter) + that tells if prerequirements for test execution are met (certain programs, + OS specifics, ...) and create a config file (name of the variable which + contains file name and path is provided with the second parameter) that + should contain 'set' commands for variables that will later be used in tests + (e.g. location of dpkg program for DEB packages) - add tests the same way as described above - add generator to 'add_RunCMake_test_group' function call that is located in RunCMake CMakeLists.txt file diff --git a/Tests/RunCMake/CPack/RPM/Helpers.cmake b/Tests/RunCMake/CPack/RPM/Helpers.cmake index 0e2dca9..98cdad8 100644 --- a/Tests/RunCMake/CPack/RPM/Helpers.cmake +++ b/Tests/RunCMake/CPack/RPM/Helpers.cmake @@ -1,10 +1,5 @@ set(ALL_FILES_GLOB "*.rpm") -find_program(RPM_EXECUTABLE rpm) -if(NOT RPM_EXECUTABLE) - message(FATAL_ERROR "error: missing rpm executable required by the test") -endif() - function(getPackageContent FILE RESULT_VAR) execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${FILE} OUTPUT_VARIABLE package_content_ diff --git a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake new file mode 100644 index 0000000..51b77a9 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake @@ -0,0 +1,8 @@ +function(get_test_prerequirements found_var config_file) + find_program(RPM_EXECUTABLE rpm) + + if(RPM_EXECUTABLE) + file(WRITE "${config_file}" "set(RPM_EXECUTABLE \"${RPM_EXECUTABLE}\")") + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake index d9f32c5..0cc32d4 100644 --- a/Tests/RunCMake/CPack/VerifyResult.cmake +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -1,5 +1,6 @@ cmake_policy(SET CMP0007 NEW) +include("${config_file}") include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") # check that expected generated files exist and contain expected content ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CMakeLists.txt | 53 +++++++++++++----------- Tests/RunCMake/CPack/CPackTestHelpers.cmake | 1 + Tests/RunCMake/CPack/DEB/Helpers.cmake | 7 +--- Tests/RunCMake/CPack/DEB/Prerequirements.cmake | 8 ++++ Tests/RunCMake/CPack/README.txt | 18 +++++--- Tests/RunCMake/CPack/RPM/Helpers.cmake | 5 --- Tests/RunCMake/CPack/RPM/Prerequirements.cmake | 8 ++++ Tests/RunCMake/CPack/VerifyResult.cmake | 1 + 8 files changed, 61 insertions(+), 40 deletions(-) create mode 100644 Tests/RunCMake/CPack/DEB/Prerequirements.cmake create mode 100644 Tests/RunCMake/CPack/RPM/Prerequirements.cmake hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 17:42:01 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 17:42:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-392-gb3b7311 Message-ID: <20150609214201.4CA20A9455@public.kitware.com> 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 b3b7311cb83d335afcff7091f9f2e96d3d363ea8 (commit) via 014ea4ea7a1e89b820ec26c3fad3cc9cb679247d (commit) via 44f28f251662b3698241fbf9254bece31524293f (commit) via 3a4c05e38d92e47507d5f6437fe378d93d76dc61 (commit) via 82d0b4cbe30859dc26caec2f2e6faff11febd806 (commit) via 2d1d12bcf498a3e7a58ff7d11467c89c77e29211 (commit) via b995b1706f8444b0eee51463b1d0b47c62c81515 (commit) via d38b825e354a18b334f0557b873b6850fa41e9fe (commit) via 5497b5a41645a1df739fc0dff1bfcd5c57d04173 (commit) from f137f00243965ee0f7312f8fcafb8b233689e199 (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=b3b7311cb83d335afcff7091f9f2e96d3d363ea8 commit b3b7311cb83d335afcff7091f9f2e96d3d363ea8 Merge: f137f00 014ea4e Author: Stephen Kelly AuthorDate: Tue Jun 9 17:42:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 17:42:00 2015 -0400 Merge topic 'use-generator-target' into next 014ea4ea Get the local generator from the GeneratorTarget. 44f28f25 cmMakefileTargetGenerator: Require cmGeneratorTarget. 3a4c05e3 cmNinjaGenerator: Require cmGeneratorTarget. 82d0b4cb cmGeneratorTarget: Require a cmLocalGenerator to construct. 2d1d12bc cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget. b995b170 cmGlobalGenerator: Create GeneratorTargets with a local generator. d38b825e GHS: Use a cmGeneratorTarget in generator API. 5497b5a4 GHS: Remove unused and apparently ineffectual variable. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=014ea4ea7a1e89b820ec26c3fad3cc9cb679247d commit 014ea4ea7a1e89b820ec26c3fad3cc9cb679247d Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:06 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:34 2015 +0200 Get the local generator from the GeneratorTarget. The Makefile should not know the LocalGenerator at all diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7e9ccf3..dd60a1f 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1154,8 +1154,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(linkee); + cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); - cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index a8eef82..3bc0eb7 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(Makefile->GetLocalGenerator()) + , LocalGenerator(target->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 89ad02f..3d6ef57 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -521,10 +521,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() - ->GetGeneratorTarget(target); + cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); + cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9b78df3..12a1e42 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->Makefile->GetLocalGenerator(); + this->GeneratorTarget->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44f28f251662b3698241fbf9254bece31524293f commit 44f28f251662b3698241fbf9254bece31524293f Author: Stephen Kelly AuthorDate: Sat Jun 6 14:57:26 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:33 2015 +0200 cmMakefileTargetGenerator: Require cmGeneratorTarget. diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 37b297e..416063f 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 450f573..660027c 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 923aa7b..7e9ccf3 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,16 +41,15 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target; + this->Target = target->Target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast( - this->Makefile->GetLocalGenerator()); + static_cast(target->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); + this->GeneratorTarget = target; cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 2e1b052..9182236 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmTarget* target); + cmMakefileTargetGenerator(cmGeneratorTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 25d929c..303ca63 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3a4c05e38d92e47507d5f6437fe378d93d76dc61 commit 3a4c05e38d92e47507d5f6437fe378d93d76dc61 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:02:24 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:33 2015 +0200 cmNinjaGenerator: Require cmGeneratorTarget. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index bbf03ff..2fe53bf 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target->Target) + : cmNinjaTargetGenerator(target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index b2aef68..fcf4a62 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -56,19 +56,18 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target), - Makefile(target->GetMakefile()), + Target(target->Target), + Makefile(target->Makefile), LocalGenerator( - static_cast(Makefile->GetLocalGenerator())), + static_cast(target->GetLocalGenerator())), Objects() { - this->GeneratorTarget = - this->GetGlobalGenerator()->GetGeneratorTarget(target); + this->GeneratorTarget = target; MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 4e7d8b3..fc361b2 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmTarget* target); + cmNinjaTargetGenerator(cmGeneratorTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index 42d6b46..c3bf011 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target->Target) {} + : cmNinjaTargetGenerator(target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=82d0b4cbe30859dc26caec2f2e6faff11febd806 commit 82d0b4cbe30859dc26caec2f2e6faff11febd806 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:14:04 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:33 2015 +0200 cmGeneratorTarget: Require a cmLocalGenerator to construct. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 1c25f59..7aeb613 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,11 +220,12 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) + : Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); + this->LocalGenerator = lg; this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 645b792..675ee9f 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,7 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*); + cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); cmLocalGenerator* GetLocalGenerator() const; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 185756b..5d22cd7 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1460,7 +1460,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t); + cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1470,7 +1470,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d1d12bcf498a3e7a58ff7d11467c89c77e29211 commit 2d1d12bcf498a3e7a58ff7d11467c89c77e29211 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:09:35 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:33 2015 +0200 cmGlobalGenerator: Base exclusion computation on cmGeneratorTarget. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index fbdccac..185756b 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1955,10 +1955,10 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, } bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, - cmTarget const& target) const + cmGeneratorTarget* target) const { - if(target.GetType() == cmTarget::INTERFACE_LIBRARY - || target.GetPropertyAsBool("EXCLUDE_FROM_ALL")) + if(target->GetType() == cmTarget::INTERFACE_LIBRARY + || target->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL")) { // This target is excluded from its directory. return true; @@ -1967,7 +1967,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, { // This target is included in its directory. Check whether the // directory is excluded. - return this->IsExcluded(root, target.GetMakefile()->GetLocalGenerator()); + return this->IsExcluded(root, target->GetLocalGenerator()); } } @@ -2028,9 +2028,11 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() { cmTarget const& target = t->second; + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + // Consider the directory containing the target and all its // parents until something excludes the target. - for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, target); + for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); clg = clg->GetParent()) { // This local generator includes the target. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index d606cc9..8c092c0 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -390,7 +390,7 @@ protected: void FillProjectMap(); void CheckLocalGenerators(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; - bool IsExcluded(cmLocalGenerator* root, cmTarget const& target) const; + bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; void FillLocalGeneratorToTargetMap(); void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const std::string& name, const char* message, diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index ffd1cdc..0d3177c 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -289,7 +289,7 @@ public: const std::vector& GetLocalGenerators() const { return LocalGenerators; } - bool IsExcluded(cmLocalGenerator* root, cmTarget& target) { + bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) { return cmGlobalGenerator::IsExcluded(root, target); } int GetRuleCmdLength(const std::string& name) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 0f61225..6c34436 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -809,7 +809,7 @@ cmGlobalUnixMakefileGenerator3 localName, depends, commands, true); // add the all/all dependency - if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) + if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) { depends.clear(); depends.push_back(localName); @@ -877,7 +877,7 @@ cmGlobalUnixMakefileGenerator3 "Pre-install relink rule for target.", localName, depends, commands, true); - if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) + if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) { depends.clear(); depends.push_back(localName); diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 4db36fc..aac85f9 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -91,7 +91,7 @@ void cmLocalNinjaGenerator::Generate() // Add the target to "all" if required. if (!this->GetGlobalNinjaGenerator()->IsExcluded( this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0], - *t->second->Target)) + t->second)) this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target); delete tg; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b995b1706f8444b0eee51463b1d0b47c62c81515 commit b995b1706f8444b0eee51463b1d0b47c62c81515 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:12:24 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:33 2015 +0200 cmGlobalGenerator: Create GeneratorTargets with a local generator. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bd949bb..fbdccac 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1451,9 +1451,10 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) +void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) { cmGeneratorTargetsType generatorTargets; + cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) @@ -1482,7 +1483,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); + this->CreateGeneratorTargets(this->LocalGenerators[i]); } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f02df90..d606cc9 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -483,7 +483,7 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmMakefile* mf); + void CreateGeneratorTargets(cmLocalGenerator* lg); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index eeb6575..6ff388d 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -482,7 +482,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(mf); + gg->CreateGeneratorTargets(lg.get()); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d38b825e354a18b334f0557b873b6850fa41e9fe commit d38b825e354a18b334f0557b873b6850fa41e9fe Author: Stephen Kelly AuthorDate: Sat Jun 6 13:02:59 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:32 2015 +0200 GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 4437c05..a0ea079 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,23 +21,23 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) - : Target(target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) + : Target(target->Target) , LocalGenerator(static_cast( - target->GetMakefile()->GetLocalGenerator())) - , Makefile(target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target)) + target->GetLocalGenerator())) + , Makefile(target->Target->GetMakefile()) + , TargetGroup(DetermineIfTargetGroup(target->Target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target); + this->RelBuildFileName += this->GetBuildFileName(target->Target); - std::string absPathToRoot = this->GetAbsPathToRoot(target); + std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index 8e81db8..fc9532a 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmTarget *target); + cmGhsMultiTargetGenerator(cmGeneratorTarget* target); virtual ~cmGhsMultiTargetGenerator(); diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 870b9b9..8e498dd 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second->Target); + cmGhsMultiTargetGenerator tg(l->second); tg.Generate(); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5497b5a41645a1df739fc0dff1bfcd5c57d04173 commit 5497b5a41645a1df739fc0dff1bfcd5c57d04173 Author: Stephen Kelly AuthorDate: Tue Jun 9 22:22:52 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:41:30 2015 +0200 GHS: Remove unused and apparently ineffectual variable. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 01e2011..4437c05 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -373,7 +373,6 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGhsMultiTargetGenerator gmtg(tg); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 17:42:51 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 17:42:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-395-gce04885 Message-ID: <20150609214251.077B2AAC9E@public.kitware.com> 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 ce04885e702fc43249723e4ddccf7754309b1308 (commit) via 22d09ecf33f3d07925003995b76b7e8aa788c04f (commit) via 821a711b6ff59fd1fa0c0cbaa43178cee1718078 (commit) from b3b7311cb83d335afcff7091f9f2e96d3d363ea8 (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=ce04885e702fc43249723e4ddccf7754309b1308 commit ce04885e702fc43249723e4ddccf7754309b1308 Merge: b3b7311 22d09ec Author: Stephen Kelly AuthorDate: Tue Jun 9 17:42:50 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 17:42:50 2015 -0400 Merge topic 'minor-cleanups' into next 22d09ecf cmLocalGenerator: Remove ConfigureFinalPass. 821a711b project(): Remove unused variable. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=22d09ecf33f3d07925003995b76b7e8aa788c04f commit 22d09ecf33f3d07925003995b76b7e8aa788c04f Author: Stephen Kelly AuthorDate: Tue Jun 9 22:27:35 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:42:13 2015 +0200 cmLocalGenerator: Remove ConfigureFinalPass. Call the cmMakefile implementation directly. This is a configure-time construct. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bd949bb..9b02cbb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1540,7 +1540,7 @@ void cmGlobalGenerator::CheckLocalGenerators() cmState* state = this->GetCMakeInstance()->GetState(); for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) { - this->LocalGenerators[i]->ConfigureFinalPass(); + this->LocalGenerators[i]->GetMakefile()->ConfigureFinalPass(); cmTargets &targets = this->LocalGenerators[i]->GetMakefile()->GetTargets(); for (cmTargets::iterator l = targets.begin(); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5ed53d0..98accf9 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -113,11 +113,6 @@ void cmLocalGenerator::ComputeObjectMaxPath() this->ObjectMaxPathViolations.clear(); } -void cmLocalGenerator::ConfigureFinalPass() -{ - this->Makefile->ConfigureFinalPass(); -} - void cmLocalGenerator::TraceDependencies() { std::vector configs; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index efdd487..42df2b8 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -55,11 +55,6 @@ public: virtual void AddHelperCommands() {} /** - * Perform any final calculations prior to generation - */ - void ConfigureFinalPass(); - - /** * Generate the install rules files in this directory. */ void GenerateInstallRules(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=821a711b6ff59fd1fa0c0cbaa43178cee1718078 commit 821a711b6ff59fd1fa0c0cbaa43178cee1718078 Author: Stephen Kelly AuthorDate: Tue Jun 9 22:23:56 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 9 23:42:13 2015 +0200 project(): Remove unused variable. diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 176cb0d..90bc111 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -233,7 +233,6 @@ bool cmProjectCommand const char* include = this->Makefile->GetDefinition(extraInclude); if(include) { - std::string fullFilePath; bool readit = this->Makefile->ReadDependentFile(include); if(!readit && !cmSystemTools::GetFatalErrorOccured()) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 18:42:43 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 18:42:43 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-397-gb69e00e Message-ID: <20150609224243.7B887ABF3B@public.kitware.com> 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 b69e00ef11fcb1f5be98c89521c5b68606dd6ccc (commit) via b2b45dbc92f9035986a0243099b4b4158873d6eb (commit) from ce04885e702fc43249723e4ddccf7754309b1308 (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=b69e00ef11fcb1f5be98c89521c5b68606dd6ccc commit b69e00ef11fcb1f5be98c89521c5b68606dd6ccc Merge: ce04885 b2b45db Author: Stephen Kelly AuthorDate: Tue Jun 9 18:42:42 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 18:42:42 2015 -0400 Merge topic 'use-generator-target' into next b2b45dbc Revert topic. diff --cc Source/cmMakefile.cxx index 615bedc,63dbe27..2a9a806 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@@ -129,10 -100,12 +129,10 @@@ public bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - std::list::reverse_iterator it = this->VarStack.rbegin(); - assert(it != this->VarStack.rend()); - ++it; - if(it == this->VarStack.rend()) + assert(this->VarScopeIter->Vars != this->VarTree.Root()); + if(this->VarScopeIter->Parent == this->VarTree.Root()) { - cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); + cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b2b45dbc92f9035986a0243099b4b4158873d6eb commit b2b45dbc92f9035986a0243099b4b4158873d6eb Author: Stephen Kelly AuthorDate: Wed Jun 10 00:41:56 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 00:42:15 2015 +0200 Revert topic. diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index a31e832..e374387 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -313,7 +313,7 @@ void cmExtraCodeBlocksGenerator " "<\n"; - this->AppendTarget(fout, "all", 0, make.c_str(), lgs[0], compiler.c_str()); + this->AppendTarget(fout, "all", 0, make.c_str(), mf, compiler.c_str()); // add all executable and library targets and some of the GLOBAL // and UTILITY targets @@ -335,7 +335,7 @@ void cmExtraCodeBlocksGenerator makefile->GetHomeOutputDirectory())==0) { this->AppendTarget(fout, ti->first, 0, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); } } break; @@ -351,7 +351,7 @@ void cmExtraCodeBlocksGenerator } this->AppendTarget(fout, ti->first, 0, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); break; case cmTarget::EXECUTABLE: case cmTarget::STATIC_LIBRARY: @@ -360,11 +360,11 @@ void cmExtraCodeBlocksGenerator case cmTarget::OBJECT_LIBRARY: { this->AppendTarget(fout, ti->first, &ti->second, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; this->AppendTarget(fout, fastTarget, &ti->second, - make.c_str(), *lg, compiler.c_str()); + make.c_str(), makefile, compiler.c_str()); } break; default: @@ -519,16 +519,14 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( - cmLocalGenerator* lg, - cmTarget* target) const + cmMakefile* mf, cmTarget* target) const { - cmMakefile *mf = lg->GetMakefile(); // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = mf->GetCurrentBinaryDirectory(); filename += "/"; - filename += lg->GetTargetDirectory(*target); + filename += mf->GetLocalGenerator()->GetTargetDirectory(*target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -549,10 +547,9 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, cmTarget* target, const char* make, - const cmLocalGenerator* lg, + const cmMakefile* makefile, const char* compiler) { - cmMakefile const* makefile = lg->GetMakefile(); std::string makefileName = makefile->GetCurrentBinaryDirectory(); makefileName += "/Makefile"; @@ -586,7 +583,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::string location; if ( target->GetType()==cmTarget::OBJECT_LIBRARY) { - location = this->CreateDummyTargetFile(const_cast(lg), + location = this->CreateDummyTargetFile(const_cast(makefile), target); } else @@ -621,7 +618,8 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::set uniqIncludeDirs; std::vector includes; - lg->GetIncludeDirectories(includes, gtgt, "C", buildType); + target->GetMakefile()->GetLocalGenerator()-> + GetIncludeDirectories(includes, gtgt, "C", buildType); uniqIncludeDirs.insert(includes.begin(), includes.end()); diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h index e5ede9a..97da1b8 100644 --- a/Source/cmExtraCodeBlocksGenerator.h +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -48,8 +48,7 @@ private: void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); - std::string CreateDummyTargetFile(cmLocalGenerator* lg, - cmTarget* target) const; + std::string CreateDummyTargetFile(cmMakefile* mf, cmTarget* target) const; std::string GetCBCompilerId(const cmMakefile* mf); int GetCBTargetType(cmTarget* target); @@ -59,7 +58,7 @@ private: const std::string& targetName, cmTarget* target, const char* make, - const cmLocalGenerator* lg, + const cmMakefile* makefile, const char* compiler); }; diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 7aeb613..67d0d54 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,20 +220,14 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) - : Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = lg; + this->LocalGenerator = this->Makefile->GetLocalGenerator(); this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } -cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const -{ - return this->LocalGenerator; -} - //---------------------------------------------------------------------------- int cmGeneratorTarget::GetType() const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 675ee9f..a8edcb8 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,9 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); - - cmLocalGenerator* GetLocalGenerator() const; + cmGeneratorTarget(cmTarget*); int GetType() const; std::string GetName() const; diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index a0ea079..01e2011 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,23 +21,23 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) - : Target(target->Target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) + : Target(target) , LocalGenerator(static_cast( - target->GetLocalGenerator())) - , Makefile(target->Target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target->Target)) + target->GetMakefile()->GetLocalGenerator())) + , Makefile(target->GetMakefile()) + , TargetGroup(DetermineIfTargetGroup(target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target->Target); + this->RelBuildFileName += this->GetBuildFileName(target); - std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); + std::string absPathToRoot = this->GetAbsPathToRoot(target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; @@ -373,6 +373,7 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { + cmGhsMultiTargetGenerator gmtg(tg); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index fc9532a..8e81db8 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmGeneratorTarget* target); + cmGhsMultiTargetGenerator(cmTarget *target); virtual ~cmGhsMultiTargetGenerator(); diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 5d22cd7..bd949bb 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1451,16 +1451,15 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) +void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) { cmGeneratorTargetsType generatorTargets; - cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); + cmGeneratorTarget* gt = new cmGeneratorTarget(t); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1470,7 +1469,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } @@ -1483,7 +1482,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]); + this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); } } @@ -1955,10 +1954,10 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, } bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, - cmGeneratorTarget* target) const + cmTarget const& target) const { - if(target->GetType() == cmTarget::INTERFACE_LIBRARY - || target->Target->GetPropertyAsBool("EXCLUDE_FROM_ALL")) + if(target.GetType() == cmTarget::INTERFACE_LIBRARY + || target.GetPropertyAsBool("EXCLUDE_FROM_ALL")) { // This target is excluded from its directory. return true; @@ -1967,7 +1966,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root, { // This target is included in its directory. Check whether the // directory is excluded. - return this->IsExcluded(root, target->GetLocalGenerator()); + return this->IsExcluded(root, target.GetMakefile()->GetLocalGenerator()); } } @@ -2028,11 +2027,9 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() { cmTarget const& target = t->second; - cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); - // Consider the directory containing the target and all its // parents until something excludes the target. - for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, gt); + for(cmLocalGenerator* clg = lg; clg && !this->IsExcluded(clg, target); clg = clg->GetParent()) { // This local generator includes the target. diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 8c092c0..f02df90 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -390,7 +390,7 @@ protected: void FillProjectMap(); void CheckLocalGenerators(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; - bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; + bool IsExcluded(cmLocalGenerator* root, cmTarget const& target) const; void FillLocalGeneratorToTargetMap(); void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const std::string& name, const char* message, @@ -483,7 +483,7 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmLocalGenerator* lg); + void CreateGeneratorTargets(cmMakefile* mf); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 0d3177c..ffd1cdc 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -289,7 +289,7 @@ public: const std::vector& GetLocalGenerators() const { return LocalGenerators; } - bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) { + bool IsExcluded(cmLocalGenerator* root, cmTarget& target) { return cmGlobalGenerator::IsExcluded(root, target); } int GetRuleCmdLength(const std::string& name) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 6c34436..4fe52dd 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -529,7 +529,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalUnixMakefileGenerator3* lg) { // Only subdirectories need these rules. - if(lg->GetMakefile()->IsRootMakefile()) + if(lg->IsRootMakefile()) { return; } @@ -809,7 +809,7 @@ cmGlobalUnixMakefileGenerator3 localName, depends, commands, true); // add the all/all dependency - if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) + if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) { depends.clear(); depends.push_back(localName); @@ -877,7 +877,7 @@ cmGlobalUnixMakefileGenerator3 "Pre-install relink rule for target.", localName, depends, commands, true); - if(!this->IsExcluded(this->LocalGenerators[0], gtarget)) + if(!this->IsExcluded(this->LocalGenerators[0], *gtarget->Target)) { depends.clear(); depends.push_back(localName); @@ -1034,7 +1034,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule static_cast(this->LocalGenerators[i]); // for the passed in makefile or if this is the top Makefile wripte out // the targets - if (lg2 == lg || lg->GetMakefile()->IsRootMakefile()) + if (lg2 == lg || lg->IsRootMakefile()) { // for each target Generate the rule files for each target. cmTargets& targets = lg2->GetMakefile()->GetTargets(); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 2587764..5ed53d0 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -68,6 +68,11 @@ cmLocalGenerator::~cmLocalGenerator() delete this->Makefile; } +bool cmLocalGenerator::IsRootMakefile() const +{ + return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); +} + //---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { @@ -1330,7 +1335,7 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, const std::string& lang, const std::string& config, bool stripImplicitInclDirs - ) const + ) { // Need to decide whether to automatically include the source and // binary directories at the beginning of the include path. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 9b1dfaf..efdd487 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -39,6 +39,9 @@ public: cmState::Snapshot snapshot); virtual ~cmLocalGenerator(); + /// @return whether we are processing the top CMakeLists.txt file. + bool IsRootMakefile() const; + /** * Generate the makefile for this directory. */ @@ -185,7 +188,7 @@ public: cmGeneratorTarget* target, const std::string& lang = "C", const std::string& config = "", - bool stripImplicitInclDirs = true) const; + bool stripImplicitInclDirs = true); void AddCompileOptions(std::string& flags, cmTarget* target, const std::string& lang, const std::string& config); void AddCompileDefinitions(std::set& defines, diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 8e498dd..870b9b9 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second); + cmGhsMultiTargetGenerator tg(l->second->Target); tg.Generate(); } } diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index aac85f9..427ae10 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -58,7 +58,7 @@ void cmLocalNinjaGenerator::Generate() #endif // We do that only once for the top CMakeLists.txt file. - if(this->Makefile->IsRootMakefile()) + if(this->IsRootMakefile()) { this->WriteBuildFileTop(); @@ -91,7 +91,7 @@ void cmLocalNinjaGenerator::Generate() // Add the target to "all" if required. if (!this->GetGlobalNinjaGenerator()->IsExcluded( this->GetGlobalNinjaGenerator()->GetLocalGenerators()[0], - t->second)) + *t->second->Target)) this->GetGlobalNinjaGenerator()->AddDependencyToAll(t->second->Target); delete tg; } @@ -298,7 +298,7 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os) << "# Write statements declared in CMakeLists.txt:" << std::endl << "# " << this->Makefile->GetDefinition("CMAKE_CURRENT_LIST_FILE") << std::endl; - if(this->Makefile->IsRootMakefile()) + if(this->IsRootMakefile()) os << "# Which is the root file." << std::endl; cmGlobalNinjaGenerator::WriteDivider(os); os << std::endl; diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 78fe19d..dcb3016 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -147,6 +147,9 @@ public: void AddImplicitDepends(cmTarget const& tgt, const std::string& lang, const char* obj, const char* src); + void AppendGlobalTargetDepends(std::vector& depends, + cmTarget& target); + // write the target rules for the local Makefile into the stream void WriteLocalAllRules(std::ostream& ruleFileStream); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index cb9611a..63dbe27 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -105,7 +105,7 @@ public: ++it; if(it == this->VarStack.rend()) { - cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); + cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) { return false; @@ -1608,11 +1608,6 @@ void cmMakefile::PopMacroScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); } -bool cmMakefile::IsRootMakefile() const -{ - return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); -} - //---------------------------------------------------------------------------- class cmMakefileCurrent { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index b551c55..86bde0c 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -79,9 +79,6 @@ public: */ ~cmMakefile(); - /// @return whether we are processing the top CMakeLists.txt file. - bool IsRootMakefile() const; - bool ReadListFile(const char* listfile); bool ReadDependentFile(const char* listfile, bool noPolicyScope = true); diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 416063f..37b297e 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target) + cmMakefileTargetGenerator(target->Target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 660027c..450f573 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target) + cmMakefileTargetGenerator(target->Target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index dd60a1f..923aa7b 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,15 +41,16 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target->Target; + this->Target = target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast(target->GetLocalGenerator()); + static_cast( + this->Makefile->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = target; + this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() @@ -1154,10 +1155,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { - cmGeneratorTarget* gt = - this->GlobalGenerator->GetGeneratorTarget(linkee); - cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); + cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 9182236..2e1b052 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmGeneratorTarget* target); + cmMakefileTargetGenerator(cmTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 303ca63..25d929c 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target) + cmMakefileTargetGenerator(target->Target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 2fe53bf..bbf03ff 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target) + : cmNinjaTargetGenerator(target->Target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index fcf4a62..b2aef68 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -56,18 +56,19 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target->Target), - Makefile(target->Makefile), + Target(target), + Makefile(target->GetMakefile()), LocalGenerator( - static_cast(target->GetLocalGenerator())), + static_cast(Makefile->GetLocalGenerator())), Objects() { - this->GeneratorTarget = target; + this->GeneratorTarget = + this->GetGlobalGenerator()->GetGeneratorTarget(target); MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index fc361b2..4e7d8b3 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmGeneratorTarget* target); + cmNinjaTargetGenerator(cmTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index c3bf011..42d6b46 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target) {} + : cmNinjaTargetGenerator(target->Target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index 3bc0eb7..a8eef82 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(target->GetLocalGenerator()) + , LocalGenerator(Makefile->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 2e17a7d..176cb0d 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -53,7 +53,7 @@ bool cmProjectCommand // CMAKE_PROJECT_NAME will match PROJECT_NAME, and cmake --build // will work. if(!this->Makefile->GetDefinition("CMAKE_PROJECT_NAME") - || (this->Makefile->IsRootMakefile())) + || (this->Makefile->GetLocalGenerator()->IsRootMakefile())) { this->Makefile->AddDefinition("CMAKE_PROJECT_NAME", args[0].c_str()); this->Makefile->AddCacheDefinition diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 3d6ef57..ef32c75 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -368,7 +368,8 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) #if defined(_WIN32) && !defined(__CYGWIN__) bool usePRE_BUILD = false; - cmGlobalGenerator* gg = makefile->GetGlobalGenerator(); + cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* gg = localGen->GetGlobalGenerator(); if(gg->GetName().find("Visual Studio") != std::string::npos) { cmGlobalVisualStudioGenerator* vsgg = @@ -521,10 +522,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); + cmLocalGenerator* localGen = makefile->GetLocalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); - cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); + cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() + ->GetGeneratorTarget(target); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 12a1e42..9b78df3 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->GeneratorTarget->GetLocalGenerator(); + this->Makefile->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 6ff388d..eeb6575 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -482,7 +482,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(lg.get()); + gg->CreateGeneratorTargets(mf); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); ----------------------------------------------------------------------- Summary of changes: Source/cmExtraCodeBlocksGenerator.cxx | 24 +++++++++++------------- Source/cmExtraCodeBlocksGenerator.h | 5 ++--- Source/cmGeneratorTarget.cxx | 10 ++-------- Source/cmGeneratorTarget.h | 4 +--- Source/cmGhsMultiTargetGenerator.cxx | 17 +++++++++-------- Source/cmGhsMultiTargetGenerator.h | 2 +- Source/cmGlobalGenerator.cxx | 21 +++++++++------------ Source/cmGlobalGenerator.h | 4 ++-- Source/cmGlobalNinjaGenerator.h | 2 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 8 ++++---- Source/cmLocalGenerator.cxx | 7 ++++++- Source/cmLocalGenerator.h | 5 ++++- Source/cmLocalGhsMultiGenerator.cxx | 2 +- Source/cmLocalNinjaGenerator.cxx | 6 +++--- Source/cmLocalUnixMakefileGenerator3.h | 3 +++ Source/cmMakefile.cxx | 7 +------ Source/cmMakefile.h | 3 --- Source/cmMakefileExecutableTargetGenerator.cxx | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 13 ++++++------- Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 11 ++++++----- Source/cmNinjaTargetGenerator.h | 2 +- Source/cmNinjaUtilityTargetGenerator.cxx | 2 +- Source/cmOSXBundleGenerator.cxx | 2 +- Source/cmProjectCommand.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 9 +++++---- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Source/cmake.cxx | 2 +- 31 files changed, 88 insertions(+), 97 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 18:43:40 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 18:43:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-403-gb997ce4 Message-ID: <20150609224340.5F092AD580@public.kitware.com> 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 b997ce4c9f57ca3b50cb93937930728b59a69f5c (commit) via b310a8f3458a88856539d702c700532018e4f2ee (commit) via c1f423e58a730dd9b97671f771345d1729be16ac (commit) via 1f123a85461e1e91c361a4c6960cb8fd3cf5b8eb (commit) via 355ad2ff51df36120b703729d75366c9459fec93 (commit) via a3a8177eddfdfc89fae9331ca794abbc67f5d543 (commit) from b69e00ef11fcb1f5be98c89521c5b68606dd6ccc (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=b997ce4c9f57ca3b50cb93937930728b59a69f5c commit b997ce4c9f57ca3b50cb93937930728b59a69f5c Merge: b69e00e b310a8f Author: Stephen Kelly AuthorDate: Tue Jun 9 18:43:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 18:43:39 2015 -0400 Merge topic 'fail-on-ancient-policies' into next b310a8f3 cmPolicies: Unconditionally use NEW behavior for ancient policies. c1f423e5 Tests: Update the minimum required cmake version. 1f123a85 Tests: Fix for NEW behavior of CMake. 355ad2ff Tests: Implement PolicyScope tests in terms of newer policies. a3a8177e cmFileCommand: Fix implementation of CMP0009. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b310a8f3458a88856539d702c700532018e4f2ee commit b310a8f3458a88856539d702c700532018e4f2ee Author: Stephen Kelly AuthorDate: Tue Jun 9 22:50:18 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 00:15:35 2015 +0200 cmPolicies: Unconditionally use NEW behavior for ancient policies. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 5026893..e5f8d0b 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -53,6 +53,10 @@ static bool stringToId(const char* input, cmPolicies::PolicyID& pid) #define CM_FOR_EACH_POLICY_ID_DOC(POLICY) \ CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID_DOC) +#define CM_SELECT_ID_STATUS(F, A1, A2, A3, A4, A5, A6) F(A1, A6) +#define CM_FOR_EACH_POLICY_ID_STATUS(POLICY) \ + CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID_STATUS) + static const char* idToString(cmPolicies::PolicyID id) { switch(id) @@ -319,8 +323,18 @@ std::string cmPolicies::GetRequiredPolicyError(cmPolicies::PolicyID id) ///! Get the default status for a policy cmPolicies::PolicyStatus -cmPolicies::GetPolicyStatus(cmPolicies::PolicyID) +cmPolicies::GetPolicyStatus(cmPolicies::PolicyID id) { + switch(id) + { +#define POLICY_CASE(ID, STATUS) \ + case cmPolicies::ID: \ + return STATUS; + CM_FOR_EACH_POLICY_ID_STATUS(POLICY_CASE) +#undef POLICY_CASE + case cmPolicies::CMPCOUNT: + return cmPolicies::WARN; + } return cmPolicies::WARN; } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 8a3c27d..85f3612 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -22,40 +22,40 @@ class cmPolicy; #define CM_FOR_EACH_POLICY_TABLE(POLICY, SELECT) \ SELECT(POLICY, CMP0000, \ "A minimum required CMake version must be specified.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0001, \ "CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0002, \ "Logical target names must be globally unique.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0003, \ "Libraries linked via full path no longer produce linker search paths.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0004, \ "Libraries linked may not have leading or trailing whitespace.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0005, \ "Preprocessor definition values are now escaped automatically.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0006, \ "Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0007, \ "list command no longer ignores empty elements.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0008, \ "Libraries linked by full-path must have a valid library file name.", \ - 2, 6, 1, cmPolicies::WARN) \ + 2, 6, 1, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0009, \ "FILE GLOB_RECURSE calls should not follow symlinks by default.", \ - 2, 6, 2, cmPolicies::WARN) \ + 2, 6, 2, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0010, \ "Bad variable reference syntax is an error.", \ - 2, 6, 3, cmPolicies::WARN) \ + 2, 6, 3, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0011, \ "Included scripts do automatic cmake_policy PUSH and POP.", \ - 2, 6, 3, cmPolicies::WARN) \ + 2, 6, 3, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0012, \ "if() recognizes numbers and boolean constants.", \ 2, 8, 0, cmPolicies::WARN) \ diff --git a/Tests/CMakeTests/ListTest.cmake.in b/Tests/CMakeTests/ListTest.cmake.in index 77c34a9..99fc4d3 100644 --- a/Tests/CMakeTests/ListTest.cmake.in +++ b/Tests/CMakeTests/ListTest.cmake.in @@ -158,8 +158,6 @@ foreach(cmd Remove_Item Reverse Remove_Duplicates Sort Remove_At) set(${cmd}-Nonexistent-List-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-${cmd}-Nonexistent-List.cmake:2 \\(list\\):.*sub-command ${Cmd} requires list to be present.*") endforeach() -set(Get-CMP0007-Warn-RESULT 0) -set(Get-CMP0007-Warn-STDERR ".*CMake Warning \\(dev\\) at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Get-CMP0007-Warn.cmake:3 \\(list\\):.*Policy CMP0007 is not set:.*") check_cmake_test(List No-Arguments @@ -176,15 +174,4 @@ check_cmake_test(List Sort-Nonexistent-List Remove_At-Nonexistent-List Remove_At-Invalid-Index - Get-CMP0007-Warn ) - -set(thelist "" NEW OLD) - -foreach (_pol ${thelist}) - cmake_policy(SET CMP0007 ${_pol}) - list(GET thelist 1 thevalue) - if (NOT thevalue STREQUAL _pol) - message(SEND_ERROR "returned element '${thevalue}', but expected '${_pol}'") - endif() -endforeach (_pol) diff --git a/Tests/RunCMake/Syntax/RunCMakeTest.cmake b/Tests/RunCMake/Syntax/RunCMakeTest.cmake index c431280..c874271 100644 --- a/Tests/RunCMake/Syntax/RunCMakeTest.cmake +++ b/Tests/RunCMake/Syntax/RunCMakeTest.cmake @@ -64,7 +64,6 @@ run_cmake(UnterminatedCall1) run_cmake(UnterminatedCall2) run_cmake(UnterminatedString) run_cmake(UnterminatedBrace0) -run_cmake(UnterminatedBrace1) run_cmake(UnterminatedBrace2) run_cmake(UnterminatedBracket0) run_cmake(UnterminatedBracket1) diff --git a/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt deleted file mode 100644 index 4e3c2b5..0000000 --- a/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt +++ /dev/null @@ -1,13 +0,0 @@ -CMake Warning \(dev\) at UnterminatedBrace1.cmake:3 \(set\): - Syntax error in cmake code at - - .*/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake:3 - - when parsing string - - \${ - - syntax error, unexpected \$end, expecting } \(2\) -Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) -This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake b/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake deleted file mode 100644 index 93fba34..0000000 --- a/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake +++ /dev/null @@ -1,3 +0,0 @@ -cmake_minimum_required(VERSION 3.0) -cmake_policy(SET CMP0010 OLD) -set(var "${") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c1f423e58a730dd9b97671f771345d1729be16ac commit c1f423e58a730dd9b97671f771345d1729be16ac Author: Stephen Kelly AuthorDate: Wed Jun 10 00:07:39 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 00:15:34 2015 +0200 Tests: Update the minimum required cmake version. diff --git a/Tests/EmptyProperty/CMakeLists.txt b/Tests/EmptyProperty/CMakeLists.txt index 39e75f3..65aa216 100644 --- a/Tests/EmptyProperty/CMakeLists.txt +++ b/Tests/EmptyProperty/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) project (EmptyProperty) set_property(DIRECTORY APPEND diff --git a/Tests/ExternalOBJ/CMakeLists.txt b/Tests/ExternalOBJ/CMakeLists.txt index 458c88b..64620a5 100644 --- a/Tests/ExternalOBJ/CMakeLists.txt +++ b/Tests/ExternalOBJ/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project (ExternalOBJ) if(APPLE) diff --git a/Tests/LibName/CMakeLists.txt b/Tests/LibName/CMakeLists.txt index 3ac125f..eedd9ec 100644 --- a/Tests/LibName/CMakeLists.txt +++ b/Tests/LibName/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.3) project(LibName) # this is a test to make sure that relative path # LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH work diff --git a/Tests/LinkLine/CMakeLists.txt b/Tests/LinkLine/CMakeLists.txt index 6154dd4..d14c963 100644 --- a/Tests/LinkLine/CMakeLists.txt +++ b/Tests/LinkLine/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) project( LinkLine ) # Makes sure that the library order as specified by the user are diff --git a/Tests/PreOrder/CMakeLists.txt b/Tests/PreOrder/CMakeLists.txt index 8b4c439..a688c74 100644 --- a/Tests/PreOrder/CMakeLists.txt +++ b/Tests/PreOrder/CMakeLists.txt @@ -1,4 +1,5 @@ # a simple test case +cmake_minimum_required (VERSION 3.3) project (PreOrder) set(CMAKE_IGNORE_DEPENDENCIES_ORDERING 1) add_subdirectory(Library) diff --git a/Tests/StringFileTest/CMakeLists.txt b/Tests/StringFileTest/CMakeLists.txt index faf3bc9..8caa2f0 100644 --- a/Tests/StringFileTest/CMakeLists.txt +++ b/Tests/StringFileTest/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project(StringFileTest) include_directories(${StringFileTest_BINARY_DIR}) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1f123a85461e1e91c361a4c6960cb8fd3cf5b8eb commit 1f123a85461e1e91c361a4c6960cb8fd3cf5b8eb Author: Stephen Kelly AuthorDate: Tue Jun 9 23:14:25 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 00:15:12 2015 +0200 Tests: Fix for NEW behavior of CMake. diff --git a/Tests/CMakeTests/FileTestScript.cmake b/Tests/CMakeTests/FileTestScript.cmake index 9a43569..a243aa6 100644 --- a/Tests/CMakeTests/FileTestScript.cmake +++ b/Tests/CMakeTests/FileTestScript.cmake @@ -73,7 +73,7 @@ elseif(testname STREQUAL glob_recurse_relative_no_expression) # fail file(GLOB_RECURSE v RELATIVE dddd) elseif(testname STREQUAL glob_non_full_path) # pass - file(GLOB_RECURSE v ffff*.*) + file(GLOB_RECURSE v FOLLOW_SYMLINKS ffff*.*) message("v='${v}'") elseif(testname STREQUAL make_directory_non_full_path) # pass diff --git a/Tests/CPackComponents/CMakeLists.txt b/Tests/CPackComponents/CMakeLists.txt index 1cb8669..c676acc 100644 --- a/Tests/CPackComponents/CMakeLists.txt +++ b/Tests/CPackComponents/CMakeLists.txt @@ -79,7 +79,7 @@ set(CPACK_NSIS_MENU_LINKS ) # Suggested default root for end users of the installer: -set(CPACK_NSIS_INSTALL_ROOT "C:\\Program Files\\CMake Tests Install Root") +set(CPACK_NSIS_INSTALL_ROOT "C:\\\\Program Files\\\\CMake Tests Install Root") # Include CPack to introduce the appropriate targets include(CPack) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=355ad2ff51df36120b703729d75366c9459fec93 commit 355ad2ff51df36120b703729d75366c9459fec93 Author: Stephen Kelly AuthorDate: Wed Jun 10 00:08:51 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 00:09:55 2015 +0200 Tests: Implement PolicyScope tests in terms of newer policies. Keep the spirit of the tests. diff --git a/Tests/PolicyScope/Bar.cmake b/Tests/PolicyScope/Bar.cmake index cf1904c..2f94d8d 100644 --- a/Tests/PolicyScope/Bar.cmake +++ b/Tests/PolicyScope/Bar.cmake @@ -1,8 +1,5 @@ -cmake_minimum_required(VERSION 2.6.3) +cmake_minimum_required(VERSION 3.2) # Make sure a policy set differently by our includer is now correct. -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "NEW" "${cmp}") - -# Test allowing the top-level file to not have cmake_minimum_required. -cmake_policy(SET CMP0000 OLD) +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "NEW" "${cmp}") diff --git a/Tests/PolicyScope/CMakeLists.txt b/Tests/PolicyScope/CMakeLists.txt index 413195a..5cf302e 100644 --- a/Tests/PolicyScope/CMakeLists.txt +++ b/Tests/PolicyScope/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.0) project(PolicyScope C) # No cmake_minimum_required(VERSION), it's in FindFoo. @@ -12,33 +13,27 @@ endfunction() #----------------------------------------------------------------------------- # Test using a development framework that sets policies for us. -# Policy CMP0011 should not be set at this point. -cmake_policy(GET CMP0011 cmp) -check(CMP0011 "" "${cmp}") - # Put the test modules in the search path. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) # The included file should set policies for us. -find_package(Foo) +find_package(Foo NO_POLICY_SCOPE) # Check policies set by the package. -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "OLD" "${cmp}") -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "NEW" "${cmp}") -cmake_policy(GET CMP0011 cmp) -check(CMP0011 "NEW" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "OLD" "${cmp}") +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "NEW" "${cmp}") # Make sure an included file cannot change policies. include(Bar) -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "OLD" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "OLD" "${cmp}") # Allow the included file to change policies. include(Bar NO_POLICY_SCOPE) -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "NEW" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "NEW" "${cmp}") #----------------------------------------------------------------------------- # Test function and macro policy recording. @@ -46,57 +41,56 @@ check(CMP0003 "NEW" "${cmp}") # Create the functions in an isolated scope in which we change policies. cmake_policy(PUSH) if(1) - # Change CMP0002 - cmake_policy(SET CMP0002 OLD) + cmake_policy(SET CMP0055 OLD) function(func1) - # CMP0002 should be changed when this function is invoked - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "OLD" "${cmp}") + # CMP0055 should be changed when this function is invoked + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") endfunction() - # Unset CMP0002 - cmake_policy(VERSION 2.4) + # Unset CMP0055 + cmake_policy(VERSION 3.1) macro(macro1) - # CMP0002 should be unset when this macro is invoked - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "" "${cmp}") + # CMP0055 should be unset when this macro is invoked + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "" "${cmp}") # Setting the policy should work here and also in the caller. - cmake_policy(SET CMP0002 OLD) - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "OLD" "${cmp}") + cmake_policy(SET CMP0055 OLD) + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") endmacro() endif() cmake_policy(POP) -# CMP0002 should still be NEW in this context. -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "NEW" "${cmp}") +# CMP0055 should still be NEW in this context. +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "NEW" "${cmp}") # Check the recorded policies func1() macro1() -# The macro should have changed CMP0002. -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "OLD" "${cmp}") +# The macro should have changed CMP0055. +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "OLD" "${cmp}") #----------------------------------------------------------------------------- # Test CMAKE_POLICY_DEFAULT_CMP variable. cmake_policy(PUSH) - set(CMAKE_POLICY_DEFAULT_CMP0010 OLD) # ignored - set(CMAKE_POLICY_DEFAULT_CMP0012 OLD) # honored - set(CMAKE_POLICY_DEFAULT_CMP0013 NEW) # honored - set(CMAKE_POLICY_DEFAULT_CMP0014 "") # noop - cmake_policy(VERSION 2.6.3) - cmake_policy(GET CMP0010 cmp) - check(CMP0010 "NEW" "${cmp}") - cmake_policy(GET CMP0012 cmp) - check(CMP0012 "OLD" "${cmp}") - cmake_policy(GET CMP0013 cmp) - check(CMP0013 "NEW" "${cmp}") - cmake_policy(GET CMP0014 cmp) - check(CMP0014 "" "${cmp}") + set(CMAKE_POLICY_DEFAULT_CMP0054 OLD) # ignored + set(CMAKE_POLICY_DEFAULT_CMP0055 OLD) # honored + set(CMAKE_POLICY_DEFAULT_CMP0056 NEW) # honored + set(CMAKE_POLICY_DEFAULT_CMP0057 "") # noop + cmake_policy(VERSION 3.2) + cmake_policy(GET CMP0054 cmp) + check(CMP0054 "NEW" "${cmp}") + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") + cmake_policy(GET CMP0056 cmp) + check(CMP0056 "NEW" "${cmp}") + cmake_policy(GET CMP0057 cmp) + check(CMP0057 "" "${cmp}") cmake_policy(POP) #----------------------------------------------------------------------------- diff --git a/Tests/PolicyScope/FindFoo.cmake b/Tests/PolicyScope/FindFoo.cmake index 5b441e2..3f9ac8e 100644 --- a/Tests/PolicyScope/FindFoo.cmake +++ b/Tests/PolicyScope/FindFoo.cmake @@ -1,2 +1,2 @@ -cmake_minimum_required(VERSION 2.6.3) -cmake_policy(SET CMP0003 OLD) +cmake_minimum_required(VERSION 3.2) +cmake_policy(SET CMP0056 OLD) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a3a8177eddfdfc89fae9331ca794abbc67f5d543 commit a3a8177eddfdfc89fae9331ca794abbc67f5d543 Author: Stephen Kelly AuthorDate: Tue Jun 9 23:55:56 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 00:06:29 2015 +0200 cmFileCommand: Fix implementation of CMP0009. diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 4698468..7440357 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -906,13 +906,13 @@ bool cmFileCommand::HandleGlobCommand(std::vector const& args, { switch(status) { + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: case cmPolicies::NEW: g.RecurseThroughSymlinksOff(); break; case cmPolicies::OLD: case cmPolicies::WARN: - case cmPolicies::REQUIRED_IF_USED: - case cmPolicies::REQUIRED_ALWAYS: g.RecurseThroughSymlinksOn(); break; } @@ -1044,6 +1044,8 @@ bool cmFileCommand::HandleGlobCommand(std::vector const& args, { switch (status) { + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: case cmPolicies::NEW: // Correct behavior, yay! break; @@ -1059,12 +1061,6 @@ bool cmFileCommand::HandleGlobCommand(std::vector const& args, cmPolicies::GetPolicyWarning(cmPolicies::CMP0009)); } break; - case cmPolicies::REQUIRED_IF_USED: - case cmPolicies::REQUIRED_ALWAYS: - this->SetError("policy CMP0009 error"); - this->Makefile->IssueMessage(cmake::FATAL_ERROR, - cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0009)); - return false; } } ----------------------------------------------------------------------- Summary of changes: Source/cmFileCommand.cxx | 12 +-- Source/cmPolicies.cxx | 16 +++- Source/cmPolicies.h | 24 +++--- Tests/CMakeTests/FileTestScript.cmake | 2 +- Tests/CMakeTests/ListTest.cmake.in | 13 --- Tests/CPackComponents/CMakeLists.txt | 2 +- Tests/EmptyProperty/CMakeLists.txt | 1 + Tests/ExternalOBJ/CMakeLists.txt | 2 +- Tests/LibName/CMakeLists.txt | 1 + Tests/LinkLine/CMakeLists.txt | 1 + Tests/PolicyScope/Bar.cmake | 9 +- Tests/PolicyScope/CMakeLists.txt | 88 +++++++++----------- Tests/PolicyScope/FindFoo.cmake | 4 +- Tests/PreOrder/CMakeLists.txt | 1 + Tests/RunCMake/Syntax/RunCMakeTest.cmake | 1 - .../RunCMake/Syntax/UnterminatedBrace1-stderr.txt | 13 --- Tests/RunCMake/Syntax/UnterminatedBrace1.cmake | 3 - Tests/StringFileTest/CMakeLists.txt | 2 +- 18 files changed, 85 insertions(+), 110 deletions(-) delete mode 100644 Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt delete mode 100644 Tests/RunCMake/Syntax/UnterminatedBrace1.cmake hooks/post-receive -- CMake From domen.vrankar at gmail.com Tue Jun 9 19:00:33 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Tue, 9 Jun 2015 19:00:33 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-405-g3e1342f Message-ID: <20150609230033.D7B35B0654@public.kitware.com> 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 3e1342f66a7e77baeced473728b4c87edc2bf338 (commit) via 48f303b26f68fdfc0ac6edbdd075030ec37993ea (commit) from b997ce4c9f57ca3b50cb93937930728b59a69f5c (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=3e1342f66a7e77baeced473728b4c87edc2bf338 commit 3e1342f66a7e77baeced473728b4c87edc2bf338 Merge: b997ce4 48f303b Author: Domen Vrankar AuthorDate: Tue Jun 9 19:00:33 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 19:00:33 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 48f303b2 fixup! CPack Deb and RPM RunCMake tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=48f303b26f68fdfc0ac6edbdd075030ec37993ea commit 48f303b26f68fdfc0ac6edbdd075030ec37993ea Author: Domen Vrankar AuthorDate: Wed Jun 10 00:59:47 2015 +0200 Commit: Domen Vrankar CommitDate: Wed Jun 10 00:59:47 2015 +0200 fixup! CPack Deb and RPM RunCMake tests Test was failing with error "Policy CMP0011 is not set to NEW" diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index e4027ab..4ae8992 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -1,3 +1,5 @@ +cmake_policy(SET CMP0011 NEW) + include(RunCMake) include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CPack/RunCMakeTest.cmake | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 19:28:57 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 19:28:57 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-410-g7855f91 Message-ID: <20150609232857.E43FDB02E5@public.kitware.com> 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 7855f91d3195cfa79809b807d172f23610b0b18c (commit) via b2013981aa08e41ee8e122835d592a0aa297e1ff (commit) via 681a35f22fc69811e87132232b911d4d8b4f27a9 (commit) via f30c8d2b441a79c6198be95de9ec5f550d64639e (commit) via 83fff0acbf438666c430257a3ec59c7d9ba5c415 (commit) from 3e1342f66a7e77baeced473728b4c87edc2bf338 (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=7855f91d3195cfa79809b807d172f23610b0b18c commit 7855f91d3195cfa79809b807d172f23610b0b18c Merge: 3e1342f b201398 Author: Stephen Kelly AuthorDate: Tue Jun 9 19:28:53 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 19:28:53 2015 -0400 Merge topic 'fail-on-ancient-policies' into next b2013981 fixup! Tests: Update the minimum required cmake version. 681a35f2 Tests: Update the complex test for ancient policies. f30c8d2b fixup! Tests: Update the minimum required cmake version. 83fff0ac fixup! Tests: Implement PolicyScope tests in terms of newer policies. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b2013981aa08e41ee8e122835d592a0aa297e1ff commit b2013981aa08e41ee8e122835d592a0aa297e1ff Author: Stephen Kelly AuthorDate: Wed Jun 10 01:28:25 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 01:28:25 2015 +0200 fixup! Tests: Update the minimum required cmake version. diff --git a/Tests/SBCS/CMakeLists.txt b/Tests/SBCS/CMakeLists.txt index b3c3c2c..7a77711 100644 --- a/Tests/SBCS/CMakeLists.txt +++ b/Tests/SBCS/CMakeLists.txt @@ -1,4 +1,5 @@ # a SBCS test case +cmake_minimum_required (VERSION 3.3) project (SBCS) add_definitions(-D_SBCS) diff --git a/Tests/VSExternalInclude/CMakeLists.txt b/Tests/VSExternalInclude/CMakeLists.txt index 73ea05a..926caea 100644 --- a/Tests/VSExternalInclude/CMakeLists.txt +++ b/Tests/VSExternalInclude/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project(VSExternalInclude) if(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=681a35f22fc69811e87132232b911d4d8b4f27a9 commit 681a35f22fc69811e87132232b911d4d8b4f27a9 Author: Stephen Kelly AuthorDate: Wed Jun 10 01:25:50 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 01:26:49 2015 +0200 Tests: Update the complex test for ancient policies. diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt index 5e5eead..1479a13 100644 --- a/Tests/Complex/CMakeLists.txt +++ b/Tests/Complex/CMakeLists.txt @@ -1,7 +1,7 @@ # # A more complex test case # -cmake_minimum_required(VERSION 2.4) +cmake_minimum_required(VERSION 3.2) project (Complex) # Try setting a new policy. The IF test is for coverage. @@ -21,6 +21,7 @@ foreach(p CMP0032 CMP0033 CMP0034 + CMP0035 CMP0043 CMP0050 ) diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx index ec222a5..9dccd84 100644 --- a/Tests/Complex/Executable/complex.cxx +++ b/Tests/Complex/Executable/complex.cxx @@ -838,14 +838,6 @@ int main() #endif #endif // defined(_WIN32) && !defined(__CYGWIN__) - if(strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "2.4") == 0) - { - cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 2.4"); - } - else - { - cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 2.4"); - } // ---------------------------------------------------------------------- // Test REMOVE command diff --git a/Tests/Complex/Library/test_preprocess.cmake b/Tests/Complex/Library/test_preprocess.cmake index 4c8ec21..5758ba8 100644 --- a/Tests/Complex/Library/test_preprocess.cmake +++ b/Tests/Complex/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") diff --git a/Tests/ComplexOneConfig/Library/test_preprocess.cmake b/Tests/ComplexOneConfig/Library/test_preprocess.cmake index 4c8ec21..5758ba8 100644 --- a/Tests/ComplexOneConfig/Library/test_preprocess.cmake +++ b/Tests/ComplexOneConfig/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f30c8d2b441a79c6198be95de9ec5f550d64639e commit f30c8d2b441a79c6198be95de9ec5f550d64639e Author: Stephen Kelly AuthorDate: Wed Jun 10 01:12:13 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 01:12:13 2015 +0200 fixup! Tests: Update the minimum required cmake version. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 8865063..fabaa6c 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -347,9 +347,6 @@ if(BUILD_TESTING) ADD_TEST_MACRO(CrossCompile CrossCompile) set_tests_properties(CrossCompile PROPERTIES PASS_REGULAR_EXPRESSION "TRY_RUN.. invoked in cross-compiling mode") - if("${CMAKE_GENERATOR}" MATCHES "Make") - ADD_TEST_MACRO(Policy0002 Policy0002) - endif() if(CTEST_TEST_OSX_ARCH) ADD_TEST_MACRO(Architecture Architecture) set_tests_properties(Architecture PROPERTIES diff --git a/Tests/Policy0002/A/CMakeLists.txt b/Tests/Policy0002/A/CMakeLists.txt deleted file mode 100644 index cee6422..0000000 --- a/Tests/Policy0002/A/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_executable(Policy0002 ../policy0002.c) diff --git a/Tests/Policy0002/CMakeLists.txt b/Tests/Policy0002/CMakeLists.txt deleted file mode 100644 index 0f6d331..0000000 --- a/Tests/Policy0002/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(Policy0002 C) -cmake_policy(SET CMP0002 OLD) -add_subdirectory(A) -add_executable(Policy0002 policy0002.c) diff --git a/Tests/Policy0002/policy0002.c b/Tests/Policy0002/policy0002.c deleted file mode 100644 index 8488f4e..0000000 --- a/Tests/Policy0002/policy0002.c +++ /dev/null @@ -1,4 +0,0 @@ -int main(void) -{ - return 0; -} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=83fff0acbf438666c430257a3ec59c7d9ba5c415 commit 83fff0acbf438666c430257a3ec59c7d9ba5c415 Author: Stephen Kelly AuthorDate: Wed Jun 10 01:10:43 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 01:10:43 2015 +0200 fixup! Tests: Implement PolicyScope tests in terms of newer policies. diff --git a/Tests/PolicyScope/CMakeLists.txt b/Tests/PolicyScope/CMakeLists.txt index 5cf302e..b14c423 100644 --- a/Tests/PolicyScope/CMakeLists.txt +++ b/Tests/PolicyScope/CMakeLists.txt @@ -82,7 +82,7 @@ cmake_policy(PUSH) set(CMAKE_POLICY_DEFAULT_CMP0055 OLD) # honored set(CMAKE_POLICY_DEFAULT_CMP0056 NEW) # honored set(CMAKE_POLICY_DEFAULT_CMP0057 "") # noop - cmake_policy(VERSION 3.2) + cmake_policy(VERSION 3.1) cmake_policy(GET CMP0054 cmp) check(CMP0054 "NEW" "${cmp}") cmake_policy(GET CMP0055 cmp) ----------------------------------------------------------------------- Summary of changes: Tests/CMakeLists.txt | 3 --- Tests/Complex/CMakeLists.txt | 3 ++- Tests/Complex/Executable/complex.cxx | 8 -------- Tests/Complex/Library/test_preprocess.cmake | 2 +- Tests/ComplexOneConfig/Library/test_preprocess.cmake | 2 +- Tests/Policy0002/A/CMakeLists.txt | 1 - Tests/Policy0002/CMakeLists.txt | 5 ----- Tests/Policy0002/policy0002.c | 4 ---- Tests/PolicyScope/CMakeLists.txt | 2 +- Tests/SBCS/CMakeLists.txt | 1 + Tests/VSExternalInclude/CMakeLists.txt | 2 +- 11 files changed, 7 insertions(+), 26 deletions(-) delete mode 100644 Tests/Policy0002/A/CMakeLists.txt delete mode 100644 Tests/Policy0002/CMakeLists.txt delete mode 100644 Tests/Policy0002/policy0002.c hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 9 20:08:27 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 9 Jun 2015 20:08:27 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-412-gd8ab6a7 Message-ID: <20150610000828.32087B0543@public.kitware.com> 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 d8ab6a7b12c2f5c89f20c8c2bc96e0ace161af43 (commit) via 2d4b0b35fadb0d16bf4dce27ce358e413d52aea5 (commit) from 7855f91d3195cfa79809b807d172f23610b0b18c (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=d8ab6a7b12c2f5c89f20c8c2bc96e0ace161af43 commit d8ab6a7b12c2f5c89f20c8c2bc96e0ace161af43 Merge: 7855f91 2d4b0b3 Author: Stephen Kelly AuthorDate: Tue Jun 9 20:08:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 9 20:08:25 2015 -0400 Merge topic 'fail-on-ancient-policies' into next 2d4b0b35 fixup! fixup! Tests: Update the minimum required cmake version. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d4b0b35fadb0d16bf4dce27ce358e413d52aea5 commit 2d4b0b35fadb0d16bf4dce27ce358e413d52aea5 Author: Stephen Kelly AuthorDate: Wed Jun 10 02:08:01 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 02:08:01 2015 +0200 fixup! fixup! Tests: Update the minimum required cmake version. diff --git a/Tests/VSExternalInclude/Lib1/CMakeLists.txt b/Tests/VSExternalInclude/Lib1/CMakeLists.txt index 9dfac86..0d08853 100644 --- a/Tests/VSExternalInclude/Lib1/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib1/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(LIB1) diff --git a/Tests/VSExternalInclude/Lib2/CMakeLists.txt b/Tests/VSExternalInclude/Lib2/CMakeLists.txt index f451354..017b8fe 100644 --- a/Tests/VSExternalInclude/Lib2/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib2/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(VSEXTERNAL_LIB2) ----------------------------------------------------------------------- Summary of changes: Tests/VSExternalInclude/Lib1/CMakeLists.txt | 1 + Tests/VSExternalInclude/Lib2/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Jun 10 00:01:08 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 10 Jun 2015 00:01:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-147-gc9ee5de Message-ID: <20150610040108.1BCECB0470@public.kitware.com> 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, master has been updated via c9ee5de4af1ef11f946196052fbb5b6c536fb27f (commit) from 1c65ce52454db3cd7d9aff47e30456a50825de44 (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=c9ee5de4af1ef11f946196052fbb5b6c536fb27f commit c9ee5de4af1ef11f946196052fbb5b6c536fb27f Author: Kitware Robot AuthorDate: Wed Jun 10 00:01:06 2015 -0400 Commit: Kitware Robot CommitDate: Wed Jun 10 00:01:06 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 67be073..5298a86 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150609) +set(CMake_VERSION_PATCH 20150610) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 10 08:51:07 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 10 Jun 2015 08:51:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-149-gf928572 Message-ID: <20150610125107.A7D81AFBC7@public.kitware.com> 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, master has been updated via f9285727dc73365ff190de530a63dffbf725eabd (commit) via 86bde2ef3e5d56ca7326b51e6608a79a08eb90cd (commit) from c9ee5de4af1ef11f946196052fbb5b6c536fb27f (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 10 08:51:07 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 10 Jun 2015 08:51:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-416-g91dd5ba Message-ID: <20150610125107.C7D5DAFBC9@public.kitware.com> 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 91dd5ba7234299e15ea2db9be988c4a9409f1d4b (commit) via f9285727dc73365ff190de530a63dffbf725eabd (commit) via e64d1fa914fff8a8114f15e8ffc641e69c50f551 (commit) via c9ee5de4af1ef11f946196052fbb5b6c536fb27f (commit) from d8ab6a7b12c2f5c89f20c8c2bc96e0ace161af43 (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=91dd5ba7234299e15ea2db9be988c4a9409f1d4b commit 91dd5ba7234299e15ea2db9be988c4a9409f1d4b Merge: e64d1fa f928572 Author: Brad King AuthorDate: Wed Jun 10 08:50:24 2015 -0400 Commit: Brad King CommitDate: Wed Jun 10 08:50:24 2015 -0400 Merge branch 'master' into next http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e64d1fa914fff8a8114f15e8ffc641e69c50f551 commit e64d1fa914fff8a8114f15e8ffc641e69c50f551 Merge: d8ab6a7 c9ee5de Author: Brad King AuthorDate: Wed Jun 10 08:50:07 2015 -0400 Commit: Brad King CommitDate: Wed Jun 10 08:50:07 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 10 08:51:07 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 10 Jun 2015 08:51:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.3.0-rc1-15-g86bde2e Message-ID: <20150610125107.DF3EFAFBCA@public.kitware.com> 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, release has been updated via 86bde2ef3e5d56ca7326b51e6608a79a08eb90cd (commit) from d6619acf77903187f1b37a6ef2fdf21beb986d32 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From domen.vrankar at gmail.com Wed Jun 10 11:10:40 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Wed, 10 Jun 2015 11:10:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-418-g3acb236 Message-ID: <20150610151040.165AEA7F3C@public.kitware.com> 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 3acb236e86a081e522417b0881f87d08f904ee3d (commit) via 05358225bec5e483fbc5c39e7b2221c2927aabe5 (commit) from 91dd5ba7234299e15ea2db9be988c4a9409f1d4b (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=3acb236e86a081e522417b0881f87d08f904ee3d commit 3acb236e86a081e522417b0881f87d08f904ee3d Merge: 91dd5ba 0535822 Author: Domen Vrankar AuthorDate: Wed Jun 10 11:10:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 10 11:10:39 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 05358225 fixup! CPack Deb and RPM RunCMake tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=05358225bec5e483fbc5c39e7b2221c2927aabe5 commit 05358225bec5e483fbc5c39e7b2221c2927aabe5 Author: Domen Vrankar AuthorDate: Wed Jun 10 17:09:23 2015 +0200 Commit: Domen Vrankar CommitDate: Wed Jun 10 17:09:23 2015 +0200 fixup! CPack Deb and RPM RunCMake tests Added some extra logging and newer cmake version enforcing to determine what is causing RPM tests to fail on some systems. diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index 4ae8992..308b8cc 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -1,4 +1,4 @@ -cmake_policy(SET CMP0011 NEW) +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) include(RunCMake) include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake index 0cc32d4..c89bfae 100644 --- a/Tests/RunCMake/CPack/VerifyResult.cmake +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -1,8 +1,13 @@ -cmake_policy(SET CMP0007 NEW) +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) include("${config_file}") include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) + +set(output_error_message "\nCPack output: '${output}'\nCPack error: '${error}'") + # check that expected generated files exist and contain expected content include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-ExpectedFiles.cmake") @@ -22,13 +27,15 @@ if(NOT EXPECTED_FILES_COUNT EQUAL 0) if(NOT expected_content_list) message(FATAL_ERROR "Unexpected file content for file No. '${file_no_}'!" - " Content: '${PACKAGE_CONTENT}'") + " Content: '${PACKAGE_CONTENT}'" + "${output_error_message}") endif() else() message(FATAL_ERROR "Found more than one file for file No. '${file_no_}'!" " Found files count '${foundFilesCount_}'." - " Files: '${foundFile_}'") + " Files: '${foundFile_}'" + "${output_error_message}") endif() endforeach() @@ -43,7 +50,8 @@ if(NOT EXPECTED_FILES_COUNT EQUAL 0) if(NOT foundFilesCount_ EQUAL allFoundFilesCount_) message(FATAL_ERROR - "Found more files than expected! Found files: '${allFoundFiles_}'") + "Found more files than expected! Found files: '${allFoundFiles_}'" + "${output_error_message}") endif() # sanity check that we didn't accidentaly list wrong files with our regular @@ -54,7 +62,8 @@ if(NOT EXPECTED_FILES_COUNT EQUAL 0) if(found_ EQUAL -1) message(FATAL_ERROR "Expected files don't match found files! Found files:" - " '${allFoundFiles_}'") + " '${allFoundFiles_}'" + "${output_error_message}") endif() endforeach() else() @@ -63,14 +72,12 @@ else() file(GLOB checkMissingFiles_ RELATIVE "${bin_dir}" "${missing_file_glob_}") if(checkMissingFiles_) - message(FATAL_ERROR "Unexpected files found: '${checkMissingFiles_}'") + message(FATAL_ERROR "Unexpected files found: '${checkMissingFiles_}'" + "${output_error_message}") endif() endforeach() endif() -file(READ "${bin_dir}/test_output.txt" output) -file(READ "${bin_dir}/test_error.txt" error) - # handle additional result verifications if(EXISTS "${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CPack/RunCMakeTest.cmake | 2 +- Tests/RunCMake/CPack/VerifyResult.cmake | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Wed Jun 10 15:21:14 2015 From: steveire at gmail.com (Stephen Kelly) Date: Wed, 10 Jun 2015 15:21:14 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-420-g044833f Message-ID: <20150610192114.41437B0295@public.kitware.com> 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 044833f9862b3c5657aff6d5e939f6e1c6cef8ed (commit) via 043e3b04bedfa2050d023eb91e961dfe6a489c5c (commit) from 3acb236e86a081e522417b0881f87d08f904ee3d (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=044833f9862b3c5657aff6d5e939f6e1c6cef8ed commit 044833f9862b3c5657aff6d5e939f6e1c6cef8ed Merge: 3acb236 043e3b0 Author: Stephen Kelly AuthorDate: Wed Jun 10 15:21:13 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 10 15:21:13 2015 -0400 Merge topic 'cmLinkedTree-definitions' into next 043e3b04 Revert "cmMakefile: Extract InitializeVarStack method." http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=043e3b04bedfa2050d023eb91e961dfe6a489c5c commit 043e3b04bedfa2050d023eb91e961dfe6a489c5c Author: Stephen Kelly AuthorDate: Wed Jun 10 21:20:35 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 21:20:47 2015 +0200 Revert "cmMakefile: Extract InitializeVarStack method." This reverts commit 236dc270cc5092ac009a2b94294d02fdd72a1eb1. diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx index b06fb5c..2dab169 100644 --- a/Source/cmDefinitions.cxx +++ b/Source/cmDefinitions.cxx @@ -56,9 +56,9 @@ void cmDefinitions::Raise(const std::string& key, } bool cmDefinitions::HasKey(const std::string& key, - StackIter begin, StackIter end) + StackConstIter begin, StackConstIter end) { - for (StackIter it = begin; it != end; ++it) + for (StackConstIter it = begin; it != end; ++it) { MapType::const_iterator i = it->Map.find(key); if (i != it->Map.end()) @@ -94,12 +94,12 @@ std::vector cmDefinitions::UnusedKeys() const } //---------------------------------------------------------------------------- -cmDefinitions cmDefinitions::MakeClosure(StackIter begin, - StackIter end) +cmDefinitions cmDefinitions::MakeClosure(StackConstIter begin, + StackConstIter end) { cmDefinitions closure; std::set undefined; - for (StackIter it = begin; it != end; ++it) + for (StackConstIter it = begin; it != end; ++it) { // Consider local definitions. for(MapType::const_iterator mi = it->Map.begin(); @@ -125,12 +125,12 @@ cmDefinitions cmDefinitions::MakeClosure(StackIter begin, //---------------------------------------------------------------------------- std::vector -cmDefinitions::ClosureKeys(StackIter begin, StackIter end) +cmDefinitions::ClosureKeys(StackConstIter begin, StackConstIter end) { std::set bound; std::vector defined; - for (StackIter it = begin; it != end; ++it) + for (StackConstIter it = begin; it != end; ++it) { defined.reserve(defined.size() + it->Map.size()); for(MapType::const_iterator mi = it->Map.begin(); diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h index 411867c..5fdcaab 100644 --- a/Source/cmDefinitions.h +++ b/Source/cmDefinitions.h @@ -13,9 +13,6 @@ #define cmDefinitions_h #include "cmStandardIncludes.h" - -#include "cmLinkedTree.h" - #if defined(CMAKE_BUILD_WITH_CMAKE) #ifdef CMake_HAVE_CXX11_UNORDERED_MAP #include @@ -35,26 +32,26 @@ */ class cmDefinitions { - typedef cmLinkedTree::iterator StackIter; + typedef std::list::reverse_iterator StackIter; + typedef std::list::const_reverse_iterator StackConstIter; public: static const char* Get(const std::string& key, StackIter begin, StackIter end); - static void Raise(const std::string& key, - StackIter begin, StackIter end); + static void Raise(const std::string& key, StackIter begin, StackIter end); static bool HasKey(const std::string& key, - StackIter begin, StackIter end); + StackConstIter begin, StackConstIter end); /** Set (or unset if null) a value associated with a key. */ void Set(const std::string& key, const char* value); std::vector UnusedKeys() const; - static std::vector ClosureKeys(StackIter begin, - StackIter end); + static std::vector ClosureKeys(StackConstIter begin, + StackConstIter end); - static cmDefinitions MakeClosure(StackIter begin, StackIter end); + static cmDefinitions MakeClosure(StackConstIter begin, StackConstIter end); private: // String with existence boolean. diff --git a/Source/cmLinkedTree.h b/Source/cmLinkedTree.h index df00b30..d2339c4 100644 --- a/Source/cmLinkedTree.h +++ b/Source/cmLinkedTree.h @@ -87,24 +87,6 @@ public: return this->Tree->GetPointer(this->Position - 1); } - ReferenceType operator*() const - { - assert(this->Tree); - assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); - assert(this->Position <= this->Tree->Data.size()); - assert(this->Position > 0); - return this->Tree->GetReference(this->Position - 1); - } - - ReferenceType operator*() - { - assert(this->Tree); - assert(this->Tree->UpPositions.size() == this->Tree->Data.size()); - assert(this->Position <= this->Tree->Data.size()); - assert(this->Position > 0); - return this->Tree->GetReference(this->Position - 1); - } - bool operator==(iterator other) const { assert(this->Tree); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index afc46ae..a8b163a 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -45,92 +45,65 @@ class cmMakefile::Internals { public: - struct VarScope - { - cmLinkedTree::iterator Vars; - cmLinkedTree::iterator Parent; - }; - - cmLinkedTree VarTree; - cmLinkedTree VarScopes; - cmLinkedTree::iterator VarScopeIter; + std::list VarStack; bool IsSourceFileTryCompile; void PushDefinitions() { - assert(this->VarScopeIter.IsValid()); - assert(this->VarScopeIter->Vars.IsValid()); - cmLinkedTree::iterator origin = - this->VarScopeIter->Vars; - cmLinkedTree::iterator parentScope = - this->VarTree.Extend(origin); - this->VarScopeIter->Vars = parentScope; - this->VarScopeIter = this->VarScopes.Extend(this->VarScopeIter); - this->VarScopeIter->Parent = parentScope; - this->VarScopeIter->Vars = this->VarTree.Extend(origin); - } - - void InitializeVarScope() - { - assert(!this->VarScopeIter.IsValid()); - this->VarScopeIter = this->VarScopes.Extend(this->VarScopes.Root()); - this->VarScopeIter->Vars = this->VarTree.Extend(this->VarTree.Root()); - this->VarScopeIter->Parent = this->VarTree.Root(); + this->VarStack.push_back(cmDefinitions()); } void InitializeDefinitions(cmMakefile* parent) { - assert(this->VarScopeIter.IsValid()); - assert(this->VarScopeIter->Vars.IsValid()); - *this->VarScopeIter->Vars = - cmDefinitions::MakeClosure(parent->Internal->VarScopeIter->Vars, - parent->Internal->VarTree.Root()); + this->VarStack.back() = + cmDefinitions::MakeClosure(parent->Internal->VarStack.rbegin(), + parent->Internal->VarStack.rend()); } const char* GetDefinition(std::string const& name) { - assert(this->VarScopeIter.IsValid()); - assert(this->VarScopeIter->Vars.IsValid()); - return cmDefinitions::Get(name, - this->VarScopeIter->Vars, this->VarTree.Root()); + return cmDefinitions::Get(name, this->VarStack.rbegin(), + this->VarStack.rend()); } bool IsInitialized(std::string const& name) { - return cmDefinitions::HasKey(name, - this->VarScopeIter->Vars, this->VarTree.Root()); + return cmDefinitions::HasKey(name, this->VarStack.rbegin(), + this->VarStack.rend()); } void SetDefinition(std::string const& name, std::string const& value) { - this->VarScopeIter->Vars->Set(name, value.c_str()); + this->VarStack.back().Set(name, value.c_str()); } void RemoveDefinition(std::string const& name) { - this->VarScopeIter->Vars->Set(name, 0); + this->VarStack.back().Set(name, 0); } std::vector UnusedKeys() const { - return this->VarScopeIter->Vars->UnusedKeys(); + return this->VarStack.back().UnusedKeys(); } std::vector ClosureKeys() const { - return cmDefinitions::ClosureKeys(this->VarScopeIter->Vars, - this->VarTree.Root()); + return cmDefinitions::ClosureKeys(this->VarStack.rbegin(), + this->VarStack.rend()); } void PopDefinitions() { - ++this->VarScopeIter; + this->VarStack.pop_back(); } bool RaiseScope(std::string const& var, const char* varDef, cmMakefile* mf) { - assert(this->VarScopeIter->Vars != this->VarTree.Root()); - if(this->VarScopeIter->Parent == this->VarTree.Root()) + std::list::reverse_iterator it = this->VarStack.rbegin(); + assert(it != this->VarStack.rend()); + ++it; + if(it == this->VarStack.rend()) { cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); if(!plg) @@ -152,10 +125,10 @@ public: return true; } // First localize the definition in the current scope. - cmDefinitions::Raise(var, this->VarScopeIter->Vars, this->VarTree.Root()); + cmDefinitions::Raise(var, this->VarStack.rbegin(), this->VarStack.rend()); // Now update the definition in the parent scope. - this->VarScopeIter->Parent->Set(var, varDef); + it->Set(var, varDef); return true; } }; @@ -166,7 +139,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) LocalGenerator(localGenerator), StateSnapshot(localGenerator->GetStateSnapshot()) { - this->Internal->InitializeVarScope(); + this->Internal->PushDefinitions(); this->Internal->IsSourceFileTryCompile = false; // Initialize these first since AddDefaultDefinitions calls AddDefinition ----------------------------------------------------------------------- Summary of changes: Source/cmDefinitions.cxx | 14 ++++----- Source/cmDefinitions.h | 17 +++++------ Source/cmLinkedTree.h | 18 ------------ Source/cmMakefile.cxx | 71 ++++++++++++++-------------------------------- 4 files changed, 36 insertions(+), 84 deletions(-) hooks/post-receive -- CMake From domen.vrankar at gmail.com Wed Jun 10 16:16:09 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Wed, 10 Jun 2015 16:16:09 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-422-g4d73673 Message-ID: <20150610201609.CF10FAF5BD@public.kitware.com> 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 4d73673ff03d1f60314eac2fde5db6483db2de1c (commit) via 0bc9f68549ca9d8420e93b1aac0ca88478cf276d (commit) from 044833f9862b3c5657aff6d5e939f6e1c6cef8ed (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=4d73673ff03d1f60314eac2fde5db6483db2de1c commit 4d73673ff03d1f60314eac2fde5db6483db2de1c Merge: 044833f 0bc9f68 Author: Domen Vrankar AuthorDate: Wed Jun 10 16:16:08 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 10 16:16:08 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 0bc9f685 fixup! CPack Deb and RPM RunCMake tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0bc9f68549ca9d8420e93b1aac0ca88478cf276d commit 0bc9f68549ca9d8420e93b1aac0ca88478cf276d Author: Domen Vrankar AuthorDate: Wed Jun 10 22:15:36 2015 +0200 Commit: Domen Vrankar CommitDate: Wed Jun 10 22:15:36 2015 +0200 fixup! CPack Deb and RPM RunCMake tests Test was deleting source dir if cmake was built in-place. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 43df312..74bbf38 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -28,9 +28,9 @@ endmacro() function(add_RunCMake_test_group test types) # create directory for common content - set(BASE_TEST_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${test}") - file(REMOVE_RECURSE "${BASE_TEST_BINARY_DIR}") - file(MAKE_DIRECTORY "${BASE_TEST_BINARY_DIR}") + set(TEST_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/${test}/conf") + file(REMOVE_RECURSE "${TEST_CONFIG_DIR}") + file(MAKE_DIRECTORY "${TEST_CONFIG_DIR}") foreach(type IN LISTS types) # generate prerequirements config file in cmake as ctest doesn't have as @@ -39,7 +39,7 @@ function(add_RunCMake_test_group test types) unset(${test}_${type}_FOUND_PREREQUIREMENTS) include("${CMAKE_CURRENT_SOURCE_DIR}/${test}/${type}/Prerequirements.cmake") get_test_prerequirements("${test}_${type}_FOUND_PREREQUIREMENTS" - "${BASE_TEST_BINARY_DIR}/${type}_config.cmake") + "${TEST_CONFIG_DIR}/${type}_config.cmake") # only add the test if prerequirements are met if(${test}_${type}_FOUND_PREREQUIREMENTS) @@ -52,7 +52,7 @@ function(add_RunCMake_test_group test types) -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${test} -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${type}/${test} - -Dconfig_file=${BASE_TEST_BINARY_DIR}/${type}_config.cmake + -Dconfig_file=${TEST_CONFIG_DIR}/${type}_config.cmake -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" ) endif() ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Wed Jun 10 16:47:43 2015 From: steveire at gmail.com (Stephen Kelly) Date: Wed, 10 Jun 2015 16:47:43 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-424-g83ef27f Message-ID: <20150610204743.1247AAF872@public.kitware.com> 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 83ef27fdf1bb1c23a1bf57d27cc4dad3f1f4a729 (commit) via 7eba9a95f811b63b4ddca88ba320de03280fb640 (commit) from 4d73673ff03d1f60314eac2fde5db6483db2de1c (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=83ef27fdf1bb1c23a1bf57d27cc4dad3f1f4a729 commit 83ef27fdf1bb1c23a1bf57d27cc4dad3f1f4a729 Merge: 4d73673 7eba9a9 Author: Stephen Kelly AuthorDate: Wed Jun 10 16:47:42 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 10 16:47:42 2015 -0400 Merge topic 'fail-on-ancient-policies' into next 7eba9a95 fixup! Tests: Update the minimum required cmake version. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7eba9a95f811b63b4ddca88ba320de03280fb640 commit 7eba9a95f811b63b4ddca88ba320de03280fb640 Author: Stephen Kelly AuthorDate: Wed Jun 10 22:45:18 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 22:45:18 2015 +0200 fixup! Tests: Update the minimum required cmake version. diff --git a/Tests/Simple/CMakeLists.txt b/Tests/Simple/CMakeLists.txt index a951c2d..79ff071 100644 --- a/Tests/Simple/CMakeLists.txt +++ b/Tests/Simple/CMakeLists.txt @@ -1,4 +1,5 @@ # a simple test case +cmake_minimum_required (VERSION 3.3) project (Simple) add_executable (Simple simple.cxx) ----------------------------------------------------------------------- Summary of changes: Tests/Simple/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From steveire at gmail.com Wed Jun 10 17:54:53 2015 From: steveire at gmail.com (Stephen Kelly) Date: Wed, 10 Jun 2015 17:54:53 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc1-430-gb39c01d Message-ID: <20150610215453.2C410AFDFC@public.kitware.com> 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 b39c01dbb626bbbf2ce145311824997ad8965b33 (commit) via 00055af64dfbb8d6d797cc31d11a8152f2101eca (commit) via 3a379e4c0669f66563f30a507ecdcac72fe44859 (commit) via daf3f0f7090a38bf0655cc858908de801649beb4 (commit) via 7b20344c1532898e021ae4afb44b0ac7e9fe0932 (commit) via db60a9cc008402fe3243e470131f80017b946f3a (commit) from 83ef27fdf1bb1c23a1bf57d27cc4dad3f1f4a729 (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=b39c01dbb626bbbf2ce145311824997ad8965b33 commit b39c01dbb626bbbf2ce145311824997ad8965b33 Merge: 83ef27f 00055af Author: Stephen Kelly AuthorDate: Wed Jun 10 17:54:52 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 10 17:54:52 2015 -0400 Merge topic 'fail-on-ancient-policies' into next 00055af6 cmPolicies: Unconditionally use NEW behavior for ancient policies. 3a379e4c Tests: Update the complex test for ancient policies. daf3f0f7 Tests: Update the minimum required cmake version. 7b20344c Tests: Fix for NEW behavior of CMake. db60a9cc Tests: Implement PolicyScope tests in terms of newer policies. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=00055af64dfbb8d6d797cc31d11a8152f2101eca commit 00055af64dfbb8d6d797cc31d11a8152f2101eca Author: Stephen Kelly AuthorDate: Tue Jun 9 22:50:18 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 23:53:20 2015 +0200 cmPolicies: Unconditionally use NEW behavior for ancient policies. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 5026893..e5f8d0b 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -53,6 +53,10 @@ static bool stringToId(const char* input, cmPolicies::PolicyID& pid) #define CM_FOR_EACH_POLICY_ID_DOC(POLICY) \ CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID_DOC) +#define CM_SELECT_ID_STATUS(F, A1, A2, A3, A4, A5, A6) F(A1, A6) +#define CM_FOR_EACH_POLICY_ID_STATUS(POLICY) \ + CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID_STATUS) + static const char* idToString(cmPolicies::PolicyID id) { switch(id) @@ -319,8 +323,18 @@ std::string cmPolicies::GetRequiredPolicyError(cmPolicies::PolicyID id) ///! Get the default status for a policy cmPolicies::PolicyStatus -cmPolicies::GetPolicyStatus(cmPolicies::PolicyID) +cmPolicies::GetPolicyStatus(cmPolicies::PolicyID id) { + switch(id) + { +#define POLICY_CASE(ID, STATUS) \ + case cmPolicies::ID: \ + return STATUS; + CM_FOR_EACH_POLICY_ID_STATUS(POLICY_CASE) +#undef POLICY_CASE + case cmPolicies::CMPCOUNT: + return cmPolicies::WARN; + } return cmPolicies::WARN; } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 8a3c27d..85f3612 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -22,40 +22,40 @@ class cmPolicy; #define CM_FOR_EACH_POLICY_TABLE(POLICY, SELECT) \ SELECT(POLICY, CMP0000, \ "A minimum required CMake version must be specified.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0001, \ "CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0002, \ "Logical target names must be globally unique.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0003, \ "Libraries linked via full path no longer produce linker search paths.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0004, \ "Libraries linked may not have leading or trailing whitespace.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0005, \ "Preprocessor definition values are now escaped automatically.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0006, \ "Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0007, \ "list command no longer ignores empty elements.", \ - 2, 6, 0, cmPolicies::WARN) \ + 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0008, \ "Libraries linked by full-path must have a valid library file name.", \ - 2, 6, 1, cmPolicies::WARN) \ + 2, 6, 1, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0009, \ "FILE GLOB_RECURSE calls should not follow symlinks by default.", \ - 2, 6, 2, cmPolicies::WARN) \ + 2, 6, 2, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0010, \ "Bad variable reference syntax is an error.", \ - 2, 6, 3, cmPolicies::WARN) \ + 2, 6, 3, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0011, \ "Included scripts do automatic cmake_policy PUSH and POP.", \ - 2, 6, 3, cmPolicies::WARN) \ + 2, 6, 3, cmPolicies::REQUIRED_IF_USED) \ SELECT(POLICY, CMP0012, \ "if() recognizes numbers and boolean constants.", \ 2, 8, 0, cmPolicies::WARN) \ diff --git a/Tests/CMakeTests/ListTest.cmake.in b/Tests/CMakeTests/ListTest.cmake.in index 77c34a9..99fc4d3 100644 --- a/Tests/CMakeTests/ListTest.cmake.in +++ b/Tests/CMakeTests/ListTest.cmake.in @@ -158,8 +158,6 @@ foreach(cmd Remove_Item Reverse Remove_Duplicates Sort Remove_At) set(${cmd}-Nonexistent-List-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-${cmd}-Nonexistent-List.cmake:2 \\(list\\):.*sub-command ${Cmd} requires list to be present.*") endforeach() -set(Get-CMP0007-Warn-RESULT 0) -set(Get-CMP0007-Warn-STDERR ".*CMake Warning \\(dev\\) at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Get-CMP0007-Warn.cmake:3 \\(list\\):.*Policy CMP0007 is not set:.*") check_cmake_test(List No-Arguments @@ -176,15 +174,4 @@ check_cmake_test(List Sort-Nonexistent-List Remove_At-Nonexistent-List Remove_At-Invalid-Index - Get-CMP0007-Warn ) - -set(thelist "" NEW OLD) - -foreach (_pol ${thelist}) - cmake_policy(SET CMP0007 ${_pol}) - list(GET thelist 1 thevalue) - if (NOT thevalue STREQUAL _pol) - message(SEND_ERROR "returned element '${thevalue}', but expected '${_pol}'") - endif() -endforeach (_pol) diff --git a/Tests/RunCMake/Syntax/RunCMakeTest.cmake b/Tests/RunCMake/Syntax/RunCMakeTest.cmake index c431280..c874271 100644 --- a/Tests/RunCMake/Syntax/RunCMakeTest.cmake +++ b/Tests/RunCMake/Syntax/RunCMakeTest.cmake @@ -64,7 +64,6 @@ run_cmake(UnterminatedCall1) run_cmake(UnterminatedCall2) run_cmake(UnterminatedString) run_cmake(UnterminatedBrace0) -run_cmake(UnterminatedBrace1) run_cmake(UnterminatedBrace2) run_cmake(UnterminatedBracket0) run_cmake(UnterminatedBracket1) diff --git a/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt deleted file mode 100644 index 4e3c2b5..0000000 --- a/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt +++ /dev/null @@ -1,13 +0,0 @@ -CMake Warning \(dev\) at UnterminatedBrace1.cmake:3 \(set\): - Syntax error in cmake code at - - .*/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake:3 - - when parsing string - - \${ - - syntax error, unexpected \$end, expecting } \(2\) -Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) -This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake b/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake deleted file mode 100644 index 93fba34..0000000 --- a/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake +++ /dev/null @@ -1,3 +0,0 @@ -cmake_minimum_required(VERSION 3.0) -cmake_policy(SET CMP0010 OLD) -set(var "${") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3a379e4c0669f66563f30a507ecdcac72fe44859 commit 3a379e4c0669f66563f30a507ecdcac72fe44859 Author: Stephen Kelly AuthorDate: Wed Jun 10 01:25:50 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 23:53:20 2015 +0200 Tests: Update the complex test for ancient policies. diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt index 5e5eead..1479a13 100644 --- a/Tests/Complex/CMakeLists.txt +++ b/Tests/Complex/CMakeLists.txt @@ -1,7 +1,7 @@ # # A more complex test case # -cmake_minimum_required(VERSION 2.4) +cmake_minimum_required(VERSION 3.2) project (Complex) # Try setting a new policy. The IF test is for coverage. @@ -21,6 +21,7 @@ foreach(p CMP0032 CMP0033 CMP0034 + CMP0035 CMP0043 CMP0050 ) diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx index ec222a5..9dccd84 100644 --- a/Tests/Complex/Executable/complex.cxx +++ b/Tests/Complex/Executable/complex.cxx @@ -838,14 +838,6 @@ int main() #endif #endif // defined(_WIN32) && !defined(__CYGWIN__) - if(strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "2.4") == 0) - { - cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 2.4"); - } - else - { - cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 2.4"); - } // ---------------------------------------------------------------------- // Test REMOVE command diff --git a/Tests/Complex/Library/test_preprocess.cmake b/Tests/Complex/Library/test_preprocess.cmake index 4c8ec21..5758ba8 100644 --- a/Tests/Complex/Library/test_preprocess.cmake +++ b/Tests/Complex/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") diff --git a/Tests/ComplexOneConfig/Library/test_preprocess.cmake b/Tests/ComplexOneConfig/Library/test_preprocess.cmake index 4c8ec21..5758ba8 100644 --- a/Tests/ComplexOneConfig/Library/test_preprocess.cmake +++ b/Tests/ComplexOneConfig/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=daf3f0f7090a38bf0655cc858908de801649beb4 commit daf3f0f7090a38bf0655cc858908de801649beb4 Author: Stephen Kelly AuthorDate: Wed Jun 10 00:07:39 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 23:52:56 2015 +0200 Tests: Update the minimum required cmake version. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 8865063..fabaa6c 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -347,9 +347,6 @@ if(BUILD_TESTING) ADD_TEST_MACRO(CrossCompile CrossCompile) set_tests_properties(CrossCompile PROPERTIES PASS_REGULAR_EXPRESSION "TRY_RUN.. invoked in cross-compiling mode") - if("${CMAKE_GENERATOR}" MATCHES "Make") - ADD_TEST_MACRO(Policy0002 Policy0002) - endif() if(CTEST_TEST_OSX_ARCH) ADD_TEST_MACRO(Architecture Architecture) set_tests_properties(Architecture PROPERTIES diff --git a/Tests/EmptyProperty/CMakeLists.txt b/Tests/EmptyProperty/CMakeLists.txt index 39e75f3..65aa216 100644 --- a/Tests/EmptyProperty/CMakeLists.txt +++ b/Tests/EmptyProperty/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) project (EmptyProperty) set_property(DIRECTORY APPEND diff --git a/Tests/ExternalOBJ/CMakeLists.txt b/Tests/ExternalOBJ/CMakeLists.txt index 458c88b..64620a5 100644 --- a/Tests/ExternalOBJ/CMakeLists.txt +++ b/Tests/ExternalOBJ/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project (ExternalOBJ) if(APPLE) diff --git a/Tests/LibName/CMakeLists.txt b/Tests/LibName/CMakeLists.txt index 3ac125f..eedd9ec 100644 --- a/Tests/LibName/CMakeLists.txt +++ b/Tests/LibName/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.3) project(LibName) # this is a test to make sure that relative path # LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH work diff --git a/Tests/LinkLine/CMakeLists.txt b/Tests/LinkLine/CMakeLists.txt index 6154dd4..d14c963 100644 --- a/Tests/LinkLine/CMakeLists.txt +++ b/Tests/LinkLine/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) project( LinkLine ) # Makes sure that the library order as specified by the user are diff --git a/Tests/Policy0002/A/CMakeLists.txt b/Tests/Policy0002/A/CMakeLists.txt deleted file mode 100644 index cee6422..0000000 --- a/Tests/Policy0002/A/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_executable(Policy0002 ../policy0002.c) diff --git a/Tests/Policy0002/CMakeLists.txt b/Tests/Policy0002/CMakeLists.txt deleted file mode 100644 index 0f6d331..0000000 --- a/Tests/Policy0002/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(Policy0002 C) -cmake_policy(SET CMP0002 OLD) -add_subdirectory(A) -add_executable(Policy0002 policy0002.c) diff --git a/Tests/Policy0002/policy0002.c b/Tests/Policy0002/policy0002.c deleted file mode 100644 index 8488f4e..0000000 --- a/Tests/Policy0002/policy0002.c +++ /dev/null @@ -1,4 +0,0 @@ -int main(void) -{ - return 0; -} diff --git a/Tests/PreOrder/CMakeLists.txt b/Tests/PreOrder/CMakeLists.txt index 8b4c439..a688c74 100644 --- a/Tests/PreOrder/CMakeLists.txt +++ b/Tests/PreOrder/CMakeLists.txt @@ -1,4 +1,5 @@ # a simple test case +cmake_minimum_required (VERSION 3.3) project (PreOrder) set(CMAKE_IGNORE_DEPENDENCIES_ORDERING 1) add_subdirectory(Library) diff --git a/Tests/SBCS/CMakeLists.txt b/Tests/SBCS/CMakeLists.txt index b3c3c2c..7a77711 100644 --- a/Tests/SBCS/CMakeLists.txt +++ b/Tests/SBCS/CMakeLists.txt @@ -1,4 +1,5 @@ # a SBCS test case +cmake_minimum_required (VERSION 3.3) project (SBCS) add_definitions(-D_SBCS) diff --git a/Tests/Simple/CMakeLists.txt b/Tests/Simple/CMakeLists.txt index a951c2d..79ff071 100644 --- a/Tests/Simple/CMakeLists.txt +++ b/Tests/Simple/CMakeLists.txt @@ -1,4 +1,5 @@ # a simple test case +cmake_minimum_required (VERSION 3.3) project (Simple) add_executable (Simple simple.cxx) diff --git a/Tests/StringFileTest/CMakeLists.txt b/Tests/StringFileTest/CMakeLists.txt index faf3bc9..8caa2f0 100644 --- a/Tests/StringFileTest/CMakeLists.txt +++ b/Tests/StringFileTest/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project(StringFileTest) include_directories(${StringFileTest_BINARY_DIR}) diff --git a/Tests/VSExternalInclude/CMakeLists.txt b/Tests/VSExternalInclude/CMakeLists.txt index 73ea05a..926caea 100644 --- a/Tests/VSExternalInclude/CMakeLists.txt +++ b/Tests/VSExternalInclude/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project(VSExternalInclude) if(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") diff --git a/Tests/VSExternalInclude/Lib1/CMakeLists.txt b/Tests/VSExternalInclude/Lib1/CMakeLists.txt index 9dfac86..0d08853 100644 --- a/Tests/VSExternalInclude/Lib1/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib1/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(LIB1) diff --git a/Tests/VSExternalInclude/Lib2/CMakeLists.txt b/Tests/VSExternalInclude/Lib2/CMakeLists.txt index f451354..017b8fe 100644 --- a/Tests/VSExternalInclude/Lib2/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib2/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(VSEXTERNAL_LIB2) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7b20344c1532898e021ae4afb44b0ac7e9fe0932 commit 7b20344c1532898e021ae4afb44b0ac7e9fe0932 Author: Stephen Kelly AuthorDate: Tue Jun 9 23:14:25 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 23:52:56 2015 +0200 Tests: Fix for NEW behavior of CMake. diff --git a/Tests/CMakeTests/FileTestScript.cmake b/Tests/CMakeTests/FileTestScript.cmake index 9a43569..a243aa6 100644 --- a/Tests/CMakeTests/FileTestScript.cmake +++ b/Tests/CMakeTests/FileTestScript.cmake @@ -73,7 +73,7 @@ elseif(testname STREQUAL glob_recurse_relative_no_expression) # fail file(GLOB_RECURSE v RELATIVE dddd) elseif(testname STREQUAL glob_non_full_path) # pass - file(GLOB_RECURSE v ffff*.*) + file(GLOB_RECURSE v FOLLOW_SYMLINKS ffff*.*) message("v='${v}'") elseif(testname STREQUAL make_directory_non_full_path) # pass diff --git a/Tests/CPackComponents/CMakeLists.txt b/Tests/CPackComponents/CMakeLists.txt index 1cb8669..c676acc 100644 --- a/Tests/CPackComponents/CMakeLists.txt +++ b/Tests/CPackComponents/CMakeLists.txt @@ -79,7 +79,7 @@ set(CPACK_NSIS_MENU_LINKS ) # Suggested default root for end users of the installer: -set(CPACK_NSIS_INSTALL_ROOT "C:\\Program Files\\CMake Tests Install Root") +set(CPACK_NSIS_INSTALL_ROOT "C:\\\\Program Files\\\\CMake Tests Install Root") # Include CPack to introduce the appropriate targets include(CPack) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=db60a9cc008402fe3243e470131f80017b946f3a commit db60a9cc008402fe3243e470131f80017b946f3a Author: Stephen Kelly AuthorDate: Wed Jun 10 00:08:51 2015 +0200 Commit: Stephen Kelly CommitDate: Wed Jun 10 23:52:55 2015 +0200 Tests: Implement PolicyScope tests in terms of newer policies. Keep the spirit of the tests. diff --git a/Tests/PolicyScope/Bar.cmake b/Tests/PolicyScope/Bar.cmake index cf1904c..2f94d8d 100644 --- a/Tests/PolicyScope/Bar.cmake +++ b/Tests/PolicyScope/Bar.cmake @@ -1,8 +1,5 @@ -cmake_minimum_required(VERSION 2.6.3) +cmake_minimum_required(VERSION 3.2) # Make sure a policy set differently by our includer is now correct. -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "NEW" "${cmp}") - -# Test allowing the top-level file to not have cmake_minimum_required. -cmake_policy(SET CMP0000 OLD) +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "NEW" "${cmp}") diff --git a/Tests/PolicyScope/CMakeLists.txt b/Tests/PolicyScope/CMakeLists.txt index 413195a..b14c423 100644 --- a/Tests/PolicyScope/CMakeLists.txt +++ b/Tests/PolicyScope/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.0) project(PolicyScope C) # No cmake_minimum_required(VERSION), it's in FindFoo. @@ -12,33 +13,27 @@ endfunction() #----------------------------------------------------------------------------- # Test using a development framework that sets policies for us. -# Policy CMP0011 should not be set at this point. -cmake_policy(GET CMP0011 cmp) -check(CMP0011 "" "${cmp}") - # Put the test modules in the search path. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) # The included file should set policies for us. -find_package(Foo) +find_package(Foo NO_POLICY_SCOPE) # Check policies set by the package. -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "OLD" "${cmp}") -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "NEW" "${cmp}") -cmake_policy(GET CMP0011 cmp) -check(CMP0011 "NEW" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "OLD" "${cmp}") +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "NEW" "${cmp}") # Make sure an included file cannot change policies. include(Bar) -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "OLD" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "OLD" "${cmp}") # Allow the included file to change policies. include(Bar NO_POLICY_SCOPE) -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "NEW" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "NEW" "${cmp}") #----------------------------------------------------------------------------- # Test function and macro policy recording. @@ -46,57 +41,56 @@ check(CMP0003 "NEW" "${cmp}") # Create the functions in an isolated scope in which we change policies. cmake_policy(PUSH) if(1) - # Change CMP0002 - cmake_policy(SET CMP0002 OLD) + cmake_policy(SET CMP0055 OLD) function(func1) - # CMP0002 should be changed when this function is invoked - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "OLD" "${cmp}") + # CMP0055 should be changed when this function is invoked + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") endfunction() - # Unset CMP0002 - cmake_policy(VERSION 2.4) + # Unset CMP0055 + cmake_policy(VERSION 3.1) macro(macro1) - # CMP0002 should be unset when this macro is invoked - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "" "${cmp}") + # CMP0055 should be unset when this macro is invoked + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "" "${cmp}") # Setting the policy should work here and also in the caller. - cmake_policy(SET CMP0002 OLD) - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "OLD" "${cmp}") + cmake_policy(SET CMP0055 OLD) + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") endmacro() endif() cmake_policy(POP) -# CMP0002 should still be NEW in this context. -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "NEW" "${cmp}") +# CMP0055 should still be NEW in this context. +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "NEW" "${cmp}") # Check the recorded policies func1() macro1() -# The macro should have changed CMP0002. -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "OLD" "${cmp}") +# The macro should have changed CMP0055. +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "OLD" "${cmp}") #----------------------------------------------------------------------------- # Test CMAKE_POLICY_DEFAULT_CMP variable. cmake_policy(PUSH) - set(CMAKE_POLICY_DEFAULT_CMP0010 OLD) # ignored - set(CMAKE_POLICY_DEFAULT_CMP0012 OLD) # honored - set(CMAKE_POLICY_DEFAULT_CMP0013 NEW) # honored - set(CMAKE_POLICY_DEFAULT_CMP0014 "") # noop - cmake_policy(VERSION 2.6.3) - cmake_policy(GET CMP0010 cmp) - check(CMP0010 "NEW" "${cmp}") - cmake_policy(GET CMP0012 cmp) - check(CMP0012 "OLD" "${cmp}") - cmake_policy(GET CMP0013 cmp) - check(CMP0013 "NEW" "${cmp}") - cmake_policy(GET CMP0014 cmp) - check(CMP0014 "" "${cmp}") + set(CMAKE_POLICY_DEFAULT_CMP0054 OLD) # ignored + set(CMAKE_POLICY_DEFAULT_CMP0055 OLD) # honored + set(CMAKE_POLICY_DEFAULT_CMP0056 NEW) # honored + set(CMAKE_POLICY_DEFAULT_CMP0057 "") # noop + cmake_policy(VERSION 3.1) + cmake_policy(GET CMP0054 cmp) + check(CMP0054 "NEW" "${cmp}") + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") + cmake_policy(GET CMP0056 cmp) + check(CMP0056 "NEW" "${cmp}") + cmake_policy(GET CMP0057 cmp) + check(CMP0057 "" "${cmp}") cmake_policy(POP) #----------------------------------------------------------------------------- diff --git a/Tests/PolicyScope/FindFoo.cmake b/Tests/PolicyScope/FindFoo.cmake index 5b441e2..3f9ac8e 100644 --- a/Tests/PolicyScope/FindFoo.cmake +++ b/Tests/PolicyScope/FindFoo.cmake @@ -1,2 +1,2 @@ -cmake_minimum_required(VERSION 2.6.3) -cmake_policy(SET CMP0003 OLD) +cmake_minimum_required(VERSION 3.2) +cmake_policy(SET CMP0056 OLD) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Thu Jun 11 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 11 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc1-150-g07ee7ba Message-ID: <20150611040105.16E5AB03F3@public.kitware.com> 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, master has been updated via 07ee7bac74260942121552bed94a18101b6e7002 (commit) from f9285727dc73365ff190de530a63dffbf725eabd (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=07ee7bac74260942121552bed94a18101b6e7002 commit 07ee7bac74260942121552bed94a18101b6e7002 Author: Kitware Robot AuthorDate: Thu Jun 11 00:01:03 2015 -0400 Commit: Kitware Robot CommitDate: Thu Jun 11 00:01:03 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 5298a86..13420da 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150610) +set(CMake_VERSION_PATCH 20150611) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From robert.maynard at kitware.com Thu Jun 11 09:36:45 2015 From: robert.maynard at kitware.com (Robert Maynard) Date: Thu, 11 Jun 2015 09:36:45 -0400 (EDT) Subject: [Cmake-commits] CMake annotated tag, v3.3.0-rc2, created. v3.3.0-rc2 Message-ID: <20150611133645.B938FB0565@public.kitware.com> 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 annotated tag, v3.3.0-rc2 has been created at 6cd135ec945ac78f8320becb8c21bd6a745c8f36 (tag) tagging 86bde2ef3e5d56ca7326b51e6608a79a08eb90cd (commit) replaces v3.3.0-rc1 tagged by Brad King on Thu Jun 11 09:17:35 2015 -0400 - Log ----------------------------------------------------------------- CMake 3.3.0-rc2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVeYpvAAoJEOyP7zp7+07aQmQP/2Fl5d+LTiG2JUQyinBYmP1Y NHtZHBlNvI9W6JOgyfExGQ21ztT8sxUIIYeD0d6lwcx646G3IRm8HEXOzEqeLGFE xRClYSZI/r3tKdxZRzDcSC8zKcnUGd0Tm0HN9GtVDVwjidlVMVdbkRQRGyJb6/yi 6rxE9ZyrCcr1GRqqVAF7/JbkUcUCtYitCb1ABiLZRBmU4AWHSSZVrBb31ahtbX/E 6xdBk1igckMlOBo4vrSWVRNQ9CYf2OOKS3bZlZAyf5xpv/mhCI5e1bqspcpKM2Fh 7ofTKI1MBB+aXtXemQbOFl7wmRWAQEr/UjXMoBeTjyIuUSvLWUzc+VtKkvVUCf+F sNUJtfuaThSDQfCTK9c/2wELYutJk7xEBKyppPUjPSi0zioBWejIhrGBlswxW7OJ /jpb6TaeKoFrKz6U8hp8nKsQhIJusRcSEUBwvLG7vpLkq0f+AbMGdl8unnzxfG+7 NJK7jNv2kp6TJ+DKPTq6MUIocbMTVsuTOPvn8NeN4N3nPVDgrsuD3n4IoG7DcFz8 /byg2qNvFlYkye+Nqwi4UBhYR5k+sVWQ8qe2V9t/DcTNJXEPNyWUjIozD3yQ2gxY 5CeGQOlYOclcs3t3HA/wIh/HuXwSC+LVrnNO4l7LD79mAfm09AG5yg24kLd9kK+F 4nqAwf+2x/KKOm6c5KXI =tu06 -----END PGP SIGNATURE----- Brad King (14): Help: Reference TARGET_FILE genex in add_custom_command docs (#15605) Merge branch 'doc-add_custom_command-clarify-TARGET_FILE' into release FindwxWidgets: Fix find_program call for versioned names Merge branch 'FindwxWidgets-versioned-executable' into release Merge branch 'cmake-gui-osx-install-command-line' into release Windows-GNU: Restore find_library treatment of '.dll' as linkable (#15409) ctest: Disable CMake Cygwin legacy warning in dashboard client script Merge branch 'ctest-script-mode-no-legacy-cygwin' into release Merge branch 'revert-mingw-no-find_library-dll' into release Help: Drop incorrect advice from cmake-developer.7 manual Merge branch 'doc-drop-incorrect-cmake-developer-advice' into release Help: Document explicitly that policy OLD behavior is deprecated Merge branch 'doc-policy-OLD-deprecated' into release CMake 3.3.0-rc2 Clinton Stimpson (1): cmake-gui: Make command-line install help text selectable ----------------------------------------------------------------------- hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 11:16:45 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 11:16:45 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-419-g5329744 Message-ID: <20150611151645.D0F1EAF1E6@public.kitware.com> 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 532974435f9b723aa6f8f52ffc0cfed46c91d421 (commit) via 493388ce48cb4188068c6f0379bb2afa60c0a41a (commit) via bcf258032fe79c75965722f25ec5f76ff472a19c (commit) via b6667729cb40dec8aff28464152dfa1b7c92decc (commit) from b39c01dbb626bbbf2ce145311824997ad8965b33 (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=532974435f9b723aa6f8f52ffc0cfed46c91d421 commit 532974435f9b723aa6f8f52ffc0cfed46c91d421 Merge: b39c01d 493388c Author: Brad King AuthorDate: Thu Jun 11 11:16:44 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 11:16:44 2015 -0400 Merge topic 'ctest_update-RETURN_VALUE' into next 493388ce ctest_update: Fix RETURN_VALUE on VCS tool failure (#15610) bcf25803 Tests: Teach CTest.Update* tests to check ctest_update return code b6667729 Tests: Simplify CTest.UpdateGIT QUIET mode test http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=493388ce48cb4188068c6f0379bb2afa60c0a41a commit 493388ce48cb4188068c6f0379bb2afa60c0a41a Author: Brad King AuthorDate: Thu Jun 11 09:00:01 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 11:00:48 2015 -0400 ctest_update: Fix RETURN_VALUE on VCS tool failure (#15610) Make RETURN_VALUE report -1 if the update command failed as the documentation claims. Also avoid reporting a ctest script-level failure if the update command fails because we still correctly administered the update step. diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx index 8494d28..963e501 100644 --- a/Source/CTest/cmCTestUpdateHandler.cxx +++ b/Source/CTest/cmCTestUpdateHandler.cxx @@ -283,13 +283,13 @@ int cmCTestUpdateHandler::ProcessHandler() { xml.Content("Update command failed:\n"); xml.Content(vc->GetUpdateCommandLine()); - cmCTestLog(this->CTest, ERROR_MESSAGE, " Update command failed: " + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Update command failed: " << vc->GetUpdateCommandLine() << "\n"); } xml.EndElement(); // UpdateReturnStatus xml.EndElement(); // Update xml.EndDocument(); - return numUpdated; + return updated? numUpdated : -1; } //---------------------------------------------------------------------- diff --git a/Tests/CTestUpdateCVS.cmake.in b/Tests/CTestUpdateCVS.cmake.in index 1699c3f..277b3a6 100644 --- a/Tests/CTestUpdateCVS.cmake.in +++ b/Tests/CTestUpdateCVS.cmake.in @@ -170,3 +170,22 @@ set(CTEST_CHECKOUT_COMMAND # Run the dashboard script with CTest. run_dashboard_script(dash-binary) + +#----------------------------------------------------------------------------- +# Test ctest_update(RETURN_VALUE) on failure +message("Running CTest Dashboard Script (fail to update)...") + +set(ctest_update_check [[ +if(NOT ret LESS 0) + message(FATAL_ERROR "ctest_update incorrectly succeeded with ${ret}") +endif() +]]) +create_dashboard_script(dash-binary-fail + "set(CTEST_CVS_COMMAND \"update-command-does-not-exist\") +") +unset(ctest_update_check) + +# Run the dashboard script with CTest. +set(FAIL_UPDATE 1) +run_dashboard_script(dash-binary-fail) +unset(FAIL_UPDATE) diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake index df1a713..458e427 100644 --- a/Tests/CTestUpdateCommon.cmake +++ b/Tests/CTestUpdateCommon.cmake @@ -258,6 +258,24 @@ function(check_no_update bin_dir) endif() endfunction() +#----------------------------------------------------------------------------- +# Function to find the Update.xml file and make sure +# it only has the UpdateReturnStatus failure message and no updates. +function(check_fail_update bin_dir) + set(PATTERN ${TOP}/${bin_dir}/Testing/*/Update.xml) + file(GLOB UPDATE_XML_FILE RELATIVE ${TOP} ${PATTERN}) + string(REGEX REPLACE "//Update.xml$" "/Update.xml" + UPDATE_XML_FILE "${UPDATE_XML_FILE}") + message(" found ${UPDATE_XML_FILE}") + file(STRINGS ${TOP}/${UPDATE_XML_FILE} UPDATE_XML_STATUS + REGEX "^\t[^<\n]+" + ) + if(UPDATE_XML_STATUS MATCHES "Update command failed") + message(" correctly found 'Update command failed'") + else() + message(FATAL_ERROR " missing 'Update command failed'") + endif() +endfunction() #----------------------------------------------------------------------------- # Function to run the dashboard through a script @@ -271,6 +289,8 @@ function(run_dashboard_script bin_dir) list(APPEND UPDATE_MAYBE Updated{subdir} Updated{CTestConfig.cmake}) if(NO_UPDATE) check_no_update(${bin_dir}) + elseif(FAIL_UPDATE) + check_fail_update(${bin_dir}) else() check_updates(${bin_dir} Updated{foo.txt} diff --git a/Tests/CTestUpdateGIT.cmake.in b/Tests/CTestUpdateGIT.cmake.in index 3734e2b..6488a1f 100644 --- a/Tests/CTestUpdateGIT.cmake.in +++ b/Tests/CTestUpdateGIT.cmake.in @@ -358,3 +358,23 @@ run_dashboard_script(dash-binary-quiet) if("${OUTPUT}" MATCHES "Updating the repository") message(FATAL_ERROR "Found 'Updating the repository' in quiet output") endif() + +#----------------------------------------------------------------------------- +# Test ctest_update(RETURN_VALUE) on failure +message("Running CTest Dashboard Script (fail to update)...") + +set(ctest_update_check [[ + +if(NOT ret LESS 0) + message(FATAL_ERROR "ctest_update incorrectly succeeded with ${ret}") +endif() +]]) +create_dashboard_script(dash-binary-fail + "set(CTEST_GIT_COMMAND \"update-command-does-not-exist\") +") +unset(ctest_update_check) + +# Run the dashboard script with CTest. +set(FAIL_UPDATE 1) +run_dashboard_script(dash-binary-fail) +unset(FAIL_UPDATE) diff --git a/Tests/CTestUpdateHG.cmake.in b/Tests/CTestUpdateHG.cmake.in index c5440f9..c76bf91 100644 --- a/Tests/CTestUpdateHG.cmake.in +++ b/Tests/CTestUpdateHG.cmake.in @@ -164,3 +164,22 @@ execute_process( # Run the dashboard script with CTest. run_dashboard_script(dash-binary) + +#----------------------------------------------------------------------------- +# Test ctest_update(RETURN_VALUE) on failure +message("Running CTest Dashboard Script (fail to update)...") + +set(ctest_update_check [[ +if(NOT ret LESS 0) + message(FATAL_ERROR "ctest_update incorrectly succeeded with ${ret}") +endif() +]]) +create_dashboard_script(dash-binary-fail + "set(CTEST_HG_COMMAND \"update-command-does-not-exist\") +") +unset(ctest_update_check) + +# Run the dashboard script with CTest. +set(FAIL_UPDATE 1) +run_dashboard_script(dash-binary-fail) +unset(FAIL_UPDATE) diff --git a/Tests/CTestUpdateSVN.cmake.in b/Tests/CTestUpdateSVN.cmake.in index b5728fd..b757a44 100644 --- a/Tests/CTestUpdateSVN.cmake.in +++ b/Tests/CTestUpdateSVN.cmake.in @@ -147,3 +147,22 @@ set(CTEST_CHECKOUT_COMMAND # Run the dashboard script with CTest. run_dashboard_script(dash-binary) + +#----------------------------------------------------------------------------- +# Test ctest_update(RETURN_VALUE) on failure +message("Running CTest Dashboard Script (fail to update)...") + +set(ctest_update_check [[ +if(NOT ret LESS 0) + message(FATAL_ERROR "ctest_update incorrectly succeeded with ${ret}") +endif() +]]) +create_dashboard_script(dash-binary-fail + "set(CTEST_SVN_COMMAND \"update-command-does-not-exist\") +") +unset(ctest_update_check) + +# Run the dashboard script with CTest. +set(FAIL_UPDATE 1) +run_dashboard_script(dash-binary-fail) +unset(FAIL_UPDATE) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bcf258032fe79c75965722f25ec5f76ff472a19c commit bcf258032fe79c75965722f25ec5f76ff472a19c Author: Brad King AuthorDate: Thu Jun 11 09:51:08 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 10:57:32 2015 -0400 Tests: Teach CTest.Update* tests to check ctest_update return code diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake index 0bb2d30..df1a713 100644 --- a/Tests/CTestUpdateCommon.cmake +++ b/Tests/CTestUpdateCommon.cmake @@ -182,6 +182,14 @@ endfunction() #----------------------------------------------------------------------------- # Function to write the dashboard test script. function(create_dashboard_script bin_dir custom_text) + if (NOT ctest_update_check) + set(ctest_update_check [[ +if(ret LESS 0) + message(FATAL_ERROR "ctest_update failed with ${ret}") +endif() +]]) + endif() + # Write the dashboard script. file(WRITE ${TOP}/${bin_dir}.cmake "# CTest Dashboard Script @@ -193,8 +201,8 @@ set(CTEST_BINARY_DIRECTORY \${CTEST_DASHBOARD_ROOT}/${bin_dir}) ${custom_text} # Start a dashboard and run the update step ctest_start(Experimental) -ctest_update(SOURCE \${CTEST_SOURCE_DIRECTORY} ${ctest_update_args}) -") +ctest_update(SOURCE \${CTEST_SOURCE_DIRECTORY} RETURN_VALUE ret ${ctest_update_args}) +${ctest_update_check}") endfunction() #----------------------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b6667729cb40dec8aff28464152dfa1b7c92decc commit b6667729cb40dec8aff28464152dfa1b7c92decc Author: Brad King AuthorDate: Thu Jun 11 09:44:05 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 10:57:20 2015 -0400 Tests: Simplify CTest.UpdateGIT QUIET mode test Parameterize the dashboard script generation to configure custom content. Also move state cleanup from previous test back to its block. diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake index 77b3398..0bb2d30 100644 --- a/Tests/CTestUpdateCommon.cmake +++ b/Tests/CTestUpdateCommon.cmake @@ -193,7 +193,7 @@ set(CTEST_BINARY_DIRECTORY \${CTEST_DASHBOARD_ROOT}/${bin_dir}) ${custom_text} # Start a dashboard and run the update step ctest_start(Experimental) -ctest_update(SOURCE \${CTEST_SOURCE_DIRECTORY}) +ctest_update(SOURCE \${CTEST_SOURCE_DIRECTORY} ${ctest_update_args}) ") endfunction() diff --git a/Tests/CTestUpdateGIT.cmake.in b/Tests/CTestUpdateGIT.cmake.in index 5987a30..3734e2b 100644 --- a/Tests/CTestUpdateGIT.cmake.in +++ b/Tests/CTestUpdateGIT.cmake.in @@ -334,31 +334,22 @@ set(CTEST_UPDATE_VERSION_ONLY TRUE) # Run the dashboard script with CTest. set(NO_UPDATE 1) run_dashboard_script(dash-binary-no-update) +unset(NO_UPDATE) rewind_source(dash-source) #----------------------------------------------------------------------------- # Test ctest_update(QUIET) -set(NO_UPDATE 0) message("Running CTest Dashboard Script (update quietly)...") +set(ctest_update_args QUIET) create_dashboard_script(dash-binary-quiet "# git command configuration set(CTEST_GIT_COMMAND \"${GIT}\") set(CTEST_GIT_UPDATE_OPTIONS) set(CTEST_GIT_UPDATE_CUSTOM \${CTEST_GIT_COMMAND} pull origin master) ") - -# We need to modify the created dashboard script to include our "QUIET" -# option. -set(filename "${TOP}/dash-binary-quiet.cmake") -file(READ "${filename}" contents) -string(REPLACE - [=[ctest_update(SOURCE ${CTEST_SOURCE_DIRECTORY})]=] - [=[ctest_update(SOURCE ${CTEST_SOURCE_DIRECTORY} QUIET)]=] - contents - "${contents}") -file(WRITE "${filename}" "${contents}") +unset(ctest_update_args) # Run the dashboard script with CTest. run_dashboard_script(dash-binary-quiet) ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestUpdateHandler.cxx | 4 ++-- Tests/CTestUpdateCVS.cmake.in | 19 ++++++++++++++++++ Tests/CTestUpdateCommon.cmake | 32 ++++++++++++++++++++++++++++-- Tests/CTestUpdateGIT.cmake.in | 35 ++++++++++++++++++++++----------- Tests/CTestUpdateHG.cmake.in | 19 ++++++++++++++++++ Tests/CTestUpdateSVN.cmake.in | 19 ++++++++++++++++++ 6 files changed, 112 insertions(+), 16 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 11:41:59 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 11:41:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-421-g3a10e14 Message-ID: <20150611154159.83867A9E87@public.kitware.com> 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 3a10e1458d48b95dd4a064e74e15d3dc7f08c311 (commit) via 6863c0d52cecfc980ba512ddc891878071ff86b0 (commit) from 532974435f9b723aa6f8f52ffc0cfed46c91d421 (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=3a10e1458d48b95dd4a064e74e15d3dc7f08c311 commit 3a10e1458d48b95dd4a064e74e15d3dc7f08c311 Merge: 5329744 6863c0d Author: Brad King AuthorDate: Thu Jun 11 11:41:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 11:41:58 2015 -0400 Merge topic 'FindBISON-DEFINES_FILE' into next 6863c0d5 Help: Add notes for topic 'FindBISON-DEFINES_FILE' http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6863c0d52cecfc980ba512ddc891878071ff86b0 commit 6863c0d52cecfc980ba512ddc891878071ff86b0 Author: Brad King AuthorDate: Thu Jun 11 11:32:09 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 11:32:09 2015 -0400 Help: Add notes for topic 'FindBISON-DEFINES_FILE' diff --git a/Help/release/dev/FindBISON-DEFINES_FILE.rst b/Help/release/dev/FindBISON-DEFINES_FILE.rst new file mode 100644 index 0000000..815d560 --- /dev/null +++ b/Help/release/dev/FindBISON-DEFINES_FILE.rst @@ -0,0 +1,6 @@ +FindBISON-DEFINES_FILE +---------------------- + +* The :module:`FindBISON` module ``BISON_TARGET`` macro learned a + new ``DEFINES_FILE`` option to specify a custom output header + to be generated. ----------------------------------------------------------------------- Summary of changes: Help/release/dev/FindBISON-DEFINES_FILE.rst | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Help/release/dev/FindBISON-DEFINES_FILE.rst hooks/post-receive -- CMake From domen.vrankar at gmail.com Thu Jun 11 12:02:58 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Thu, 11 Jun 2015 12:02:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-423-g7c404c8 Message-ID: <20150611160258.A48C3B04F4@public.kitware.com> 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 7c404c8261b4d7d2d6c41fcf2aa5c992366997b7 (commit) via 384d6dde2674ff971c4bde5306637b443bc96abf (commit) from 3a10e1458d48b95dd4a064e74e15d3dc7f08c311 (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=7c404c8261b4d7d2d6c41fcf2aa5c992366997b7 commit 7c404c8261b4d7d2d6c41fcf2aa5c992366997b7 Merge: 3a10e14 384d6dd Author: Domen Vrankar AuthorDate: Thu Jun 11 12:02:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 12:02:58 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 384d6dde fixup! CPack Deb and RPM RunCMake tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=384d6dde2674ff971c4bde5306637b443bc96abf commit 384d6dde2674ff971c4bde5306637b443bc96abf Author: Domen Vrankar AuthorDate: Thu Jun 11 18:02:14 2015 +0200 Commit: Domen Vrankar CommitDate: Thu Jun 11 18:02:14 2015 +0200 fixup! CPack Deb and RPM RunCMake tests rpmbuild can only be used if there are no spaces in path diff --git a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake index 51b77a9..69375e2 100644 --- a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake +++ b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake @@ -1,4 +1,9 @@ function(get_test_prerequirements found_var config_file) + if(CMAKE_CURRENT_BINARY_DIR MATCHES " ") + # rpmbuild can't handle spaces in path + return() + endif() + find_program(RPM_EXECUTABLE rpm) if(RPM_EXECUTABLE) ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CPack/RPM/Prerequirements.cmake | 5 +++++ 1 file changed, 5 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 13:16:17 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 13:16:17 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-138-g71d5245 Message-ID: <20150611171618.9B668AFB0C@public.kitware.com> 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, master has been updated via 71d52459900e2be0c78091cb2df6506b22c2c211 (commit) via 22d09ecf33f3d07925003995b76b7e8aa788c04f (commit) via 821a711b6ff59fd1fa0c0cbaa43178cee1718078 (commit) from 07ee7bac74260942121552bed94a18101b6e7002 (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=71d52459900e2be0c78091cb2df6506b22c2c211 commit 71d52459900e2be0c78091cb2df6506b22c2c211 Merge: 07ee7ba 22d09ec Author: Brad King AuthorDate: Thu Jun 11 13:16:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 13:16:16 2015 -0400 Merge topic 'minor-cleanups' 22d09ecf cmLocalGenerator: Remove ConfigureFinalPass. 821a711b project(): Remove unused variable. ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 2 +- Source/cmLocalGenerator.cxx | 5 ----- Source/cmLocalGenerator.h | 5 ----- Source/cmProjectCommand.cxx | 1 - 4 files changed, 1 insertion(+), 12 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 13:16:20 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 13:16:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-140-gd569008 Message-ID: <20150611171620.5B7BFAFB24@public.kitware.com> 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, master has been updated via d5690088683baee7e62716f6c7e89640bb77b4aa (commit) via a3a8177eddfdfc89fae9331ca794abbc67f5d543 (commit) from 71d52459900e2be0c78091cb2df6506b22c2c211 (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=d5690088683baee7e62716f6c7e89640bb77b4aa commit d5690088683baee7e62716f6c7e89640bb77b4aa Merge: 71d5245 a3a8177 Author: Brad King AuthorDate: Thu Jun 11 13:16:19 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 13:16:19 2015 -0400 Merge topic 'fix-CMP0009-future-states' a3a8177e cmFileCommand: Fix implementation of CMP0009. ----------------------------------------------------------------------- Summary of changes: Source/cmFileCommand.cxx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 13:16:22 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 13:16:22 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-146-g31ce82d Message-ID: <20150611171622.500E2AFB24@public.kitware.com> 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, master has been updated via 31ce82d46d4150d0726929c8e37546bf84ead673 (commit) via 6863c0d52cecfc980ba512ddc891878071ff86b0 (commit) via 12e534c2b8ad0009aba746ee6e4b47423c52f3e3 (commit) via eb859263aeffc79d73d046dbf9f5656e4c9739ef (commit) via 29985ad8948af74d8b6ad4e58428f65434e68f0c (commit) via 801b799f9d5f1d904c4605d19b798ed489be925d (commit) from d5690088683baee7e62716f6c7e89640bb77b4aa (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=31ce82d46d4150d0726929c8e37546bf84ead673 commit 31ce82d46d4150d0726929c8e37546bf84ead673 Merge: d569008 6863c0d Author: Brad King AuthorDate: Thu Jun 11 13:16:20 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 13:16:20 2015 -0400 Merge topic 'FindBISON-DEFINES_FILE' 6863c0d5 Help: Add notes for topic 'FindBISON-DEFINES_FILE' 12e534c2 FindBISON: Add DEFINES_FILE option to pass --defines=FILE eb859263 FindBISON: Use CMAKE_PARSE_ARGUMENTS to parse arguments 29985ad8 FindBISON: Use BISON_TARGET macro argument names internally 801b799f FindBISON: Improve documentation formatting ----------------------------------------------------------------------- Summary of changes: Help/release/dev/FindBISON-DEFINES_FILE.rst | 6 ++ Modules/FindBISON.cmake | 155 ++++++++++++++++----------- 2 files changed, 100 insertions(+), 61 deletions(-) create mode 100644 Help/release/dev/FindBISON-DEFINES_FILE.rst hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 13:16:43 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 13:16:43 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-428-g805f726 Message-ID: <20150611171643.0F4E5AFB28@public.kitware.com> 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 805f726cc05104a5a7234f0307cec9e9cee098db (commit) via 31ce82d46d4150d0726929c8e37546bf84ead673 (commit) via d5690088683baee7e62716f6c7e89640bb77b4aa (commit) via 71d52459900e2be0c78091cb2df6506b22c2c211 (commit) via 07ee7bac74260942121552bed94a18101b6e7002 (commit) from 7c404c8261b4d7d2d6c41fcf2aa5c992366997b7 (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=805f726cc05104a5a7234f0307cec9e9cee098db commit 805f726cc05104a5a7234f0307cec9e9cee098db Merge: 7c404c8 31ce82d Author: Brad King AuthorDate: Thu Jun 11 13:16:36 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 13:16:36 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 13:35:59 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 13:35:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-431-g41ec14b Message-ID: <20150611173559.5A402B049F@public.kitware.com> 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 41ec14b9b24271d79bd14e806995233d4d7ac687 (commit) via df7db2f989140c4c90ae2b4da10a9c21b1412d92 (commit) via 2fd79f500ee68644bad8ca7a4a780cf69fe376d3 (commit) from 805f726cc05104a5a7234f0307cec9e9cee098db (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=41ec14b9b24271d79bd14e806995233d4d7ac687 commit 41ec14b9b24271d79bd14e806995233d4d7ac687 Merge: 805f726 df7db2f Author: Brad King AuthorDate: Thu Jun 11 13:35:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 13:35:58 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next df7db2f9 Tests: Move RunCMake.CPackRPM case into RunCMake.CPack_RPM test 2fd79f50 Tests: Add RunCMake tests for CPack{Deb,RPM} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=df7db2f989140c4c90ae2b4da10a9c21b1412d92 commit df7db2f989140c4c90ae2b4da10a9c21b1412d92 Author: Domen Vrankar AuthorDate: Fri Jun 5 21:12:08 2015 +0200 Commit: Brad King CommitDate: Thu Jun 11 13:25:01 2015 -0400 Tests: Move RunCMake.CPackRPM case into RunCMake.CPack_RPM test Move PARTIALLY_RELOCATABLE_WARNING test to the new common CPack test script structure to have all tests in one place as well as additional benefit of having some more checks done during test execution. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index f4abed2..74bbf38 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -239,10 +239,6 @@ add_RunCMake_test(IfacePaths_INCLUDE_DIRECTORIES TEST_DIR IfacePaths) set(IfacePaths_SOURCES_ARGS -DTEST_PROP=SOURCES) add_RunCMake_test(IfacePaths_SOURCES TEST_DIR IfacePaths) -if(RPMBUILD_EXECUTABLE) - add_RunCMake_test(CPackRPM) -endif() - add_RunCMake_test(COMPILE_LANGUAGE-genex) # Matlab module related tests diff --git a/Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake b/Tests/RunCMake/CPack/PARTIALLY_RELOCATABLE_WARNING.cmake similarity index 100% rename from Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake rename to Tests/RunCMake/CPack/PARTIALLY_RELOCATABLE_WARNING.cmake diff --git a/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake new file mode 100644 index 0000000..4e01f7b --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "PARTIALLY_RELOCATABLE_WARNING-0.1.1-*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/not_relocatable${whitespaces_}/not_relocatable/CMakeLists.txt${whitespaces_}/opt$") diff --git a/Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt similarity index 100% rename from Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt rename to Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index 426734e..308b8cc 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -5,3 +5,4 @@ include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") # args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP run_cpack_test(MINIMAL "RPM;DEB" false) +run_cpack_test(PARTIALLY_RELOCATABLE_WARNING "RPM" false) diff --git a/Tests/RunCMake/CPackRPM/CMakeLists.txt b/Tests/RunCMake/CPackRPM/CMakeLists.txt deleted file mode 100644 index b7d170b..0000000 --- a/Tests/RunCMake/CPackRPM/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.1 FATAL_ERROR) - -project(${RunCMake_TEST} NONE) -include(${RunCMake_TEST}.cmake) - -set(CPACK_GENERATOR "RPM") -include(CPack) diff --git a/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake b/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake deleted file mode 100644 index 1935e32..0000000 --- a/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake +++ /dev/null @@ -1,17 +0,0 @@ -include(RunCMake) - -function(run_cpack_rpm_test TEST_NAME) - set(RunCMake_TEST_NO_CLEAN TRUE) - set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build") - file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") - file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - execute_process( - COMMAND "${CMAKE_COMMAND}" -D RunCMake_TEST=${TEST_NAME} "${RunCMake_SOURCE_DIR}" - WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" - OUTPUT_QUIET - ERROR_QUIET - ) - run_cmake_command(${TEST_NAME} ${CMAKE_CPACK_COMMAND}) -endfunction() - -run_cpack_rpm_test(CPackRPM_PARTIALLY_RELOCATABLE_WARNING) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2fd79f500ee68644bad8ca7a4a780cf69fe376d3 commit 2fd79f500ee68644bad8ca7a4a780cf69fe376d3 Author: Domen Vrankar AuthorDate: Fri Jun 5 21:03:26 2015 +0200 Commit: Brad King CommitDate: Thu Jun 11 13:23:03 2015 -0400 Tests: Add RunCMake tests for CPack{Deb,RPM} Add script structure for easier addition of new CPack related tests. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..f4abed2 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -26,6 +26,39 @@ macro(add_RunCMake_test test) ) endmacro() +function(add_RunCMake_test_group test types) + # create directory for common content + set(TEST_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/${test}/conf") + file(REMOVE_RECURSE "${TEST_CONFIG_DIR}") + file(MAKE_DIRECTORY "${TEST_CONFIG_DIR}") + + foreach(type IN LISTS types) + # generate prerequirements config file in cmake as ctest doesn't have as + # much system information so it is easier to set programs and environment + # values here + unset(${test}_${type}_FOUND_PREREQUIREMENTS) + include("${CMAKE_CURRENT_SOURCE_DIR}/${test}/${type}/Prerequirements.cmake") + get_test_prerequirements("${test}_${type}_FOUND_PREREQUIREMENTS" + "${TEST_CONFIG_DIR}/${type}_config.cmake") + + # only add the test if prerequirements are met + if(${test}_${type}_FOUND_PREREQUIREMENTS) + add_test(NAME RunCMake.${test}_${type} COMMAND ${CMAKE_CMAKE_COMMAND} + -DTEST_TYPE=${type} + -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} + -DRunCMake_GENERATOR=${CMAKE_GENERATOR} + -DRunCMake_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} + -DRunCMake_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} + -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} + -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${test} + -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${type}/${test} + -Dconfig_file=${TEST_CONFIG_DIR}/${type}_config.cmake + -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" + ) + endif() + endforeach() +endfunction() + if(XCODE_VERSION AND "${XCODE_VERSION}" VERSION_LESS 3) set(GeneratorToolset_ARGS -DXCODE_BELOW_3=1) endif() @@ -233,3 +266,5 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) endif() + +add_RunCMake_test_group(CPack "DEB;RPM") diff --git a/Tests/RunCMake/CPack/CMakeLists.txt b/Tests/RunCMake/CPack/CMakeLists.txt new file mode 100644 index 0000000..7905706 --- /dev/null +++ b/Tests/RunCMake/CPack/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) + +# include test generator specifics +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${GENERATOR_TYPE}/${RunCMake_TEST}-specifics.cmake") + include("${GENERATOR_TYPE}/${RunCMake_TEST}-specifics.cmake") +endif() + +set(CPACK_GENERATOR "${GENERATOR_TYPE}") +include(CPack) diff --git a/Tests/RunCMake/CPack/CPackTestHelpers.cmake b/Tests/RunCMake/CPack/CPackTestHelpers.cmake new file mode 100644 index 0000000..7ea2a24 --- /dev/null +++ b/Tests/RunCMake/CPack/CPackTestHelpers.cmake @@ -0,0 +1,76 @@ +cmake_policy(SET CMP0057 NEW) + +function(run_cpack_test TEST_NAME types build) + if(TEST_TYPE IN_LIST types) + set(RunCMake_TEST_NO_CLEAN TRUE) + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build") + + # TODO this should be executed only once per ctest run (not per generator) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + # execute cmake + execute_process( + COMMAND "${CMAKE_COMMAND}" -DRunCMake_TEST=${TEST_NAME} + -DGENERATOR_TYPE=${TEST_TYPE} "${RunCMake_SOURCE_DIR}" + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + RESULT_VARIABLE res + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + + if(res) + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST_STEP=configure + -Dreturn_code=${res} + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/PreTestError.cmake" + ) + return() + endif() + + # execute optional build step + if(build) + execute_process( + COMMAND "${CMAKE_COMMAND}" --build "${RunCMake_TEST_BINARY_DIR}" + RESULT_VARIABLE res + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + endif() + + if(res) + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST_STEP=build + -Dreturn_code=${res} + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/PreTestError.cmake" + ) + return() + endif() + + # execute cpack + execute_process( + COMMAND "${CMAKE_CPACK_COMMAND}" + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + + # verify result + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST=${TEST_NAME} + -DGENERATOR_TYPE=${TEST_TYPE} + "-Dsrc_dir=${RunCMake_SOURCE_DIR}" + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + "-Dconfig_file=${config_file}" + -P "${RunCMake_SOURCE_DIR}/VerifyResult.cmake" + ) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/DEB/Helpers.cmake b/Tests/RunCMake/CPack/DEB/Helpers.cmake new file mode 100644 index 0000000..4ed3fbd --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/Helpers.cmake @@ -0,0 +1,10 @@ +set(ALL_FILES_GLOB "*.deb") + +function(getPackageContent FILE RESULT_VAR) + execute_process(COMMAND ${DPKG_EXECUTABLE} -c ${FILE} + OUTPUT_VARIABLE package_content_ + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) +endfunction() diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake new file mode 100644 index 0000000..9e4aa7c --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "minimal*.deb") +set(EXPECTED_FILE_CONTENT_1 "^.*/usr/${whitespaces_}.*/usr/foo/${whitespaces_}.*/usr/foo/CMakeLists.txt$") diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake new file mode 100644 index 0000000..8821ab9 --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake @@ -0,0 +1 @@ +set(CPACK_PACKAGE_CONTACT "someone") diff --git a/Tests/RunCMake/CPack/DEB/Prerequirements.cmake b/Tests/RunCMake/CPack/DEB/Prerequirements.cmake new file mode 100644 index 0000000..197b99d --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/Prerequirements.cmake @@ -0,0 +1,8 @@ +function(get_test_prerequirements found_var config_file) + find_program(DPKG_EXECUTABLE dpkg) + + if(DPKG_EXECUTABLE) + file(WRITE "${config_file}" "set(DPKG_EXECUTABLE \"${DPKG_EXECUTABLE}\")") + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/MINIMAL.cmake b/Tests/RunCMake/CPack/MINIMAL.cmake new file mode 100644 index 0000000..f29ad2a --- /dev/null +++ b/Tests/RunCMake/CPack/MINIMAL.cmake @@ -0,0 +1,3 @@ +install(FILES CMakeLists.txt DESTINATION foo COMPONENT test) + +set(CPACK_PACKAGE_NAME "minimal") diff --git a/Tests/RunCMake/CPack/PreTestError.cmake b/Tests/RunCMake/CPack/PreTestError.cmake new file mode 100644 index 0000000..f88f2e8 --- /dev/null +++ b/Tests/RunCMake/CPack/PreTestError.cmake @@ -0,0 +1,7 @@ +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) + +message(FATAL_ERROR "Error in pre-test phase '${RunCMake_TEST_STEP}'!\n" + "Return code: '${return_code}'\n" + "Info output: '${output}'\n" + "Error output: '${error}'") diff --git a/Tests/RunCMake/CPack/README.txt b/Tests/RunCMake/CPack/README.txt new file mode 100644 index 0000000..365c737 --- /dev/null +++ b/Tests/RunCMake/CPack/README.txt @@ -0,0 +1,99 @@ +RunCMake.CPack is a test module that is intended for testing of package +generators that can be validated from command line. + +------------- +Adding a test +------------- + +CPack test root directory: 'Tests/RunCMake/CPack'. + +All phases are executed separately for each generator that is bound to a test. +Tests for each generator are subtests of test 'RunCMake.CPack_'. + +Each test must also be added to 'RunCMakeTest.cmake' script located in CPack +test root directory. +Line that adds a test is: +run_cpack_test( "") + + may be one generator e.g. "RPM" or multiple e.g. "RPM;DEB" and +will be run for all listed generators. + +Test consists of +- CMake execution phase +- CPack execution phase +- verification of generated files + +CMake execution phase: +---------------------- + +To add a new CPack test we first create a .cmake script that contains +CMake commands that should be used as a preparation script for generation of +different types of packages. This script is placed into CPack test root +directory even if it will be used for only one of the generators. + +If test will be used for multiple generators but some of them require some +generator speciffic commands then those commands should be added to a separate +file that should be located in '/-specifics.cmake' +in CPack test root directory. + +CPack execution phase: +---------------------- + +Only exececutes CPack for content that was generated during CMake execution +phase. + +Verification of generated files: +-------------------------------- + +Verification of generated files consists of two phases +- mandatory verification phase +- optional verification phase + +Mandatory verification phase checks that expected files were generated and +contain expected files. +Mandatory verification phase also checks that no other unexpected package files +were generated (this is executed even if EXPECTED_FILES_COUNT contains 0 in +order to verify that no files were generated). +CMake script '/-ExpectedFiles.cmake' is required by +this step and must contain +- EXPECTED_FILES_COUNT variable that contains the number of expected files that + will be generated (0 or more) +- EXPECTED_FILE_ that contains globing expression + that uniquely defines expected file name (will be used to find expected file) + and should be present once for each expected file +- EXPECTED_FILE_CONTENT_ that contains regular + expression of files that should be present in generated file and should be + present once for each expected file + +Optional verification phase is generator specific and is optionaly executed. +This phase is executed if '/-VerifyResult.cmake' +script exists. +In case that the script doesn't exist VerifyResult.cmake script automatically +prints out standard output and standard error from CPack execution phase that +is compared with '/-stdout.txt' regular expression +and '/-stderr.txt' regular expresson respectively. + +---------------------- +Adding a new generator +---------------------- + +To add a new generator we must +- add new generator directory (e.g. RPM for RPM generator) to CPack test root + directory that contains 'Helpers.cmake' script. In this script a function + named 'getPackageContent' must exist. This function should list files that + are contained in a package. Function should accept two parameters + + FILE variable that will contain path to file for which the content should be + listed + + RESULT_VAR that will tell the function which variable in parent scope should + contain the result (list of files inside package file) +- add 'Prerequirements.cmake' script to generator directory. In this script a + function named 'get_test_prerequirements' must exist. This function should + set a variable in parent scope (name of the variable is the first parameter) + that tells if prerequirements for test execution are met (certain programs, + OS specifics, ...) and create a config file (name of the variable which + contains file name and path is provided with the second parameter) that + should contain 'set' commands for variables that will later be used in tests + (e.g. location of dpkg program for DEB packages) +- add tests the same way as described above +- add generator to 'add_RunCMake_test_group' function call that is located in + RunCMake CMakeLists.txt file diff --git a/Tests/RunCMake/CPack/RPM/Helpers.cmake b/Tests/RunCMake/CPack/RPM/Helpers.cmake new file mode 100644 index 0000000..98cdad8 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/Helpers.cmake @@ -0,0 +1,10 @@ +set(ALL_FILES_GLOB "*.rpm") + +function(getPackageContent FILE RESULT_VAR) + execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${FILE} + OUTPUT_VARIABLE package_content_ + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) +endfunction() diff --git a/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake new file mode 100644 index 0000000..800b78e --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "minimal*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/usr/foo${whitespaces_}/usr/foo/CMakeLists.txt$") diff --git a/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt b/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt new file mode 100644 index 0000000..7c5fb46 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt @@ -0,0 +1 @@ +^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/MINIMAL-build/_CPack_Packages/.*/RPM/SPECS/minimal.spec$ diff --git a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake new file mode 100644 index 0000000..69375e2 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake @@ -0,0 +1,13 @@ +function(get_test_prerequirements found_var config_file) + if(CMAKE_CURRENT_BINARY_DIR MATCHES " ") + # rpmbuild can't handle spaces in path + return() + endif() + + find_program(RPM_EXECUTABLE rpm) + + if(RPM_EXECUTABLE) + file(WRITE "${config_file}" "set(RPM_EXECUTABLE \"${RPM_EXECUTABLE}\")") + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake new file mode 100644 index 0000000..426734e --- /dev/null +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +include(RunCMake) +include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") + +# args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP +run_cpack_test(MINIMAL "RPM;DEB" false) diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake new file mode 100644 index 0000000..c89bfae --- /dev/null +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -0,0 +1,89 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +include("${config_file}") +include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") + +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) + +set(output_error_message "\nCPack output: '${output}'\nCPack error: '${error}'") + +# check that expected generated files exist and contain expected content +include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-ExpectedFiles.cmake") + +if(NOT EXPECTED_FILES_COUNT EQUAL 0) + foreach(file_no_ RANGE 1 ${EXPECTED_FILES_COUNT}) + file(GLOB foundFile_ RELATIVE "${bin_dir}" "${EXPECTED_FILE_${file_no_}}") + set(foundFiles_ "${foundFiles_};${foundFile_}") + list(LENGTH foundFile_ foundFilesCount_) + + if(foundFilesCount_ EQUAL 1) + unset(PACKAGE_CONTENT) + getPackageContent("${bin_dir}/${foundFile_}" "PACKAGE_CONTENT") + + string(REGEX MATCH "${EXPECTED_FILE_CONTENT_${file_no_}}" + expected_content_list "${PACKAGE_CONTENT}") + + if(NOT expected_content_list) + message(FATAL_ERROR + "Unexpected file content for file No. '${file_no_}'!" + " Content: '${PACKAGE_CONTENT}'" + "${output_error_message}") + endif() + else() + message(FATAL_ERROR + "Found more than one file for file No. '${file_no_}'!" + " Found files count '${foundFilesCount_}'." + " Files: '${foundFile_}'" + "${output_error_message}") + endif() + endforeach() + + # check that there were no extra files generated + foreach(all_files_glob_ IN LISTS ALL_FILES_GLOB) + file(GLOB foundAll_ RELATIVE "${bin_dir}" "${all_files_glob_}") + set(allFoundFiles_ "${allFoundFiles_};${foundAll_}") + endforeach() + + list(LENGTH foundFiles_ foundFilesCount_) + list(LENGTH allFoundFiles_ allFoundFilesCount_) + + if(NOT foundFilesCount_ EQUAL allFoundFilesCount_) + message(FATAL_ERROR + "Found more files than expected! Found files: '${allFoundFiles_}'" + "${output_error_message}") + endif() + + # sanity check that we didn't accidentaly list wrong files with our regular + # expressions + foreach(expected_ IN LISTS allFoundFiles_) + list(FIND foundFiles_ "${expected_}" found_) + + if(found_ EQUAL -1) + message(FATAL_ERROR + "Expected files don't match found files! Found files:" + " '${allFoundFiles_}'" + "${output_error_message}") + endif() + endforeach() +else() + # there should be no generated files present + foreach(missing_file_glob_ IN LISTS ALL_FILES_GLOB) + file(GLOB checkMissingFiles_ RELATIVE "${bin_dir}" "${missing_file_glob_}") + + if(checkMissingFiles_) + message(FATAL_ERROR "Unexpected files found: '${checkMissingFiles_}'" + "${output_error_message}") + endif() + endforeach() +endif() + +# handle additional result verifications +if(EXISTS "${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") + include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") +else() + # by default only print out output and error so that they can be compared by + # regex + message(STATUS "${output}") + message("${error}") +endif() ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Thu Jun 11 14:37:58 2015 From: steveire at gmail.com (Stephen Kelly) Date: Thu, 11 Jun 2015 14:37:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-433-gb8cab7a Message-ID: <20150611183758.97E18B049B@public.kitware.com> 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 b8cab7ab603c1e7d050241424ddb8d4d693d669a (commit) via 40d76cb243af425872eb00beb086cf4f10b4aa92 (commit) from 41ec14b9b24271d79bd14e806995233d4d7ac687 (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=b8cab7ab603c1e7d050241424ddb8d4d693d669a commit b8cab7ab603c1e7d050241424ddb8d4d693d669a Merge: 41ec14b 40d76cb Author: Stephen Kelly AuthorDate: Thu Jun 11 14:37:57 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 14:37:57 2015 -0400 Merge topic 'fail-on-ancient-policies' into next 40d76cb2 Revert "cmPolicies: Unconditionally use NEW behavior for ancient policies." http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=40d76cb243af425872eb00beb086cf4f10b4aa92 commit 40d76cb243af425872eb00beb086cf4f10b4aa92 Author: Stephen Kelly AuthorDate: Thu Jun 11 20:37:31 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 11 20:37:31 2015 +0200 Revert "cmPolicies: Unconditionally use NEW behavior for ancient policies." This reverts commit 00055af64dfbb8d6d797cc31d11a8152f2101eca. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index e5f8d0b..5026893 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -53,10 +53,6 @@ static bool stringToId(const char* input, cmPolicies::PolicyID& pid) #define CM_FOR_EACH_POLICY_ID_DOC(POLICY) \ CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID_DOC) -#define CM_SELECT_ID_STATUS(F, A1, A2, A3, A4, A5, A6) F(A1, A6) -#define CM_FOR_EACH_POLICY_ID_STATUS(POLICY) \ - CM_FOR_EACH_POLICY_TABLE(POLICY, CM_SELECT_ID_STATUS) - static const char* idToString(cmPolicies::PolicyID id) { switch(id) @@ -323,18 +319,8 @@ std::string cmPolicies::GetRequiredPolicyError(cmPolicies::PolicyID id) ///! Get the default status for a policy cmPolicies::PolicyStatus -cmPolicies::GetPolicyStatus(cmPolicies::PolicyID id) +cmPolicies::GetPolicyStatus(cmPolicies::PolicyID) { - switch(id) - { -#define POLICY_CASE(ID, STATUS) \ - case cmPolicies::ID: \ - return STATUS; - CM_FOR_EACH_POLICY_ID_STATUS(POLICY_CASE) -#undef POLICY_CASE - case cmPolicies::CMPCOUNT: - return cmPolicies::WARN; - } return cmPolicies::WARN; } diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 85f3612..8a3c27d 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -22,40 +22,40 @@ class cmPolicy; #define CM_FOR_EACH_POLICY_TABLE(POLICY, SELECT) \ SELECT(POLICY, CMP0000, \ "A minimum required CMake version must be specified.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0001, \ "CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0002, \ "Logical target names must be globally unique.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0003, \ "Libraries linked via full path no longer produce linker search paths.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0004, \ "Libraries linked may not have leading or trailing whitespace.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0005, \ "Preprocessor definition values are now escaped automatically.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0006, \ "Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0007, \ "list command no longer ignores empty elements.", \ - 2, 6, 0, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0008, \ "Libraries linked by full-path must have a valid library file name.", \ - 2, 6, 1, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 1, cmPolicies::WARN) \ SELECT(POLICY, CMP0009, \ "FILE GLOB_RECURSE calls should not follow symlinks by default.", \ - 2, 6, 2, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 2, cmPolicies::WARN) \ SELECT(POLICY, CMP0010, \ "Bad variable reference syntax is an error.", \ - 2, 6, 3, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 3, cmPolicies::WARN) \ SELECT(POLICY, CMP0011, \ "Included scripts do automatic cmake_policy PUSH and POP.", \ - 2, 6, 3, cmPolicies::REQUIRED_IF_USED) \ + 2, 6, 3, cmPolicies::WARN) \ SELECT(POLICY, CMP0012, \ "if() recognizes numbers and boolean constants.", \ 2, 8, 0, cmPolicies::WARN) \ diff --git a/Tests/CMakeTests/ListTest.cmake.in b/Tests/CMakeTests/ListTest.cmake.in index 99fc4d3..77c34a9 100644 --- a/Tests/CMakeTests/ListTest.cmake.in +++ b/Tests/CMakeTests/ListTest.cmake.in @@ -158,6 +158,8 @@ foreach(cmd Remove_Item Reverse Remove_Duplicates Sort Remove_At) set(${cmd}-Nonexistent-List-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-${cmd}-Nonexistent-List.cmake:2 \\(list\\):.*sub-command ${Cmd} requires list to be present.*") endforeach() +set(Get-CMP0007-Warn-RESULT 0) +set(Get-CMP0007-Warn-STDERR ".*CMake Warning \\(dev\\) at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Get-CMP0007-Warn.cmake:3 \\(list\\):.*Policy CMP0007 is not set:.*") check_cmake_test(List No-Arguments @@ -174,4 +176,15 @@ check_cmake_test(List Sort-Nonexistent-List Remove_At-Nonexistent-List Remove_At-Invalid-Index + Get-CMP0007-Warn ) + +set(thelist "" NEW OLD) + +foreach (_pol ${thelist}) + cmake_policy(SET CMP0007 ${_pol}) + list(GET thelist 1 thevalue) + if (NOT thevalue STREQUAL _pol) + message(SEND_ERROR "returned element '${thevalue}', but expected '${_pol}'") + endif() +endforeach (_pol) diff --git a/Tests/RunCMake/Syntax/RunCMakeTest.cmake b/Tests/RunCMake/Syntax/RunCMakeTest.cmake index c874271..c431280 100644 --- a/Tests/RunCMake/Syntax/RunCMakeTest.cmake +++ b/Tests/RunCMake/Syntax/RunCMakeTest.cmake @@ -64,6 +64,7 @@ run_cmake(UnterminatedCall1) run_cmake(UnterminatedCall2) run_cmake(UnterminatedString) run_cmake(UnterminatedBrace0) +run_cmake(UnterminatedBrace1) run_cmake(UnterminatedBrace2) run_cmake(UnterminatedBracket0) run_cmake(UnterminatedBracket1) diff --git a/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt new file mode 100644 index 0000000..4e3c2b5 --- /dev/null +++ b/Tests/RunCMake/Syntax/UnterminatedBrace1-stderr.txt @@ -0,0 +1,13 @@ +CMake Warning \(dev\) at UnterminatedBrace1.cmake:3 \(set\): + Syntax error in cmake code at + + .*/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake:3 + + when parsing string + + \${ + + syntax error, unexpected \$end, expecting } \(2\) +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake b/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake new file mode 100644 index 0000000..93fba34 --- /dev/null +++ b/Tests/RunCMake/Syntax/UnterminatedBrace1.cmake @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.0) +cmake_policy(SET CMP0010 OLD) +set(var "${") ----------------------------------------------------------------------- Summary of changes: Source/cmPolicies.cxx | 16 +------------ Source/cmPolicies.h | 24 ++++++++++---------- Tests/CMakeTests/ListTest.cmake.in | 13 +++++++++++ Tests/RunCMake/Syntax/RunCMakeTest.cmake | 1 + ...e0-stderr.txt => UnterminatedBrace1-stderr.txt} | 5 ++-- ...inatedBrace2.cmake => UnterminatedBrace1.cmake} | 1 - 6 files changed, 30 insertions(+), 30 deletions(-) copy Tests/RunCMake/Syntax/{UnterminatedBrace0-stderr.txt => UnterminatedBrace1-stderr.txt} (50%) copy Tests/RunCMake/Syntax/{UnterminatedBrace2.cmake => UnterminatedBrace1.cmake} (72%) hooks/post-receive -- CMake From steveire at gmail.com Thu Jun 11 14:38:49 2015 From: steveire at gmail.com (Stephen Kelly) Date: Thu, 11 Jun 2015 14:38:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-438-ga51db76 Message-ID: <20150611183849.648C7B04B5@public.kitware.com> 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 a51db76d50082dfceb071cc14f8138400544d19f (commit) via 3159f3e09f9a7b241bc09c587a16b4ae0c402c51 (commit) via 5ee1e014643e51769c709a7cf3d54b3ff7e3262f (commit) via 924c5ac4df84d99578ffe9628593578190a3e2b9 (commit) via 8fd90bb8c5609308ab60acc48a9674dcd47b42a2 (commit) from b8cab7ab603c1e7d050241424ddb8d4d693d669a (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=a51db76d50082dfceb071cc14f8138400544d19f commit a51db76d50082dfceb071cc14f8138400544d19f Merge: b8cab7a 3159f3e Author: Stephen Kelly AuthorDate: Thu Jun 11 14:38:48 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 14:38:48 2015 -0400 Merge topic 'fix-tests-ancient-policies' into next 3159f3e0 Tests: Update the complex test for ancient policies. 5ee1e014 Tests: Update the minimum required cmake version. 924c5ac4 Tests: Fix for NEW behavior of CMake. 8fd90bb8 Tests: Implement PolicyScope tests in terms of newer policies. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3159f3e09f9a7b241bc09c587a16b4ae0c402c51 commit 3159f3e09f9a7b241bc09c587a16b4ae0c402c51 Author: Stephen Kelly AuthorDate: Wed Jun 10 01:25:50 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 11 20:38:08 2015 +0200 Tests: Update the complex test for ancient policies. diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt index 5e5eead..1479a13 100644 --- a/Tests/Complex/CMakeLists.txt +++ b/Tests/Complex/CMakeLists.txt @@ -1,7 +1,7 @@ # # A more complex test case # -cmake_minimum_required(VERSION 2.4) +cmake_minimum_required(VERSION 3.2) project (Complex) # Try setting a new policy. The IF test is for coverage. @@ -21,6 +21,7 @@ foreach(p CMP0032 CMP0033 CMP0034 + CMP0035 CMP0043 CMP0050 ) diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx index ec222a5..9dccd84 100644 --- a/Tests/Complex/Executable/complex.cxx +++ b/Tests/Complex/Executable/complex.cxx @@ -838,14 +838,6 @@ int main() #endif #endif // defined(_WIN32) && !defined(__CYGWIN__) - if(strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "2.4") == 0) - { - cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 2.4"); - } - else - { - cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 2.4"); - } // ---------------------------------------------------------------------- // Test REMOVE command diff --git a/Tests/Complex/Library/test_preprocess.cmake b/Tests/Complex/Library/test_preprocess.cmake index 4c8ec21..5758ba8 100644 --- a/Tests/Complex/Library/test_preprocess.cmake +++ b/Tests/Complex/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") diff --git a/Tests/ComplexOneConfig/Library/test_preprocess.cmake b/Tests/ComplexOneConfig/Library/test_preprocess.cmake index 4c8ec21..5758ba8 100644 --- a/Tests/ComplexOneConfig/Library/test_preprocess.cmake +++ b/Tests/ComplexOneConfig/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5ee1e014643e51769c709a7cf3d54b3ff7e3262f commit 5ee1e014643e51769c709a7cf3d54b3ff7e3262f Author: Stephen Kelly AuthorDate: Wed Jun 10 00:07:39 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 11 20:38:07 2015 +0200 Tests: Update the minimum required cmake version. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 8865063..fabaa6c 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -347,9 +347,6 @@ if(BUILD_TESTING) ADD_TEST_MACRO(CrossCompile CrossCompile) set_tests_properties(CrossCompile PROPERTIES PASS_REGULAR_EXPRESSION "TRY_RUN.. invoked in cross-compiling mode") - if("${CMAKE_GENERATOR}" MATCHES "Make") - ADD_TEST_MACRO(Policy0002 Policy0002) - endif() if(CTEST_TEST_OSX_ARCH) ADD_TEST_MACRO(Architecture Architecture) set_tests_properties(Architecture PROPERTIES diff --git a/Tests/EmptyProperty/CMakeLists.txt b/Tests/EmptyProperty/CMakeLists.txt index 39e75f3..65aa216 100644 --- a/Tests/EmptyProperty/CMakeLists.txt +++ b/Tests/EmptyProperty/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) project (EmptyProperty) set_property(DIRECTORY APPEND diff --git a/Tests/ExternalOBJ/CMakeLists.txt b/Tests/ExternalOBJ/CMakeLists.txt index 458c88b..64620a5 100644 --- a/Tests/ExternalOBJ/CMakeLists.txt +++ b/Tests/ExternalOBJ/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project (ExternalOBJ) if(APPLE) diff --git a/Tests/LibName/CMakeLists.txt b/Tests/LibName/CMakeLists.txt index 3ac125f..eedd9ec 100644 --- a/Tests/LibName/CMakeLists.txt +++ b/Tests/LibName/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.3) project(LibName) # this is a test to make sure that relative path # LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH work diff --git a/Tests/LinkLine/CMakeLists.txt b/Tests/LinkLine/CMakeLists.txt index 6154dd4..d14c963 100644 --- a/Tests/LinkLine/CMakeLists.txt +++ b/Tests/LinkLine/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) project( LinkLine ) # Makes sure that the library order as specified by the user are diff --git a/Tests/Policy0002/A/CMakeLists.txt b/Tests/Policy0002/A/CMakeLists.txt deleted file mode 100644 index cee6422..0000000 --- a/Tests/Policy0002/A/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_executable(Policy0002 ../policy0002.c) diff --git a/Tests/Policy0002/CMakeLists.txt b/Tests/Policy0002/CMakeLists.txt deleted file mode 100644 index 0f6d331..0000000 --- a/Tests/Policy0002/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(Policy0002 C) -cmake_policy(SET CMP0002 OLD) -add_subdirectory(A) -add_executable(Policy0002 policy0002.c) diff --git a/Tests/Policy0002/policy0002.c b/Tests/Policy0002/policy0002.c deleted file mode 100644 index 8488f4e..0000000 --- a/Tests/Policy0002/policy0002.c +++ /dev/null @@ -1,4 +0,0 @@ -int main(void) -{ - return 0; -} diff --git a/Tests/PreOrder/CMakeLists.txt b/Tests/PreOrder/CMakeLists.txt index 8b4c439..a688c74 100644 --- a/Tests/PreOrder/CMakeLists.txt +++ b/Tests/PreOrder/CMakeLists.txt @@ -1,4 +1,5 @@ # a simple test case +cmake_minimum_required (VERSION 3.3) project (PreOrder) set(CMAKE_IGNORE_DEPENDENCIES_ORDERING 1) add_subdirectory(Library) diff --git a/Tests/SBCS/CMakeLists.txt b/Tests/SBCS/CMakeLists.txt index b3c3c2c..7a77711 100644 --- a/Tests/SBCS/CMakeLists.txt +++ b/Tests/SBCS/CMakeLists.txt @@ -1,4 +1,5 @@ # a SBCS test case +cmake_minimum_required (VERSION 3.3) project (SBCS) add_definitions(-D_SBCS) diff --git a/Tests/Simple/CMakeLists.txt b/Tests/Simple/CMakeLists.txt index a951c2d..79ff071 100644 --- a/Tests/Simple/CMakeLists.txt +++ b/Tests/Simple/CMakeLists.txt @@ -1,4 +1,5 @@ # a simple test case +cmake_minimum_required (VERSION 3.3) project (Simple) add_executable (Simple simple.cxx) diff --git a/Tests/StringFileTest/CMakeLists.txt b/Tests/StringFileTest/CMakeLists.txt index faf3bc9..8caa2f0 100644 --- a/Tests/StringFileTest/CMakeLists.txt +++ b/Tests/StringFileTest/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project(StringFileTest) include_directories(${StringFileTest_BINARY_DIR}) diff --git a/Tests/VSExternalInclude/CMakeLists.txt b/Tests/VSExternalInclude/CMakeLists.txt index 73ea05a..926caea 100644 --- a/Tests/VSExternalInclude/CMakeLists.txt +++ b/Tests/VSExternalInclude/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 3.3) project(VSExternalInclude) if(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") diff --git a/Tests/VSExternalInclude/Lib1/CMakeLists.txt b/Tests/VSExternalInclude/Lib1/CMakeLists.txt index 9dfac86..0d08853 100644 --- a/Tests/VSExternalInclude/Lib1/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib1/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(LIB1) diff --git a/Tests/VSExternalInclude/Lib2/CMakeLists.txt b/Tests/VSExternalInclude/Lib2/CMakeLists.txt index f451354..017b8fe 100644 --- a/Tests/VSExternalInclude/Lib2/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib2/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(VSEXTERNAL_LIB2) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=924c5ac4df84d99578ffe9628593578190a3e2b9 commit 924c5ac4df84d99578ffe9628593578190a3e2b9 Author: Stephen Kelly AuthorDate: Tue Jun 9 23:14:25 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 11 20:38:07 2015 +0200 Tests: Fix for NEW behavior of CMake. diff --git a/Tests/CMakeTests/FileTestScript.cmake b/Tests/CMakeTests/FileTestScript.cmake index 9a43569..a243aa6 100644 --- a/Tests/CMakeTests/FileTestScript.cmake +++ b/Tests/CMakeTests/FileTestScript.cmake @@ -73,7 +73,7 @@ elseif(testname STREQUAL glob_recurse_relative_no_expression) # fail file(GLOB_RECURSE v RELATIVE dddd) elseif(testname STREQUAL glob_non_full_path) # pass - file(GLOB_RECURSE v ffff*.*) + file(GLOB_RECURSE v FOLLOW_SYMLINKS ffff*.*) message("v='${v}'") elseif(testname STREQUAL make_directory_non_full_path) # pass diff --git a/Tests/CPackComponents/CMakeLists.txt b/Tests/CPackComponents/CMakeLists.txt index 1cb8669..c676acc 100644 --- a/Tests/CPackComponents/CMakeLists.txt +++ b/Tests/CPackComponents/CMakeLists.txt @@ -79,7 +79,7 @@ set(CPACK_NSIS_MENU_LINKS ) # Suggested default root for end users of the installer: -set(CPACK_NSIS_INSTALL_ROOT "C:\\Program Files\\CMake Tests Install Root") +set(CPACK_NSIS_INSTALL_ROOT "C:\\\\Program Files\\\\CMake Tests Install Root") # Include CPack to introduce the appropriate targets include(CPack) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8fd90bb8c5609308ab60acc48a9674dcd47b42a2 commit 8fd90bb8c5609308ab60acc48a9674dcd47b42a2 Author: Stephen Kelly AuthorDate: Wed Jun 10 00:08:51 2015 +0200 Commit: Stephen Kelly CommitDate: Thu Jun 11 20:38:07 2015 +0200 Tests: Implement PolicyScope tests in terms of newer policies. Keep the spirit of the tests. diff --git a/Tests/PolicyScope/Bar.cmake b/Tests/PolicyScope/Bar.cmake index cf1904c..2f94d8d 100644 --- a/Tests/PolicyScope/Bar.cmake +++ b/Tests/PolicyScope/Bar.cmake @@ -1,8 +1,5 @@ -cmake_minimum_required(VERSION 2.6.3) +cmake_minimum_required(VERSION 3.2) # Make sure a policy set differently by our includer is now correct. -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "NEW" "${cmp}") - -# Test allowing the top-level file to not have cmake_minimum_required. -cmake_policy(SET CMP0000 OLD) +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "NEW" "${cmp}") diff --git a/Tests/PolicyScope/CMakeLists.txt b/Tests/PolicyScope/CMakeLists.txt index 413195a..b14c423 100644 --- a/Tests/PolicyScope/CMakeLists.txt +++ b/Tests/PolicyScope/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.0) project(PolicyScope C) # No cmake_minimum_required(VERSION), it's in FindFoo. @@ -12,33 +13,27 @@ endfunction() #----------------------------------------------------------------------------- # Test using a development framework that sets policies for us. -# Policy CMP0011 should not be set at this point. -cmake_policy(GET CMP0011 cmp) -check(CMP0011 "" "${cmp}") - # Put the test modules in the search path. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) # The included file should set policies for us. -find_package(Foo) +find_package(Foo NO_POLICY_SCOPE) # Check policies set by the package. -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "OLD" "${cmp}") -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "NEW" "${cmp}") -cmake_policy(GET CMP0011 cmp) -check(CMP0011 "NEW" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "OLD" "${cmp}") +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "NEW" "${cmp}") # Make sure an included file cannot change policies. include(Bar) -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "OLD" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "OLD" "${cmp}") # Allow the included file to change policies. include(Bar NO_POLICY_SCOPE) -cmake_policy(GET CMP0003 cmp) -check(CMP0003 "NEW" "${cmp}") +cmake_policy(GET CMP0056 cmp) +check(CMP0056 "NEW" "${cmp}") #----------------------------------------------------------------------------- # Test function and macro policy recording. @@ -46,57 +41,56 @@ check(CMP0003 "NEW" "${cmp}") # Create the functions in an isolated scope in which we change policies. cmake_policy(PUSH) if(1) - # Change CMP0002 - cmake_policy(SET CMP0002 OLD) + cmake_policy(SET CMP0055 OLD) function(func1) - # CMP0002 should be changed when this function is invoked - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "OLD" "${cmp}") + # CMP0055 should be changed when this function is invoked + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") endfunction() - # Unset CMP0002 - cmake_policy(VERSION 2.4) + # Unset CMP0055 + cmake_policy(VERSION 3.1) macro(macro1) - # CMP0002 should be unset when this macro is invoked - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "" "${cmp}") + # CMP0055 should be unset when this macro is invoked + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "" "${cmp}") # Setting the policy should work here and also in the caller. - cmake_policy(SET CMP0002 OLD) - cmake_policy(GET CMP0002 cmp) - check(CMP0002 "OLD" "${cmp}") + cmake_policy(SET CMP0055 OLD) + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") endmacro() endif() cmake_policy(POP) -# CMP0002 should still be NEW in this context. -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "NEW" "${cmp}") +# CMP0055 should still be NEW in this context. +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "NEW" "${cmp}") # Check the recorded policies func1() macro1() -# The macro should have changed CMP0002. -cmake_policy(GET CMP0002 cmp) -check(CMP0002 "OLD" "${cmp}") +# The macro should have changed CMP0055. +cmake_policy(GET CMP0055 cmp) +check(CMP0055 "OLD" "${cmp}") #----------------------------------------------------------------------------- # Test CMAKE_POLICY_DEFAULT_CMP variable. cmake_policy(PUSH) - set(CMAKE_POLICY_DEFAULT_CMP0010 OLD) # ignored - set(CMAKE_POLICY_DEFAULT_CMP0012 OLD) # honored - set(CMAKE_POLICY_DEFAULT_CMP0013 NEW) # honored - set(CMAKE_POLICY_DEFAULT_CMP0014 "") # noop - cmake_policy(VERSION 2.6.3) - cmake_policy(GET CMP0010 cmp) - check(CMP0010 "NEW" "${cmp}") - cmake_policy(GET CMP0012 cmp) - check(CMP0012 "OLD" "${cmp}") - cmake_policy(GET CMP0013 cmp) - check(CMP0013 "NEW" "${cmp}") - cmake_policy(GET CMP0014 cmp) - check(CMP0014 "" "${cmp}") + set(CMAKE_POLICY_DEFAULT_CMP0054 OLD) # ignored + set(CMAKE_POLICY_DEFAULT_CMP0055 OLD) # honored + set(CMAKE_POLICY_DEFAULT_CMP0056 NEW) # honored + set(CMAKE_POLICY_DEFAULT_CMP0057 "") # noop + cmake_policy(VERSION 3.1) + cmake_policy(GET CMP0054 cmp) + check(CMP0054 "NEW" "${cmp}") + cmake_policy(GET CMP0055 cmp) + check(CMP0055 "OLD" "${cmp}") + cmake_policy(GET CMP0056 cmp) + check(CMP0056 "NEW" "${cmp}") + cmake_policy(GET CMP0057 cmp) + check(CMP0057 "" "${cmp}") cmake_policy(POP) #----------------------------------------------------------------------------- diff --git a/Tests/PolicyScope/FindFoo.cmake b/Tests/PolicyScope/FindFoo.cmake index 5b441e2..3f9ac8e 100644 --- a/Tests/PolicyScope/FindFoo.cmake +++ b/Tests/PolicyScope/FindFoo.cmake @@ -1,2 +1,2 @@ -cmake_minimum_required(VERSION 2.6.3) -cmake_policy(SET CMP0003 OLD) +cmake_minimum_required(VERSION 3.2) +cmake_policy(SET CMP0056 OLD) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 15:20:05 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 15:20:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-440-g60e4e19 Message-ID: <20150611192005.AD2632A79@public.kitware.com> 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 60e4e1924e9a23bad42cd5130cedb0881cec6c0b (commit) via a66464b9fcd1bbae36ba5daf31c57c64cd030fc5 (commit) from a51db76d50082dfceb071cc14f8138400544d19f (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=60e4e1924e9a23bad42cd5130cedb0881cec6c0b commit 60e4e1924e9a23bad42cd5130cedb0881cec6c0b Merge: a51db76 a66464b Author: Brad King AuthorDate: Thu Jun 11 15:20:04 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 15:20:04 2015 -0400 Merge topic 'compiler-launcher' into next a66464b9 Add options to launch the compiler through tools like ccache or distcc http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a66464b9fcd1bbae36ba5daf31c57c64cd030fc5 commit a66464b9fcd1bbae36ba5daf31c57c64cd030fc5 Author: Bill Hoffman AuthorDate: Thu Jun 4 15:56:56 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 15:15:28 2015 -0400 Add options to launch the compiler through tools like ccache or distcc Create a _COMPILER_LAUNCHER target property (initialized by a CMAKE__COMPILER_LAUNCHER variable) to specify a compiler launcher tool. This will supersede the CMAKE__COMPILER_ARG1 approach to using such tools. The old approach set CMAKE__COMPILER to the launcher tool while the new approach leaves this variable set to the actual compiler. Implement this property for Makefile and Ninja generators. It cannot be implemented for VS or Xcode generators as the IDE build tools offer no such hooks. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 615254e..9a60a10 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -177,6 +177,7 @@ Properties on Targets /prop_tgt/JOB_POOL_COMPILE /prop_tgt/JOB_POOL_LINK /prop_tgt/LABELS + /prop_tgt/LANG_COMPILER_LAUNCHER /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE /prop_tgt/LANG_VISIBILITY_PRESET /prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index bd02f8b..2b92006 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -235,6 +235,7 @@ Variables that Control the Build /variable/CMAKE_INSTALL_NAME_DIR /variable/CMAKE_INSTALL_RPATH /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH + /variable/CMAKE_LANG_COMPILER_LAUNCHER /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE /variable/CMAKE_LANG_VISIBILITY_PRESET /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst new file mode 100644 index 0000000..0fe0b31 --- /dev/null +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -0,0 +1,13 @@ +_COMPILER_LAUNCHER +------------------------ + +This property is implemented only when ```` is ``C`` or ``CXX``. + +Specify a :ref:`;-list ` containing a command line +for a compiler launching tool. The :ref:`Makefile Generators` and the +:generator:`Ninja` generator will run this tool and pass the compiler and +its arguments to the tool. Some example tools are distcc and ccache. + +This property is initialized by the value of +the :variable:`CMAKE__COMPILER_LAUNCHER` variable if it is set +when a target is created. diff --git a/Help/release/dev/compiler-launcher.rst b/Help/release/dev/compiler-launcher.rst new file mode 100644 index 0000000..3ba692d --- /dev/null +++ b/Help/release/dev/compiler-launcher.rst @@ -0,0 +1,8 @@ +compiler-launcher +----------------- + +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator + learned to add compiler launcher tools like distcc and ccache along with the + compiler for ``C`` and ``CXX`` languages. See the + :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. diff --git a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst new file mode 100644 index 0000000..808422d --- /dev/null +++ b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst @@ -0,0 +1,6 @@ +CMAKE__COMPILER_LAUNCHER +--------------------------------- + +Default value for :prop_tgt:`_COMPILER_LAUNCHER` target property. +This variable is used to initialize the property on each target as it is +created. This is done only when ```` is ``C`` or ``CXX``. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7b88bc7..f820b74 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -775,6 +775,28 @@ cmMakefileTargetGenerator } } + // Maybe insert a compiler launcher like ccache or distcc + if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) + { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char *clauncher = this->Target->GetProperty(clauncher_prop); + if (clauncher && *clauncher) + { + std::vector launcher_cmd; + cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); + std::string run_launcher = + this->LocalGenerator->EscapeForShell(launcher_cmd[0]); + // now put any arguments in if they exist + for(size_t i =1; i < launcher_cmd.size(); ++i) + { + run_launcher += " "; + run_launcher += launcher_cmd[i]; + } + run_launcher += " "; + compileCommands.front().insert(0, run_launcher); + } + } + // Expand placeholders in the commands. for(std::vector::iterator i = compileCommands.begin(); i != compileCommands.end(); ++i) diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 879d6b7..095e1f7 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -475,6 +475,28 @@ cmNinjaTargetGenerator } } + // Maybe insert a compiler launcher like ccache or distcc + if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) + { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char *clauncher = this->Target->GetProperty(clauncher_prop); + if (clauncher && *clauncher) + { + std::vector launcher_cmd; + cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); + std::string run_launcher = + this->LocalGenerator->EscapeForShell(launcher_cmd[0]); + // now put any arguments in if they exist + for(size_t i =1; i < launcher_cmd.size(); ++i) + { + run_launcher += " "; + run_launcher += launcher_cmd[i]; + } + run_launcher += " "; + compileCmds.front().insert(0, run_launcher); + } + } + if (!compileCmds.empty()) { compileCmds.front().insert(0, cldeps); @@ -487,7 +509,6 @@ cmNinjaTargetGenerator std::string cmdLine = this->GetLocalGenerator()->BuildCommandLine(compileCmds); - // Write the rule for compiling file of the given language. std::ostringstream comment; comment << "Rule for compiling " << lang << " files."; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..e20f0af 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -333,10 +333,12 @@ void cmTarget::SetMakefile(cmMakefile* mf) this->SetPropertyDefault("MACOSX_BUNDLE", 0); this->SetPropertyDefault("MACOSX_RPATH", 0); this->SetPropertyDefault("NO_SYSTEM_FROM_IMPORTED", 0); + this->SetPropertyDefault("C_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("C_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("C_STANDARD", 0); this->SetPropertyDefault("C_STANDARD_REQUIRED", 0); this->SetPropertyDefault("C_EXTENSIONS", 0); + this->SetPropertyDefault("CXX_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("CXX_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("CXX_STANDARD", 0); this->SetPropertyDefault("CXX_STANDARD_REQUIRED", 0); diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..2a4108f 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -232,4 +232,5 @@ endif() if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) + add_RunCMake_test(CompilerLauncher) endif() diff --git a/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/C-launch.cmake b/Tests/RunCMake/CompilerLauncher/C-launch.cmake new file mode 100644 index 0000000..e66ca20 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(C.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/C.cmake b/Tests/RunCMake/CompilerLauncher/C.cmake new file mode 100644 index 0000000..67bf7c4 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C.cmake @@ -0,0 +1,4 @@ +enable_language(C) +set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") +set(CMAKE_VERBOSE_MAKEFILE TRUE) +add_executable(main main.c) diff --git a/Tests/RunCMake/CompilerLauncher/CMakeLists.txt b/Tests/RunCMake/CompilerLauncher/CMakeLists.txt new file mode 100644 index 0000000..18dfd26 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.2) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake b/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake new file mode 100644 index 0000000..3002c9d --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(CXX.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/CXX.cmake b/Tests/RunCMake/CompilerLauncher/CXX.cmake new file mode 100644 index 0000000..cdd3478 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX.cmake @@ -0,0 +1,4 @@ +enable_language(CXX) +set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") +set(CMAKE_VERBOSE_MAKEFILE TRUE) +add_executable(main main.cxx) diff --git a/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake b/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake new file mode 100644 index 0000000..5884d5c --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake @@ -0,0 +1,23 @@ +include(RunCMake) + +function(run_compiler_launcher lang) + # Use a single build tree for tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-build) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + run_cmake(${lang}) + + set(RunCMake_TEST_OUTPUT_MERGE 1) + if("${RunCMake_GENERATOR}" STREQUAL "Ninja") + set(verbose_args -- -v) + endif() + run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args}) +endfunction() + +run_compiler_launcher(C) +run_compiler_launcher(CXX) +if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") + run_compiler_launcher(C-launch) + run_compiler_launcher(CXX-launch) +endif() diff --git a/Tests/RunCMake/CompilerLauncher/main.c b/Tests/RunCMake/CompilerLauncher/main.c new file mode 100644 index 0000000..03b2213 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/main.c @@ -0,0 +1,3 @@ +int main(void) { + return 0; +} diff --git a/Tests/RunCMake/CompilerLauncher/main.cxx b/Tests/RunCMake/CompilerLauncher/main.cxx new file mode 100644 index 0000000..76e8197 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/main.cxx @@ -0,0 +1 @@ +int main() { return 0; } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 11 15:34:04 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 11 Jun 2015 15:34:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-442-gb142dca Message-ID: <20150611193404.A73ADA8006@public.kitware.com> 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 b142dcad64a324b652929f426e2ac59a32dde0c8 (commit) via 55d86fe893b47d5a464e94aa25b055dac65f33ee (commit) from 60e4e1924e9a23bad42cd5130cedb0881cec6c0b (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=b142dcad64a324b652929f426e2ac59a32dde0c8 commit b142dcad64a324b652929f426e2ac59a32dde0c8 Merge: 60e4e19 55d86fe Author: Brad King AuthorDate: Thu Jun 11 15:34:03 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 15:34:03 2015 -0400 Merge topic 'compiler-launcher' into next 55d86fe8 fixup! Add options to launch the compiler through tools like ccache or distcc http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=55d86fe893b47d5a464e94aa25b055dac65f33ee commit 55d86fe893b47d5a464e94aa25b055dac65f33ee Author: Brad King AuthorDate: Thu Jun 11 15:32:59 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 15:32:59 2015 -0400 fixup! Add options to launch the compiler through tools like ccache or distcc diff --git a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst index 808422d..7961f60 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst @@ -1,5 +1,5 @@ CMAKE__COMPILER_LAUNCHER ---------------------------------- +------------------------------ Default value for :prop_tgt:`_COMPILER_LAUNCHER` target property. This variable is used to initialize the property on each target as it is diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index f820b74..481f4fe 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -784,15 +784,12 @@ cmMakefileTargetGenerator { std::vector launcher_cmd; cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); - std::string run_launcher = - this->LocalGenerator->EscapeForShell(launcher_cmd[0]); - // now put any arguments in if they exist - for(size_t i =1; i < launcher_cmd.size(); ++i) + for (std::vector::iterator i = launcher_cmd.begin(), + e = launcher_cmd.end(); i != e; ++i) { - run_launcher += " "; - run_launcher += launcher_cmd[i]; + *i = this->LocalGenerator->EscapeForShell(*i); } - run_launcher += " "; + std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; compileCommands.front().insert(0, run_launcher); } } diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 095e1f7..bb75e09 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -22,6 +22,7 @@ #include "cmComputeLinkInformation.h" #include "cmSourceFile.h" #include "cmCustomCommandGenerator.h" +#include "cmAlgorithms.h" #include @@ -475,7 +476,7 @@ cmNinjaTargetGenerator } } - // Maybe insert a compiler launcher like ccache or distcc + // Maybe insert a compiler launcher like ccache or distcc if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) { std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; @@ -484,15 +485,12 @@ cmNinjaTargetGenerator { std::vector launcher_cmd; cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); - std::string run_launcher = - this->LocalGenerator->EscapeForShell(launcher_cmd[0]); - // now put any arguments in if they exist - for(size_t i =1; i < launcher_cmd.size(); ++i) + for (std::vector::iterator i = launcher_cmd.begin(), + e = launcher_cmd.end(); i != e; ++i) { - run_launcher += " "; - run_launcher += launcher_cmd[i]; + *i = this->LocalGenerator->EscapeForShell(*i); } - run_launcher += " "; + std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; compileCmds.front().insert(0, run_launcher); } } @@ -509,6 +507,7 @@ cmNinjaTargetGenerator std::string cmdLine = this->GetLocalGenerator()->BuildCommandLine(compileCmds); + // Write the rule for compiling file of the given language. std::ostringstream comment; comment << "Rule for compiling " << lang << " files."; ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst | 2 +- Source/cmMakefileTargetGenerator.cxx | 11 ++++------- Source/cmNinjaTargetGenerator.cxx | 15 +++++++-------- 3 files changed, 12 insertions(+), 16 deletions(-) hooks/post-receive -- CMake From domen.vrankar at gmail.com Thu Jun 11 17:49:48 2015 From: domen.vrankar at gmail.com (Domen Vrankar) Date: Thu, 11 Jun 2015 17:49:48 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-444-g172a217 Message-ID: <20150611214948.E8E7CAF1E6@public.kitware.com> 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 172a21790ba117af6a03e35c69213a89a5cb86f3 (commit) via ceafbeb10b6ecaeb6e30be58a62025382a3d8cbc (commit) from b142dcad64a324b652929f426e2ac59a32dde0c8 (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=172a21790ba117af6a03e35c69213a89a5cb86f3 commit 172a21790ba117af6a03e35c69213a89a5cb86f3 Merge: b142dca ceafbeb Author: Domen Vrankar AuthorDate: Thu Jun 11 17:49:48 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 11 17:49:48 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next ceafbeb1 fixup! CPack Deb and RPM RunCMake tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ceafbeb10b6ecaeb6e30be58a62025382a3d8cbc commit ceafbeb10b6ecaeb6e30be58a62025382a3d8cbc Author: Domen Vrankar AuthorDate: Thu Jun 11 23:38:13 2015 +0200 Commit: Domen Vrankar CommitDate: Thu Jun 11 23:38:13 2015 +0200 fixup! CPack Deb and RPM RunCMake tests Test if there is also RPMBUILD available and also print out test config file content if something goes wrong. diff --git a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake index 69375e2..3416205 100644 --- a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake +++ b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake @@ -5,9 +5,12 @@ function(get_test_prerequirements found_var config_file) endif() find_program(RPM_EXECUTABLE rpm) + find_program(RPMBUILD_EXECUTABLE rpmbuild) - if(RPM_EXECUTABLE) + if(RPM_EXECUTABLE AND RPMBUILD_EXECUTABLE) file(WRITE "${config_file}" "set(RPM_EXECUTABLE \"${RPM_EXECUTABLE}\")") + file(APPEND "${config_file}" + "\nset(RPMBUILD_EXECUTABLE \"${RPMBUILD_EXECUTABLE}\")") set(${found_var} true PARENT_SCOPE) endif() endfunction() diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake index c89bfae..809011b 100644 --- a/Tests/RunCMake/CPack/VerifyResult.cmake +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -5,8 +5,10 @@ include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") file(READ "${bin_dir}/test_output.txt" output) file(READ "${bin_dir}/test_error.txt" error) +file(READ "${config_file}" config_file_content) -set(output_error_message "\nCPack output: '${output}'\nCPack error: '${error}'") +set(output_error_message + "\nCPack output: '${output}'\nCPack error: '${error}';\nconfig file: '${config_file_content}'") # check that expected generated files exist and contain expected content include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-ExpectedFiles.cmake") ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CPack/RPM/Prerequirements.cmake | 5 ++++- Tests/RunCMake/CPack/VerifyResult.cmake | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Jun 12 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 12 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-147-g03e2248 Message-ID: <20150612040106.600DBB0326@public.kitware.com> 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, master has been updated via 03e22481886c6ea97440f54ef84df84969e5969f (commit) from 31ce82d46d4150d0726929c8e37546bf84ead673 (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=03e22481886c6ea97440f54ef84df84969e5969f commit 03e22481886c6ea97440f54ef84df84969e5969f Author: Kitware Robot AuthorDate: Fri Jun 12 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Fri Jun 12 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 13420da..ae16656 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150611) +set(CMake_VERSION_PATCH 20150612) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Fri Jun 12 02:32:47 2015 From: steveire at gmail.com (Stephen Kelly) Date: Fri, 12 Jun 2015 02:32:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-446-g870d434 Message-ID: <20150612063247.69F5BB023D@public.kitware.com> 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 870d4341f25524a1c58a25e2289f8c00ed584845 (commit) via d3f9a669e35cd7002bc481e04580bd26189e438c (commit) from 172a21790ba117af6a03e35c69213a89a5cb86f3 (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=870d4341f25524a1c58a25e2289f8c00ed584845 commit 870d4341f25524a1c58a25e2289f8c00ed584845 Merge: 172a217 d3f9a66 Author: Stephen Kelly AuthorDate: Fri Jun 12 02:32:46 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 12 02:32:46 2015 -0400 Merge topic 'fix-tests-ancient-policies' into next d3f9a669 Revert "Tests: Update the complex test for ancient policies." http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3f9a669e35cd7002bc481e04580bd26189e438c commit d3f9a669e35cd7002bc481e04580bd26189e438c Author: Stephen Kelly AuthorDate: Fri Jun 12 08:32:22 2015 +0200 Commit: Stephen Kelly CommitDate: Fri Jun 12 08:32:22 2015 +0200 Revert "Tests: Update the complex test for ancient policies." This reverts commit 3159f3e09f9a7b241bc09c587a16b4ae0c402c51. diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt index 1479a13..5e5eead 100644 --- a/Tests/Complex/CMakeLists.txt +++ b/Tests/Complex/CMakeLists.txt @@ -1,7 +1,7 @@ # # A more complex test case # -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 2.4) project (Complex) # Try setting a new policy. The IF test is for coverage. @@ -21,7 +21,6 @@ foreach(p CMP0032 CMP0033 CMP0034 - CMP0035 CMP0043 CMP0050 ) diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx index 9dccd84..ec222a5 100644 --- a/Tests/Complex/Executable/complex.cxx +++ b/Tests/Complex/Executable/complex.cxx @@ -838,6 +838,14 @@ int main() #endif #endif // defined(_WIN32) && !defined(__CYGWIN__) + if(strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "2.4") == 0) + { + cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 2.4"); + } + else + { + cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 2.4"); + } // ---------------------------------------------------------------------- // Test REMOVE command diff --git a/Tests/Complex/Library/test_preprocess.cmake b/Tests/Complex/Library/test_preprocess.cmake index 5758ba8..4c8ec21 100644 --- a/Tests/Complex/Library/test_preprocess.cmake +++ b/Tests/Complex/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") diff --git a/Tests/ComplexOneConfig/Library/test_preprocess.cmake b/Tests/ComplexOneConfig/Library/test_preprocess.cmake index 5758ba8..4c8ec21 100644 --- a/Tests/ComplexOneConfig/Library/test_preprocess.cmake +++ b/Tests/ComplexOneConfig/Library/test_preprocess.cmake @@ -1,4 +1,4 @@ -set(TEST_FILE CMakeFiles/create_file.dir/create_file.cxx.i) +set(TEST_FILE CMakeFiles/create_file.dir/create_file.i) file(READ ${TEST_FILE} CONTENTS) if("${CONTENTS}" MATCHES "Unable to close") message(STATUS "${TEST_FILE} created successfully!") ----------------------------------------------------------------------- Summary of changes: Tests/Complex/CMakeLists.txt | 3 +-- Tests/Complex/Executable/complex.cxx | 8 ++++++++ Tests/Complex/Library/test_preprocess.cmake | 2 +- Tests/ComplexOneConfig/Library/test_preprocess.cmake | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Fri Jun 12 14:24:38 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Fri, 12 Jun 2015 14:24:38 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-449-g0753c59 Message-ID: <20150612182438.76A85AFBAF@public.kitware.com> 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 0753c59f4551e65b9f6d422def093f55da338ad9 (commit) via 3dfe9c05dfd7eb52e3ff6dc8da0d258070bb5fbd (commit) via 03e22481886c6ea97440f54ef84df84969e5969f (commit) from 870d4341f25524a1c58a25e2289f8c00ed584845 (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=0753c59f4551e65b9f6d422def093f55da338ad9 commit 0753c59f4551e65b9f6d422def093f55da338ad9 Merge: 870d434 3dfe9c0 Author: Bill Hoffman AuthorDate: Fri Jun 12 14:24:37 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 12 14:24:37 2015 -0400 Merge topic 'fix_cuda_for_ccache' into next 3dfe9c05 Fix FindCUDA to only realpath the host compiler if it is clang linked to cc. 03e22481 CMake Nightly Date Stamp http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3dfe9c05dfd7eb52e3ff6dc8da0d258070bb5fbd commit 3dfe9c05dfd7eb52e3ff6dc8da0d258070bb5fbd Author: Bill Hoffman AuthorDate: Fri Jun 12 14:16:09 2015 -0400 Commit: Bill Hoffman CommitDate: Fri Jun 12 14:16:09 2015 -0400 Fix FindCUDA to only realpath the host compiler if it is clang linked to cc. This fixes ccache on all other platforms. CUDA with ccache failed because it followed the symlink for ccache to cc and tried to use ccache directly as a compiler. diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index e8e1fb1..f4b0783 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -468,17 +468,31 @@ set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.") if(CMAKE_GENERATOR MATCHES "Visual Studio") set(CUDA_HOST_COMPILER "$(VCInstallDir)bin" CACHE FILEPATH "Host side compiler used by NVCC") else() - # Using cc which is symlink to clang may let NVCC think it is GCC and issue - # unhandled -dumpspecs option to clang. Also in case neither - # CMAKE_C_COMPILER is defined (project does not use C language) nor - # CUDA_HOST_COMPILER is specified manually we should skip -ccbin and let - # nvcc use its own default C compiler. - if(DEFINED CMAKE_C_COMPILER AND NOT DEFINED CUDA_HOST_COMPILER) - get_filename_component(c_compiler_realpath "${CMAKE_C_COMPILER}" REALPATH) + if(APPLE + AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang" + AND "${CMAKE_C_COMPILER}" MATCHES "/cc$") + # Using cc which is symlink to clang may let NVCC think it is GCC and issue + # unhandled -dumpspecs option to clang. Also in case neither + # CMAKE_C_COMPILER is defined (project does not use C language) nor + # CUDA_HOST_COMPILER is specified manually we should skip -ccbin and let + # nvcc use its own default C compiler. + # Only care about this on APPLE with clang to avoid + # following symlinks to things like ccache + if(DEFINED CMAKE_C_COMPILER AND NOT DEFINED CUDA_HOST_COMPILER) + get_filename_component(c_compiler_realpath "${CMAKE_C_COMPILER}" REALPATH) + # if the real path does not end up being clang then + # go back to using CMAKE_C_COMPILER + if(NOT "${c_compiler_realpath}" MATCHES "/clang$") + set(c_compiler_realpath "${CMAKE_C_COMPILER}") + endif() + else() + set(c_compiler_realpath "") + endif() + set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC") else() - set(c_compiler_realpath "") + set(CUDA_HOST_COMPILER "${CMAKE_C_COMPILER}" + CACHE FILEPATH "Host side compiler used by NVCC") endif() - set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC") endif() # Propagate the host flags to the host compiler via -Xcompiler ----------------------------------------------------------------------- Summary of changes: Modules/FindCUDA.cmake | 32 +++++++++++++++++++++++--------- Source/CMakeVersion.cmake | 2 +- 2 files changed, 24 insertions(+), 10 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sat Jun 13 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 13 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-148-g98133d3 Message-ID: <20150613040106.A5937B0017@public.kitware.com> 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, master has been updated via 98133d3d4db5fe4cf5dbb0cd16235e19b753b55e (commit) from 03e22481886c6ea97440f54ef84df84969e5969f (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=98133d3d4db5fe4cf5dbb0cd16235e19b753b55e commit 98133d3d4db5fe4cf5dbb0cd16235e19b753b55e Author: Kitware Robot AuthorDate: Sat Jun 13 00:01:05 2015 -0400 Commit: Kitware Robot CommitDate: Sat Jun 13 00:01:05 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index ae16656..65b5f1f 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150612) +set(CMake_VERSION_PATCH 20150613) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 13 02:27:01 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 13 Jun 2015 02:27:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-451-g3d1166d Message-ID: <20150613062701.DFC7FAFB25@public.kitware.com> 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 3d1166d1f8f61da181e3374c4b900a0fa2604035 (commit) via 7a57d3615f4020783e44f06c3aad4b24dbc342d3 (commit) from 0753c59f4551e65b9f6d422def093f55da338ad9 (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=3d1166d1f8f61da181e3374c4b900a0fa2604035 commit 3d1166d1f8f61da181e3374c4b900a0fa2604035 Merge: 0753c59 7a57d36 Author: Stephen Kelly AuthorDate: Sat Jun 13 02:26:59 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 13 02:26:59 2015 -0400 Merge topic 'fix-tests-ancient-policies' into next 7a57d361 Revert topic. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7a57d3615f4020783e44f06c3aad4b24dbc342d3 commit 7a57d3615f4020783e44f06c3aad4b24dbc342d3 Author: Stephen Kelly AuthorDate: Sat Jun 13 08:25:04 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 13 08:26:08 2015 +0200 Revert topic. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index fabaa6c..8865063 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -347,6 +347,9 @@ if(BUILD_TESTING) ADD_TEST_MACRO(CrossCompile CrossCompile) set_tests_properties(CrossCompile PROPERTIES PASS_REGULAR_EXPRESSION "TRY_RUN.. invoked in cross-compiling mode") + if("${CMAKE_GENERATOR}" MATCHES "Make") + ADD_TEST_MACRO(Policy0002 Policy0002) + endif() if(CTEST_TEST_OSX_ARCH) ADD_TEST_MACRO(Architecture Architecture) set_tests_properties(Architecture PROPERTIES diff --git a/Tests/CMakeTests/FileTestScript.cmake b/Tests/CMakeTests/FileTestScript.cmake index a243aa6..9a43569 100644 --- a/Tests/CMakeTests/FileTestScript.cmake +++ b/Tests/CMakeTests/FileTestScript.cmake @@ -73,7 +73,7 @@ elseif(testname STREQUAL glob_recurse_relative_no_expression) # fail file(GLOB_RECURSE v RELATIVE dddd) elseif(testname STREQUAL glob_non_full_path) # pass - file(GLOB_RECURSE v FOLLOW_SYMLINKS ffff*.*) + file(GLOB_RECURSE v ffff*.*) message("v='${v}'") elseif(testname STREQUAL make_directory_non_full_path) # pass diff --git a/Tests/CPackComponents/CMakeLists.txt b/Tests/CPackComponents/CMakeLists.txt index c676acc..1cb8669 100644 --- a/Tests/CPackComponents/CMakeLists.txt +++ b/Tests/CPackComponents/CMakeLists.txt @@ -79,7 +79,7 @@ set(CPACK_NSIS_MENU_LINKS ) # Suggested default root for end users of the installer: -set(CPACK_NSIS_INSTALL_ROOT "C:\\\\Program Files\\\\CMake Tests Install Root") +set(CPACK_NSIS_INSTALL_ROOT "C:\\Program Files\\CMake Tests Install Root") # Include CPack to introduce the appropriate targets include(CPack) diff --git a/Tests/EmptyProperty/CMakeLists.txt b/Tests/EmptyProperty/CMakeLists.txt index 65aa216..39e75f3 100644 --- a/Tests/EmptyProperty/CMakeLists.txt +++ b/Tests/EmptyProperty/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required (VERSION 3.3) project (EmptyProperty) set_property(DIRECTORY APPEND diff --git a/Tests/ExternalOBJ/CMakeLists.txt b/Tests/ExternalOBJ/CMakeLists.txt index 64620a5..458c88b 100644 --- a/Tests/ExternalOBJ/CMakeLists.txt +++ b/Tests/ExternalOBJ/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.3) +cmake_minimum_required (VERSION 2.6) project (ExternalOBJ) if(APPLE) diff --git a/Tests/LibName/CMakeLists.txt b/Tests/LibName/CMakeLists.txt index eedd9ec..3ac125f 100644 --- a/Tests/LibName/CMakeLists.txt +++ b/Tests/LibName/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required(VERSION 3.3) project(LibName) # this is a test to make sure that relative path # LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH work diff --git a/Tests/LinkLine/CMakeLists.txt b/Tests/LinkLine/CMakeLists.txt index d14c963..6154dd4 100644 --- a/Tests/LinkLine/CMakeLists.txt +++ b/Tests/LinkLine/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required (VERSION 3.3) project( LinkLine ) # Makes sure that the library order as specified by the user are diff --git a/Tests/Policy0002/A/CMakeLists.txt b/Tests/Policy0002/A/CMakeLists.txt new file mode 100644 index 0000000..cee6422 --- /dev/null +++ b/Tests/Policy0002/A/CMakeLists.txt @@ -0,0 +1 @@ +add_executable(Policy0002 ../policy0002.c) diff --git a/Tests/Policy0002/CMakeLists.txt b/Tests/Policy0002/CMakeLists.txt new file mode 100644 index 0000000..0f6d331 --- /dev/null +++ b/Tests/Policy0002/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.6) +project(Policy0002 C) +cmake_policy(SET CMP0002 OLD) +add_subdirectory(A) +add_executable(Policy0002 policy0002.c) diff --git a/Tests/Policy0002/policy0002.c b/Tests/Policy0002/policy0002.c new file mode 100644 index 0000000..8488f4e --- /dev/null +++ b/Tests/Policy0002/policy0002.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/Tests/PolicyScope/Bar.cmake b/Tests/PolicyScope/Bar.cmake index 2f94d8d..cf1904c 100644 --- a/Tests/PolicyScope/Bar.cmake +++ b/Tests/PolicyScope/Bar.cmake @@ -1,5 +1,8 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 2.6.3) # Make sure a policy set differently by our includer is now correct. -cmake_policy(GET CMP0056 cmp) -check(CMP0056 "NEW" "${cmp}") +cmake_policy(GET CMP0003 cmp) +check(CMP0003 "NEW" "${cmp}") + +# Test allowing the top-level file to not have cmake_minimum_required. +cmake_policy(SET CMP0000 OLD) diff --git a/Tests/PolicyScope/CMakeLists.txt b/Tests/PolicyScope/CMakeLists.txt index b14c423..413195a 100644 --- a/Tests/PolicyScope/CMakeLists.txt +++ b/Tests/PolicyScope/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required(VERSION 3.0) project(PolicyScope C) # No cmake_minimum_required(VERSION), it's in FindFoo. @@ -13,27 +12,33 @@ endfunction() #----------------------------------------------------------------------------- # Test using a development framework that sets policies for us. +# Policy CMP0011 should not be set at this point. +cmake_policy(GET CMP0011 cmp) +check(CMP0011 "" "${cmp}") + # Put the test modules in the search path. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) # The included file should set policies for us. -find_package(Foo NO_POLICY_SCOPE) +find_package(Foo) # Check policies set by the package. -cmake_policy(GET CMP0056 cmp) -check(CMP0056 "OLD" "${cmp}") -cmake_policy(GET CMP0055 cmp) -check(CMP0055 "NEW" "${cmp}") +cmake_policy(GET CMP0003 cmp) +check(CMP0003 "OLD" "${cmp}") +cmake_policy(GET CMP0002 cmp) +check(CMP0002 "NEW" "${cmp}") +cmake_policy(GET CMP0011 cmp) +check(CMP0011 "NEW" "${cmp}") # Make sure an included file cannot change policies. include(Bar) -cmake_policy(GET CMP0056 cmp) -check(CMP0056 "OLD" "${cmp}") +cmake_policy(GET CMP0003 cmp) +check(CMP0003 "OLD" "${cmp}") # Allow the included file to change policies. include(Bar NO_POLICY_SCOPE) -cmake_policy(GET CMP0056 cmp) -check(CMP0056 "NEW" "${cmp}") +cmake_policy(GET CMP0003 cmp) +check(CMP0003 "NEW" "${cmp}") #----------------------------------------------------------------------------- # Test function and macro policy recording. @@ -41,56 +46,57 @@ check(CMP0056 "NEW" "${cmp}") # Create the functions in an isolated scope in which we change policies. cmake_policy(PUSH) if(1) - cmake_policy(SET CMP0055 OLD) + # Change CMP0002 + cmake_policy(SET CMP0002 OLD) function(func1) - # CMP0055 should be changed when this function is invoked - cmake_policy(GET CMP0055 cmp) - check(CMP0055 "OLD" "${cmp}") + # CMP0002 should be changed when this function is invoked + cmake_policy(GET CMP0002 cmp) + check(CMP0002 "OLD" "${cmp}") endfunction() - # Unset CMP0055 - cmake_policy(VERSION 3.1) + # Unset CMP0002 + cmake_policy(VERSION 2.4) macro(macro1) - # CMP0055 should be unset when this macro is invoked - cmake_policy(GET CMP0055 cmp) - check(CMP0055 "" "${cmp}") + # CMP0002 should be unset when this macro is invoked + cmake_policy(GET CMP0002 cmp) + check(CMP0002 "" "${cmp}") # Setting the policy should work here and also in the caller. - cmake_policy(SET CMP0055 OLD) - cmake_policy(GET CMP0055 cmp) - check(CMP0055 "OLD" "${cmp}") + cmake_policy(SET CMP0002 OLD) + cmake_policy(GET CMP0002 cmp) + check(CMP0002 "OLD" "${cmp}") endmacro() endif() cmake_policy(POP) -# CMP0055 should still be NEW in this context. -cmake_policy(GET CMP0055 cmp) -check(CMP0055 "NEW" "${cmp}") +# CMP0002 should still be NEW in this context. +cmake_policy(GET CMP0002 cmp) +check(CMP0002 "NEW" "${cmp}") # Check the recorded policies func1() macro1() -# The macro should have changed CMP0055. -cmake_policy(GET CMP0055 cmp) -check(CMP0055 "OLD" "${cmp}") +# The macro should have changed CMP0002. +cmake_policy(GET CMP0002 cmp) +check(CMP0002 "OLD" "${cmp}") #----------------------------------------------------------------------------- # Test CMAKE_POLICY_DEFAULT_CMP variable. cmake_policy(PUSH) - set(CMAKE_POLICY_DEFAULT_CMP0054 OLD) # ignored - set(CMAKE_POLICY_DEFAULT_CMP0055 OLD) # honored - set(CMAKE_POLICY_DEFAULT_CMP0056 NEW) # honored - set(CMAKE_POLICY_DEFAULT_CMP0057 "") # noop - cmake_policy(VERSION 3.1) - cmake_policy(GET CMP0054 cmp) - check(CMP0054 "NEW" "${cmp}") - cmake_policy(GET CMP0055 cmp) - check(CMP0055 "OLD" "${cmp}") - cmake_policy(GET CMP0056 cmp) - check(CMP0056 "NEW" "${cmp}") - cmake_policy(GET CMP0057 cmp) - check(CMP0057 "" "${cmp}") + set(CMAKE_POLICY_DEFAULT_CMP0010 OLD) # ignored + set(CMAKE_POLICY_DEFAULT_CMP0012 OLD) # honored + set(CMAKE_POLICY_DEFAULT_CMP0013 NEW) # honored + set(CMAKE_POLICY_DEFAULT_CMP0014 "") # noop + cmake_policy(VERSION 2.6.3) + cmake_policy(GET CMP0010 cmp) + check(CMP0010 "NEW" "${cmp}") + cmake_policy(GET CMP0012 cmp) + check(CMP0012 "OLD" "${cmp}") + cmake_policy(GET CMP0013 cmp) + check(CMP0013 "NEW" "${cmp}") + cmake_policy(GET CMP0014 cmp) + check(CMP0014 "" "${cmp}") cmake_policy(POP) #----------------------------------------------------------------------------- diff --git a/Tests/PolicyScope/FindFoo.cmake b/Tests/PolicyScope/FindFoo.cmake index 3f9ac8e..5b441e2 100644 --- a/Tests/PolicyScope/FindFoo.cmake +++ b/Tests/PolicyScope/FindFoo.cmake @@ -1,2 +1,2 @@ -cmake_minimum_required(VERSION 3.2) -cmake_policy(SET CMP0056 OLD) +cmake_minimum_required(VERSION 2.6.3) +cmake_policy(SET CMP0003 OLD) diff --git a/Tests/PreOrder/CMakeLists.txt b/Tests/PreOrder/CMakeLists.txt index a688c74..8b4c439 100644 --- a/Tests/PreOrder/CMakeLists.txt +++ b/Tests/PreOrder/CMakeLists.txt @@ -1,5 +1,4 @@ # a simple test case -cmake_minimum_required (VERSION 3.3) project (PreOrder) set(CMAKE_IGNORE_DEPENDENCIES_ORDERING 1) add_subdirectory(Library) diff --git a/Tests/SBCS/CMakeLists.txt b/Tests/SBCS/CMakeLists.txt index 7a77711..b3c3c2c 100644 --- a/Tests/SBCS/CMakeLists.txt +++ b/Tests/SBCS/CMakeLists.txt @@ -1,5 +1,4 @@ # a SBCS test case -cmake_minimum_required (VERSION 3.3) project (SBCS) add_definitions(-D_SBCS) diff --git a/Tests/Simple/CMakeLists.txt b/Tests/Simple/CMakeLists.txt index 79ff071..a951c2d 100644 --- a/Tests/Simple/CMakeLists.txt +++ b/Tests/Simple/CMakeLists.txt @@ -1,5 +1,4 @@ # a simple test case -cmake_minimum_required (VERSION 3.3) project (Simple) add_executable (Simple simple.cxx) diff --git a/Tests/StringFileTest/CMakeLists.txt b/Tests/StringFileTest/CMakeLists.txt index 8caa2f0..faf3bc9 100644 --- a/Tests/StringFileTest/CMakeLists.txt +++ b/Tests/StringFileTest/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.3) +cmake_minimum_required (VERSION 2.6) project(StringFileTest) include_directories(${StringFileTest_BINARY_DIR}) diff --git a/Tests/VSExternalInclude/CMakeLists.txt b/Tests/VSExternalInclude/CMakeLists.txt index 926caea..73ea05a 100644 --- a/Tests/VSExternalInclude/CMakeLists.txt +++ b/Tests/VSExternalInclude/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.3) +cmake_minimum_required (VERSION 2.6) project(VSExternalInclude) if(${CMAKE_GENERATOR} MATCHES "Visual Studio 6") diff --git a/Tests/VSExternalInclude/Lib1/CMakeLists.txt b/Tests/VSExternalInclude/Lib1/CMakeLists.txt index 0d08853..9dfac86 100644 --- a/Tests/VSExternalInclude/Lib1/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib1/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(LIB1) diff --git a/Tests/VSExternalInclude/Lib2/CMakeLists.txt b/Tests/VSExternalInclude/Lib2/CMakeLists.txt index 017b8fe..f451354 100644 --- a/Tests/VSExternalInclude/Lib2/CMakeLists.txt +++ b/Tests/VSExternalInclude/Lib2/CMakeLists.txt @@ -1,4 +1,3 @@ -cmake_minimum_required (VERSION 3.3) set(CMAKE_SUPPRESS_REGENERATION 1) project(VSEXTERNAL_LIB2) ----------------------------------------------------------------------- Summary of changes: Tests/CMakeLists.txt | 3 + Tests/CMakeTests/FileTestScript.cmake | 2 +- Tests/CPackComponents/CMakeLists.txt | 2 +- Tests/EmptyProperty/CMakeLists.txt | 1 - Tests/ExternalOBJ/CMakeLists.txt | 2 +- Tests/LibName/CMakeLists.txt | 1 - Tests/LinkLine/CMakeLists.txt | 1 - Tests/Policy0002/A/CMakeLists.txt | 1 + Tests/Policy0002/CMakeLists.txt | 5 ++ .../subdir/main.c => Policy0002/policy0002.c} | 0 Tests/PolicyScope/Bar.cmake | 9 +- Tests/PolicyScope/CMakeLists.txt | 88 +++++++++++--------- Tests/PolicyScope/FindFoo.cmake | 4 +- Tests/PreOrder/CMakeLists.txt | 1 - Tests/SBCS/CMakeLists.txt | 1 - Tests/Simple/CMakeLists.txt | 1 - Tests/StringFileTest/CMakeLists.txt | 2 +- Tests/VSExternalInclude/CMakeLists.txt | 2 +- Tests/VSExternalInclude/Lib1/CMakeLists.txt | 1 - Tests/VSExternalInclude/Lib2/CMakeLists.txt | 1 - 20 files changed, 69 insertions(+), 59 deletions(-) create mode 100644 Tests/Policy0002/A/CMakeLists.txt create mode 100644 Tests/Policy0002/CMakeLists.txt copy Tests/{CTestTestSubdir/subdir/main.c => Policy0002/policy0002.c} (100%) hooks/post-receive -- CMake From steveire at gmail.com Sat Jun 13 02:47:21 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sat, 13 Jun 2015 02:47:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-454-ga293874 Message-ID: <20150613064721.CDBFC8F06@public.kitware.com> 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 a29387483823040d0d754d300333098c68e9f823 (commit) via 0efe4944e1ae18b9204209b3ddf5811905e22357 (commit) via bc1211fa7d5c8262b075e010667aed41f5205a75 (commit) from 3d1166d1f8f61da181e3374c4b900a0fa2604035 (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=a29387483823040d0d754d300333098c68e9f823 commit a29387483823040d0d754d300333098c68e9f823 Merge: 3d1166d 0efe494 Author: Stephen Kelly AuthorDate: Sat Jun 13 02:47:20 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 13 02:47:20 2015 -0400 Merge topic 'fix-fast-special-targets' into next 0efe4944 cmGlobalGenerator: Add ComputeHomeRelativeOutputPath method. bc1211fa cmLocalUnixMakefileGenerator3: Remove unused variable. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0efe4944e1ae18b9204209b3ddf5811905e22357 commit 0efe4944e1ae18b9204209b3ddf5811905e22357 Author: Stephen Kelly AuthorDate: Sat Jun 13 08:38:27 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 13 08:38:27 2015 +0200 cmGlobalGenerator: Add ComputeHomeRelativeOutputPath method. Fix generation of tgt/fast build targets. Commit 363caa2f (cmLocalGenerator: De-virtualize Configure()., 2015-05-30) moved the computation of HomeRelativeOutputPath from Configure-time to Generate-time, because it is only used at Generate-time. However, that commit caused the member for one local generator to be computed immediately before generating with that local generator, whereas previously the members of all local generators were computed before generating any of them. The HomeRelativeOutputPath is used by the GetRelativeTargetDirectory method, which is called by the cmGlobalUnixMakefileGenerator3::WriteConvenienceRules method. That method is called by the cmLocalUnixMakefileGenerator3::WriteLocalMakefile method when generating for the top-most (ie, the first) local generator. At that point, the HomeRelativeOutputPath is not yet computed. Fix that by computing the member just before generating anything. This will eventually be done in the cmLocalUnixMakefileGenerator3 constructor instead, but further refactoring is needed to make that possible. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 9b02cbb..a462113 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1273,6 +1273,11 @@ void cmGlobalGenerator::Generate() // it builds by default. this->FillLocalGeneratorToTargetMap(); + for (i = 0; i < this->LocalGenerators.size(); ++i) + { + this->LocalGenerators[i]->ComputeHomeRelativeOutputPath(); + } + // Generate project files for (i = 0; i < this->LocalGenerators.size(); ++i) { diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 42df2b8..6a8c5aa 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -47,6 +47,8 @@ public: */ virtual void Generate() {} + virtual void ComputeHomeRelativeOutputPath() {} + /** * Calls TraceVSDependencies() on all targets of this generator. */ diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 5c9768a..e292ba7 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -100,19 +100,6 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3() //---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::Generate() { - // Compute the path to use when referencing the current output - // directory from the top output directory. - this->HomeRelativeOutputPath = - this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); - if(this->HomeRelativeOutputPath == ".") - { - this->HomeRelativeOutputPath = ""; - } - if(!this->HomeRelativeOutputPath.empty()) - { - this->HomeRelativeOutputPath += "/"; - } - // Store the configuration name that will be generated. if(const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE")) { @@ -164,6 +151,22 @@ void cmLocalUnixMakefileGenerator3::Generate() this->WriteDirectoryInformationFile(); } +void cmLocalUnixMakefileGenerator3::ComputeHomeRelativeOutputPath() +{ + // Compute the path to use when referencing the current output + // directory from the top output directory. + this->HomeRelativeOutputPath = + this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT); + if(this->HomeRelativeOutputPath == ".") + { + this->HomeRelativeOutputPath = ""; + } + if(!this->HomeRelativeOutputPath.empty()) + { + this->HomeRelativeOutputPath += "/"; + } +} + //---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::ComputeObjectFilenames( std::map& mapping, diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index dcb3016..4e4d146 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -39,6 +39,8 @@ public: cmState::Snapshot snapshot); virtual ~cmLocalUnixMakefileGenerator3(); + virtual void ComputeHomeRelativeOutputPath(); + /** * Generate the makefile for this directory. */ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc1211fa7d5c8262b075e010667aed41f5205a75 commit bc1211fa7d5c8262b075e010667aed41f5205a75 Author: Stephen Kelly AuthorDate: Sat Jun 13 08:38:19 2015 +0200 Commit: Stephen Kelly CommitDate: Sat Jun 13 08:38:19 2015 +0200 cmLocalUnixMakefileGenerator3: Remove unused variable. diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index f1fd806..5c9768a 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1840,7 +1840,6 @@ void cmLocalUnixMakefileGenerator3 std::vector commands; // Write the all rule. - std::string dir; std::string recursiveTarget = this->Makefile->GetCurrentBinaryDirectory(); recursiveTarget += "/all"; ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 5 +++++ Source/cmLocalGenerator.h | 2 ++ Source/cmLocalUnixMakefileGenerator3.cxx | 30 ++++++++++++++++-------------- Source/cmLocalUnixMakefileGenerator3.h | 2 ++ 4 files changed, 25 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Jun 14 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 14 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-149-g081f6d9 Message-ID: <20150614040105.AE617AFD20@public.kitware.com> 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, master has been updated via 081f6d917253046158ec43916073023d7fa181b4 (commit) from 98133d3d4db5fe4cf5dbb0cd16235e19b753b55e (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=081f6d917253046158ec43916073023d7fa181b4 commit 081f6d917253046158ec43916073023d7fa181b4 Author: Kitware Robot AuthorDate: Sun Jun 14 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Sun Jun 14 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 65b5f1f..2376de0 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150613) +set(CMake_VERSION_PATCH 20150614) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Jun 15 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 15 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-150-g9cbb9ed Message-ID: <20150615040105.AA66EB0399@public.kitware.com> 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, master has been updated via 9cbb9ed4c946b957df1a99910d5b60cdb269bb89 (commit) from 081f6d917253046158ec43916073023d7fa181b4 (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=9cbb9ed4c946b957df1a99910d5b60cdb269bb89 commit 9cbb9ed4c946b957df1a99910d5b60cdb269bb89 Author: Kitware Robot AuthorDate: Mon Jun 15 00:01:03 2015 -0400 Commit: Kitware Robot CommitDate: Mon Jun 15 00:01:03 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 2376de0..0f15ab1 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150614) +set(CMake_VERSION_PATCH 20150615) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:25:02 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:25:02 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-457-g1ad0a08 Message-ID: <20150615132502.AE7CEAFE27@public.kitware.com> 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 1ad0a084548422430887a0ee44ea456030401c32 (commit) via 90ad087ab9075cc9648df0623502da0caa44e971 (commit) via 7195ec92b2f34ef16ff1382fb00f527a3609f3bf (commit) from a29387483823040d0d754d300333098c68e9f823 (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=1ad0a084548422430887a0ee44ea456030401c32 commit 1ad0a084548422430887a0ee44ea456030401c32 Merge: a293874 90ad087 Author: Brad King AuthorDate: Mon Jun 15 09:25:01 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:25:01 2015 -0400 Merge topic 'cmake--build-dir' into next 90ad087a cmake: Fix --build for VS generators (#15609) 7195ec92 Tests: Extend RunCMake.CommandLine to cover --build with no arg http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=90ad087ab9075cc9648df0623502da0caa44e971 commit 90ad087ab9075cc9648df0623502da0caa44e971 Author: Brad King AuthorDate: Thu Jun 11 15:01:12 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 16:04:21 2015 -0400 cmake: Fix --build for VS generators (#15609) The VS >= 10 generators need to parse the .sln file from the build directory to locate targets in subdirectories. This occurs after we change the working directory to the build tree. If a relative directory other than "." was given then we would change to it and also refer to the .sln file location with it. Fix this by converting the build tree to a full path always. This will also give a more informative error message when the directory does not exist. diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index cc30732..c94ffec 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -420,7 +420,7 @@ static int do_build(int ac, char const* const* av) switch (doing) { case DoingDir: - dir = av[i]; + dir = cmSystemTools::CollapseFullPath(av[i]); doing = DoingNone; break; case DoingTarget: diff --git a/Tests/RunCMake/CommandLine/BuildDir.cmake b/Tests/RunCMake/CommandLine/BuildDir.cmake new file mode 100644 index 0000000..30030a7 --- /dev/null +++ b/Tests/RunCMake/CommandLine/BuildDir.cmake @@ -0,0 +1 @@ +add_subdirectory(BuildDir) diff --git a/Tests/RunCMake/CommandLine/BuildDir/CMakeLists.txt b/Tests/RunCMake/CommandLine/BuildDir/CMakeLists.txt new file mode 100644 index 0000000..20df108 --- /dev/null +++ b/Tests/RunCMake/CommandLine/BuildDir/CMakeLists.txt @@ -0,0 +1,5 @@ +add_custom_command( + OUTPUT output.txt + COMMAND ${CMAKE_COMMAND} -E echo CustomCommand > output.txt + ) +add_custom_target(CustomTarget ALL DEPENDS output.txt) diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index 416b94e..84d4cc9 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -28,9 +28,24 @@ run_cmake_command(build-no-cache ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}) run_cmake_command(build-no-generator ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-no-generator) +run_cmake_command(build-bad-dir + ${CMAKE_COMMAND} --build dir-does-not-exist) run_cmake_command(build-bad-generator ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-bad-generator) +function(run_BuildDir) + # Use a single build tree for a few tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/BuildDir-build) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + run_cmake(BuildDir) + run_cmake_command(BuildDir--build ${CMAKE_COMMAND} -E chdir .. + ${CMAKE_COMMAND} --build BuildDir-build --target CustomTarget) +endfunction() +run_BuildDir() + if(RunCMake_GENERATOR STREQUAL "Ninja") # Use a single build tree for a few tests without cleaning. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Build-build) diff --git a/Tests/RunCMake/CommandLine/build-bad-dir-result.txt b/Tests/RunCMake/CommandLine/build-bad-dir-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/build-bad-dir-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt b/Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt new file mode 100644 index 0000000..d3f3d9c --- /dev/null +++ b/Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt @@ -0,0 +1,2 @@ +^Error: [^ +]+/Tests/RunCMake/CommandLine/build-bad-dir-build/dir-does-not-exist is not a directory$ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7195ec92b2f34ef16ff1382fb00f527a3609f3bf commit 7195ec92b2f34ef16ff1382fb00f527a3609f3bf Author: Brad King AuthorDate: Thu Jun 11 15:40:24 2015 -0400 Commit: Brad King CommitDate: Thu Jun 11 15:58:52 2015 -0400 Tests: Extend RunCMake.CommandLine to cover --build with no arg diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index 69beed9..416b94e 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -22,6 +22,8 @@ run_cmake_command(G_bad-arg ${CMAKE_COMMAND} -G NoSuchGenerator) run_cmake_command(P_no-arg ${CMAKE_COMMAND} -P) run_cmake_command(P_no-file ${CMAKE_COMMAND} -P nosuchscriptfile.cmake) +run_cmake_command(build-no-dir + ${CMAKE_COMMAND} --build) run_cmake_command(build-no-cache ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}) run_cmake_command(build-no-generator diff --git a/Tests/RunCMake/CommandLine/build-no-dir-result.txt b/Tests/RunCMake/CommandLine/build-no-dir-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/build-no-dir-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/build-no-dir-stderr.txt b/Tests/RunCMake/CommandLine/build-no-dir-stderr.txt new file mode 100644 index 0000000..8d518f6 --- /dev/null +++ b/Tests/RunCMake/CommandLine/build-no-dir-stderr.txt @@ -0,0 +1 @@ +^Usage: cmake --build \[options\] \[-- \[native-options\]\] ----------------------------------------------------------------------- Summary of changes: Source/cmakemain.cxx | 2 +- Tests/RunCMake/CommandLine/BuildDir.cmake | 1 + .../{Build.cmake => BuildDir/CMakeLists.txt} | 0 Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 17 +++++++++++++++++ .../build-bad-dir-result.txt} | 0 Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt | 2 ++ .../build-no-dir-result.txt} | 0 Tests/RunCMake/CommandLine/build-no-dir-stderr.txt | 1 + 8 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/CommandLine/BuildDir.cmake copy Tests/RunCMake/CommandLine/{Build.cmake => BuildDir/CMakeLists.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/build-bad-dir-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/build-no-dir-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/build-no-dir-stderr.txt hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:37:09 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:37:09 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-459-g2ceef36 Message-ID: <20150615133709.B74AFB05CB@public.kitware.com> 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 2ceef36bfd7eaf937f2a3ffc387c2be160cdb31b (commit) via 698f75971bee336133d21260db069bb139bd3d76 (commit) from 1ad0a084548422430887a0ee44ea456030401c32 (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=2ceef36bfd7eaf937f2a3ffc387c2be160cdb31b commit 2ceef36bfd7eaf937f2a3ffc387c2be160cdb31b Merge: 1ad0a08 698f759 Author: Brad King AuthorDate: Mon Jun 15 09:37:08 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:37:08 2015 -0400 Merge topic 'compiler-launcher' into next 698f7597 Add options to launch the compiler through tools like ccache or distcc http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=698f75971bee336133d21260db069bb139bd3d76 commit 698f75971bee336133d21260db069bb139bd3d76 Author: Bill Hoffman AuthorDate: Thu Jun 4 15:56:56 2015 -0400 Commit: Brad King CommitDate: Mon Jun 15 09:36:48 2015 -0400 Add options to launch the compiler through tools like ccache or distcc Create a _COMPILER_LAUNCHER target property (initialized by a CMAKE__COMPILER_LAUNCHER variable) to specify a compiler launcher tool. This will supersede the CMAKE__COMPILER_ARG1 approach to using such tools. The old approach set CMAKE__COMPILER to the launcher tool while the new approach leaves this variable set to the actual compiler. Implement this property for Makefile and Ninja generators. It cannot be implemented for VS or Xcode generators as the IDE build tools offer no such hooks. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 615254e..9a60a10 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -177,6 +177,7 @@ Properties on Targets /prop_tgt/JOB_POOL_COMPILE /prop_tgt/JOB_POOL_LINK /prop_tgt/LABELS + /prop_tgt/LANG_COMPILER_LAUNCHER /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE /prop_tgt/LANG_VISIBILITY_PRESET /prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index bd02f8b..2b92006 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -235,6 +235,7 @@ Variables that Control the Build /variable/CMAKE_INSTALL_NAME_DIR /variable/CMAKE_INSTALL_RPATH /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH + /variable/CMAKE_LANG_COMPILER_LAUNCHER /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE /variable/CMAKE_LANG_VISIBILITY_PRESET /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst new file mode 100644 index 0000000..0fe0b31 --- /dev/null +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -0,0 +1,13 @@ +_COMPILER_LAUNCHER +------------------------ + +This property is implemented only when ```` is ``C`` or ``CXX``. + +Specify a :ref:`;-list ` containing a command line +for a compiler launching tool. The :ref:`Makefile Generators` and the +:generator:`Ninja` generator will run this tool and pass the compiler and +its arguments to the tool. Some example tools are distcc and ccache. + +This property is initialized by the value of +the :variable:`CMAKE__COMPILER_LAUNCHER` variable if it is set +when a target is created. diff --git a/Help/release/dev/compiler-launcher.rst b/Help/release/dev/compiler-launcher.rst new file mode 100644 index 0000000..3ba692d --- /dev/null +++ b/Help/release/dev/compiler-launcher.rst @@ -0,0 +1,8 @@ +compiler-launcher +----------------- + +* The :ref:`Makefile Generators` and the :generator:`Ninja` generator + learned to add compiler launcher tools like distcc and ccache along with the + compiler for ``C`` and ``CXX`` languages. See the + :variable:`CMAKE__COMPILER_LAUNCHER` variable and + :prop_tgt:`_COMPILER_LAUNCHER` target property for details. diff --git a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst new file mode 100644 index 0000000..7961f60 --- /dev/null +++ b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst @@ -0,0 +1,6 @@ +CMAKE__COMPILER_LAUNCHER +------------------------------ + +Default value for :prop_tgt:`_COMPILER_LAUNCHER` target property. +This variable is used to initialize the property on each target as it is +created. This is done only when ```` is ``C`` or ``CXX``. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7b88bc7..481f4fe 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -775,6 +775,25 @@ cmMakefileTargetGenerator } } + // Maybe insert a compiler launcher like ccache or distcc + if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) + { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char *clauncher = this->Target->GetProperty(clauncher_prop); + if (clauncher && *clauncher) + { + std::vector launcher_cmd; + cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); + for (std::vector::iterator i = launcher_cmd.begin(), + e = launcher_cmd.end(); i != e; ++i) + { + *i = this->LocalGenerator->EscapeForShell(*i); + } + std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; + compileCommands.front().insert(0, run_launcher); + } + } + // Expand placeholders in the commands. for(std::vector::iterator i = compileCommands.begin(); i != compileCommands.end(); ++i) diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 879d6b7..bb75e09 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -22,6 +22,7 @@ #include "cmComputeLinkInformation.h" #include "cmSourceFile.h" #include "cmCustomCommandGenerator.h" +#include "cmAlgorithms.h" #include @@ -475,6 +476,25 @@ cmNinjaTargetGenerator } } + // Maybe insert a compiler launcher like ccache or distcc + if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) + { + std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER"; + const char *clauncher = this->Target->GetProperty(clauncher_prop); + if (clauncher && *clauncher) + { + std::vector launcher_cmd; + cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); + for (std::vector::iterator i = launcher_cmd.begin(), + e = launcher_cmd.end(); i != e; ++i) + { + *i = this->LocalGenerator->EscapeForShell(*i); + } + std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; + compileCmds.front().insert(0, run_launcher); + } + } + if (!compileCmds.empty()) { compileCmds.front().insert(0, cldeps); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..e20f0af 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -333,10 +333,12 @@ void cmTarget::SetMakefile(cmMakefile* mf) this->SetPropertyDefault("MACOSX_BUNDLE", 0); this->SetPropertyDefault("MACOSX_RPATH", 0); this->SetPropertyDefault("NO_SYSTEM_FROM_IMPORTED", 0); + this->SetPropertyDefault("C_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("C_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("C_STANDARD", 0); this->SetPropertyDefault("C_STANDARD_REQUIRED", 0); this->SetPropertyDefault("C_EXTENSIONS", 0); + this->SetPropertyDefault("CXX_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("CXX_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("CXX_STANDARD", 0); this->SetPropertyDefault("CXX_STANDARD_REQUIRED", 0); diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..2a4108f 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -232,4 +232,5 @@ endif() if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) + add_RunCMake_test(CompilerLauncher) endif() diff --git a/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/C-launch.cmake b/Tests/RunCMake/CompilerLauncher/C-launch.cmake new file mode 100644 index 0000000..e66ca20 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(C.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/C.cmake b/Tests/RunCMake/CompilerLauncher/C.cmake new file mode 100644 index 0000000..67bf7c4 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/C.cmake @@ -0,0 +1,4 @@ +enable_language(C) +set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") +set(CMAKE_VERBOSE_MAKEFILE TRUE) +add_executable(main main.c) diff --git a/Tests/RunCMake/CompilerLauncher/CMakeLists.txt b/Tests/RunCMake/CompilerLauncher/CMakeLists.txt new file mode 100644 index 0000000..18dfd26 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.2) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt b/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt new file mode 100644 index 0000000..3313e31 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake b/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake new file mode 100644 index 0000000..3002c9d --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(CXX.cmake) diff --git a/Tests/RunCMake/CompilerLauncher/CXX.cmake b/Tests/RunCMake/CompilerLauncher/CXX.cmake new file mode 100644 index 0000000..cdd3478 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/CXX.cmake @@ -0,0 +1,4 @@ +enable_language(CXX) +set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") +set(CMAKE_VERBOSE_MAKEFILE TRUE) +add_executable(main main.cxx) diff --git a/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake b/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake new file mode 100644 index 0000000..5884d5c --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/RunCMakeTest.cmake @@ -0,0 +1,23 @@ +include(RunCMake) + +function(run_compiler_launcher lang) + # Use a single build tree for tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-build) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + run_cmake(${lang}) + + set(RunCMake_TEST_OUTPUT_MERGE 1) + if("${RunCMake_GENERATOR}" STREQUAL "Ninja") + set(verbose_args -- -v) + endif() + run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args}) +endfunction() + +run_compiler_launcher(C) +run_compiler_launcher(CXX) +if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") + run_compiler_launcher(C-launch) + run_compiler_launcher(CXX-launch) +endif() diff --git a/Tests/RunCMake/CompilerLauncher/main.c b/Tests/RunCMake/CompilerLauncher/main.c new file mode 100644 index 0000000..03b2213 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/main.c @@ -0,0 +1,3 @@ +int main(void) { + return 0; +} diff --git a/Tests/RunCMake/CompilerLauncher/main.cxx b/Tests/RunCMake/CompilerLauncher/main.cxx new file mode 100644 index 0000000..76e8197 --- /dev/null +++ b/Tests/RunCMake/CompilerLauncher/main.cxx @@ -0,0 +1 @@ +int main() { return 0; } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:42:05 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:42:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-461-gc4c6bc8 Message-ID: <20150615134205.8C43C2AA6@public.kitware.com> 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 c4c6bc8962120c24dd37eadabfb58d3a69f023a5 (commit) via b405f01daaeaeda98d448e2f0d71ea685757a5bd (commit) from 2ceef36bfd7eaf937f2a3ffc387c2be160cdb31b (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=c4c6bc8962120c24dd37eadabfb58d3a69f023a5 commit c4c6bc8962120c24dd37eadabfb58d3a69f023a5 Merge: 2ceef36 b405f01 Author: Brad King AuthorDate: Mon Jun 15 09:42:04 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:42:04 2015 -0400 Merge topic 'FindCUDA-fix-ccache' into next b405f01d FindCUDA: Resolve a host compiler symlink only if it is Apple cc -> clang http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b405f01daaeaeda98d448e2f0d71ea685757a5bd commit b405f01daaeaeda98d448e2f0d71ea685757a5bd Author: Bill Hoffman AuthorDate: Fri Jun 12 14:16:09 2015 -0400 Commit: Brad King CommitDate: Mon Jun 15 09:41:10 2015 -0400 FindCUDA: Resolve a host compiler symlink only if it is Apple cc -> clang Otherwise using a "cc -> ccache" or similar symlink as the compiler causes FindCUDA to select ccache as the host compiler. Update the logic added by commit v3.1.0-rc1~354^2 (FindCUDA: Fix OSX Clang & no C language enabled, 2014-06-12) to apply only in the specific case it is needed. diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index e8e1fb1..f4b0783 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -468,17 +468,31 @@ set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.") if(CMAKE_GENERATOR MATCHES "Visual Studio") set(CUDA_HOST_COMPILER "$(VCInstallDir)bin" CACHE FILEPATH "Host side compiler used by NVCC") else() - # Using cc which is symlink to clang may let NVCC think it is GCC and issue - # unhandled -dumpspecs option to clang. Also in case neither - # CMAKE_C_COMPILER is defined (project does not use C language) nor - # CUDA_HOST_COMPILER is specified manually we should skip -ccbin and let - # nvcc use its own default C compiler. - if(DEFINED CMAKE_C_COMPILER AND NOT DEFINED CUDA_HOST_COMPILER) - get_filename_component(c_compiler_realpath "${CMAKE_C_COMPILER}" REALPATH) + if(APPLE + AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang" + AND "${CMAKE_C_COMPILER}" MATCHES "/cc$") + # Using cc which is symlink to clang may let NVCC think it is GCC and issue + # unhandled -dumpspecs option to clang. Also in case neither + # CMAKE_C_COMPILER is defined (project does not use C language) nor + # CUDA_HOST_COMPILER is specified manually we should skip -ccbin and let + # nvcc use its own default C compiler. + # Only care about this on APPLE with clang to avoid + # following symlinks to things like ccache + if(DEFINED CMAKE_C_COMPILER AND NOT DEFINED CUDA_HOST_COMPILER) + get_filename_component(c_compiler_realpath "${CMAKE_C_COMPILER}" REALPATH) + # if the real path does not end up being clang then + # go back to using CMAKE_C_COMPILER + if(NOT "${c_compiler_realpath}" MATCHES "/clang$") + set(c_compiler_realpath "${CMAKE_C_COMPILER}") + endif() + else() + set(c_compiler_realpath "") + endif() + set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC") else() - set(c_compiler_realpath "") + set(CUDA_HOST_COMPILER "${CMAKE_C_COMPILER}" + CACHE FILEPATH "Host side compiler used by NVCC") endif() - set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC") endif() # Propagate the host flags to the host compiler via -Xcompiler ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:45:26 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:45:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-153-gf8bc484 Message-ID: <20150615134526.76D9FAFA2F@public.kitware.com> 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, master has been updated via f8bc48413cc360f9dea377761ea833f3244bc74a (commit) via 0efe4944e1ae18b9204209b3ddf5811905e22357 (commit) via bc1211fa7d5c8262b075e010667aed41f5205a75 (commit) from 9cbb9ed4c946b957df1a99910d5b60cdb269bb89 (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=f8bc48413cc360f9dea377761ea833f3244bc74a commit f8bc48413cc360f9dea377761ea833f3244bc74a Merge: 9cbb9ed 0efe494 Author: Brad King AuthorDate: Mon Jun 15 09:45:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:45:25 2015 -0400 Merge topic 'fix-fast-special-targets' 0efe4944 cmGlobalGenerator: Add ComputeHomeRelativeOutputPath method. bc1211fa cmLocalUnixMakefileGenerator3: Remove unused variable. ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 5 +++++ Source/cmLocalGenerator.h | 2 ++ Source/cmLocalUnixMakefileGenerator3.cxx | 30 ++++++++++++++++-------------- Source/cmLocalUnixMakefileGenerator3.h | 2 ++ 4 files changed, 25 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:45:28 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:45:28 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-157-g919b116 Message-ID: <20150615134528.27E80AFB1F@public.kitware.com> 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, master has been updated via 919b116f98f20e685999ab8e94415c11228d7d88 (commit) via 493388ce48cb4188068c6f0379bb2afa60c0a41a (commit) via bcf258032fe79c75965722f25ec5f76ff472a19c (commit) via b6667729cb40dec8aff28464152dfa1b7c92decc (commit) from f8bc48413cc360f9dea377761ea833f3244bc74a (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=919b116f98f20e685999ab8e94415c11228d7d88 commit 919b116f98f20e685999ab8e94415c11228d7d88 Merge: f8bc484 493388c Author: Brad King AuthorDate: Mon Jun 15 09:45:27 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:45:27 2015 -0400 Merge topic 'ctest_update-RETURN_VALUE' 493388ce ctest_update: Fix RETURN_VALUE on VCS tool failure (#15610) bcf25803 Tests: Teach CTest.Update* tests to check ctest_update return code b6667729 Tests: Simplify CTest.UpdateGIT QUIET mode test ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestUpdateHandler.cxx | 4 ++-- Tests/CTestUpdateCVS.cmake.in | 19 ++++++++++++++++++ Tests/CTestUpdateCommon.cmake | 32 ++++++++++++++++++++++++++++-- Tests/CTestUpdateGIT.cmake.in | 35 ++++++++++++++++++++++----------- Tests/CTestUpdateHG.cmake.in | 19 ++++++++++++++++++ Tests/CTestUpdateSVN.cmake.in | 19 ++++++++++++++++++ 6 files changed, 112 insertions(+), 16 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:45:30 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:45:30 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-159-gc111370 Message-ID: <20150615134530.83A78AFB0F@public.kitware.com> 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, master has been updated via c1113705d7469e87f1f988ea1c86f0bbf96dd219 (commit) via 698f75971bee336133d21260db069bb139bd3d76 (commit) from 919b116f98f20e685999ab8e94415c11228d7d88 (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=c1113705d7469e87f1f988ea1c86f0bbf96dd219 commit c1113705d7469e87f1f988ea1c86f0bbf96dd219 Merge: 919b116 698f759 Author: Brad King AuthorDate: Mon Jun 15 09:45:28 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:45:28 2015 -0400 Merge topic 'compiler-launcher' 698f7597 Add options to launch the compiler through tools like ccache or distcc ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-properties.7.rst | 1 + Help/manual/cmake-variables.7.rst | 1 + Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst | 13 +++++++++++++ Help/release/dev/compiler-launcher.rst | 8 ++++++++ Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst | 6 ++++++ Source/cmMakefileTargetGenerator.cxx | 19 +++++++++++++++++++ Source/cmNinjaTargetGenerator.cxx | 20 ++++++++++++++++++++ Source/cmTarget.cxx | 2 ++ Tests/RunCMake/CMakeLists.txt | 1 + Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt | 1 + .../CompilerLauncher/C-launch-Build-stdout.txt | 1 + .../C-launch.cmake | 0 Tests/RunCMake/CompilerLauncher/C.cmake | 4 ++++ .../{CMP0057 => CompilerLauncher}/CMakeLists.txt | 0 .../RunCMake/CompilerLauncher/CXX-Build-stdout.txt | 1 + .../CompilerLauncher/CXX-launch-Build-stdout.txt | 1 + .../CXX-launch.cmake | 0 Tests/RunCMake/CompilerLauncher/CXX.cmake | 4 ++++ .../RunCMakeTest.cmake | 17 +++++++++-------- Tests/RunCMake/CompilerLauncher/main.c | 3 +++ .../main.cxx | 0 21 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst create mode 100644 Help/release/dev/compiler-launcher.rst create mode 100644 Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst create mode 100644 Tests/RunCMake/CompilerLauncher/C-Build-stdout.txt create mode 100644 Tests/RunCMake/CompilerLauncher/C-launch-Build-stdout.txt copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/C-launch.cmake (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/C.cmake copy Tests/RunCMake/{CMP0057 => CompilerLauncher}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/CXX-Build-stdout.txt create mode 100644 Tests/RunCMake/CompilerLauncher/CXX-launch-Build-stdout.txt copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/CXX-launch.cmake (100%) create mode 100644 Tests/RunCMake/CompilerLauncher/CXX.cmake copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/RunCMakeTest.cmake (56%) create mode 100644 Tests/RunCMake/CompilerLauncher/main.c copy Tests/RunCMake/{IncludeWhatYouUse => CompilerLauncher}/main.cxx (100%) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:45:32 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:45:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-161-g84672a8 Message-ID: <20150615134532.29C8BAFB3B@public.kitware.com> 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, master has been updated via 84672a84097444e1c280ec40d2a77f905cdb09cb (commit) via b405f01daaeaeda98d448e2f0d71ea685757a5bd (commit) from c1113705d7469e87f1f988ea1c86f0bbf96dd219 (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=84672a84097444e1c280ec40d2a77f905cdb09cb commit 84672a84097444e1c280ec40d2a77f905cdb09cb Merge: c111370 b405f01 Author: Brad King AuthorDate: Mon Jun 15 09:45:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 09:45:31 2015 -0400 Merge topic 'FindCUDA-fix-ccache' b405f01d FindCUDA: Resolve a host compiler symlink only if it is Apple cc -> clang ----------------------------------------------------------------------- Summary of changes: Modules/FindCUDA.cmake | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 09:45:51 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 09:45:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-469-g9a1806a Message-ID: <20150615134551.01FA6AFB0F@public.kitware.com> 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 9a1806a4d0a4c12ddabad06f16719dd34893d2f4 (commit) via 84672a84097444e1c280ec40d2a77f905cdb09cb (commit) via c1113705d7469e87f1f988ea1c86f0bbf96dd219 (commit) via 919b116f98f20e685999ab8e94415c11228d7d88 (commit) via f8bc48413cc360f9dea377761ea833f3244bc74a (commit) via 9cbb9ed4c946b957df1a99910d5b60cdb269bb89 (commit) via 081f6d917253046158ec43916073023d7fa181b4 (commit) via 98133d3d4db5fe4cf5dbb0cd16235e19b753b55e (commit) from c4c6bc8962120c24dd37eadabfb58d3a69f023a5 (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=9a1806a4d0a4c12ddabad06f16719dd34893d2f4 commit 9a1806a4d0a4c12ddabad06f16719dd34893d2f4 Merge: c4c6bc8 84672a8 Author: Brad King AuthorDate: Mon Jun 15 09:45:41 2015 -0400 Commit: Brad King CommitDate: Mon Jun 15 09:45:41 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 10:07:03 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 10:07:03 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-471-g833e052 Message-ID: <20150615140703.EB2B9B0616@public.kitware.com> 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 833e0523e54a9ade85f4f5aae5c331e2b5facd88 (commit) via 83af11d4112443ed732cd240eb0bfdfd27048825 (commit) from 9a1806a4d0a4c12ddabad06f16719dd34893d2f4 (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=833e0523e54a9ade85f4f5aae5c331e2b5facd88 commit 833e0523e54a9ade85f4f5aae5c331e2b5facd88 Merge: 9a1806a 83af11d Author: Brad King AuthorDate: Mon Jun 15 10:07:03 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 10:07:03 2015 -0400 Merge topic 'fix-windows-preprocessor-checks' into next 83af11d4 Fix preprocessor checks WIN32 => _WIN32 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=83af11d4112443ed732cd240eb0bfdfd27048825 commit 83af11d4112443ed732cd240eb0bfdfd27048825 Author: Brad King AuthorDate: Mon Jun 15 09:56:52 2015 -0400 Commit: Brad King CommitDate: Mon Jun 15 09:58:29 2015 -0400 Fix preprocessor checks WIN32 => _WIN32 The latter is predefined by Windows toolchains and is more reliable. Reported-by: Michael St?rmer diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx index e021d0b..41785c2 100644 --- a/Source/cmExecProgramCommand.cxx +++ b/Source/cmExecProgramCommand.cxx @@ -156,7 +156,7 @@ bool cmExecProgramCommand::RunCommand(const char* command, verbose = false; } -#if defined(WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) // if the command does not start with a quote, then // try to find the program, and if the program can not be // found use system to run the command as it must be a built in @@ -219,7 +219,7 @@ bool cmExecProgramCommand::RunCommand(const char* command, return false; } -#if defined(WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) if(dir) { cmsysProcess_SetWorkingDirectory(cp, dir); @@ -305,7 +305,7 @@ bool cmExecProgramCommand::RunCommand(const char* command, } if(!msg.empty()) { -#if defined(WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) // Old Windows process execution printed this info. msg += "\n\nfor command: "; msg += command; diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 7440357..f740020 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -66,7 +66,7 @@ static mode_t mode_setuid = S_ISUID; static mode_t mode_setgid = S_ISGID; #endif -#if defined(WIN32) && defined(CMAKE_ENCODING_UTF8) +#if defined(_WIN32) && defined(CMAKE_ENCODING_UTF8) // libcurl doesn't support file:// urls for unicode filenames on Windows. // Convert string from UTF-8 to ACP if this is a file:// URL. static std::string fix_file_url_windows(const std::string& url) @@ -3156,7 +3156,7 @@ cmFileCommand::HandleDownloadCommand(std::vector const& args) return false; } -#if defined(WIN32) && defined(CMAKE_ENCODING_UTF8) +#if defined(_WIN32) && defined(CMAKE_ENCODING_UTF8) url = fix_file_url_windows(url); #endif @@ -3411,7 +3411,7 @@ cmFileCommand::HandleUploadCommand(std::vector const& args) unsigned long file_size = cmsys::SystemTools::FileLength(filename); -#if defined(WIN32) && defined(CMAKE_ENCODING_UTF8) +#if defined(_WIN32) && defined(CMAKE_ENCODING_UTF8) url = fix_file_url_windows(url); #endif diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index ef32c75..f472ed8 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -609,7 +609,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target) // Ensure we have write permission in case .in was read-only. mode_t perm = 0; -#if defined(WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) mode_t mode_write = S_IWRITE; #else mode_t mode_write = S_IWUSR; ----------------------------------------------------------------------- Summary of changes: Source/cmExecProgramCommand.cxx | 6 +++--- Source/cmFileCommand.cxx | 6 +++--- Source/cmQtAutoGenerators.cxx | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 12:40:22 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 12:40:22 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-473-g3ccef8a Message-ID: <20150615164022.519B629AE@public.kitware.com> 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 3ccef8a62aeebdae33d860f493a1d102cb033b61 (commit) via 6d1cef1aed6d86c0651aecb9cd0fd384db6de90c (commit) from 833e0523e54a9ade85f4f5aae5c331e2b5facd88 (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=3ccef8a62aeebdae33d860f493a1d102cb033b61 commit 3ccef8a62aeebdae33d860f493a1d102cb033b61 Merge: 833e052 6d1cef1 Author: Brad King AuthorDate: Mon Jun 15 12:40:21 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 12:40:21 2015 -0400 Merge topic 'update-prebuilt-openssl' into next 6d1cef1a Utilities/Release: Update to openssl-1.0.2c http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d1cef1aed6d86c0651aecb9cd0fd384db6de90c commit 6d1cef1aed6d86c0651aecb9cd0fd384db6de90c Author: Brad King AuthorDate: Mon Jun 15 12:37:44 2015 -0400 Commit: Brad King CommitDate: Mon Jun 15 12:37:44 2015 -0400 Utilities/Release: Update to openssl-1.0.2c Update the prebuilt binary build configurations for machines where we build our own OpenSSL library to use a newer version. diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index 513f42f..265e0d7 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -11,9 +11,9 @@ CURSES_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libncurses.a CURSES_INCLUDE_PATH:PATH=/home/kitware/ncurses-5.9/include FORM_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libform.a CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1j/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.1j/include -OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1j/lib/libssl.a +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2c/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2c/include +OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2c/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-x86_64 BUILD_QtDialog:BOOL:=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE diff --git a/Utilities/Release/magrathea_release.cmake b/Utilities/Release/magrathea_release.cmake index 1bf75dd..79fa319 100644 --- a/Utilities/Release/magrathea_release.cmake +++ b/Utilities/Release/magrathea_release.cmake @@ -11,9 +11,9 @@ CURSES_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libncurses.a CURSES_INCLUDE_PATH:PATH=/usr/i686-gcc-332s/include/ncurses FORM_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libform.a CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1g-install/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.1g-install/include -OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1g-install/lib/libssl.a +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2c/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2c/include +OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2c/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-i386 BUILD_QtDialog:BOOL:=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE ----------------------------------------------------------------------- Summary of changes: Utilities/Release/linux64_release.cmake | 6 +++--- Utilities/Release/magrathea_release.cmake | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 15 16:12:11 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 15 Jun 2015 16:12:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-476-g52a9b25 Message-ID: <20150615201211.289028EF0@public.kitware.com> 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 52a9b25dc586855b12f9b800c5ec92b25a60b45c (commit) via 5f61ed991b3b6b9f61edc97a10b257d3343c7302 (commit) via e726fc025a3543c0be8a4eb217b0a80f9c16051c (commit) from 3ccef8a62aeebdae33d860f493a1d102cb033b61 (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=52a9b25dc586855b12f9b800c5ec92b25a60b45c commit 52a9b25dc586855b12f9b800c5ec92b25a60b45c Merge: 3ccef8a 5f61ed9 Author: Brad King AuthorDate: Mon Jun 15 16:12:10 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 15 16:12:10 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' into next 5f61ed99 Tests: Move RunCMake.CPackRPM case into RunCMake.CPack_RPM test e726fc02 Tests: Add RunCMake tests for CPack{Deb,RPM} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5f61ed991b3b6b9f61edc97a10b257d3343c7302 commit 5f61ed991b3b6b9f61edc97a10b257d3343c7302 Author: Domen Vrankar AuthorDate: Fri Jun 5 21:12:08 2015 +0200 Commit: Brad King CommitDate: Mon Jun 15 15:09:07 2015 -0400 Tests: Move RunCMake.CPackRPM case into RunCMake.CPack_RPM test Move PARTIALLY_RELOCATABLE_WARNING test to the new common CPack test script structure to have all tests in one place as well as additional benefit of having some more checks done during test execution. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index f4abed2..74bbf38 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -239,10 +239,6 @@ add_RunCMake_test(IfacePaths_INCLUDE_DIRECTORIES TEST_DIR IfacePaths) set(IfacePaths_SOURCES_ARGS -DTEST_PROP=SOURCES) add_RunCMake_test(IfacePaths_SOURCES TEST_DIR IfacePaths) -if(RPMBUILD_EXECUTABLE) - add_RunCMake_test(CPackRPM) -endif() - add_RunCMake_test(COMPILE_LANGUAGE-genex) # Matlab module related tests diff --git a/Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake b/Tests/RunCMake/CPack/PARTIALLY_RELOCATABLE_WARNING.cmake similarity index 100% rename from Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake rename to Tests/RunCMake/CPack/PARTIALLY_RELOCATABLE_WARNING.cmake diff --git a/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake new file mode 100644 index 0000000..4e01f7b --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "PARTIALLY_RELOCATABLE_WARNING-0.1.1-*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/not_relocatable${whitespaces_}/not_relocatable/CMakeLists.txt${whitespaces_}/opt$") diff --git a/Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt b/Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt similarity index 100% rename from Tests/RunCMake/CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt rename to Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index 426734e..308b8cc 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -5,3 +5,4 @@ include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") # args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP run_cpack_test(MINIMAL "RPM;DEB" false) +run_cpack_test(PARTIALLY_RELOCATABLE_WARNING "RPM" false) diff --git a/Tests/RunCMake/CPackRPM/CMakeLists.txt b/Tests/RunCMake/CPackRPM/CMakeLists.txt deleted file mode 100644 index b7d170b..0000000 --- a/Tests/RunCMake/CPackRPM/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.1 FATAL_ERROR) - -project(${RunCMake_TEST} NONE) -include(${RunCMake_TEST}.cmake) - -set(CPACK_GENERATOR "RPM") -include(CPack) diff --git a/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake b/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake deleted file mode 100644 index 1935e32..0000000 --- a/Tests/RunCMake/CPackRPM/RunCMakeTest.cmake +++ /dev/null @@ -1,17 +0,0 @@ -include(RunCMake) - -function(run_cpack_rpm_test TEST_NAME) - set(RunCMake_TEST_NO_CLEAN TRUE) - set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build") - file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") - file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") - execute_process( - COMMAND "${CMAKE_COMMAND}" -D RunCMake_TEST=${TEST_NAME} "${RunCMake_SOURCE_DIR}" - WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" - OUTPUT_QUIET - ERROR_QUIET - ) - run_cmake_command(${TEST_NAME} ${CMAKE_CPACK_COMMAND}) -endfunction() - -run_cpack_rpm_test(CPackRPM_PARTIALLY_RELOCATABLE_WARNING) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e726fc025a3543c0be8a4eb217b0a80f9c16051c commit e726fc025a3543c0be8a4eb217b0a80f9c16051c Author: Domen Vrankar AuthorDate: Fri Jun 5 21:03:26 2015 +0200 Commit: Brad King CommitDate: Mon Jun 15 15:09:07 2015 -0400 Tests: Add RunCMake tests for CPack{Deb,RPM} Add script structure for easier addition of new CPack related tests. diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..f4abed2 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -26,6 +26,39 @@ macro(add_RunCMake_test test) ) endmacro() +function(add_RunCMake_test_group test types) + # create directory for common content + set(TEST_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/${test}/conf") + file(REMOVE_RECURSE "${TEST_CONFIG_DIR}") + file(MAKE_DIRECTORY "${TEST_CONFIG_DIR}") + + foreach(type IN LISTS types) + # generate prerequirements config file in cmake as ctest doesn't have as + # much system information so it is easier to set programs and environment + # values here + unset(${test}_${type}_FOUND_PREREQUIREMENTS) + include("${CMAKE_CURRENT_SOURCE_DIR}/${test}/${type}/Prerequirements.cmake") + get_test_prerequirements("${test}_${type}_FOUND_PREREQUIREMENTS" + "${TEST_CONFIG_DIR}/${type}_config.cmake") + + # only add the test if prerequirements are met + if(${test}_${type}_FOUND_PREREQUIREMENTS) + add_test(NAME RunCMake.${test}_${type} COMMAND ${CMAKE_CMAKE_COMMAND} + -DTEST_TYPE=${type} + -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} + -DRunCMake_GENERATOR=${CMAKE_GENERATOR} + -DRunCMake_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} + -DRunCMake_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} + -DRunCMake_MAKE_PROGRAM=${CMake_TEST_EXPLICIT_MAKE_PROGRAM} + -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${test} + -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${type}/${test} + -Dconfig_file=${TEST_CONFIG_DIR}/${type}_config.cmake + -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" + ) + endif() + endforeach() +endfunction() + if(XCODE_VERSION AND "${XCODE_VERSION}" VERSION_LESS 3) set(GeneratorToolset_ARGS -DXCODE_BELOW_3=1) endif() @@ -233,3 +266,5 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) endif() + +add_RunCMake_test_group(CPack "DEB;RPM") diff --git a/Tests/RunCMake/CPack/CMakeLists.txt b/Tests/RunCMake/CPack/CMakeLists.txt new file mode 100644 index 0000000..7905706 --- /dev/null +++ b/Tests/RunCMake/CPack/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) + +# include test generator specifics +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${GENERATOR_TYPE}/${RunCMake_TEST}-specifics.cmake") + include("${GENERATOR_TYPE}/${RunCMake_TEST}-specifics.cmake") +endif() + +set(CPACK_GENERATOR "${GENERATOR_TYPE}") +include(CPack) diff --git a/Tests/RunCMake/CPack/CPackTestHelpers.cmake b/Tests/RunCMake/CPack/CPackTestHelpers.cmake new file mode 100644 index 0000000..7ea2a24 --- /dev/null +++ b/Tests/RunCMake/CPack/CPackTestHelpers.cmake @@ -0,0 +1,76 @@ +cmake_policy(SET CMP0057 NEW) + +function(run_cpack_test TEST_NAME types build) + if(TEST_TYPE IN_LIST types) + set(RunCMake_TEST_NO_CLEAN TRUE) + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build") + + # TODO this should be executed only once per ctest run (not per generator) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + # execute cmake + execute_process( + COMMAND "${CMAKE_COMMAND}" -DRunCMake_TEST=${TEST_NAME} + -DGENERATOR_TYPE=${TEST_TYPE} "${RunCMake_SOURCE_DIR}" + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + RESULT_VARIABLE res + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + + if(res) + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST_STEP=configure + -Dreturn_code=${res} + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/PreTestError.cmake" + ) + return() + endif() + + # execute optional build step + if(build) + execute_process( + COMMAND "${CMAKE_COMMAND}" --build "${RunCMake_TEST_BINARY_DIR}" + RESULT_VARIABLE res + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + endif() + + if(res) + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST_STEP=build + -Dreturn_code=${res} + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + -P "${RunCMake_SOURCE_DIR}/PreTestError.cmake" + ) + return() + endif() + + # execute cpack + execute_process( + COMMAND "${CMAKE_CPACK_COMMAND}" + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt" + ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt" + ) + + # verify result + run_cmake_command( + ${TEST_TYPE}/${TEST_NAME} + "${CMAKE_COMMAND}" + -DRunCMake_TEST=${TEST_NAME} + -DGENERATOR_TYPE=${TEST_TYPE} + "-Dsrc_dir=${RunCMake_SOURCE_DIR}" + "-Dbin_dir=${RunCMake_TEST_BINARY_DIR}" + "-Dconfig_file=${config_file}" + -P "${RunCMake_SOURCE_DIR}/VerifyResult.cmake" + ) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/DEB/Helpers.cmake b/Tests/RunCMake/CPack/DEB/Helpers.cmake new file mode 100644 index 0000000..4ed3fbd --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/Helpers.cmake @@ -0,0 +1,10 @@ +set(ALL_FILES_GLOB "*.deb") + +function(getPackageContent FILE RESULT_VAR) + execute_process(COMMAND ${DPKG_EXECUTABLE} -c ${FILE} + OUTPUT_VARIABLE package_content_ + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) +endfunction() diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake new file mode 100644 index 0000000..9e4aa7c --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "minimal*.deb") +set(EXPECTED_FILE_CONTENT_1 "^.*/usr/${whitespaces_}.*/usr/foo/${whitespaces_}.*/usr/foo/CMakeLists.txt$") diff --git a/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake new file mode 100644 index 0000000..8821ab9 --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake @@ -0,0 +1 @@ +set(CPACK_PACKAGE_CONTACT "someone") diff --git a/Tests/RunCMake/CPack/DEB/Prerequirements.cmake b/Tests/RunCMake/CPack/DEB/Prerequirements.cmake new file mode 100644 index 0000000..197b99d --- /dev/null +++ b/Tests/RunCMake/CPack/DEB/Prerequirements.cmake @@ -0,0 +1,8 @@ +function(get_test_prerequirements found_var config_file) + find_program(DPKG_EXECUTABLE dpkg) + + if(DPKG_EXECUTABLE) + file(WRITE "${config_file}" "set(DPKG_EXECUTABLE \"${DPKG_EXECUTABLE}\")") + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/MINIMAL.cmake b/Tests/RunCMake/CPack/MINIMAL.cmake new file mode 100644 index 0000000..f29ad2a --- /dev/null +++ b/Tests/RunCMake/CPack/MINIMAL.cmake @@ -0,0 +1,3 @@ +install(FILES CMakeLists.txt DESTINATION foo COMPONENT test) + +set(CPACK_PACKAGE_NAME "minimal") diff --git a/Tests/RunCMake/CPack/PreTestError.cmake b/Tests/RunCMake/CPack/PreTestError.cmake new file mode 100644 index 0000000..f88f2e8 --- /dev/null +++ b/Tests/RunCMake/CPack/PreTestError.cmake @@ -0,0 +1,7 @@ +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) + +message(FATAL_ERROR "Error in pre-test phase '${RunCMake_TEST_STEP}'!\n" + "Return code: '${return_code}'\n" + "Info output: '${output}'\n" + "Error output: '${error}'") diff --git a/Tests/RunCMake/CPack/README.txt b/Tests/RunCMake/CPack/README.txt new file mode 100644 index 0000000..365c737 --- /dev/null +++ b/Tests/RunCMake/CPack/README.txt @@ -0,0 +1,99 @@ +RunCMake.CPack is a test module that is intended for testing of package +generators that can be validated from command line. + +------------- +Adding a test +------------- + +CPack test root directory: 'Tests/RunCMake/CPack'. + +All phases are executed separately for each generator that is bound to a test. +Tests for each generator are subtests of test 'RunCMake.CPack_'. + +Each test must also be added to 'RunCMakeTest.cmake' script located in CPack +test root directory. +Line that adds a test is: +run_cpack_test( "") + + may be one generator e.g. "RPM" or multiple e.g. "RPM;DEB" and +will be run for all listed generators. + +Test consists of +- CMake execution phase +- CPack execution phase +- verification of generated files + +CMake execution phase: +---------------------- + +To add a new CPack test we first create a .cmake script that contains +CMake commands that should be used as a preparation script for generation of +different types of packages. This script is placed into CPack test root +directory even if it will be used for only one of the generators. + +If test will be used for multiple generators but some of them require some +generator speciffic commands then those commands should be added to a separate +file that should be located in '/-specifics.cmake' +in CPack test root directory. + +CPack execution phase: +---------------------- + +Only exececutes CPack for content that was generated during CMake execution +phase. + +Verification of generated files: +-------------------------------- + +Verification of generated files consists of two phases +- mandatory verification phase +- optional verification phase + +Mandatory verification phase checks that expected files were generated and +contain expected files. +Mandatory verification phase also checks that no other unexpected package files +were generated (this is executed even if EXPECTED_FILES_COUNT contains 0 in +order to verify that no files were generated). +CMake script '/-ExpectedFiles.cmake' is required by +this step and must contain +- EXPECTED_FILES_COUNT variable that contains the number of expected files that + will be generated (0 or more) +- EXPECTED_FILE_ that contains globing expression + that uniquely defines expected file name (will be used to find expected file) + and should be present once for each expected file +- EXPECTED_FILE_CONTENT_ that contains regular + expression of files that should be present in generated file and should be + present once for each expected file + +Optional verification phase is generator specific and is optionaly executed. +This phase is executed if '/-VerifyResult.cmake' +script exists. +In case that the script doesn't exist VerifyResult.cmake script automatically +prints out standard output and standard error from CPack execution phase that +is compared with '/-stdout.txt' regular expression +and '/-stderr.txt' regular expresson respectively. + +---------------------- +Adding a new generator +---------------------- + +To add a new generator we must +- add new generator directory (e.g. RPM for RPM generator) to CPack test root + directory that contains 'Helpers.cmake' script. In this script a function + named 'getPackageContent' must exist. This function should list files that + are contained in a package. Function should accept two parameters + + FILE variable that will contain path to file for which the content should be + listed + + RESULT_VAR that will tell the function which variable in parent scope should + contain the result (list of files inside package file) +- add 'Prerequirements.cmake' script to generator directory. In this script a + function named 'get_test_prerequirements' must exist. This function should + set a variable in parent scope (name of the variable is the first parameter) + that tells if prerequirements for test execution are met (certain programs, + OS specifics, ...) and create a config file (name of the variable which + contains file name and path is provided with the second parameter) that + should contain 'set' commands for variables that will later be used in tests + (e.g. location of dpkg program for DEB packages) +- add tests the same way as described above +- add generator to 'add_RunCMake_test_group' function call that is located in + RunCMake CMakeLists.txt file diff --git a/Tests/RunCMake/CPack/RPM/Helpers.cmake b/Tests/RunCMake/CPack/RPM/Helpers.cmake new file mode 100644 index 0000000..98cdad8 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/Helpers.cmake @@ -0,0 +1,10 @@ +set(ALL_FILES_GLOB "*.rpm") + +function(getPackageContent FILE RESULT_VAR) + execute_process(COMMAND ${RPM_EXECUTABLE} -pql ${FILE} + OUTPUT_VARIABLE package_content_ + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE) +endfunction() diff --git a/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake b/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake new file mode 100644 index 0000000..800b78e --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake @@ -0,0 +1,5 @@ +set(whitespaces_ "[\t\n\r ]*") + +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_1 "minimal*.rpm") +set(EXPECTED_FILE_CONTENT_1 "^/usr/foo${whitespaces_}/usr/foo/CMakeLists.txt$") diff --git a/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt b/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt new file mode 100644 index 0000000..7c5fb46 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt @@ -0,0 +1 @@ +^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/MINIMAL-build/_CPack_Packages/.*/RPM/SPECS/minimal.spec$ diff --git a/Tests/RunCMake/CPack/RPM/Prerequirements.cmake b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake new file mode 100644 index 0000000..3416205 --- /dev/null +++ b/Tests/RunCMake/CPack/RPM/Prerequirements.cmake @@ -0,0 +1,16 @@ +function(get_test_prerequirements found_var config_file) + if(CMAKE_CURRENT_BINARY_DIR MATCHES " ") + # rpmbuild can't handle spaces in path + return() + endif() + + find_program(RPM_EXECUTABLE rpm) + find_program(RPMBUILD_EXECUTABLE rpmbuild) + + if(RPM_EXECUTABLE AND RPMBUILD_EXECUTABLE) + file(WRITE "${config_file}" "set(RPM_EXECUTABLE \"${RPM_EXECUTABLE}\")") + file(APPEND "${config_file}" + "\nset(RPMBUILD_EXECUTABLE \"${RPMBUILD_EXECUTABLE}\")") + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake new file mode 100644 index 0000000..426734e --- /dev/null +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +include(RunCMake) +include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake") + +# args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP +run_cpack_test(MINIMAL "RPM;DEB" false) diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake new file mode 100644 index 0000000..809011b --- /dev/null +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -0,0 +1,91 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +include("${config_file}") +include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") + +file(READ "${bin_dir}/test_output.txt" output) +file(READ "${bin_dir}/test_error.txt" error) +file(READ "${config_file}" config_file_content) + +set(output_error_message + "\nCPack output: '${output}'\nCPack error: '${error}';\nconfig file: '${config_file_content}'") + +# check that expected generated files exist and contain expected content +include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-ExpectedFiles.cmake") + +if(NOT EXPECTED_FILES_COUNT EQUAL 0) + foreach(file_no_ RANGE 1 ${EXPECTED_FILES_COUNT}) + file(GLOB foundFile_ RELATIVE "${bin_dir}" "${EXPECTED_FILE_${file_no_}}") + set(foundFiles_ "${foundFiles_};${foundFile_}") + list(LENGTH foundFile_ foundFilesCount_) + + if(foundFilesCount_ EQUAL 1) + unset(PACKAGE_CONTENT) + getPackageContent("${bin_dir}/${foundFile_}" "PACKAGE_CONTENT") + + string(REGEX MATCH "${EXPECTED_FILE_CONTENT_${file_no_}}" + expected_content_list "${PACKAGE_CONTENT}") + + if(NOT expected_content_list) + message(FATAL_ERROR + "Unexpected file content for file No. '${file_no_}'!" + " Content: '${PACKAGE_CONTENT}'" + "${output_error_message}") + endif() + else() + message(FATAL_ERROR + "Found more than one file for file No. '${file_no_}'!" + " Found files count '${foundFilesCount_}'." + " Files: '${foundFile_}'" + "${output_error_message}") + endif() + endforeach() + + # check that there were no extra files generated + foreach(all_files_glob_ IN LISTS ALL_FILES_GLOB) + file(GLOB foundAll_ RELATIVE "${bin_dir}" "${all_files_glob_}") + set(allFoundFiles_ "${allFoundFiles_};${foundAll_}") + endforeach() + + list(LENGTH foundFiles_ foundFilesCount_) + list(LENGTH allFoundFiles_ allFoundFilesCount_) + + if(NOT foundFilesCount_ EQUAL allFoundFilesCount_) + message(FATAL_ERROR + "Found more files than expected! Found files: '${allFoundFiles_}'" + "${output_error_message}") + endif() + + # sanity check that we didn't accidentaly list wrong files with our regular + # expressions + foreach(expected_ IN LISTS allFoundFiles_) + list(FIND foundFiles_ "${expected_}" found_) + + if(found_ EQUAL -1) + message(FATAL_ERROR + "Expected files don't match found files! Found files:" + " '${allFoundFiles_}'" + "${output_error_message}") + endif() + endforeach() +else() + # there should be no generated files present + foreach(missing_file_glob_ IN LISTS ALL_FILES_GLOB) + file(GLOB checkMissingFiles_ RELATIVE "${bin_dir}" "${missing_file_glob_}") + + if(checkMissingFiles_) + message(FATAL_ERROR "Unexpected files found: '${checkMissingFiles_}'" + "${output_error_message}") + endif() + endforeach() +endif() + +# handle additional result verifications +if(EXISTS "${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") + include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") +else() + # by default only print out output and error so that they can be compared by + # regex + message(STATUS "${output}") + message("${error}") +endif() ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Tue Jun 16 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 16 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-162-g157396b Message-ID: <20150616040106.6DCAFB01F5@public.kitware.com> 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, master has been updated via 157396b131c3d7f5c7324972afaf3e185ee726b5 (commit) from 84672a84097444e1c280ec40d2a77f905cdb09cb (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=157396b131c3d7f5c7324972afaf3e185ee726b5 commit 157396b131c3d7f5c7324972afaf3e185ee726b5 Author: Kitware Robot AuthorDate: Tue Jun 16 00:01:05 2015 -0400 Commit: Kitware Robot CommitDate: Tue Jun 16 00:01:05 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 0f15ab1..495551b 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150615) +set(CMake_VERSION_PATCH 20150616) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 08:49:38 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 08:49:38 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-479-g8ec6b90 Message-ID: <20150616124938.D7D54B0238@public.kitware.com> 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 8ec6b905a24f367e12486e39ef47ef5d2a3ba495 (commit) via 502430e39cb6c3c860baf90cd9a0c400503e16af (commit) via da4cddd787500b9da71e7c7877de9a17c6a7d1fc (commit) from 52a9b25dc586855b12f9b800c5ec92b25a60b45c (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=8ec6b905a24f367e12486e39ef47ef5d2a3ba495 commit 8ec6b905a24f367e12486e39ef47ef5d2a3ba495 Merge: 52a9b25 502430e Author: Brad King AuthorDate: Tue Jun 16 08:49:37 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 08:49:37 2015 -0400 Merge topic 'update-kwsys' into next 502430e3 Merge branch 'upstream-kwsys' into update-kwsys da4cddd7 KWSys 2015-06-15 (d217407c) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=502430e39cb6c3c860baf90cd9a0c400503e16af commit 502430e39cb6c3c860baf90cd9a0c400503e16af Merge: 84672a8 da4cddd Author: Brad King AuthorDate: Tue Jun 16 08:49:12 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 08:49:12 2015 -0400 Merge branch 'upstream-kwsys' into update-kwsys http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=da4cddd787500b9da71e7c7877de9a17c6a7d1fc commit da4cddd787500b9da71e7c7877de9a17c6a7d1fc Author: KWSys Robot AuthorDate: Mon Jun 15 09:50:46 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 08:48:52 2015 -0400 KWSys 2015-06-15 (d217407c) Extract upstream KWSys using the following shell commands. $ git archive --prefix=upstream-kwsys/ d217407c | tar x $ git shortlog --no-merges --abbrev=8 --format='%h %s' 8533a79b..d217407c Brad King (1): d217407c SystemTools: Fix preprocessor check WIN32 => _WIN32 diff --git a/SystemTools.cxx b/SystemTools.cxx index c834e34..fed1c9c 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -4408,7 +4408,7 @@ bool SystemTools::FileIsFullPath(const char* in_name, size_t len) bool SystemTools::GetShortPath(const kwsys_stl::string& path, kwsys_stl::string& shortPath) { -#if defined(WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) const int size = int(path.size()) +1; // size of return char *tempPath = new char[size]; // create a buffer DWORD ret; ----------------------------------------------------------------------- Summary of changes: Source/kwsys/SystemTools.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 09:10:00 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 09:10:00 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-482-gdcae581 Message-ID: <20150616131000.B668C29D3@public.kitware.com> 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 dcae581eee3c3ef75f0dd5d8241e8ae898e9db74 (commit) via 15c6a4c9199e245a31d1e4cf45bd35f279bbc44d (commit) via 157396b131c3d7f5c7324972afaf3e185ee726b5 (commit) from 8ec6b905a24f367e12486e39ef47ef5d2a3ba495 (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=dcae581eee3c3ef75f0dd5d8241e8ae898e9db74 commit dcae581eee3c3ef75f0dd5d8241e8ae898e9db74 Merge: 8ec6b90 15c6a4c Author: Brad King AuthorDate: Tue Jun 16 09:10:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 09:10:00 2015 -0400 Merge topic 'quote-doxygen-tools' into next 15c6a4c9 Utilities/Doxygen: Support tools installed in paths with spaces 157396b1 CMake Nightly Date Stamp http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15c6a4c9199e245a31d1e4cf45bd35f279bbc44d commit 15c6a4c9199e245a31d1e4cf45bd35f279bbc44d Author: Michael St?rmer AuthorDate: Tue Jun 16 13:17:55 2015 +0200 Commit: Brad King CommitDate: Tue Jun 16 09:07:41 2015 -0400 Utilities/Doxygen: Support tools installed in paths with spaces Quote paths to tools in generation script. diff --git a/Utilities/Doxygen/doc_makeall.sh.in b/Utilities/Doxygen/doc_makeall.sh.in index ed7b521..fceafdd 100755 --- a/Utilities/Doxygen/doc_makeall.sh.in +++ b/Utilities/Doxygen/doc_makeall.sh.in @@ -130,7 +130,7 @@ export RESULTING_HTML_TARZ_ARCHIVE_FILE="$DOXTEMP/$PROJECT_NAME-html.tar.gz" if test "x at VTK_SOURCE_DIR@" != "x" ; then if test "x$PERL_PROG" != "xNOTFOUND" ; then - $PERL_PROG "$PATH_TO_VTK_DOX_SCRIPTS/doc_contributors.pl" \ + "$PERL_PROG" "$PATH_TO_VTK_DOX_SCRIPTS/doc_contributors.pl" \ --authors "$SOURCE_DIR/Utilities/Doxygen/authors.txt" \ --cachedir "$DOXTEMP/cache" \ --class_group '^(cm[A-Z0-9][A-Za-z0-9]+)\.(?:c|cpp|cxx|h|fl)$' \ @@ -158,7 +158,7 @@ if test "x at VTK_SOURCE_DIR@" != "x" ; then fi if test "x$GNUPLOT_PROG" != "xNOTFOUND" ; then - $GNUPLOT_PROG "$DOXTEMP/contrib/history.plt" + "$GNUPLOT_PROG" "$DOXTEMP/contrib/history.plt" fi fi @@ -168,7 +168,7 @@ fi if test "x$DOXYGEN_PROG" != "xNOTFOUND" ; then if test "x$RM_PROG" != "xNOTFOUND" ; then - $RM_PROG -fr "$OUTPUT_DIRECTORY" + "$RM_PROG" -fr "$OUTPUT_DIRECTORY" fi "$DOXYGEN_PROG" "$DOXYFILE" @@ -182,7 +182,7 @@ fi if test "x at VTK_SOURCE_DIR@" != "x" ; then if test "x$PERL_PROG" != "xNOTFOUND" ; then - $PERL_PROG "$PATH_TO_VTK_DOX_SCRIPTS/doc_rmpath.pl" \ + "$PERL_PROG" "$PATH_TO_VTK_DOX_SCRIPTS/doc_rmpath.pl" \ --verbose \ --to "$INTERMEDIATE_DOX_DIR" \ --html "$OUTPUT_DIRECTORY/html" @@ -198,7 +198,7 @@ if test "x$COMPILE_HTML_HELP" == "xON" ; then if test "x$HHC_PROG" != "xNOTFOUND" ; then "$HHC_PROG" index.hhp if test "x$MV_PROG" != "xNOTFOUND" ; then - $MV_PROG -f index.chm "$RESULTING_HTML_HELP_FILE" + "$MV_PROG" -f index.chm "$RESULTING_HTML_HELP_FILE" fi fi fi @@ -212,15 +212,15 @@ if test "x$CREATE_HTML_TARZ_ARCHIVE" == "xON" ; then cd "$OUTPUT_DIRECTORY" if test "x$TAR_PROG" != "xNOTFOUND" ; then if test "x$RM_PROG" != "xNOTFOUND" ; then - $RM_PROG -f html.tar + "$RM_PROG" -f html.tar fi - $TAR_PROG -cf html.tar html + "$TAR_PROG" -cf html.tar html if test "x$GZIP_PROG" != "xNOTFOUND" ; then if test "x$RM_PROG" != "xNOTFOUND" ; then - $RM_PROG -f html.tar.gz + "$RM_PROG" -f html.tar.gz fi - $GZIP_PROG html.tar - $MV_PROG -f html.tar.gz "$RESULTING_HTML_TARZ_ARCHIVE_FILE" + "$GZIP_PROG" html.tar + "$MV_PROG" -f html.tar.gz "$RESULTING_HTML_TARZ_ARCHIVE_FILE" fi fi fi @@ -230,18 +230,18 @@ fi # Clean-up. if test "x$RM_PROG" != "xNOTFOUND" ; then - $RM_PROG -fr "$INTERMEDIATE_DOX_DIR" + "$RM_PROG" -fr "$INTERMEDIATE_DOX_DIR" if test "x$DOWNLOAD_VTK_TAGFILE" == "xON" ; then if test "x$VTK_TAGFILE" != "x" ; then - $RM_PROG -f "$VTK_TAGFILE_DEST_DIR/$VTK_TAGFILE" + "$RM_PROG" -f "$VTK_TAGFILE_DEST_DIR/$VTK_TAGFILE" fi fi if test "x$COMPILE_HTML_HELP" == "xON" ; then if test "x$RESULTING_HTML_HELP_FILE" != "x" ; then if test "x$ALLOW_ERASE_OUTPUT_DIRECTORY" == "xON" ; then - $RM_PROG -fr "$OUTPUT_DIRECTORY" + "$RM_PROG" -fr "$OUTPUT_DIRECTORY" fi fi fi ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Utilities/Doxygen/doc_makeall.sh.in | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 10:33:59 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 10:33:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-484-gabf480d Message-ID: <20150616143359.8F898B0558@public.kitware.com> 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 abf480d40e0f5b628ba7c91efcfd839eb1f6a5a8 (commit) via 1199ebf1c53f7f591e412617afdaaf4ccd5bc0ff (commit) from dcae581eee3c3ef75f0dd5d8241e8ae898e9db74 (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=abf480d40e0f5b628ba7c91efcfd839eb1f6a5a8 commit abf480d40e0f5b628ba7c91efcfd839eb1f6a5a8 Merge: dcae581 1199ebf Author: Brad King AuthorDate: Tue Jun 16 10:33:59 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 10:33:59 2015 -0400 Merge topic 'GNUInstallDirs-doc-format' into next 1199ebf1 GNUInstallDirs: Improve documentation formatting http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1199ebf1c53f7f591e412617afdaaf4ccd5bc0ff commit 1199ebf1c53f7f591e412617afdaaf4ccd5bc0ff Author: Brad King AuthorDate: Tue Jun 16 10:30:59 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 10:33:48 2015 -0400 GNUInstallDirs: Improve documentation formatting Also consolidate the description of each variable. diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake index c61e7e9..82258d1 100644 --- a/Modules/GNUInstallDirs.cmake +++ b/Modules/GNUInstallDirs.cmake @@ -4,57 +4,62 @@ # # Define GNU standard installation directories # -# Provides install directory variables as defined for GNU software: +# Provides install directory variables as defined by the +# `GNU Coding Standards`_. # -# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html +# .. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html # # Inclusion of this module defines the following variables: # # ``CMAKE_INSTALL_`` -# destination for files of a given type +# +# Destination for files of a given type. This value may be passed to +# the ``DESTINATION`` options of :command:`install` commands for the +# corresponding file type. +# # ``CMAKE_INSTALL_FULL_`` -# corresponding absolute path # -# where is one of: +# The absolute path generated from the corresponding ``CMAKE_INSTALL_`` +# value. If the value is not already an absolute path, an absolute path +# is constructed typically by prepending the value of the +# :variable:`CMAKE_INSTALL_PREFIX` variable. +# +# where ```` is one of: # # ``BINDIR`` -# user executables (bin) +# user executables (``bin``) # ``SBINDIR`` -# system admin executables (sbin) +# system admin executables (``sbin``) # ``LIBEXECDIR`` -# program executables (libexec) +# program executables (``libexec``) # ``SYSCONFDIR`` -# read-only single-machine data (etc) +# read-only single-machine data (``etc``) # ``SHAREDSTATEDIR`` -# modifiable architecture-independent data (com) +# modifiable architecture-independent data (``com``) # ``LOCALSTATEDIR`` -# modifiable single-machine data (var) +# modifiable single-machine data (``var``) # ``LIBDIR`` -# object code libraries (lib or lib64 or lib/ on Debian) +# object code libraries (``lib`` or ``lib64`` +# or ``lib/`` on Debian) # ``INCLUDEDIR`` -# C header files (include) +# C header files (``include``) # ``OLDINCLUDEDIR`` -# C header files for non-gcc (/usr/include) +# C header files for non-gcc (``/usr/include``) # ``DATAROOTDIR`` -# read-only architecture-independent data root (share) +# read-only architecture-independent data root (``share``) # ``DATADIR`` -# read-only architecture-independent data (DATAROOTDIR) +# read-only architecture-independent data (``DATAROOTDIR``) # ``INFODIR`` -# info documentation (DATAROOTDIR/info) +# info documentation (``DATAROOTDIR/info``) # ``LOCALEDIR`` -# locale-dependent data (DATAROOTDIR/locale) +# locale-dependent data (``DATAROOTDIR/locale``) # ``MANDIR`` -# man documentation (DATAROOTDIR/man) +# man documentation (``DATAROOTDIR/man``) # ``DOCDIR`` -# documentation root (DATAROOTDIR/doc/PROJECT_NAME) +# documentation root (``DATAROOTDIR/doc/PROJECT_NAME``) # -# Each CMAKE_INSTALL_ value may be passed to the DESTINATION -# options of install() commands for the corresponding file type. If the -# includer does not define a value the above-shown default will be used -# and the value will appear in the cache for editing by the user. Each -# CMAKE_INSTALL_FULL_ value contains an absolute path constructed -# from the corresponding destination by prepending (if necessary) the -# value of CMAKE_INSTALL_PREFIX. +# If the includer does not define a value the above-shown default will be +# used and the value will appear in the cache for editing by the user. #============================================================================= # Copyright 2011 Nikita Krupen'ko ----------------------------------------------------------------------- Summary of changes: Modules/GNUInstallDirs.cmake | 59 +++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 27 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 10:39:10 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 10:39:10 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-165-gb6b4a1c Message-ID: <20150616143910.0D88223B0@public.kitware.com> 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, master has been updated via b6b4a1cb12c6aed2637961f380247f8234e864ef (commit) via 5f61ed991b3b6b9f61edc97a10b257d3343c7302 (commit) via e726fc025a3543c0be8a4eb217b0a80f9c16051c (commit) from 157396b131c3d7f5c7324972afaf3e185ee726b5 (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=b6b4a1cb12c6aed2637961f380247f8234e864ef commit b6b4a1cb12c6aed2637961f380247f8234e864ef Merge: 157396b 5f61ed9 Author: Brad King AuthorDate: Tue Jun 16 10:39:08 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 10:39:08 2015 -0400 Merge topic 'cpack-rpm-and-deb-runcmake-tests' 5f61ed99 Tests: Move RunCMake.CPackRPM case into RunCMake.CPack_RPM test e726fc02 Tests: Add RunCMake tests for CPack{Deb,RPM} diff --cc Tests/RunCMake/CMakeLists.txt index 2a4108f,74bbf38..4543908 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@@ -232,5 -261,6 +261,7 @@@ endif( if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") add_executable(pseudo_iwyu pseudo_iwyu.c) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$) + add_RunCMake_test(CompilerLauncher) endif() + + add_RunCMake_test_group(CPack "DEB;RPM") ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CMakeLists.txt | 39 +++++++- Tests/RunCMake/CPack/CMakeLists.txt | 12 +++ Tests/RunCMake/CPack/CPackTestHelpers.cmake | 76 +++++++++++++++ Tests/RunCMake/CPack/DEB/Helpers.cmake | 10 ++ .../RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake | 5 + Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake | 1 + Tests/RunCMake/CPack/DEB/Prerequirements.cmake | 8 ++ Tests/RunCMake/CPack/MINIMAL.cmake | 3 + .../PARTIALLY_RELOCATABLE_WARNING.cmake} | 0 Tests/RunCMake/CPack/PreTestError.cmake | 7 ++ Tests/RunCMake/CPack/README.txt | 99 ++++++++++++++++++++ Tests/RunCMake/CPack/RPM/Helpers.cmake | 10 ++ .../RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake | 5 + Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt | 1 + ...RTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake | 5 + .../RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt} | 0 Tests/RunCMake/CPack/RPM/Prerequirements.cmake | 16 ++++ Tests/RunCMake/CPack/RunCMakeTest.cmake | 8 ++ Tests/RunCMake/CPack/VerifyResult.cmake | 91 ++++++++++++++++++ Tests/RunCMake/CPackRPM/CMakeLists.txt | 7 -- Tests/RunCMake/CPackRPM/RunCMakeTest.cmake | 17 ---- 21 files changed, 392 insertions(+), 28 deletions(-) create mode 100644 Tests/RunCMake/CPack/CMakeLists.txt create mode 100644 Tests/RunCMake/CPack/CPackTestHelpers.cmake create mode 100644 Tests/RunCMake/CPack/DEB/Helpers.cmake create mode 100644 Tests/RunCMake/CPack/DEB/MINIMAL-ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/DEB/MINIMAL-specifics.cmake create mode 100644 Tests/RunCMake/CPack/DEB/Prerequirements.cmake create mode 100644 Tests/RunCMake/CPack/MINIMAL.cmake rename Tests/RunCMake/{CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING.cmake => CPack/PARTIALLY_RELOCATABLE_WARNING.cmake} (100%) create mode 100644 Tests/RunCMake/CPack/PreTestError.cmake create mode 100644 Tests/RunCMake/CPack/README.txt create mode 100644 Tests/RunCMake/CPack/RPM/Helpers.cmake create mode 100644 Tests/RunCMake/CPack/RPM/MINIMAL-ExpectedFiles.cmake create mode 100644 Tests/RunCMake/CPack/RPM/MINIMAL-stderr.txt create mode 100644 Tests/RunCMake/CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-ExpectedFiles.cmake rename Tests/RunCMake/{CPackRPM/CPackRPM_PARTIALLY_RELOCATABLE_WARNING-stderr.txt => CPack/RPM/PARTIALLY_RELOCATABLE_WARNING-stderr.txt} (100%) create mode 100644 Tests/RunCMake/CPack/RPM/Prerequirements.cmake create mode 100644 Tests/RunCMake/CPack/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/CPack/VerifyResult.cmake delete mode 100644 Tests/RunCMake/CPackRPM/CMakeLists.txt delete mode 100644 Tests/RunCMake/CPackRPM/RunCMakeTest.cmake hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 10:39:12 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 10:39:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-168-ge5ed8b2 Message-ID: <20150616143912.2A0172668@public.kitware.com> 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, master has been updated via e5ed8b22cb540425f7806257a96b834dcb3fb2c7 (commit) via 90ad087ab9075cc9648df0623502da0caa44e971 (commit) via 7195ec92b2f34ef16ff1382fb00f527a3609f3bf (commit) from b6b4a1cb12c6aed2637961f380247f8234e864ef (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=e5ed8b22cb540425f7806257a96b834dcb3fb2c7 commit e5ed8b22cb540425f7806257a96b834dcb3fb2c7 Merge: b6b4a1c 90ad087 Author: Brad King AuthorDate: Tue Jun 16 10:39:10 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 10:39:10 2015 -0400 Merge topic 'cmake--build-dir' 90ad087a cmake: Fix --build for VS generators (#15609) 7195ec92 Tests: Extend RunCMake.CommandLine to cover --build with no arg ----------------------------------------------------------------------- Summary of changes: Source/cmakemain.cxx | 2 +- Tests/RunCMake/CommandLine/BuildDir.cmake | 1 + .../{Build.cmake => BuildDir/CMakeLists.txt} | 0 Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 17 +++++++++++++++++ .../build-bad-dir-result.txt} | 0 Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt | 2 ++ .../build-no-dir-result.txt} | 0 Tests/RunCMake/CommandLine/build-no-dir-stderr.txt | 1 + 8 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/CommandLine/BuildDir.cmake copy Tests/RunCMake/CommandLine/{Build.cmake => BuildDir/CMakeLists.txt} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/build-bad-dir-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/build-bad-dir-stderr.txt copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLine/build-no-dir-result.txt} (100%) create mode 100644 Tests/RunCMake/CommandLine/build-no-dir-stderr.txt hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 10:39:14 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 10:39:14 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-170-gee223df Message-ID: <20150616143914.0D40926D0@public.kitware.com> 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, master has been updated via ee223dfa9138cfe960d5d7a6dc14b044b7e032bf (commit) via 83af11d4112443ed732cd240eb0bfdfd27048825 (commit) from e5ed8b22cb540425f7806257a96b834dcb3fb2c7 (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=ee223dfa9138cfe960d5d7a6dc14b044b7e032bf commit ee223dfa9138cfe960d5d7a6dc14b044b7e032bf Merge: e5ed8b2 83af11d Author: Brad King AuthorDate: Tue Jun 16 10:39:12 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 10:39:12 2015 -0400 Merge topic 'fix-windows-preprocessor-checks' 83af11d4 Fix preprocessor checks WIN32 => _WIN32 ----------------------------------------------------------------------- Summary of changes: Source/cmExecProgramCommand.cxx | 6 +++--- Source/cmFileCommand.cxx | 6 +++--- Source/cmQtAutoGenerators.cxx | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 10:39:15 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 10:39:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-172-g5e92047 Message-ID: <20150616143915.E07A028CD@public.kitware.com> 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, master has been updated via 5e92047421a60a7287ff00fdc9dec33b1acc94ec (commit) via 6d1cef1aed6d86c0651aecb9cd0fd384db6de90c (commit) from ee223dfa9138cfe960d5d7a6dc14b044b7e032bf (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=5e92047421a60a7287ff00fdc9dec33b1acc94ec commit 5e92047421a60a7287ff00fdc9dec33b1acc94ec Merge: ee223df 6d1cef1 Author: Brad King AuthorDate: Tue Jun 16 10:39:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 16 10:39:14 2015 -0400 Merge topic 'update-prebuilt-openssl' 6d1cef1a Utilities/Release: Update to openssl-1.0.2c ----------------------------------------------------------------------- Summary of changes: Utilities/Release/linux64_release.cmake | 6 +++--- Utilities/Release/magrathea_release.cmake | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 16 10:39:34 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 16 Jun 2015 10:39:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-489-g76e4fea Message-ID: <20150616143934.6607D266D@public.kitware.com> 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 76e4fea2e61b35f16982973c8b25d954907c086a (commit) via 5e92047421a60a7287ff00fdc9dec33b1acc94ec (commit) via ee223dfa9138cfe960d5d7a6dc14b044b7e032bf (commit) via e5ed8b22cb540425f7806257a96b834dcb3fb2c7 (commit) via b6b4a1cb12c6aed2637961f380247f8234e864ef (commit) from abf480d40e0f5b628ba7c91efcfd839eb1f6a5a8 (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=76e4fea2e61b35f16982973c8b25d954907c086a commit 76e4fea2e61b35f16982973c8b25d954907c086a Merge: abf480d 5e92047 Author: Brad King AuthorDate: Tue Jun 16 10:39:27 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 10:39:27 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Wed Jun 17 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 17 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-173-gee5c40a Message-ID: <20150617040106.ECDA4B03D4@public.kitware.com> 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, master has been updated via ee5c40a5f8e7dbbea7b0576c184003a7f86646ba (commit) from 5e92047421a60a7287ff00fdc9dec33b1acc94ec (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=ee5c40a5f8e7dbbea7b0576c184003a7f86646ba commit ee5c40a5f8e7dbbea7b0576c184003a7f86646ba Author: Kitware Robot AuthorDate: Wed Jun 17 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Wed Jun 17 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 495551b..c0f56d2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150616) +set(CMake_VERSION_PATCH 20150617) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 17 08:58:49 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 17 Jun 2015 08:58:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-493-g89eee46 Message-ID: <20150617125849.29B5BB05E6@public.kitware.com> 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 89eee4640c4429da70ddf32689d80e47c07213fb (commit) via 833be0ef44fbdecfe7785693396c69b9ebb9bd80 (commit) via 109cb9a679b71f61829745c86b1d1aed153a049c (commit) via 88b6f02a1624d03aad79a7fff41e0c85b69e5f41 (commit) from 76e4fea2e61b35f16982973c8b25d954907c086a (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=89eee4640c4429da70ddf32689d80e47c07213fb commit 89eee4640c4429da70ddf32689d80e47c07213fb Merge: 76e4fea 833be0e Author: Brad King AuthorDate: Wed Jun 17 08:58:47 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 17 08:58:47 2015 -0400 Merge topic 'GNUInstallDirs-special-prefixes' into next 833be0ef Help: Add notes for topic 'GNUInstallDirs-special-prefixes' 109cb9a6 GNUInstallDirs: Add special cases for certain prefixes 88b6f02a GNUInstallDirs: Add test cases http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=833be0ef44fbdecfe7785693396c69b9ebb9bd80 commit 833be0ef44fbdecfe7785693396c69b9ebb9bd80 Author: Brad King AuthorDate: Tue Jun 16 15:41:33 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 16:10:26 2015 -0400 Help: Add notes for topic 'GNUInstallDirs-special-prefixes' diff --git a/Help/release/dev/GNUInstallDirs-special-prefixes.rst b/Help/release/dev/GNUInstallDirs-special-prefixes.rst new file mode 100644 index 0000000..83c1352 --- /dev/null +++ b/Help/release/dev/GNUInstallDirs-special-prefixes.rst @@ -0,0 +1,9 @@ +GNUInstallDirs-special-prefixes +------------------------------- + +* The :module:`GNUInstallDirs` module learned special default values + for certain installation prefixes according to the `GNU Coding + Standards`_ and the `Filesystem Hierarchy Standard`_. + +.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html +.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=109cb9a679b71f61829745c86b1d1aed153a049c commit 109cb9a679b71f61829745c86b1d1aed153a049c Author: Alex Turbov AuthorDate: Tue Jun 16 01:16:57 2015 +0700 Commit: Brad King CommitDate: Tue Jun 16 16:10:26 2015 -0400 GNUInstallDirs: Add special cases for certain prefixes Teach the module to handle SYSCONFDIR and LOCALSTATEDIR properly if CMAKE_INSTALL_PREFIX is set to `/` or `/usr` -- i.e. as expected by GNU Coding Standard (i.e. set SYSCONFDIR to `/etc` and `LOCALSTATEDIR` to `/var`). Also if CMAKE_INSTALL_PREFIX is set to /opt/pkg, `SYSCONFDIR` must be set to `/etc/opt/pkg` and `LOCALSTATEDIR` to `/var/opt/pkg` according to FHS. diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake index 82258d1..b42084e 100644 --- a/Modules/GNUInstallDirs.cmake +++ b/Modules/GNUInstallDirs.cmake @@ -9,6 +9,9 @@ # # .. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html # +# Result Variables +# ^^^^^^^^^^^^^^^^ +# # Inclusion of this module defines the following variables: # # ``CMAKE_INSTALL_`` @@ -22,7 +25,8 @@ # The absolute path generated from the corresponding ``CMAKE_INSTALL_`` # value. If the value is not already an absolute path, an absolute path # is constructed typically by prepending the value of the -# :variable:`CMAKE_INSTALL_PREFIX` variable. +# :variable:`CMAKE_INSTALL_PREFIX` variable. However, there are some +# `special cases`_ as documented below. # # where ```` is one of: # @@ -60,8 +64,44 @@ # # If the includer does not define a value the above-shown default will be # used and the value will appear in the cache for editing by the user. +# +# Special Cases +# ^^^^^^^^^^^^^ +# +# The following values of :variable:`CMAKE_INSTALL_PREFIX` are special: +# +# ``/`` +# +# For ```` other than the ``SYSCONFDIR`` and ``LOCALSTATEDIR``, +# the value of ``CMAKE_INSTALL_`` is prefixed with ``usr/`` if +# it is not user-specified as an absolute path. For example, the +# ``INCLUDEDIR`` value ``include`` becomes ``usr/include``. +# This is required by the `GNU Coding Standards`_, which state: +# +# When building the complete GNU system, the prefix will be empty +# and ``/usr`` will be a symbolic link to ``/``. +# +# ``/usr`` +# +# For ```` equal to ``SYSCONFDIR`` or ``LOCALSTATEDIR``, the +# ``CMAKE_INSTALL_FULL_`` is computed by prepending just ``/`` +# to the value of ``CMAKE_INSTALL_`` if it is not user-specified +# as an absolute path. For example, the ``SYSCONFDIR`` value ``etc`` +# becomes ``/etc``. This is required by the `GNU Coding Standards`_. +# +# ``/opt/...`` +# +# For ```` equal to ``SYSCONFDIR`` or ``LOCALSTATEDIR``, the +# ``CMAKE_INSTALL_FULL_`` is computed by *appending* the prefix +# to the value of ``CMAKE_INSTALL_`` if it is not user-specified +# as an absolute path. For example, the ``SYSCONFDIR`` value ``etc`` +# becomes ``/etc/opt/...``. This is defined by the +# `Filesystem Hierarchy Standard`_. +# +# .. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html #============================================================================= +# Copyright 2015 Alex Turbov # Copyright 2011 Nikita Krupen'ko # Copyright 2011 Kitware, Inc. # @@ -279,8 +319,35 @@ foreach(dir MANDIR DOCDIR ) - if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) - set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + if(NOT IS_ABSOLUTE "${CMAKE_INSTALL_${dir}}") + # Handle special cases: + # - CMAKE_INSTALL_PREFIX == / + # - CMAKE_INSTALL_PREFIX == /usr + # - CMAKE_INSTALL_PREFIX == /opt/... + if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR") + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}") + else() + if (NOT "${CMAKE_INSTALL_${dir}}" MATCHES "^usr/") + set(CMAKE_INSTALL_${dir} "usr/${CMAKE_INSTALL_${dir}}") + endif() + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}") + endif() + elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR") + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}") + else() + set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + endif() + elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR") + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}${CMAKE_INSTALL_PREFIX}") + else() + set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + endif() + else() + set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + endif() else() set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") endif() diff --git a/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt index f24a103..aee8552 100644 --- a/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt @@ -21,8 +21,8 @@ CMAKE_INSTALL_FULL_INFODIR='/opt/Opt/share/info' CMAKE_INSTALL_FULL_LIBDIR='/opt/Opt/(lib|lib64)' CMAKE_INSTALL_FULL_LIBEXECDIR='/opt/Opt/libexec' CMAKE_INSTALL_FULL_LOCALEDIR='/opt/Opt/share/locale' -CMAKE_INSTALL_FULL_LOCALSTATEDIR='/opt/Opt/var' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var/opt/Opt' CMAKE_INSTALL_FULL_MANDIR='/opt/Opt/share/man' CMAKE_INSTALL_FULL_SBINDIR='/opt/Opt/sbin' CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/opt/Opt/com' -CMAKE_INSTALL_FULL_SYSCONFDIR='/opt/Opt/etc'$ +CMAKE_INSTALL_FULL_SYSCONFDIR='/etc/opt/Opt'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt index 95ca1e5..a95400e 100644 --- a/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt @@ -1,28 +1,28 @@ -^CMAKE_INSTALL_BINDIR='bin' -CMAKE_INSTALL_DATADIR='share' -CMAKE_INSTALL_DATAROOTDIR='share' -CMAKE_INSTALL_DOCDIR='share/doc/Root' -CMAKE_INSTALL_INCLUDEDIR='include' -CMAKE_INSTALL_INFODIR='share/info' -CMAKE_INSTALL_LIBDIR='(lib|lib64)' -CMAKE_INSTALL_LIBEXECDIR='libexec' -CMAKE_INSTALL_LOCALEDIR='share/locale' +^CMAKE_INSTALL_BINDIR='usr/bin' +CMAKE_INSTALL_DATADIR='usr/share' +CMAKE_INSTALL_DATAROOTDIR='usr/share' +CMAKE_INSTALL_DOCDIR='usr/share/doc/Root' +CMAKE_INSTALL_INCLUDEDIR='usr/include' +CMAKE_INSTALL_INFODIR='usr/share/info' +CMAKE_INSTALL_LIBDIR='usr/(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='usr/libexec' +CMAKE_INSTALL_LOCALEDIR='usr/share/locale' CMAKE_INSTALL_LOCALSTATEDIR='var' -CMAKE_INSTALL_MANDIR='share/man' -CMAKE_INSTALL_SBINDIR='sbin' -CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_MANDIR='usr/share/man' +CMAKE_INSTALL_SBINDIR='usr/sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='usr/com' CMAKE_INSTALL_SYSCONFDIR='etc' -CMAKE_INSTALL_FULL_BINDIR='//bin' -CMAKE_INSTALL_FULL_DATADIR='//share' -CMAKE_INSTALL_FULL_DATAROOTDIR='//share' -CMAKE_INSTALL_FULL_DOCDIR='//share/doc/Root' -CMAKE_INSTALL_FULL_INCLUDEDIR='//include' -CMAKE_INSTALL_FULL_INFODIR='//share/info' -CMAKE_INSTALL_FULL_LIBDIR='//(lib|lib64)' -CMAKE_INSTALL_FULL_LIBEXECDIR='//libexec' -CMAKE_INSTALL_FULL_LOCALEDIR='//share/locale' -CMAKE_INSTALL_FULL_LOCALSTATEDIR='//var' -CMAKE_INSTALL_FULL_MANDIR='//share/man' -CMAKE_INSTALL_FULL_SBINDIR='//sbin' -CMAKE_INSTALL_FULL_SHAREDSTATEDIR='//com' -CMAKE_INSTALL_FULL_SYSCONFDIR='//etc'$ +CMAKE_INSTALL_FULL_BINDIR='/usr/bin' +CMAKE_INSTALL_FULL_DATADIR='/usr/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/usr/share' +CMAKE_INSTALL_FULL_DOCDIR='/usr/share/doc/Root' +CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/include' +CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/usr/(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var' +CMAKE_INSTALL_FULL_MANDIR='/usr/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/usr/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt index d857720..e10c4c5 100644 --- a/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt @@ -21,8 +21,8 @@ CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' CMAKE_INSTALL_FULL_LIBDIR='/usr/(lib|lib64|lib/arch)' CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' -CMAKE_INSTALL_FULL_LOCALSTATEDIR='/usr/var' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var' CMAKE_INSTALL_FULL_MANDIR='/usr/share/man' CMAKE_INSTALL_FULL_SBINDIR='/usr/sbin' CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/com' -CMAKE_INSTALL_FULL_SYSCONFDIR='/usr/etc'$ +CMAKE_INSTALL_FULL_SYSCONFDIR='/etc'$ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=88b6f02a1624d03aad79a7fff41e0c85b69e5f41 commit 88b6f02a1624d03aad79a7fff41e0c85b69e5f41 Author: Brad King AuthorDate: Tue Jun 16 14:59:51 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 15:34:33 2015 -0400 GNUInstallDirs: Add test cases Add a RunCMake.GNUInstallDirs test with cases covering various install prefixes. Hard-code the architecture information. Tolerate all platform-specific LIBDIR values. Currently the root prefix is not handled well, but verify the current behavior in the test anyway. This can be addressed with a future change. Inspired-by: Alex Turbov diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..1501792 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -95,6 +95,7 @@ add_RunCMake_test(FPHSA) add_RunCMake_test(GeneratorExpression) add_RunCMake_test(GeneratorPlatform) add_RunCMake_test(GeneratorToolset) +add_RunCMake_test(GNUInstallDirs) add_RunCMake_test(TargetPropertyGeneratorExpressions) add_RunCMake_test(Languages) add_RunCMake_test(ObjectLibrary) diff --git a/Tests/RunCMake/GNUInstallDirs/CMakeLists.txt b/Tests/RunCMake/GNUInstallDirs/CMakeLists.txt new file mode 100644 index 0000000..74b3ff8 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.3) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/Common.cmake b/Tests/RunCMake/GNUInstallDirs/Common.cmake new file mode 100644 index 0000000..812fadf --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Common.cmake @@ -0,0 +1,22 @@ +set(dirs + BINDIR + DATADIR + DATAROOTDIR + DOCDIR + INCLUDEDIR + INFODIR + LIBDIR + LIBEXECDIR + LOCALEDIR + LOCALSTATEDIR + MANDIR + SBINDIR + SHAREDSTATEDIR + SYSCONFDIR + ) +foreach(dir ${dirs}) + message("CMAKE_INSTALL_${dir}='${CMAKE_INSTALL_${dir}}'") +endforeach() +foreach(dir ${dirs}) + message("CMAKE_INSTALL_FULL_${dir}='${CMAKE_INSTALL_FULL_${dir}}'") +endforeach() diff --git a/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt new file mode 100644 index 0000000..f24a103 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/Opt' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='/opt/Opt/bin' +CMAKE_INSTALL_FULL_DATADIR='/opt/Opt/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/opt/Opt/share' +CMAKE_INSTALL_FULL_DOCDIR='/opt/Opt/share/doc/Opt' +CMAKE_INSTALL_FULL_INCLUDEDIR='/opt/Opt/include' +CMAKE_INSTALL_FULL_INFODIR='/opt/Opt/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/opt/Opt/(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/opt/Opt/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/opt/Opt/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/opt/Opt/var' +CMAKE_INSTALL_FULL_MANDIR='/opt/Opt/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/opt/Opt/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/opt/Opt/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/opt/Opt/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Opt.cmake b/Tests/RunCMake/GNUInstallDirs/Opt.cmake new file mode 100644 index 0000000..a475d98 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Opt.cmake @@ -0,0 +1,5 @@ +set(CMAKE_INSTALL_PREFIX "/opt/${PROJECT_NAME}") +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +include(GNUInstallDirs) +include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt new file mode 100644 index 0000000..95ca1e5 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/Root' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='//bin' +CMAKE_INSTALL_FULL_DATADIR='//share' +CMAKE_INSTALL_FULL_DATAROOTDIR='//share' +CMAKE_INSTALL_FULL_DOCDIR='//share/doc/Root' +CMAKE_INSTALL_FULL_INCLUDEDIR='//include' +CMAKE_INSTALL_FULL_INFODIR='//share/info' +CMAKE_INSTALL_FULL_LIBDIR='//(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='//libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='//share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='//var' +CMAKE_INSTALL_FULL_MANDIR='//share/man' +CMAKE_INSTALL_FULL_SBINDIR='//sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='//com' +CMAKE_INSTALL_FULL_SYSCONFDIR='//etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Root.cmake b/Tests/RunCMake/GNUInstallDirs/Root.cmake new file mode 100644 index 0000000..69e2f38 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Root.cmake @@ -0,0 +1,5 @@ +set(CMAKE_INSTALL_PREFIX "/") +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +include(GNUInstallDirs) +include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake b/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake new file mode 100644 index 0000000..f88569a --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake @@ -0,0 +1,6 @@ +include(RunCMake) + +run_cmake(Opt) +run_cmake(Root) +run_cmake(Usr) +run_cmake(UsrLocal) diff --git a/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt new file mode 100644 index 0000000..d857720 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/Usr' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64|lib/arch)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='/usr/bin' +CMAKE_INSTALL_FULL_DATADIR='/usr/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/usr/share' +CMAKE_INSTALL_FULL_DOCDIR='/usr/share/doc/Usr' +CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/include' +CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/usr/(lib|lib64|lib/arch)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/usr/var' +CMAKE_INSTALL_FULL_MANDIR='/usr/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/usr/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/usr/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Usr.cmake b/Tests/RunCMake/GNUInstallDirs/Usr.cmake new file mode 100644 index 0000000..1c2e439 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Usr.cmake @@ -0,0 +1,5 @@ +set(CMAKE_INSTALL_PREFIX "/usr") +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +include(GNUInstallDirs) +include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt b/Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt new file mode 100644 index 0000000..8dcf25b --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/UsrLocal' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='/usr/local/bin' +CMAKE_INSTALL_FULL_DATADIR='/usr/local/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/usr/local/share' +CMAKE_INSTALL_FULL_DOCDIR='/usr/local/share/doc/UsrLocal' +CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/local/include' +CMAKE_INSTALL_FULL_INFODIR='/usr/local/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/usr/local/(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/local/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/usr/local/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/usr/local/var' +CMAKE_INSTALL_FULL_MANDIR='/usr/local/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/usr/local/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/local/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/usr/local/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake b/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake new file mode 100644 index 0000000..d3be2c8 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake @@ -0,0 +1,5 @@ +set(CMAKE_INSTALL_PREFIX "/usr/local") +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +include(GNUInstallDirs) +include(Common.cmake) ----------------------------------------------------------------------- Summary of changes: .../dev/GNUInstallDirs-special-prefixes.rst | 9 +++ Modules/GNUInstallDirs.cmake | 73 +++++++++++++++++++- Tests/RunCMake/CMakeLists.txt | 1 + .../{CMP0055 => GNUInstallDirs}/CMakeLists.txt | 2 +- Tests/RunCMake/GNUInstallDirs/Common.cmake | 22 ++++++ Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Opt.cmake | 5 ++ Tests/RunCMake/GNUInstallDirs/Root-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Root.cmake | 5 ++ Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake | 6 ++ Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Usr.cmake | 5 ++ Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake | 5 ++ 14 files changed, 241 insertions(+), 4 deletions(-) create mode 100644 Help/release/dev/GNUInstallDirs-special-prefixes.rst copy Tests/RunCMake/{CMP0055 => GNUInstallDirs}/CMakeLists.txt (63%) create mode 100644 Tests/RunCMake/GNUInstallDirs/Common.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Opt.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/Root-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Root.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Usr.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 17 08:59:18 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 17 Jun 2015 08:59:18 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-495-g8a99f6d Message-ID: <20150617125918.92299B05FC@public.kitware.com> 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 8a99f6d24c67cdc2ab68c18cbe4da7174f9a8b62 (commit) via f43defaec4e8610e90886a831dcc0a15fdeea1cb (commit) from 89eee4640c4429da70ddf32689d80e47c07213fb (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=8a99f6d24c67cdc2ab68c18cbe4da7174f9a8b62 commit 8a99f6d24c67cdc2ab68c18cbe4da7174f9a8b62 Merge: 89eee46 f43defa Author: Brad King AuthorDate: Wed Jun 17 08:59:17 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 17 08:59:17 2015 -0400 Merge topic 'linux-GNU-Fortran-no-rdynamic' into next f43defae GNU: Drop -rdynamic flag from Fortran http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f43defaec4e8610e90886a831dcc0a15fdeea1cb commit f43defaec4e8610e90886a831dcc0a15fdeea1cb Author: Brad King AuthorDate: Tue Jun 16 13:55:42 2015 -0400 Commit: Brad King CommitDate: Tue Jun 16 13:58:41 2015 -0400 GNU: Drop -rdynamic flag from Fortran The GNU Fortran compiler does not document support for this flag as the GNU C and C++ compilers do. diff --git a/Modules/Platform/Linux-GNU-Fortran.cmake b/Modules/Platform/Linux-GNU-Fortran.cmake index 68e9540..85e1226 100644 --- a/Modules/Platform/Linux-GNU-Fortran.cmake +++ b/Modules/Platform/Linux-GNU-Fortran.cmake @@ -1,2 +1,3 @@ include(Platform/Linux-GNU) __linux_compiler_gnu(Fortran) +set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "") ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Linux-GNU-Fortran.cmake | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From kwrobot at kitware.com Thu Jun 18 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 18 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-174-gf17e89c Message-ID: <20150618040105.CCB32B04E7@public.kitware.com> 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, master has been updated via f17e89c00406d243370f03c8df28efb8e128bbad (commit) from ee5c40a5f8e7dbbea7b0576c184003a7f86646ba (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=f17e89c00406d243370f03c8df28efb8e128bbad commit f17e89c00406d243370f03c8df28efb8e128bbad Author: Kitware Robot AuthorDate: Thu Jun 18 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Thu Jun 18 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index c0f56d2..267e49a 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150617) +set(CMake_VERSION_PATCH 20150618) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:00:27 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:00:27 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-497-g4f7a93d Message-ID: <20150618130027.68300B05D6@public.kitware.com> 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 4f7a93d21a9f9be423a9977aae575b0356246506 (commit) via 763a73ba7bf964ee67a3f89241426ff194bb3cd1 (commit) from 8a99f6d24c67cdc2ab68c18cbe4da7174f9a8b62 (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=4f7a93d21a9f9be423a9977aae575b0356246506 commit 4f7a93d21a9f9be423a9977aae575b0356246506 Merge: 8a99f6d 763a73b Author: Brad King AuthorDate: Thu Jun 18 09:00:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:00:26 2015 -0400 Merge topic 'GNUInstallDirs-special-prefixes' into next 763a73ba fixup! GNUInstallDirs: Add test cases http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=763a73ba7bf964ee67a3f89241426ff194bb3cd1 commit 763a73ba7bf964ee67a3f89241426ff194bb3cd1 Author: Brad King AuthorDate: Thu Jun 18 08:58:50 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 08:58:50 2015 -0400 fixup! GNUInstallDirs: Add test cases diff --git a/Tests/RunCMake/GNUInstallDirs/Common.cmake b/Tests/RunCMake/GNUInstallDirs/Common.cmake index 812fadf..eff2d54 100644 --- a/Tests/RunCMake/GNUInstallDirs/Common.cmake +++ b/Tests/RunCMake/GNUInstallDirs/Common.cmake @@ -1,3 +1,9 @@ +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") + set(CMAKE_SYSTEM_NAME "OpenBSD-Fake") +endif() +include(GNUInstallDirs) set(dirs BINDIR DATADIR diff --git a/Tests/RunCMake/GNUInstallDirs/Opt.cmake b/Tests/RunCMake/GNUInstallDirs/Opt.cmake index a475d98..49eab0e 100644 --- a/Tests/RunCMake/GNUInstallDirs/Opt.cmake +++ b/Tests/RunCMake/GNUInstallDirs/Opt.cmake @@ -1,5 +1,2 @@ set(CMAKE_INSTALL_PREFIX "/opt/${PROJECT_NAME}") -set(CMAKE_SIZEOF_VOID_P 8) -set(CMAKE_LIBRARY_ARCHITECTURE "arch") -include(GNUInstallDirs) include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/Root.cmake b/Tests/RunCMake/GNUInstallDirs/Root.cmake index 69e2f38..f8cc641 100644 --- a/Tests/RunCMake/GNUInstallDirs/Root.cmake +++ b/Tests/RunCMake/GNUInstallDirs/Root.cmake @@ -1,5 +1,2 @@ set(CMAKE_INSTALL_PREFIX "/") -set(CMAKE_SIZEOF_VOID_P 8) -set(CMAKE_LIBRARY_ARCHITECTURE "arch") -include(GNUInstallDirs) include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/Usr.cmake b/Tests/RunCMake/GNUInstallDirs/Usr.cmake index 1c2e439..62b7288 100644 --- a/Tests/RunCMake/GNUInstallDirs/Usr.cmake +++ b/Tests/RunCMake/GNUInstallDirs/Usr.cmake @@ -1,5 +1,2 @@ set(CMAKE_INSTALL_PREFIX "/usr") -set(CMAKE_SIZEOF_VOID_P 8) -set(CMAKE_LIBRARY_ARCHITECTURE "arch") -include(GNUInstallDirs) include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake b/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake index d3be2c8..59d9331 100644 --- a/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake +++ b/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake @@ -1,5 +1,2 @@ set(CMAKE_INSTALL_PREFIX "/usr/local") -set(CMAKE_SIZEOF_VOID_P 8) -set(CMAKE_LIBRARY_ARCHITECTURE "arch") -include(GNUInstallDirs) include(Common.cmake) ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/GNUInstallDirs/Common.cmake | 6 ++++++ Tests/RunCMake/GNUInstallDirs/Opt.cmake | 3 --- Tests/RunCMake/GNUInstallDirs/Root.cmake | 3 --- Tests/RunCMake/GNUInstallDirs/Usr.cmake | 3 --- Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake | 3 --- 5 files changed, 6 insertions(+), 12 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:00:36 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:00:36 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-501-g991e27a Message-ID: <20150618130036.EE535B05DE@public.kitware.com> 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 991e27ab5a6d3b245139ace9fde4a8efaae2f109 (commit) via 8bcec4d22993614e746fdbae54ba66862a85dfe1 (commit) via c8bd37ec685c02736618af83ac894e96fc1e6ab8 (commit) via 5f30f1754ac9a701cbd311bab86250dd237d86fd (commit) from 4f7a93d21a9f9be423a9977aae575b0356246506 (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=991e27ab5a6d3b245139ace9fde4a8efaae2f109 commit 991e27ab5a6d3b245139ace9fde4a8efaae2f109 Merge: 4f7a93d 8bcec4d Author: Brad King AuthorDate: Thu Jun 18 09:00:36 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:00:36 2015 -0400 Merge topic 'GNUInstallDirs-special-prefixes' into next 8bcec4d2 Help: Add notes for topic 'GNUInstallDirs-special-prefixes' c8bd37ec GNUInstallDirs: Add special cases for certain prefixes 5f30f175 GNUInstallDirs: Add test cases http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8bcec4d22993614e746fdbae54ba66862a85dfe1 commit 8bcec4d22993614e746fdbae54ba66862a85dfe1 Author: Brad King AuthorDate: Tue Jun 16 15:41:33 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 08:59:34 2015 -0400 Help: Add notes for topic 'GNUInstallDirs-special-prefixes' diff --git a/Help/release/dev/GNUInstallDirs-special-prefixes.rst b/Help/release/dev/GNUInstallDirs-special-prefixes.rst new file mode 100644 index 0000000..83c1352 --- /dev/null +++ b/Help/release/dev/GNUInstallDirs-special-prefixes.rst @@ -0,0 +1,9 @@ +GNUInstallDirs-special-prefixes +------------------------------- + +* The :module:`GNUInstallDirs` module learned special default values + for certain installation prefixes according to the `GNU Coding + Standards`_ and the `Filesystem Hierarchy Standard`_. + +.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html +.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c8bd37ec685c02736618af83ac894e96fc1e6ab8 commit c8bd37ec685c02736618af83ac894e96fc1e6ab8 Author: Alex Turbov AuthorDate: Tue Jun 16 01:16:57 2015 +0700 Commit: Brad King CommitDate: Thu Jun 18 08:59:34 2015 -0400 GNUInstallDirs: Add special cases for certain prefixes Teach the module to handle SYSCONFDIR and LOCALSTATEDIR properly if CMAKE_INSTALL_PREFIX is set to `/` or `/usr` -- i.e. as expected by GNU Coding Standard (i.e. set SYSCONFDIR to `/etc` and `LOCALSTATEDIR` to `/var`). Also if CMAKE_INSTALL_PREFIX is set to /opt/pkg, `SYSCONFDIR` must be set to `/etc/opt/pkg` and `LOCALSTATEDIR` to `/var/opt/pkg` according to FHS. diff --git a/Modules/GNUInstallDirs.cmake b/Modules/GNUInstallDirs.cmake index 82258d1..b42084e 100644 --- a/Modules/GNUInstallDirs.cmake +++ b/Modules/GNUInstallDirs.cmake @@ -9,6 +9,9 @@ # # .. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html # +# Result Variables +# ^^^^^^^^^^^^^^^^ +# # Inclusion of this module defines the following variables: # # ``CMAKE_INSTALL_`` @@ -22,7 +25,8 @@ # The absolute path generated from the corresponding ``CMAKE_INSTALL_`` # value. If the value is not already an absolute path, an absolute path # is constructed typically by prepending the value of the -# :variable:`CMAKE_INSTALL_PREFIX` variable. +# :variable:`CMAKE_INSTALL_PREFIX` variable. However, there are some +# `special cases`_ as documented below. # # where ```` is one of: # @@ -60,8 +64,44 @@ # # If the includer does not define a value the above-shown default will be # used and the value will appear in the cache for editing by the user. +# +# Special Cases +# ^^^^^^^^^^^^^ +# +# The following values of :variable:`CMAKE_INSTALL_PREFIX` are special: +# +# ``/`` +# +# For ```` other than the ``SYSCONFDIR`` and ``LOCALSTATEDIR``, +# the value of ``CMAKE_INSTALL_`` is prefixed with ``usr/`` if +# it is not user-specified as an absolute path. For example, the +# ``INCLUDEDIR`` value ``include`` becomes ``usr/include``. +# This is required by the `GNU Coding Standards`_, which state: +# +# When building the complete GNU system, the prefix will be empty +# and ``/usr`` will be a symbolic link to ``/``. +# +# ``/usr`` +# +# For ```` equal to ``SYSCONFDIR`` or ``LOCALSTATEDIR``, the +# ``CMAKE_INSTALL_FULL_`` is computed by prepending just ``/`` +# to the value of ``CMAKE_INSTALL_`` if it is not user-specified +# as an absolute path. For example, the ``SYSCONFDIR`` value ``etc`` +# becomes ``/etc``. This is required by the `GNU Coding Standards`_. +# +# ``/opt/...`` +# +# For ```` equal to ``SYSCONFDIR`` or ``LOCALSTATEDIR``, the +# ``CMAKE_INSTALL_FULL_`` is computed by *appending* the prefix +# to the value of ``CMAKE_INSTALL_`` if it is not user-specified +# as an absolute path. For example, the ``SYSCONFDIR`` value ``etc`` +# becomes ``/etc/opt/...``. This is defined by the +# `Filesystem Hierarchy Standard`_. +# +# .. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html #============================================================================= +# Copyright 2015 Alex Turbov # Copyright 2011 Nikita Krupen'ko # Copyright 2011 Kitware, Inc. # @@ -279,8 +319,35 @@ foreach(dir MANDIR DOCDIR ) - if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) - set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + if(NOT IS_ABSOLUTE "${CMAKE_INSTALL_${dir}}") + # Handle special cases: + # - CMAKE_INSTALL_PREFIX == / + # - CMAKE_INSTALL_PREFIX == /usr + # - CMAKE_INSTALL_PREFIX == /opt/... + if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR") + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}") + else() + if (NOT "${CMAKE_INSTALL_${dir}}" MATCHES "^usr/") + set(CMAKE_INSTALL_${dir} "usr/${CMAKE_INSTALL_${dir}}") + endif() + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}") + endif() + elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR") + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}") + else() + set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + endif() + elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR") + set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}${CMAKE_INSTALL_PREFIX}") + else() + set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + endif() + else() + set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") + endif() else() set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") endif() diff --git a/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt index f24a103..aee8552 100644 --- a/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt @@ -21,8 +21,8 @@ CMAKE_INSTALL_FULL_INFODIR='/opt/Opt/share/info' CMAKE_INSTALL_FULL_LIBDIR='/opt/Opt/(lib|lib64)' CMAKE_INSTALL_FULL_LIBEXECDIR='/opt/Opt/libexec' CMAKE_INSTALL_FULL_LOCALEDIR='/opt/Opt/share/locale' -CMAKE_INSTALL_FULL_LOCALSTATEDIR='/opt/Opt/var' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var/opt/Opt' CMAKE_INSTALL_FULL_MANDIR='/opt/Opt/share/man' CMAKE_INSTALL_FULL_SBINDIR='/opt/Opt/sbin' CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/opt/Opt/com' -CMAKE_INSTALL_FULL_SYSCONFDIR='/opt/Opt/etc'$ +CMAKE_INSTALL_FULL_SYSCONFDIR='/etc/opt/Opt'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt index 95ca1e5..a95400e 100644 --- a/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt @@ -1,28 +1,28 @@ -^CMAKE_INSTALL_BINDIR='bin' -CMAKE_INSTALL_DATADIR='share' -CMAKE_INSTALL_DATAROOTDIR='share' -CMAKE_INSTALL_DOCDIR='share/doc/Root' -CMAKE_INSTALL_INCLUDEDIR='include' -CMAKE_INSTALL_INFODIR='share/info' -CMAKE_INSTALL_LIBDIR='(lib|lib64)' -CMAKE_INSTALL_LIBEXECDIR='libexec' -CMAKE_INSTALL_LOCALEDIR='share/locale' +^CMAKE_INSTALL_BINDIR='usr/bin' +CMAKE_INSTALL_DATADIR='usr/share' +CMAKE_INSTALL_DATAROOTDIR='usr/share' +CMAKE_INSTALL_DOCDIR='usr/share/doc/Root' +CMAKE_INSTALL_INCLUDEDIR='usr/include' +CMAKE_INSTALL_INFODIR='usr/share/info' +CMAKE_INSTALL_LIBDIR='usr/(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='usr/libexec' +CMAKE_INSTALL_LOCALEDIR='usr/share/locale' CMAKE_INSTALL_LOCALSTATEDIR='var' -CMAKE_INSTALL_MANDIR='share/man' -CMAKE_INSTALL_SBINDIR='sbin' -CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_MANDIR='usr/share/man' +CMAKE_INSTALL_SBINDIR='usr/sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='usr/com' CMAKE_INSTALL_SYSCONFDIR='etc' -CMAKE_INSTALL_FULL_BINDIR='//bin' -CMAKE_INSTALL_FULL_DATADIR='//share' -CMAKE_INSTALL_FULL_DATAROOTDIR='//share' -CMAKE_INSTALL_FULL_DOCDIR='//share/doc/Root' -CMAKE_INSTALL_FULL_INCLUDEDIR='//include' -CMAKE_INSTALL_FULL_INFODIR='//share/info' -CMAKE_INSTALL_FULL_LIBDIR='//(lib|lib64)' -CMAKE_INSTALL_FULL_LIBEXECDIR='//libexec' -CMAKE_INSTALL_FULL_LOCALEDIR='//share/locale' -CMAKE_INSTALL_FULL_LOCALSTATEDIR='//var' -CMAKE_INSTALL_FULL_MANDIR='//share/man' -CMAKE_INSTALL_FULL_SBINDIR='//sbin' -CMAKE_INSTALL_FULL_SHAREDSTATEDIR='//com' -CMAKE_INSTALL_FULL_SYSCONFDIR='//etc'$ +CMAKE_INSTALL_FULL_BINDIR='/usr/bin' +CMAKE_INSTALL_FULL_DATADIR='/usr/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/usr/share' +CMAKE_INSTALL_FULL_DOCDIR='/usr/share/doc/Root' +CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/include' +CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/usr/(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var' +CMAKE_INSTALL_FULL_MANDIR='/usr/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/usr/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt index d857720..e10c4c5 100644 --- a/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt +++ b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt @@ -21,8 +21,8 @@ CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' CMAKE_INSTALL_FULL_LIBDIR='/usr/(lib|lib64|lib/arch)' CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' -CMAKE_INSTALL_FULL_LOCALSTATEDIR='/usr/var' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/var' CMAKE_INSTALL_FULL_MANDIR='/usr/share/man' CMAKE_INSTALL_FULL_SBINDIR='/usr/sbin' CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/com' -CMAKE_INSTALL_FULL_SYSCONFDIR='/usr/etc'$ +CMAKE_INSTALL_FULL_SYSCONFDIR='/etc'$ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5f30f1754ac9a701cbd311bab86250dd237d86fd commit 5f30f1754ac9a701cbd311bab86250dd237d86fd Author: Brad King AuthorDate: Tue Jun 16 14:59:51 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 08:59:24 2015 -0400 GNUInstallDirs: Add test cases Add a RunCMake.GNUInstallDirs test with cases covering various install prefixes. Hard-code the architecture information. Tolerate all platform-specific LIBDIR values. Currently the root prefix is not handled well, but verify the current behavior in the test anyway. This can be addressed with a future change. Inspired-by: Alex Turbov diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 592b5e4..1501792 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -95,6 +95,7 @@ add_RunCMake_test(FPHSA) add_RunCMake_test(GeneratorExpression) add_RunCMake_test(GeneratorPlatform) add_RunCMake_test(GeneratorToolset) +add_RunCMake_test(GNUInstallDirs) add_RunCMake_test(TargetPropertyGeneratorExpressions) add_RunCMake_test(Languages) add_RunCMake_test(ObjectLibrary) diff --git a/Tests/RunCMake/GNUInstallDirs/CMakeLists.txt b/Tests/RunCMake/GNUInstallDirs/CMakeLists.txt new file mode 100644 index 0000000..74b3ff8 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.3) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/Common.cmake b/Tests/RunCMake/GNUInstallDirs/Common.cmake new file mode 100644 index 0000000..eff2d54 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Common.cmake @@ -0,0 +1,28 @@ +set(CMAKE_SIZEOF_VOID_P 8) +set(CMAKE_LIBRARY_ARCHITECTURE "arch") +if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") + set(CMAKE_SYSTEM_NAME "OpenBSD-Fake") +endif() +include(GNUInstallDirs) +set(dirs + BINDIR + DATADIR + DATAROOTDIR + DOCDIR + INCLUDEDIR + INFODIR + LIBDIR + LIBEXECDIR + LOCALEDIR + LOCALSTATEDIR + MANDIR + SBINDIR + SHAREDSTATEDIR + SYSCONFDIR + ) +foreach(dir ${dirs}) + message("CMAKE_INSTALL_${dir}='${CMAKE_INSTALL_${dir}}'") +endforeach() +foreach(dir ${dirs}) + message("CMAKE_INSTALL_FULL_${dir}='${CMAKE_INSTALL_FULL_${dir}}'") +endforeach() diff --git a/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt new file mode 100644 index 0000000..f24a103 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/Opt' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='/opt/Opt/bin' +CMAKE_INSTALL_FULL_DATADIR='/opt/Opt/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/opt/Opt/share' +CMAKE_INSTALL_FULL_DOCDIR='/opt/Opt/share/doc/Opt' +CMAKE_INSTALL_FULL_INCLUDEDIR='/opt/Opt/include' +CMAKE_INSTALL_FULL_INFODIR='/opt/Opt/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/opt/Opt/(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/opt/Opt/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/opt/Opt/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/opt/Opt/var' +CMAKE_INSTALL_FULL_MANDIR='/opt/Opt/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/opt/Opt/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/opt/Opt/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/opt/Opt/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Opt.cmake b/Tests/RunCMake/GNUInstallDirs/Opt.cmake new file mode 100644 index 0000000..49eab0e --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Opt.cmake @@ -0,0 +1,2 @@ +set(CMAKE_INSTALL_PREFIX "/opt/${PROJECT_NAME}") +include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt new file mode 100644 index 0000000..95ca1e5 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Root-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/Root' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='//bin' +CMAKE_INSTALL_FULL_DATADIR='//share' +CMAKE_INSTALL_FULL_DATAROOTDIR='//share' +CMAKE_INSTALL_FULL_DOCDIR='//share/doc/Root' +CMAKE_INSTALL_FULL_INCLUDEDIR='//include' +CMAKE_INSTALL_FULL_INFODIR='//share/info' +CMAKE_INSTALL_FULL_LIBDIR='//(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='//libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='//share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='//var' +CMAKE_INSTALL_FULL_MANDIR='//share/man' +CMAKE_INSTALL_FULL_SBINDIR='//sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='//com' +CMAKE_INSTALL_FULL_SYSCONFDIR='//etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Root.cmake b/Tests/RunCMake/GNUInstallDirs/Root.cmake new file mode 100644 index 0000000..f8cc641 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Root.cmake @@ -0,0 +1,2 @@ +set(CMAKE_INSTALL_PREFIX "/") +include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake b/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake new file mode 100644 index 0000000..f88569a --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake @@ -0,0 +1,6 @@ +include(RunCMake) + +run_cmake(Opt) +run_cmake(Root) +run_cmake(Usr) +run_cmake(UsrLocal) diff --git a/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt new file mode 100644 index 0000000..d857720 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/Usr' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64|lib/arch)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='/usr/bin' +CMAKE_INSTALL_FULL_DATADIR='/usr/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/usr/share' +CMAKE_INSTALL_FULL_DOCDIR='/usr/share/doc/Usr' +CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/include' +CMAKE_INSTALL_FULL_INFODIR='/usr/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/usr/(lib|lib64|lib/arch)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/usr/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/usr/var' +CMAKE_INSTALL_FULL_MANDIR='/usr/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/usr/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/usr/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/Usr.cmake b/Tests/RunCMake/GNUInstallDirs/Usr.cmake new file mode 100644 index 0000000..62b7288 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/Usr.cmake @@ -0,0 +1,2 @@ +set(CMAKE_INSTALL_PREFIX "/usr") +include(Common.cmake) diff --git a/Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt b/Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt new file mode 100644 index 0000000..8dcf25b --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt @@ -0,0 +1,28 @@ +^CMAKE_INSTALL_BINDIR='bin' +CMAKE_INSTALL_DATADIR='share' +CMAKE_INSTALL_DATAROOTDIR='share' +CMAKE_INSTALL_DOCDIR='share/doc/UsrLocal' +CMAKE_INSTALL_INCLUDEDIR='include' +CMAKE_INSTALL_INFODIR='share/info' +CMAKE_INSTALL_LIBDIR='(lib|lib64)' +CMAKE_INSTALL_LIBEXECDIR='libexec' +CMAKE_INSTALL_LOCALEDIR='share/locale' +CMAKE_INSTALL_LOCALSTATEDIR='var' +CMAKE_INSTALL_MANDIR='share/man' +CMAKE_INSTALL_SBINDIR='sbin' +CMAKE_INSTALL_SHAREDSTATEDIR='com' +CMAKE_INSTALL_SYSCONFDIR='etc' +CMAKE_INSTALL_FULL_BINDIR='/usr/local/bin' +CMAKE_INSTALL_FULL_DATADIR='/usr/local/share' +CMAKE_INSTALL_FULL_DATAROOTDIR='/usr/local/share' +CMAKE_INSTALL_FULL_DOCDIR='/usr/local/share/doc/UsrLocal' +CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/local/include' +CMAKE_INSTALL_FULL_INFODIR='/usr/local/share/info' +CMAKE_INSTALL_FULL_LIBDIR='/usr/local/(lib|lib64)' +CMAKE_INSTALL_FULL_LIBEXECDIR='/usr/local/libexec' +CMAKE_INSTALL_FULL_LOCALEDIR='/usr/local/share/locale' +CMAKE_INSTALL_FULL_LOCALSTATEDIR='/usr/local/var' +CMAKE_INSTALL_FULL_MANDIR='/usr/local/share/man' +CMAKE_INSTALL_FULL_SBINDIR='/usr/local/sbin' +CMAKE_INSTALL_FULL_SHAREDSTATEDIR='/usr/local/com' +CMAKE_INSTALL_FULL_SYSCONFDIR='/usr/local/etc'$ diff --git a/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake b/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake new file mode 100644 index 0000000..59d9331 --- /dev/null +++ b/Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake @@ -0,0 +1,2 @@ +set(CMAKE_INSTALL_PREFIX "/usr/local") +include(Common.cmake) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:05:14 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:05:14 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-176-gab00ff8 Message-ID: <20150618130514.E63C3B0650@public.kitware.com> 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, master has been updated via ab00ff8d7a748779d880dba0b0daff145d745a7b (commit) via 1199ebf1c53f7f591e412617afdaaf4ccd5bc0ff (commit) from f17e89c00406d243370f03c8df28efb8e128bbad (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=ab00ff8d7a748779d880dba0b0daff145d745a7b commit ab00ff8d7a748779d880dba0b0daff145d745a7b Merge: f17e89c 1199ebf Author: Brad King AuthorDate: Thu Jun 18 09:05:13 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:05:13 2015 -0400 Merge topic 'GNUInstallDirs-doc-format' 1199ebf1 GNUInstallDirs: Improve documentation formatting ----------------------------------------------------------------------- Summary of changes: Modules/GNUInstallDirs.cmake | 59 +++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 27 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:05:16 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:05:16 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-178-g940ea9f Message-ID: <20150618130518.701B3B04E8@public.kitware.com> 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, master has been updated via 940ea9ff4af0429396fc55d0f5643b848ff972af (commit) via 15c6a4c9199e245a31d1e4cf45bd35f279bbc44d (commit) from ab00ff8d7a748779d880dba0b0daff145d745a7b (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=940ea9ff4af0429396fc55d0f5643b848ff972af commit 940ea9ff4af0429396fc55d0f5643b848ff972af Merge: ab00ff8 15c6a4c Author: Brad King AuthorDate: Thu Jun 18 09:05:15 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:05:15 2015 -0400 Merge topic 'quote-doxygen-tools' 15c6a4c9 Utilities/Doxygen: Support tools installed in paths with spaces ----------------------------------------------------------------------- Summary of changes: Utilities/Doxygen/doc_makeall.sh.in | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:05:20 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:05:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-181-g9223c6c Message-ID: <20150618130520.4E08CB0693@public.kitware.com> 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, master has been updated via 9223c6cb12bba4444ea05d420e9eb562f861b242 (commit) via 502430e39cb6c3c860baf90cd9a0c400503e16af (commit) via da4cddd787500b9da71e7c7877de9a17c6a7d1fc (commit) from 940ea9ff4af0429396fc55d0f5643b848ff972af (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=9223c6cb12bba4444ea05d420e9eb562f861b242 commit 9223c6cb12bba4444ea05d420e9eb562f861b242 Merge: 940ea9f 502430e Author: Brad King AuthorDate: Thu Jun 18 09:05:19 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:05:19 2015 -0400 Merge topic 'update-kwsys' 502430e3 Merge branch 'upstream-kwsys' into update-kwsys da4cddd7 KWSys 2015-06-15 (d217407c) ----------------------------------------------------------------------- Summary of changes: Source/kwsys/SystemTools.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:05:22 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:05:22 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-183-ge2e6cb7 Message-ID: <20150618130522.079EEB0696@public.kitware.com> 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, master has been updated via e2e6cb7348dfffddb5d93f679fc8c69fffd3d1dc (commit) via f43defaec4e8610e90886a831dcc0a15fdeea1cb (commit) from 9223c6cb12bba4444ea05d420e9eb562f861b242 (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=e2e6cb7348dfffddb5d93f679fc8c69fffd3d1dc commit e2e6cb7348dfffddb5d93f679fc8c69fffd3d1dc Merge: 9223c6c f43defa Author: Brad King AuthorDate: Thu Jun 18 09:05:20 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:05:20 2015 -0400 Merge topic 'linux-GNU-Fortran-no-rdynamic' f43defae GNU: Drop -rdynamic flag from Fortran ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Linux-GNU-Fortran.cmake | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:05:44 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:05:44 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-508-g7d2c58c Message-ID: <20150618130544.55E54B0653@public.kitware.com> 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 7d2c58c859f3f2a0ef0291a39b6496ae3655fd53 (commit) via e2e6cb7348dfffddb5d93f679fc8c69fffd3d1dc (commit) via 9223c6cb12bba4444ea05d420e9eb562f861b242 (commit) via 940ea9ff4af0429396fc55d0f5643b848ff972af (commit) via ab00ff8d7a748779d880dba0b0daff145d745a7b (commit) via f17e89c00406d243370f03c8df28efb8e128bbad (commit) via ee5c40a5f8e7dbbea7b0576c184003a7f86646ba (commit) from 991e27ab5a6d3b245139ace9fde4a8efaae2f109 (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=7d2c58c859f3f2a0ef0291a39b6496ae3655fd53 commit 7d2c58c859f3f2a0ef0291a39b6496ae3655fd53 Merge: 991e27a e2e6cb7 Author: Brad King AuthorDate: Thu Jun 18 09:05:32 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 09:05:32 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 09:17:51 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 09:17:51 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-510-g82c1f16 Message-ID: <20150618131751.89857AFAB6@public.kitware.com> 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 82c1f16f8c74f6cba2cf2cc2e98062559a0c072e (commit) via 1c9db7db2c60e23ed3e6b107956656221e965c21 (commit) from 7d2c58c859f3f2a0ef0291a39b6496ae3655fd53 (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=82c1f16f8c74f6cba2cf2cc2e98062559a0c072e commit 82c1f16f8c74f6cba2cf2cc2e98062559a0c072e Merge: 7d2c58c 1c9db7d Author: Brad King AuthorDate: Thu Jun 18 09:17:50 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 09:17:50 2015 -0400 Merge topic 'doc-CMAKE_GENERATOR_PLATFORM-typo' into next 1c9db7db Help: Fix typo in CMAKE_GENERATOR_PLATFORM docs (#15621) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1c9db7db2c60e23ed3e6b107956656221e965c21 commit 1c9db7db2c60e23ed3e6b107956656221e965c21 Author: Brad King AuthorDate: Thu Jun 18 09:16:26 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 09:16:43 2015 -0400 Help: Fix typo in CMAKE_GENERATOR_PLATFORM docs (#15621) s/toolset/platform/ diff --git a/Help/variable/CMAKE_GENERATOR_PLATFORM.rst b/Help/variable/CMAKE_GENERATOR_PLATFORM.rst index 5809b6a..5559eb7 100644 --- a/Help/variable/CMAKE_GENERATOR_PLATFORM.rst +++ b/Help/variable/CMAKE_GENERATOR_PLATFORM.rst @@ -5,7 +5,7 @@ Generator-specific target platform name specified by user. Some CMake generators support a target platform name to be given to the native build system to choose a compiler toolchain. -If the user specifies a toolset name (e.g. via the cmake -A option) +If the user specifies a platform name (e.g. via the cmake -A option) the value will be available in this variable. The value of this variable should never be modified by project code. ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_GENERATOR_PLATFORM.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 12:01:34 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 12:01:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-515-g83b997d Message-ID: <20150618160134.C1D70B055A@public.kitware.com> 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 83b997d41a65361e5bd56c601b2896146606cc96 (commit) via 7cd539b163a58f8b594e2318bdc7e7d7b1ba6577 (commit) via 0d204c1c1dabba2dc87957e9ce6bcd32aab70dae (commit) via 5f0dad75a9dd9bb9e7b2f917806588563c3ed39e (commit) via c65a060e1b19a463312f9003bc4d7793db9630e5 (commit) from 82c1f16f8c74f6cba2cf2cc2e98062559a0c072e (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=83b997d41a65361e5bd56c601b2896146606cc96 commit 83b997d41a65361e5bd56c601b2896146606cc96 Merge: 82c1f16 7cd539b Author: Brad King AuthorDate: Thu Jun 18 12:01:33 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 12:01:33 2015 -0400 Merge topic 'ConcurrentFortran-compiler-id' into next 7cd539b1 Add support for Concurrent Fortran 77 Compiler 0d204c1c CMakeDetermineCompilerId: Try matching compiler output to detect id 5f0dad75 CMakeDetermineCompilerId: Refactor id build/check loop logic c65a060e CMakeDetermineCompilerId: Optionally try some flags before no flags http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7cd539b163a58f8b594e2318bdc7e7d7b1ba6577 commit 7cd539b163a58f8b594e2318bdc7e7d7b1ba6577 Author: Brad King AuthorDate: Thu Jun 18 11:33:45 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 11:36:12 2015 -0400 Add support for Concurrent Fortran 77 Compiler The Concurrent Fortran compiler (ccur.com) is available on Linux and can be used much like the GNU Fortran compiler. Currently it has no preprocessor symbols to identify it so we need to detect it by matching compiler output. Suggested-by: Anthony Ette diff --git a/Help/variable/CMAKE_LANG_COMPILER_ID.rst b/Help/variable/CMAKE_LANG_COMPILER_ID.rst index f554f4e..1c3b134 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_ID.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_ID.rst @@ -11,6 +11,7 @@ include: Absoft = Absoft Fortran (absoft.com) ADSP = Analog VisualDSP++ (analog.com) AppleClang = Apple Clang (apple.com) + CCur = Concurrent Fortran (ccur.com) Clang = LLVM Clang (clang.llvm.org) Cray = Cray Compiler (cray.com) Embarcadero, Borland = Embarcadero (embarcadero.com) diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index ca68900..52ec25a 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -98,7 +98,10 @@ else() # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce # a valid identification executable. - set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS_FIRST) + set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS_FIRST + # Get verbose output to help distinguish compilers. + "-v" + ) set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS # Try compiling to an object file only. "-c" @@ -112,6 +115,10 @@ endif() if(NOT CMAKE_Fortran_COMPILER_ID_RUN) set(CMAKE_Fortran_COMPILER_ID_RUN 1) + # Table of per-vendor compiler output regular expressions. + list(APPEND CMAKE_Fortran_COMPILER_ID_MATCH_VENDORS CCur) + set(CMAKE_Fortran_COMPILER_ID_MATCH_VENDOR_REGEX_CCur "Concurrent Fortran [0-9]+ Compiler") + # Table of per-vendor compiler id flags with expected output. list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS Compaq) set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_Compaq "-what") diff --git a/Modules/Compiler/CCur-Fortran.cmake b/Modules/Compiler/CCur-Fortran.cmake new file mode 100644 index 0000000..6ec06ae --- /dev/null +++ b/Modules/Compiler/CCur-Fortran.cmake @@ -0,0 +1 @@ +include(Compiler/GNU-Fortran) diff --git a/Modules/Platform/Linux-CCur-Fortran.cmake b/Modules/Platform/Linux-CCur-Fortran.cmake new file mode 100644 index 0000000..ceecc2f --- /dev/null +++ b/Modules/Platform/Linux-CCur-Fortran.cmake @@ -0,0 +1 @@ +include(Platform/Linux-GNU-Fortran) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0d204c1c1dabba2dc87957e9ce6bcd32aab70dae commit 0d204c1c1dabba2dc87957e9ce6bcd32aab70dae Author: Brad King AuthorDate: Thu Jun 18 11:28:36 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 11:28:36 2015 -0400 CMakeDetermineCompilerId: Try matching compiler output to detect id Some compilers can only be distinguished by their compilation output rather than preprocessor symbols or special flags. Add infrastructure to determine the compiler id by matching output. diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 3c715e9..68f2194 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -38,6 +38,10 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) "" ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS}) CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${flags}" "${src}") + CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR("${lang}" "${COMPILER_${lang}_PRODUCED_OUTPUT}") + if(CMAKE_${lang}_COMPILER_ID) + break() + endif() foreach(file ${COMPILER_${lang}_PRODUCED_FILES}) CMAKE_DETERMINE_COMPILER_ID_CHECK("${lang}" "${CMAKE_${lang}_COMPILER_ID_DIR}/${file}" "${src}") endforeach() @@ -358,6 +362,7 @@ ${CMAKE_${lang}_COMPILER_ID_OUTPUT} # No output files should be inspected. set(COMPILER_${lang}_PRODUCED_FILES) + set(COMPILER_${lang}_PRODUCED_OUTPUT) else() # Compilation succeeded. file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log @@ -398,10 +403,24 @@ ${CMAKE_${lang}_COMPILER_ID_OUTPUT} "${src}\" did not produce an executable in \"" "${CMAKE_${lang}_COMPILER_ID_DIR}\".\n\n") endif() + + set(COMPILER_${lang}_PRODUCED_OUTPUT "${CMAKE_${lang}_COMPILER_ID_OUTPUT}") endif() # Return the files produced by the compilation. set(COMPILER_${lang}_PRODUCED_FILES "${COMPILER_${lang}_PRODUCED_FILES}" PARENT_SCOPE) + set(COMPILER_${lang}_PRODUCED_OUTPUT "${COMPILER_${lang}_PRODUCED_OUTPUT}" PARENT_SCOPE) +endfunction() + +#----------------------------------------------------------------------------- +# Function to extract the compiler id from compiler output. +function(CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR lang output) + foreach(vendor ${CMAKE_${lang}_COMPILER_ID_MATCH_VENDORS}) + if(output MATCHES "${CMAKE_${lang}_COMPILER_ID_MATCH_VENDOR_REGEX_${vendor}}") + set(CMAKE_${lang}_COMPILER_ID "${vendor}") + endif() + endforeach() + set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE) endfunction() #----------------------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5f0dad75a9dd9bb9e7b2f917806588563c3ed39e commit 5f0dad75a9dd9bb9e7b2f917806588563c3ed39e Author: Brad King AuthorDate: Thu Jun 18 11:24:54 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 11:27:00 2015 -0400 CMakeDetermineCompilerId: Refactor id build/check loop logic Callers of CMAKE_DETERMINE_COMPILER_ID initialize the CMAKE_${lang}_COMPILER_ID to unset so we can check it at the end of each loop iteration instead of the beginning. This approach allows us to break out of the loop as soon as we succeed. It will also allow checks to be added in more places within the loop later. diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 7ddf33f..3c715e9 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -37,11 +37,12 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) foreach(flags ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST} "" ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS}) - if(NOT CMAKE_${lang}_COMPILER_ID) - CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${flags}" "${src}") - foreach(file ${COMPILER_${lang}_PRODUCED_FILES}) - CMAKE_DETERMINE_COMPILER_ID_CHECK("${lang}" "${CMAKE_${lang}_COMPILER_ID_DIR}/${file}" "${src}") - endforeach() + CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${flags}" "${src}") + foreach(file ${COMPILER_${lang}_PRODUCED_FILES}) + CMAKE_DETERMINE_COMPILER_ID_CHECK("${lang}" "${CMAKE_${lang}_COMPILER_ID_DIR}/${file}" "${src}") + endforeach() + if(CMAKE_${lang}_COMPILER_ID) + break() endif() endforeach() http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c65a060e1b19a463312f9003bc4d7793db9630e5 commit c65a060e1b19a463312f9003bc4d7793db9630e5 Author: Brad King AuthorDate: Thu Jun 18 10:57:46 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 10:59:35 2015 -0400 CMakeDetermineCompilerId: Optionally try some flags before no flags Teach CMAKE_DETERMINE_COMPILER_ID to optionally try detecting the compiler id using some given flags before trying to detect it with no special flags. This will be useful for Fortran detection to distinguish some compilers that use the preprocessors of others but have no macro of their own by getting verbose output. diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 937aa8c..40d4ce6 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -80,6 +80,7 @@ else() # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce # a valid identification file. + set(CMAKE_C_COMPILER_ID_TEST_FLAGS_FIRST) set(CMAKE_C_COMPILER_ID_TEST_FLAGS # Try compiling to an object file only. "-c" diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index 893c454..a673525 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -78,6 +78,7 @@ else() # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce # a valid identification file. + set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS_FIRST) set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS # Try compiling to an object file only. "-c" diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 403ac08..7ddf33f 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -34,7 +34,9 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) # Try building with no extra flags and then try each set # of helper flags. Stop when the compiler is identified. - foreach(flags "" ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS}) + foreach(flags ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST} + "" + ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS}) if(NOT CMAKE_${lang}_COMPILER_ID) CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${flags}" "${src}") foreach(file ${COMPILER_${lang}_PRODUCED_FILES}) diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index 3a27127..ca68900 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -98,6 +98,7 @@ else() # Each entry in this list is a set of extra flags to try # adding to the compile line to see if it helps produce # a valid identification executable. + set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS_FIRST) set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS # Try compiling to an object file only. "-c" ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_LANG_COMPILER_ID.rst | 1 + Modules/CMakeDetermineCCompiler.cmake | 1 + Modules/CMakeDetermineCXXCompiler.cmake | 1 + Modules/CMakeDetermineCompilerId.cmake | 34 ++++++++++++++++++++++----- Modules/CMakeDetermineFortranCompiler.cmake | 8 +++++++ Modules/Compiler/CCur-Fortran.cmake | 1 + Modules/Platform/Linux-CCur-Fortran.cmake | 1 + 7 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 Modules/Compiler/CCur-Fortran.cmake create mode 100644 Modules/Platform/Linux-CCur-Fortran.cmake hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 16:17:21 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 16:17:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-517-g9542359 Message-ID: <20150618201721.95EB5AEE14@public.kitware.com> 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 95423594649a7df0fe254c44379b48c32e0183f6 (commit) via 54676a0e4cf30d9f026a0f6521f7171a75f85803 (commit) from 83b997d41a65361e5bd56c601b2896146606cc96 (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=95423594649a7df0fe254c44379b48c32e0183f6 commit 95423594649a7df0fe254c44379b48c32e0183f6 Merge: 83b997d 54676a0 Author: Brad King AuthorDate: Thu Jun 18 16:17:20 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 16:17:20 2015 -0400 Merge topic 'ConcurrentFortran-compiler-id' into next 54676a0e Help: Add notes for topic 'ConcurrentFortran-compiler-id' http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=54676a0e4cf30d9f026a0f6521f7171a75f85803 commit 54676a0e4cf30d9f026a0f6521f7171a75f85803 Author: Brad King AuthorDate: Thu Jun 18 16:16:50 2015 -0400 Commit: Brad King CommitDate: Thu Jun 18 16:16:50 2015 -0400 Help: Add notes for topic 'ConcurrentFortran-compiler-id' diff --git a/Help/release/dev/ConcurrentFortran-compiler-id.rst b/Help/release/dev/ConcurrentFortran-compiler-id.rst new file mode 100644 index 0000000..71e79aa --- /dev/null +++ b/Help/release/dev/ConcurrentFortran-compiler-id.rst @@ -0,0 +1,5 @@ +ConcurrentFortran-compiler-id +----------------------------- + +* The `Concurrent Fortran 77 `__ compiler is now supported. + Its :variable:`compiler id _COMPILER_ID>` is ``CCur``. ----------------------------------------------------------------------- Summary of changes: Help/release/dev/ConcurrentFortran-compiler-id.rst | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Help/release/dev/ConcurrentFortran-compiler-id.rst hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 18 16:34:34 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 18 Jun 2015 16:34:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-519-g85615c0 Message-ID: <20150618203434.DF67EB01D5@public.kitware.com> 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 85615c055a275edbab3c8dfb53f563003ea21841 (commit) via 078b60f05c9750b79e0efb322fafeddd8450f6c0 (commit) from 95423594649a7df0fe254c44379b48c32e0183f6 (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=85615c055a275edbab3c8dfb53f563003ea21841 commit 85615c055a275edbab3c8dfb53f563003ea21841 Merge: 9542359 078b60f Author: Brad King AuthorDate: Thu Jun 18 16:34:34 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 18 16:34:34 2015 -0400 Merge topic 'Embarcadero-ninja-link-pool' into next 078b60f0 Embarcadero: Run at most one linker invocation at a time (#15620) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=078b60f05c9750b79e0efb322fafeddd8450f6c0 commit 078b60f05c9750b79e0efb322fafeddd8450f6c0 Author: James Johnston AuthorDate: Thu Jun 18 17:17:38 2015 +0000 Commit: Brad King CommitDate: Thu Jun 18 16:29:43 2015 -0400 Embarcadero: Run at most one linker invocation at a time (#15620) At least some versions (e.g. C++ Builder 5) of the bcc32 linker are known to write temporary files with a constant name to the current directory (e.g. "turboc.$ln"). (This can be verified by using Process Monitor to watch the file writes that bcc32 / ilink32 / implib make). This causes problems with some generators that keep a constant current directory and run concurrent linkers. For example, the Ninja generator, by default, always has the current directory set to the top of the build tree - resulting in conflicts between the linkers that are simultaneously trying to write to "turboc.$ln". Symptoms include direct errors regarding the "turboc.$ln" file, or later build steps failing due to corrupted output from previous links that happened to link "successfully." This is not a problem for the Borland Makefiles generator which does not run jobs in parallel. For the Ninja generator, work around this problem by using a link job pool of size 1. diff --git a/Modules/Platform/Windows-Embarcadero.cmake b/Modules/Platform/Windows-Embarcadero.cmake index 26b3c0c..58ef3ca 100644 --- a/Modules/Platform/Windows-Embarcadero.cmake +++ b/Modules/Platform/Windows-Embarcadero.cmake @@ -74,6 +74,12 @@ set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT}) set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT}) set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT}) +# The Borland link tool does not support multiple concurrent +# invocations within a single working directory. +if(NOT DEFINED CMAKE_JOB_POOL_LINK) + set(CMAKE_JOB_POOL_LINK BCC32LinkPool) + set_property(GLOBAL APPEND PROPERTY JOB_POOLS BCC32LinkPool=1) +endif() macro(__embarcadero_language lang) set(CMAKE_${lang}_COMPILE_OPTIONS_DLL "${_tD}") # Note: This variable is a ';' separated list ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Windows-Embarcadero.cmake | 6 ++++++ 1 file changed, 6 insertions(+) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Jun 19 00:01:11 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 19 Jun 2015 00:01:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-184-g66a2675 Message-ID: <20150619040112.9628BB03C7@public.kitware.com> 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, master has been updated via 66a2675e2bd4e32c32ff8e4147c3c679734c4445 (commit) from e2e6cb7348dfffddb5d93f679fc8c69fffd3d1dc (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=66a2675e2bd4e32c32ff8e4147c3c679734c4445 commit 66a2675e2bd4e32c32ff8e4147c3c679734c4445 Author: Kitware Robot AuthorDate: Fri Jun 19 00:01:07 2015 -0400 Commit: Kitware Robot CommitDate: Fri Jun 19 00:01:07 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 267e49a..f11eb80 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150618) +set(CMake_VERSION_PATCH 20150619) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:51:40 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:51:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-186-gea69c7c Message-ID: <20150619125140.E1F5AB035C@public.kitware.com> 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, master has been updated via ea69c7cb962c61e6cb1ef339a83f9f17a7ed370d (commit) via 078b60f05c9750b79e0efb322fafeddd8450f6c0 (commit) from 66a2675e2bd4e32c32ff8e4147c3c679734c4445 (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=ea69c7cb962c61e6cb1ef339a83f9f17a7ed370d commit ea69c7cb962c61e6cb1ef339a83f9f17a7ed370d Merge: 66a2675 078b60f Author: Brad King AuthorDate: Fri Jun 19 08:51:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 19 08:51:39 2015 -0400 Merge topic 'Embarcadero-ninja-link-pool' 078b60f0 Embarcadero: Run at most one linker invocation at a time (#15620) ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Windows-Embarcadero.cmake | 6 ++++++ 1 file changed, 6 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:51:42 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:51:42 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-188-gc780524 Message-ID: <20150619125142.D602CB0372@public.kitware.com> 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, master has been updated via c780524a967ef8e814ad4fcd4e424cdb8fe58f73 (commit) via 1c9db7db2c60e23ed3e6b107956656221e965c21 (commit) from ea69c7cb962c61e6cb1ef339a83f9f17a7ed370d (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=c780524a967ef8e814ad4fcd4e424cdb8fe58f73 commit c780524a967ef8e814ad4fcd4e424cdb8fe58f73 Merge: ea69c7c 1c9db7d Author: Brad King AuthorDate: Fri Jun 19 08:51:41 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 19 08:51:41 2015 -0400 Merge topic 'doc-CMAKE_GENERATOR_PLATFORM-typo' 1c9db7db Help: Fix typo in CMAKE_GENERATOR_PLATFORM docs (#15621) ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_GENERATOR_PLATFORM.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:51:45 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:51:45 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-194-ga53f1af Message-ID: <20150619125145.03C59B039B@public.kitware.com> 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, master has been updated via a53f1af79f5b602751d2a3a68e3eb36deba53c23 (commit) via 54676a0e4cf30d9f026a0f6521f7171a75f85803 (commit) via 7cd539b163a58f8b594e2318bdc7e7d7b1ba6577 (commit) via 0d204c1c1dabba2dc87957e9ce6bcd32aab70dae (commit) via 5f0dad75a9dd9bb9e7b2f917806588563c3ed39e (commit) via c65a060e1b19a463312f9003bc4d7793db9630e5 (commit) from c780524a967ef8e814ad4fcd4e424cdb8fe58f73 (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=a53f1af79f5b602751d2a3a68e3eb36deba53c23 commit a53f1af79f5b602751d2a3a68e3eb36deba53c23 Merge: c780524 54676a0 Author: Brad King AuthorDate: Fri Jun 19 08:51:43 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 19 08:51:43 2015 -0400 Merge topic 'ConcurrentFortran-compiler-id' 54676a0e Help: Add notes for topic 'ConcurrentFortran-compiler-id' 7cd539b1 Add support for Concurrent Fortran 77 Compiler 0d204c1c CMakeDetermineCompilerId: Try matching compiler output to detect id 5f0dad75 CMakeDetermineCompilerId: Refactor id build/check loop logic c65a060e CMakeDetermineCompilerId: Optionally try some flags before no flags ----------------------------------------------------------------------- Summary of changes: Help/release/dev/ConcurrentFortran-compiler-id.rst | 5 +++ Help/variable/CMAKE_LANG_COMPILER_ID.rst | 1 + Modules/CMakeDetermineCCompiler.cmake | 1 + Modules/CMakeDetermineCXXCompiler.cmake | 1 + Modules/CMakeDetermineCompilerId.cmake | 34 ++++++++++++++++---- Modules/CMakeDetermineFortranCompiler.cmake | 8 +++++ Modules/Compiler/CCur-Fortran.cmake | 1 + Modules/Platform/Linux-CCur-Fortran.cmake | 1 + 8 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 Help/release/dev/ConcurrentFortran-compiler-id.rst create mode 100644 Modules/Compiler/CCur-Fortran.cmake create mode 100644 Modules/Platform/Linux-CCur-Fortran.cmake hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:51:47 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:51:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-198-g41cd854 Message-ID: <20150619125147.5B0A9B0372@public.kitware.com> 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, master has been updated via 41cd8547c4780e4db383591307c9330dd9775703 (commit) via 8bcec4d22993614e746fdbae54ba66862a85dfe1 (commit) via c8bd37ec685c02736618af83ac894e96fc1e6ab8 (commit) via 5f30f1754ac9a701cbd311bab86250dd237d86fd (commit) from a53f1af79f5b602751d2a3a68e3eb36deba53c23 (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=41cd8547c4780e4db383591307c9330dd9775703 commit 41cd8547c4780e4db383591307c9330dd9775703 Merge: a53f1af 8bcec4d Author: Brad King AuthorDate: Fri Jun 19 08:51:45 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 19 08:51:45 2015 -0400 Merge topic 'GNUInstallDirs-special-prefixes' 8bcec4d2 Help: Add notes for topic 'GNUInstallDirs-special-prefixes' c8bd37ec GNUInstallDirs: Add special cases for certain prefixes 5f30f175 GNUInstallDirs: Add test cases ----------------------------------------------------------------------- Summary of changes: .../dev/GNUInstallDirs-special-prefixes.rst | 9 +++ Modules/GNUInstallDirs.cmake | 73 +++++++++++++++++++- Tests/RunCMake/CMakeLists.txt | 1 + .../{CMP0055 => GNUInstallDirs}/CMakeLists.txt | 2 +- Tests/RunCMake/GNUInstallDirs/Common.cmake | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Opt.cmake | 2 + Tests/RunCMake/GNUInstallDirs/Root-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Root.cmake | 2 + Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake | 6 ++ Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/Usr.cmake | 2 + Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt | 28 ++++++++ Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake | 2 + 14 files changed, 235 insertions(+), 4 deletions(-) create mode 100644 Help/release/dev/GNUInstallDirs-special-prefixes.rst copy Tests/RunCMake/{CMP0055 => GNUInstallDirs}/CMakeLists.txt (63%) create mode 100644 Tests/RunCMake/GNUInstallDirs/Common.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/Opt-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Opt.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/Root-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Root.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/Usr-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/Usr.cmake create mode 100644 Tests/RunCMake/GNUInstallDirs/UsrLocal-stderr.txt create mode 100644 Tests/RunCMake/GNUInstallDirs/UsrLocal.cmake hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:52:08 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:52:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-525-gde4f886 Message-ID: <20150619125208.83AAAB039B@public.kitware.com> 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 de4f88673bc6ff7c342d98b3a6322ae1a2cea710 (commit) via 41cd8547c4780e4db383591307c9330dd9775703 (commit) via a53f1af79f5b602751d2a3a68e3eb36deba53c23 (commit) via c780524a967ef8e814ad4fcd4e424cdb8fe58f73 (commit) via ea69c7cb962c61e6cb1ef339a83f9f17a7ed370d (commit) via 66a2675e2bd4e32c32ff8e4147c3c679734c4445 (commit) from 85615c055a275edbab3c8dfb53f563003ea21841 (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=de4f88673bc6ff7c342d98b3a6322ae1a2cea710 commit de4f88673bc6ff7c342d98b3a6322ae1a2cea710 Merge: 85615c0 41cd854 Author: Brad King AuthorDate: Fri Jun 19 08:51:59 2015 -0400 Commit: Brad King CommitDate: Fri Jun 19 08:51:59 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:56:58 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:56:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-200-g664156c Message-ID: <20150619125658.30604B050A@public.kitware.com> 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, master has been updated via 664156c2314302ad94c684561fdf56c847613de9 (commit) via 8576c394b105b9697cefb6dbf7d105d74fa5ee60 (commit) from 41cd8547c4780e4db383591307c9330dd9775703 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:56:58 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:56:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-528-gec38bf5 Message-ID: <20150619125658.482F6B050B@public.kitware.com> 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 ec38bf5bffc3abb491ca90aaf78276eeb222fef7 (commit) via 664156c2314302ad94c684561fdf56c847613de9 (commit) via 8576c394b105b9697cefb6dbf7d105d74fa5ee60 (commit) from de4f88673bc6ff7c342d98b3a6322ae1a2cea710 (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=ec38bf5bffc3abb491ca90aaf78276eeb222fef7 commit ec38bf5bffc3abb491ca90aaf78276eeb222fef7 Merge: de4f886 664156c Author: Brad King AuthorDate: Fri Jun 19 08:56:42 2015 -0400 Commit: Brad King CommitDate: Fri Jun 19 08:56:42 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 08:56:58 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 08:56:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.3.0-rc2-2-g8576c39 Message-ID: <20150619125658.5D4EEB050E@public.kitware.com> 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, release has been updated via 8576c394b105b9697cefb6dbf7d105d74fa5ee60 (commit) via 1c9db7db2c60e23ed3e6b107956656221e965c21 (commit) from 86bde2ef3e5d56ca7326b51e6608a79a08eb90cd (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_GENERATOR_PLATFORM.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 19 10:35:58 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 19 Jun 2015 10:35:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-531-ge7c86af Message-ID: <20150619143558.33240B0413@public.kitware.com> 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 e7c86afe9b8913a8b76c75fdcb83b85f511949d2 (commit) via 12c3fcde52e8bdd5eed37e2f07a559ca72e5cd3d (commit) via 0e346427a254024b8eafe52956e8f4ba05d856ed (commit) from ec38bf5bffc3abb491ca90aaf78276eeb222fef7 (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=e7c86afe9b8913a8b76c75fdcb83b85f511949d2 commit e7c86afe9b8913a8b76c75fdcb83b85f511949d2 Merge: ec38bf5 12c3fcd Author: Brad King AuthorDate: Fri Jun 19 10:35:57 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 19 10:35:57 2015 -0400 Merge topic 'qt-autogen-always-run' into next 12c3fcde QtAutogen: Use PRE_BUILD in Visual Studio generators even with rcc 0e346427 QtAutogen: Always run autogen step even when rcc is enabled (#15608) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=12c3fcde52e8bdd5eed37e2f07a559ca72e5cd3d commit 12c3fcde52e8bdd5eed37e2f07a559ca72e5cd3d Author: Brad King AuthorDate: Fri Jun 19 09:41:56 2015 -0400 Commit: Brad King CommitDate: Fri Jun 19 10:32:13 2015 -0400 QtAutogen: Use PRE_BUILD in Visual Studio generators even with rcc In commit v3.2.0-rc1~480^2 (QtAutogen: Regenerate qrc files if their input changes, 2014-09-17) we stopped using the PRE_BUILD step in Visual Studio generators when rcc is on in order to run it as a custom command with dependencies. Our parent commit switched back to always running the command, so now it can be in PRE_BUILD again. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index d2f6e36..10339d1 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -394,14 +394,9 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) } #endif + // Ninja needs to know the rcc outputs are byproducts. std::vector rcc_output; - bool const isNinja = - makefile->GetGlobalGenerator()->GetName() == "Ninja"; - if(isNinja -#if defined(_WIN32) && !defined(__CYGWIN__) - || usePRE_BUILD -#endif - ) + if (makefile->GetGlobalGenerator()->GetName() == "Ninja") { std::vector srcFiles; target->GetConfigCommonSourceFiles(srcFiles); @@ -439,9 +434,6 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) { this->ListQt4RccInputs(sf, depends); } -#if defined(_WIN32) && !defined(__CYGWIN__) - usePRE_BUILD = false; -#endif } } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0e346427a254024b8eafe52956e8f4ba05d856ed commit 0e346427a254024b8eafe52956e8f4ba05d856ed Author: Brad King AuthorDate: Fri Jun 19 09:38:04 2015 -0400 Commit: Brad King CommitDate: Fri Jun 19 10:29:38 2015 -0400 QtAutogen: Always run autogen step even when rcc is enabled (#15608) In commit v3.2.0-rc1~480^2 (QtAutogen: Regenerate qrc files if their input changes, 2014-09-17) the "cmake -E cmake_autogen" rule was switched from always running to running as a custom command with dependencies if rcc is enabled. This is not correct because automoc always needs to re-run. Switch back to always running the command. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index f472ed8..d2f6e36 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -466,31 +466,11 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) else #endif { - cmTarget* autogenTarget = 0; - if (!rcc_output.empty() && !isNinja) - { - std::vector no_byproducts; - makefile->AddCustomCommandToOutput(rcc_output, no_byproducts, - depends, "", - commandLines, 0, - workingDirectory.c_str(), - false, false); - - cmCustomCommandLines no_commands; - autogenTarget = makefile->AddUtilityCommand( - autogenTargetName, true, - workingDirectory.c_str(), rcc_output, - no_commands, false, autogenComment.c_str()); - - } - else - { - autogenTarget = makefile->AddUtilityCommand( + cmTarget* autogenTarget = makefile->AddUtilityCommand( autogenTargetName, true, workingDirectory.c_str(), /*byproducts=*/rcc_output, depends, commandLines, false, autogenComment.c_str()); - } // Set target folder const char* autogenFolder = makefile->GetState() diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index 60b44fd..1dfa648 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -167,3 +167,26 @@ file(TIMESTAMP "${qrc_file1}" file1_step1 "${timeformat}") if (NOT file1_step1 GREATER file1_before) message(SEND_ERROR "file1 (${qrc_file1}) should have changed in the first step!") endif() + +#----------------------------------------------------------------------------- +try_compile(MOC_RERUN + "${CMAKE_CURRENT_BINARY_DIR}/automoc_rerun" + "${CMAKE_CURRENT_SOURCE_DIR}/automoc_rerun" + automoc_rerun + CMAKE_FLAGS "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}" "-DQT_TEST_VERSION=${QT_TEST_VERSION}" + "-DCMAKE_PREFIX_PATH=${Qt_PREFIX_DIR}" + OUTPUT_VARIABLE output +) +if (NOT MOC_RERUN) + message(SEND_ERROR "Initial build of automoc_rerun failed. Output: ${output}") +endif() + +configure_file(automoc_rerun/test1.h.in2 automoc_rerun/test1.h COPYONLY) + +execute_process(COMMAND "${CMAKE_COMMAND}" --build . + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/automoc_rerun" + RESULT_VARIABLE automoc_rerun_result + ) +if (automoc_rerun_result) + message(SEND_ERROR "Second build of automoc_rerun failed.") +endif() diff --git a/Tests/QtAutogen/automoc_rerun/CMakeLists.txt b/Tests/QtAutogen/automoc_rerun/CMakeLists.txt new file mode 100644 index 0000000..17bc332 --- /dev/null +++ b/Tests/QtAutogen/automoc_rerun/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.1) +project(automoc_rerun CXX) + +if (QT_TEST_VERSION STREQUAL 4) + find_package(Qt4 REQUIRED) + set(QT_CORE_TARGET Qt4::QtCore) +else() + if (NOT QT_TEST_VERSION STREQUAL 5) + message(SEND_ERROR "Invalid Qt version specified.") + endif() + + find_package(Qt5Core REQUIRED) + set(QT_CORE_TARGET Qt5::Core) +endif() + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +configure_file(test1.h.in1 test1.h COPYONLY) + +add_executable(test1 + ${CMAKE_CURRENT_BINARY_DIR}/test1.h + test1.cpp + res1.qrc + ) +target_include_directories(test1 PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +target_link_libraries(test1 ${QT_CORE_TARGET}) diff --git a/Tests/QtAutogen/automoc_rerun/input.txt b/Tests/QtAutogen/automoc_rerun/input.txt new file mode 100644 index 0000000..da62762 --- /dev/null +++ b/Tests/QtAutogen/automoc_rerun/input.txt @@ -0,0 +1 @@ +Res1 input. diff --git a/Tests/QtAutogen/automoc_rerun/res1.qrc b/Tests/QtAutogen/automoc_rerun/res1.qrc new file mode 100644 index 0000000..fb804b5 --- /dev/null +++ b/Tests/QtAutogen/automoc_rerun/res1.qrc @@ -0,0 +1,5 @@ + + + input.txt + + diff --git a/Tests/QtAutogen/automoc_rerun/test1.cpp b/Tests/QtAutogen/automoc_rerun/test1.cpp new file mode 100644 index 0000000..4316a91 --- /dev/null +++ b/Tests/QtAutogen/automoc_rerun/test1.cpp @@ -0,0 +1,5 @@ +#include "test1.h" +int main() +{ + return 0; +} diff --git a/Tests/QtAutogen/automoc_rerun/test1.h.in1 b/Tests/QtAutogen/automoc_rerun/test1.h.in1 new file mode 100644 index 0000000..fee2c09 --- /dev/null +++ b/Tests/QtAutogen/automoc_rerun/test1.h.in1 @@ -0,0 +1,8 @@ +#include +class test1 : public QObject +{ + Q_OBJECT + public slots: + void onTst1() {} + void onTst2() {} +}; diff --git a/Tests/QtAutogen/automoc_rerun/test1.h.in2 b/Tests/QtAutogen/automoc_rerun/test1.h.in2 new file mode 100644 index 0000000..6531d10 --- /dev/null +++ b/Tests/QtAutogen/automoc_rerun/test1.h.in2 @@ -0,0 +1,7 @@ +#include +class test1 : public QObject +{ + Q_OBJECT + public slots: + void onTst1() {} +}; ----------------------------------------------------------------------- Summary of changes: Source/cmQtAutoGenerators.cxx | 34 ++------------------ Tests/QtAutogen/CMakeLists.txt | 23 +++++++++++++ Tests/QtAutogen/automoc_rerun/CMakeLists.txt | 27 ++++++++++++++++ .../res1/input.txt.in => automoc_rerun/input.txt} | 0 .../res1.qrc.in => automoc_rerun/res1.qrc} | 2 +- .../automoc_rerun/test1.cpp} | 2 +- Tests/QtAutogen/automoc_rerun/test1.h.in1 | 8 +++++ Tests/QtAutogen/automoc_rerun/test1.h.in2 | 7 ++++ 8 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 Tests/QtAutogen/automoc_rerun/CMakeLists.txt copy Tests/QtAutogen/{autorcc_depends/res1/input.txt.in => automoc_rerun/input.txt} (100%) copy Tests/QtAutogen/{autorcc_depends/res1.qrc.in => automoc_rerun/res1.qrc} (61%) copy Tests/{CTestTestDepends/simple.cxx => QtAutogen/automoc_rerun/test1.cpp} (58%) create mode 100644 Tests/QtAutogen/automoc_rerun/test1.h.in1 create mode 100644 Tests/QtAutogen/automoc_rerun/test1.h.in2 hooks/post-receive -- CMake From kwrobot at kitware.com Sat Jun 20 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 20 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-201-g4fa99b9 Message-ID: <20150620040106.5F3E9B03DA@public.kitware.com> 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, master has been updated via 4fa99b9922cf811b6f3cb2fac17d9b58a33c0d6e (commit) from 664156c2314302ad94c684561fdf56c847613de9 (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=4fa99b9922cf811b6f3cb2fac17d9b58a33c0d6e commit 4fa99b9922cf811b6f3cb2fac17d9b58a33c0d6e Author: Kitware Robot AuthorDate: Sat Jun 20 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Sat Jun 20 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index f11eb80..7cd14a2 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150619) +set(CMake_VERSION_PATCH 20150620) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Jun 21 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 21 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-202-g155ef53 Message-ID: <20150621040105.94BB3B0317@public.kitware.com> 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, master has been updated via 155ef535974ab9e78e98da00b63f31bd5c848bd0 (commit) from 4fa99b9922cf811b6f3cb2fac17d9b58a33c0d6e (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=155ef535974ab9e78e98da00b63f31bd5c848bd0 commit 155ef535974ab9e78e98da00b63f31bd5c848bd0 Author: Kitware Robot AuthorDate: Sun Jun 21 00:01:03 2015 -0400 Commit: Kitware Robot CommitDate: Sun Jun 21 00:01:03 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 7cd14a2..9d68172 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150620) +set(CMake_VERSION_PATCH 20150621) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 08:54:50 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 08:54:50 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-533-g295f35d Message-ID: <20150621125450.EEFC2B026D@public.kitware.com> 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 295f35d4a302e844c9acf7277122d9d2308f262b (commit) via 6af9fa1294e86d61b01034e0c9f12375d69f3120 (commit) from e7c86afe9b8913a8b76c75fdcb83b85f511949d2 (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=295f35d4a302e844c9acf7277122d9d2308f262b commit 295f35d4a302e844c9acf7277122d9d2308f262b Merge: e7c86af 6af9fa1 Author: Stephen Kelly AuthorDate: Sun Jun 21 08:54:50 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 08:54:50 2015 -0400 Merge topic 'fix-Qt5Autogen-test' into next 6af9fa12 Tests: Don't hang when running Qt5Autogen built with GCC 5 (#15570). http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6af9fa1294e86d61b01034e0c9f12375d69f3120 commit 6af9fa1294e86d61b01034e0c9f12375d69f3120 Author: Stephen Kelly AuthorDate: Sun Jun 21 14:50:50 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 14:50:50 2015 +0200 Tests: Don't hang when running Qt5Autogen built with GCC 5 (#15570). Since Qt 5.4.2, it is necessary to compile against Qt 5 with -fPIC and not -fPIE when using GCC 5. Not doing so results in a hanging test in this case, so use the PIC flag directly instead. diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index 60b44fd..54ee8f5 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -34,8 +34,8 @@ else() include_directories(${Qt5Widgets_INCLUDE_DIRS}) set(QT_LIBRARIES Qt5::Widgets) - if(Qt5_POSITION_INDEPENDENT_CODE) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) + if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC) + add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC}) endif() macro(qtx_wrap_cpp) ----------------------------------------------------------------------- Summary of changes: Tests/QtAutogen/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 14:12:43 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 14:12:43 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-555-g8a2406a Message-ID: <20150621181244.0191F2AC0@public.kitware.com> 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 8a2406a57e01585050c4d451a209eeb16d83b106 (commit) via 81eb2c58a17f7e34cda79897ea7dec24bf798dd2 (commit) via 5c837686287eb22e73af76d2ab7f32d5bf8cb9ec (commit) via c10ab014344e693a65d7cfbfb9b4e0f8a8b155f9 (commit) via 3404f8a081a03441c6747de50f2155ae28115c07 (commit) via a1858136c28326212d15cfd0a4412281f46b9cb0 (commit) via ad47e6e5bc4822dc5bc9d82ae1d7590aee4ece95 (commit) via 254be613b803816a918c12d7d7eca40a7c9f7c09 (commit) via 826b6e68184759cda496f0073a8f59b2155cfdaf (commit) via e53072d638c2cca3258ffccbec75bb5c70d34a3f (commit) via b7166afa6d385c4f0a0610f43ea00c8e5613a003 (commit) via 27f229b9707f3a87c3ed0d469b5b2d08c80076c5 (commit) via 9166b49d70746dcd36e6e891c78734b559e0fccf (commit) via 384a0dba63b166d94a199b12f104e53496a3302a (commit) via 5e24ff17a22b780947e98eabc1d25320104f7b21 (commit) via d5aaa2b96f7d93aaa8e11e8d5e9cf0c2b1739290 (commit) via fff3c6cd1c49ba1aa8a256e26294db65710c9d18 (commit) via a6e661b848fc180b03e7d72739c9a4a077a97e3f (commit) via fe38bb2c29ab4273cfefb1b343b80388bea2893e (commit) via ac10fc0958c94e17d89a686d1addae0ac18dc648 (commit) via 155ef535974ab9e78e98da00b63f31bd5c848bd0 (commit) via 4fa99b9922cf811b6f3cb2fac17d9b58a33c0d6e (commit) from 295f35d4a302e844c9acf7277122d9d2308f262b (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=8a2406a57e01585050c4d451a209eeb16d83b106 commit 8a2406a57e01585050c4d451a209eeb16d83b106 Merge: 295f35d 81eb2c5 Author: Stephen Kelly AuthorDate: Sun Jun 21 14:12:41 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 14:12:41 2015 -0400 Merge topic 'clean-up-ReadListFile' into next 81eb2c58 cmMakefile: Simplify filename handling. 5c837686 cmMakefile: Make the IncludeScope more responsible. c10ab014 cmMakefile: Move IncludeScope. 3404f8a0 cmMakefile: Move ListFile parsing responsibility out of internal method. a1858136 cmMakefile: Rename parameter. ad47e6e5 cmMakefile: Inline ReadListFileInternal into caller. 254be613 cmMakefile: Move resource management into the IncludeScope. 826b6e68 cmMakefile: Move IncludeScope to ReadDependentFile. e53072d6 cmMakefile: Move IncludeScope instance. b7166afa cmMakefile: Remove File from IncludeScope. 27f229b9 cmMakefile: Move include scope out of ReadListFileInternal. 9166b49d cmMakefile: Change order of raii scopes. 384a0dba cmMakefile: Simplify condition handling. 5e24ff17 cmMakefile: Split file handling from execution. d5aaa2b9 cmMakefile: Move check for unused variables. fff3c6cd cmMakefile: Move a container population. ... http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=81eb2c58a17f7e34cda79897ea7dec24bf798dd2 commit 81eb2c58a17f7e34cda79897ea7dec24bf798dd2 Author: Stephen Kelly AuthorDate: Sun Jun 21 20:10:02 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:52 2015 +0200 cmMakefile: Simplify filename handling. This method has only one caller. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index dee290c..7faf67a 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -536,21 +536,17 @@ bool cmMakefile::ProcessBuildsystemFile(const char* filename) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); std::string curSrc = this->GetCurrentSourceDirectory(); - std::string filenametoread = - cmSystemTools::CollapseFullPath(filename, - this->GetCurrentSourceDirectory()); - this->ListFileStack.push_back(filenametoread); + this->ListFileStack.push_back(filename); cmListFile listFile; - if (!listFile.ParseFile(filenametoread.c_str(), - curSrc == this->GetHomeDirectory(), this)) + if (!listFile.ParseFile(filename, curSrc == this->GetHomeDirectory(), this)) { return false; } this->PushPolicyBarrier(); - this->ReadListFile(listFile, filenametoread); + this->ReadListFile(listFile, filename); this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); this->EnforceDirectoryLevelRules(); return true; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5c837686287eb22e73af76d2ab7f32d5bf8cb9ec commit 5c837686287eb22e73af76d2ab7f32d5bf8cb9ec Author: Stephen Kelly AuthorDate: Sun Jun 21 20:09:13 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:52 2015 +0200 cmMakefile: Make the IncludeScope more responsible. It is now responsible for all resource management when including a file. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 744e848..dee290c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -409,7 +409,8 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, class cmMakefile::IncludeScope { public: - IncludeScope(cmMakefile* mf, bool noPolicyScope); + IncludeScope(cmMakefile* mf, std::string const& filenametoread, + bool noPolicyScope); ~IncludeScope(); void Quiet() { this->ReportError = false; } private: @@ -422,6 +423,7 @@ private: //---------------------------------------------------------------------------- cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, + std::string const& filenametoread, bool noPolicyScope): Makefile(mf), NoPolicyScope(noPolicyScope), CheckCMP0011(false), ReportError(true) @@ -457,6 +459,7 @@ cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, // The included file cannot pop our policy scope. this->Makefile->PushPolicyBarrier(); + this->Makefile->ListFileStack.push_back(filenametoread); } //---------------------------------------------------------------------------- @@ -561,8 +564,7 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) cmSystemTools::CollapseFullPath(filename, this->GetCurrentSourceDirectory()); - IncludeScope incScope(this, noPolicyScope); - this->ListFileStack.push_back(filenametoread); + IncludeScope incScope(this, filenametoread, noPolicyScope); cmListFile listFile; if (!listFile.ParseFile(filenametoread.c_str(), false, this)) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c10ab014344e693a65d7cfbfb9b4e0f8a8b155f9 commit c10ab014344e693a65d7cfbfb9b4e0f8a8b155f9 Author: Stephen Kelly AuthorDate: Sun Jun 21 20:08:30 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:52 2015 +0200 cmMakefile: Move IncludeScope. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 32767a3..744e848 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -561,14 +561,15 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) cmSystemTools::CollapseFullPath(filename, this->GetCurrentSourceDirectory()); + IncludeScope incScope(this, noPolicyScope); this->ListFileStack.push_back(filenametoread); cmListFile listFile; if (!listFile.ParseFile(filenametoread.c_str(), false, this)) { + incScope.Quiet(); return false; } - IncludeScope incScope(this, noPolicyScope); this->ReadListFile(listFile, filenametoread); if(cmSystemTools::GetFatalErrorOccured()) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3404f8a081a03441c6747de50f2155ae28115c07 commit 3404f8a081a03441c6747de50f2155ae28115c07 Author: Stephen Kelly AuthorDate: Sun Jun 21 20:07:40 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:51 2015 +0200 cmMakefile: Move ListFile parsing responsibility out of internal method. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 62d4c66..32767a3 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -533,39 +533,52 @@ bool cmMakefile::ProcessBuildsystemFile(const char* filename) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); std::string curSrc = this->GetCurrentSourceDirectory(); + std::string filenametoread = + cmSystemTools::CollapseFullPath(filename, + this->GetCurrentSourceDirectory()); + + this->ListFileStack.push_back(filenametoread); + + cmListFile listFile; + if (!listFile.ParseFile(filenametoread.c_str(), + curSrc == this->GetHomeDirectory(), this)) + { + return false; + } + this->PushPolicyBarrier(); - bool result = this->ReadListFile(filename, - curSrc == this->GetHomeDirectory()); + this->ReadListFile(listFile, filenametoread); this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); this->EnforceDirectoryLevelRules(); - return result; + return true; } bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", this->GetDefinition("CMAKE_CURRENT_LIST_FILE")); + std::string filenametoread = + cmSystemTools::CollapseFullPath(filename, + this->GetCurrentSourceDirectory()); + + this->ListFileStack.push_back(filenametoread); + + cmListFile listFile; + if (!listFile.ParseFile(filenametoread.c_str(), false, this)) + { + return false; + } IncludeScope incScope(this, noPolicyScope); - bool result = this->ReadListFile(filename, false); + this->ReadListFile(listFile, filenametoread); if(cmSystemTools::GetFatalErrorOccured()) { incScope.Quiet(); } - return result; + return true; } bool cmMakefile::ReadListFile(const char* filename) { - this->PushPolicyBarrier(); - bool result = this->ReadListFile(filename, false); - this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); - this->ListFileStack.pop_back(); - return result; -} - -bool cmMakefile::ReadListFile(const char* filename, - bool requireProjectCommand) -{ std::string filenametoread = cmSystemTools::CollapseFullPath(filename, this->GetCurrentSourceDirectory()); @@ -573,12 +586,21 @@ bool cmMakefile::ReadListFile(const char* filename, this->ListFileStack.push_back(filenametoread); cmListFile listFile; - if (!listFile.ParseFile(filenametoread.c_str(), - requireProjectCommand, this)) + if (!listFile.ParseFile(filenametoread.c_str(), false, this)) { return false; } + this->PushPolicyBarrier(); + this->ReadListFile(listFile, filenametoread); + this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); + this->ListFileStack.pop_back(); + return true; +} + +void cmMakefile::ReadListFile(cmListFile const& listFile, + std::string const& filenametoread) +{ // add this list file to the list of dependencies this->ListFiles.push_back(filenametoread); @@ -625,8 +647,6 @@ bool cmMakefile::ReadListFile(const char* filename, this->MarkVariableAsUsed("CMAKE_PARENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - - return true; } //---------------------------------------------------------------------------- diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 24b4bd0..271cfd6 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -914,8 +914,8 @@ private: cmState::Snapshot StateSnapshot; - bool ReadListFile(const char* filename, - bool requireProjectCommand); + void ReadListFile(cmListFile const& listFile, + const std::string& filenametoread); bool ParseDefineFlag(std::string const& definition, bool remove); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a1858136c28326212d15cfd0a4412281f46b9cb0 commit a1858136c28326212d15cfd0a4412281f46b9cb0 Author: Stephen Kelly AuthorDate: Sun Jun 21 20:02:16 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:51 2015 +0200 cmMakefile: Rename parameter. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index c4400d1..62d4c66 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -529,24 +529,24 @@ void cmMakefile::IncludeScope::EnforceCMP0011() } } -bool cmMakefile::ProcessBuildsystemFile(const char* listfile) +bool cmMakefile::ProcessBuildsystemFile(const char* filename) { - this->AddDefinition("CMAKE_PARENT_LIST_FILE", listfile); + this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); std::string curSrc = this->GetCurrentSourceDirectory(); this->PushPolicyBarrier(); - bool result = this->ReadListFile(listfile, + bool result = this->ReadListFile(filename, curSrc == this->GetHomeDirectory()); this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); this->EnforceDirectoryLevelRules(); return result; } -bool cmMakefile::ReadDependentFile(const char* listfile, bool noPolicyScope) +bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", this->GetDefinition("CMAKE_CURRENT_LIST_FILE")); IncludeScope incScope(this, noPolicyScope); - bool result = this->ReadListFile(listfile, false); + bool result = this->ReadListFile(filename, false); if(cmSystemTools::GetFatalErrorOccured()) { incScope.Quiet(); @@ -554,20 +554,20 @@ bool cmMakefile::ReadDependentFile(const char* listfile, bool noPolicyScope) return result; } -bool cmMakefile::ReadListFile(const char* listfile) +bool cmMakefile::ReadListFile(const char* filename) { this->PushPolicyBarrier(); - bool result = this->ReadListFile(listfile, false); + bool result = this->ReadListFile(filename, false); this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); this->ListFileStack.pop_back(); return result; } -bool cmMakefile::ReadListFile(const char* listfile, +bool cmMakefile::ReadListFile(const char* filename, bool requireProjectCommand) { std::string filenametoread = - cmSystemTools::CollapseFullPath(listfile, + cmSystemTools::CollapseFullPath(filename, this->GetCurrentSourceDirectory()); this->ListFileStack.push_back(filenametoread); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 8ea6e13..24b4bd0 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -79,11 +79,11 @@ public: */ ~cmMakefile(); - bool ReadListFile(const char* listfile); + bool ReadListFile(const char* filename); - bool ReadDependentFile(const char* listfile, bool noPolicyScope = true); + bool ReadDependentFile(const char* filename, bool noPolicyScope = true); - bool ProcessBuildsystemFile(const char* listfile); + bool ProcessBuildsystemFile(const char* filename); /** * Add a function blocker to this makefile @@ -914,7 +914,7 @@ private: cmState::Snapshot StateSnapshot; - bool ReadListFile(const char* listfile, + bool ReadListFile(const char* filename, bool requireProjectCommand); bool ParseDefineFlag(std::string const& definition, bool remove); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ad47e6e5bc4822dc5bc9d82ae1d7590aee4ece95 commit ad47e6e5bc4822dc5bc9d82ae1d7590aee4ece95 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:57:15 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:50 2015 +0200 cmMakefile: Inline ReadListFileInternal into caller. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b02cfc8..c4400d1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -595,22 +595,6 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - this->ReadListFileInternal(listFile); - this->CheckForUnusedVariables(); - - this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); - this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str()); - this->AddDefinition("CMAKE_CURRENT_LIST_DIR", - cmSystemTools::GetFilenamePath(currentFile).c_str()); - this->MarkVariableAsUsed("CMAKE_PARENT_LIST_FILE"); - this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); - this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - - return true; -} - -void cmMakefile::ReadListFileInternal(cmListFile const& listFile) -{ // Enforce balanced blocks (if/endif, function/endfunction, etc.). LexicalPushPop lexScope(this); @@ -632,6 +616,17 @@ void cmMakefile::ReadListFileInternal(cmListFile const& listFile) break; } } + this->CheckForUnusedVariables(); + + this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); + this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str()); + this->AddDefinition("CMAKE_CURRENT_LIST_DIR", + cmSystemTools::GetFilenamePath(currentFile).c_str()); + this->MarkVariableAsUsed("CMAKE_PARENT_LIST_FILE"); + this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); + this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); + + return true; } //---------------------------------------------------------------------------- diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 9896d5b..8ea6e13 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -917,8 +917,6 @@ private: bool ReadListFile(const char* listfile, bool requireProjectCommand); - void ReadListFileInternal(cmListFile const& listFile); - bool ParseDefineFlag(std::string const& definition, bool remove); bool EnforceUniqueDir(const std::string& srcPath, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=254be613b803816a918c12d7d7eca40a7c9f7c09 commit 254be613b803816a918c12d7d7eca40a7c9f7c09 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:56:31 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:50 2015 +0200 cmMakefile: Move resource management into the IncludeScope. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 87d6e3c..b02cfc8 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -486,6 +486,7 @@ cmMakefile::IncludeScope::~IncludeScope() this->EnforceCMP0011(); } } + this->Makefile->ListFileStack.pop_back(); } //---------------------------------------------------------------------------- @@ -544,16 +545,12 @@ bool cmMakefile::ReadDependentFile(const char* listfile, bool noPolicyScope) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", this->GetDefinition("CMAKE_CURRENT_LIST_FILE")); - bool result = false; - { IncludeScope incScope(this, noPolicyScope); - result = this->ReadListFile(listfile, false); + bool result = this->ReadListFile(listfile, false); if(cmSystemTools::GetFatalErrorOccured()) { incScope.Quiet(); } - } - this->ListFileStack.pop_back(); return result; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=826b6e68184759cda496f0073a8f59b2155cfdaf commit 826b6e68184759cda496f0073a8f59b2155cfdaf Author: Stephen Kelly AuthorDate: Sun Jun 21 19:51:46 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:50 2015 +0200 cmMakefile: Move IncludeScope to ReadDependentFile. Add replacement simple push/pop in the other two callers of ReadListFile. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 6fee95c..87d6e3c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -532,8 +532,10 @@ bool cmMakefile::ProcessBuildsystemFile(const char* listfile) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", listfile); std::string curSrc = this->GetCurrentSourceDirectory(); - bool result = this->ReadListFile(listfile, true, + this->PushPolicyBarrier(); + bool result = this->ReadListFile(listfile, curSrc == this->GetHomeDirectory()); + this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); this->EnforceDirectoryLevelRules(); return result; } @@ -542,24 +544,31 @@ bool cmMakefile::ReadDependentFile(const char* listfile, bool noPolicyScope) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", this->GetDefinition("CMAKE_CURRENT_LIST_FILE")); - bool result = this->ReadListFile(listfile, noPolicyScope, false); + bool result = false; + { + IncludeScope incScope(this, noPolicyScope); + result = this->ReadListFile(listfile, false); + if(cmSystemTools::GetFatalErrorOccured()) + { + incScope.Quiet(); + } + } this->ListFileStack.pop_back(); return result; } bool cmMakefile::ReadListFile(const char* listfile) { - bool result = this->ReadListFile(listfile, true, false); + this->PushPolicyBarrier(); + bool result = this->ReadListFile(listfile, false); + this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); this->ListFileStack.pop_back(); return result; } bool cmMakefile::ReadListFile(const char* listfile, - bool noPolicyScope, bool requireProjectCommand) { - IncludeScope incScope(this, noPolicyScope); - std::string filenametoread = cmSystemTools::CollapseFullPath(listfile, this->GetCurrentSourceDirectory()); @@ -590,10 +599,6 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); this->ReadListFileInternal(listFile); - if(cmSystemTools::GetFatalErrorOccured()) - { - incScope.Quiet(); - } this->CheckForUnusedVariables(); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 2db7c93..9896d5b 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -915,7 +915,6 @@ private: cmState::Snapshot StateSnapshot; bool ReadListFile(const char* listfile, - bool noPolicyScope, bool requireProjectCommand); void ReadListFileInternal(cmListFile const& listFile); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e53072d638c2cca3258ffccbec75bb5c70d34a3f commit e53072d638c2cca3258ffccbec75bb5c70d34a3f Author: Stephen Kelly AuthorDate: Sun Jun 21 19:51:04 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:49 2015 +0200 cmMakefile: Move IncludeScope instance. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 0142e6d..6fee95c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -558,6 +558,8 @@ bool cmMakefile::ReadListFile(const char* listfile, bool noPolicyScope, bool requireProjectCommand) { + IncludeScope incScope(this, noPolicyScope); + std::string filenametoread = cmSystemTools::CollapseFullPath(listfile, this->GetCurrentSourceDirectory()); @@ -587,7 +589,6 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - IncludeScope incScope(this, noPolicyScope); this->ReadListFileInternal(listFile); if(cmSystemTools::GetFatalErrorOccured()) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b7166afa6d385c4f0a0610f43ea00c8e5613a003 commit b7166afa6d385c4f0a0610f43ea00c8e5613a003 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:50:18 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:49 2015 +0200 cmMakefile: Remove File from IncludeScope. Get it from the Makefile instead. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 836667c..0142e6d 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -409,12 +409,11 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, class cmMakefile::IncludeScope { public: - IncludeScope(cmMakefile* mf, const char* fname, bool noPolicyScope); + IncludeScope(cmMakefile* mf, bool noPolicyScope); ~IncludeScope(); void Quiet() { this->ReportError = false; } private: cmMakefile* Makefile; - const char* File; bool NoPolicyScope; bool CheckCMP0011; bool ReportError; @@ -422,9 +421,9 @@ private: }; //---------------------------------------------------------------------------- -cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, const char* fname, +cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, bool noPolicyScope): - Makefile(mf), File(fname), NoPolicyScope(noPolicyScope), + Makefile(mf), NoPolicyScope(noPolicyScope), CheckCMP0011(false), ReportError(true) { if(!this->NoPolicyScope) @@ -501,7 +500,8 @@ void cmMakefile::IncludeScope::EnforceCMP0011() { std::ostringstream w; w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0011) << "\n" - << "The included script\n " << this->File << "\n" + << "The included script\n " + << this->Makefile->ListFileStack.back() << "\n" << "affects policy settings. " << "CMake is implying the NO_POLICY_SCOPE option for compatibility, " << "so the effects are applied to the including context."; @@ -513,7 +513,8 @@ void cmMakefile::IncludeScope::EnforceCMP0011() { std::ostringstream e; e << cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0011) << "\n" - << "The included script\n " << this->File << "\n" + << "The included script\n " + << this->Makefile->ListFileStack.back() << "\n" << "affects policy settings, so it requires this policy to be set."; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } @@ -586,7 +587,7 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - IncludeScope incScope(this, filenametoread.c_str(), noPolicyScope); + IncludeScope incScope(this, noPolicyScope); this->ReadListFileInternal(listFile); if(cmSystemTools::GetFatalErrorOccured()) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=27f229b9707f3a87c3ed0d469b5b2d08c80076c5 commit 27f229b9707f3a87c3ed0d469b5b2d08c80076c5 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:46:03 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:48 2015 +0200 cmMakefile: Move include scope out of ReadListFileInternal. Simplify the ReadListFileInternal API. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 15a3710..836667c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -586,7 +586,12 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); + IncludeScope incScope(this, filenametoread.c_str(), noPolicyScope); + this->ReadListFileInternal(listFile); + if(cmSystemTools::GetFatalErrorOccured()) + { + incScope.Quiet(); + } this->CheckForUnusedVariables(); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); @@ -600,12 +605,9 @@ bool cmMakefile::ReadListFile(const char* listfile, return true; } -void cmMakefile::ReadListFileInternal(cmListFile const& listFile, - const char* filenametoread, - bool noPolicyScope) +void cmMakefile::ReadListFileInternal(cmListFile const& listFile) { // Enforce balanced blocks (if/endif, function/endfunction, etc.). - IncludeScope incScope(this, filenametoread, noPolicyScope); LexicalPushPop lexScope(this); // Run the parsed commands. @@ -618,7 +620,6 @@ void cmMakefile::ReadListFileInternal(cmListFile const& listFile, { // Exit early due to error. lexScope.Quiet(); - incScope.Quiet(); break; } if(status.GetReturnInvoked()) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index b80a1ee..2db7c93 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -918,9 +918,7 @@ private: bool noPolicyScope, bool requireProjectCommand); - void ReadListFileInternal(cmListFile const& listFile, - const char* filenametoread, - bool noPolicyScope); + void ReadListFileInternal(cmListFile const& listFile); bool ParseDefineFlag(std::string const& definition, bool remove); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9166b49d70746dcd36e6e891c78734b559e0fccf commit 9166b49d70746dcd36e6e891c78734b559e0fccf Author: Stephen Kelly AuthorDate: Sun Jun 21 19:45:20 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:48 2015 +0200 cmMakefile: Change order of raii scopes. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 93a6c08..15a3710 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -605,8 +605,8 @@ void cmMakefile::ReadListFileInternal(cmListFile const& listFile, bool noPolicyScope) { // Enforce balanced blocks (if/endif, function/endfunction, etc.). - LexicalPushPop lexScope(this); IncludeScope incScope(this, filenametoread, noPolicyScope); + LexicalPushPop lexScope(this); // Run the parsed commands. const size_t numberFunctions = listFile.Functions.size(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=384a0dba63b166d94a199b12f104e53496a3302a commit 384a0dba63b166d94a199b12f104e53496a3302a Author: Stephen Kelly AuthorDate: Sun Jun 21 19:44:37 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:48 2015 +0200 cmMakefile: Simplify condition handling. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index e3a2e4c..93a6c08 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -564,14 +564,15 @@ bool cmMakefile::ReadListFile(const char* listfile, this->ListFileStack.push_back(filenametoread); cmListFile listFile; - bool res = listFile.ParseFile(filenametoread.c_str(), - requireProjectCommand, this); - if (res) + if (!listFile.ParseFile(filenametoread.c_str(), + requireProjectCommand, this)) { - // add this list file to the list of dependencies - this->ListFiles.push_back(filenametoread); + return false; } + // add this list file to the list of dependencies + this->ListFiles.push_back(filenametoread); + std::string currentParentFile = this->GetSafeDefinition("CMAKE_PARENT_LIST_FILE"); std::string currentFile @@ -585,13 +586,8 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - if (res) - { - this->ReadListFileInternal(listFile, filenametoread.c_str(), - noPolicyScope); - - this->CheckForUnusedVariables(); - } + this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); + this->CheckForUnusedVariables(); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str()); @@ -601,7 +597,7 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - return res; + return true; } void cmMakefile::ReadListFileInternal(cmListFile const& listFile, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5e24ff17a22b780947e98eabc1d25320104f7b21 commit 5e24ff17a22b780947e98eabc1d25320104f7b21 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:43:55 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:47 2015 +0200 cmMakefile: Split file handling from execution. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 6b3c7df..e3a2e4c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -561,6 +561,17 @@ bool cmMakefile::ReadListFile(const char* listfile, cmSystemTools::CollapseFullPath(listfile, this->GetCurrentSourceDirectory()); + this->ListFileStack.push_back(filenametoread); + + cmListFile listFile; + bool res = listFile.ParseFile(filenametoread.c_str(), + requireProjectCommand, this); + if (res) + { + // add this list file to the list of dependencies + this->ListFiles.push_back(filenametoread); + } + std::string currentParentFile = this->GetSafeDefinition("CMAKE_PARENT_LIST_FILE"); std::string currentFile @@ -574,16 +585,8 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - this->ListFileStack.push_back(filenametoread); - - cmListFile listFile; - bool res = listFile.ParseFile(filenametoread.c_str(), - requireProjectCommand, this); if (res) { - // add this list file to the list of dependencies - this->ListFiles.push_back(filenametoread); - this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d5aaa2b96f7d93aaa8e11e8d5e9cf0c2b1739290 commit d5aaa2b96f7d93aaa8e11e8d5e9cf0c2b1739290 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:43:07 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:47 2015 +0200 cmMakefile: Move check for unused variables. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3c32362..6b3c7df 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -586,6 +586,8 @@ bool cmMakefile::ReadListFile(const char* listfile, this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); + + this->CheckForUnusedVariables(); } this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); @@ -596,11 +598,6 @@ bool cmMakefile::ReadListFile(const char* listfile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - if (res) - { - this->CheckForUnusedVariables(); - } - return res; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fff3c6cd1c49ba1aa8a256e26294db65710c9d18 commit fff3c6cd1c49ba1aa8a256e26294db65710c9d18 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:42:21 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:47 2015 +0200 cmMakefile: Move a container population. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 08c5a0b..3c32362 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -581,6 +581,9 @@ bool cmMakefile::ReadListFile(const char* listfile, requireProjectCommand, this); if (res) { + // add this list file to the list of dependencies + this->ListFiles.push_back(filenametoread); + this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); } @@ -605,11 +608,7 @@ void cmMakefile::ReadListFileInternal(cmListFile const& listFile, const char* filenametoread, bool noPolicyScope) { - // add this list file to the list of dependencies - this->ListFiles.push_back( filenametoread); - // Enforce balanced blocks (if/endif, function/endfunction, etc.). - { LexicalPushPop lexScope(this); IncludeScope incScope(this, filenametoread, noPolicyScope); @@ -632,7 +631,6 @@ void cmMakefile::ReadListFileInternal(cmListFile const& listFile, break; } } - } } //---------------------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a6e661b848fc180b03e7d72739c9a4a077a97e3f commit a6e661b848fc180b03e7d72739c9a4a077a97e3f Author: Stephen Kelly AuthorDate: Sun Jun 21 19:38:02 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:46 2015 +0200 cmMakefile: Rename variables. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9a1f7ef..08c5a0b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -576,12 +576,12 @@ bool cmMakefile::ReadListFile(const char* listfile, this->ListFileStack.push_back(filenametoread); - cmListFile cacheFile; - bool res = cacheFile.ParseFile(filenametoread.c_str(), - requireProjectCommand, this); + cmListFile listFile; + bool res = listFile.ParseFile(filenametoread.c_str(), + requireProjectCommand, this); if (res) { - this->ReadListFileInternal(cacheFile, filenametoread.c_str(), + this->ReadListFileInternal(listFile, filenametoread.c_str(), noPolicyScope); } @@ -601,7 +601,7 @@ bool cmMakefile::ReadListFile(const char* listfile, return res; } -void cmMakefile::ReadListFileInternal(cmListFile const& cacheFile, +void cmMakefile::ReadListFileInternal(cmListFile const& listFile, const char* filenametoread, bool noPolicyScope) { @@ -614,11 +614,11 @@ void cmMakefile::ReadListFileInternal(cmListFile const& cacheFile, IncludeScope incScope(this, filenametoread, noPolicyScope); // Run the parsed commands. - const size_t numberFunctions = cacheFile.Functions.size(); + const size_t numberFunctions = listFile.Functions.size(); for(size_t i =0; i < numberFunctions; ++i) { cmExecutionStatus status; - this->ExecuteCommand(cacheFile.Functions[i],status); + this->ExecuteCommand(listFile.Functions[i],status); if(cmSystemTools::GetFatalErrorOccured()) { // Exit early due to error. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 5927be1..b80a1ee 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -918,7 +918,7 @@ private: bool noPolicyScope, bool requireProjectCommand); - void ReadListFileInternal(cmListFile const& cacheFile, + void ReadListFileInternal(cmListFile const& listFile, const char* filenametoread, bool noPolicyScope); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fe38bb2c29ab4273cfefb1b343b80388bea2893e commit fe38bb2c29ab4273cfefb1b343b80388bea2893e Author: Stephen Kelly AuthorDate: Sun Jun 21 19:33:54 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:46 2015 +0200 cmMakefile: Change return type of ReadListFileInternal. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 56fe028..9a1f7ef 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -601,7 +601,7 @@ bool cmMakefile::ReadListFile(const char* listfile, return res; } -bool cmMakefile::ReadListFileInternal(cmListFile const& cacheFile, +void cmMakefile::ReadListFileInternal(cmListFile const& cacheFile, const char* filenametoread, bool noPolicyScope) { @@ -633,8 +633,6 @@ bool cmMakefile::ReadListFileInternal(cmListFile const& cacheFile, } } } - - return true; } //---------------------------------------------------------------------------- diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 0c41268..5927be1 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -918,7 +918,7 @@ private: bool noPolicyScope, bool requireProjectCommand); - bool ReadListFileInternal(cmListFile const& cacheFile, + void ReadListFileInternal(cmListFile const& cacheFile, const char* filenametoread, bool noPolicyScope); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ac10fc0958c94e17d89a686d1addae0ac18dc648 commit ac10fc0958c94e17d89a686d1addae0ac18dc648 Author: Stephen Kelly AuthorDate: Sun Jun 21 19:30:23 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:10:45 2015 +0200 cmMakefile: Move listfile parsing responsibility. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 63dbe27..56fe028 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -576,8 +576,14 @@ bool cmMakefile::ReadListFile(const char* listfile, this->ListFileStack.push_back(filenametoread); - bool res = this->ReadListFileInternal(filenametoread.c_str(), - noPolicyScope, requireProjectCommand); + cmListFile cacheFile; + bool res = cacheFile.ParseFile(filenametoread.c_str(), + requireProjectCommand, this); + if (res) + { + this->ReadListFileInternal(cacheFile, filenametoread.c_str(), + noPolicyScope); + } this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str()); @@ -595,15 +601,10 @@ bool cmMakefile::ReadListFile(const char* listfile, return res; } -bool cmMakefile::ReadListFileInternal(const char* filenametoread, - bool noPolicyScope, - bool requireProjectCommand) +bool cmMakefile::ReadListFileInternal(cmListFile const& cacheFile, + const char* filenametoread, + bool noPolicyScope) { - cmListFile cacheFile; - if( !cacheFile.ParseFile(filenametoread, requireProjectCommand, this) ) - { - return false; - } // add this list file to the list of dependencies this->ListFiles.push_back( filenametoread); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 86bde0c..0c41268 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -918,9 +918,9 @@ private: bool noPolicyScope, bool requireProjectCommand); - bool ReadListFileInternal(const char* filenametoread, - bool noPolicyScope, - bool requireProjectCommand); + bool ReadListFileInternal(cmListFile const& cacheFile, + const char* filenametoread, + bool noPolicyScope); bool ParseDefineFlag(std::string const& definition, bool remove); ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Source/cmMakefile.cxx | 140 ++++++++++++++++++++++++--------------------- Source/cmMakefile.h | 15 ++--- 3 files changed, 82 insertions(+), 75 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 14:29:23 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 14:29:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-560-gd536b44 Message-ID: <20150621182923.5933BAFDF2@public.kitware.com> 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 d536b447c65401b0a3e3383d4aed457d641d468f (commit) via 217c243db04a21763848ac048edf153cd93bd883 (commit) via eb05dcd6c9b587eeb8738d9f08459d94733708f6 (commit) via cfae7fa4082e73d4282be98fa99a07c18dd53d24 (commit) via ccf7760f0035e2e0458ba59e29ab302a2d07c388 (commit) from 8a2406a57e01585050c4d451a209eeb16d83b106 (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=d536b447c65401b0a3e3383d4aed457d641d468f commit d536b447c65401b0a3e3383d4aed457d641d468f Merge: 8a2406a 217c243 Author: Stephen Kelly AuthorDate: Sun Jun 21 14:29:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 14:29:22 2015 -0400 Merge topic 'minor-cleanups' into next 217c243d cmake: Update the current snapshot when Resetting. eb05dcd6 cmLocalGenerator: Add IssueMessage method. cfae7fa4 cmMakefile: Use cmOutputConverter instead of cmLocalGenerator. ccf7760f cmOutputConverter: Constify API. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=217c243db04a21763848ac048edf153cd93bd883 commit 217c243db04a21763848ac048edf153cd93bd883 Author: Stephen Kelly AuthorDate: Sun Jun 14 01:08:34 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:19:53 2015 +0200 cmake: Update the current snapshot when Resetting. This will matter when definitions are stored in the cmState. diff --git a/Source/cmState.cxx b/Source/cmState.cxx index f0c7e6d..58500cc 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -219,13 +219,13 @@ void cmState::RemoveCacheEntryProperty(std::string const& key, ->GetCacheIterator(key.c_str()).SetProperty(propertyName, (void*)0); } -void cmState::Reset() +cmState::Snapshot cmState::Reset() { this->GlobalProperties.clear(); this->PropertyDefinitions.clear(); this->BuildsystemDirectory.Truncate(); - this->SnapshotData.Truncate(); + PositionType pos = this->SnapshotData.Truncate(); this->DefineProperty ("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY, @@ -246,6 +246,8 @@ void cmState::Reset() this->DefineProperty ("RULE_LAUNCH_CUSTOM", cmProperty::TARGET, "", "", true); + + return Snapshot(this, pos); } void cmState::DefineProperty(const std::string& name, diff --git a/Source/cmState.h b/Source/cmState.h index 070a08b..9c7574f 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -105,7 +105,7 @@ public: void RemoveCacheEntryProperty(std::string const& key, std::string const& propertyName); - void Reset(); + Snapshot Reset(); // Define a property void DefineProperty(const std::string& name, cmProperty::ScopeType scope, const char *ShortDescription, diff --git a/Source/cmake.cxx b/Source/cmake.cxx index eeb6575..e51b260 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -186,7 +186,7 @@ cmake::~cmake() void cmake::CleanupCommandsAndMacros() { - this->State->Reset(); + this->CurrentSnapshot = this->State->Reset(); this->State->RemoveUserDefinedCommands(); } @@ -370,6 +370,7 @@ void cmake::ReadListFile(const std::vector& args, // read in the list file to fill the cache if(path) { + this->CurrentSnapshot = this->State->Reset(); std::string homeDir = this->GetHomeDirectory(); std::string homeOutputDir = this->GetHomeOutputDirectory(); this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory()); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eb05dcd6c9b587eeb8738d9f08459d94733708f6 commit eb05dcd6c9b587eeb8738d9f08459d94733708f6 Author: Stephen Kelly AuthorDate: Sat Jun 13 19:32:46 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:17:59 2015 +0200 cmLocalGenerator: Add IssueMessage method. For use at generate-time instead of the cmMakefile method of the same name. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 67d0d54..2f68ab0 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -705,7 +705,8 @@ cmTargetTraceDependencies e << "Evaluation output file\n \"" << sf->GetFullPath() << "\"\ndepends on the sources of a target it is used in. This " "is a dependency loop and is not allowed."; - this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); + this->GeneratorTarget + ->LocalGenerator->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } if(emitted.insert(sf).second && this->SourcesQueued.insert(sf).second) diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 98accf9..a42d5a7 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -73,6 +73,22 @@ bool cmLocalGenerator::IsRootMakefile() const return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); } +void cmLocalGenerator::IssueMessage(cmake::MessageType t, + std::string const& text) const +{ + cmListFileContext lfc; + lfc.FilePath = this->StateSnapshot.GetCurrentSourceDirectory(); + lfc.FilePath += "/CMakeLists.txt"; + + if(!this->GlobalGenerator->GetCMakeInstance()->GetIsInTryCompile()) + { + cmOutputConverter converter(this->StateSnapshot); + lfc.FilePath = converter.Convert(lfc.FilePath, cmLocalGenerator::HOME); + } + lfc.Line = 0; + this->GlobalGenerator->GetCMakeInstance()->IssueMessage(t, text, lfc); +} + //---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { @@ -98,7 +114,7 @@ void cmLocalGenerator::ComputeObjectMaxPath() w << "CMAKE_OBJECT_PATH_MAX is set to " << pmax << ", which is less than the minimum of 128. " << "The value will be ignored."; - this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str()); + this->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } } else @@ -107,7 +123,7 @@ void cmLocalGenerator::ComputeObjectMaxPath() w << "CMAKE_OBJECT_PATH_MAX is set to \"" << plen << "\", which fails to parse as a positive integer. " << "The value will be ignored."; - this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str()); + this->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } } this->ObjectMaxPathViolations.clear(); @@ -1317,7 +1333,7 @@ void cmLocalGenerator::AddCompileOptions( "higher \"" << it->first << "_STANDARD\" \"" << standard << "\". " "This is not permitted. The COMPILE_FEATURES may not both depend on " "and be depended on by the link implementation." << std::endl; - this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); + this->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } } @@ -2041,7 +2057,7 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget const* target, "dialect \"" << lang << standardProp << "\" " << (ext ? "(with compiler extensions)" : "") << ", but CMake " "does not know the compile flags to use to enable it."; - this->GetMakefile()->IssueMessage(cmake::FATAL_ERROR, e.str()); + this->IssueMessage(cmake::FATAL_ERROR, e.str()); } else { @@ -2085,7 +2101,7 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget const* target, std::string e = "CMAKE_" + lang + "_STANDARD_DEFAULT is set to invalid value '" + std::string(defaultStd) + "'"; - this->Makefile->IssueMessage(cmake::INTERNAL_ERROR, e); + this->IssueMessage(cmake::INTERNAL_ERROR, e); return; } @@ -2301,7 +2317,7 @@ bool cmLocalGenerator::GetShouldUseOldFlags(bool shared, << flagsVar << " was removed.\n" << cmPolicies::GetPolicyWarning(cmPolicies::CMP0018); - this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, e.str()); + this->IssueMessage(cmake::AUTHOR_WARNING, e.str()); // fall through to OLD behaviour } case cmPolicies::OLD: @@ -2813,7 +2829,7 @@ cmLocalGenerator << " " << ssin << "\n" << "cannot be safely placed under this directory. " << "The build may not work correctly."; - this->Makefile->IssueMessage(cmake::WARNING, m.str()); + this->IssueMessage(cmake::WARNING, m.str()); } } #else diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 6a8c5aa..4452eef 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -14,6 +14,7 @@ #include "cmStandardIncludes.h" #include "cmState.h" +#include "cmake.h" #include "cmOutputConverter.h" class cmMakefile; @@ -304,6 +305,9 @@ public: bool IsMinGWMake() const; bool IsNMake() const; + void IssueMessage(cmake::MessageType t, std::string const& text) const; + + void ComputeObjectMaxPath(); protected: ///! put all the libraries for a target on into the given stream http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cfae7fa4082e73d4282be98fa99a07c18dd53d24 commit cfae7fa4082e73d4282be98fa99a07c18dd53d24 Author: Stephen Kelly AuthorDate: Sun Jun 21 20:16:37 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:17:18 2015 +0200 cmMakefile: Use cmOutputConverter instead of cmLocalGenerator. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 63dbe27..0338062 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -264,8 +264,8 @@ void cmMakefile::IssueMessage(cmake::MessageType t, if(!this->GetCMakeInstance()->GetIsInTryCompile()) { - lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, - cmLocalGenerator::HOME); + cmOutputConverter converter(this->StateSnapshot); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); } lfc.Line = 0; this->GetCMakeInstance()->IssueMessage(t, text, lfc); @@ -1963,8 +1963,8 @@ void cmMakefile::LogUnused(const char* reason, lfc.FilePath = path; lfc.Line = 0; } - lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath, - cmLocalGenerator::HOME); + cmOutputConverter converter(this->StateSnapshot); + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); if (this->CheckSystemVars || cmSystemTools::IsSubDirectory(path, @@ -2861,8 +2861,9 @@ cmake::MessageType cmMakefile::ExpandVariablesInStringNew( { std::ostringstream msg; cmListFileContext lfc; - lfc.FilePath = this->LocalGenerator - ->Convert(filename, cmLocalGenerator::HOME); + cmOutputConverter converter(this->StateSnapshot); + lfc.FilePath = + converter.Convert(filename, cmOutputConverter::HOME); lfc.Line = line; msg << "uninitialized variable \'" << lookup << "\'"; this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ccf7760f0035e2e0458ba59e29ab302a2d07c388 commit ccf7760f0035e2e0458ba59e29ab302a2d07c388 Author: Stephen Kelly AuthorDate: Sun Jun 14 20:27:37 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:13:28 2015 +0200 cmOutputConverter: Constify API. diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index db73a34..b0a30a1 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -27,7 +27,7 @@ cmOutputConverter::cmOutputConverter(cmState::Snapshot snapshot) std::string cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, std::string const& result, - OutputFormat format) + OutputFormat format) const { // If this is a windows shell, the result has a space, and the path // already exists, we can use a short-path to reference it without a @@ -50,7 +50,7 @@ cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, std::string cmOutputConverter::ConvertToOutputForExisting(const std::string& remote, RelativeRoot local, - OutputFormat format) + OutputFormat format) const { static_cast(local); @@ -65,7 +65,7 @@ cmOutputConverter::ConvertToOutputForExisting(const std::string& remote, std::string cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote, const std::string& local, - OutputFormat format) + OutputFormat format) const { // Perform standard conversion. std::string result = this->Convert(remote, local, format, true); @@ -76,7 +76,7 @@ cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote, } //---------------------------------------------------------------------------- -const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) +const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) const { switch (relroot) { @@ -91,7 +91,7 @@ const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) std::string cmOutputConverter::Convert(const std::string& source, RelativeRoot relative, - OutputFormat output) + OutputFormat output) const { // Convert the path to a relative path. std::string result = source; @@ -125,7 +125,7 @@ std::string cmOutputConverter::Convert(const std::string& source, //---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source, - OutputFormat output) + OutputFormat output) const { std::string result = source; // Convert it to an output path. @@ -163,7 +163,7 @@ std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source, std::string cmOutputConverter::Convert(RelativeRoot remote, const std::string& local, OutputFormat output, - bool optional) + bool optional) const { const char* remotePath = this->GetRelativeRootPath(remote); @@ -192,7 +192,7 @@ static bool cmOutputConverterNotAbove(const char* a, const char* b) std::string cmOutputConverter::ConvertToRelativePath(const std::vector& local, const std::string& in_remote, - bool force) + bool force) const { // The path should never be quoted. assert(in_remote[0] != '\"'); @@ -318,7 +318,7 @@ static bool cmOutputConverterIsShellOperator(const std::string& str) std::string cmOutputConverter::EscapeForShell(const std::string& str, bool makeVars, bool forEcho, - bool useWatcomQuote) + bool useWatcomQuote) const { // Do not escape shell operators. if(cmOutputConverterIsShellOperator(str)) diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 1d3f8c7..482a64b 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -39,35 +39,35 @@ public: enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT }; enum OutputFormat { UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, RESPONSE }; std::string ConvertToOutputFormat(const std::string& source, - OutputFormat output); + OutputFormat output) const; std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED); + OutputFormat output = UNCHANGED) const; std::string Convert(RelativeRoot remote, const std::string& local, OutputFormat output = UNCHANGED, - bool optional = false); + bool optional = false) const; /** * Get path for the specified relative root. */ - const char* GetRelativeRootPath(RelativeRoot relroot); + const char* GetRelativeRootPath(RelativeRoot relroot) const; ///! for existing files convert to output path and short path if spaces std::string ConvertToOutputForExisting(const std::string& remote, RelativeRoot local = START_OUTPUT, - OutputFormat format = SHELL); + OutputFormat format = SHELL) const; /** For existing path identified by RelativeRoot convert to output path and short path if spaces. */ std::string ConvertToOutputForExisting(RelativeRoot remote, const std::string& local = "", - OutputFormat format = SHELL); + OutputFormat format = SHELL) const; void SetLinkScriptShell(bool linkScriptShell); std::string EscapeForShell(const std::string& str, bool makeVars = false, bool forEcho = false, - bool useWatcomQuote = false); + bool useWatcomQuote = false) const; static std::string EscapeForCMake(const std::string& str); @@ -88,14 +88,14 @@ public: */ std::string ConvertToRelativePath(const std::vector& local, const std::string& in_remote, - bool force = false); + bool force = false) const; private: cmState* GetState() const; std::string ConvertToOutputForExistingCommon(const std::string& remote, std::string const& result, - OutputFormat format); + OutputFormat format) const; private: cmState::Snapshot StateSnapshot; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index a13c13f..f0c7e6d 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -741,14 +741,14 @@ void cmState::Snapshot::SetCurrentBinaryDirectory(std::string const& dir) } std::vector const& -cmState::Snapshot::GetCurrentSourceDirectoryComponents() +cmState::Snapshot::GetCurrentSourceDirectoryComponents() const { return this->Position->BuildSystemDirectory ->CurrentSourceDirectoryComponents; } std::vector const& -cmState::Snapshot::GetCurrentBinaryDirectoryComponents() +cmState::Snapshot::GetCurrentBinaryDirectoryComponents() const { return this->Position->BuildSystemDirectory ->CurrentBinaryDirectoryComponents; diff --git a/Source/cmState.h b/Source/cmState.h index 353a6c6..070a08b 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -43,8 +43,10 @@ public: const char* GetCurrentBinaryDirectory() const; void SetCurrentBinaryDirectory(std::string const& dir); - std::vector const& GetCurrentSourceDirectoryComponents(); - std::vector const& GetCurrentBinaryDirectoryComponents(); + std::vector const& + GetCurrentSourceDirectoryComponents() const; + std::vector const& + GetCurrentBinaryDirectoryComponents() const; const char* GetRelativePathTopSource() const; const char* GetRelativePathTopBinary() const; ----------------------------------------------------------------------- Summary of changes: Source/cmGeneratorTarget.cxx | 3 ++- Source/cmLocalGenerator.cxx | 30 +++++++++++++++++++++++------- Source/cmLocalGenerator.h | 4 ++++ Source/cmMakefile.cxx | 13 +++++++------ Source/cmOutputConverter.cxx | 18 +++++++++--------- Source/cmOutputConverter.h | 18 +++++++++--------- Source/cmState.cxx | 10 ++++++---- Source/cmState.h | 8 +++++--- Source/cmake.cxx | 3 ++- 9 files changed, 67 insertions(+), 40 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 14:58:02 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 14:58:02 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-566-g1fa54ed Message-ID: <20150621185802.6BD3BB03F7@public.kitware.com> 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 1fa54edcbf30fed8df32f30e0cc4466af6775436 (commit) via 782657db48e0d5f0d33a19ad51678d36ddfa7ad5 (commit) via a863c59f70a7556c010990a362e4d13792670148 (commit) via 076760a63c665dd2269c74d415e323f55969f544 (commit) via 569f4785371399628dd401e2522dccc54c73e34e (commit) via f971ab04cfdcb73e1ac2b182caf302172aebe6a8 (commit) from d536b447c65401b0a3e3383d4aed457d641d468f (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=1fa54edcbf30fed8df32f30e0cc4466af6775436 commit 1fa54edcbf30fed8df32f30e0cc4466af6775436 Merge: d536b44 782657d Author: Stephen Kelly AuthorDate: Sun Jun 21 14:58:01 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 14:58:01 2015 -0400 Merge topic 'clean-up-cmListFileArgument' into next 782657db cmListFileArgument: Remove FilePath member. a863c59f cmMakefile: Use GetExecutionFileStack method. 076760a6 cmMakefile: Add filename context to ExpandArguments. 569f4785 cmFunctionCommand: Store the FilePath when creating the prototype. f971ab04 cmMacroCommand: Store the FilePath when creating the prototype. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=782657db48e0d5f0d33a19ad51678d36ddfa7ad5 commit 782657db48e0d5f0d33a19ad51678d36ddfa7ad5 Author: Stephen Kelly AuthorDate: Sat May 23 23:43:37 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:57:26 2015 +0200 cmListFileArgument: Remove FilePath member. It is now unused. diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index 0d24ed5..591a2cd 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -426,8 +426,7 @@ int CCONV cmExecuteCommand(void *arg, const char *name, { // Assume all arguments are quoted. lff.Arguments.push_back( - cmListFileArgument(args[i], cmListFileArgument::Quoted, - "[CMake-Plugin]", 0)); + cmListFileArgument(args[i], cmListFileArgument::Quoted, 0)); } cmExecutionStatus status; return mf->ExecuteCommand(lff,status); diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index 662f77d..b3576c3 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -176,17 +176,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, f->FilePath = this->GetStartingContext().FilePath; mf.RecordPolicies(f->Policies); - // Set the FilePath on the arguments to match the function since it is - // not stored and the original values may be freed - for (unsigned int i = 0; i < f->Functions.size(); ++i) - { - for (unsigned int j = 0; j < f->Functions[i].Arguments.size(); ++j) - { - f->Functions[i].Arguments[j].FilePath = - f->Functions[i].FilePath.c_str(); - } - } - std::string newName = "_" + this->Args[0]; mf.GetState()->RenameCommand(this->Args[0], newName); mf.GetState()->AddCommand(f); diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index ca58314..006ca4c 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -234,8 +234,7 @@ bool cmListFile::ParseFile(const char* filename, { cmListFileFunction project; project.Name = "PROJECT"; - cmListFileArgument prj("Project", cmListFileArgument::Unquoted, - filename, 0); + cmListFileArgument prj("Project", cmListFileArgument::Unquoted, 0); project.Arguments.push_back(prj); this->Functions.insert(this->Functions.begin(),project); } @@ -375,7 +374,7 @@ bool cmListFileParser::ParseFunction(const char* name, long line) bool cmListFileParser::AddArgument(cmListFileLexer_Token* token, cmListFileArgument::Delimiter delim) { - cmListFileArgument a(token->text, delim, this->FileName, token->line); + cmListFileArgument a(token->text, delim, token->line); this->Function.Arguments.push_back(a); if(this->Separation == SeparationOkay) { diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index 4002d94..f5859ec 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -33,12 +33,11 @@ struct cmListFileArgument Quoted, Bracket }; - cmListFileArgument(): Value(), Delim(Unquoted), FilePath(0), Line(0) {} - cmListFileArgument(const cmListFileArgument& r): - Value(r.Value), Delim(r.Delim), FilePath(r.FilePath), Line(r.Line) {} - cmListFileArgument(const std::string& v, Delimiter d, const char* file, - long line): Value(v), Delim(d), - FilePath(file), Line(line) {} + cmListFileArgument(): Value(), Delim(Unquoted), Line(0) {} + cmListFileArgument(const cmListFileArgument& r) + : Value(r.Value), Delim(r.Delim), Line(r.Line) {} + cmListFileArgument(const std::string& v, Delimiter d, long line) + : Value(v), Delim(d), Line(line) {} bool operator == (const cmListFileArgument& r) const { return (this->Value == r.Value) && (this->Delim == r.Delim); @@ -49,7 +48,6 @@ struct cmListFileArgument } std::string Value; Delimiter Delim; - const char* FilePath; long Line; }; diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index c3e67d7..0b945b2 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -139,10 +139,6 @@ bool cmMacroHelperCommand::InvokeInitialPass this->Functions[c].Arguments.begin(); k != this->Functions[c].Arguments.end(); ++k) { - // Set the FilePath on the arguments to match the function since it is - // not stored and the original values may be freed - k->FilePath = this->FilePath.c_str(); - cmListFileArgument arg; arg.Value = k->Value; if(k->Delim != cmListFileArgument::Bracket) @@ -173,7 +169,6 @@ bool cmMacroHelperCommand::InvokeInitialPass } } arg.Delim = k->Delim; - arg.FilePath = k->FilePath; arg.Line = k->Line; newLFF.Arguments.push_back(arg); } diff --git a/Source/cmVariableWatchCommand.cxx b/Source/cmVariableWatchCommand.cxx index 09cef5e..6521c04 100644 --- a/Source/cmVariableWatchCommand.cxx +++ b/Source/cmVariableWatchCommand.cxx @@ -49,21 +49,21 @@ static void cmVariableWatchCommandVariableAccessed( newLFF.Arguments.clear(); newLFF.Arguments.push_back( cmListFileArgument(variable, cmListFileArgument::Quoted, - "unknown", 9999)); + 9999)); newLFF.Arguments.push_back( cmListFileArgument(accessString, cmListFileArgument::Quoted, - "unknown", 9999)); + 9999)); newLFF.Arguments.push_back( cmListFileArgument(newValue?newValue:"", cmListFileArgument::Quoted, - "unknown", 9999)); + 9999)); newLFF.Arguments.push_back( cmListFileArgument(currentListFile, cmListFileArgument::Quoted, - "unknown", 9999)); + 9999)); newLFF.Arguments.push_back( cmListFileArgument(stack, cmListFileArgument::Quoted, - "unknown", 9999)); + 9999)); newLFF.Name = data->Command; - newLFF.FilePath = "Some weird path"; + newLFF.FilePath = "unknown"; newLFF.Line = 9999; cmExecutionStatus status; if(!makefile->ExecuteCommand(newLFF,status)) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a863c59f70a7556c010990a362e4d13792670148 commit a863c59f70a7556c010990a362e4d13792670148 Author: Stephen Kelly AuthorDate: Sat Jun 13 19:18:28 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:57:25 2015 +0200 cmMakefile: Use GetExecutionFileStack method. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 72aa74c..a1b1a94 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -308,7 +308,7 @@ cmListFileContext cmMakefile::GetExecutionContext() const void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const { std::ostringstream msg; - msg << lff.FilePath << "(" << lff.Line << "): "; + msg << this->GetExecutionFilePath() << "(" << lff.Line << "): "; msg << lff.Name << "("; for(std::vector::const_iterator i = lff.Arguments.begin(); i != lff.Arguments.end(); ++i) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=076760a63c665dd2269c74d415e323f55969f544 commit 076760a63c665dd2269c74d415e323f55969f544 Author: Stephen Kelly AuthorDate: Sat May 23 20:32:05 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:57:25 2015 +0200 cmMakefile: Add filename context to ExpandArguments. The cmListFileArgument currently stores a FilePath for use in this method. The filename is the same as the CMAKE_CURRENT_LIST_FILE, except if executing a macro or function defined in another file. Set the context filename when expanding the arguments of macros and functions using the filename recorded when defining the prototype. diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index 848cfd1..662f77d 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -215,7 +215,8 @@ ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf) if(!cmSystemTools::Strucmp(lff.Name.c_str(),"endfunction")) { std::vector expandedArguments; - mf.ExpandArguments(lff.Arguments, expandedArguments); + mf.ExpandArguments(lff.Arguments, expandedArguments, + this->GetStartingContext().FilePath.c_str()); // if the endfunction has arguments then make sure // they match the ones in the opening function command if ((expandedArguments.empty() || diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 7793dc4..c3e67d7 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -251,7 +251,8 @@ ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf) if(!cmSystemTools::Strucmp(lff.Name.c_str(),"endmacro")) { std::vector expandedArguments; - mf.ExpandArguments(lff.Arguments, expandedArguments); + mf.ExpandArguments(lff.Arguments, expandedArguments, + this->GetStartingContext().FilePath.c_str()); // if the endmacro has arguments make sure they // match the arguments of the macro if ((expandedArguments.empty() || diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 63dbe27..72aa74c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3313,11 +3313,25 @@ bool cmMakefile::IsLoopBlock() const return !this->LoopBlockCounter.empty() && this->LoopBlockCounter.top() > 0; } +std::string cmMakefile::GetExecutionFilePath() const +{ + if (this->CallStack.empty()) + { + return std::string(); + } + return this->CallStack.back().Context->FilePath; +} + //---------------------------------------------------------------------------- bool cmMakefile::ExpandArguments( std::vector const& inArgs, - std::vector& outArgs) const + std::vector& outArgs, const char* filename) const { + std::string efp = this->GetExecutionFilePath(); + if (!filename) + { + filename = efp.c_str(); + } std::vector::const_iterator i; std::string value; outArgs.reserve(inArgs.size()); @@ -3332,8 +3346,7 @@ bool cmMakefile::ExpandArguments( // Expand the variables in the argument. value = i->Value; this->ExpandVariablesInString(value, false, false, false, - i->FilePath, i->Line, - false, false); + filename, i->Line, false, false); // If the argument is quoted, it should be one argument. // Otherwise, it may be a list of arguments. @@ -3352,8 +3365,13 @@ bool cmMakefile::ExpandArguments( //---------------------------------------------------------------------------- bool cmMakefile::ExpandArguments( std::vector const& inArgs, - std::vector& outArgs) const + std::vector& outArgs, const char* filename) const { + std::string efp = this->GetExecutionFilePath(); + if (!filename) + { + filename = efp.c_str(); + } std::vector::const_iterator i; std::string value; outArgs.reserve(inArgs.size()); @@ -3368,8 +3386,7 @@ bool cmMakefile::ExpandArguments( // Expand the variables in the argument. value = i->Value; this->ExpandVariablesInString(value, false, false, false, - i->FilePath, i->Line, - false, false); + filename, i->Line, false, false); // If the argument is quoted, it should be one argument. // Otherwise, it may be a list of arguments. diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 86bde0c..8930b6d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -662,10 +662,12 @@ public: * variable replacement and list expansion. */ bool ExpandArguments(std::vector const& inArgs, - std::vector& outArgs) const; + std::vector& outArgs, + const char* filename = 0) const; bool ExpandArguments(std::vector const& inArgs, - std::vector& outArgs) const; + std::vector& outArgs, + const char* filename = 0) const; /** * Get the instance @@ -840,6 +842,8 @@ public: const char* GetDefineFlagsCMP0059() const; + std::string GetExecutionFilePath() const; + protected: // add link libraries and directories to the target void AddGlobalLinkInformation(const std::string& name, cmTarget& target); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=569f4785371399628dd401e2522dccc54c73e34e commit 569f4785371399628dd401e2522dccc54c73e34e Author: Stephen Kelly AuthorDate: Sat May 23 22:21:08 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:31:28 2015 +0200 cmFunctionCommand: Store the FilePath when creating the prototype. diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index dc6d2d2..848cfd1 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -43,6 +43,7 @@ public: newC->Args = this->Args; newC->Functions = this->Functions; newC->Policies = this->Policies; + newC->FilePath = this->FilePath; return newC; } @@ -71,6 +72,7 @@ public: std::vector Args; std::vector Functions; cmPolicies::PolicyMap Policies; + std::string FilePath; }; bool cmFunctionHelperCommand::InvokeInitialPass @@ -171,6 +173,7 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmFunctionHelperCommand *f = new cmFunctionHelperCommand(); f->Args = this->Args; f->Functions = this->Functions; + f->FilePath = this->GetStartingContext().FilePath; mf.RecordPolicies(f->Policies); // Set the FilePath on the arguments to match the function since it is http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f971ab04cfdcb73e1ac2b182caf302172aebe6a8 commit f971ab04cfdcb73e1ac2b182caf302172aebe6a8 Author: Stephen Kelly AuthorDate: Sat May 23 21:28:30 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 20:31:27 2015 +0200 cmMacroCommand: Store the FilePath when creating the prototype. Instead of setting it each time the macro is invoked. diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 028ab62..7793dc4 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -122,10 +122,6 @@ bool cmMacroHelperCommand::InvokeInitialPass sprintf(argvName,"${ARGV%i}",j); argVs.push_back(argvName); } - if(!this->Functions.empty()) - { - this->FilePath = this->Functions[0].FilePath; - } // Invoke all the functions that were collected in the block. cmListFileFunction newLFF; // for each function @@ -225,6 +221,7 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmMacroHelperCommand *f = new cmMacroHelperCommand(); f->Args = this->Args; f->Functions = this->Functions; + f->FilePath = this->GetStartingContext().FilePath; mf.RecordPolicies(f->Policies); std::string newName = "_" + this->Args[0]; mf.GetState()->RenameCommand(this->Args[0], newName); ----------------------------------------------------------------------- Summary of changes: Source/cmCPluginAPI.cxx | 3 +-- Source/cmFunctionCommand.cxx | 17 +++++------------ Source/cmListFileCache.cxx | 5 ++--- Source/cmListFileCache.h | 12 +++++------- Source/cmMacroCommand.cxx | 13 +++---------- Source/cmMakefile.cxx | 31 ++++++++++++++++++++++++------- Source/cmMakefile.h | 8 ++++++-- Source/cmVariableWatchCommand.cxx | 12 ++++++------ 8 files changed, 52 insertions(+), 49 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 15:14:23 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 15:14:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-572-g2fc23bc Message-ID: <20150621191423.C68B4187FB@public.kitware.com> 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 2fc23bc53942df11b9107772eebd9f9a4b2c62a9 (commit) via 820986edfff97779bb0c84fd9da3b284921c8ae4 (commit) via b3e2e332eb9c2a7d73ec872664cee896248c6c38 (commit) via 61c0113c13fe4a65c394e56cc0354db0b80d9c4c (commit) via 080489b8a92253bedbb67cc7958351350f4b2341 (commit) via 8bfaadfa394c9b462259ea13df6b2df7c4544ab4 (commit) from 1fa54edcbf30fed8df32f30e0cc4466af6775436 (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=2fc23bc53942df11b9107772eebd9f9a4b2c62a9 commit 2fc23bc53942df11b9107772eebd9f9a4b2c62a9 Merge: 1fa54ed 820986e Author: Stephen Kelly AuthorDate: Sun Jun 21 15:14:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 15:14:22 2015 -0400 Merge topic 'minor-cleanups' into next 820986ed cmLocalGenerator: Constify GetIncludeDirectories method. b3e2e332 QtAutogen: Get the global generator from the Makefile. 61c0113c cmLocalUnixMakefileGenerator3: Remove unused method. 080489b8 cmMakefile: Use member directly instead of through method. 8bfaadfa cmMakefile: Move IsRoot API from cmLocalGenerator. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=820986edfff97779bb0c84fd9da3b284921c8ae4 commit 820986edfff97779bb0c84fd9da3b284921c8ae4 Author: Stephen Kelly AuthorDate: Sat Jun 6 12:57:19 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:09 2015 +0200 cmLocalGenerator: Constify GetIncludeDirectories method. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 119cba9..6f98ee2 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1341,7 +1341,7 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, const std::string& lang, const std::string& config, bool stripImplicitInclDirs - ) + ) const { // Need to decide whether to automatically include the source and // binary directories at the beginning of the include path. diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index a3f9588..98f4d3a 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -183,7 +183,7 @@ public: cmGeneratorTarget* target, const std::string& lang = "C", const std::string& config = "", - bool stripImplicitInclDirs = true); + bool stripImplicitInclDirs = true) const; void AddCompileOptions(std::string& flags, cmTarget* target, const std::string& lang, const std::string& config); void AddCompileDefinitions(std::set& defines, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b3e2e332eb9c2a7d73ec872664cee896248c6c38 commit b3e2e332eb9c2a7d73ec872664cee896248c6c38 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:22 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:08 2015 +0200 QtAutogen: Get the global generator from the Makefile. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index f472ed8..53fea83 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -368,8 +368,7 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) #if defined(_WIN32) && !defined(__CYGWIN__) bool usePRE_BUILD = false; - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); - cmGlobalGenerator* gg = localGen->GetGlobalGenerator(); + cmGlobalGenerator* gg = makefile->GetGlobalGenerator(); if(gg->GetName().find("Visual Studio") != std::string::npos) { cmGlobalVisualStudioGenerator* vsgg = http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=61c0113c13fe4a65c394e56cc0354db0b80d9c4c commit 61c0113c13fe4a65c394e56cc0354db0b80d9c4c Author: Stephen Kelly AuthorDate: Sat Jun 6 13:06:47 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:07 2015 +0200 cmLocalUnixMakefileGenerator3: Remove unused method. diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 4e4d146..b097c95 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -149,9 +149,6 @@ public: void AddImplicitDepends(cmTarget const& tgt, const std::string& lang, const char* obj, const char* src); - void AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target); - // write the target rules for the local Makefile into the stream void WriteLocalAllRules(std::ostream& ruleFileStream); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=080489b8a92253bedbb67cc7958351350f4b2341 commit 080489b8a92253bedbb67cc7958351350f4b2341 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:39:27 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:06 2015 +0200 cmMakefile: Use member directly instead of through method. This function will not be around much longer anyway. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index cf7897e..64d8638 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -105,7 +105,7 @@ public: ++it; if(it == this->VarStack.rend()) { - cmLocalGenerator* plg = mf->GetLocalGenerator()->GetParent(); + cmLocalGenerator* plg = mf->LocalGenerator->GetParent(); if(!plg) { return false; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8bfaadfa394c9b462259ea13df6b2df7c4544ab4 commit 8bfaadfa394c9b462259ea13df6b2df7c4544ab4 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:07:15 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:05 2015 +0200 cmMakefile: Move IsRoot API from cmLocalGenerator. diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 4fe52dd..0f61225 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -529,7 +529,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalUnixMakefileGenerator3* lg) { // Only subdirectories need these rules. - if(lg->IsRootMakefile()) + if(lg->GetMakefile()->IsRootMakefile()) { return; } @@ -1034,7 +1034,7 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule static_cast(this->LocalGenerators[i]); // for the passed in makefile or if this is the top Makefile wripte out // the targets - if (lg2 == lg || lg->IsRootMakefile()) + if (lg2 == lg || lg->GetMakefile()->IsRootMakefile()) { // for each target Generate the rule files for each target. cmTargets& targets = lg2->GetMakefile()->GetTargets(); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a42d5a7..119cba9 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -68,11 +68,6 @@ cmLocalGenerator::~cmLocalGenerator() delete this->Makefile; } -bool cmLocalGenerator::IsRootMakefile() const -{ - return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); -} - void cmLocalGenerator::IssueMessage(cmake::MessageType t, std::string const& text) const { diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 4452eef..a3f9588 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -40,9 +40,6 @@ public: cmState::Snapshot snapshot); virtual ~cmLocalGenerator(); - /// @return whether we are processing the top CMakeLists.txt file. - bool IsRootMakefile() const; - /** * Generate the makefile for this directory. */ diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 427ae10..4db36fc 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -58,7 +58,7 @@ void cmLocalNinjaGenerator::Generate() #endif // We do that only once for the top CMakeLists.txt file. - if(this->IsRootMakefile()) + if(this->Makefile->IsRootMakefile()) { this->WriteBuildFileTop(); @@ -298,7 +298,7 @@ void cmLocalNinjaGenerator::WriteProcessedMakefile(std::ostream& os) << "# Write statements declared in CMakeLists.txt:" << std::endl << "# " << this->Makefile->GetDefinition("CMAKE_CURRENT_LIST_FILE") << std::endl; - if(this->IsRootMakefile()) + if(this->Makefile->IsRootMakefile()) os << "# Which is the root file." << std::endl; cmGlobalNinjaGenerator::WriteDivider(os); os << std::endl; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 0338062..cf7897e 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1608,6 +1608,11 @@ void cmMakefile::PopMacroScope(bool reportError) this->PopFunctionBlockerBarrier(reportError); } +bool cmMakefile::IsRootMakefile() const +{ + return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); +} + //---------------------------------------------------------------------------- class cmMakefileCurrent { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 86bde0c..44bd8c6 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -90,6 +90,9 @@ public: */ void AddFunctionBlocker(cmFunctionBlocker* fb); + /// @return whether we are processing the top CMakeLists.txt file. + bool IsRootMakefile() const; + /** * Remove the function blocker whose scope ends with the given command. * This returns ownership of the function blocker object. diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 90bc111..46d7e01 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -53,7 +53,7 @@ bool cmProjectCommand // CMAKE_PROJECT_NAME will match PROJECT_NAME, and cmake --build // will work. if(!this->Makefile->GetDefinition("CMAKE_PROJECT_NAME") - || (this->Makefile->GetLocalGenerator()->IsRootMakefile())) + || (this->Makefile->IsRootMakefile())) { this->Makefile->AddDefinition("CMAKE_PROJECT_NAME", args[0].c_str()); this->Makefile->AddCacheDefinition ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalUnixMakefileGenerator3.cxx | 4 ++-- Source/cmLocalGenerator.cxx | 7 +------ Source/cmLocalGenerator.h | 5 +---- Source/cmLocalNinjaGenerator.cxx | 4 ++-- Source/cmLocalUnixMakefileGenerator3.h | 3 --- Source/cmMakefile.cxx | 7 ++++++- Source/cmMakefile.h | 3 +++ Source/cmProjectCommand.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 3 +-- 9 files changed, 17 insertions(+), 21 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 15:20:52 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 15:20:52 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-581-gc9f6b5d Message-ID: <20150621192052.92B3DAEF57@public.kitware.com> 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 c9f6b5dc97b82d5fbbf1d45e99e3f2bcda052768 (commit) via 054e13e2db7a6054e0014022eb319320ca78a137 (commit) via 3fd185801ce42f1267d9463abeb37913bd56eabb (commit) via c1a69a460d2f3eb20ff7c3ed25ebd699e4f6fb66 (commit) via 63b2059ea92974bf2162ba2ee34c930906b7da9e (commit) via ce7e0688d1792550a92cdb0530474160e7b20948 (commit) via 507f72acaa17aa336e928e05e1e3cc7d49c07bd1 (commit) via 5d1e88d7ac9fa35481b6acb9a2523c364dfd476c (commit) via dbcb4464ac665b238087eeecd634d7ab51913713 (commit) from 2fc23bc53942df11b9107772eebd9f9a4b2c62a9 (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=c9f6b5dc97b82d5fbbf1d45e99e3f2bcda052768 commit c9f6b5dc97b82d5fbbf1d45e99e3f2bcda052768 Merge: 2fc23bc 054e13e Author: Stephen Kelly AuthorDate: Sun Jun 21 15:20:51 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 15:20:51 2015 -0400 Merge topic 'use-generator-target' into next 054e13e2 Get the local generator from the GeneratorTarget. 3fd18580 cmMakefileTargetGenerator: Require cmGeneratorTarget. c1a69a46 cmNinjaGenerator: Require cmGeneratorTarget. 63b2059e cmGeneratorTarget: Require a cmLocalGenerator to construct. ce7e0688 cmGlobalGenerator: Create GeneratorTargets with a local generator. 507f72ac GHS: Use a cmGeneratorTarget in generator API. 5d1e88d7 cmGeneratorTarget: Add accessor for cmLocalGenerator. dbcb4464 C::B: Get the Makefile from the LocalGenerator, not vice-versa. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=054e13e2db7a6054e0014022eb319320ca78a137 commit 054e13e2db7a6054e0014022eb319320ca78a137 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:06 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:15:21 2015 +0200 Get the local generator from the GeneratorTarget. The Makefile should not know the LocalGenerator at all diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index fa471c9..09fad5c 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1173,8 +1173,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(linkee); + cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); - cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index a8eef82..3bc0eb7 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(Makefile->GetLocalGenerator()) + , LocalGenerator(target->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 53fea83..b03e45a 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -521,10 +521,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() - ->GetGeneratorTarget(target); + cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); + cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9b78df3..12a1e42 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->Makefile->GetLocalGenerator(); + this->GeneratorTarget->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3fd185801ce42f1267d9463abeb37913bd56eabb commit 3fd185801ce42f1267d9463abeb37913bd56eabb Author: Stephen Kelly AuthorDate: Sat Jun 6 14:57:26 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:15:21 2015 +0200 cmMakefileTargetGenerator: Require cmGeneratorTarget. diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 37b297e..416063f 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 450f573..660027c 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 402dfc6..fa471c9 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,16 +41,15 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target; + this->Target = target->Target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast( - this->Makefile->GetLocalGenerator()); + static_cast(target->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); + this->GeneratorTarget = target; cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 2e1b052..9182236 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmTarget* target); + cmMakefileTargetGenerator(cmGeneratorTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 25d929c..303ca63 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c1a69a460d2f3eb20ff7c3ed25ebd699e4f6fb66 commit c1a69a460d2f3eb20ff7c3ed25ebd699e4f6fb66 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:02:24 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:15:20 2015 +0200 cmNinjaGenerator: Require cmGeneratorTarget. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index bbf03ff..2fe53bf 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target->Target) + : cmNinjaTargetGenerator(target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 6e35cd4..b18f368 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -57,19 +57,18 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target), - Makefile(target->GetMakefile()), + Target(target->Target), + Makefile(target->Makefile), LocalGenerator( - static_cast(Makefile->GetLocalGenerator())), + static_cast(target->GetLocalGenerator())), Objects() { - this->GeneratorTarget = - this->GetGlobalGenerator()->GetGeneratorTarget(target); + this->GeneratorTarget = target; MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 4e7d8b3..fc361b2 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmTarget* target); + cmNinjaTargetGenerator(cmGeneratorTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index 42d6b46..c3bf011 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target->Target) {} + : cmNinjaTargetGenerator(target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=63b2059ea92974bf2162ba2ee34c930906b7da9e commit 63b2059ea92974bf2162ba2ee34c930906b7da9e Author: Stephen Kelly AuthorDate: Sat Jun 6 13:14:04 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:15:20 2015 +0200 cmGeneratorTarget: Require a cmLocalGenerator to construct. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 482eefd..4494553 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,11 +220,12 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) + : Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); + this->LocalGenerator = lg; this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 645b792..675ee9f 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,7 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*); + cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); cmLocalGenerator* GetLocalGenerator() const; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index c4396c6..14eaeac 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1465,7 +1465,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t); + cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1475,7 +1475,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ce7e0688d1792550a92cdb0530474160e7b20948 commit ce7e0688d1792550a92cdb0530474160e7b20948 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:12:24 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:15:00 2015 +0200 cmGlobalGenerator: Create GeneratorTargets with a local generator. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index a462113..c4396c6 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1456,9 +1456,10 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) +void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) { cmGeneratorTargetsType generatorTargets; + cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) @@ -1487,7 +1488,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); + this->CreateGeneratorTargets(this->LocalGenerators[i]); } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f02df90..d606cc9 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -483,7 +483,7 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmMakefile* mf); + void CreateGeneratorTargets(cmLocalGenerator* lg); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index e51b260..0570399 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -483,7 +483,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(mf); + gg->CreateGeneratorTargets(lg.get()); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=507f72acaa17aa336e928e05e1e3cc7d49c07bd1 commit 507f72acaa17aa336e928e05e1e3cc7d49c07bd1 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:02:59 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:59 2015 +0200 GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 01e2011..da371b1 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,23 +21,24 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) - : Target(target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) + : Target(target->Target) + , GeneratorTarget(target) , LocalGenerator(static_cast( - target->GetMakefile()->GetLocalGenerator())) - , Makefile(target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target)) + target->GetLocalGenerator())) + , Makefile(target->Target->GetMakefile()) + , TargetGroup(DetermineIfTargetGroup(target->Target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target); + this->RelBuildFileName += this->GetBuildFileName(target->Target); - std::string absPathToRoot = this->GetAbsPathToRoot(target); + std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; @@ -354,11 +355,11 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() { // library directories cmTargetDependSet tds = - this->GetGlobalGenerator()->GetTargetDirectDepends(*this->Target); + this->GetGlobalGenerator()->GetTargetDirectDepends(this->GeneratorTarget); for (cmTargetDependSet::iterator tdsI = tds.begin(); tdsI != tds.end(); ++tdsI) { - const cmTarget *tg(*tdsI); + const cmTarget *tg = (*tdsI)->Target; *this->GetFolderBuildStreams() << " -L\"" << GetAbsBuildFilePath(tg) << "\"" << std::endl; } @@ -373,7 +374,8 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGhsMultiTargetGenerator gmtg(tg); + cmGeneratorTarget* gt = GetGlobalGenerator()->GetGeneratorTarget(tg); + cmGhsMultiTargetGenerator gmtg(gt); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index 8e81db8..c29a31e 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmTarget *target); + cmGhsMultiTargetGenerator(cmGeneratorTarget* target); virtual ~cmGhsMultiTargetGenerator(); @@ -100,6 +100,7 @@ private: const std::string &language); cmTarget *Target; + cmGeneratorTarget* GeneratorTarget; cmLocalGhsMultiGenerator *LocalGenerator; cmMakefile *Makefile; std::string AbsBuildFilePath; diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 870b9b9..8e498dd 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second->Target); + cmGhsMultiTargetGenerator tg(l->second); tg.Generate(); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5d1e88d7ac9fa35481b6acb9a2523c364dfd476c commit 5d1e88d7ac9fa35481b6acb9a2523c364dfd476c Author: Stephen Kelly AuthorDate: Sat Jun 6 12:59:25 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:59 2015 +0200 cmGeneratorTarget: Add accessor for cmLocalGenerator. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 2f68ab0..482eefd 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -228,6 +228,11 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } +cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const +{ + return this->LocalGenerator; +} + //---------------------------------------------------------------------------- int cmGeneratorTarget::GetType() const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index a8edcb8..645b792 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -26,6 +26,8 @@ class cmGeneratorTarget public: cmGeneratorTarget(cmTarget*); + cmLocalGenerator* GetLocalGenerator() const; + int GetType() const; std::string GetName() const; const char *GetProperty(const std::string& prop) const; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dbcb4464ac665b238087eeecd634d7ab51913713 commit dbcb4464ac665b238087eeecd634d7ab51913713 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:00:51 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 21:14:59 2015 +0200 C::B: Get the Makefile from the LocalGenerator, not vice-versa. The Makefile is a configure-time concept, and the LocalGenerator is a generate time concept. The LocalGenerator should not be available from the Makefile. diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e374387..a31e832 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -313,7 +313,7 @@ void cmExtraCodeBlocksGenerator " "<\n"; - this->AppendTarget(fout, "all", 0, make.c_str(), mf, compiler.c_str()); + this->AppendTarget(fout, "all", 0, make.c_str(), lgs[0], compiler.c_str()); // add all executable and library targets and some of the GLOBAL // and UTILITY targets @@ -335,7 +335,7 @@ void cmExtraCodeBlocksGenerator makefile->GetHomeOutputDirectory())==0) { this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } } break; @@ -351,7 +351,7 @@ void cmExtraCodeBlocksGenerator } this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); break; case cmTarget::EXECUTABLE: case cmTarget::STATIC_LIBRARY: @@ -360,11 +360,11 @@ void cmExtraCodeBlocksGenerator case cmTarget::OBJECT_LIBRARY: { this->AppendTarget(fout, ti->first, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; this->AppendTarget(fout, fastTarget, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } break; default: @@ -519,14 +519,16 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( - cmMakefile* mf, cmTarget* target) const + cmLocalGenerator* lg, + cmTarget* target) const { + cmMakefile *mf = lg->GetMakefile(); // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = mf->GetCurrentBinaryDirectory(); filename += "/"; - filename += mf->GetLocalGenerator()->GetTargetDirectory(*target); + filename += lg->GetTargetDirectory(*target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -547,9 +549,10 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler) { + cmMakefile const* makefile = lg->GetMakefile(); std::string makefileName = makefile->GetCurrentBinaryDirectory(); makefileName += "/Makefile"; @@ -583,7 +586,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::string location; if ( target->GetType()==cmTarget::OBJECT_LIBRARY) { - location = this->CreateDummyTargetFile(const_cast(makefile), + location = this->CreateDummyTargetFile(const_cast(lg), target); } else @@ -618,8 +621,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::set uniqIncludeDirs; std::vector includes; - target->GetMakefile()->GetLocalGenerator()-> - GetIncludeDirectories(includes, gtgt, "C", buildType); + lg->GetIncludeDirectories(includes, gtgt, "C", buildType); uniqIncludeDirs.insert(includes.begin(), includes.end()); diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h index 97da1b8..e5ede9a 100644 --- a/Source/cmExtraCodeBlocksGenerator.h +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -48,7 +48,8 @@ private: void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); - std::string CreateDummyTargetFile(cmMakefile* mf, cmTarget* target) const; + std::string CreateDummyTargetFile(cmLocalGenerator* lg, + cmTarget* target) const; std::string GetCBCompilerId(const cmMakefile* mf); int GetCBTargetType(cmTarget* target); @@ -58,7 +59,7 @@ private: const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler); }; ----------------------------------------------------------------------- Summary of changes: Source/cmExtraCodeBlocksGenerator.cxx | 24 +++++++++++++----------- Source/cmExtraCodeBlocksGenerator.h | 5 +++-- Source/cmGeneratorTarget.cxx | 10 ++++++++-- Source/cmGeneratorTarget.h | 4 +++- Source/cmGhsMultiTargetGenerator.cxx | 24 +++++++++++++----------- Source/cmGhsMultiTargetGenerator.h | 3 ++- Source/cmGlobalGenerator.cxx | 9 +++++---- Source/cmGlobalGenerator.h | 2 +- Source/cmLocalGhsMultiGenerator.cxx | 2 +- Source/cmMakefileExecutableTargetGenerator.cxx | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 13 +++++++------ Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 11 +++++------ Source/cmNinjaTargetGenerator.h | 2 +- Source/cmNinjaUtilityTargetGenerator.cxx | 2 +- Source/cmOSXBundleGenerator.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 6 +++--- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Source/cmake.cxx | 2 +- 22 files changed, 74 insertions(+), 59 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Sun Jun 21 16:08:55 2015 From: steveire at gmail.com (Stephen Kelly) Date: Sun, 21 Jun 2015 16:08:55 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-583-g108dbde Message-ID: <20150621200855.7876BB04FF@public.kitware.com> 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 108dbdef5770dbf289c93d17c95834f104033744 (commit) via d403585544108ad363abee509aca3ec4c333d8e3 (commit) from c9f6b5dc97b82d5fbbf1d45e99e3f2bcda052768 (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=108dbdef5770dbf289c93d17c95834f104033744 commit 108dbdef5770dbf289c93d17c95834f104033744 Merge: c9f6b5d d403585 Author: Stephen Kelly AuthorDate: Sun Jun 21 16:08:54 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 21 16:08:54 2015 -0400 Merge topic 'use-generator-target' into next d4035855 fixup! GHS: Use a cmGeneratorTarget in generator API. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d403585544108ad363abee509aca3ec4c333d8e3 commit d403585544108ad363abee509aca3ec4c333d8e3 Author: Stephen Kelly AuthorDate: Sun Jun 21 22:08:33 2015 +0200 Commit: Stephen Kelly CommitDate: Sun Jun 21 22:08:33 2015 +0200 fixup! GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index da371b1..14efc3e 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -355,11 +355,11 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() { // library directories cmTargetDependSet tds = - this->GetGlobalGenerator()->GetTargetDirectDepends(this->GeneratorTarget); + this->GetGlobalGenerator()->GetTargetDirectDepends(*this->Target); for (cmTargetDependSet::iterator tdsI = tds.begin(); tdsI != tds.end(); ++tdsI) { - const cmTarget *tg = (*tdsI)->Target; + const cmTarget *tg(*tdsI); *this->GetFolderBuildStreams() << " -L\"" << GetAbsBuildFilePath(tg) << "\"" << std::endl; } @@ -374,8 +374,6 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGeneratorTarget* gt = GetGlobalGenerator()->GetGeneratorTarget(tg); - cmGhsMultiTargetGenerator gmtg(gt); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" ----------------------------------------------------------------------- Summary of changes: Source/cmGhsMultiTargetGenerator.cxx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Jun 22 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 22 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-203-gf4144af Message-ID: <20150622040106.A5844B0484@public.kitware.com> 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, master has been updated via f4144af90598fb4ae55ecd260d0b64be9d822673 (commit) from 155ef535974ab9e78e98da00b63f31bd5c848bd0 (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=f4144af90598fb4ae55ecd260d0b64be9d822673 commit f4144af90598fb4ae55ecd260d0b64be9d822673 Author: Kitware Robot AuthorDate: Mon Jun 22 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Mon Jun 22 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 9d68172..1532fd0 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150621) +set(CMake_VERSION_PATCH 20150622) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 09:04:03 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 09:04:03 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-585-g58684af Message-ID: <20150622130403.396D5B075C@public.kitware.com> 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 58684af31446487f352a22120a8ce3de2cd935fe (commit) via 17c5152170992e84d95a25df37d0aec7949f54c5 (commit) from 108dbdef5770dbf289c93d17c95834f104033744 (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=58684af31446487f352a22120a8ce3de2cd935fe commit 58684af31446487f352a22120a8ce3de2cd935fe Merge: 108dbde 17c5152 Author: Brad King AuthorDate: Mon Jun 22 09:04:02 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 09:04:02 2015 -0400 Merge topic 'doc-cmake-buildsystem-typo' into next 17c51521 Help: Fix a typo in cmake-buildsystem(7) manual http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=17c5152170992e84d95a25df37d0aec7949f54c5 commit 17c5152170992e84d95a25df37d0aec7949f54c5 Author: Erik Sj?lund AuthorDate: Sat Jun 20 08:42:07 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 09:02:55 2015 -0400 Help: Fix a typo in cmake-buildsystem(7) manual Add the property name INTERFACE_INCLUDE_DIRECTORIES that was missing from a set_property command. diff --git a/Help/manual/cmake-buildsystem.7.rst b/Help/manual/cmake-buildsystem.7.rst index c456590..aefdb71 100644 --- a/Help/manual/cmake-buildsystem.7.rst +++ b/Help/manual/cmake-buildsystem.7.rst @@ -632,7 +632,7 @@ may be enabled, with an equivalent effect to: .. code-block:: cmake - set_property(TARGET tgt APPEND PROPERTY + set_property(TARGET tgt APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $ ) ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-buildsystem.7.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 10:50:07 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 10:50:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-588-gd7aaa48 Message-ID: <20150622145007.EB4F7B0369@public.kitware.com> 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 d7aaa481c99eefdb4088ff1a6c3d39ba7ff54e2a (commit) via d4682cd5aa51d282af7bcf1ffad050b9bd2321ba (commit) via 342b338618266360ddacc2eba3557f51478399ed (commit) from 58684af31446487f352a22120a8ce3de2cd935fe (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=d7aaa481c99eefdb4088ff1a6c3d39ba7ff54e2a commit d7aaa481c99eefdb4088ff1a6c3d39ba7ff54e2a Merge: 58684af d4682cd Author: Brad King AuthorDate: Mon Jun 22 10:50:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 10:50:07 2015 -0400 Merge topic 'qt-autogen-always-run' into next d4682cd5 QtAutogen: Add comment explaining why rcc cannot use PRE_BUILD 342b3386 Revert "QtAutogen: Use PRE_BUILD in Visual Studio generators even with rcc" http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d4682cd5aa51d282af7bcf1ffad050b9bd2321ba commit d4682cd5aa51d282af7bcf1ffad050b9bd2321ba Author: Brad King AuthorDate: Mon Jun 22 10:49:36 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 10:49:36 2015 -0400 QtAutogen: Add comment explaining why rcc cannot use PRE_BUILD diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index d2f6e36..d8f826c 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -440,6 +440,9 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) this->ListQt4RccInputs(sf, depends); } #if defined(_WIN32) && !defined(__CYGWIN__) + // Cannot use PRE_BUILD because the resource files themselves + // may not be sources within the target so VS may not know the + // target needs to re-build at all. usePRE_BUILD = false; #endif } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=342b338618266360ddacc2eba3557f51478399ed commit 342b338618266360ddacc2eba3557f51478399ed Author: Brad King AuthorDate: Mon Jun 22 10:45:02 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 10:45:02 2015 -0400 Revert "QtAutogen: Use PRE_BUILD in Visual Studio generators even with rcc" This reverts commit 12c3fcde52e8bdd5eed37e2f07a559ca72e5cd3d. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 10339d1..d2f6e36 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -394,9 +394,14 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) } #endif - // Ninja needs to know the rcc outputs are byproducts. std::vector rcc_output; - if (makefile->GetGlobalGenerator()->GetName() == "Ninja") + bool const isNinja = + makefile->GetGlobalGenerator()->GetName() == "Ninja"; + if(isNinja +#if defined(_WIN32) && !defined(__CYGWIN__) + || usePRE_BUILD +#endif + ) { std::vector srcFiles; target->GetConfigCommonSourceFiles(srcFiles); @@ -434,6 +439,9 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) { this->ListQt4RccInputs(sf, depends); } +#if defined(_WIN32) && !defined(__CYGWIN__) + usePRE_BUILD = false; +#endif } } } ----------------------------------------------------------------------- Summary of changes: Source/cmQtAutoGenerators.cxx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 11:39:01 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 11:39:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-590-g53554f7 Message-ID: <20150622153901.D5A4EB06D6@public.kitware.com> 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 53554f792e8a723390e745b01be5ac473013c281 (commit) via 572cf0901cd24a29bef4ee47db212d905b0db403 (commit) from d7aaa481c99eefdb4088ff1a6c3d39ba7ff54e2a (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=53554f792e8a723390e745b01be5ac473013c281 commit 53554f792e8a723390e745b01be5ac473013c281 Merge: d7aaa48 572cf09 Author: Brad King AuthorDate: Mon Jun 22 11:39:00 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 11:39:00 2015 -0400 Merge topic 'fix-function-missing-end' into next 572cf090 Fix assertion failure on unmatched function or macro http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=572cf0901cd24a29bef4ee47db212d905b0db403 commit 572cf0901cd24a29bef4ee47db212d905b0db403 Author: Brad King AuthorDate: Mon Jun 22 11:31:04 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 11:31:54 2015 -0400 Fix assertion failure on unmatched function or macro The fix in commit v3.2.3~3^2 (Fix assertion failure on unmatched foreach in function, 2015-05-18) broke handling of unmatched non-loop blocks because it assumed all function blockers removed during error unwinding were for loops, essentially switching the set of mishandled cases. The purpose of the loop block push/pop operations is to define a scope matching the lifetime of the loop function blockers. Since our function blockers already have the proper lifetime, simply move the push/pop operations to their constructor/destructior. Extend the RunCMake.Syntax test with a case covering this. diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 8e3510d..33cb234 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -13,6 +13,17 @@ #include +cmForEachFunctionBlocker::cmForEachFunctionBlocker(cmMakefile* mf): + Makefile(mf), Depth(0) +{ + this->Makefile->PushLoopBlock(); +} + +cmForEachFunctionBlocker::~cmForEachFunctionBlocker() +{ + this->Makefile->PopLoopBlock(); +} + bool cmForEachFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &inStatus) @@ -27,8 +38,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endofreach for this statement if (!this->Depth) { - cmMakefile::LoopBlockPop loopBlockPop(&mf); - // Remove the function blocker for this scope or bail. cmsys::auto_ptr fb(mf.RemoveFunctionBlocker(this, lff)); @@ -130,7 +139,7 @@ bool cmForEachCommand } // create a function blocker - cmForEachFunctionBlocker *f = new cmForEachFunctionBlocker(); + cmForEachFunctionBlocker *f = new cmForEachFunctionBlocker(this->Makefile); if ( args.size() > 1 ) { if ( args[1] == "RANGE" ) @@ -206,15 +215,14 @@ bool cmForEachCommand } this->Makefile->AddFunctionBlocker(f); - this->Makefile->PushLoopBlock(); - return true; } //---------------------------------------------------------------------------- bool cmForEachCommand::HandleInMode(std::vector const& args) { - cmsys::auto_ptr f(new cmForEachFunctionBlocker()); + cmsys::auto_ptr + f(new cmForEachFunctionBlocker(this->Makefile)); f->Args.push_back(args[0]); enum Doing { DoingNone, DoingLists, DoingItems }; @@ -252,7 +260,5 @@ bool cmForEachCommand::HandleInMode(std::vector const& args) this->Makefile->AddFunctionBlocker(f.release()); // TODO: pass auto_ptr - this->Makefile->PushLoopBlock(); - return true; } diff --git a/Source/cmForEachCommand.h b/Source/cmForEachCommand.h index 9b7c85a..3054f34 100644 --- a/Source/cmForEachCommand.h +++ b/Source/cmForEachCommand.h @@ -19,16 +19,18 @@ class cmForEachFunctionBlocker : public cmFunctionBlocker { public: - cmForEachFunctionBlocker() {this->Depth = 0;} - virtual ~cmForEachFunctionBlocker() {} + cmForEachFunctionBlocker(cmMakefile* mf); + ~cmForEachFunctionBlocker(); virtual bool IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &); virtual bool ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf); + virtual bool IsLoop() const { return true; } std::vector Args; std::vector Functions; private: + cmMakefile* Makefile; int Depth; }; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 61a175c..ba914e1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3284,7 +3284,6 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError) this->FunctionBlockerBarriers.back(); while(this->FunctionBlockers.size() > barrier) { - cmMakefile::LoopBlockPop loopBlockPop(this); cmsys::auto_ptr fb(this->FunctionBlockers.back()); this->FunctionBlockers.pop_back(); if(reportError) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index bff8c12..53a0805 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -125,15 +125,6 @@ public: }; friend class LexicalPushPop; - class LoopBlockPop - { - public: - LoopBlockPop(cmMakefile* mf) { this->Makefile = mf; } - ~LoopBlockPop() { this->Makefile->PopLoopBlock(); } - private: - cmMakefile* Makefile; - }; - /** * Try running cmake and building a file. This is used for dynalically * loaded commands, not as part of the usual build process. diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index 5170ead..012c580 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -12,6 +12,17 @@ #include "cmWhileCommand.h" #include "cmConditionEvaluator.h" +cmWhileFunctionBlocker::cmWhileFunctionBlocker(cmMakefile* mf): + Makefile(mf), Depth(0) +{ + this->Makefile->PushLoopBlock(); +} + +cmWhileFunctionBlocker::~cmWhileFunctionBlocker() +{ + this->Makefile->PopLoopBlock(); +} + bool cmWhileFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &inStatus) @@ -27,8 +38,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endwhile for this while loop then execute if (!this->Depth) { - cmMakefile::LoopBlockPop loopBlockPop(&mf); - // Remove the function blocker for this scope or bail. cmsys::auto_ptr fb(mf.RemoveFunctionBlocker(this, lff)); @@ -140,12 +149,10 @@ bool cmWhileCommand } // create a function blocker - cmWhileFunctionBlocker *f = new cmWhileFunctionBlocker(); + cmWhileFunctionBlocker *f = new cmWhileFunctionBlocker(this->Makefile); f->Args = args; this->Makefile->AddFunctionBlocker(f); - this->Makefile->PushLoopBlock(); - return true; } diff --git a/Source/cmWhileCommand.h b/Source/cmWhileCommand.h index 9fafffc..85a0bd3 100644 --- a/Source/cmWhileCommand.h +++ b/Source/cmWhileCommand.h @@ -19,8 +19,8 @@ class cmWhileFunctionBlocker : public cmFunctionBlocker { public: - cmWhileFunctionBlocker() {this->Depth=0;} - virtual ~cmWhileFunctionBlocker() {} + cmWhileFunctionBlocker(cmMakefile* mf); + ~cmWhileFunctionBlocker(); virtual bool IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &); @@ -29,6 +29,7 @@ public: std::vector Args; std::vector Functions; private: + cmMakefile* Makefile; int Depth; }; diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt new file mode 100644 index 0000000..776a8f2 --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMakeLists.txt:[0-9]+ \(include\): + A logical block opening on the line + + .*/Tests/RunCMake/Syntax/FunctionUnmatched.cmake:[0-9]+ \(function\) + + is not closed.$ diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched.cmake b/Tests/RunCMake/Syntax/FunctionUnmatched.cmake new file mode 100644 index 0000000..515b6bf --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched.cmake @@ -0,0 +1,2 @@ +function(f) +#endfunction() # missing diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-result.txt b/Tests/RunCMake/Syntax/MacroUnmatched-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt new file mode 100644 index 0000000..1699c43 --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMakeLists.txt:[0-9]+ \(include\): + A logical block opening on the line + + .*/Tests/RunCMake/Syntax/MacroUnmatched.cmake:[0-9]+ \(macro\) + + is not closed.$ diff --git a/Tests/RunCMake/Syntax/MacroUnmatched.cmake b/Tests/RunCMake/Syntax/MacroUnmatched.cmake new file mode 100644 index 0000000..302d96e --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched.cmake @@ -0,0 +1,2 @@ +macro(m) +#endmacro() # missing diff --git a/Tests/RunCMake/Syntax/RunCMakeTest.cmake b/Tests/RunCMake/Syntax/RunCMakeTest.cmake index c431280..fd012b9 100644 --- a/Tests/RunCMake/Syntax/RunCMakeTest.cmake +++ b/Tests/RunCMake/Syntax/RunCMakeTest.cmake @@ -110,5 +110,7 @@ run_cmake(CMP0053-NameWithEscapedSpacesQuoted) run_cmake(CMP0053-NameWithEscapedTabsQuoted) # Function and macro tests. +run_cmake(FunctionUnmatched) run_cmake(FunctionUnmatchedForeach) +run_cmake(MacroUnmatched) run_cmake(MacroUnmatchedForeach) ----------------------------------------------------------------------- Summary of changes: Source/cmForEachCommand.cxx | 22 +++++++++++++------- Source/cmForEachCommand.h | 6 ++++-- Source/cmMakefile.cxx | 1 - Source/cmMakefile.h | 9 -------- Source/cmWhileCommand.cxx | 17 ++++++++++----- Source/cmWhileCommand.h | 5 +++-- .../FunctionUnmatched-result.txt} | 0 Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt | 6 ++++++ Tests/RunCMake/Syntax/FunctionUnmatched.cmake | 2 ++ .../MacroUnmatched-result.txt} | 0 Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt | 6 ++++++ Tests/RunCMake/Syntax/MacroUnmatched.cmake | 2 ++ Tests/RunCMake/Syntax/RunCMakeTest.cmake | 2 ++ 13 files changed, 51 insertions(+), 27 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/FunctionUnmatched-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatched.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/MacroUnmatched-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt create mode 100644 Tests/RunCMake/Syntax/MacroUnmatched.cmake hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 11:40:24 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 11:40:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-592-g315f7cd Message-ID: <20150622154024.0E46A2A90@public.kitware.com> 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 315f7cd6ad06a20b04a99fac00d7477bba0e5bb6 (commit) via ad3d80b5d899465dac9821d98cd65199f8c6d9ee (commit) from 53554f792e8a723390e745b01be5ac473013c281 (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=315f7cd6ad06a20b04a99fac00d7477bba0e5bb6 commit 315f7cd6ad06a20b04a99fac00d7477bba0e5bb6 Merge: 53554f7 ad3d80b Author: Brad King AuthorDate: Mon Jun 22 11:40:23 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 11:40:23 2015 -0400 Merge topic 'fix-function-missing-end' into next ad3d80b5 Fix assertion failure on unmatched function or macro http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ad3d80b5d899465dac9821d98cd65199f8c6d9ee commit ad3d80b5d899465dac9821d98cd65199f8c6d9ee Author: Brad King AuthorDate: Mon Jun 22 11:31:04 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 11:40:01 2015 -0400 Fix assertion failure on unmatched function or macro The fix in commit v3.2.3~3^2 (Fix assertion failure on unmatched foreach in function, 2015-05-18) broke handling of unmatched non-loop blocks because it assumed all function blockers removed during error unwinding were for loops, essentially switching the set of mishandled cases. The purpose of the loop block push/pop operations is to define a scope matching the lifetime of the loop function blockers. Since our function blockers already have the proper lifetime, simply move the push/pop operations to their constructor/destructor. Extend the RunCMake.Syntax test with a case covering this. diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 8e3510d..33cb234 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -13,6 +13,17 @@ #include +cmForEachFunctionBlocker::cmForEachFunctionBlocker(cmMakefile* mf): + Makefile(mf), Depth(0) +{ + this->Makefile->PushLoopBlock(); +} + +cmForEachFunctionBlocker::~cmForEachFunctionBlocker() +{ + this->Makefile->PopLoopBlock(); +} + bool cmForEachFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &inStatus) @@ -27,8 +38,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endofreach for this statement if (!this->Depth) { - cmMakefile::LoopBlockPop loopBlockPop(&mf); - // Remove the function blocker for this scope or bail. cmsys::auto_ptr fb(mf.RemoveFunctionBlocker(this, lff)); @@ -130,7 +139,7 @@ bool cmForEachCommand } // create a function blocker - cmForEachFunctionBlocker *f = new cmForEachFunctionBlocker(); + cmForEachFunctionBlocker *f = new cmForEachFunctionBlocker(this->Makefile); if ( args.size() > 1 ) { if ( args[1] == "RANGE" ) @@ -206,15 +215,14 @@ bool cmForEachCommand } this->Makefile->AddFunctionBlocker(f); - this->Makefile->PushLoopBlock(); - return true; } //---------------------------------------------------------------------------- bool cmForEachCommand::HandleInMode(std::vector const& args) { - cmsys::auto_ptr f(new cmForEachFunctionBlocker()); + cmsys::auto_ptr + f(new cmForEachFunctionBlocker(this->Makefile)); f->Args.push_back(args[0]); enum Doing { DoingNone, DoingLists, DoingItems }; @@ -252,7 +260,5 @@ bool cmForEachCommand::HandleInMode(std::vector const& args) this->Makefile->AddFunctionBlocker(f.release()); // TODO: pass auto_ptr - this->Makefile->PushLoopBlock(); - return true; } diff --git a/Source/cmForEachCommand.h b/Source/cmForEachCommand.h index 9b7c85a..3054f34 100644 --- a/Source/cmForEachCommand.h +++ b/Source/cmForEachCommand.h @@ -19,16 +19,18 @@ class cmForEachFunctionBlocker : public cmFunctionBlocker { public: - cmForEachFunctionBlocker() {this->Depth = 0;} - virtual ~cmForEachFunctionBlocker() {} + cmForEachFunctionBlocker(cmMakefile* mf); + ~cmForEachFunctionBlocker(); virtual bool IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &); virtual bool ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf); + virtual bool IsLoop() const { return true; } std::vector Args; std::vector Functions; private: + cmMakefile* Makefile; int Depth; }; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 61a175c..ba914e1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3284,7 +3284,6 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError) this->FunctionBlockerBarriers.back(); while(this->FunctionBlockers.size() > barrier) { - cmMakefile::LoopBlockPop loopBlockPop(this); cmsys::auto_ptr fb(this->FunctionBlockers.back()); this->FunctionBlockers.pop_back(); if(reportError) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index bff8c12..53a0805 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -125,15 +125,6 @@ public: }; friend class LexicalPushPop; - class LoopBlockPop - { - public: - LoopBlockPop(cmMakefile* mf) { this->Makefile = mf; } - ~LoopBlockPop() { this->Makefile->PopLoopBlock(); } - private: - cmMakefile* Makefile; - }; - /** * Try running cmake and building a file. This is used for dynalically * loaded commands, not as part of the usual build process. diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index 5170ead..012c580 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -12,6 +12,17 @@ #include "cmWhileCommand.h" #include "cmConditionEvaluator.h" +cmWhileFunctionBlocker::cmWhileFunctionBlocker(cmMakefile* mf): + Makefile(mf), Depth(0) +{ + this->Makefile->PushLoopBlock(); +} + +cmWhileFunctionBlocker::~cmWhileFunctionBlocker() +{ + this->Makefile->PopLoopBlock(); +} + bool cmWhileFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &inStatus) @@ -27,8 +38,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endwhile for this while loop then execute if (!this->Depth) { - cmMakefile::LoopBlockPop loopBlockPop(&mf); - // Remove the function blocker for this scope or bail. cmsys::auto_ptr fb(mf.RemoveFunctionBlocker(this, lff)); @@ -140,12 +149,10 @@ bool cmWhileCommand } // create a function blocker - cmWhileFunctionBlocker *f = new cmWhileFunctionBlocker(); + cmWhileFunctionBlocker *f = new cmWhileFunctionBlocker(this->Makefile); f->Args = args; this->Makefile->AddFunctionBlocker(f); - this->Makefile->PushLoopBlock(); - return true; } diff --git a/Source/cmWhileCommand.h b/Source/cmWhileCommand.h index 9fafffc..85a0bd3 100644 --- a/Source/cmWhileCommand.h +++ b/Source/cmWhileCommand.h @@ -19,8 +19,8 @@ class cmWhileFunctionBlocker : public cmFunctionBlocker { public: - cmWhileFunctionBlocker() {this->Depth=0;} - virtual ~cmWhileFunctionBlocker() {} + cmWhileFunctionBlocker(cmMakefile* mf); + ~cmWhileFunctionBlocker(); virtual bool IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &); @@ -29,6 +29,7 @@ public: std::vector Args; std::vector Functions; private: + cmMakefile* Makefile; int Depth; }; diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt new file mode 100644 index 0000000..776a8f2 --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMakeLists.txt:[0-9]+ \(include\): + A logical block opening on the line + + .*/Tests/RunCMake/Syntax/FunctionUnmatched.cmake:[0-9]+ \(function\) + + is not closed.$ diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched.cmake b/Tests/RunCMake/Syntax/FunctionUnmatched.cmake new file mode 100644 index 0000000..515b6bf --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched.cmake @@ -0,0 +1,2 @@ +function(f) +#endfunction() # missing diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-result.txt b/Tests/RunCMake/Syntax/MacroUnmatched-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt new file mode 100644 index 0000000..1699c43 --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMakeLists.txt:[0-9]+ \(include\): + A logical block opening on the line + + .*/Tests/RunCMake/Syntax/MacroUnmatched.cmake:[0-9]+ \(macro\) + + is not closed.$ diff --git a/Tests/RunCMake/Syntax/MacroUnmatched.cmake b/Tests/RunCMake/Syntax/MacroUnmatched.cmake new file mode 100644 index 0000000..302d96e --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched.cmake @@ -0,0 +1,2 @@ +macro(m) +#endmacro() # missing diff --git a/Tests/RunCMake/Syntax/RunCMakeTest.cmake b/Tests/RunCMake/Syntax/RunCMakeTest.cmake index c431280..fd012b9 100644 --- a/Tests/RunCMake/Syntax/RunCMakeTest.cmake +++ b/Tests/RunCMake/Syntax/RunCMakeTest.cmake @@ -110,5 +110,7 @@ run_cmake(CMP0053-NameWithEscapedSpacesQuoted) run_cmake(CMP0053-NameWithEscapedTabsQuoted) # Function and macro tests. +run_cmake(FunctionUnmatched) run_cmake(FunctionUnmatchedForeach) +run_cmake(MacroUnmatched) run_cmake(MacroUnmatchedForeach) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 11:41:46 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 11:41:46 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-594-g8f8838d Message-ID: <20150622154146.167C914525@public.kitware.com> 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 8f8838de833bb293c7c2e2718916ec7389096aa3 (commit) via b0e7c8b3119d8e4157a35846fc9c08254036b40c (commit) from 315f7cd6ad06a20b04a99fac00d7477bba0e5bb6 (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=8f8838de833bb293c7c2e2718916ec7389096aa3 commit 8f8838de833bb293c7c2e2718916ec7389096aa3 Merge: 315f7cd b0e7c8b Author: Brad King AuthorDate: Mon Jun 22 11:41:45 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 11:41:45 2015 -0400 Merge topic 'fix-function-missing-end' into next b0e7c8b3 fixup! Fix assertion failure on unmatched function or macro http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b0e7c8b3119d8e4157a35846fc9c08254036b40c commit b0e7c8b3119d8e4157a35846fc9c08254036b40c Author: Brad King AuthorDate: Mon Jun 22 11:41:09 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 11:41:09 2015 -0400 fixup! Fix assertion failure on unmatched function or macro diff --git a/Source/cmForEachCommand.h b/Source/cmForEachCommand.h index 3054f34..36e8808 100644 --- a/Source/cmForEachCommand.h +++ b/Source/cmForEachCommand.h @@ -25,7 +25,6 @@ public: cmMakefile &mf, cmExecutionStatus &); virtual bool ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf); - virtual bool IsLoop() const { return true; } std::vector Args; std::vector Functions; ----------------------------------------------------------------------- Summary of changes: Source/cmForEachCommand.h | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 11:42:03 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 11:42:03 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-596-gd6be2fe Message-ID: <20150622154203.51D1C14C6F@public.kitware.com> 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 d6be2feb81a87aec7b5d22e017101c05c404947f (commit) via 5d85fb4f407cd661fb904f68e2c9cc27ddcc0331 (commit) from 8f8838de833bb293c7c2e2718916ec7389096aa3 (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=d6be2feb81a87aec7b5d22e017101c05c404947f commit d6be2feb81a87aec7b5d22e017101c05c404947f Merge: 8f8838d 5d85fb4 Author: Brad King AuthorDate: Mon Jun 22 11:42:02 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 11:42:02 2015 -0400 Merge topic 'fix-function-missing-end' into next 5d85fb4f Fix assertion failure on unmatched function or macro http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5d85fb4f407cd661fb904f68e2c9cc27ddcc0331 commit 5d85fb4f407cd661fb904f68e2c9cc27ddcc0331 Author: Brad King AuthorDate: Mon Jun 22 11:31:04 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 11:41:51 2015 -0400 Fix assertion failure on unmatched function or macro The fix in commit v3.2.3~3^2 (Fix assertion failure on unmatched foreach in function, 2015-05-18) broke handling of unmatched non-loop blocks because it assumed all function blockers removed during error unwinding were for loops, essentially switching the set of mishandled cases. The purpose of the loop block push/pop operations is to define a scope matching the lifetime of the loop function blockers. Since our function blockers already have the proper lifetime, simply move the push/pop operations to their constructor/destructor. Extend the RunCMake.Syntax test with a case covering this. diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 8e3510d..33cb234 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -13,6 +13,17 @@ #include +cmForEachFunctionBlocker::cmForEachFunctionBlocker(cmMakefile* mf): + Makefile(mf), Depth(0) +{ + this->Makefile->PushLoopBlock(); +} + +cmForEachFunctionBlocker::~cmForEachFunctionBlocker() +{ + this->Makefile->PopLoopBlock(); +} + bool cmForEachFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &inStatus) @@ -27,8 +38,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endofreach for this statement if (!this->Depth) { - cmMakefile::LoopBlockPop loopBlockPop(&mf); - // Remove the function blocker for this scope or bail. cmsys::auto_ptr fb(mf.RemoveFunctionBlocker(this, lff)); @@ -130,7 +139,7 @@ bool cmForEachCommand } // create a function blocker - cmForEachFunctionBlocker *f = new cmForEachFunctionBlocker(); + cmForEachFunctionBlocker *f = new cmForEachFunctionBlocker(this->Makefile); if ( args.size() > 1 ) { if ( args[1] == "RANGE" ) @@ -206,15 +215,14 @@ bool cmForEachCommand } this->Makefile->AddFunctionBlocker(f); - this->Makefile->PushLoopBlock(); - return true; } //---------------------------------------------------------------------------- bool cmForEachCommand::HandleInMode(std::vector const& args) { - cmsys::auto_ptr f(new cmForEachFunctionBlocker()); + cmsys::auto_ptr + f(new cmForEachFunctionBlocker(this->Makefile)); f->Args.push_back(args[0]); enum Doing { DoingNone, DoingLists, DoingItems }; @@ -252,7 +260,5 @@ bool cmForEachCommand::HandleInMode(std::vector const& args) this->Makefile->AddFunctionBlocker(f.release()); // TODO: pass auto_ptr - this->Makefile->PushLoopBlock(); - return true; } diff --git a/Source/cmForEachCommand.h b/Source/cmForEachCommand.h index 9b7c85a..36e8808 100644 --- a/Source/cmForEachCommand.h +++ b/Source/cmForEachCommand.h @@ -19,8 +19,8 @@ class cmForEachFunctionBlocker : public cmFunctionBlocker { public: - cmForEachFunctionBlocker() {this->Depth = 0;} - virtual ~cmForEachFunctionBlocker() {} + cmForEachFunctionBlocker(cmMakefile* mf); + ~cmForEachFunctionBlocker(); virtual bool IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &); @@ -29,6 +29,7 @@ public: std::vector Args; std::vector Functions; private: + cmMakefile* Makefile; int Depth; }; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 61a175c..ba914e1 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3284,7 +3284,6 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError) this->FunctionBlockerBarriers.back(); while(this->FunctionBlockers.size() > barrier) { - cmMakefile::LoopBlockPop loopBlockPop(this); cmsys::auto_ptr fb(this->FunctionBlockers.back()); this->FunctionBlockers.pop_back(); if(reportError) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index bff8c12..53a0805 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -125,15 +125,6 @@ public: }; friend class LexicalPushPop; - class LoopBlockPop - { - public: - LoopBlockPop(cmMakefile* mf) { this->Makefile = mf; } - ~LoopBlockPop() { this->Makefile->PopLoopBlock(); } - private: - cmMakefile* Makefile; - }; - /** * Try running cmake and building a file. This is used for dynalically * loaded commands, not as part of the usual build process. diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index 5170ead..012c580 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -12,6 +12,17 @@ #include "cmWhileCommand.h" #include "cmConditionEvaluator.h" +cmWhileFunctionBlocker::cmWhileFunctionBlocker(cmMakefile* mf): + Makefile(mf), Depth(0) +{ + this->Makefile->PushLoopBlock(); +} + +cmWhileFunctionBlocker::~cmWhileFunctionBlocker() +{ + this->Makefile->PopLoopBlock(); +} + bool cmWhileFunctionBlocker:: IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &inStatus) @@ -27,8 +38,6 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, // if this is the endwhile for this while loop then execute if (!this->Depth) { - cmMakefile::LoopBlockPop loopBlockPop(&mf); - // Remove the function blocker for this scope or bail. cmsys::auto_ptr fb(mf.RemoveFunctionBlocker(this, lff)); @@ -140,12 +149,10 @@ bool cmWhileCommand } // create a function blocker - cmWhileFunctionBlocker *f = new cmWhileFunctionBlocker(); + cmWhileFunctionBlocker *f = new cmWhileFunctionBlocker(this->Makefile); f->Args = args; this->Makefile->AddFunctionBlocker(f); - this->Makefile->PushLoopBlock(); - return true; } diff --git a/Source/cmWhileCommand.h b/Source/cmWhileCommand.h index 9fafffc..85a0bd3 100644 --- a/Source/cmWhileCommand.h +++ b/Source/cmWhileCommand.h @@ -19,8 +19,8 @@ class cmWhileFunctionBlocker : public cmFunctionBlocker { public: - cmWhileFunctionBlocker() {this->Depth=0;} - virtual ~cmWhileFunctionBlocker() {} + cmWhileFunctionBlocker(cmMakefile* mf); + ~cmWhileFunctionBlocker(); virtual bool IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, cmExecutionStatus &); @@ -29,6 +29,7 @@ public: std::vector Args; std::vector Functions; private: + cmMakefile* Makefile; int Depth; }; diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt new file mode 100644 index 0000000..776a8f2 --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMakeLists.txt:[0-9]+ \(include\): + A logical block opening on the line + + .*/Tests/RunCMake/Syntax/FunctionUnmatched.cmake:[0-9]+ \(function\) + + is not closed.$ diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched.cmake b/Tests/RunCMake/Syntax/FunctionUnmatched.cmake new file mode 100644 index 0000000..515b6bf --- /dev/null +++ b/Tests/RunCMake/Syntax/FunctionUnmatched.cmake @@ -0,0 +1,2 @@ +function(f) +#endfunction() # missing diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-result.txt b/Tests/RunCMake/Syntax/MacroUnmatched-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt new file mode 100644 index 0000000..1699c43 --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMakeLists.txt:[0-9]+ \(include\): + A logical block opening on the line + + .*/Tests/RunCMake/Syntax/MacroUnmatched.cmake:[0-9]+ \(macro\) + + is not closed.$ diff --git a/Tests/RunCMake/Syntax/MacroUnmatched.cmake b/Tests/RunCMake/Syntax/MacroUnmatched.cmake new file mode 100644 index 0000000..302d96e --- /dev/null +++ b/Tests/RunCMake/Syntax/MacroUnmatched.cmake @@ -0,0 +1,2 @@ +macro(m) +#endmacro() # missing diff --git a/Tests/RunCMake/Syntax/RunCMakeTest.cmake b/Tests/RunCMake/Syntax/RunCMakeTest.cmake index c431280..fd012b9 100644 --- a/Tests/RunCMake/Syntax/RunCMakeTest.cmake +++ b/Tests/RunCMake/Syntax/RunCMakeTest.cmake @@ -110,5 +110,7 @@ run_cmake(CMP0053-NameWithEscapedSpacesQuoted) run_cmake(CMP0053-NameWithEscapedTabsQuoted) # Function and macro tests. +run_cmake(FunctionUnmatched) run_cmake(FunctionUnmatchedForeach) +run_cmake(MacroUnmatched) run_cmake(MacroUnmatchedForeach) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:00:26 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:00:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-205-g8848298 Message-ID: <20150622170026.8A42AB050D@public.kitware.com> 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, master has been updated via 8848298831e435909b52cb015d5b8d2b985f507b (commit) via 17c5152170992e84d95a25df37d0aec7949f54c5 (commit) from f4144af90598fb4ae55ecd260d0b64be9d822673 (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=8848298831e435909b52cb015d5b8d2b985f507b commit 8848298831e435909b52cb015d5b8d2b985f507b Merge: f4144af 17c5152 Author: Brad King AuthorDate: Mon Jun 22 13:00:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 13:00:25 2015 -0400 Merge topic 'doc-cmake-buildsystem-typo' 17c51521 Help: Fix a typo in cmake-buildsystem(7) manual ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-buildsystem.7.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:00:28 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:00:28 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-207-g91611c3 Message-ID: <20150622170028.6BE46B050F@public.kitware.com> 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, master has been updated via 91611c39eb58006ced851f9eff50dd721c516aab (commit) via 6af9fa1294e86d61b01034e0c9f12375d69f3120 (commit) from 8848298831e435909b52cb015d5b8d2b985f507b (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=91611c39eb58006ced851f9eff50dd721c516aab commit 91611c39eb58006ced851f9eff50dd721c516aab Merge: 8848298 6af9fa1 Author: Brad King AuthorDate: Mon Jun 22 13:00:27 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 13:00:27 2015 -0400 Merge topic 'fix-Qt5Autogen-test' 6af9fa12 Tests: Don't hang when running Qt5Autogen built with GCC 5 (#15570). ----------------------------------------------------------------------- Summary of changes: Tests/QtAutogen/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:00:30 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:00:30 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-213-gc7180e8 Message-ID: <20150622170030.2ED3EB0524@public.kitware.com> 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, master has been updated via c7180e822b4f6ca37a5175e66016ca3a748f4727 (commit) via 782657db48e0d5f0d33a19ad51678d36ddfa7ad5 (commit) via a863c59f70a7556c010990a362e4d13792670148 (commit) via 076760a63c665dd2269c74d415e323f55969f544 (commit) via 569f4785371399628dd401e2522dccc54c73e34e (commit) via f971ab04cfdcb73e1ac2b182caf302172aebe6a8 (commit) from 91611c39eb58006ced851f9eff50dd721c516aab (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=c7180e822b4f6ca37a5175e66016ca3a748f4727 commit c7180e822b4f6ca37a5175e66016ca3a748f4727 Merge: 91611c3 782657d Author: Brad King AuthorDate: Mon Jun 22 13:00:29 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 13:00:29 2015 -0400 Merge topic 'clean-up-cmListFileArgument' 782657db cmListFileArgument: Remove FilePath member. a863c59f cmMakefile: Use GetExecutionFileStack method. 076760a6 cmMakefile: Add filename context to ExpandArguments. 569f4785 cmFunctionCommand: Store the FilePath when creating the prototype. f971ab04 cmMacroCommand: Store the FilePath when creating the prototype. ----------------------------------------------------------------------- Summary of changes: Source/cmCPluginAPI.cxx | 3 +-- Source/cmFunctionCommand.cxx | 17 +++++------------ Source/cmListFileCache.cxx | 5 ++--- Source/cmListFileCache.h | 12 +++++------- Source/cmMacroCommand.cxx | 13 +++---------- Source/cmMakefile.cxx | 31 ++++++++++++++++++++++++------- Source/cmMakefile.h | 8 ++++++-- Source/cmVariableWatchCommand.cxx | 12 ++++++------ 8 files changed, 52 insertions(+), 49 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:00:32 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:00:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-233-g24a0825 Message-ID: <20150622170032.1644FB0525@public.kitware.com> 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, master has been updated via 24a08255856e9b3a44b55f2f138ce0b25b785928 (commit) via 81eb2c58a17f7e34cda79897ea7dec24bf798dd2 (commit) via 5c837686287eb22e73af76d2ab7f32d5bf8cb9ec (commit) via c10ab014344e693a65d7cfbfb9b4e0f8a8b155f9 (commit) via 3404f8a081a03441c6747de50f2155ae28115c07 (commit) via a1858136c28326212d15cfd0a4412281f46b9cb0 (commit) via ad47e6e5bc4822dc5bc9d82ae1d7590aee4ece95 (commit) via 254be613b803816a918c12d7d7eca40a7c9f7c09 (commit) via 826b6e68184759cda496f0073a8f59b2155cfdaf (commit) via e53072d638c2cca3258ffccbec75bb5c70d34a3f (commit) via b7166afa6d385c4f0a0610f43ea00c8e5613a003 (commit) via 27f229b9707f3a87c3ed0d469b5b2d08c80076c5 (commit) via 9166b49d70746dcd36e6e891c78734b559e0fccf (commit) via 384a0dba63b166d94a199b12f104e53496a3302a (commit) via 5e24ff17a22b780947e98eabc1d25320104f7b21 (commit) via d5aaa2b96f7d93aaa8e11e8d5e9cf0c2b1739290 (commit) via fff3c6cd1c49ba1aa8a256e26294db65710c9d18 (commit) via a6e661b848fc180b03e7d72739c9a4a077a97e3f (commit) via fe38bb2c29ab4273cfefb1b343b80388bea2893e (commit) via ac10fc0958c94e17d89a686d1addae0ac18dc648 (commit) from c7180e822b4f6ca37a5175e66016ca3a748f4727 (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=24a08255856e9b3a44b55f2f138ce0b25b785928 commit 24a08255856e9b3a44b55f2f138ce0b25b785928 Merge: c7180e8 81eb2c5 Author: Brad King AuthorDate: Mon Jun 22 13:00:30 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 13:00:30 2015 -0400 Merge topic 'clean-up-ReadListFile' 81eb2c58 cmMakefile: Simplify filename handling. 5c837686 cmMakefile: Make the IncludeScope more responsible. c10ab014 cmMakefile: Move IncludeScope. 3404f8a0 cmMakefile: Move ListFile parsing responsibility out of internal method. a1858136 cmMakefile: Rename parameter. ad47e6e5 cmMakefile: Inline ReadListFileInternal into caller. 254be613 cmMakefile: Move resource management into the IncludeScope. 826b6e68 cmMakefile: Move IncludeScope to ReadDependentFile. e53072d6 cmMakefile: Move IncludeScope instance. b7166afa cmMakefile: Remove File from IncludeScope. 27f229b9 cmMakefile: Move include scope out of ReadListFileInternal. 9166b49d cmMakefile: Change order of raii scopes. 384a0dba cmMakefile: Simplify condition handling. 5e24ff17 cmMakefile: Split file handling from execution. d5aaa2b9 cmMakefile: Move check for unused variables. fff3c6cd cmMakefile: Move a container population. ... ----------------------------------------------------------------------- Summary of changes: Source/cmMakefile.cxx | 140 +++++++++++++++++++++++++++---------------------- Source/cmMakefile.h | 15 ++---- 2 files changed, 81 insertions(+), 74 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:00:33 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:00:33 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-243-gec6d6be Message-ID: <20150622170034.00C74B0528@public.kitware.com> 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, master has been updated via ec6d6be57d5a032bd7c29bc440c8c8710eb426e8 (commit) via 820986edfff97779bb0c84fd9da3b284921c8ae4 (commit) via b3e2e332eb9c2a7d73ec872664cee896248c6c38 (commit) via 61c0113c13fe4a65c394e56cc0354db0b80d9c4c (commit) via 080489b8a92253bedbb67cc7958351350f4b2341 (commit) via 8bfaadfa394c9b462259ea13df6b2df7c4544ab4 (commit) via 217c243db04a21763848ac048edf153cd93bd883 (commit) via eb05dcd6c9b587eeb8738d9f08459d94733708f6 (commit) via cfae7fa4082e73d4282be98fa99a07c18dd53d24 (commit) via ccf7760f0035e2e0458ba59e29ab302a2d07c388 (commit) from 24a08255856e9b3a44b55f2f138ce0b25b785928 (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=ec6d6be57d5a032bd7c29bc440c8c8710eb426e8 commit ec6d6be57d5a032bd7c29bc440c8c8710eb426e8 Merge: 24a0825 820986e Author: Brad King AuthorDate: Mon Jun 22 13:00:32 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 13:00:32 2015 -0400 Merge topic 'minor-cleanups' 820986ed cmLocalGenerator: Constify GetIncludeDirectories method. b3e2e332 QtAutogen: Get the global generator from the Makefile. 61c0113c cmLocalUnixMakefileGenerator3: Remove unused method. 080489b8 cmMakefile: Use member directly instead of through method. 8bfaadfa cmMakefile: Move IsRoot API from cmLocalGenerator. 217c243d cmake: Update the current snapshot when Resetting. eb05dcd6 cmLocalGenerator: Add IssueMessage method. cfae7fa4 cmMakefile: Use cmOutputConverter instead of cmLocalGenerator. ccf7760f cmOutputConverter: Constify API. ----------------------------------------------------------------------- Summary of changes: Source/cmGeneratorTarget.cxx | 3 ++- Source/cmGlobalUnixMakefileGenerator3.cxx | 4 ++-- Source/cmLocalGenerator.cxx | 31 +++++++++++++++++++---------- Source/cmLocalGenerator.h | 9 +++++---- Source/cmLocalNinjaGenerator.cxx | 4 ++-- Source/cmLocalUnixMakefileGenerator3.h | 3 --- Source/cmMakefile.cxx | 20 ++++++++++++------- Source/cmMakefile.h | 3 +++ Source/cmOutputConverter.cxx | 18 ++++++++--------- Source/cmOutputConverter.h | 18 ++++++++--------- Source/cmProjectCommand.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 3 +-- Source/cmState.cxx | 10 ++++++---- Source/cmState.h | 8 +++++--- Source/cmake.cxx | 3 ++- 15 files changed, 81 insertions(+), 58 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:00:55 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:00:55 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-603-ge00704a Message-ID: <20150622170055.DA658B0525@public.kitware.com> 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 e00704afc2453496edc759a14714cf2eec96b1a5 (commit) via ec6d6be57d5a032bd7c29bc440c8c8710eb426e8 (commit) via 24a08255856e9b3a44b55f2f138ce0b25b785928 (commit) via c7180e822b4f6ca37a5175e66016ca3a748f4727 (commit) via 91611c39eb58006ced851f9eff50dd721c516aab (commit) via 8848298831e435909b52cb015d5b8d2b985f507b (commit) via f4144af90598fb4ae55ecd260d0b64be9d822673 (commit) from d6be2feb81a87aec7b5d22e017101c05c404947f (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=e00704afc2453496edc759a14714cf2eec96b1a5 commit e00704afc2453496edc759a14714cf2eec96b1a5 Merge: d6be2fe ec6d6be Author: Brad King AuthorDate: Mon Jun 22 13:00:49 2015 -0400 Commit: Brad King CommitDate: Mon Jun 22 13:00:49 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 22 13:23:59 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 22 Jun 2015 13:23:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-612-g2b0cb53 Message-ID: <20150622172359.0EF46AFBA5@public.kitware.com> 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 2b0cb5307e473f0d168128a283568814198f3454 (commit) via e77142350de1dec03ca788e3d3e278b7b9358fb5 (commit) via 5aa556be560b782d149b53bccc12dfc2be2bda0b (commit) via bb88668addb3746f6f043533f0405914834a0421 (commit) via a3b210fd6cb85cba76f867e93d94dd835fa3278a (commit) via 8ec60c675a3fb4294776b2d644974361b145c444 (commit) via dee197fe610b5fe50403da796539b63a74430bd3 (commit) via b2b41b83ff594555f3b80c6c2fd12e10e1e97458 (commit) via 2e9333a1d0979c4d6ecfe8fd16382ea6526dec9c (commit) from e00704afc2453496edc759a14714cf2eec96b1a5 (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=2b0cb5307e473f0d168128a283568814198f3454 commit 2b0cb5307e473f0d168128a283568814198f3454 Merge: e00704a e771423 Author: Brad King AuthorDate: Mon Jun 22 13:23:57 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 22 13:23:57 2015 -0400 Merge topic 'use-generator-target' into next e7714235 Get the local generator from the GeneratorTarget. 5aa556be cmMakefileTargetGenerator: Require cmGeneratorTarget. bb88668a cmNinjaGenerator: Require cmGeneratorTarget. a3b210fd cmGeneratorTarget: Require a cmLocalGenerator to construct. 8ec60c67 cmGlobalGenerator: Create GeneratorTargets with a local generator. dee197fe GHS: Use a cmGeneratorTarget in generator API. b2b41b83 cmGeneratorTarget: Add accessor for cmLocalGenerator. 2e9333a1 C::B: Get the Makefile from the LocalGenerator, not vice-versa. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e77142350de1dec03ca788e3d3e278b7b9358fb5 commit e77142350de1dec03ca788e3d3e278b7b9358fb5 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:59:06 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:46 2015 -0400 Get the local generator from the GeneratorTarget. The Makefile should not know the LocalGenerator at all diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index fa471c9..09fad5c 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1173,8 +1173,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() && linkee->GetType() != cmTarget::INTERFACE_LIBRARY && emitted.insert(linkee).second) { + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(linkee); + cmLocalGenerator* lg = gt->GetLocalGenerator(); cmMakefile* mf = linkee->GetMakefile(); - cmLocalGenerator* lg = mf->GetLocalGenerator(); std::string di = mf->GetCurrentBinaryDirectory(); di += "/"; di += lg->GetTargetDirectory(*linkee); diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index a8eef82..3bc0eb7 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -22,7 +22,7 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) : GT(target) , Makefile(target->Target->GetMakefile()) - , LocalGenerator(Makefile->GetLocalGenerator()) + , LocalGenerator(target->GetLocalGenerator()) , ConfigName(configName) , MacContentFolders(0) { diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 53fea83..b03e45a 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -521,10 +521,10 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target, std::string &defs) { cmMakefile* makefile = target->GetMakefile(); - cmLocalGenerator* localGen = makefile->GetLocalGenerator(); + cmGlobalGenerator* globalGen = makefile->GetGlobalGenerator(); std::vector includeDirs; - cmGeneratorTarget *gtgt = localGen->GetGlobalGenerator() - ->GetGeneratorTarget(target); + cmGeneratorTarget *gtgt = globalGen->GetGeneratorTarget(target); + cmLocalGenerator *localGen = gtgt->GetLocalGenerator(); // Get the include dirs for this target, without stripping the implicit // include dirs off, see http://public.kitware.com/Bug/view.php?id=13667 localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9b78df3..12a1e42 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -176,7 +176,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target, this->Makefile->GetConfigurations(this->Configurations); this->LocalGenerator = (cmLocalVisualStudio7Generator*) - this->Makefile->GetLocalGenerator(); + this->GeneratorTarget->GetLocalGenerator(); this->Name = this->Target->GetName(); this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str()); this->Platform = gg->GetPlatformName(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5aa556be560b782d149b53bccc12dfc2be2bda0b commit 5aa556be560b782d149b53bccc12dfc2be2bda0b Author: Stephen Kelly AuthorDate: Sat Jun 6 14:57:26 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:45 2015 -0400 cmMakefileTargetGenerator: Require cmGeneratorTarget. diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 37b297e..416063f 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; this->Target->GetExecutableNames( diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 450f573..660027c 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -22,7 +22,7 @@ //---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnDepends; if (this->Target->GetType() != cmTarget::INTERFACE_LIBRARY) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 402dfc6..fa471c9 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -32,7 +32,7 @@ #include -cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) +cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmGeneratorTarget* target) : OSXBundleGenerator(0) , MacOSXContentGenerator(0) { @@ -41,16 +41,15 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) this->FlagFileStream = 0; this->CustomCommandDriver = OnBuild; this->FortranModuleDirectoryComputed = false; - this->Target = target; + this->Target = target->Target; this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = - static_cast( - this->Makefile->GetLocalGenerator()); + static_cast(target->GetLocalGenerator()); this->ConfigName = this->LocalGenerator->ConfigurationName.c_str(); this->GlobalGenerator = static_cast( this->LocalGenerator->GetGlobalGenerator()); - this->GeneratorTarget = this->GlobalGenerator->GetGeneratorTarget(target); + this->GeneratorTarget = target; cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->NoRuleMessages = false; if(const char* ruleStatus = cm->GetState() diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index 2e1b052..9182236 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -34,7 +34,7 @@ class cmMakefileTargetGenerator { public: // constructor to set the ivars - cmMakefileTargetGenerator(cmTarget* target); + cmMakefileTargetGenerator(cmGeneratorTarget* target); virtual ~cmMakefileTargetGenerator(); // construct using this factory call diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 25d929c..303ca63 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ //---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): - cmMakefileTargetGenerator(target->Target) + cmMakefileTargetGenerator(target) { this->CustomCommandDriver = OnUtility; this->OSXBundleGenerator = new cmOSXBundleGenerator(target, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bb88668addb3746f6f043533f0405914834a0421 commit bb88668addb3746f6f043533f0405914834a0421 Author: Stephen Kelly AuthorDate: Sat Jun 6 14:02:24 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:45 2015 -0400 cmNinjaGenerator: Require cmGeneratorTarget. diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index bbf03ff..2fe53bf 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -32,7 +32,7 @@ cmNinjaNormalTargetGenerator:: cmNinjaNormalTargetGenerator(cmGeneratorTarget* target) - : cmNinjaTargetGenerator(target->Target) + : cmNinjaTargetGenerator(target) , TargetNameOut() , TargetNameSO() , TargetNameReal() diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 6e35cd4..b18f368 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -57,19 +57,18 @@ cmNinjaTargetGenerator::New(cmGeneratorTarget* target) } } -cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmTarget* target) +cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) : MacOSXContentGenerator(0), OSXBundleGenerator(0), MacContentFolders(), - Target(target), - Makefile(target->GetMakefile()), + Target(target->Target), + Makefile(target->Makefile), LocalGenerator( - static_cast(Makefile->GetLocalGenerator())), + static_cast(target->GetLocalGenerator())), Objects() { - this->GeneratorTarget = - this->GetGlobalGenerator()->GetGeneratorTarget(target); + this->GeneratorTarget = target; MacOSXContentGenerator = new MacOSXContentGeneratorType(this); } diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 4e7d8b3..fc361b2 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -33,7 +33,7 @@ public: static cmNinjaTargetGenerator* New(cmGeneratorTarget* target); /// Build a NinjaTargetGenerator. - cmNinjaTargetGenerator(cmTarget* target); + cmNinjaTargetGenerator(cmGeneratorTarget* target); /// Destructor. virtual ~cmNinjaTargetGenerator(); diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index 42d6b46..c3bf011 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -21,7 +21,7 @@ cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) - : cmNinjaTargetGenerator(target->Target) {} + : cmNinjaTargetGenerator(target) {} cmNinjaUtilityTargetGenerator::~cmNinjaUtilityTargetGenerator() {} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a3b210fd6cb85cba76f867e93d94dd835fa3278a commit a3b210fd6cb85cba76f867e93d94dd835fa3278a Author: Stephen Kelly AuthorDate: Sat Jun 6 13:14:04 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:45 2015 -0400 cmGeneratorTarget: Require a cmLocalGenerator to construct. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 482eefd..4494553 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -220,11 +220,12 @@ struct TagVisitor }; //---------------------------------------------------------------------------- -cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), +cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) + : Target(t), SourceFileFlagsConstructed(false) { this->Makefile = this->Target->GetMakefile(); - this->LocalGenerator = this->Makefile->GetLocalGenerator(); + this->LocalGenerator = lg; this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 645b792..675ee9f 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -24,7 +24,7 @@ class cmTarget; class cmGeneratorTarget { public: - cmGeneratorTarget(cmTarget*); + cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg); cmLocalGenerator* GetLocalGenerator() const; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index c4396c6..14eaeac 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1465,7 +1465,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) ti != targets.end(); ++ti) { cmTarget* t = &ti->second; - cmGeneratorTarget* gt = new cmGeneratorTarget(t); + cmGeneratorTarget* gt = new cmGeneratorTarget(t, lg); this->ComputeTargetObjectDirectory(gt); this->GeneratorTargets[t] = gt; generatorTargets[t] = gt; @@ -1475,7 +1475,7 @@ void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) j = mf->GetOwnedImportedTargets().begin(); j != mf->GetOwnedImportedTargets().end(); ++j) { - cmGeneratorTarget* gt = new cmGeneratorTarget(*j); + cmGeneratorTarget* gt = new cmGeneratorTarget(*j, lg); this->GeneratorTargets[*j] = gt; generatorTargets[*j] = gt; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ec60c675a3fb4294776b2d644974361b145c444 commit 8ec60c675a3fb4294776b2d644974361b145c444 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:12:24 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:45 2015 -0400 cmGlobalGenerator: Create GeneratorTargets with a local generator. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index a462113..c4396c6 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1456,9 +1456,10 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } //---------------------------------------------------------------------------- -void cmGlobalGenerator::CreateGeneratorTargets(cmMakefile *mf) +void cmGlobalGenerator::CreateGeneratorTargets(cmLocalGenerator *lg) { cmGeneratorTargetsType generatorTargets; + cmMakefile* mf = lg->GetMakefile(); cmTargets& targets = mf->GetTargets(); for(cmTargets::iterator ti = targets.begin(); ti != targets.end(); ++ti) @@ -1487,7 +1488,7 @@ void cmGlobalGenerator::CreateGeneratorTargets() // Construct per-target generator information. for(unsigned int i=0; i < this->LocalGenerators.size(); ++i) { - this->CreateGeneratorTargets(this->LocalGenerators[i]->GetMakefile()); + this->CreateGeneratorTargets(this->LocalGenerators[i]); } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f02df90..d606cc9 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -483,7 +483,7 @@ private: // Per-target generator information. cmGeneratorTargetsType GeneratorTargets; friend class cmake; - void CreateGeneratorTargets(cmMakefile* mf); + void CreateGeneratorTargets(cmLocalGenerator* lg); void CreateGeneratorTargets(); void ClearGeneratorMembers(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index e51b260..0570399 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -483,7 +483,7 @@ bool cmake::FindPackage(const std::vector& args) std::string linkPath; std::string flags; std::string linkFlags; - gg->CreateGeneratorTargets(mf); + gg->CreateGeneratorTargets(lg.get()); cmGeneratorTarget *gtgt = gg->GetGeneratorTarget(tgt); lg->GetTargetFlags(linkLibs, frameworkPath, linkPath, flags, linkFlags, gtgt, false); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dee197fe610b5fe50403da796539b63a74430bd3 commit dee197fe610b5fe50403da796539b63a74430bd3 Author: Stephen Kelly AuthorDate: Sat Jun 6 13:02:59 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:45 2015 -0400 GHS: Use a cmGeneratorTarget in generator API. diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 01e2011..14efc3e 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -21,23 +21,24 @@ std::string const cmGhsMultiTargetGenerator::DDOption("-dynamic"); -cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmTarget *target) - : Target(target) +cmGhsMultiTargetGenerator::cmGhsMultiTargetGenerator(cmGeneratorTarget *target) + : Target(target->Target) + , GeneratorTarget(target) , LocalGenerator(static_cast( - target->GetMakefile()->GetLocalGenerator())) - , Makefile(target->GetMakefile()) - , TargetGroup(DetermineIfTargetGroup(target)) + target->GetLocalGenerator())) + , Makefile(target->Target->GetMakefile()) + , TargetGroup(DetermineIfTargetGroup(target->Target)) , DynamicDownload(false) { - this->RelBuildFilePath = this->GetRelBuildFilePath(target); + this->RelBuildFilePath = this->GetRelBuildFilePath(target->Target); this->RelOutputFileName = this->RelBuildFilePath + this->Target->GetName() + ".a"; this->RelBuildFileName = this->RelBuildFilePath; - this->RelBuildFileName += this->GetBuildFileName(target); + this->RelBuildFileName += this->GetBuildFileName(target->Target); - std::string absPathToRoot = this->GetAbsPathToRoot(target); + std::string absPathToRoot = this->GetAbsPathToRoot(target->Target); absPathToRoot = this->AddSlashIfNeededToPath(absPathToRoot); this->AbsBuildFilePath = absPathToRoot + this->RelBuildFilePath; this->AbsBuildFileName = absPathToRoot + this->RelBuildFileName; @@ -373,7 +374,6 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() cmTarget *tg(GetGlobalGenerator()->FindTarget(libName)); if (NULL != tg) { - cmGhsMultiTargetGenerator gmtg(tg); libName = tg->GetName() + ".a"; } *this->GetFolderBuildStreams() << " -l\"" << libName << "\"" diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index 8e81db8..c29a31e 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -27,7 +27,7 @@ class cmCustomCommand; class cmGhsMultiTargetGenerator { public: - cmGhsMultiTargetGenerator(cmTarget *target); + cmGhsMultiTargetGenerator(cmGeneratorTarget* target); virtual ~cmGhsMultiTargetGenerator(); @@ -100,6 +100,7 @@ private: const std::string &language); cmTarget *Target; + cmGeneratorTarget* GeneratorTarget; cmLocalGhsMultiGenerator *LocalGenerator; cmMakefile *Makefile; std::string AbsBuildFilePath; diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index 870b9b9..8e498dd 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -37,7 +37,7 @@ void cmLocalGhsMultiGenerator::Generate() { continue; } - cmGhsMultiTargetGenerator tg(l->second->Target); + cmGhsMultiTargetGenerator tg(l->second); tg.Generate(); } } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b2b41b83ff594555f3b80c6c2fd12e10e1e97458 commit b2b41b83ff594555f3b80c6c2fd12e10e1e97458 Author: Stephen Kelly AuthorDate: Sat Jun 6 12:59:25 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:45 2015 -0400 cmGeneratorTarget: Add accessor for cmLocalGenerator. diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 2f68ab0..482eefd 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -228,6 +228,11 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t), this->GlobalGenerator = this->Makefile->GetGlobalGenerator(); } +cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const +{ + return this->LocalGenerator; +} + //---------------------------------------------------------------------------- int cmGeneratorTarget::GetType() const { diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index a8edcb8..645b792 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -26,6 +26,8 @@ class cmGeneratorTarget public: cmGeneratorTarget(cmTarget*); + cmLocalGenerator* GetLocalGenerator() const; + int GetType() const; std::string GetName() const; const char *GetProperty(const std::string& prop) const; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2e9333a1d0979c4d6ecfe8fd16382ea6526dec9c commit 2e9333a1d0979c4d6ecfe8fd16382ea6526dec9c Author: Stephen Kelly AuthorDate: Sat Jun 6 13:00:51 2015 +0200 Commit: Brad King CommitDate: Mon Jun 22 13:23:42 2015 -0400 C::B: Get the Makefile from the LocalGenerator, not vice-versa. The Makefile is a configure-time concept, and the LocalGenerator is a generate time concept. The LocalGenerator should not be available from the Makefile. diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index e374387..a31e832 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -313,7 +313,7 @@ void cmExtraCodeBlocksGenerator " "<\n"; - this->AppendTarget(fout, "all", 0, make.c_str(), mf, compiler.c_str()); + this->AppendTarget(fout, "all", 0, make.c_str(), lgs[0], compiler.c_str()); // add all executable and library targets and some of the GLOBAL // and UTILITY targets @@ -335,7 +335,7 @@ void cmExtraCodeBlocksGenerator makefile->GetHomeOutputDirectory())==0) { this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } } break; @@ -351,7 +351,7 @@ void cmExtraCodeBlocksGenerator } this->AppendTarget(fout, ti->first, 0, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); break; case cmTarget::EXECUTABLE: case cmTarget::STATIC_LIBRARY: @@ -360,11 +360,11 @@ void cmExtraCodeBlocksGenerator case cmTarget::OBJECT_LIBRARY: { this->AppendTarget(fout, ti->first, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); std::string fastTarget = ti->first; fastTarget += "/fast"; this->AppendTarget(fout, fastTarget, &ti->second, - make.c_str(), makefile, compiler.c_str()); + make.c_str(), *lg, compiler.c_str()); } break; default: @@ -519,14 +519,16 @@ void cmExtraCodeBlocksGenerator // Write a dummy file for OBJECT libraries, so C::B can reference some file std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( - cmMakefile* mf, cmTarget* target) const + cmLocalGenerator* lg, + cmTarget* target) const { + cmMakefile *mf = lg->GetMakefile(); // this file doesn't seem to be used by C::B in custom makefile mode, // but we generate a unique file for each OBJECT library so in case // C::B uses it in some way, the targets don't interfere with each other. std::string filename = mf->GetCurrentBinaryDirectory(); filename += "/"; - filename += mf->GetLocalGenerator()->GetTargetDirectory(*target); + filename += lg->GetTargetDirectory(*target); filename += "/"; filename += target->GetName(); filename += ".objlib"; @@ -547,9 +549,10 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler) { + cmMakefile const* makefile = lg->GetMakefile(); std::string makefileName = makefile->GetCurrentBinaryDirectory(); makefileName += "/Makefile"; @@ -583,7 +586,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::string location; if ( target->GetType()==cmTarget::OBJECT_LIBRARY) { - location = this->CreateDummyTargetFile(const_cast(makefile), + location = this->CreateDummyTargetFile(const_cast(lg), target); } else @@ -618,8 +621,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, std::set uniqIncludeDirs; std::vector includes; - target->GetMakefile()->GetLocalGenerator()-> - GetIncludeDirectories(includes, gtgt, "C", buildType); + lg->GetIncludeDirectories(includes, gtgt, "C", buildType); uniqIncludeDirs.insert(includes.begin(), includes.end()); diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h index 97da1b8..e5ede9a 100644 --- a/Source/cmExtraCodeBlocksGenerator.h +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -48,7 +48,8 @@ private: void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); - std::string CreateDummyTargetFile(cmMakefile* mf, cmTarget* target) const; + std::string CreateDummyTargetFile(cmLocalGenerator* lg, + cmTarget* target) const; std::string GetCBCompilerId(const cmMakefile* mf); int GetCBTargetType(cmTarget* target); @@ -58,7 +59,7 @@ private: const std::string& targetName, cmTarget* target, const char* make, - const cmMakefile* makefile, + const cmLocalGenerator* lg, const char* compiler); }; ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Tue Jun 23 00:01:07 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 23 Jun 2015 00:01:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-244-g6ccb534 Message-ID: <20150623040107.289C9B025B@public.kitware.com> 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, master has been updated via 6ccb534df3a131d87ea14082fea05484039fc524 (commit) from ec6d6be57d5a032bd7c29bc440c8c8710eb426e8 (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=6ccb534df3a131d87ea14082fea05484039fc524 commit 6ccb534df3a131d87ea14082fea05484039fc524 Author: Kitware Robot AuthorDate: Tue Jun 23 00:01:05 2015 -0400 Commit: Kitware Robot CommitDate: Tue Jun 23 00:01:05 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 1532fd0..98e75c7 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150622) +set(CMake_VERSION_PATCH 20150623) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 08:45:35 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 08:45:35 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-616-gca67de7 Message-ID: <20150623124535.EBFA5AAC01@public.kitware.com> 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 ca67de7f3bfb0947024441b360c427b487c959cf (commit) via 69c5f134a6d681e7e66052ad40e8e74cebf64e61 (commit) via 9579be1043a5d0156006a483f2a4724627fcbf14 (commit) via 6ccb534df3a131d87ea14082fea05484039fc524 (commit) from 2b0cb5307e473f0d168128a283568814198f3454 (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=ca67de7f3bfb0947024441b360c427b487c959cf commit ca67de7f3bfb0947024441b360c427b487c959cf Merge: 2b0cb53 69c5f13 Author: Brad King AuthorDate: Tue Jun 23 08:45:35 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 08:45:35 2015 -0400 Merge topic 'FindIce-updates' into next 69c5f134 FindIce: Find all Ice executables 9579be10 FindIce: Update for Ice version 3.6.0 6ccb534d CMake Nightly Date Stamp http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=69c5f134a6d681e7e66052ad40e8e74cebf64e61 commit 69c5f134a6d681e7e66052ad40e8e74cebf64e61 Author: Roger Leigh AuthorDate: Tue Jun 23 09:27:59 2015 +0000 Commit: Roger Leigh CommitDate: Tue Jun 23 09:35:19 2015 +0000 FindIce: Find all Ice executables diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake index b48919b..c88c1b8 100644 --- a/Modules/FindIce.cmake +++ b/Modules/FindIce.cmake @@ -20,7 +20,7 @@ # Ice_SLICE_DIRS - the directories containing the Ice slice interface # definitions # -# Ice programs are reported in:: +# Ice slice programs are reported in:: # # Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable # Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable @@ -33,6 +33,44 @@ # Ice_SLICE2PY_EXECUTABLE - path to slice2py executable # Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable # +# Ice programs are reported in:: +# +# Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable +# Ice_ICEBOX_EXECUTABLE - path to icebox executable +# Ice_ICEBOXADMIN_EXECUTABLE - path to iceboxadmin executable +# Ice_ICEBOXD_EXECUTABLE - path to iceboxd executable +# Ice_ICEBOXNET_EXECUTABLE - path to iceboxnet executable +# Ice_ICEGRIDADMIN_EXECUTABLE - path to icegridadmin executable +# Ice_ICEGRIDNODE_EXECUTABLE - path to icegridnode executable +# Ice_ICEGRIDNODED_EXECUTABLE - path to icegridnoded executable +# Ice_ICEGRIDREGISTRY_EXECUTABLE - path to icegridregistry executable +# Ice_ICEGRIDREGISTRYD_EXECUTABLE - path to icegridregistryd executable +# Ice_ICEPATCH2CALC_EXECUTABLE - path to icepatch2calc executable +# Ice_ICEPATCH2CLIENT_EXECUTABLE - path to icepatch2client executable +# Ice_ICEPATCH2SERVER_EXECUTABLE - path to icepatch2server executable +# Ice_ICESERVICEINSTALL_EXECUTABLE - path to iceserviceinstall executable +# Ice_ICESTORMADMIN_EXECUTABLE - path to icestormadmin executable +# Ice_ICESTORMMIGRATE_EXECUTABLE - path to icestormmigrate executable +# +# Ice db programs (Windows only; standard system versions on all other +# platforms) are reported in:: +# +# Ice_DB_ARCHIVE_EXECUTABLE - path to db_archive executable +# Ice_DB_CHECKPOINT_EXECUTABLE - path to db_checkpoint executable +# Ice_DB_DEADLOCK_EXECUTABLE - path to db_deadlock executable +# Ice_DB_DUMP_EXECUTABLE - path to db_dump executable +# Ice_DB_HOTBACKUP_EXECUTABLE - path to db_hotbackup executable +# Ice_DB_LOAD_EXECUTABLE - path to db_load executable +# Ice_DB_LOG_VERIFY_EXECUTABLE - path to db_log_verify executable +# Ice_DB_PRINTLOG_EXECUTABLE - path to db_printlog executable +# Ice_DB_RECOVER_EXECUTABLE - path to db_recover executable +# Ice_DB_STAT_EXECUTABLE - path to db_stat executable +# Ice_DB_TUNER_EXECUTABLE - path to db_tuner executable +# Ice_DB_UPGRADE_EXECUTABLE - path to db_upgrade executable +# Ice_DB_VERIFY_EXECUTABLE - path to db_verify executable +# Ice_DUMPDB_EXECUTABLE - path to dumpdb executable +# Ice_TRANSFORMDB_EXECUTABLE - path to transformdb executable +# # Ice component libraries are reported in:: # # Ice__FOUND - ON if component was found @@ -77,7 +115,7 @@ # Written by Roger Leigh #============================================================================= -# Copyright 2014 University of Dundee +# Copyright 2014-2015 University of Dundee # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -201,7 +239,42 @@ function(_Ice_FIND) endforeach() endif() + set(db_programs + db_archive + db_checkpoint + db_deadlock + db_dump + db_hotbackup + db_load + db_log_verify + db_printlog + db_recover + db_stat + db_tuner + db_upgrade + db_verify + dumpdb + transformdb) + set(ice_programs + glacier2router + icebox + iceboxadmin + iceboxd + iceboxnet + icegridadmin + icegridnode + icegridnoded + icegridregistry + icegridregistryd + icepatch2calc + icepatch2client + icepatch2server + iceserviceinstall + icestormadmin + icestormmigrate) + + set(slice_programs slice2cpp slice2cs slice2freezej @@ -214,7 +287,7 @@ function(_Ice_FIND) slice2rb) # Find all Ice programs - foreach(program ${ice_programs}) + foreach(program ${db_programs} ${ice_programs} ${slice_programs}) string(TOUPPER "${program}" program_upcase) set(cache_var "Ice_${program_upcase}_EXECUTABLE") set(program_var "Ice_${program_upcase}_EXECUTABLE") @@ -377,6 +450,7 @@ if(Ice_DEBUG) message(STATUS "Ice_INCLUDE_DIR directory: ${Ice_INCLUDE_DIR}") message(STATUS "Ice_SLICE_DIR directory: ${Ice_SLICE_DIR}") message(STATUS "Ice_LIBRARIES: ${Ice_LIBRARIES}") + message(STATUS "slice2cpp executable: ${Ice_SLICE2CPP_EXECUTABLE}") message(STATUS "slice2cs executable: ${Ice_SLICE2CS_EXECUTABLE}") message(STATUS "slice2freezej executable: ${Ice_SLICE2FREEZEJ_EXECUTABLE}") @@ -387,6 +461,40 @@ if(Ice_DEBUG) message(STATUS "slice2php executable: ${Ice_SLICE2PHP_EXECUTABLE}") message(STATUS "slice2py executable: ${Ice_SLICE2PY_EXECUTABLE}") message(STATUS "slice2rb executable: ${Ice_SLICE2RB_EXECUTABLE}") + message(STATUS "glacier2router executable: ${Ice_GLACIER2ROUTER_EXECUTABLE}") + + message(STATUS "icebox executable: ${Ice_ICEBOX_EXECUTABLE}") + message(STATUS "iceboxadmin executable: ${Ice_ICEBOXADMIN_EXECUTABLE}") + message(STATUS "iceboxd executable: ${Ice_ICEBOXD_EXECUTABLE}") + message(STATUS "iceboxnet executable: ${Ice_ICEBOXNET_EXECUTABLE}") + message(STATUS "icegridadmin executable: ${Ice_ICEGRIDADMIN_EXECUTABLE}") + message(STATUS "icegridnode executable: ${Ice_ICEGRIDNODE_EXECUTABLE}") + message(STATUS "icegridnoded executable: ${Ice_ICEGRIDNODED_EXECUTABLE}") + message(STATUS "icegridregistry executable: ${Ice_ICEGRIDREGISTRY_EXECUTABLE}") + message(STATUS "icegridregistryd executable: ${Ice_ICEGRIDREGISTRYD_EXECUTABLE}") + message(STATUS "icepatch2calc executable: ${Ice_ICEPATCH2CALC_EXECUTABLE}") + message(STATUS "icepatch2client executable: ${Ice_ICEPATCH2CLIENT_EXECUTABLE}") + message(STATUS "icepatch2server executable: ${Ice_ICEPATCH2SERVER_EXECUTABLE}") + message(STATUS "iceserviceinstall executable: ${Ice_ICESERVICEINSTALL_EXECUTABLE}") + message(STATUS "icestormadmin executable: ${Ice_ICESTORMADMIN_EXECUTABLE}") + message(STATUS "icestormmigrate executable: ${Ice_ICESTORMMIGRATE_EXECUTABLE}") + + message(STATUS "db_archive executable: ${Ice_DB_ARCHIVE_EXECUTABLE}") + message(STATUS "db_checkpoint executable: ${Ice_DB_CHECKPOINT_EXECUTABLE}") + message(STATUS "db_deadlock executable: ${Ice_DB_DEADLOCK_EXECUTABLE}") + message(STATUS "db_dump executable: ${Ice_DB_DUMP_EXECUTABLE}") + message(STATUS "db_hotbackup executable: ${Ice_DB_HOTBACKUP_EXECUTABLE}") + message(STATUS "db_load executable: ${Ice_DB_LOAD_EXECUTABLE}") + message(STATUS "db_log_verify executable: ${Ice_DB_LOG_VERIFY_EXECUTABLE}") + message(STATUS "db_printlog executable: ${Ice_DB_PRINTLOG_EXECUTABLE}") + message(STATUS "db_recover executable: ${Ice_DB_RECOVER_EXECUTABLE}") + message(STATUS "db_stat executable: ${Ice_DB_STAT_EXECUTABLE}") + message(STATUS "db_tuner executable: ${Ice_DB_TUNER_EXECUTABLE}") + message(STATUS "db_upgrade executable: ${Ice_DB_UPGRADE_EXECUTABLE}") + message(STATUS "db_verify executable: ${Ice_DB_VERIFY_EXECUTABLE}") + message(STATUS "dumpdb executable: ${Ice_DUMPDB_EXECUTABLE}") + message(STATUS "transformdb executable: ${Ice_TRANSFORMDB_EXECUTABLE}") + foreach(component ${Ice_FIND_COMPONENTS}) string(TOUPPER "${component}" component_upcase) set(component_lib "Ice_${component_upcase}_LIBRARIES") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9579be1043a5d0156006a483f2a4724627fcbf14 commit 9579be1043a5d0156006a483f2a4724627fcbf14 Author: Roger Leigh AuthorDate: Tue Jun 23 08:57:59 2015 +0000 Commit: Roger Leigh CommitDate: Tue Jun 23 08:57:59 2015 +0000 FindIce: Update for Ice version 3.6.0 diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake index 8493d80..b48919b 100644 --- a/Modules/FindIce.cmake +++ b/Modules/FindIce.cmake @@ -28,6 +28,7 @@ # Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable # Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable # Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable +# Ice_SLICE2JS_EXECUTABLE - path to slice2js executable # Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable # Ice_SLICE2PY_EXECUTABLE - path to slice2py executable # Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable @@ -94,6 +95,8 @@ function(_Ice_FIND) # Released versions of Ice, including generic short forms set(ice_versions 3 + 3.6 + 3.6.0 3.5 3.5.1 3.5.0 @@ -205,6 +208,7 @@ function(_Ice_FIND) slice2freeze slice2html slice2java + slice2js slice2php slice2py slice2rb) @@ -379,6 +383,7 @@ if(Ice_DEBUG) message(STATUS "slice2freeze executable: ${Ice_SLICE2FREEZE_EXECUTABLE}") message(STATUS "slice2html executable: ${Ice_SLICE2HTML_EXECUTABLE}") message(STATUS "slice2java executable: ${Ice_SLICE2JAVA_EXECUTABLE}") + message(STATUS "slice2js executable: ${Ice_SLICE2JS_EXECUTABLE}") message(STATUS "slice2php executable: ${Ice_SLICE2PHP_EXECUTABLE}") message(STATUS "slice2py executable: ${Ice_SLICE2PY_EXECUTABLE}") message(STATUS "slice2rb executable: ${Ice_SLICE2RB_EXECUTABLE}") ----------------------------------------------------------------------- Summary of changes: Modules/FindIce.cmake | 119 +++++++++++++++++++++++++++++++++++++++++++-- Source/CMakeVersion.cmake | 2 +- 2 files changed, 117 insertions(+), 4 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 08:52:08 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 08:52:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-618-gac05313 Message-ID: <20150623125208.78B84B01BA@public.kitware.com> 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 ac05313642c35cb3cee047d897614896bd7ce063 (commit) via b24b58bb7b100794846786521f1977f048ecf5b6 (commit) from ca67de7f3bfb0947024441b360c427b487c959cf (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=ac05313642c35cb3cee047d897614896bd7ce063 commit ac05313642c35cb3cee047d897614896bd7ce063 Merge: ca67de7 b24b58b Author: Brad King AuthorDate: Tue Jun 23 08:52:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 08:52:07 2015 -0400 Merge topic 'emacs-mode-prog-mode-hooks' into next b24b58bb cmake-mode.el: Add support for prog-mode hooks (#15521) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b24b58bb7b100794846786521f1977f048ecf5b6 commit b24b58bb7b100794846786521f1977f048ecf5b6 Author: Jostein Kj?nigsen AuthorDate: Tue Jun 23 10:05:37 2015 +0200 Commit: Brad King CommitDate: Tue Jun 23 08:48:01 2015 -0400 cmake-mode.el: Add support for prog-mode hooks (#15521) Since version 24, Emacs supports a generic mode called prog-mode. Like all other modes it has its own mode-hook, prog-mode-hook. For Emacs users it is common to provide all your generic programming-mode related customizations in this mode-hook. cmake-mode is definitely a programming-mode and should support calling this hook. There are two ways to make that happen: * Make your major-mode a derived-mode from prog-mode. * Manually calling the hook upon mode-activation. Implementing a derived mode may be the most proper thing to do, but that may require quite a few structural changes. For now just call the hook explicitly if it exists. This should cover much of what users need. diff --git a/Auxiliary/cmake-mode.el b/Auxiliary/cmake-mode.el index 7458a66..51663a8 100644 --- a/Auxiliary/cmake-mode.el +++ b/Auxiliary/cmake-mode.el @@ -259,7 +259,9 @@ the indentation. Otherwise it retains the same position on the line" (setq comment-start "#") ; Run user hooks. - (run-hooks 'cmake-mode-hook)) + (if (boundp 'prog-mode-hook) + (run-hooks 'prog-mode-hook 'cmake-mode-hook) + (run-hooks 'cmake-mode-hook))) ; Help mode starts here ----------------------------------------------------------------------- Summary of changes: Auxiliary/cmake-mode.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:06:01 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:06:01 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-620-g9ad5d3a Message-ID: <20150623130602.010A2B06AD@public.kitware.com> 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 9ad5d3a866edf06012af697a8949c6369010a44a (commit) via 2bf22a4b908592e363fc9aa93b3d09fbb5387b4d (commit) from ac05313642c35cb3cee047d897614896bd7ce063 (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=9ad5d3a866edf06012af697a8949c6369010a44a commit 9ad5d3a866edf06012af697a8949c6369010a44a Merge: ac05313 2bf22a4 Author: Brad King AuthorDate: Tue Jun 23 09:06:01 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 09:06:01 2015 -0400 Merge topic 'qt-autogen-always-run' into next 2bf22a4b QtAutogen: Add comment explaining why rcc cannot use PRE_BUILD http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2bf22a4b908592e363fc9aa93b3d09fbb5387b4d commit 2bf22a4b908592e363fc9aa93b3d09fbb5387b4d Author: Brad King AuthorDate: Mon Jun 22 10:49:36 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 09:05:30 2015 -0400 QtAutogen: Add comment explaining why rcc cannot use PRE_BUILD diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index d2f6e36..d8f826c 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -440,6 +440,9 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target) this->ListQt4RccInputs(sf, depends); } #if defined(_WIN32) && !defined(__CYGWIN__) + // Cannot use PRE_BUILD because the resource files themselves + // may not be sources within the target so VS may not know the + // target needs to re-build at all. usePRE_BUILD = false; #endif } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:08:16 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:08:16 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-247-gbddfe77 Message-ID: <20150623130816.D43BBB071A@public.kitware.com> 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, master has been updated via bddfe77d12ee7d6ecaa3c4fa8ade1c4c0cab5760 (commit) via 2bf22a4b908592e363fc9aa93b3d09fbb5387b4d (commit) via 0e346427a254024b8eafe52956e8f4ba05d856ed (commit) from 6ccb534df3a131d87ea14082fea05484039fc524 (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=bddfe77d12ee7d6ecaa3c4fa8ade1c4c0cab5760 commit bddfe77d12ee7d6ecaa3c4fa8ade1c4c0cab5760 Merge: 6ccb534 2bf22a4 Author: Brad King AuthorDate: Tue Jun 23 09:08:15 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 09:08:15 2015 -0400 Merge topic 'qt-autogen-always-run' 2bf22a4b QtAutogen: Add comment explaining why rcc cannot use PRE_BUILD 0e346427 QtAutogen: Always run autogen step even when rcc is enabled (#15608) ----------------------------------------------------------------------- Summary of changes: Source/cmQtAutoGenerators.cxx | 25 +++--------------- Tests/QtAutogen/CMakeLists.txt | 23 +++++++++++++++++ Tests/QtAutogen/automoc_rerun/CMakeLists.txt | 27 ++++++++++++++++++++ .../res1/input.txt.in => automoc_rerun/input.txt} | 0 .../res1.qrc.in => automoc_rerun/res1.qrc} | 2 +- .../automoc_rerun/test1.cpp} | 2 +- Tests/QtAutogen/automoc_rerun/test1.h.in1 | 8 ++++++ Tests/QtAutogen/automoc_rerun/test1.h.in2 | 7 +++++ 8 files changed, 71 insertions(+), 23 deletions(-) create mode 100644 Tests/QtAutogen/automoc_rerun/CMakeLists.txt copy Tests/QtAutogen/{autorcc_depends/res1/input.txt.in => automoc_rerun/input.txt} (100%) copy Tests/QtAutogen/{autorcc_depends/res1.qrc.in => automoc_rerun/res1.qrc} (61%) copy Tests/{CTestTestDepends/simple.cxx => QtAutogen/automoc_rerun/test1.cpp} (58%) create mode 100644 Tests/QtAutogen/automoc_rerun/test1.h.in1 create mode 100644 Tests/QtAutogen/automoc_rerun/test1.h.in2 hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:08:19 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:08:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-249-g5ab7dd5 Message-ID: <20150623130819.A4135B0721@public.kitware.com> 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, master has been updated via 5ab7dd544e2d10bf6b05ab046a852b84eee63126 (commit) via 5d85fb4f407cd661fb904f68e2c9cc27ddcc0331 (commit) from bddfe77d12ee7d6ecaa3c4fa8ade1c4c0cab5760 (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=5ab7dd544e2d10bf6b05ab046a852b84eee63126 commit 5ab7dd544e2d10bf6b05ab046a852b84eee63126 Merge: bddfe77 5d85fb4 Author: Brad King AuthorDate: Tue Jun 23 09:08:18 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 09:08:18 2015 -0400 Merge topic 'fix-function-missing-end' 5d85fb4f Fix assertion failure on unmatched function or macro ----------------------------------------------------------------------- Summary of changes: Source/cmForEachCommand.cxx | 22 +++++++++++++------- Source/cmForEachCommand.h | 5 +++-- Source/cmMakefile.cxx | 1 - Source/cmMakefile.h | 9 -------- Source/cmWhileCommand.cxx | 17 ++++++++++----- Source/cmWhileCommand.h | 5 +++-- .../FunctionUnmatched-result.txt} | 0 Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt | 6 ++++++ Tests/RunCMake/Syntax/FunctionUnmatched.cmake | 2 ++ .../MacroUnmatched-result.txt} | 0 Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt | 6 ++++++ Tests/RunCMake/Syntax/MacroUnmatched.cmake | 2 ++ Tests/RunCMake/Syntax/RunCMakeTest.cmake | 2 ++ 13 files changed, 50 insertions(+), 27 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/FunctionUnmatched-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatched.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/MacroUnmatched-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt create mode 100644 Tests/RunCMake/Syntax/MacroUnmatched.cmake hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:08:21 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:08:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-258-g56e5d4e Message-ID: <20150623130821.D2DEDB0728@public.kitware.com> 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, master has been updated via 56e5d4e18095734a4418159f05dfc1e5c53f2877 (commit) via e77142350de1dec03ca788e3d3e278b7b9358fb5 (commit) via 5aa556be560b782d149b53bccc12dfc2be2bda0b (commit) via bb88668addb3746f6f043533f0405914834a0421 (commit) via a3b210fd6cb85cba76f867e93d94dd835fa3278a (commit) via 8ec60c675a3fb4294776b2d644974361b145c444 (commit) via dee197fe610b5fe50403da796539b63a74430bd3 (commit) via b2b41b83ff594555f3b80c6c2fd12e10e1e97458 (commit) via 2e9333a1d0979c4d6ecfe8fd16382ea6526dec9c (commit) from 5ab7dd544e2d10bf6b05ab046a852b84eee63126 (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=56e5d4e18095734a4418159f05dfc1e5c53f2877 commit 56e5d4e18095734a4418159f05dfc1e5c53f2877 Merge: 5ab7dd5 e771423 Author: Brad King AuthorDate: Tue Jun 23 09:08:20 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 09:08:20 2015 -0400 Merge topic 'use-generator-target' e7714235 Get the local generator from the GeneratorTarget. 5aa556be cmMakefileTargetGenerator: Require cmGeneratorTarget. bb88668a cmNinjaGenerator: Require cmGeneratorTarget. a3b210fd cmGeneratorTarget: Require a cmLocalGenerator to construct. 8ec60c67 cmGlobalGenerator: Create GeneratorTargets with a local generator. dee197fe GHS: Use a cmGeneratorTarget in generator API. b2b41b83 cmGeneratorTarget: Add accessor for cmLocalGenerator. 2e9333a1 C::B: Get the Makefile from the LocalGenerator, not vice-versa. ----------------------------------------------------------------------- Summary of changes: Source/cmExtraCodeBlocksGenerator.cxx | 24 +++++++++++++----------- Source/cmExtraCodeBlocksGenerator.h | 5 +++-- Source/cmGeneratorTarget.cxx | 10 ++++++++-- Source/cmGeneratorTarget.h | 4 +++- Source/cmGhsMultiTargetGenerator.cxx | 18 +++++++++--------- Source/cmGhsMultiTargetGenerator.h | 3 ++- Source/cmGlobalGenerator.cxx | 9 +++++---- Source/cmGlobalGenerator.h | 2 +- Source/cmLocalGhsMultiGenerator.cxx | 2 +- Source/cmMakefileExecutableTargetGenerator.cxx | 2 +- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 13 +++++++------ Source/cmMakefileTargetGenerator.h | 2 +- Source/cmMakefileUtilityTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- Source/cmNinjaTargetGenerator.cxx | 11 +++++------ Source/cmNinjaTargetGenerator.h | 2 +- Source/cmNinjaUtilityTargetGenerator.cxx | 2 +- Source/cmOSXBundleGenerator.cxx | 2 +- Source/cmQtAutoGenerators.cxx | 6 +++--- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Source/cmake.cxx | 2 +- 22 files changed, 70 insertions(+), 57 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:08:45 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:08:45 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-624-ga8ad9af Message-ID: <20150623130845.124CDB0723@public.kitware.com> 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 a8ad9afc1d37102a11bd957033f9f065425d6bb2 (commit) via 56e5d4e18095734a4418159f05dfc1e5c53f2877 (commit) via 5ab7dd544e2d10bf6b05ab046a852b84eee63126 (commit) via bddfe77d12ee7d6ecaa3c4fa8ade1c4c0cab5760 (commit) from 9ad5d3a866edf06012af697a8949c6369010a44a (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=a8ad9afc1d37102a11bd957033f9f065425d6bb2 commit a8ad9afc1d37102a11bd957033f9f065425d6bb2 Merge: 9ad5d3a 56e5d4e Author: Brad King AuthorDate: Tue Jun 23 09:08:36 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 09:08:36 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:10:40 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:10:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-263-gd0c0efb Message-ID: <20150623131040.74A21144DB@public.kitware.com> 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, master has been updated via d0c0efb5ccc57cc01e25fc5e21a16e0c86d1ea70 (commit) via 4d56aeff74ae52de74f33a20ecd6f45c04c5bae3 (commit) via 38ee28bfd501e0d29650bc2fbd08eaec416eade3 (commit) via a38c2711e9110b5b8d8122cdf1aaf25d65f5ea3b (commit) via 49988996c1eb59df2986ad57d2207e14da5e14d9 (commit) from 56e5d4e18095734a4418159f05dfc1e5c53f2877 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:10:40 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:10:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-630-g63b1683 Message-ID: <20150623131040.931F9145E0@public.kitware.com> 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 63b168329acd6e491d296de560be11e6c5322304 (commit) via d0c0efb5ccc57cc01e25fc5e21a16e0c86d1ea70 (commit) via 4d56aeff74ae52de74f33a20ecd6f45c04c5bae3 (commit) via 38ee28bfd501e0d29650bc2fbd08eaec416eade3 (commit) via a38c2711e9110b5b8d8122cdf1aaf25d65f5ea3b (commit) via 49988996c1eb59df2986ad57d2207e14da5e14d9 (commit) from a8ad9afc1d37102a11bd957033f9f065425d6bb2 (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=63b168329acd6e491d296de560be11e6c5322304 commit 63b168329acd6e491d296de560be11e6c5322304 Merge: a8ad9af d0c0efb Author: Brad King AuthorDate: Tue Jun 23 09:10:18 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 09:10:18 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 09:10:40 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 09:10:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.3.0-rc2-6-g38ee28b Message-ID: <20150623131040.E73041465E@public.kitware.com> 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, release has been updated via 38ee28bfd501e0d29650bc2fbd08eaec416eade3 (commit) via 5d85fb4f407cd661fb904f68e2c9cc27ddcc0331 (commit) via 49988996c1eb59df2986ad57d2207e14da5e14d9 (commit) via 17c5152170992e84d95a25df37d0aec7949f54c5 (commit) from 8576c394b105b9697cefb6dbf7d105d74fa5ee60 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-buildsystem.7.rst | 2 +- Source/cmForEachCommand.cxx | 22 +++++++++++++------- Source/cmForEachCommand.h | 5 +++-- Source/cmMakefile.cxx | 1 - Source/cmMakefile.h | 9 -------- Source/cmWhileCommand.cxx | 17 ++++++++++----- Source/cmWhileCommand.h | 5 +++-- .../FunctionUnmatched-result.txt} | 0 Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt | 6 ++++++ Tests/RunCMake/Syntax/FunctionUnmatched.cmake | 2 ++ .../MacroUnmatched-result.txt} | 0 Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt | 6 ++++++ Tests/RunCMake/Syntax/MacroUnmatched.cmake | 2 ++ Tests/RunCMake/Syntax/RunCMakeTest.cmake | 2 ++ 14 files changed, 51 insertions(+), 28 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/FunctionUnmatched-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt create mode 100644 Tests/RunCMake/Syntax/FunctionUnmatched.cmake copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Syntax/MacroUnmatched-result.txt} (100%) create mode 100644 Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt create mode 100644 Tests/RunCMake/Syntax/MacroUnmatched.cmake hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 10:06:13 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 10:06:13 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-634-gb5bc9fe Message-ID: <20150623140613.A8416B04F7@public.kitware.com> 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 b5bc9fe838f2012967ce6534328cd302b88dbbef (commit) via 92f1ccd9c8060338d64f86847cc06d733a14d258 (commit) via e1a732f9fc89f451401fd497e1c76479b641fa55 (commit) via a2b7b1ec3a449e561d1dd9c65a26bd5023d4fc79 (commit) from 63b168329acd6e491d296de560be11e6c5322304 (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=b5bc9fe838f2012967ce6534328cd302b88dbbef commit b5bc9fe838f2012967ce6534328cd302b88dbbef Merge: 63b1683 92f1ccd Author: Brad King AuthorDate: Tue Jun 23 10:06:12 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 10:06:12 2015 -0400 Merge topic 'ctest-test-load' into next 92f1ccd9 ctest: Optionally avoid starting tests that may exceed a given CPU load e1a732f9 Help: Fix typo in ctest_test documentation a2b7b1ec cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=92f1ccd9c8060338d64f86847cc06d733a14d258 commit 92f1ccd9c8060338d64f86847cc06d733a14d258 Author: Betsy McPhail AuthorDate: Tue Jun 9 08:50:44 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 10:04:21 2015 -0400 ctest: Optionally avoid starting tests that may exceed a given CPU load Add a TestLoad setting to CTest that can be set via a new --test-load command-line option, CTEST_TEST_LOAD variable, or TEST_LOAD option to the ctest_test command. Teach cmCTestMultiProcessHandler to measure the CPU load and avoid starting tests that may take more than the spare load currently available. The expression + <= must be true to start a new test. Co-Author: Zack Galbreath diff --git a/Help/command/ctest_memcheck.rst b/Help/command/ctest_memcheck.rst index 2800511..29bdf7d 100644 --- a/Help/command/ctest_memcheck.rst +++ b/Help/command/ctest_memcheck.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest MemCheck Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index af422b6..162db69 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] @@ -61,6 +62,13 @@ The options are: Specify a positive number representing the number of tests to be run in parallel. +``TEST_LOAD `` + While running tests in parallel, try not to start tests when they + may cause the CPU load to pass above a given threshold. If not + specified the :variable:`CTEST_TEST_LOAD` variable will be checked, + and then the ``--test-load`` command-line argument to :manual:`ctest(1)`. + See also the ``TestLoad`` setting in the :ref:`CTest Test Step`. + ``SCHEDULE_RANDOM `` Launch tests in a random order. This may be useful for detecting implicit test dependencies. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..adbc40b 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -386,6 +386,7 @@ Variables for CTest /variable/CTEST_SVN_COMMAND /variable/CTEST_SVN_OPTIONS /variable/CTEST_SVN_UPDATE_OPTIONS + /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index c91321b..50c856a 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,6 +66,13 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. +``--test-load `` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + When ``ctest`` is run as a `Dashboard Client`_ this sets the + ``TestLoad`` option of the `CTest Test Step`_. + ``-Q,--quiet`` Make ctest quiet. @@ -776,6 +783,13 @@ Arguments to the command may specify some of the step settings. Configuration settings include: +``TestLoad`` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + * `CTest Script`_ variable: :variable:`CTEST_TEST_LOAD` + * :module:`CTest` module variable: ``CTEST_TEST_LOAD`` + ``TimeOut`` The default timeout for each test if not specified by the :prop_test:`TIMEOUT` test property. diff --git a/Help/release/dev/ctest-test-load-option.rst b/Help/release/dev/ctest-test-load-option.rst new file mode 100644 index 0000000..069f49a --- /dev/null +++ b/Help/release/dev/ctest-test-load-option.rst @@ -0,0 +1,9 @@ +ctest-test-load-option +---------------------- + +* CTest learned to optionally measure the CPU load during parallel + testing and avoid starting tests that may cause the load to exceed + a given threshold. See the :manual:`ctest(1)` command ``--test-load`` + option, the ``TestLoad`` setting of the :ref:`CTest Test Step`, + the :variable:`CTEST_TEST_LOAD` variable, and the ``TEST_LOAD`` + option of the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst new file mode 100644 index 0000000..80823fe --- /dev/null +++ b/Help/variable/CTEST_TEST_LOAD.rst @@ -0,0 +1,7 @@ +CTEST_TEST_LOAD +--------------- + +Specify the ``TestLoad`` setting in the :ref:`CTest Test Step` +of a :manual:`ctest(1)` dashboard client script. This sets the +default value for the ``TEST_LOAD`` option of the :command:`ctest_test` +command. diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 37a0a40..918b407 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -95,6 +95,10 @@ SlurmRunCommand: @SLURM_SRUN_COMMAND@ # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: @CTEST_TEST_LOAD@ + UseLaunchers: @CTEST_USE_LAUNCHERS@ CurlOptions: @CTEST_CURL_OPTIONS@ # warning, if you add new options here that have to do with submit, diff --git a/Source/CTest/cmCTestGenericHandler.cxx b/Source/CTest/cmCTestGenericHandler.cxx index 81eb0a8..ad79ba2 100644 --- a/Source/CTest/cmCTestGenericHandler.cxx +++ b/Source/CTest/cmCTestGenericHandler.cxx @@ -23,6 +23,7 @@ cmCTestGenericHandler::cmCTestGenericHandler() this->SubmitIndex = 0; this->AppendXML = false; this->Quiet = false; + this->TestLoad = 0; } //---------------------------------------------------------------------- @@ -70,6 +71,7 @@ void cmCTestGenericHandler::SetPersistentOption(const std::string& op, void cmCTestGenericHandler::Initialize() { this->AppendXML = false; + this->TestLoad = 0; this->Options.clear(); t_StringToString::iterator it; for ( it = this->PersistentOptions.begin(); diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index 8567dd7..b2264cc 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -89,6 +89,8 @@ public: void SetAppendXML(bool b) { this->AppendXML = b; } void SetQuiet(bool b) { this->Quiet = b; } bool GetQuiet() { return this->Quiet; } + void SetTestLoad(long load) { this->TestLoad = load; } + long GetTestLoad() const { return this->TestLoad; } protected: bool StartResultingXML(cmCTest::Part part, @@ -97,6 +99,7 @@ protected: bool AppendXML; bool Quiet; + long TestLoad; cmSystemTools::OutputOption HandlerVerbose; cmCTest *CTest; t_StringToString Options; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 28aec3d..ba44015 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -13,12 +13,14 @@ #include "cmProcess.h" #include "cmStandardIncludes.h" #include "cmCTest.h" +#include "cmCTestScriptHandler.h" #include "cmSystemTools.h" #include #include #include #include #include +#include class TestComparator { @@ -40,6 +42,7 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; + this->TestLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; @@ -84,6 +87,11 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTestMultiProcessHandler::SetTestLoad(long load) +{ + this->TestLoad = load < 0 ? 0 : load; +} + //--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { @@ -213,6 +221,11 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) return processors; } +std::string cmCTestMultiProcessHandler::GetName(int test) +{ + return this->Properties[test]->Name; +} + //--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { @@ -259,12 +272,26 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + bool allTestsFailedTestLoadCheck = false; + bool usedFakeLoadForTesting = false; + size_t minProcessorsRequired = this->ParallelLevel; + std::string testWithMinProcessors = ""; + + cmsys::SystemInformation info; + if (this->TestLoad > 0) + { + allTestsFailedTestLoadCheck = true; + } + + double systemLoad = 0.0; + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { // Take a nap if we're currently performing a RUN_SERIAL test. if (this->SerialTestRunning) { + allTestsFailedTestLoadCheck = true; break; } // We can only start a RUN_SERIAL test if no other tests are also running. @@ -274,20 +301,96 @@ void cmCTestMultiProcessHandler::StartNextTests() } size_t processors = GetProcessorsUsed(*test); + bool testLoadOk; + if (this->TestLoad > 0) + { + // Check for a fake load average value used in testing. + if (const char* fake_load_value = + cmSystemTools::GetEnv("__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING")) + { + usedFakeLoadForTesting = true; + systemLoad = atoi(fake_load_value); + } + // If it's not set, look up the true load average. + else + { + systemLoad = info.GetLoadAverage(); + } + + // Don't start more tests than your max load can support. + if (numToStart > (this->TestLoad - systemLoad)) + { + numToStart = this->TestLoad - systemLoad; + } - if(processors <= numToStart && this->StartTest(*test)) + testLoadOk = processors <= (this->TestLoad - systemLoad); + if (testLoadOk) + { + cmCTestLog(this->CTest, DEBUG, + "OK to run " << GetName(*test) << + ", it requires " << processors << + " procs & system load is: " << + systemLoad << std::endl); + allTestsFailedTestLoadCheck = false; + } + } + else { - if(this->StopTimePassed) - { - return; - } - numToStart -= processors; + testLoadOk = true; + } + + if (processors <= minProcessorsRequired) + { + minProcessorsRequired = processors; + testWithMinProcessors = GetName(*test); + } + + if(testLoadOk && processors <= numToStart && this->StartTest(*test)) + { + if(this->StopTimePassed) + { + return; + } + + numToStart -= processors; } else if(numToStart == 0) { return; } } + + if (allTestsFailedTestLoadCheck) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING, "); + if (this->SerialTestRunning) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "Waiting for RUN_SERIAL test to finish."); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "System Load: " << systemLoad << ", " + "Max Allowed Load: " << this->TestLoad << ", " + "Smallest test " << testWithMinProcessors << + " requires " << minProcessorsRequired); + } + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + + if (usedFakeLoadForTesting) + { + // Break out of the infinite loop of waiting for our fake load + // to come down. + this->StopTimePassed = true; + } + else + { + // Wait between 1 and 5 seconds before trying again. + cmCTestScriptHandler::SleepInSeconds( + cmSystemTools::RandomSeed() % 5 + 1); + } + } } //--------------------------------------------------------- diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 243318f..68fd7ad 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,6 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); + void SetTestLoad(long load); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -93,6 +94,7 @@ protected: bool CheckCycles(); int FindMaxIndex(); inline size_t GetProcessorsUsed(int index); + std::string GetName(int index); void LockResources(int index); void UnlockResources(int index); @@ -116,6 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once + long TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 8b357ac..4058eb0 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -26,6 +26,7 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_SCHEDULE_RANDOM] = "SCHEDULE_RANDOM"; this->Arguments[ctt_STOP_TIME] = "STOP_TIME"; + this->Arguments[ctt_TEST_LOAD] = "TEST_LOAD"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -103,6 +104,38 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { this->CTest->SetStopTime(this->Values[ctt_STOP_TIME]); } + + // Test load is determined by: TEST_LOAD argument, + // or CTEST_TEST_LOAD script variable, or ctest --test-load + // command line argument... in that order. + long testLoad; + const char* ctestTestLoad + = this->Makefile->GetDefinition("CTEST_TEST_LOAD"); + if(this->Values[ctt_TEST_LOAD] && *this->Values[ctt_TEST_LOAD]) + { + if (!cmSystemTools::StringToLong(this->Values[ctt_TEST_LOAD], &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, "Invalid value for 'TEST_LOAD' : " + << this->Values[ctt_TEST_LOAD] << std::endl); + } + } + else if(ctestTestLoad && *ctestTestLoad) + { + if (!cmSystemTools::StringToLong(ctestTestLoad, &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, + "Invalid value for 'CTEST_TEST_LOAD' : " << + ctestTestLoad << std::endl); + } + } + else + { + testLoad = this->CTest->GetTestLoad(); + } + handler->SetTestLoad(testLoad); + handler->SetQuiet(this->Quiet); return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index a1e5f36..0dfca97 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -60,6 +60,7 @@ protected: ctt_PARALLEL_LEVEL, ctt_SCHEDULE_RANDOM, ctt_STOP_TIME, + ctt_TEST_LOAD, ctt_LAST }; }; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 70b7f5c..59576f4 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1062,6 +1062,14 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, parallel->SetParallelLevel(this->CTest->GetParallelLevel()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); + if(this->TestLoad > 0) + { + parallel->SetTestLoad(this->TestLoad); + } + else + { + parallel->SetTestLoad(this->CTest->GetTestLoad()); + } *this->LogFile << "Start testing: " << this->CTest->CurrentTime() << std::endl diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e3b7a2b..86ce4c7 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,6 +294,7 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; + this->TestLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -393,6 +394,11 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTest::SetTestLoad(long load) +{ + this->TestLoad = load < 0 ? 0 : load; +} + //---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { @@ -820,6 +826,20 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); + std::string const& testLoad = this->GetCTestConfiguration("TestLoad"); + if (!testLoad.empty()) + { + long load; + if (cmSystemTools::StringToLong(testLoad.c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, "Invalid value for 'Test Load' : " + << testLoad << std::endl); + } + } if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( @@ -2051,6 +2071,21 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } + if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) + { + i++; + long load; + if (cmSystemTools::StringToLong(args[i].c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, + "Invalid value for 'Test Load' : " << args[i] << std::endl); + } + } + if(this->CheckArgument(arg, "--no-compress-output")) { this->CompressTestOutput = false; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index db3ea10..e045381 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,6 +161,9 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); + long GetTestLoad() { return this->TestLoad; } + void SetTestLoad(long); + /** * Check if CTest file exists */ @@ -499,6 +502,8 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; + long TestLoad; + int CompatibilityMode; // information for the --build-and-test options diff --git a/Source/ctest.cxx b/Source/ctest.cxx index e784759..afcbd61 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -98,6 +98,7 @@ static const char * cmDocumentationOptions[][2] = {"--test-command", "The test to run with the --build-and-test option."}, {"--test-timeout", "The time limit in seconds, internal use only."}, + {"--test-load", "CPU load threshold for starting new parallel tests."}, {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, {"--ctest-config", "The configuration file used to initialize CTest state " "when submitting dashboards."}, diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index a3ce139..d0c4ed6 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -52,3 +52,35 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) endfunction() run_MergeOutput() + + +function(run_TestLoad name load) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " + add_test(TestLoad1 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") + add_test(TestLoad2 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") +") + run_cmake_command(${name} ${CMAKE_CTEST_COMMAND} -j2 --test-load ${load} --test-timeout 5) +endfunction() + +# Tests for the --test-load feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_TestLoad(test-load-fail 2) + +# Verify that warning message is displayed but tests still start when +# an invalid argument is given. +run_TestLoad(test-load-invalid 'two') + +# Verify that new tests are started when the load average falls below +# our threshold. +run_TestLoad(test-load-pass 10) + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt new file mode 100644 index 0000000..6e7d816 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt @@ -0,0 +1,2 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad2 requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt new file mode 100644 index 0000000..caab3b9 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt @@ -0,0 +1 @@ +Invalid value for 'Test Load' : 'two' diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt new file mode 100644 index 0000000..e203c10 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 4, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt new file mode 100644 index 0000000..7f2d7f6 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'CTEST_TEST_LOAD' : ERR2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt new file mode 100644 index 0000000..b54220c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt new file mode 100644 index 0000000..c221eed --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index d906290..eb7243e 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,6 +1,7 @@ include(RunCTest) set(CASE_CTEST_TEST_ARGS "") +set(CASE_CTEST_TEST_LOAD "") function(run_ctest_test CASE_NAME) set(CASE_CTEST_TEST_ARGS "${ARGN}") @@ -8,3 +9,42 @@ function(run_ctest_test CASE_NAME) endfunction() run_ctest_test(TestQuiet QUIET) + +# Tests for the 'Test Load' feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are started when the load average falls below +# our threshold. +run_ctest_test(TestLoadPass TEST_LOAD 6) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_ctest_test(TestLoadFail TEST_LOAD 2) + +# Verify that when an invalid "TEST_LOAD" value is given, a warning +# message is displayed and the value is ignored. +run_ctest_test(TestLoadInvalid TEST_LOAD "ERR1") + +# Verify that new tests are started when the load average falls below +# our threshold. +set(CASE_CTEST_TEST_LOAD 7) +run_ctest_test(CTestTestLoadPass) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +set(CASE_CTEST_TEST_LOAD 4) +run_ctest_test(CTestTestLoadFail) + +# Verify that when an invalid "CTEST_TEST_LOAD" value is given, +# a warning message is displayed and the value is ignored. +set(CASE_CTEST_TEST_LOAD "ERR2") +run_ctest_test(CTestTestLoadInvalid) + +# Verify that the "TEST_LOAD" value has higher precedence than +# the "CTEST_TEST_LOAD" value +set(CASE_CTEST_TEST_LOAD "ERR3") +run_ctest_test(TestLoadOrder TEST_LOAD "ERR4") + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-result.txt b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt new file mode 100644 index 0000000..4d7ce48 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt new file mode 100644 index 0000000..40ddb3a --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR1 diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt new file mode 100644 index 0000000..c4fd35b --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt new file mode 100644 index 0000000..1de730e --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR4 diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt new file mode 100644 index 0000000..22da092 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadOrder-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt new file mode 100644 index 0000000..e5048f4 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/test.cmake.in b/Tests/RunCMake/ctest_test/test.cmake.in index 1350abe..a8de6a3 100644 --- a/Tests/RunCMake/ctest_test/test.cmake.in +++ b/Tests/RunCMake/ctest_test/test.cmake.in @@ -8,6 +8,7 @@ set(CTEST_CMAKE_GENERATOR "@RunCMake_GENERATOR@") set(CTEST_CMAKE_GENERATOR_PLATFORM "@RunCMake_GENERATOR_PLATFORM@") set(CTEST_CMAKE_GENERATOR_TOOLSET "@RunCMake_GENERATOR_TOOLSET@") set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}") +set(CTEST_TEST_LOAD "@CASE_CTEST_TEST_LOAD@") set(ctest_test_args "@CASE_CTEST_TEST_ARGS@") ctest_start(Experimental) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e1a732f9fc89f451401fd497e1c76479b641fa55 commit e1a732f9fc89f451401fd497e1c76479b641fa55 Author: Zack Galbreath AuthorDate: Mon Jun 8 10:50:25 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 09:25:38 2015 -0400 Help: Fix typo in ctest_test documentation s/acorss/across/ diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index 8cbb9ec..af422b6 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -41,7 +41,7 @@ The options are: Specify the end of a range of test numbers. ``STRIDE `` - Specify the stride by which to step acorss a range of test numbers. + Specify the stride by which to step across a range of test numbers. ``EXCLUDE `` Specify a regular expression matching test names to exclude. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a2b7b1ec3a449e561d1dd9c65a26bd5023d4fc79 commit a2b7b1ec3a449e561d1dd9c65a26bd5023d4fc79 Author: Zack Galbreath AuthorDate: Mon Jun 1 09:42:44 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 09:25:38 2015 -0400 cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation The original implementation of the RUN_SERIAL test property worked by having such a test consume all available processors. Instead use an explicit flag to indicate that a serial test is running. This avoids artificially inflating the number of processors a test is expected to consume. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index bd090db..28aec3d 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -44,6 +44,7 @@ cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() this->RunningCount = 0; this->StopTimePassed = false; this->HasCycles = false; + this->SerialTestRunning = false; } cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() @@ -172,6 +173,11 @@ void cmCTestMultiProcessHandler::LockResources(int index) this->LockedResources.insert( this->Properties[index]->LockedResources.begin(), this->Properties[index]->LockedResources.end()); + + if (this->Properties[index]->RunSerial) + { + this->SerialTestRunning = true; + } } //--------------------------------------------------------- @@ -198,11 +204,9 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) { size_t processors = static_cast(this->Properties[test]->Processors); - //If this is set to run serially, it must run alone. - //Also, if processors setting is set higher than the -j + //If processors setting is set higher than the -j //setting, we default to using all of the process slots. - if(this->Properties[test]->RunSerial - || processors > this->ParallelLevel) + if (processors > this->ParallelLevel) { processors = this->ParallelLevel; } @@ -248,9 +252,27 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + // Don't start any new tests if one with the RUN_SERIAL property + // is already running. + if (this->SerialTestRunning) + { + return; + } + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { + // Take a nap if we're currently performing a RUN_SERIAL test. + if (this->SerialTestRunning) + { + break; + } + // We can only start a RUN_SERIAL test if no other tests are also running. + if (this->Properties[*test]->RunSerial && this->RunningCount > 0) + { + continue; + } + size_t processors = GetProcessorsUsed(*test); if(processors <= numToStart && this->StartTest(*test)) @@ -319,6 +341,11 @@ bool cmCTestMultiProcessHandler::CheckOutput() this->WriteCheckpoint(test); this->UnlockResources(test); this->RunningCount -= GetProcessorsUsed(test); + if (this->Properties[test]->RunSerial) + { + this->SerialTestRunning = false; + } + delete p; } return true; diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 6440fbc..243318f 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -121,6 +121,7 @@ protected: cmCTest* CTest; bool HasCycles; bool Quiet; + bool SerialTestRunning; }; #endif ----------------------------------------------------------------------- Summary of changes: Help/command/ctest_memcheck.rst | 1 + Help/command/ctest_test.rst | 10 +- Help/manual/cmake-variables.7.rst | 1 + Help/manual/ctest.1.rst | 14 ++ Help/release/dev/ctest-test-load-option.rst | 9 ++ Help/variable/CTEST_TEST_LOAD.rst | 7 + Modules/DartConfiguration.tcl.in | 4 + Source/CTest/cmCTestGenericHandler.cxx | 2 + Source/CTest/cmCTestGenericHandler.h | 3 + Source/CTest/cmCTestMultiProcessHandler.cxx | 150 ++++++++++++++++++-- Source/CTest/cmCTestMultiProcessHandler.h | 4 + Source/CTest/cmCTestTestCommand.cxx | 33 +++++ Source/CTest/cmCTestTestCommand.h | 1 + Source/CTest/cmCTestTestHandler.cxx | 8 ++ Source/cmCTest.cxx | 35 +++++ Source/cmCTest.h | 5 + Source/ctest.cxx | 1 + Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 32 +++++ .../CTestCommandLine/test-load-fail-stderr.txt | 1 + .../CTestCommandLine/test-load-fail-stdout.txt | 2 + .../CTestCommandLine/test-load-invalid-stderr.txt | 1 + .../CTestCommandLine/test-load-invalid-stdout.txt | 7 + .../test-load-pass-stderr.txt} | 0 .../CTestCommandLine/test-load-pass-stdout.txt | 7 + .../CTestTestLoadFail-result.txt} | 0 .../ctest_test/CTestTestLoadFail-stderr.txt | 1 + .../ctest_test/CTestTestLoadFail-stdout.txt | 2 + .../ctest_test/CTestTestLoadInvalid-stderr.txt | 1 + .../ctest_test/CTestTestLoadInvalid-stdout.txt | 7 + .../ctest_test/CTestTestLoadPass-stdout.txt | 7 + Tests/RunCMake/ctest_test/RunCMakeTest.cmake | 40 ++++++ .../TestLoadFail-result.txt} | 0 Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt | 1 + Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt | 2 + .../RunCMake/ctest_test/TestLoadInvalid-stderr.txt | 1 + .../RunCMake/ctest_test/TestLoadInvalid-stdout.txt | 7 + Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt | 1 + Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt | 7 + Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt | 7 + Tests/RunCMake/ctest_test/test.cmake.in | 1 + 40 files changed, 412 insertions(+), 11 deletions(-) create mode 100644 Help/release/dev/ctest-test-load-option.rst create mode 100644 Help/variable/CTEST_TEST_LOAD.rst create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt copy Tests/RunCMake/{ctest_start/StartQuiet-stdout.txt => CTestCommandLine/test-load-pass-stderr.txt} (100%) create mode 100644 Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt copy Tests/RunCMake/{ctest_build/BuildFailure-result.txt => ctest_test/CTestTestLoadFail-result.txt} (100%) create mode 100644 Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt create mode 100644 Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt create mode 100644 Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt create mode 100644 Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt create mode 100644 Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt copy Tests/RunCMake/{ctest_build/BuildFailure-result.txt => ctest_test/TestLoadFail-result.txt} (100%) create mode 100644 Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt create mode 100644 Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt create mode 100644 Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt create mode 100644 Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt create mode 100644 Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt create mode 100644 Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt create mode 100644 Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 10:18:25 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 10:18:25 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-636-g67033ef Message-ID: <20150623141825.22966B040D@public.kitware.com> 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 67033efd33fd5dd0dd2cd6e6dd7623b9f56dc166 (commit) via 691648d421fa202f070e1fb4409891eac58cfacd (commit) from b5bc9fe838f2012967ce6534328cd302b88dbbef (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=67033efd33fd5dd0dd2cd6e6dd7623b9f56dc166 commit 67033efd33fd5dd0dd2cd6e6dd7623b9f56dc166 Merge: b5bc9fe 691648d Author: Brad King AuthorDate: Tue Jun 23 10:18:24 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 10:18:24 2015 -0400 Merge topic 'ctest-test-load' into next 691648d4 ctest: Optionally avoid starting tests that may exceed a given CPU load http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=691648d421fa202f070e1fb4409891eac58cfacd commit 691648d421fa202f070e1fb4409891eac58cfacd Author: Betsy McPhail AuthorDate: Tue Jun 9 08:50:44 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 10:17:59 2015 -0400 ctest: Optionally avoid starting tests that may exceed a given CPU load Add a TestLoad setting to CTest that can be set via a new --test-load command-line option, CTEST_TEST_LOAD variable, or TEST_LOAD option to the ctest_test command. Teach cmCTestMultiProcessHandler to measure the CPU load and avoid starting tests that may take more than the spare load currently available. The expression + <= must be true to start a new test. Co-Author: Zack Galbreath diff --git a/Help/command/ctest_memcheck.rst b/Help/command/ctest_memcheck.rst index 2800511..29bdf7d 100644 --- a/Help/command/ctest_memcheck.rst +++ b/Help/command/ctest_memcheck.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest MemCheck Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index af422b6..162db69 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] @@ -61,6 +62,13 @@ The options are: Specify a positive number representing the number of tests to be run in parallel. +``TEST_LOAD `` + While running tests in parallel, try not to start tests when they + may cause the CPU load to pass above a given threshold. If not + specified the :variable:`CTEST_TEST_LOAD` variable will be checked, + and then the ``--test-load`` command-line argument to :manual:`ctest(1)`. + See also the ``TestLoad`` setting in the :ref:`CTest Test Step`. + ``SCHEDULE_RANDOM `` Launch tests in a random order. This may be useful for detecting implicit test dependencies. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..adbc40b 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -386,6 +386,7 @@ Variables for CTest /variable/CTEST_SVN_COMMAND /variable/CTEST_SVN_OPTIONS /variable/CTEST_SVN_UPDATE_OPTIONS + /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index c91321b..50c856a 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,6 +66,13 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. +``--test-load `` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + When ``ctest`` is run as a `Dashboard Client`_ this sets the + ``TestLoad`` option of the `CTest Test Step`_. + ``-Q,--quiet`` Make ctest quiet. @@ -776,6 +783,13 @@ Arguments to the command may specify some of the step settings. Configuration settings include: +``TestLoad`` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + * `CTest Script`_ variable: :variable:`CTEST_TEST_LOAD` + * :module:`CTest` module variable: ``CTEST_TEST_LOAD`` + ``TimeOut`` The default timeout for each test if not specified by the :prop_test:`TIMEOUT` test property. diff --git a/Help/release/dev/ctest-test-load-option.rst b/Help/release/dev/ctest-test-load-option.rst new file mode 100644 index 0000000..069f49a --- /dev/null +++ b/Help/release/dev/ctest-test-load-option.rst @@ -0,0 +1,9 @@ +ctest-test-load-option +---------------------- + +* CTest learned to optionally measure the CPU load during parallel + testing and avoid starting tests that may cause the load to exceed + a given threshold. See the :manual:`ctest(1)` command ``--test-load`` + option, the ``TestLoad`` setting of the :ref:`CTest Test Step`, + the :variable:`CTEST_TEST_LOAD` variable, and the ``TEST_LOAD`` + option of the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst new file mode 100644 index 0000000..80823fe --- /dev/null +++ b/Help/variable/CTEST_TEST_LOAD.rst @@ -0,0 +1,7 @@ +CTEST_TEST_LOAD +--------------- + +Specify the ``TestLoad`` setting in the :ref:`CTest Test Step` +of a :manual:`ctest(1)` dashboard client script. This sets the +default value for the ``TEST_LOAD`` option of the :command:`ctest_test` +command. diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 37a0a40..918b407 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -95,6 +95,10 @@ SlurmRunCommand: @SLURM_SRUN_COMMAND@ # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: @CTEST_TEST_LOAD@ + UseLaunchers: @CTEST_USE_LAUNCHERS@ CurlOptions: @CTEST_CURL_OPTIONS@ # warning, if you add new options here that have to do with submit, diff --git a/Source/CTest/cmCTestGenericHandler.cxx b/Source/CTest/cmCTestGenericHandler.cxx index 81eb0a8..ad79ba2 100644 --- a/Source/CTest/cmCTestGenericHandler.cxx +++ b/Source/CTest/cmCTestGenericHandler.cxx @@ -23,6 +23,7 @@ cmCTestGenericHandler::cmCTestGenericHandler() this->SubmitIndex = 0; this->AppendXML = false; this->Quiet = false; + this->TestLoad = 0; } //---------------------------------------------------------------------- @@ -70,6 +71,7 @@ void cmCTestGenericHandler::SetPersistentOption(const std::string& op, void cmCTestGenericHandler::Initialize() { this->AppendXML = false; + this->TestLoad = 0; this->Options.clear(); t_StringToString::iterator it; for ( it = this->PersistentOptions.begin(); diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index 8567dd7..b2264cc 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -89,6 +89,8 @@ public: void SetAppendXML(bool b) { this->AppendXML = b; } void SetQuiet(bool b) { this->Quiet = b; } bool GetQuiet() { return this->Quiet; } + void SetTestLoad(long load) { this->TestLoad = load; } + long GetTestLoad() const { return this->TestLoad; } protected: bool StartResultingXML(cmCTest::Part part, @@ -97,6 +99,7 @@ protected: bool AppendXML; bool Quiet; + long TestLoad; cmSystemTools::OutputOption HandlerVerbose; cmCTest *CTest; t_StringToString Options; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 28aec3d..ba44015 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -13,12 +13,14 @@ #include "cmProcess.h" #include "cmStandardIncludes.h" #include "cmCTest.h" +#include "cmCTestScriptHandler.h" #include "cmSystemTools.h" #include #include #include #include #include +#include class TestComparator { @@ -40,6 +42,7 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; + this->TestLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; @@ -84,6 +87,11 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTestMultiProcessHandler::SetTestLoad(long load) +{ + this->TestLoad = load < 0 ? 0 : load; +} + //--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { @@ -213,6 +221,11 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) return processors; } +std::string cmCTestMultiProcessHandler::GetName(int test) +{ + return this->Properties[test]->Name; +} + //--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { @@ -259,12 +272,26 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + bool allTestsFailedTestLoadCheck = false; + bool usedFakeLoadForTesting = false; + size_t minProcessorsRequired = this->ParallelLevel; + std::string testWithMinProcessors = ""; + + cmsys::SystemInformation info; + if (this->TestLoad > 0) + { + allTestsFailedTestLoadCheck = true; + } + + double systemLoad = 0.0; + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { // Take a nap if we're currently performing a RUN_SERIAL test. if (this->SerialTestRunning) { + allTestsFailedTestLoadCheck = true; break; } // We can only start a RUN_SERIAL test if no other tests are also running. @@ -274,20 +301,96 @@ void cmCTestMultiProcessHandler::StartNextTests() } size_t processors = GetProcessorsUsed(*test); + bool testLoadOk; + if (this->TestLoad > 0) + { + // Check for a fake load average value used in testing. + if (const char* fake_load_value = + cmSystemTools::GetEnv("__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING")) + { + usedFakeLoadForTesting = true; + systemLoad = atoi(fake_load_value); + } + // If it's not set, look up the true load average. + else + { + systemLoad = info.GetLoadAverage(); + } + + // Don't start more tests than your max load can support. + if (numToStart > (this->TestLoad - systemLoad)) + { + numToStart = this->TestLoad - systemLoad; + } - if(processors <= numToStart && this->StartTest(*test)) + testLoadOk = processors <= (this->TestLoad - systemLoad); + if (testLoadOk) + { + cmCTestLog(this->CTest, DEBUG, + "OK to run " << GetName(*test) << + ", it requires " << processors << + " procs & system load is: " << + systemLoad << std::endl); + allTestsFailedTestLoadCheck = false; + } + } + else { - if(this->StopTimePassed) - { - return; - } - numToStart -= processors; + testLoadOk = true; + } + + if (processors <= minProcessorsRequired) + { + minProcessorsRequired = processors; + testWithMinProcessors = GetName(*test); + } + + if(testLoadOk && processors <= numToStart && this->StartTest(*test)) + { + if(this->StopTimePassed) + { + return; + } + + numToStart -= processors; } else if(numToStart == 0) { return; } } + + if (allTestsFailedTestLoadCheck) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING, "); + if (this->SerialTestRunning) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "Waiting for RUN_SERIAL test to finish."); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "System Load: " << systemLoad << ", " + "Max Allowed Load: " << this->TestLoad << ", " + "Smallest test " << testWithMinProcessors << + " requires " << minProcessorsRequired); + } + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + + if (usedFakeLoadForTesting) + { + // Break out of the infinite loop of waiting for our fake load + // to come down. + this->StopTimePassed = true; + } + else + { + // Wait between 1 and 5 seconds before trying again. + cmCTestScriptHandler::SleepInSeconds( + cmSystemTools::RandomSeed() % 5 + 1); + } + } } //--------------------------------------------------------- diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 243318f..68fd7ad 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,6 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); + void SetTestLoad(long load); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -93,6 +94,7 @@ protected: bool CheckCycles(); int FindMaxIndex(); inline size_t GetProcessorsUsed(int index); + std::string GetName(int index); void LockResources(int index); void UnlockResources(int index); @@ -116,6 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once + long TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 8b357ac..4058eb0 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -26,6 +26,7 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_SCHEDULE_RANDOM] = "SCHEDULE_RANDOM"; this->Arguments[ctt_STOP_TIME] = "STOP_TIME"; + this->Arguments[ctt_TEST_LOAD] = "TEST_LOAD"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -103,6 +104,38 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { this->CTest->SetStopTime(this->Values[ctt_STOP_TIME]); } + + // Test load is determined by: TEST_LOAD argument, + // or CTEST_TEST_LOAD script variable, or ctest --test-load + // command line argument... in that order. + long testLoad; + const char* ctestTestLoad + = this->Makefile->GetDefinition("CTEST_TEST_LOAD"); + if(this->Values[ctt_TEST_LOAD] && *this->Values[ctt_TEST_LOAD]) + { + if (!cmSystemTools::StringToLong(this->Values[ctt_TEST_LOAD], &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, "Invalid value for 'TEST_LOAD' : " + << this->Values[ctt_TEST_LOAD] << std::endl); + } + } + else if(ctestTestLoad && *ctestTestLoad) + { + if (!cmSystemTools::StringToLong(ctestTestLoad, &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, + "Invalid value for 'CTEST_TEST_LOAD' : " << + ctestTestLoad << std::endl); + } + } + else + { + testLoad = this->CTest->GetTestLoad(); + } + handler->SetTestLoad(testLoad); + handler->SetQuiet(this->Quiet); return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index a1e5f36..0dfca97 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -60,6 +60,7 @@ protected: ctt_PARALLEL_LEVEL, ctt_SCHEDULE_RANDOM, ctt_STOP_TIME, + ctt_TEST_LOAD, ctt_LAST }; }; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 70b7f5c..59576f4 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1062,6 +1062,14 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, parallel->SetParallelLevel(this->CTest->GetParallelLevel()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); + if(this->TestLoad > 0) + { + parallel->SetTestLoad(this->TestLoad); + } + else + { + parallel->SetTestLoad(this->CTest->GetTestLoad()); + } *this->LogFile << "Start testing: " << this->CTest->CurrentTime() << std::endl diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e3b7a2b..86ce4c7 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,6 +294,7 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; + this->TestLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -393,6 +394,11 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTest::SetTestLoad(long load) +{ + this->TestLoad = load < 0 ? 0 : load; +} + //---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { @@ -820,6 +826,20 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); + std::string const& testLoad = this->GetCTestConfiguration("TestLoad"); + if (!testLoad.empty()) + { + long load; + if (cmSystemTools::StringToLong(testLoad.c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, "Invalid value for 'Test Load' : " + << testLoad << std::endl); + } + } if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( @@ -2051,6 +2071,21 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } + if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) + { + i++; + long load; + if (cmSystemTools::StringToLong(args[i].c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, + "Invalid value for 'Test Load' : " << args[i] << std::endl); + } + } + if(this->CheckArgument(arg, "--no-compress-output")) { this->CompressTestOutput = false; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index db3ea10..e045381 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,6 +161,9 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); + long GetTestLoad() { return this->TestLoad; } + void SetTestLoad(long); + /** * Check if CTest file exists */ @@ -499,6 +502,8 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; + long TestLoad; + int CompatibilityMode; // information for the --build-and-test options diff --git a/Source/ctest.cxx b/Source/ctest.cxx index e784759..afcbd61 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -98,6 +98,7 @@ static const char * cmDocumentationOptions[][2] = {"--test-command", "The test to run with the --build-and-test option."}, {"--test-timeout", "The time limit in seconds, internal use only."}, + {"--test-load", "CPU load threshold for starting new parallel tests."}, {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, {"--ctest-config", "The configuration file used to initialize CTest state " "when submitting dashboards."}, diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index a3ce139..d0c4ed6 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -52,3 +52,35 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) endfunction() run_MergeOutput() + + +function(run_TestLoad name load) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " + add_test(TestLoad1 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") + add_test(TestLoad2 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") +") + run_cmake_command(${name} ${CMAKE_CTEST_COMMAND} -j2 --test-load ${load} --test-timeout 5) +endfunction() + +# Tests for the --test-load feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_TestLoad(test-load-fail 2) + +# Verify that warning message is displayed but tests still start when +# an invalid argument is given. +run_TestLoad(test-load-invalid 'two') + +# Verify that new tests are started when the load average falls below +# our threshold. +run_TestLoad(test-load-pass 10) + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt new file mode 100644 index 0000000..6e7d816 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt @@ -0,0 +1,2 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad2 requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt new file mode 100644 index 0000000..caab3b9 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt @@ -0,0 +1 @@ +Invalid value for 'Test Load' : 'two' diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt new file mode 100644 index 0000000..e203c10 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 4, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt new file mode 100644 index 0000000..7f2d7f6 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'CTEST_TEST_LOAD' : ERR2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt new file mode 100644 index 0000000..b54220c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt new file mode 100644 index 0000000..c221eed --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index d906290..eb7243e 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,6 +1,7 @@ include(RunCTest) set(CASE_CTEST_TEST_ARGS "") +set(CASE_CTEST_TEST_LOAD "") function(run_ctest_test CASE_NAME) set(CASE_CTEST_TEST_ARGS "${ARGN}") @@ -8,3 +9,42 @@ function(run_ctest_test CASE_NAME) endfunction() run_ctest_test(TestQuiet QUIET) + +# Tests for the 'Test Load' feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are started when the load average falls below +# our threshold. +run_ctest_test(TestLoadPass TEST_LOAD 6) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_ctest_test(TestLoadFail TEST_LOAD 2) + +# Verify that when an invalid "TEST_LOAD" value is given, a warning +# message is displayed and the value is ignored. +run_ctest_test(TestLoadInvalid TEST_LOAD "ERR1") + +# Verify that new tests are started when the load average falls below +# our threshold. +set(CASE_CTEST_TEST_LOAD 7) +run_ctest_test(CTestTestLoadPass) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +set(CASE_CTEST_TEST_LOAD 4) +run_ctest_test(CTestTestLoadFail) + +# Verify that when an invalid "CTEST_TEST_LOAD" value is given, +# a warning message is displayed and the value is ignored. +set(CASE_CTEST_TEST_LOAD "ERR2") +run_ctest_test(CTestTestLoadInvalid) + +# Verify that the "TEST_LOAD" value has higher precedence than +# the "CTEST_TEST_LOAD" value +set(CASE_CTEST_TEST_LOAD "ERR3") +run_ctest_test(TestLoadOrder TEST_LOAD "ERR4") + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-result.txt b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt new file mode 100644 index 0000000..4d7ce48 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt new file mode 100644 index 0000000..40ddb3a --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR1 diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt new file mode 100644 index 0000000..c4fd35b --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt new file mode 100644 index 0000000..1de730e --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR4 diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt new file mode 100644 index 0000000..22da092 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadOrder-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt new file mode 100644 index 0000000..e5048f4 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/test.cmake.in b/Tests/RunCMake/ctest_test/test.cmake.in index 1350abe..a8de6a3 100644 --- a/Tests/RunCMake/ctest_test/test.cmake.in +++ b/Tests/RunCMake/ctest_test/test.cmake.in @@ -8,6 +8,7 @@ set(CTEST_CMAKE_GENERATOR "@RunCMake_GENERATOR@") set(CTEST_CMAKE_GENERATOR_PLATFORM "@RunCMake_GENERATOR_PLATFORM@") set(CTEST_CMAKE_GENERATOR_TOOLSET "@RunCMake_GENERATOR_TOOLSET@") set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}") +set(CTEST_TEST_LOAD "@CASE_CTEST_TEST_LOAD@") set(ctest_test_args "@CASE_CTEST_TEST_ARGS@") ctest_start(Experimental) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 23 11:41:15 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 23 Jun 2015 11:41:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-638-gd50bb53 Message-ID: <20150623154115.4D1232A9E@public.kitware.com> 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 d50bb530ba4db134a0674a17908bcda9ab5d1537 (commit) via c47cc24981b873ce0a22374512be67aae9c1a4d1 (commit) from 67033efd33fd5dd0dd2cd6e6dd7623b9f56dc166 (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=d50bb530ba4db134a0674a17908bcda9ab5d1537 commit d50bb530ba4db134a0674a17908bcda9ab5d1537 Merge: 67033ef c47cc24 Author: Brad King AuthorDate: Tue Jun 23 11:41:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 23 11:41:14 2015 -0400 Merge topic 'export-escaping' into next c47cc249 Export: Escape exported property values when writing CMake language files http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c47cc24981b873ce0a22374512be67aae9c1a4d1 commit c47cc24981b873ce0a22374512be67aae9c1a4d1 Author: Brad King AuthorDate: Tue Jun 23 10:54:23 2015 -0400 Commit: Brad King CommitDate: Tue Jun 23 11:19:05 2015 -0400 Export: Escape exported property values when writing CMake language files When writing export files, correctly encode property values that contain characters special to the CMake language parser. We must ensure that they parse correctly when loaded on the consuming side. Reported-by: Dan Liew diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index a51fb2a..35ea646 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -23,12 +23,25 @@ #include "cmVersion.h" #include "cmComputeLinkInformation.h" #include "cmAlgorithms.h" +#include "cmOutputConverter.h" #include #include #include //---------------------------------------------------------------------------- +static std::string cmExportFileGeneratorEscape(std::string const& str) +{ + // Escape a property value for writing into a .cmake file. + std::string result = cmOutputConverter::EscapeForCMake(str); + // Un-escape our import prefix variable reference as a special case. + cmSystemTools::ReplaceString(result, + "\\${_IMPORT_PREFIX}", + "${_IMPORT_PREFIX}"); + return result; +} + +//---------------------------------------------------------------------------- cmExportFileGenerator::cmExportFileGenerator() { this->AppendMode = false; @@ -608,7 +621,8 @@ void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget const* target, for(ImportPropertyMap::const_iterator pi = properties.begin(); pi != properties.end(); ++pi) { - os << " " << pi->first << " \"" << pi->second << "\"\n"; + os << " " << pi->first << " " + << cmExportFileGeneratorEscape(pi->second) << "\n"; } os << ")\n\n"; } @@ -1112,7 +1126,8 @@ cmExportFileGenerator for(ImportPropertyMap::const_iterator pi = properties.begin(); pi != properties.end(); ++pi) { - os << " " << pi->first << " \"" << pi->second << "\"\n"; + os << " " << pi->first << " " + << cmExportFileGeneratorEscape(pi->second) << "\n"; } os << " )\n" << "\n"; @@ -1223,7 +1238,7 @@ cmExportFileGenerator ImportPropertyMap::const_iterator pi = properties.find(*li); if (pi != properties.end()) { - os << "\"" << pi->second << "\" "; + os << cmExportFileGeneratorEscape(pi->second) << " "; } } diff --git a/Tests/ExportImport/Export/Interface/CMakeLists.txt b/Tests/ExportImport/Export/Interface/CMakeLists.txt index 00a5375..fd55c42 100644 --- a/Tests/ExportImport/Export/Interface/CMakeLists.txt +++ b/Tests/ExportImport/Export/Interface/CMakeLists.txt @@ -39,7 +39,11 @@ install(FILES DESTINATION src ) +add_library(cmakeonly INTERFACE) +set_property(TARGET cmakeonly PROPERTY INTERFACE_COMPILE_DEFINITIONS [[DEF="\"\$\B"]]) + install(TARGETS headeronly sharediface use_auto_type use_c_restrict source_target + cmakeonly EXPORT expInterface ) install(TARGETS sharedlib diff --git a/Tests/ExportImport/Import/Interface/CMakeLists.txt b/Tests/ExportImport/Import/Interface/CMakeLists.txt index 51d518e..c850508 100644 --- a/Tests/ExportImport/Import/Interface/CMakeLists.txt +++ b/Tests/ExportImport/Import/Interface/CMakeLists.txt @@ -99,3 +99,14 @@ add_executable(interfacetest_exp interfacetest.cpp) target_link_libraries(interfacetest_exp exp::sharediface) do_try_compile(exp) + +foreach(ns exp bld) + get_property(defs TARGET ${ns}::cmakeonly PROPERTY INTERFACE_COMPILE_DEFINITIONS) + if(NOT defs STREQUAL [[DEF="\"\$\B"]]) + message(SEND_ERROR + "${ns}::cmakeonly property INTERFACE_COMPILE_DEFINITIONS is:\n" + " ${defs}\n" + "not\n" + " " [[DEF="\"\$\B"]] "\n") + endif() +endforeach() ----------------------------------------------------------------------- Summary of changes: Source/cmExportFileGenerator.cxx | 21 +++++++++++++++++--- Tests/ExportImport/Export/Interface/CMakeLists.txt | 4 ++++ Tests/ExportImport/Import/Interface/CMakeLists.txt | 11 ++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Wed Jun 24 00:01:07 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Wed, 24 Jun 2015 00:01:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-264-g6b5e94b Message-ID: <20150624040107.49EFDB0295@public.kitware.com> 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, master has been updated via 6b5e94baa20685780c56158d4f41bc784c9ce49f (commit) from d0c0efb5ccc57cc01e25fc5e21a16e0c86d1ea70 (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=6b5e94baa20685780c56158d4f41bc784c9ce49f commit 6b5e94baa20685780c56158d4f41bc784c9ce49f Author: Kitware Robot AuthorDate: Wed Jun 24 00:01:06 2015 -0400 Commit: Kitware Robot CommitDate: Wed Jun 24 00:01:06 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 98e75c7..9fcdc8b 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150623) +set(CMake_VERSION_PATCH 20150624) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 24 09:10:16 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 24 Jun 2015 09:10:16 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-640-g6edc86f Message-ID: <20150624131016.9B91D2A41@public.kitware.com> 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 6edc86ff309de6a2322ec201d6f833159ad408b6 (commit) via d2cf92ec26602f47f44ce5e043ac7e1b3f96a1a5 (commit) from d50bb530ba4db134a0674a17908bcda9ab5d1537 (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=6edc86ff309de6a2322ec201d6f833159ad408b6 commit 6edc86ff309de6a2322ec201d6f833159ad408b6 Merge: d50bb53 d2cf92e Author: Brad King AuthorDate: Wed Jun 24 09:10:15 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 24 09:10:15 2015 -0400 Merge topic 'cmake-gui-osx-install-command-line' into next d2cf92ec cmake-gui: Change --install to use /usr/local/bin by default (#15627) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d2cf92ec26602f47f44ce5e043ac7e1b3f96a1a5 commit d2cf92ec26602f47f44ce5e043ac7e1b3f96a1a5 Author: Brad King AuthorDate: Wed Jun 24 08:55:29 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 08:57:50 2015 -0400 cmake-gui: Change --install to use /usr/local/bin by default (#15627) In commit v3.3.0-rc1~49^2~2 (cmake-gui: Add --install option to add command-line tools on OS X, 2015-05-19) the option default was set to /usr/bin because that is where the old command line install dialog placed the symlinks. A better default is /usr/local/bin because it is meant for locally installed software rather than Apple-installed tools. Also, as of OS X El Capitan, special privileges are required even for root to modify /usr/bin but not /usr/local/bin. diff --git a/Source/QtDialog/CMakeSetup.cxx b/Source/QtDialog/CMakeSetup.cxx index 2d336ee..8094124 100644 --- a/Source/QtDialog/CMakeSetup.cxx +++ b/Source/QtDialog/CMakeSetup.cxx @@ -84,7 +84,7 @@ int main(int argc, char** argv) #if defined(Q_OS_MAC) if (argc2 == 2 && strcmp(argv2[1], "--install") == 0) { - return cmOSXInstall("/usr/bin"); + return cmOSXInstall("/usr/local/bin"); } if (argc2 == 2 && cmHasLiteralPrefix(argv2[1], "--install=")) { diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index bc783a3..03417f3 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -425,7 +425,7 @@ void CMakeSetupDialog::doInstallForCommandLine() "\n" " PATH=\"%1\":\"$PATH\"\n" "\n" - "Or, to install symlinks to '/usr/bin', run:\n" + "Or, to install symlinks to '/usr/local/bin', run:\n" "\n" " sudo \"%2\" --install\n" "\n" ----------------------------------------------------------------------- Summary of changes: Source/QtDialog/CMakeSetup.cxx | 2 +- Source/QtDialog/CMakeSetupDialog.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 24 09:19:41 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 24 Jun 2015 09:19:41 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-642-g43bacce Message-ID: <20150624131941.2F48AAFA99@public.kitware.com> 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 43bacced9aad5ce4129290178bb3765cedeb2be3 (commit) via 80afb179e9755baca949e9c7424768a7ae40650b (commit) from 6edc86ff309de6a2322ec201d6f833159ad408b6 (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=43bacced9aad5ce4129290178bb3765cedeb2be3 commit 43bacced9aad5ce4129290178bb3765cedeb2be3 Merge: 6edc86f 80afb17 Author: Brad King AuthorDate: Wed Jun 24 09:19:40 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 24 09:19:40 2015 -0400 Merge topic 'export-escaping' into next 80afb179 fixup! Export: Escape exported property values when writing http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=80afb179e9755baca949e9c7424768a7ae40650b commit 80afb179e9755baca949e9c7424768a7ae40650b Author: Brad King AuthorDate: Wed Jun 24 09:17:45 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 09:17:45 2015 -0400 fixup! Export: Escape exported property values when writing diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index 35ea646..094ad4f 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -34,10 +34,13 @@ static std::string cmExportFileGeneratorEscape(std::string const& str) { // Escape a property value for writing into a .cmake file. std::string result = cmOutputConverter::EscapeForCMake(str); - // Un-escape our import prefix variable reference as a special case. + // Un-escape variable references generated by our own export code. cmSystemTools::ReplaceString(result, "\\${_IMPORT_PREFIX}", "${_IMPORT_PREFIX}"); + cmSystemTools::ReplaceString(result, + "\\${CMAKE_IMPORT_LIBRARY_SUFFIX}", + "${CMAKE_IMPORT_LIBRARY_SUFFIX}"); return result; } ----------------------------------------------------------------------- Summary of changes: Source/cmExportFileGenerator.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 24 09:20:15 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 24 Jun 2015 09:20:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-644-g7797c9c Message-ID: <20150624132015.4E04FAFB60@public.kitware.com> 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 7797c9c97b63e8e7ad7de9ad6f6ab995f9c1ddcf (commit) via 60eb396f104ff6c662029b16f8859288776afbe8 (commit) from 43bacced9aad5ce4129290178bb3765cedeb2be3 (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=7797c9c97b63e8e7ad7de9ad6f6ab995f9c1ddcf commit 7797c9c97b63e8e7ad7de9ad6f6ab995f9c1ddcf Merge: 43bacce 60eb396 Author: Brad King AuthorDate: Wed Jun 24 09:20:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 24 09:20:14 2015 -0400 Merge topic 'export-escaping' into next 60eb396f Export: Escape exported property values when writing CMake language files http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=60eb396f104ff6c662029b16f8859288776afbe8 commit 60eb396f104ff6c662029b16f8859288776afbe8 Author: Brad King AuthorDate: Tue Jun 23 10:54:23 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 09:19:39 2015 -0400 Export: Escape exported property values when writing CMake language files When writing export files, correctly encode property values that contain characters special to the CMake language parser. We must ensure that they parse correctly when loaded on the consuming side. Reported-by: Dan Liew diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index a51fb2a..094ad4f 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -23,12 +23,28 @@ #include "cmVersion.h" #include "cmComputeLinkInformation.h" #include "cmAlgorithms.h" +#include "cmOutputConverter.h" #include #include #include //---------------------------------------------------------------------------- +static std::string cmExportFileGeneratorEscape(std::string const& str) +{ + // Escape a property value for writing into a .cmake file. + std::string result = cmOutputConverter::EscapeForCMake(str); + // Un-escape variable references generated by our own export code. + cmSystemTools::ReplaceString(result, + "\\${_IMPORT_PREFIX}", + "${_IMPORT_PREFIX}"); + cmSystemTools::ReplaceString(result, + "\\${CMAKE_IMPORT_LIBRARY_SUFFIX}", + "${CMAKE_IMPORT_LIBRARY_SUFFIX}"); + return result; +} + +//---------------------------------------------------------------------------- cmExportFileGenerator::cmExportFileGenerator() { this->AppendMode = false; @@ -608,7 +624,8 @@ void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget const* target, for(ImportPropertyMap::const_iterator pi = properties.begin(); pi != properties.end(); ++pi) { - os << " " << pi->first << " \"" << pi->second << "\"\n"; + os << " " << pi->first << " " + << cmExportFileGeneratorEscape(pi->second) << "\n"; } os << ")\n\n"; } @@ -1112,7 +1129,8 @@ cmExportFileGenerator for(ImportPropertyMap::const_iterator pi = properties.begin(); pi != properties.end(); ++pi) { - os << " " << pi->first << " \"" << pi->second << "\"\n"; + os << " " << pi->first << " " + << cmExportFileGeneratorEscape(pi->second) << "\n"; } os << " )\n" << "\n"; @@ -1223,7 +1241,7 @@ cmExportFileGenerator ImportPropertyMap::const_iterator pi = properties.find(*li); if (pi != properties.end()) { - os << "\"" << pi->second << "\" "; + os << cmExportFileGeneratorEscape(pi->second) << " "; } } diff --git a/Tests/ExportImport/Export/Interface/CMakeLists.txt b/Tests/ExportImport/Export/Interface/CMakeLists.txt index 00a5375..fd55c42 100644 --- a/Tests/ExportImport/Export/Interface/CMakeLists.txt +++ b/Tests/ExportImport/Export/Interface/CMakeLists.txt @@ -39,7 +39,11 @@ install(FILES DESTINATION src ) +add_library(cmakeonly INTERFACE) +set_property(TARGET cmakeonly PROPERTY INTERFACE_COMPILE_DEFINITIONS [[DEF="\"\$\B"]]) + install(TARGETS headeronly sharediface use_auto_type use_c_restrict source_target + cmakeonly EXPORT expInterface ) install(TARGETS sharedlib diff --git a/Tests/ExportImport/Import/Interface/CMakeLists.txt b/Tests/ExportImport/Import/Interface/CMakeLists.txt index 51d518e..c850508 100644 --- a/Tests/ExportImport/Import/Interface/CMakeLists.txt +++ b/Tests/ExportImport/Import/Interface/CMakeLists.txt @@ -99,3 +99,14 @@ add_executable(interfacetest_exp interfacetest.cpp) target_link_libraries(interfacetest_exp exp::sharediface) do_try_compile(exp) + +foreach(ns exp bld) + get_property(defs TARGET ${ns}::cmakeonly PROPERTY INTERFACE_COMPILE_DEFINITIONS) + if(NOT defs STREQUAL [[DEF="\"\$\B"]]) + message(SEND_ERROR + "${ns}::cmakeonly property INTERFACE_COMPILE_DEFINITIONS is:\n" + " ${defs}\n" + "not\n" + " " [[DEF="\"\$\B"]] "\n") + endif() +endforeach() ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 24 11:14:17 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 24 Jun 2015 11:14:17 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-648-gb2ba8a9 Message-ID: <20150624151417.B054914C6F@public.kitware.com> 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 b2ba8a917d2d89ad5c43c855d510e9e39b7e7e0a (commit) via 62962cff865d4c8656609d59a41252ece2846c9f (commit) via 308bc4145198d6ae54c09d1be24f40aefe11804e (commit) via f095fdbba2509ad886c1713e1b286bc774726125 (commit) from 7797c9c97b63e8e7ad7de9ad6f6ab995f9c1ddcf (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=b2ba8a917d2d89ad5c43c855d510e9e39b7e7e0a commit b2ba8a917d2d89ad5c43c855d510e9e39b7e7e0a Merge: 7797c9c 62962cf Author: Brad King AuthorDate: Wed Jun 24 11:14:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 24 11:14:16 2015 -0400 Merge topic 'ctest-test-load' into next 62962cff fixup! ctest: Optionally avoid starting tests that may exceed a given CPU load 308bc414 Tests: Teach RunCMake infrastructure to optionally timeout f095fdbb cmSystemTools: Add StringToULong helper http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=62962cff865d4c8656609d59a41252ece2846c9f commit 62962cff865d4c8656609d59a41252ece2846c9f Author: Brad King AuthorDate: Wed Jun 24 10:06:48 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 10:50:44 2015 -0400 fixup! ctest: Optionally avoid starting tests that may exceed a given CPU load diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index b2264cc..4b7ae79 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -89,8 +89,8 @@ public: void SetAppendXML(bool b) { this->AppendXML = b; } void SetQuiet(bool b) { this->Quiet = b; } bool GetQuiet() { return this->Quiet; } - void SetTestLoad(long load) { this->TestLoad = load; } - long GetTestLoad() const { return this->TestLoad; } + void SetTestLoad(unsigned long load) { this->TestLoad = load; } + unsigned long GetTestLoad() const { return this->TestLoad; } protected: bool StartResultingXML(cmCTest::Part part, @@ -99,7 +99,7 @@ protected: bool AppendXML; bool Quiet; - long TestLoad; + unsigned long TestLoad; cmSystemTools::OutputOption HandlerVerbose; cmCTest *CTest; t_StringToString Options; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index ba44015..4832186 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -87,9 +88,9 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } -void cmCTestMultiProcessHandler::SetTestLoad(long load) +void cmCTestMultiProcessHandler::SetTestLoad(unsigned long load) { - this->TestLoad = load < 0 ? 0 : load; + this->TestLoad = load; } //--------------------------------------------------------- @@ -278,12 +279,39 @@ void cmCTestMultiProcessHandler::StartNextTests() std::string testWithMinProcessors = ""; cmsys::SystemInformation info; + + unsigned long systemLoad = 0; + size_t spareLoad = 0; if (this->TestLoad > 0) { + // Activate possible wait. allTestsFailedTestLoadCheck = true; - } - double systemLoad = 0.0; + // Check for a fake load average value used in testing. + if (const char* fake_load_value = + cmSystemTools::GetEnv("__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING")) + { + usedFakeLoadForTesting = true; + if (!cmSystemTools::StringToULong(fake_load_value, &systemLoad)) + { + cmSystemTools::Error("Failed to parse fake load value: ", + fake_load_value); + } + } + // If it's not set, look up the true load average. + else + { + systemLoad = static_cast(ceil(info.GetLoadAverage())); + } + spareLoad = (this->TestLoad > systemLoad ? + this->TestLoad - systemLoad : 0); + + // Don't start more tests than the spare load can support. + if (numToStart > spareLoad) + { + numToStart = spareLoad; + } + } TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) @@ -291,7 +319,6 @@ void cmCTestMultiProcessHandler::StartNextTests() // Take a nap if we're currently performing a RUN_SERIAL test. if (this->SerialTestRunning) { - allTestsFailedTestLoadCheck = true; break; } // We can only start a RUN_SERIAL test if no other tests are also running. @@ -301,30 +328,10 @@ void cmCTestMultiProcessHandler::StartNextTests() } size_t processors = GetProcessorsUsed(*test); - bool testLoadOk; + bool testLoadOk = true; if (this->TestLoad > 0) { - // Check for a fake load average value used in testing. - if (const char* fake_load_value = - cmSystemTools::GetEnv("__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING")) - { - usedFakeLoadForTesting = true; - systemLoad = atoi(fake_load_value); - } - // If it's not set, look up the true load average. - else - { - systemLoad = info.GetLoadAverage(); - } - - // Don't start more tests than your max load can support. - if (numToStart > (this->TestLoad - systemLoad)) - { - numToStart = this->TestLoad - systemLoad; - } - - testLoadOk = processors <= (this->TestLoad - systemLoad); - if (testLoadOk) + if (processors <= spareLoad) { cmCTestLog(this->CTest, DEBUG, "OK to run " << GetName(*test) << @@ -333,10 +340,10 @@ void cmCTestMultiProcessHandler::StartNextTests() systemLoad << std::endl); allTestsFailedTestLoadCheck = false; } - } - else - { - testLoadOk = true; + else + { + testLoadOk = false; + } } if (processors <= minProcessorsRequired) @@ -356,7 +363,7 @@ void cmCTestMultiProcessHandler::StartNextTests() } else if(numToStart == 0) { - return; + break; } } diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 68fd7ad..ed3e155 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,7 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); - void SetTestLoad(long load); + void SetTestLoad(unsigned long load); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -118,7 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once - long TestLoad; + unsigned long TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 4058eb0..b7d8318 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -108,12 +108,12 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() // Test load is determined by: TEST_LOAD argument, // or CTEST_TEST_LOAD script variable, or ctest --test-load // command line argument... in that order. - long testLoad; + unsigned long testLoad; const char* ctestTestLoad = this->Makefile->GetDefinition("CTEST_TEST_LOAD"); if(this->Values[ctt_TEST_LOAD] && *this->Values[ctt_TEST_LOAD]) { - if (!cmSystemTools::StringToLong(this->Values[ctt_TEST_LOAD], &testLoad)) + if (!cmSystemTools::StringToULong(this->Values[ctt_TEST_LOAD], &testLoad)) { testLoad = 0; cmCTestLog(this->CTest, WARNING, "Invalid value for 'TEST_LOAD' : " @@ -122,7 +122,7 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() } else if(ctestTestLoad && *ctestTestLoad) { - if (!cmSystemTools::StringToLong(ctestTestLoad, &testLoad)) + if (!cmSystemTools::StringToULong(ctestTestLoad, &testLoad)) { testLoad = 0; cmCTestLog(this->CTest, WARNING, diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 86ce4c7..5887ba8 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -394,9 +394,9 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } -void cmCTest::SetTestLoad(long load) +void cmCTest::SetTestLoad(unsigned long load) { - this->TestLoad = load < 0 ? 0 : load; + this->TestLoad = load; } //---------------------------------------------------------------------------- @@ -829,8 +829,8 @@ bool cmCTest::UpdateCTestConfiguration() std::string const& testLoad = this->GetCTestConfiguration("TestLoad"); if (!testLoad.empty()) { - long load; - if (cmSystemTools::StringToLong(testLoad.c_str(), &load)) + unsigned long load; + if (cmSystemTools::StringToULong(testLoad.c_str(), &load)) { this->SetTestLoad(load); } @@ -2074,8 +2074,8 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) { i++; - long load; - if (cmSystemTools::StringToLong(args[i].c_str(), &load)) + unsigned long load; + if (cmSystemTools::StringToULong(args[i].c_str(), &load)) { this->SetTestLoad(load); } diff --git a/Source/cmCTest.h b/Source/cmCTest.h index e045381..47245ae 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,8 +161,8 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); - long GetTestLoad() { return this->TestLoad; } - void SetTestLoad(long); + unsigned long GetTestLoad() { return this->TestLoad; } + void SetTestLoad(unsigned long); /** * Check if CTest file exists @@ -502,7 +502,7 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; - long TestLoad; + unsigned long TestLoad; int CompatibilityMode; diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index d0c4ed6..91f8d6e 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -1,4 +1,5 @@ include(RunCMake) +set(RunCMake_TEST_TIMEOUT 10) unset(ENV{CTEST_PARALLEL_LEVEL}) unset(ENV{CTEST_OUTPUT_ON_FAILURE}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt index 6e7d816..153da09 100644 --- a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt @@ -1,2 +1,2 @@ ^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad -\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad2 requires 1\*\*\*\*\* +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad[1-2] requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index eb7243e..667e107 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,4 +1,5 @@ include(RunCTest) +set(RunCMake_TEST_TIMEOUT 10) set(CASE_CTEST_TEST_ARGS "") set(CASE_CTEST_TEST_LOAD "") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=308bc4145198d6ae54c09d1be24f40aefe11804e commit 308bc4145198d6ae54c09d1be24f40aefe11804e Author: Brad King AuthorDate: Wed Jun 24 09:53:37 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 10:10:31 2015 -0400 Tests: Teach RunCMake infrastructure to optionally timeout Add a RunCMake_TEST_TIMEOUT option that tests can set to cause RunCMake to limit the time it waits for the child process to finish. diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index 70c0d6c..46bc494 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -66,6 +66,11 @@ function(run_cmake test) else() set(actual_stderr_var actual_stderr) endif() + if(DEFINED RunCMake_TEST_TIMEOUT) + set(maybe_timeout TIMEOUT ${RunCMake_TEST_TIMEOUT}) + else() + set(maybe_timeout "") + endif() if(RunCMake_TEST_COMMAND) execute_process( COMMAND ${RunCMake_TEST_COMMAND} @@ -73,6 +78,7 @@ function(run_cmake test) OUTPUT_VARIABLE actual_stdout ERROR_VARIABLE ${actual_stderr_var} RESULT_VARIABLE actual_result + ${maybe_timeout} ) else() execute_process( @@ -87,6 +93,7 @@ function(run_cmake test) OUTPUT_VARIABLE actual_stdout ERROR_VARIABLE ${actual_stderr_var} RESULT_VARIABLE actual_result + ${maybe_timeout} ) endif() set(msg "") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f095fdbba2509ad886c1713e1b286bc774726125 commit f095fdbba2509ad886c1713e1b286bc774726125 Author: Brad King AuthorDate: Wed Jun 24 09:41:58 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 09:42:27 2015 -0400 cmSystemTools: Add StringToULong helper Convert a string to an unsigned integer and reject any extra input. diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index e2adabe..7230a64 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -2955,3 +2955,12 @@ bool cmSystemTools::StringToLong(const char* str, long* value) *value = strtol(str, &endp, 10); return (*endp == '\0') && (endp != str) && (errno == 0); } + +//---------------------------------------------------------------------------- +bool cmSystemTools::StringToULong(const char* str, unsigned long* value) +{ + errno = 0; + char *endp; + *value = strtoul(str, &endp, 10); + return (*endp == '\0') && (endp != str) && (errno == 0); +} diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 6feb6c5..8ebb4e3 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -469,6 +469,7 @@ public: /** Convert string to long. Expected that the whole string is an integer */ static bool StringToLong(const char* str, long* value); + static bool StringToULong(const char* str, unsigned long* value); #ifdef _WIN32 struct WindowsFileRetry ----------------------------------------------------------------------- Summary of changes: Source/CTest/cmCTestGenericHandler.h | 6 +- Source/CTest/cmCTestMultiProcessHandler.cxx | 71 +++++++++++--------- Source/CTest/cmCTestMultiProcessHandler.h | 4 +- Source/CTest/cmCTestTestCommand.cxx | 6 +- Source/cmCTest.cxx | 12 ++-- Source/cmCTest.h | 6 +- Source/cmSystemTools.cxx | 9 +++ Source/cmSystemTools.h | 1 + Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 1 + .../CTestCommandLine/test-load-fail-stdout.txt | 2 +- Tests/RunCMake/RunCMake.cmake | 7 ++ Tests/RunCMake/ctest_test/RunCMakeTest.cmake | 1 + 12 files changed, 76 insertions(+), 50 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Wed Jun 24 11:16:54 2015 From: brad.king at kitware.com (Brad King) Date: Wed, 24 Jun 2015 11:16:54 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-654-g704fbe0 Message-ID: <20150624151654.E22D9ACBDA@public.kitware.com> 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 704fbe08de5af1aa788282e1e7f6933d09b49fb7 (commit) via bf2aa215bb7f85fb78ad6e32ea55a07912db85c7 (commit) via 7554c8025346ff44c43deda4b0782e718558df8c (commit) via 4d2319b68ef712516dae37a280807c86b31ca256 (commit) via 9dc1f849c6affec461f9112fca2e92e73268d533 (commit) via 93904772d7382ca46f2e73be9222c556c1ca79f2 (commit) from b2ba8a917d2d89ad5c43c855d510e9e39b7e7e0a (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=704fbe08de5af1aa788282e1e7f6933d09b49fb7 commit 704fbe08de5af1aa788282e1e7f6933d09b49fb7 Merge: b2ba8a9 bf2aa21 Author: Brad King AuthorDate: Wed Jun 24 11:16:53 2015 -0400 Commit: CMake Topic Stage CommitDate: Wed Jun 24 11:16:53 2015 -0400 Merge topic 'ctest-test-load' into next bf2aa215 ctest: Optionally avoid starting tests that may exceed a given CPU load 7554c802 cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation 4d2319b6 cmSystemTools: Add StringToULong helper 9dc1f849 Tests: Teach RunCMake infrastructure to optionally timeout 93904772 Help: Fix typo in ctest_test documentation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bf2aa215bb7f85fb78ad6e32ea55a07912db85c7 commit bf2aa215bb7f85fb78ad6e32ea55a07912db85c7 Author: Betsy McPhail AuthorDate: Tue Jun 9 08:50:44 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 11:16:09 2015 -0400 ctest: Optionally avoid starting tests that may exceed a given CPU load Add a TestLoad setting to CTest that can be set via a new --test-load command-line option, CTEST_TEST_LOAD variable, or TEST_LOAD option to the ctest_test command. Teach cmCTestMultiProcessHandler to measure the CPU load and avoid starting tests that may take more than the spare load currently available. The expression + <= must be true to start a new test. Co-Author: Zack Galbreath diff --git a/Help/command/ctest_memcheck.rst b/Help/command/ctest_memcheck.rst index 2800511..29bdf7d 100644 --- a/Help/command/ctest_memcheck.rst +++ b/Help/command/ctest_memcheck.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest MemCheck Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index af422b6..162db69 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] @@ -61,6 +62,13 @@ The options are: Specify a positive number representing the number of tests to be run in parallel. +``TEST_LOAD `` + While running tests in parallel, try not to start tests when they + may cause the CPU load to pass above a given threshold. If not + specified the :variable:`CTEST_TEST_LOAD` variable will be checked, + and then the ``--test-load`` command-line argument to :manual:`ctest(1)`. + See also the ``TestLoad`` setting in the :ref:`CTest Test Step`. + ``SCHEDULE_RANDOM `` Launch tests in a random order. This may be useful for detecting implicit test dependencies. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..adbc40b 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -386,6 +386,7 @@ Variables for CTest /variable/CTEST_SVN_COMMAND /variable/CTEST_SVN_OPTIONS /variable/CTEST_SVN_UPDATE_OPTIONS + /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index c91321b..50c856a 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,6 +66,13 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. +``--test-load `` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + When ``ctest`` is run as a `Dashboard Client`_ this sets the + ``TestLoad`` option of the `CTest Test Step`_. + ``-Q,--quiet`` Make ctest quiet. @@ -776,6 +783,13 @@ Arguments to the command may specify some of the step settings. Configuration settings include: +``TestLoad`` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + * `CTest Script`_ variable: :variable:`CTEST_TEST_LOAD` + * :module:`CTest` module variable: ``CTEST_TEST_LOAD`` + ``TimeOut`` The default timeout for each test if not specified by the :prop_test:`TIMEOUT` test property. diff --git a/Help/release/dev/ctest-test-load-option.rst b/Help/release/dev/ctest-test-load-option.rst new file mode 100644 index 0000000..069f49a --- /dev/null +++ b/Help/release/dev/ctest-test-load-option.rst @@ -0,0 +1,9 @@ +ctest-test-load-option +---------------------- + +* CTest learned to optionally measure the CPU load during parallel + testing and avoid starting tests that may cause the load to exceed + a given threshold. See the :manual:`ctest(1)` command ``--test-load`` + option, the ``TestLoad`` setting of the :ref:`CTest Test Step`, + the :variable:`CTEST_TEST_LOAD` variable, and the ``TEST_LOAD`` + option of the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst new file mode 100644 index 0000000..80823fe --- /dev/null +++ b/Help/variable/CTEST_TEST_LOAD.rst @@ -0,0 +1,7 @@ +CTEST_TEST_LOAD +--------------- + +Specify the ``TestLoad`` setting in the :ref:`CTest Test Step` +of a :manual:`ctest(1)` dashboard client script. This sets the +default value for the ``TEST_LOAD`` option of the :command:`ctest_test` +command. diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 37a0a40..918b407 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -95,6 +95,10 @@ SlurmRunCommand: @SLURM_SRUN_COMMAND@ # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: @CTEST_TEST_LOAD@ + UseLaunchers: @CTEST_USE_LAUNCHERS@ CurlOptions: @CTEST_CURL_OPTIONS@ # warning, if you add new options here that have to do with submit, diff --git a/Source/CTest/cmCTestGenericHandler.cxx b/Source/CTest/cmCTestGenericHandler.cxx index 81eb0a8..ad79ba2 100644 --- a/Source/CTest/cmCTestGenericHandler.cxx +++ b/Source/CTest/cmCTestGenericHandler.cxx @@ -23,6 +23,7 @@ cmCTestGenericHandler::cmCTestGenericHandler() this->SubmitIndex = 0; this->AppendXML = false; this->Quiet = false; + this->TestLoad = 0; } //---------------------------------------------------------------------- @@ -70,6 +71,7 @@ void cmCTestGenericHandler::SetPersistentOption(const std::string& op, void cmCTestGenericHandler::Initialize() { this->AppendXML = false; + this->TestLoad = 0; this->Options.clear(); t_StringToString::iterator it; for ( it = this->PersistentOptions.begin(); diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index 8567dd7..4b7ae79 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -89,6 +89,8 @@ public: void SetAppendXML(bool b) { this->AppendXML = b; } void SetQuiet(bool b) { this->Quiet = b; } bool GetQuiet() { return this->Quiet; } + void SetTestLoad(unsigned long load) { this->TestLoad = load; } + unsigned long GetTestLoad() const { return this->TestLoad; } protected: bool StartResultingXML(cmCTest::Part part, @@ -97,6 +99,7 @@ protected: bool AppendXML; bool Quiet; + unsigned long TestLoad; cmSystemTools::OutputOption HandlerVerbose; cmCTest *CTest; t_StringToString Options; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 28aec3d..4832186 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -13,12 +13,15 @@ #include "cmProcess.h" #include "cmStandardIncludes.h" #include "cmCTest.h" +#include "cmCTestScriptHandler.h" #include "cmSystemTools.h" #include #include #include #include +#include #include +#include class TestComparator { @@ -40,6 +43,7 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; + this->TestLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; @@ -84,6 +88,11 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTestMultiProcessHandler::SetTestLoad(unsigned long load) +{ + this->TestLoad = load; +} + //--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { @@ -213,6 +222,11 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) return processors; } +std::string cmCTestMultiProcessHandler::GetName(int test) +{ + return this->Properties[test]->Name; +} + //--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { @@ -259,6 +273,46 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + bool allTestsFailedTestLoadCheck = false; + bool usedFakeLoadForTesting = false; + size_t minProcessorsRequired = this->ParallelLevel; + std::string testWithMinProcessors = ""; + + cmsys::SystemInformation info; + + unsigned long systemLoad = 0; + size_t spareLoad = 0; + if (this->TestLoad > 0) + { + // Activate possible wait. + allTestsFailedTestLoadCheck = true; + + // Check for a fake load average value used in testing. + if (const char* fake_load_value = + cmSystemTools::GetEnv("__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING")) + { + usedFakeLoadForTesting = true; + if (!cmSystemTools::StringToULong(fake_load_value, &systemLoad)) + { + cmSystemTools::Error("Failed to parse fake load value: ", + fake_load_value); + } + } + // If it's not set, look up the true load average. + else + { + systemLoad = static_cast(ceil(info.GetLoadAverage())); + } + spareLoad = (this->TestLoad > systemLoad ? + this->TestLoad - systemLoad : 0); + + // Don't start more tests than the spare load can support. + if (numToStart > spareLoad) + { + numToStart = spareLoad; + } + } + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { @@ -274,18 +328,74 @@ void cmCTestMultiProcessHandler::StartNextTests() } size_t processors = GetProcessorsUsed(*test); + bool testLoadOk = true; + if (this->TestLoad > 0) + { + if (processors <= spareLoad) + { + cmCTestLog(this->CTest, DEBUG, + "OK to run " << GetName(*test) << + ", it requires " << processors << + " procs & system load is: " << + systemLoad << std::endl); + allTestsFailedTestLoadCheck = false; + } + else + { + testLoadOk = false; + } + } - if(processors <= numToStart && this->StartTest(*test)) + if (processors <= minProcessorsRequired) { - if(this->StopTimePassed) - { - return; - } - numToStart -= processors; + minProcessorsRequired = processors; + testWithMinProcessors = GetName(*test); + } + + if(testLoadOk && processors <= numToStart && this->StartTest(*test)) + { + if(this->StopTimePassed) + { + return; + } + + numToStart -= processors; } else if(numToStart == 0) { - return; + break; + } + } + + if (allTestsFailedTestLoadCheck) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING, "); + if (this->SerialTestRunning) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "Waiting for RUN_SERIAL test to finish."); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "System Load: " << systemLoad << ", " + "Max Allowed Load: " << this->TestLoad << ", " + "Smallest test " << testWithMinProcessors << + " requires " << minProcessorsRequired); + } + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + + if (usedFakeLoadForTesting) + { + // Break out of the infinite loop of waiting for our fake load + // to come down. + this->StopTimePassed = true; + } + else + { + // Wait between 1 and 5 seconds before trying again. + cmCTestScriptHandler::SleepInSeconds( + cmSystemTools::RandomSeed() % 5 + 1); } } } diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 243318f..ed3e155 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,6 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); + void SetTestLoad(unsigned long load); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -93,6 +94,7 @@ protected: bool CheckCycles(); int FindMaxIndex(); inline size_t GetProcessorsUsed(int index); + std::string GetName(int index); void LockResources(int index); void UnlockResources(int index); @@ -116,6 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once + unsigned long TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 8b357ac..b7d8318 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -26,6 +26,7 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_SCHEDULE_RANDOM] = "SCHEDULE_RANDOM"; this->Arguments[ctt_STOP_TIME] = "STOP_TIME"; + this->Arguments[ctt_TEST_LOAD] = "TEST_LOAD"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -103,6 +104,38 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { this->CTest->SetStopTime(this->Values[ctt_STOP_TIME]); } + + // Test load is determined by: TEST_LOAD argument, + // or CTEST_TEST_LOAD script variable, or ctest --test-load + // command line argument... in that order. + unsigned long testLoad; + const char* ctestTestLoad + = this->Makefile->GetDefinition("CTEST_TEST_LOAD"); + if(this->Values[ctt_TEST_LOAD] && *this->Values[ctt_TEST_LOAD]) + { + if (!cmSystemTools::StringToULong(this->Values[ctt_TEST_LOAD], &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, "Invalid value for 'TEST_LOAD' : " + << this->Values[ctt_TEST_LOAD] << std::endl); + } + } + else if(ctestTestLoad && *ctestTestLoad) + { + if (!cmSystemTools::StringToULong(ctestTestLoad, &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, + "Invalid value for 'CTEST_TEST_LOAD' : " << + ctestTestLoad << std::endl); + } + } + else + { + testLoad = this->CTest->GetTestLoad(); + } + handler->SetTestLoad(testLoad); + handler->SetQuiet(this->Quiet); return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index a1e5f36..0dfca97 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -60,6 +60,7 @@ protected: ctt_PARALLEL_LEVEL, ctt_SCHEDULE_RANDOM, ctt_STOP_TIME, + ctt_TEST_LOAD, ctt_LAST }; }; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 70b7f5c..59576f4 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1062,6 +1062,14 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, parallel->SetParallelLevel(this->CTest->GetParallelLevel()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); + if(this->TestLoad > 0) + { + parallel->SetTestLoad(this->TestLoad); + } + else + { + parallel->SetTestLoad(this->CTest->GetTestLoad()); + } *this->LogFile << "Start testing: " << this->CTest->CurrentTime() << std::endl diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e3b7a2b..5887ba8 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,6 +294,7 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; + this->TestLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -393,6 +394,11 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTest::SetTestLoad(unsigned long load) +{ + this->TestLoad = load; +} + //---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { @@ -820,6 +826,20 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); + std::string const& testLoad = this->GetCTestConfiguration("TestLoad"); + if (!testLoad.empty()) + { + unsigned long load; + if (cmSystemTools::StringToULong(testLoad.c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, "Invalid value for 'Test Load' : " + << testLoad << std::endl); + } + } if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( @@ -2051,6 +2071,21 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } + if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) + { + i++; + unsigned long load; + if (cmSystemTools::StringToULong(args[i].c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, + "Invalid value for 'Test Load' : " << args[i] << std::endl); + } + } + if(this->CheckArgument(arg, "--no-compress-output")) { this->CompressTestOutput = false; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index db3ea10..47245ae 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,6 +161,9 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); + unsigned long GetTestLoad() { return this->TestLoad; } + void SetTestLoad(unsigned long); + /** * Check if CTest file exists */ @@ -499,6 +502,8 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; + unsigned long TestLoad; + int CompatibilityMode; // information for the --build-and-test options diff --git a/Source/ctest.cxx b/Source/ctest.cxx index e784759..afcbd61 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -98,6 +98,7 @@ static const char * cmDocumentationOptions[][2] = {"--test-command", "The test to run with the --build-and-test option."}, {"--test-timeout", "The time limit in seconds, internal use only."}, + {"--test-load", "CPU load threshold for starting new parallel tests."}, {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, {"--ctest-config", "The configuration file used to initialize CTest state " "when submitting dashboards."}, diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index a3ce139..91f8d6e 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -1,4 +1,5 @@ include(RunCMake) +set(RunCMake_TEST_TIMEOUT 10) unset(ENV{CTEST_PARALLEL_LEVEL}) unset(ENV{CTEST_OUTPUT_ON_FAILURE}) @@ -52,3 +53,35 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) endfunction() run_MergeOutput() + + +function(run_TestLoad name load) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " + add_test(TestLoad1 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") + add_test(TestLoad2 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") +") + run_cmake_command(${name} ${CMAKE_CTEST_COMMAND} -j2 --test-load ${load} --test-timeout 5) +endfunction() + +# Tests for the --test-load feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_TestLoad(test-load-fail 2) + +# Verify that warning message is displayed but tests still start when +# an invalid argument is given. +run_TestLoad(test-load-invalid 'two') + +# Verify that new tests are started when the load average falls below +# our threshold. +run_TestLoad(test-load-pass 10) + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt new file mode 100644 index 0000000..153da09 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt @@ -0,0 +1,2 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad[1-2] requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt new file mode 100644 index 0000000..caab3b9 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt @@ -0,0 +1 @@ +Invalid value for 'Test Load' : 'two' diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt new file mode 100644 index 0000000..e203c10 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 4, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt new file mode 100644 index 0000000..7f2d7f6 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'CTEST_TEST_LOAD' : ERR2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt new file mode 100644 index 0000000..b54220c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt new file mode 100644 index 0000000..c221eed --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index d906290..667e107 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,6 +1,8 @@ include(RunCTest) +set(RunCMake_TEST_TIMEOUT 10) set(CASE_CTEST_TEST_ARGS "") +set(CASE_CTEST_TEST_LOAD "") function(run_ctest_test CASE_NAME) set(CASE_CTEST_TEST_ARGS "${ARGN}") @@ -8,3 +10,42 @@ function(run_ctest_test CASE_NAME) endfunction() run_ctest_test(TestQuiet QUIET) + +# Tests for the 'Test Load' feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are started when the load average falls below +# our threshold. +run_ctest_test(TestLoadPass TEST_LOAD 6) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_ctest_test(TestLoadFail TEST_LOAD 2) + +# Verify that when an invalid "TEST_LOAD" value is given, a warning +# message is displayed and the value is ignored. +run_ctest_test(TestLoadInvalid TEST_LOAD "ERR1") + +# Verify that new tests are started when the load average falls below +# our threshold. +set(CASE_CTEST_TEST_LOAD 7) +run_ctest_test(CTestTestLoadPass) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +set(CASE_CTEST_TEST_LOAD 4) +run_ctest_test(CTestTestLoadFail) + +# Verify that when an invalid "CTEST_TEST_LOAD" value is given, +# a warning message is displayed and the value is ignored. +set(CASE_CTEST_TEST_LOAD "ERR2") +run_ctest_test(CTestTestLoadInvalid) + +# Verify that the "TEST_LOAD" value has higher precedence than +# the "CTEST_TEST_LOAD" value +set(CASE_CTEST_TEST_LOAD "ERR3") +run_ctest_test(TestLoadOrder TEST_LOAD "ERR4") + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-result.txt b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt new file mode 100644 index 0000000..4d7ce48 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt new file mode 100644 index 0000000..40ddb3a --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR1 diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt new file mode 100644 index 0000000..c4fd35b --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt new file mode 100644 index 0000000..1de730e --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR4 diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt new file mode 100644 index 0000000..22da092 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadOrder-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt new file mode 100644 index 0000000..e5048f4 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/test.cmake.in b/Tests/RunCMake/ctest_test/test.cmake.in index 1350abe..a8de6a3 100644 --- a/Tests/RunCMake/ctest_test/test.cmake.in +++ b/Tests/RunCMake/ctest_test/test.cmake.in @@ -8,6 +8,7 @@ set(CTEST_CMAKE_GENERATOR "@RunCMake_GENERATOR@") set(CTEST_CMAKE_GENERATOR_PLATFORM "@RunCMake_GENERATOR_PLATFORM@") set(CTEST_CMAKE_GENERATOR_TOOLSET "@RunCMake_GENERATOR_TOOLSET@") set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}") +set(CTEST_TEST_LOAD "@CASE_CTEST_TEST_LOAD@") set(ctest_test_args "@CASE_CTEST_TEST_ARGS@") ctest_start(Experimental) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7554c8025346ff44c43deda4b0782e718558df8c commit 7554c8025346ff44c43deda4b0782e718558df8c Author: Zack Galbreath AuthorDate: Mon Jun 1 09:42:44 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 11:15:20 2015 -0400 cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation The original implementation of the RUN_SERIAL test property worked by having such a test consume all available processors. Instead use an explicit flag to indicate that a serial test is running. This avoids artificially inflating the number of processors a test is expected to consume. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index bd090db..28aec3d 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -44,6 +44,7 @@ cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() this->RunningCount = 0; this->StopTimePassed = false; this->HasCycles = false; + this->SerialTestRunning = false; } cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() @@ -172,6 +173,11 @@ void cmCTestMultiProcessHandler::LockResources(int index) this->LockedResources.insert( this->Properties[index]->LockedResources.begin(), this->Properties[index]->LockedResources.end()); + + if (this->Properties[index]->RunSerial) + { + this->SerialTestRunning = true; + } } //--------------------------------------------------------- @@ -198,11 +204,9 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) { size_t processors = static_cast(this->Properties[test]->Processors); - //If this is set to run serially, it must run alone. - //Also, if processors setting is set higher than the -j + //If processors setting is set higher than the -j //setting, we default to using all of the process slots. - if(this->Properties[test]->RunSerial - || processors > this->ParallelLevel) + if (processors > this->ParallelLevel) { processors = this->ParallelLevel; } @@ -248,9 +252,27 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + // Don't start any new tests if one with the RUN_SERIAL property + // is already running. + if (this->SerialTestRunning) + { + return; + } + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { + // Take a nap if we're currently performing a RUN_SERIAL test. + if (this->SerialTestRunning) + { + break; + } + // We can only start a RUN_SERIAL test if no other tests are also running. + if (this->Properties[*test]->RunSerial && this->RunningCount > 0) + { + continue; + } + size_t processors = GetProcessorsUsed(*test); if(processors <= numToStart && this->StartTest(*test)) @@ -319,6 +341,11 @@ bool cmCTestMultiProcessHandler::CheckOutput() this->WriteCheckpoint(test); this->UnlockResources(test); this->RunningCount -= GetProcessorsUsed(test); + if (this->Properties[test]->RunSerial) + { + this->SerialTestRunning = false; + } + delete p; } return true; diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 6440fbc..243318f 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -121,6 +121,7 @@ protected: cmCTest* CTest; bool HasCycles; bool Quiet; + bool SerialTestRunning; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4d2319b68ef712516dae37a280807c86b31ca256 commit 4d2319b68ef712516dae37a280807c86b31ca256 Author: Brad King AuthorDate: Wed Jun 24 09:41:58 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 11:15:20 2015 -0400 cmSystemTools: Add StringToULong helper Convert a string to an unsigned integer and reject any extra input. diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index e2adabe..7230a64 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -2955,3 +2955,12 @@ bool cmSystemTools::StringToLong(const char* str, long* value) *value = strtol(str, &endp, 10); return (*endp == '\0') && (endp != str) && (errno == 0); } + +//---------------------------------------------------------------------------- +bool cmSystemTools::StringToULong(const char* str, unsigned long* value) +{ + errno = 0; + char *endp; + *value = strtoul(str, &endp, 10); + return (*endp == '\0') && (endp != str) && (errno == 0); +} diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 6feb6c5..8ebb4e3 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -469,6 +469,7 @@ public: /** Convert string to long. Expected that the whole string is an integer */ static bool StringToLong(const char* str, long* value); + static bool StringToULong(const char* str, unsigned long* value); #ifdef _WIN32 struct WindowsFileRetry http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9dc1f849c6affec461f9112fca2e92e73268d533 commit 9dc1f849c6affec461f9112fca2e92e73268d533 Author: Brad King AuthorDate: Wed Jun 24 09:53:37 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 11:15:19 2015 -0400 Tests: Teach RunCMake infrastructure to optionally timeout Add a RunCMake_TEST_TIMEOUT option that tests can set to cause RunCMake to limit the time it waits for the child process to finish. diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index 70c0d6c..46bc494 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -66,6 +66,11 @@ function(run_cmake test) else() set(actual_stderr_var actual_stderr) endif() + if(DEFINED RunCMake_TEST_TIMEOUT) + set(maybe_timeout TIMEOUT ${RunCMake_TEST_TIMEOUT}) + else() + set(maybe_timeout "") + endif() if(RunCMake_TEST_COMMAND) execute_process( COMMAND ${RunCMake_TEST_COMMAND} @@ -73,6 +78,7 @@ function(run_cmake test) OUTPUT_VARIABLE actual_stdout ERROR_VARIABLE ${actual_stderr_var} RESULT_VARIABLE actual_result + ${maybe_timeout} ) else() execute_process( @@ -87,6 +93,7 @@ function(run_cmake test) OUTPUT_VARIABLE actual_stdout ERROR_VARIABLE ${actual_stderr_var} RESULT_VARIABLE actual_result + ${maybe_timeout} ) endif() set(msg "") http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=93904772d7382ca46f2e73be9222c556c1ca79f2 commit 93904772d7382ca46f2e73be9222c556c1ca79f2 Author: Zack Galbreath AuthorDate: Mon Jun 8 10:50:25 2015 -0400 Commit: Brad King CommitDate: Wed Jun 24 11:15:19 2015 -0400 Help: Fix typo in ctest_test documentation s/acorss/across/ diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index 8cbb9ec..af422b6 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -41,7 +41,7 @@ The options are: Specify the end of a range of test numbers. ``STRIDE `` - Specify the stride by which to step acorss a range of test numbers. + Specify the stride by which to step across a range of test numbers. ``EXCLUDE `` Specify a regular expression matching test names to exclude. ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Thu Jun 25 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Thu, 25 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-265-g6de440e Message-ID: <20150625040106.6FB19B02CF@public.kitware.com> 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, master has been updated via 6de440e201052c8b84c712f6c42cca7210e23ef3 (commit) from 6b5e94baa20685780c56158d4f41bc784c9ce49f (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=6de440e201052c8b84c712f6c42cca7210e23ef3 commit 6de440e201052c8b84c712f6c42cca7210e23ef3 Author: Kitware Robot AuthorDate: Thu Jun 25 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Thu Jun 25 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 9fcdc8b..5eefed0 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150624) +set(CMake_VERSION_PATCH 20150625) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 09:35:10 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 09:35:10 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-656-g11836f6 Message-ID: <20150625133510.C1B8DB04F9@public.kitware.com> 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 11836f68df2a2370f87b3a11a743148bd2a6949a (commit) via 30c2e1dd16e061fbabffa35816cb893d81ff0dcf (commit) from 704fbe08de5af1aa788282e1e7f6933d09b49fb7 (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=11836f68df2a2370f87b3a11a743148bd2a6949a commit 11836f68df2a2370f87b3a11a743148bd2a6949a Merge: 704fbe0 30c2e1d Author: Brad King AuthorDate: Thu Jun 25 09:35:09 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 09:35:09 2015 -0400 Merge topic 'fix-target_link_libraries-wrong-dir' into next 30c2e1dd cmTarget: Fix diagnostic of target_link_libraries in wrong directory (#15626) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=30c2e1dd16e061fbabffa35816cb893d81ff0dcf commit 30c2e1dd16e061fbabffa35816cb893d81ff0dcf Author: Brad King AuthorDate: Tue Jun 23 14:56:47 2015 -0400 Commit: Brad King CommitDate: Thu Jun 25 09:14:26 2015 -0400 cmTarget: Fix diagnostic of target_link_libraries in wrong directory (#15626) Since commit v3.3.0-rc1~62^2~5 (cmTarget: Store only cmListFileContext for CMP0023 handling, 2015-05-18) a call to target_link_libraries on a target that was defined in another (non-ancestor) directory crashes because no execution context is left active. Fix this by getting the execution context from the actual cmMakefile where the current target_link_libraries call takes place. Test this by verifying that such calls correctly produce an error diagnostic instead of crashing. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70005b4..4def889 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -1231,7 +1231,8 @@ static std::string targetNameGenex(const std::string& lib) } //---------------------------------------------------------------------------- -bool cmTarget::PushTLLCommandTrace(TLLSignature signature) +bool cmTarget::PushTLLCommandTrace(TLLSignature signature, + cmListFileContext const& lfc) { bool ret = true; if (!this->TLLCommands.empty()) @@ -1241,7 +1242,6 @@ bool cmTarget::PushTLLCommandTrace(TLLSignature signature) ret = false; } } - cmListFileContext lfc = this->Makefile->GetExecutionContext(); if (this->TLLCommands.empty() || this->TLLCommands.back().second != lfc) { this->TLLCommands.push_back(std::make_pair(signature, lfc)); diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 2150b83..3eb9e7e 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -207,7 +207,8 @@ public: KeywordTLLSignature, PlainTLLSignature }; - bool PushTLLCommandTrace(TLLSignature signature); + bool PushTLLCommandTrace(TLLSignature signature, + cmListFileContext const& lfc); void GetTllSignatureTraces(std::ostringstream &s, TLLSignature sig) const; void MergeLinkLibraries( cmMakefile& mf, const std::string& selfname, diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index df37d66..b57b921 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -368,7 +368,8 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib, || this->CurrentProcessingState == ProcessingKeywordPublicInterface || this->CurrentProcessingState == ProcessingKeywordLinkInterface) ? cmTarget::KeywordTLLSignature : cmTarget::PlainTLLSignature; - if (!this->Target->PushTLLCommandTrace(sig)) + if (!this->Target->PushTLLCommandTrace( + sig, this->Makefile->GetExecutionContext())) { std::ostringstream e; const char *modal = 0; diff --git a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake index f97022e..533c6a1 100644 --- a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake @@ -6,3 +6,4 @@ run_cmake(CMP0023-WARN-2) run_cmake(CMP0023-NEW-2) run_cmake(MixedSignature) run_cmake(Separate-PRIVATE-LINK_PRIVATE-uses) +run_cmake(SubDirTarget) diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt new file mode 100644 index 0000000..5cd1f23 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt @@ -0,0 +1,5 @@ +^CMake Error at SubDirTarget.cmake:[0-9]+ \(target_link_libraries\): + Attempt to add link library "m" to target "subexe" which is not built in + this directory. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake b/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake new file mode 100644 index 0000000..32431ce --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake @@ -0,0 +1,3 @@ +enable_language(C) +add_subdirectory(SubDirTarget) +target_link_libraries(subexe m) diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt new file mode 100644 index 0000000..b0b2380 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt @@ -0,0 +1 @@ +add_executable(subexe ../empty.c) diff --git a/Tests/RunCMake/target_link_libraries/empty.c b/Tests/RunCMake/target_link_libraries/empty.c new file mode 100644 index 0000000..e69de29 ----------------------------------------------------------------------- Summary of changes: Source/cmTarget.cxx | 4 ++-- Source/cmTarget.h | 3 ++- Source/cmTargetLinkLibrariesCommand.cxx | 3 ++- Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake | 1 + .../SubDirTarget-result.txt} | 0 Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt | 5 +++++ Tests/RunCMake/target_link_libraries/SubDirTarget.cmake | 3 +++ Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt | 1 + .../{GeneratorExpression => target_link_libraries}/empty.c | 0 9 files changed, 16 insertions(+), 4 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => target_link_libraries/SubDirTarget-result.txt} (100%) create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget.cmake create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt copy Tests/RunCMake/{GeneratorExpression => target_link_libraries}/empty.c (100%) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 09:42:26 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 09:42:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-658-g7d08538 Message-ID: <20150625134226.B27414A0D@public.kitware.com> 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 7d085383fa2ae270fb1046dc8a335f5e6f3f44ed (commit) via 81d58b0de62d3e1fdaeaf7029b0a415c32cf6b2a (commit) from 11836f68df2a2370f87b3a11a743148bd2a6949a (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=7d085383fa2ae270fb1046dc8a335f5e6f3f44ed commit 7d085383fa2ae270fb1046dc8a335f5e6f3f44ed Merge: 11836f6 81d58b0 Author: Brad King AuthorDate: Thu Jun 25 09:42:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 09:42:26 2015 -0400 Merge topic 'doc-CheckIncludeFile-distinction' into next 81d58b0d Help: Revise CheckIncludeFile* documentation http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=81d58b0de62d3e1fdaeaf7029b0a415c32cf6b2a commit 81d58b0de62d3e1fdaeaf7029b0a415c32cf6b2a Author: Brad King AuthorDate: Thu Jun 25 09:37:43 2015 -0400 Commit: Brad King CommitDate: Thu Jun 25 09:41:02 2015 -0400 Help: Revise CheckIncludeFile* documentation Improve formatting. Link from each module to the other two. Explain the command signatures in more detail. diff --git a/Modules/CheckIncludeFile.cmake b/Modules/CheckIncludeFile.cmake index 402b37c..ef1e39d 100644 --- a/Modules/CheckIncludeFile.cmake +++ b/Modules/CheckIncludeFile.cmake @@ -2,30 +2,34 @@ # CheckIncludeFile # ---------------- # -# macro which checks the include file exists. +# Provides a macro to check if a header file can be included in ``C``. # -# CHECK_INCLUDE_FILE(INCLUDE VARIABLE) +# .. command:: CHECK_INCLUDE_FILE # -# :: +# :: # -# INCLUDE - name of include file -# VARIABLE - variable to return result -# Will be created as an internal cache variable. +# CHECK_INCLUDE_FILE( []) # -# -# -# an optional third argument is the CFlags to add to the compile line or -# you can use CMAKE_REQUIRED_FLAGS +# Check if the given ```` file may be included in a ``C`` +# source file and store the result in an internal cache entry named +# ````. The optional third argument may be used to add +# compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). # # The following variables may be set before calling this macro to modify # the way the check is run: # -# :: +# ``CMAKE_REQUIRED_FLAGS`` +# string of compile command line flags +# ``CMAKE_REQUIRED_DEFINITIONS`` +# list of macros to define (-DFOO=bar) +# ``CMAKE_REQUIRED_INCLUDES`` +# list of include directories +# ``CMAKE_REQUIRED_QUIET`` +# execute quietly without messages # -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_QUIET = execute quietly without messages +# See the :module:`CheckIncludeFiles` module to check for multiple headers +# at once. See the :module:`CheckIncludeFileCXX` module to check for headers +# using the ``CXX`` language. #============================================================================= # Copyright 2002-2009 Kitware, Inc. diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake index eae1730..9a6df3b 100644 --- a/Modules/CheckIncludeFileCXX.cmake +++ b/Modules/CheckIncludeFileCXX.cmake @@ -2,34 +2,33 @@ # CheckIncludeFileCXX # ------------------- # -# Check if the include file exists. +# Provides a macro to check if a header file can be included in ``CXX``. # -# :: +# .. command:: CHECK_INCLUDE_FILE_CXX # -# CHECK_INCLUDE_FILE_CXX(INCLUDE VARIABLE) +# :: # +# CHECK_INCLUDE_FILE_CXX( []) # -# -# :: -# -# INCLUDE - name of include file -# VARIABLE - variable to return result -# Will be created as an internal cache variable. -# -# -# -# An optional third argument is the CFlags to add to the compile line or -# you can use CMAKE_REQUIRED_FLAGS. +# Check if the given ```` file may be included in a ``CXX`` +# source file and store the result in an internal cache entry named +# ````. The optional third argument may be used to add +# compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). # # The following variables may be set before calling this macro to modify # the way the check is run: # -# :: +# ``CMAKE_REQUIRED_FLAGS`` +# string of compile command line flags +# ``CMAKE_REQUIRED_DEFINITIONS`` +# list of macros to define (-DFOO=bar) +# ``CMAKE_REQUIRED_INCLUDES`` +# list of include directories +# ``CMAKE_REQUIRED_QUIET`` +# execute quietly without messages # -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_QUIET = execute quietly without messages +# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles` +# to check for one or more ``C`` headers. #============================================================================= # Copyright 2002-2009 Kitware, Inc. diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake index 2494862..843cd35 100644 --- a/Modules/CheckIncludeFiles.cmake +++ b/Modules/CheckIncludeFiles.cmake @@ -2,29 +2,34 @@ # CheckIncludeFiles # ----------------- # -# Check if the files can be included +# Provides a macro to check if a list of one or more header files can +# be included together in ``C``. # +# .. command:: CHECK_INCLUDE_FILES # +# :: # -# CHECK_INCLUDE_FILES(INCLUDE VARIABLE) -# -# :: -# -# INCLUDE - list of files to include -# VARIABLE - variable to return result -# Will be created as an internal cache variable. -# +# CHECK_INCLUDE_FILES("" ) # +# Check if the given ```` list may be included together +# in a ``C`` source file and store the result in an internal cache +# entry named ````. Specify the ```` argument +# as a :ref:`;-list ` of header file names. # # The following variables may be set before calling this macro to modify # the way the check is run: # -# :: +# ``CMAKE_REQUIRED_FLAGS`` +# string of compile command line flags +# ``CMAKE_REQUIRED_DEFINITIONS`` +# list of macros to define (-DFOO=bar) +# ``CMAKE_REQUIRED_INCLUDES`` +# list of include directories +# ``CMAKE_REQUIRED_QUIET`` +# execute quietly without messages # -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_QUIET = execute quietly without messages +# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX` +# to check for a single header file in ``C`` or ``CXX`` languages. #============================================================================= # Copyright 2003-2012 Kitware, Inc. ----------------------------------------------------------------------- Summary of changes: Modules/CheckIncludeFile.cmake | 34 +++++++++++++++++++--------------- Modules/CheckIncludeFileCXX.cmake | 37 ++++++++++++++++++------------------- Modules/CheckIncludeFiles.cmake | 33 +++++++++++++++++++-------------- 3 files changed, 56 insertions(+), 48 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:09:19 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:09:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-660-g38633cc Message-ID: <20150625140919.BF0D2C00@public.kitware.com> 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 38633cced6a8d0e72a930b36fa899c865f3c5184 (commit) via 3117b5feecf94914361e3683f1206f2d9d724c89 (commit) from 7d085383fa2ae270fb1046dc8a335f5e6f3f44ed (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=38633cced6a8d0e72a930b36fa899c865f3c5184 commit 38633cced6a8d0e72a930b36fa899c865f3c5184 Merge: 7d08538 3117b5f Author: Brad King AuthorDate: Thu Jun 25 10:09:18 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:09:18 2015 -0400 Merge topic 'doc-find-path-variables' into next 3117b5fe Help: Revise CMAKE_*_PATH and CMAKE_SYSTEM_*_PATH variable docs (#15631) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3117b5feecf94914361e3683f1206f2d9d724c89 commit 3117b5feecf94914361e3683f1206f2d9d724c89 Author: Brad King AuthorDate: Thu Jun 25 10:04:42 2015 -0400 Commit: Brad King CommitDate: Thu Jun 25 10:05:23 2015 -0400 Help: Revise CMAKE_*_PATH and CMAKE_SYSTEM_*_PATH variable docs (#15631) Improve reStructuredText formatting and cross-references. Specify explicitly that each variable may be set to a ;-list of multiple values. diff --git a/Help/variable/CMAKE_APPBUNDLE_PATH.rst b/Help/variable/CMAKE_APPBUNDLE_PATH.rst index 469b316..2bc79ac 100644 --- a/Help/variable/CMAKE_APPBUNDLE_PATH.rst +++ b/Help/variable/CMAKE_APPBUNDLE_PATH.rst @@ -1,5 +1,6 @@ CMAKE_APPBUNDLE_PATH -------------------- -Search path for OS X application bundles used by the :command:`find_program`, -and :command:`find_package` commands. +:ref:`;-list ` of directories specifying a search path +for OS X application bundles used by the :command:`find_program`, and +:command:`find_package` commands. diff --git a/Help/variable/CMAKE_FIND_ROOT_PATH.rst b/Help/variable/CMAKE_FIND_ROOT_PATH.rst index 67948f7..ccf5234 100644 --- a/Help/variable/CMAKE_FIND_ROOT_PATH.rst +++ b/Help/variable/CMAKE_FIND_ROOT_PATH.rst @@ -1,7 +1,7 @@ CMAKE_FIND_ROOT_PATH -------------------- -List of root paths to search on the filesystem. +:ref:`;-list ` of root paths to search on the filesystem. This variable is most useful when cross-compiling. CMake uses the paths in this list as alternative roots to find filesystem items with :command:`find_package`, diff --git a/Help/variable/CMAKE_FRAMEWORK_PATH.rst b/Help/variable/CMAKE_FRAMEWORK_PATH.rst index f1bc75e..5ff08e6 100644 --- a/Help/variable/CMAKE_FRAMEWORK_PATH.rst +++ b/Help/variable/CMAKE_FRAMEWORK_PATH.rst @@ -1,6 +1,7 @@ CMAKE_FRAMEWORK_PATH -------------------- -Search path for OS X frameworks used by the :command:`find_library`, +:ref:`;-list ` of directories specifying a search path +for OS X frameworks used by the :command:`find_library`, :command:`find_package`, :command:`find_path`, and :command:`find_file` commands. diff --git a/Help/variable/CMAKE_IGNORE_PATH.rst b/Help/variable/CMAKE_IGNORE_PATH.rst index a818f74..92f3770 100644 --- a/Help/variable/CMAKE_IGNORE_PATH.rst +++ b/Help/variable/CMAKE_IGNORE_PATH.rst @@ -1,17 +1,18 @@ CMAKE_IGNORE_PATH ----------------- -Path to be ignored by FIND_XXX() commands. +:ref:`;-list ` of directories to be *ignored* by +the :command:`find_program`, :command:`find_library`, :command:`find_file`, +and :command:`find_path` commands. This is useful in cross-compiling +environments where some system directories contain incompatible but +possibly linkable libraries. For example, on cross-compiled cluster +environments, this allows a user to ignore directories containing +libraries meant for the front-end machine. -Specifies directories to be ignored by searches in FIND_XXX() -commands. This is useful in cross-compiled environments where some -system directories contain incompatible but possibly linkable -libraries. For example, on cross-compiled cluster environments, this -allows a user to ignore directories containing libraries meant for the -front-end machine that modules like FindX11 (and others) would -normally search. By default this is empty; it is intended to be set -by the project. Note that CMAKE_IGNORE_PATH takes a list of directory -names, NOT a list of prefixes. If you want to ignore paths under -prefixes (bin, include, lib, etc.), you'll need to specify them -explicitly. See also CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, -CMAKE_INCLUDE_PATH, CMAKE_PROGRAM_PATH. +By default this is empty; it is intended to be set by the project. +Note that ``CMAKE_IGNORE_PATH`` takes a list of directory names, *not* +a list of prefixes. To ignore paths under prefixes (``bin``, ``include``, +``lib``, etc.), specify them explicitly. + +See also the :variable:`CMAKE_PREFIX_PATH`, :variable:`CMAKE_LIBRARY_PATH`, +:variable:`CMAKE_INCLUDE_PATH`, and :variable:`CMAKE_PROGRAM_PATH` variables. diff --git a/Help/variable/CMAKE_INCLUDE_PATH.rst b/Help/variable/CMAKE_INCLUDE_PATH.rst index 360b403..e4e7f2c 100644 --- a/Help/variable/CMAKE_INCLUDE_PATH.rst +++ b/Help/variable/CMAKE_INCLUDE_PATH.rst @@ -1,10 +1,7 @@ CMAKE_INCLUDE_PATH ------------------ -Path used for searching by FIND_FILE() and FIND_PATH(). - -Specifies a path which will be used both by FIND_FILE() and -FIND_PATH(). Both commands will check each of the contained -directories for the existence of the file which is currently searched. -By default it is empty, it is intended to be set by the project. See -also CMAKE_SYSTEM_INCLUDE_PATH, CMAKE_PREFIX_PATH. +:ref:`;-list ` of directories specifying a search path +for the :command:`find_file` and :command:`find_path` commands. By default it +is empty, it is intended to be set by the project. See also +:variable:`CMAKE_SYSTEM_INCLUDE_PATH` and :variable:`CMAKE_PREFIX_PATH`. diff --git a/Help/variable/CMAKE_LIBRARY_PATH.rst b/Help/variable/CMAKE_LIBRARY_PATH.rst index e77dd34..b1770dc 100644 --- a/Help/variable/CMAKE_LIBRARY_PATH.rst +++ b/Help/variable/CMAKE_LIBRARY_PATH.rst @@ -1,10 +1,7 @@ CMAKE_LIBRARY_PATH ------------------ -Path used for searching by FIND_LIBRARY(). - -Specifies a path which will be used by FIND_LIBRARY(). FIND_LIBRARY() -will check each of the contained directories for the existence of the -library which is currently searched. By default it is empty, it is +:ref:`;-list ` of directories specifying a search path +for the :command:`find_library` command. By default it is empty, it is intended to be set by the project. See also -CMAKE_SYSTEM_LIBRARY_PATH, CMAKE_PREFIX_PATH. +:variable:`CMAKE_SYSTEM_LIBRARY_PATH` and :variable:`CMAKE_PREFIX_PATH`. diff --git a/Help/variable/CMAKE_MODULE_PATH.rst b/Help/variable/CMAKE_MODULE_PATH.rst index a2dde45..5ea7cbb 100644 --- a/Help/variable/CMAKE_MODULE_PATH.rst +++ b/Help/variable/CMAKE_MODULE_PATH.rst @@ -1,8 +1,7 @@ CMAKE_MODULE_PATH ----------------- -List of directories to search for CMake modules. - -Commands like include() and find_package() search for files in -directories listed by this variable before checking the default -modules that come with CMake. +:ref:`;-list ` of directories specifying a search path +for CMake modules to be loaded by the the :command:`include` or +:command:`find_package` commands before checking the default modules that come +with CMake. By default it is empty, it is intended to be set by the project. diff --git a/Help/variable/CMAKE_PREFIX_PATH.rst b/Help/variable/CMAKE_PREFIX_PATH.rst index 4c21d5e..c2a4a60 100644 --- a/Help/variable/CMAKE_PREFIX_PATH.rst +++ b/Help/variable/CMAKE_PREFIX_PATH.rst @@ -1,13 +1,15 @@ CMAKE_PREFIX_PATH ----------------- -Path used for searching by FIND_XXX(), with appropriate suffixes added. +:ref:`;-list ` of directories specifying installation +*prefixes* to be searched by the :command:`find_package`, +:command:`find_program`, :command:`find_library`, :command:`find_file`, and +:command:`find_path` commands. Each command will add appropriate +subdirectories (like ``bin``, ``lib``, or ``include``) as specified in its own +documentation. -Specifies a path which will be used by the FIND_XXX() commands. It -contains the "base" directories, the FIND_XXX() commands append -appropriate subdirectories to the base directories. So FIND_PROGRAM() -adds /bin to each of the directories in the path, FIND_LIBRARY() -appends /lib to each of the directories, and FIND_PATH() and -FIND_FILE() append /include . By default it is empty, it is intended -to be set by the project. See also CMAKE_SYSTEM_PREFIX_PATH, -CMAKE_INCLUDE_PATH, CMAKE_LIBRARY_PATH, CMAKE_PROGRAM_PATH. +By default this is empty. It is intended to be set by the project. + +See also :variable:`CMAKE_SYSTEM_PREFIX_PATH`, :variable:`CMAKE_INCLUDE_PATH`, +:variable:`CMAKE_LIBRARY_PATH`, :variable:`CMAKE_PROGRAM_PATH`, and +:variable:`CMAKE_IGNORE_PATH`. diff --git a/Help/variable/CMAKE_PROGRAM_PATH.rst b/Help/variable/CMAKE_PROGRAM_PATH.rst index 02c5e02..799e119 100644 --- a/Help/variable/CMAKE_PROGRAM_PATH.rst +++ b/Help/variable/CMAKE_PROGRAM_PATH.rst @@ -1,10 +1,7 @@ CMAKE_PROGRAM_PATH ------------------ -Path used for searching by FIND_PROGRAM(). - -Specifies a path which will be used by FIND_PROGRAM(). FIND_PROGRAM() -will check each of the contained directories for the existence of the -program which is currently searched. By default it is empty, it is +:ref:`;-list ` of directories specifying a search path +for the :command:`find_program` command. By default it is empty, it is intended to be set by the project. See also -CMAKE_SYSTEM_PROGRAM_PATH, CMAKE_PREFIX_PATH. +:variable:`CMAKE_SYSTEM_PROGRAM_PATH` and :variable:`CMAKE_PREFIX_PATH`. diff --git a/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst b/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst index 9e6b195..4ad7e33 100644 --- a/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst @@ -1,15 +1,18 @@ CMAKE_SYSTEM_IGNORE_PATH ------------------------ -Path to be ignored by FIND_XXX() commands. +:ref:`;-list ` of directories to be *ignored* by +the :command:`find_program`, :command:`find_library`, :command:`find_file`, +and :command:`find_path` commands. This is useful in cross-compiling +environments where some system directories contain incompatible but +possibly linkable libraries. For example, on cross-compiled cluster +environments, this allows a user to ignore directories containing +libraries meant for the front-end machine. -Specifies directories to be ignored by searches in FIND_XXX() -commands. This is useful in cross-compiled environments where some -system directories contain incompatible but possibly linkable -libraries. For example, on cross-compiled cluster environments, this -allows a user to ignore directories containing libraries meant for the -front-end machine that modules like FindX11 (and others) would -normally search. By default this contains a list of directories -containing incompatible binaries for the host system. See also -CMAKE_SYSTEM_PREFIX_PATH, CMAKE_SYSTEM_LIBRARY_PATH, -CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH. +By default this contains a list of directories containing incompatible +binaries for the host system. See the :variable:`CMAKE_IGNORE_PATH` variable +that is intended to be set by the project. + +See also the :variable:`CMAKE_SYSTEM_PREFIX_PATH`, +:variable:`CMAKE_SYSTEM_LIBRARY_PATH`, :variable:`CMAKE_SYSTEM_INCLUDE_PATH`, +and :variable:`CMAKE_SYSTEM_PROGRAM_PATH` variables. diff --git a/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst b/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst index 1734185..2c14345 100644 --- a/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst @@ -1,11 +1,8 @@ CMAKE_SYSTEM_INCLUDE_PATH ------------------------- -Path used for searching by FIND_FILE() and FIND_PATH(). - -Specifies a path which will be used both by FIND_FILE() and -FIND_PATH(). Both commands will check each of the contained -directories for the existence of the file which is currently searched. -By default it contains the standard directories for the current -system. It is NOT intended to be modified by the project, use -CMAKE_INCLUDE_PATH for this. See also CMAKE_SYSTEM_PREFIX_PATH. +:ref:`;-list ` of directories specifying a search path +for the :command:`find_file` and :command:`find_path` commands. By default +this contains the standard directories for the current system. It is *not* +intended to be modified by the project; use :variable:`CMAKE_INCLUDE_PATH` for +this. See also :variable:`CMAKE_SYSTEM_PREFIX_PATH`. diff --git a/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst b/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst index 4778646..3969cb9 100644 --- a/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst @@ -1,11 +1,8 @@ CMAKE_SYSTEM_LIBRARY_PATH ------------------------- -Path used for searching by FIND_LIBRARY(). - -Specifies a path which will be used by FIND_LIBRARY(). FIND_LIBRARY() -will check each of the contained directories for the existence of the -library which is currently searched. By default it contains the -standard directories for the current system. It is NOT intended to be -modified by the project, use CMAKE_LIBRARY_PATH for this. See also -CMAKE_SYSTEM_PREFIX_PATH. +:ref:`;-list ` of directories specifying a search path +for the :command:`find_library` command. By default this contains the +standard directories for the current system. It is *not* intended to be +modified by the project; use :variable:`CMAKE_LIBRARY_PATH` for this. +See also :variable:`CMAKE_SYSTEM_PREFIX_PATH`. diff --git a/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst b/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst index 537eaba..e74dfad 100644 --- a/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst @@ -1,16 +1,18 @@ CMAKE_SYSTEM_PREFIX_PATH ------------------------ -Path used for searching by FIND_XXX(), with appropriate suffixes added. +:ref:`;-list ` of directories specifying installation +*prefixes* to be searched by the :command:`find_package`, +:command:`find_program`, :command:`find_library`, :command:`find_file`, and +:command:`find_path` commands. Each command will add appropriate +subdirectories (like ``bin``, ``lib``, or ``include``) as specified in its own +documentation. -Specifies a path which will be used by the FIND_XXX() commands. It -contains the "base" directories, the FIND_XXX() commands append -appropriate subdirectories to the base directories. So FIND_PROGRAM() -adds /bin to each of the directories in the path, FIND_LIBRARY() -appends /lib to each of the directories, and FIND_PATH() and -FIND_FILE() append /include . By default this contains the standard -directories for the current system, the CMAKE_INSTALL_PREFIX and -the :variable:`CMAKE_STAGING_PREFIX`. It is NOT intended to be modified by -the project, use CMAKE_PREFIX_PATH for this. See also CMAKE_SYSTEM_INCLUDE_PATH, -CMAKE_SYSTEM_LIBRARY_PATH, CMAKE_SYSTEM_PROGRAM_PATH, and -CMAKE_SYSTEM_IGNORE_PATH. +By default this contains the standard directories for the current system, the +:variable:`CMAKE_INSTALL_PREFIX`, and the :variable:`CMAKE_STAGING_PREFIX`. +It is *not* intended to be modified by the project; use +:variable:`CMAKE_PREFIX_PATH` for this. + +See also :variable:`CMAKE_SYSTEM_INCLUDE_PATH`, +:variable:`CMAKE_SYSTEM_LIBRARY_PATH`, :variable:`CMAKE_SYSTEM_PROGRAM_PATH`, +and :variable:`CMAKE_SYSTEM_IGNORE_PATH`. diff --git a/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst b/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst index e1fad63..cf1b83e 100644 --- a/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst @@ -1,11 +1,8 @@ CMAKE_SYSTEM_PROGRAM_PATH ------------------------- -Path used for searching by FIND_PROGRAM(). - -Specifies a path which will be used by FIND_PROGRAM(). FIND_PROGRAM() -will check each of the contained directories for the existence of the -program which is currently searched. By default it contains the -standard directories for the current system. It is NOT intended to be -modified by the project, use CMAKE_PROGRAM_PATH for this. See also -CMAKE_SYSTEM_PREFIX_PATH. +:ref:`;-list ` of directories specifying a search path +for the :command:`find_program` command. By default this contains the +standard directories for the current system. It is *not* intended to be +modified by the project; use :variable:`CMAKE_PROGRAM_PATH` for this. +See also :variable:`CMAKE_SYSTEM_PREFIX_PATH`. ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_APPBUNDLE_PATH.rst | 5 +++-- Help/variable/CMAKE_FIND_ROOT_PATH.rst | 2 +- Help/variable/CMAKE_FRAMEWORK_PATH.rst | 3 ++- Help/variable/CMAKE_IGNORE_PATH.rst | 27 ++++++++++++++------------- Help/variable/CMAKE_INCLUDE_PATH.rst | 11 ++++------- Help/variable/CMAKE_LIBRARY_PATH.rst | 9 +++------ Help/variable/CMAKE_MODULE_PATH.rst | 9 ++++----- Help/variable/CMAKE_PREFIX_PATH.rst | 20 +++++++++++--------- Help/variable/CMAKE_PROGRAM_PATH.rst | 9 +++------ Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst | 25 ++++++++++++++----------- Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst | 13 +++++-------- Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst | 13 +++++-------- Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst | 26 ++++++++++++++------------ Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst | 13 +++++-------- 14 files changed, 88 insertions(+), 97 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:35:27 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:35:27 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-662-ge9312e3 Message-ID: <20150625143527.27EC9B0529@public.kitware.com> 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 e9312e3d62c94747351f6d054e260db57a14e01f (commit) via 68b7a08265a098a336f59b6a03b5c1cd83c6fdd4 (commit) from 38633cced6a8d0e72a930b36fa899c865f3c5184 (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=e9312e3d62c94747351f6d054e260db57a14e01f commit e9312e3d62c94747351f6d054e260db57a14e01f Merge: 38633cc 68b7a08 Author: Brad King AuthorDate: Thu Jun 25 10:35:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:35:26 2015 -0400 Merge topic 'ctest-test-load' into next 68b7a082 fixup! ctest: Optionally avoid starting tests that may exceed a given CPU load http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=68b7a08265a098a336f59b6a03b5c1cd83c6fdd4 commit 68b7a08265a098a336f59b6a03b5c1cd83c6fdd4 Author: Brad King AuthorDate: Thu Jun 25 10:35:08 2015 -0400 Commit: Brad King CommitDate: Thu Jun 25 10:35:08 2015 -0400 fixup! ctest: Optionally avoid starting tests that may exceed a given CPU load diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index 91f8d6e..be4a958 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -1,5 +1,5 @@ include(RunCMake) -set(RunCMake_TEST_TIMEOUT 10) +set(RunCMake_TEST_TIMEOUT 30) unset(ENV{CTEST_PARALLEL_LEVEL}) unset(ENV{CTEST_OUTPUT_ON_FAILURE}) diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index 667e107..f1827c2 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,5 +1,5 @@ include(RunCTest) -set(RunCMake_TEST_TIMEOUT 10) +set(RunCMake_TEST_TIMEOUT 30) set(CASE_CTEST_TEST_ARGS "") set(CASE_CTEST_TEST_LOAD "") ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 2 +- Tests/RunCMake/ctest_test/RunCMakeTest.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:17 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:17 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-268-gf74b524 Message-ID: <20150625143917.4BEFBC66@public.kitware.com> 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, master has been updated via f74b524e41ce1afc6633bd7853bc4d49d0d8202f (commit) via 69c5f134a6d681e7e66052ad40e8e74cebf64e61 (commit) via 9579be1043a5d0156006a483f2a4724627fcbf14 (commit) from 6de440e201052c8b84c712f6c42cca7210e23ef3 (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=f74b524e41ce1afc6633bd7853bc4d49d0d8202f commit f74b524e41ce1afc6633bd7853bc4d49d0d8202f Merge: 6de440e 69c5f13 Author: Brad King AuthorDate: Thu Jun 25 10:39:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:16 2015 -0400 Merge topic 'FindIce-updates' 69c5f134 FindIce: Find all Ice executables 9579be10 FindIce: Update for Ice version 3.6.0 ----------------------------------------------------------------------- Summary of changes: Modules/FindIce.cmake | 119 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 116 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:19 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-270-g2d14021 Message-ID: <20150625143919.1C6B4261A@public.kitware.com> 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, master has been updated via 2d14021a850376be3b57145dfbfda8c57f5fffea (commit) via b24b58bb7b100794846786521f1977f048ecf5b6 (commit) from f74b524e41ce1afc6633bd7853bc4d49d0d8202f (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=2d14021a850376be3b57145dfbfda8c57f5fffea commit 2d14021a850376be3b57145dfbfda8c57f5fffea Merge: f74b524 b24b58b Author: Brad King AuthorDate: Thu Jun 25 10:39:17 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:17 2015 -0400 Merge topic 'emacs-mode-prog-mode-hooks' b24b58bb cmake-mode.el: Add support for prog-mode hooks (#15521) ----------------------------------------------------------------------- Summary of changes: Auxiliary/cmake-mode.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:21 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:21 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-272-gbd5bf76 Message-ID: <20150625143921.2545E26D4@public.kitware.com> 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, master has been updated via bd5bf762c821ca6175095cdabb46237afb6aa3fa (commit) via d2cf92ec26602f47f44ce5e043ac7e1b3f96a1a5 (commit) from 2d14021a850376be3b57145dfbfda8c57f5fffea (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=bd5bf762c821ca6175095cdabb46237afb6aa3fa commit bd5bf762c821ca6175095cdabb46237afb6aa3fa Merge: 2d14021 d2cf92e Author: Brad King AuthorDate: Thu Jun 25 10:39:19 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:19 2015 -0400 Merge topic 'cmake-gui-osx-install-command-line' d2cf92ec cmake-gui: Change --install to use /usr/local/bin by default (#15627) ----------------------------------------------------------------------- Summary of changes: Source/QtDialog/CMakeSetup.cxx | 2 +- Source/QtDialog/CMakeSetupDialog.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:23 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-274-g1051c4c Message-ID: <20150625143923.14B5E2830@public.kitware.com> 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, master has been updated via 1051c4c810a4d4f2aad7c1140af2e75c906bfbcd (commit) via 60eb396f104ff6c662029b16f8859288776afbe8 (commit) from bd5bf762c821ca6175095cdabb46237afb6aa3fa (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=1051c4c810a4d4f2aad7c1140af2e75c906bfbcd commit 1051c4c810a4d4f2aad7c1140af2e75c906bfbcd Merge: bd5bf76 60eb396 Author: Brad King AuthorDate: Thu Jun 25 10:39:21 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:21 2015 -0400 Merge topic 'export-escaping' 60eb396f Export: Escape exported property values when writing CMake language files ----------------------------------------------------------------------- Summary of changes: Source/cmExportFileGenerator.cxx | 24 +++++++++++++++++--- Tests/ExportImport/Export/Interface/CMakeLists.txt | 4 ++++ Tests/ExportImport/Import/Interface/CMakeLists.txt | 11 +++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:24 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-276-geaafe3b Message-ID: <20150625143924.CA07328AB@public.kitware.com> 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, master has been updated via eaafe3bd56c891b11df670396825df09868c9c93 (commit) via 93904772d7382ca46f2e73be9222c556c1ca79f2 (commit) from 1051c4c810a4d4f2aad7c1140af2e75c906bfbcd (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=eaafe3bd56c891b11df670396825df09868c9c93 commit eaafe3bd56c891b11df670396825df09868c9c93 Merge: 1051c4c 9390477 Author: Brad King AuthorDate: Thu Jun 25 10:39:23 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:23 2015 -0400 Merge topic 'doc-ctest_test-STRIDE-typo' 93904772 Help: Fix typo in ctest_test documentation ----------------------------------------------------------------------- Summary of changes: Help/command/ctest_test.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:26 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:26 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-278-g2a56a21 Message-ID: <20150625143926.A307C2669@public.kitware.com> 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, master has been updated via 2a56a21c838875a80bc7450fcc0955a5e60da7cf (commit) via 3117b5feecf94914361e3683f1206f2d9d724c89 (commit) from eaafe3bd56c891b11df670396825df09868c9c93 (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=2a56a21c838875a80bc7450fcc0955a5e60da7cf commit 2a56a21c838875a80bc7450fcc0955a5e60da7cf Merge: eaafe3b 3117b5f Author: Brad King AuthorDate: Thu Jun 25 10:39:25 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:25 2015 -0400 Merge topic 'doc-find-path-variables' 3117b5fe Help: Revise CMAKE_*_PATH and CMAKE_SYSTEM_*_PATH variable docs (#15631) ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_APPBUNDLE_PATH.rst | 5 +++-- Help/variable/CMAKE_FIND_ROOT_PATH.rst | 2 +- Help/variable/CMAKE_FRAMEWORK_PATH.rst | 3 ++- Help/variable/CMAKE_IGNORE_PATH.rst | 27 ++++++++++++++------------- Help/variable/CMAKE_INCLUDE_PATH.rst | 11 ++++------- Help/variable/CMAKE_LIBRARY_PATH.rst | 9 +++------ Help/variable/CMAKE_MODULE_PATH.rst | 9 ++++----- Help/variable/CMAKE_PREFIX_PATH.rst | 20 +++++++++++--------- Help/variable/CMAKE_PROGRAM_PATH.rst | 9 +++------ Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst | 25 ++++++++++++++----------- Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst | 13 +++++-------- Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst | 13 +++++-------- Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst | 26 ++++++++++++++------------ Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst | 13 +++++-------- 14 files changed, 88 insertions(+), 97 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:28 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:28 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-280-g2fd05f4 Message-ID: <20150625143928.74BFA26D4@public.kitware.com> 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, master has been updated via 2fd05f411b758e4060b537a6c9461634ad1362b2 (commit) via 81d58b0de62d3e1fdaeaf7029b0a415c32cf6b2a (commit) from 2a56a21c838875a80bc7450fcc0955a5e60da7cf (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=2fd05f411b758e4060b537a6c9461634ad1362b2 commit 2fd05f411b758e4060b537a6c9461634ad1362b2 Merge: 2a56a21 81d58b0 Author: Brad King AuthorDate: Thu Jun 25 10:39:27 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 10:39:27 2015 -0400 Merge topic 'doc-CheckIncludeFile-distinction' 81d58b0d Help: Revise CheckIncludeFile* documentation ----------------------------------------------------------------------- Summary of changes: Modules/CheckIncludeFile.cmake | 34 +++++++++++++++++++--------------- Modules/CheckIncludeFileCXX.cmake | 37 ++++++++++++++++++------------------- Modules/CheckIncludeFiles.cmake | 33 +++++++++++++++++++-------------- 3 files changed, 56 insertions(+), 48 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Thu Jun 25 10:39:54 2015 From: brad.king at kitware.com (Brad King) Date: Thu, 25 Jun 2015 10:39:54 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-672-gac81846 Message-ID: <20150625143954.1522B28AB@public.kitware.com> 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 ac81846d83a3fffc007ef6043b004bbb7a244a1f (commit) via 2fd05f411b758e4060b537a6c9461634ad1362b2 (commit) via 2a56a21c838875a80bc7450fcc0955a5e60da7cf (commit) via eaafe3bd56c891b11df670396825df09868c9c93 (commit) via 1051c4c810a4d4f2aad7c1140af2e75c906bfbcd (commit) via bd5bf762c821ca6175095cdabb46237afb6aa3fa (commit) via 2d14021a850376be3b57145dfbfda8c57f5fffea (commit) via f74b524e41ce1afc6633bd7853bc4d49d0d8202f (commit) via 6de440e201052c8b84c712f6c42cca7210e23ef3 (commit) via 6b5e94baa20685780c56158d4f41bc784c9ce49f (commit) from e9312e3d62c94747351f6d054e260db57a14e01f (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=ac81846d83a3fffc007ef6043b004bbb7a244a1f commit ac81846d83a3fffc007ef6043b004bbb7a244a1f Merge: e9312e3 2fd05f4 Author: Brad King AuthorDate: Thu Jun 25 10:39:47 2015 -0400 Commit: Brad King CommitDate: Thu Jun 25 10:39:47 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 25 14:29:28 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 25 Jun 2015 14:29:28 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-674-g1a99eb7 Message-ID: <20150625182928.AA6D1B0294@public.kitware.com> 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 1a99eb71ed71060d4152fd4deca7edffee197d61 (commit) via 3787c8703cdf5ac481b3d4aaa8dedc5d5ac9790c (commit) from ac81846d83a3fffc007ef6043b004bbb7a244a1f (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=1a99eb71ed71060d4152fd4deca7edffee197d61 commit 1a99eb71ed71060d4152fd4deca7edffee197d61 Merge: ac81846 3787c87 Author: Bill Hoffman AuthorDate: Thu Jun 25 14:29:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 14:29:26 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 3787c870 This commit introduces the ability to export all symbols in a Windows dll. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3787c8703cdf5ac481b3d4aaa8dedc5d5ac9790c commit 3787c8703cdf5ac481b3d4aaa8dedc5d5ac9790c Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 25 14:26:54 2015 -0400 This commit introduces the ability to export all symbols in a Windows dll. This creates the target property WINDOWS_EXPORT_ALL_SYMBOLS which when on will export all symbols in a dll. This is done by extracting the symbols from the object files prior to linking the dll. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 9a60a10..b767ed6 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -251,6 +251,7 @@ Properties on Targets /prop_tgt/VS_WINRT_EXTENSIONS /prop_tgt/VS_WINRT_REFERENCES /prop_tgt/WIN32_EXECUTABLE + /prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS /prop_tgt/XCODE_ATTRIBUTE_an-attribute /prop_tgt/XCTEST diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..c90016d 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -275,6 +275,7 @@ Variables that Control the Build /variable/CMAKE_USE_RELATIVE_PATHS /variable/CMAKE_VISIBILITY_INLINES_HIDDEN /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD + /variable/WINDOWS_EXPORT_ALL_SYMBOLS /variable/CMAKE_WIN32_EXECUTABLE /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute /variable/EXECUTABLE_OUTPUT_PATH diff --git a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst new file mode 100644 index 0000000..1c37fd7 --- /dev/null +++ b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -0,0 +1,15 @@ +WINDOWS_EXPORT_ALL_SYMBOLS +-------------------------- + +This property is implemented only when the compiler supports it. + +This property will automatically create a .def file with all global +symbols found in the input .obj files for a dll on Windows. The def +file will be passed to the linker causing all symbols to be exported +from the dll. For any global data __declspec(dllimport) must still be +used when compiling against the code in the dll. All other function +symbols will be automatically exported and imported by callers. + +This property is initialized by the value of +the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set +when a target is created. diff --git a/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst new file mode 100644 index 0000000..1636842 --- /dev/null +++ b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -0,0 +1,6 @@ +CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS +-------------------------------- + +Default value for :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. +This variable is used to initialize the property on each target as it is +created. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 13fe8bc..1e4ec84 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -45,9 +45,12 @@ else() set(CMAKE_CREATE_CONSOLE_EXE "/subsystem:console") set(_PLATFORM_LINK_FLAGS "") endif() - +# default support WINDOWS_EXPORT_ALL_SYMBOLS +set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1) if(CMAKE_GENERATOR MATCHES "Visual Studio 6") set (CMAKE_NO_BUILD_TYPE 1) + # WINDOWS_EXPORT_ALL_SYMBOLS not supported for VS6 IDE + set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 0) endif() if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio") set (CMAKE_NO_BUILD_TYPE 1) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 6d012fd..069f283 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -430,6 +430,7 @@ if (WIN32) set(SRCS ${SRCS} cmCallVisualStudioMacro.cxx cmCallVisualStudioMacro.h + bindexplib.cxx ) if(NOT UNIX) diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx new file mode 100644 index 0000000..407a815 --- /dev/null +++ b/Source/bindexplib.cxx @@ -0,0 +1,404 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ + +/* permission to use BSD license from Pere Mato pere.mato at cern.ch + Header of original code from http://root.cern.ch follows: */ + +/* +*---------------------------------------------------------------------- +* Program: dumpexts.exe +* Author: Gordon Chaffee +* +* History: The real functionality of this file was written by +* Matt Pietrek in 1993 in his pedump utility. I've +* modified it to dump the externals in a bunch of object +* files to create a .def file. +* +* Notes: Visual C++ puts an underscore before each exported symbol. +* This file removes them. I don't know if this is a problem +* this other compilers. If _MSC_VER is defined, +* the underscore is removed. If not, it isn't. To get a +* full dump of an object file, use the -f option. This can +* help determine the something that may be different with a +* compiler other than Visual C++. +* ====================================== +* Corrections (Axel 2006-04-04): +* Conversion to C++. Mostly. +* + * Extension (Axel 2006-03-15) + * As soon as an object file contains an /EXPORT directive (which + * is generated by the compiler when a symbol is declared as + * declspec(dllexport)) no to-be-exported symbols are printed, + * as the linker will see these directives, and if those directives + * are present we only export selectively (i.e. we trust the + * programmer). + * + * ====================================== +* ====================================== +* Corrections (Valery Fine 23/02/98): +* +* The "(vector) deleting destructor" MUST not be exported +* To recognize it the following test are introduced: +* "@@UAEPAXI at Z" scalar deleting dtor +* "@@QAEPAXI at Z" vector deleting dtor +* "AEPAXI at Z" vector deleting dtor with thunk adjustor +* ====================================== +* Corrections (Valery Fine 12/02/97): +* +* It created a wrong EXPORTS for the global pointers and constants. +* The Section Header has been involved to discover the missing information +* Now the pointers are correctly supplied supplied with "DATA" descriptor +* the constants with no extra descriptor. +* +* Corrections (Valery Fine 16/09/96): +* +* It didn't work for C++ code with global variables and class definitons +* The DumpExternalObject function has been introduced to generate .DEF file +* +* Author: Valery Fine 16/09/96 (E-mail: fine at vxcern.cern.ch) +*---------------------------------------------------------------------- +*/ + +static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; + +#include +#include +#include +#include +#include + +/* +* The names of the first group of possible symbol table storage classes +*/ +char * SzStorageClass1[] = { + "NULL","AUTOMATIC","EXTERNAL","STATIC","REGISTER","EXTERNAL_DEF","LABEL", + "UNDEFINED_LABEL","MEMBER_OF_STRUCT","ARGUMENT","STRUCT_TAG", + "MEMBER_OF_UNION","UNION_TAG","TYPE_DEFINITION","UNDEFINED_STATIC", + "ENUM_TAG","MEMBER_OF_ENUM","REGISTER_PARAM","BIT_FIELD" +}; + +/* +* The names of the second group of possible symbol table storage classes +*/ +char * SzStorageClass2[] = { + "BLOCK","FUNCTION","END_OF_STRUCT","FILE","SECTION","WEAK_EXTERNAL" +}; + +/* ++ * Utility func, strstr with size ++ */ +const char* StrNStr(const char* start, const char* find, size_t &size) { + size_t len; + const char* hint; + + if (!start || !find || !size) { + size = 0; + return 0; + } + len = strlen(find); + + while (hint = (const char*) memchr(start, find[0], size-len+1)) { + size -= (hint - start); + if (!strncmp(hint, find, len)) + return hint; + start = hint + 1; + } + + size = 0; + return 0; +} + +/* + *---------------------------------------------------------------------- + * HaveExportedObjects -- + * + * Returns >0 if export directives (declspec(dllexport)) exist. + * + *---------------------------------------------------------------------- + */ +int +HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, + PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) +{ + static int fImportFlag = 0; /* The status is nor defined yet */ + WORD i; + size_t size; + char foundExports; + const char * rawdata; + + PIMAGE_SECTION_HEADER pDirectivesSectionHeader; + + if (fImportFlag) return 1; + + i = 0; + foundExports = 0; + pDirectivesSectionHeader = 0; + for(i = 0; i < pImageFileHeader->NumberOfSections + && !pDirectivesSectionHeader; i++) + if (!strncmp((const char*)&pSectionHeaders[i].Name[0], ".drectve",8)) + pDirectivesSectionHeader = &pSectionHeaders[i]; + if (!pDirectivesSectionHeader) return 0; + + rawdata=(const char*) + pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; + if (!pDirectivesSectionHeader->PointerToRawData || !rawdata) return 0; + + size = pDirectivesSectionHeader->SizeOfRawData; + const char* posImportFlag = rawdata; + while ((posImportFlag = StrNStr(posImportFlag, " /EXPORT:", size))) { + const char* lookingForDict = posImportFlag + 9; + if (!strncmp(lookingForDict, "_G__cpp_",8) || + !strncmp(lookingForDict, "_G__set_cpp_",12)) { + posImportFlag = lookingForDict; + continue; + } + + const char* lookingForDATA = posImportFlag + 9; + while (*(++lookingForDATA) && *lookingForDATA != ' '); + lookingForDATA -= 5; + // ignore DATA exports + if (strncmp(lookingForDATA, ",DATA", 5)) break; + posImportFlag = lookingForDATA + 5; + } + fImportFlag = (int)posImportFlag; + return fImportFlag; +} + + + +/* + *---------------------------------------------------------------------- +* DumpExternalsObjects -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, + PIMAGE_SECTION_HEADER pSectionHeaders, + FILE *fout, unsigned cSymbols) +{ + unsigned i; + PSTR stringTable; + std::string symbol; + DWORD SectChar; + static int fImportFlag = -1; /* The status is nor defined yet */ + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) + { + if (pSymbolTable->SectionNumber > 0 && + ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) + { + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) + { + /* + * The name of the Function entry points + */ + if (pSymbolTable->N.Name.Short != 0) + { + symbol = ""; + symbol.insert(0, (const char *)pSymbolTable->N.ShortName, 8); + } + else + { + symbol = stringTable + pSymbolTable->N.Name.Long; + } + // clear out any leading spaces + while (isspace(symbol[0])) symbol.erase(0,1); + // if it starts with _ and has an @ then it is a __cdecl + // so remove the @ stuff for the export + if(symbol[0] == '_') + { + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) + { + symbol.erase(posAt); + } + } + if (symbol[0] == '_') symbol.erase(0,1); + if (fImportFlag) + { + fImportFlag = 0; + fprintf(fout,"EXPORTS \n"); + } + /* + Check whether it is "Scalar deleting destructor" and + "Vector deleting destructor" + */ + const char *scalarPrefix = "??_G"; + const char *vectorPrefix = "??_E"; + // original code had a check for + // symbol.find("real@") == std::string::npos) + // but if this disallows memmber functions with the name real + // if scalarPrefix and vectorPrefix are not found then print + //the symbol + if (symbol.compare(0, 4, scalarPrefix) && + symbol.compare(0, 4, vectorPrefix) ) + { + SectChar = + pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; + if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) + { + // Read only (i.e. constants) must be excluded + fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); + } + else + { + if ( pSymbolTable->Type || !(SectChar & IMAGE_SCN_MEM_READ)) + { + fprintf(fout, "\t%s\n", symbol.c_str()); + } + else + { + //printf(" strange symbol: %s \n",symbol.c_str()); + } + } + } // not vector or scalar destructor + } + } + else if (pSymbolTable->SectionNumber + == IMAGE_SYM_UNDEFINED && !pSymbolTable->Type && 0) + { + /* + * The IMPORT global variable entry points + */ + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) + { + symbol = stringTable + pSymbolTable->N.Name.Long; + while (isspace(symbol[0])) symbol.erase(0,1); + if (symbol[0] == '_') + { + symbol.erase(0,1); + } + if (!fImportFlag) + { + fImportFlag = 1; + fprintf(fout,"IMPORTS \n"); + } + fprintf(fout, "\t%s DATA \n", symbol.c_str()+1); + } + } + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* +*---------------------------------------------------------------------- +* DumpObjFile -- +* +* Dump an object file--either a full listing or just the exported +* symbols. +*---------------------------------------------------------------------- +*/ +void +DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) +{ + PIMAGE_SYMBOL PCOFFSymbolTable; + PIMAGE_SECTION_HEADER PCOFFSectionHeaders; + DWORD_PTR COFFSymbolCount; + + PCOFFSymbolTable = (PIMAGE_SYMBOL) + ((DWORD_PTR)pImageFileHeader + pImageFileHeader->PointerToSymbolTable); + COFFSymbolCount = pImageFileHeader->NumberOfSymbols; + + PCOFFSectionHeaders = (PIMAGE_SECTION_HEADER) + ((DWORD_PTR)pImageFileHeader + + IMAGE_SIZEOF_FILE_HEADER + + pImageFileHeader->SizeOfOptionalHeader); + + + int haveExports = HaveExportedObjects(pImageFileHeader, + PCOFFSectionHeaders, fout); + if (!haveExports) + { + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, + fout, COFFSymbolCount); + } +} + +/* +*---------------------------------------------------------------------- +* DumpFile -- +* +* Open up a file, memory map it, and call the appropriate +* dumping routine +*---------------------------------------------------------------------- +*/ +void +DumpFile(const char* filename, FILE *fout) +{ + HANDLE hFile; + HANDLE hFileMapping; + LPVOID lpFileBase; + PIMAGE_DOS_HEADER dosHeader; + + hFile = CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + + if (hFile == INVALID_HANDLE_VALUE) + { + fprintf(stderr, "Couldn't open file [%s] with CreateFile()\n", filename); + return; + } + + hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); + if (hFileMapping == 0) { + CloseHandle(hFile); + fprintf(stderr, "Couldn't open file mapping with CreateFileMapping()\n"); + return; + } + + lpFileBase = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0); + if (lpFileBase == 0) { + CloseHandle(hFileMapping); + CloseHandle(hFile); + fprintf(stderr, "Couldn't map view of file with MapViewOfFile()\n"); + return; + } + + dosHeader = (PIMAGE_DOS_HEADER)lpFileBase; + if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) + { + fprintf(stderr, "File is an executable. I don't dump those.\n"); + return; + } + /* Does it look like a i386 COFF OBJ file??? */ + else if ( + ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) + || (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) + && (dosHeader->e_sp == 0) + ) { + /* + * The two tests above aren't what they look like. They're + * really checking for IMAGE_FILE_HEADER.Machine == i386 (0x14C) + * and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0; + */ + DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout); + } else { + printf("unrecognized file format\n"); + } + UnmapViewOfFile(lpFileBase); + CloseHandle(hFileMapping); + CloseHandle(hFile); +} diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 585d19a..61cec6c 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -887,3 +887,64 @@ std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir( } return tmp; } + +void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( + cmGeneratorTarget* gt, std::vector& commands, + std::string const& configName) +{ + std::vector outputs; + std::string deffile = "$(IntDir)/exportall.def"; + outputs.push_back(deffile); + std::vector empty; + std::vector objectSources; + gt->GetObjectSources(objectSources, configName); + std::map mapping; + for(std::vector::const_iterator it + = objectSources.begin(); it != objectSources.end(); ++it) + { + mapping[*it]; + } + gt->LocalGenerator-> + ComputeObjectFilenames(mapping, gt); + std::string obj_dir = gt->ObjectDirectory; + std::string cmakeCommand = cmSystemTools::GetCMakeCommand(); + cmSystemTools::ConvertToWindowsExtendedPath(cmakeCommand); + cmCustomCommandLine cmdl; + cmdl.push_back(cmakeCommand); + cmdl.push_back("-E"); + cmdl.push_back("__create_def"); + cmdl.push_back(deffile); + std::string objs_file = gt->Target->GetName(); + objs_file += ".dir/" + configName; + cmSystemTools::MakeDirectory(objs_file.c_str()); + objs_file += "/exportall.def.objs"; + cmdl.push_back(objs_file); + std::ofstream fout(objs_file.c_str()); + if(!fout) + { + cmSystemTools::Error("could not open ", objs_file.c_str()); + return; + } + for(std::vector::const_iterator it + = objectSources.begin(); it != objectSources.end(); ++it) + { + // Find the object file name corresponding to this source file. + std::map::const_iterator + map_it = mapping.find(*it); + // It must exist because we populated the mapping just above. + assert(!map_it->second.empty()); + std::string objFile = obj_dir + map_it->second; + // replace $(ConfigurationName) in the object names + cmSystemTools::ReplaceString(objFile, this->GetCMakeCFGIntDir(), + configName.c_str()); + fout << objFile << "\n"; + } + cmCustomCommandLines commandLines; + commandLines.push_back(cmdl); + cmCustomCommand command(gt->Target->GetMakefile(), + outputs, empty, empty, + commandLines, + "Auto build dll exports", + "."); + commands.push_back(command); +} diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 69b4564..022e190 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -102,6 +102,10 @@ public: const std::string& config) const; void ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const; + + void AddSymbolExportCommand( + cmGeneratorTarget*, std::vector& commands, + std::string const& configName); protected: virtual void Generate(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index dc3a16d..020ef50 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1081,6 +1081,16 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL); linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str()); } + if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + &&target.GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); + } + } switch(target.GetType()) { case cmTarget::UNKNOWN_LIBRARY: @@ -2015,7 +2025,30 @@ void cmLocalVisualStudio7Generator // Add pre-link event. tool = this->FortranProject? "VFPreLinkEventTool":"VCPreLinkEventTool"; event.Start(tool); - event.Write(target.GetPreLinkCommands()); + bool addedPrelink = false; + if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && target.GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + addedPrelink = true; + std::vector commands = + target.GetPreLinkCommands(); + cmGlobalVisualStudioGenerator* gg + = static_cast(this->GlobalGenerator); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); + gg->AddSymbolExportCommand( + gt, commands, configName); + event.Write(commands); + } + } + if(!addedPrelink) + { + event.Write(target.GetPreLinkCommands()); + } cmsys::auto_ptr pcc( this->MaybeCreateImplibDir(target, configName, this->FortranProject)); if(pcc.get()) diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 660027c..0511356 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -563,6 +563,58 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules useResponseFileForObjects, buildObjs, depends, useWatcomQuote); + // check for windows_auto_dll_export property here + // create .def file from list of objects + if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && this->Target->GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string name_of_def_file = + this->Target->GetSupportDirectory(); + name_of_def_file += std::string("/") + + this->Target->GetName(); + name_of_def_file += ".def"; + std::string cmd = cmSystemTools::GetCMakeCommand(); + cmd = this->Convert(cmd, cmLocalGenerator::NONE, + cmLocalGenerator::SHELL); + cmd += " -E __create_def "; + cmd += this->Convert(name_of_def_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + cmd += " "; + std::string objlist_file = name_of_def_file; + objlist_file += ".objs"; + cmd += this->Convert(objlist_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + real_link_commands.push_back(cmd); + // create a list of obj files for the -E __create_def to read + std::ofstream fout(objlist_file.c_str()); + for(std::vector::const_iterator i = this->Objects.begin(); + i != this->Objects.end(); ++i) + { + fout << *i << "\n"; + } + for(std::vector::const_iterator i = + this->ExternalObjects.begin(); + i != this->ExternalObjects.end(); ++i) + { + fout << *i << "\n"; + } + // now add the def file link flag + linkFlags += " "; + linkFlags += + this->Makefile->GetSafeDefinition("CMAKE_LINK_DEF_FILE_FLAG"); + linkFlags += this->Convert(name_of_def_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + linkFlags += " "; + } + } + cmLocalGenerator::RuleVariables vars; vars.TargetPDB = targetOutPathPDB.c_str(); diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 2fe53bf..a181f66 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -437,7 +437,6 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() this->OSXBundleGenerator->CreateCFBundle(this->TargetNameOut, target.GetDirectory(cfgName)); } - // Write comments. cmGlobalNinjaGenerator::WriteDivider(this->GetBuildFileStream()); const cmTarget::TargetType targetType = target.GetType(); @@ -486,6 +485,24 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() linkPath, &genTarget, useWatcomQuote); + if(this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && target.GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string dllname = targetOutput; + std::string name_of_def_file + = target.GetSupportDirectory(); + name_of_def_file += "/" + target.GetName(); + name_of_def_file += ".def "; + vars["LINK_FLAGS"] += " /DEF:"; + vars["LINK_FLAGS"] += this->GetLocalGenerator() + ->ConvertToOutputFormat(name_of_def_file.c_str(), + cmLocalGenerator::SHELL); + } + } this->addPoolNinjaVariable("JOB_POOL_LINK", &target, vars); @@ -599,7 +616,44 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() std::back_inserter(byproducts), MapToNinjaPath()); } } - + // check for windows_auto_dll_export property here + // create .def file from list of objects + if(this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && target.GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string cmakeCommand = + this->GetLocalGenerator()->ConvertToOutputFormat( + cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); + std::string dllname = targetOutput; + std::string name_of_def_file + = target.GetSupportDirectory(); + name_of_def_file += "/" + target.GetName(); + name_of_def_file += ".def"; + std::string cmd = cmakeCommand; + cmd += " -E __create_def "; + cmd += this->GetLocalGenerator() + ->ConvertToOutputFormat(name_of_def_file.c_str(), + cmLocalGenerator::SHELL); + cmd += " "; + cmNinjaDeps objs = this->GetObjects(); + std::string obj_list_file = name_of_def_file; + obj_list_file += ".objs"; + cmd += this->GetLocalGenerator() + ->ConvertToOutputFormat(obj_list_file.c_str(), + cmLocalGenerator::SHELL); + preLinkCmdLines.push_back(cmd); + // create a list of obj files for the -E __create_def to read + std::ofstream fout(obj_list_file.c_str()); + for(cmNinjaDeps::iterator i=objs.begin(); i != objs.end(); ++i) + { + fout << *i << "\n"; + } + } + } // If we have any PRE_LINK commands, we need to go back to HOME_OUTPUT for // the link commands. if (!preLinkCmdLines.empty()) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index c7a13bc..8448431 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -429,6 +429,11 @@ void cmTarget::SetMakefile(cmMakefile* mf) { this->SetProperty("POSITION_INDEPENDENT_CODE", "True"); } + if(this->TargetTypeValue == cmTarget::SHARED_LIBRARY) + { + this->SetPropertyDefault("WINDOWS_EXPORT_ALL_SYMBOLS", 0); + } + if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY) { this->SetPropertyDefault("POSITION_INDEPENDENT_CODE", 0); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 12a1e42..d84b7d0 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2465,7 +2465,16 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries", "%(IgnoreSpecificDefaultLibraries)"); } - + if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && this->Target->GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); + } + } this->LinkOptions[config] = pOptions.release(); return true; } @@ -2613,8 +2622,27 @@ void cmVisualStudio10TargetGenerator::WriteItemDefinitionGroups() void cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName) { - this->WriteEvent("PreLinkEvent", - this->Target->GetPreLinkCommands(), configName); + bool addedPrelink = false; + if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && this->Target->GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + addedPrelink = true; + std::vector commands = + this->Target->GetPreLinkCommands(); + this->GlobalGenerator->AddSymbolExportCommand( + this->GeneratorTarget, commands, configName); + this->WriteEvent("PreLinkEvent", commands, configName); + } + } + if(!addedPrelink) + { + this->WriteEvent("PreLinkEvent", + this->Target->GetPreLinkCommands(), configName); + } this->WriteEvent("PreBuildEvent", this->Target->GetPreBuildCommands(), configName); this->WriteEvent("PostBuildEvent", diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 3ea2186..bdf3f41 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -210,7 +210,42 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) } return 0; } - +#ifdef _WIN32 + else if(args[1] == "__create_def") + { + // defined in binexplib.cxx + void + DumpFile(const char* filename, FILE *fout); + if(args.size() < 4) + { + std::cerr << + "__create_def Usage: -E __create_def outfile.def objlistfile\n"; + return 1; + } + FILE* fout = fopen(args[2].c_str(), "w+"); + if(!fout) + { + std::cerr << "could not open output .def file: " << args[2].c_str() + << "\n"; + return 1; + } + cmsys::ifstream fin(args[3].c_str(), + std::ios::in | std::ios::binary); + if(!fin) + { + std::cerr << "could not open object list file: " << args[3].c_str() + << "\n"; + return 1; + } + std::string objfile; + while(cmSystemTools::GetLineFromStream(fin, objfile)) + { + // needed fort for bzip2 c code with WINAPI calls + DumpFile(objfile.c_str(), fout); + } + return 0; + } +#endif // run include what you use command and then run the compile // command. This is an internal undocumented option and should // only be used by CMake itself when running iwyu. diff --git a/Tests/RunCMake/AutoExportDll/AutoExport.cmake b/Tests/RunCMake/AutoExportDll/AutoExport.cmake new file mode 100644 index 0000000..c426f66 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/AutoExport.cmake @@ -0,0 +1,5 @@ +project(autoexport) +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) +add_library(autoexport SHARED hello.cxx world.cxx foo.c) +add_executable(say say.cxx) +target_link_libraries(say autoexport) diff --git a/Tests/RunCMake/AutoExportDll/CMakeLists.txt b/Tests/RunCMake/AutoExportDll/CMakeLists.txt new file mode 100644 index 0000000..18dfd26 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.2) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake new file mode 100644 index 0000000..ee89023 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -0,0 +1,26 @@ +include(RunCMake) +set(RunCMake_TEST_NO_CLEAN TRUE) +set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/AutoExport-build") +# start by cleaning up because we don't clean up along the way +file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") +# configure the AutoExport test +run_cmake(AutoExport) +unset(RunCMake_TEST_OPTIONS) +# don't run this test on VS 6 as it is not supported +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 6") + return() +endif() +# we build debug so the say.exe will be found in Debug/say.exe for +# Visual Studio generators +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio") + set(INTDIR "Debug/") +endif() +# build AutoExport +run_cmake_command(AutoExportBuild ${CMAKE_COMMAND} --build + ${RunCMake_TEST_BINARY_DIR} --config Debug) +# run the executable that uses symbols from the dll +if(WIN32) + set(EXE_EXT ".exe") +endif() +run_cmake_command(AutoExportRun + ${RunCMake_BINARY_DIR}/AutoExport-build/${INTDIR}say${EXE_EXT}) diff --git a/Tests/RunCMake/AutoExportDll/foo.c b/Tests/RunCMake/AutoExportDll/foo.c new file mode 100644 index 0000000..4b1318b --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/foo.c @@ -0,0 +1,15 @@ +#ifdef _MSC_VER +#include "windows.h" +#else +#define WINAPI +#endif + +int WINAPI foo() +{ + return 10; +} + +int bar() +{ + return 5; +} diff --git a/Tests/RunCMake/AutoExportDll/hello.cxx b/Tests/RunCMake/AutoExportDll/hello.cxx new file mode 100644 index 0000000..807a811 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/hello.cxx @@ -0,0 +1,13 @@ +#include +#include "hello.h" +int Hello::Data = 0; +void Hello::real() +{ + return; +} +void hello() +{ + std::cout << "hello"; +} +void Hello::operator delete[](void* ptr) {}; +void Hello::operator delete(void* ptr) {}; diff --git a/Tests/RunCMake/AutoExportDll/hello.h b/Tests/RunCMake/AutoExportDll/hello.h new file mode 100644 index 0000000..a151bd1 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/hello.h @@ -0,0 +1,18 @@ +#ifndef _MSC_VER +#define winexport +#else +#ifdef autoexport_EXPORTS +#define winexport +#else +#define winexport __declspec(dllimport) +#endif +#endif + +class Hello +{ +public: + static winexport int Data; + void real(); + static void operator delete[](void* ptr); + static void operator delete(void* ptr); +}; diff --git a/Tests/RunCMake/AutoExportDll/say.cxx b/Tests/RunCMake/AutoExportDll/say.cxx new file mode 100644 index 0000000..015c3a8 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/say.cxx @@ -0,0 +1,35 @@ +#include +#include "hello.h" +#ifdef _MSC_VER +#include "windows.h" +#else +#define WINAPI +#endif + +extern "C" +{ +// test __cdecl stuff + int WINAPI foo(); +// test regular C + int bar(); +} + +// test c++ functions +// forward declare hello and world +void hello(); +void world(); + +int main() +{ + // test static data (needs declspec to work) + Hello::Data = 120; + Hello h; + h.real(); + hello(); + std::cout << " "; + world(); + std::cout << "\n" << foo() << "\n"; + std::cout << "\n" << bar() << "\n"; + std::cout << "\n"; + return 0; +} diff --git a/Tests/RunCMake/AutoExportDll/world.cxx b/Tests/RunCMake/AutoExportDll/world.cxx new file mode 100644 index 0000000..8107949 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/world.cxx @@ -0,0 +1,6 @@ +#include + +void world() +{ + std::cout << "world"; +} diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index bc706d3..743ef4b 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -266,3 +266,6 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") endif() add_RunCMake_test_group(CPack "DEB;RPM") +# add a test to make sure symbols are exported from a shared library +# for MSVC compilers CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS property is used +add_RunCMake_test(AutoExportDll) ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-properties.7.rst | 1 + Help/manual/cmake-variables.7.rst | 1 + Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst | 15 + Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst | 6 + Modules/Platform/Windows-MSVC.cmake | 5 +- Source/CMakeLists.txt | 1 + Source/bindexplib.cxx | 404 ++++++++++++++++++++ Source/cmGlobalVisualStudioGenerator.cxx | 61 +++ Source/cmGlobalVisualStudioGenerator.h | 4 + Source/cmLocalVisualStudio7Generator.cxx | 35 +- Source/cmMakefileLibraryTargetGenerator.cxx | 52 +++ Source/cmNinjaNormalTargetGenerator.cxx | 58 ++- Source/cmTarget.cxx | 5 + Source/cmVisualStudio10TargetGenerator.cxx | 34 +- Source/cmcmd.cxx | 37 +- Tests/RunCMake/AutoExportDll/AutoExport.cmake | 5 + .../{CMP0057 => AutoExportDll}/CMakeLists.txt | 0 Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake | 26 ++ Tests/RunCMake/AutoExportDll/foo.c | 15 + Tests/RunCMake/AutoExportDll/hello.cxx | 13 + Tests/RunCMake/AutoExportDll/hello.h | 18 + Tests/RunCMake/AutoExportDll/say.cxx | 35 ++ Tests/RunCMake/AutoExportDll/world.cxx | 6 + Tests/RunCMake/CMakeLists.txt | 3 + 24 files changed, 832 insertions(+), 8 deletions(-) create mode 100644 Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst create mode 100644 Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst create mode 100644 Source/bindexplib.cxx create mode 100644 Tests/RunCMake/AutoExportDll/AutoExport.cmake copy Tests/RunCMake/{CMP0057 => AutoExportDll}/CMakeLists.txt (100%) create mode 100644 Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/AutoExportDll/foo.c create mode 100644 Tests/RunCMake/AutoExportDll/hello.cxx create mode 100644 Tests/RunCMake/AutoExportDll/hello.h create mode 100644 Tests/RunCMake/AutoExportDll/say.cxx create mode 100644 Tests/RunCMake/AutoExportDll/world.cxx hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 25 15:11:19 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 25 Jun 2015 15:11:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-676-g24f93e9 Message-ID: <20150625191119.2106F2A79@public.kitware.com> 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 24f93e99d832b9194a158b2f5605a55580b12c52 (commit) via b7728743f9c78ef15a0dcc30b9f22e44d0c65fb9 (commit) from 1a99eb71ed71060d4152fd4deca7edffee197d61 (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=24f93e99d832b9194a158b2f5605a55580b12c52 commit 24f93e99d832b9194a158b2f5605a55580b12c52 Merge: 1a99eb7 b772874 Author: Bill Hoffman AuthorDate: Thu Jun 25 15:11:18 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 15:11:18 2015 -0400 Merge topic 'auto_export_dll_symbols' into next b7728743 Use the correct name for the variable CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b7728743f9c78ef15a0dcc30b9f22e44d0c65fb9 commit b7728743f9c78ef15a0dcc30b9f22e44d0c65fb9 Author: Bill Hoffman AuthorDate: Thu Jun 25 15:10:23 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 25 15:10:23 2015 -0400 Use the correct name for the variable CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index c90016d..7c7db5e 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -275,7 +275,7 @@ Variables that Control the Build /variable/CMAKE_USE_RELATIVE_PATHS /variable/CMAKE_VISIBILITY_INLINES_HIDDEN /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD - /variable/WINDOWS_EXPORT_ALL_SYMBOLS + /variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS /variable/CMAKE_WIN32_EXECUTABLE /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute /variable/EXECUTABLE_OUTPUT_PATH ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-variables.7.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 25 17:02:58 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 25 Jun 2015 17:02:58 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-678-g203c556 Message-ID: <20150625210258.4035EB03AC@public.kitware.com> 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 203c5567d04f1c925588e54b7c0c1c002219dcaa (commit) via c8a7fa16f5036b192ba98c646e08b88d97b7382c (commit) from 24f93e99d832b9194a158b2f5605a55580b12c52 (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=203c5567d04f1c925588e54b7c0c1c002219dcaa commit 203c5567d04f1c925588e54b7c0c1c002219dcaa Merge: 24f93e9 c8a7fa1 Author: Bill Hoffman AuthorDate: Thu Jun 25 17:02:57 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 17:02:57 2015 -0400 Merge topic 'auto_export_dll_symbols' into next c8a7fa16 use Debug directory to find exe on Xcode http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c8a7fa16f5036b192ba98c646e08b88d97b7382c commit c8a7fa16f5036b192ba98c646e08b88d97b7382c Author: Bill Hoffman AuthorDate: Thu Jun 25 17:01:44 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 25 17:01:44 2015 -0400 use Debug directory to find exe on Xcode diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake index ee89023..09cd42a 100644 --- a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -12,7 +12,7 @@ if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 6") endif() # we build debug so the say.exe will be found in Debug/say.exe for # Visual Studio generators -if("${RunCMake_GENERATOR}" MATCHES "Visual Studio") +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio|Xcode") set(INTDIR "Debug/") endif() # build AutoExport ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Thu Jun 25 19:24:03 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Thu, 25 Jun 2015 19:24:03 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-681-gb704a70 Message-ID: <20150625232404.149F8AFA9A@public.kitware.com> 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 b704a70345c60887b39b438cadd29c9d2f08abfd (commit) via e8351d01690f1f06e22827673d700120a94e388e (commit) via 4e2ba4659441c6724c26c5b59a054b623c47d7f2 (commit) from 203c5567d04f1c925588e54b7c0c1c002219dcaa (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=b704a70345c60887b39b438cadd29c9d2f08abfd commit b704a70345c60887b39b438cadd29c9d2f08abfd Merge: 203c556 e8351d0 Author: Bill Hoffman AuthorDate: Thu Jun 25 19:23:55 2015 -0400 Commit: CMake Topic Stage CommitDate: Thu Jun 25 19:23:55 2015 -0400 Merge topic 'auto_export_dll_symbols' into next e8351d01 remove warning on borland 4e2ba465 clean up a bit http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e8351d01690f1f06e22827673d700120a94e388e commit e8351d01690f1f06e22827673d700120a94e388e Author: Bill Hoffman AuthorDate: Thu Jun 25 18:08:34 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 25 18:08:34 2015 -0400 remove warning on borland diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 407a815..e94282a 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -186,7 +186,7 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, void DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, - FILE *fout, unsigned cSymbols) + FILE *fout, DWORD_PTR cSymbols) { unsigned i; PSTR stringTable; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4e2ba4659441c6724c26c5b59a054b623c47d7f2 commit 4e2ba4659441c6724c26c5b59a054b623c47d7f2 Author: Bill Hoffman AuthorDate: Thu Jun 25 18:04:23 2015 -0400 Commit: Bill Hoffman CommitDate: Thu Jun 25 18:04:23 2015 -0400 clean up a bit diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index bdf3f41..6b9923a 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -34,6 +34,10 @@ #include #include // required for atoi +#ifdef _WIN32 +// defined in binexplib.cxx +void DumpFile(const char* filename, FILE *fout); +#endif void CMakeCommandUsage(const char* program) { @@ -213,9 +217,6 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) #ifdef _WIN32 else if(args[1] == "__create_def") { - // defined in binexplib.cxx - void - DumpFile(const char* filename, FILE *fout); if(args.size() < 4) { std::cerr << @@ -240,7 +241,6 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) std::string objfile; while(cmSystemTools::GetLineFromStream(fin, objfile)) { - // needed fort for bzip2 c code with WINAPI calls DumpFile(objfile.c_str(), fout); } return 0; ----------------------------------------------------------------------- Summary of changes: Source/bindexplib.cxx | 2 +- Source/cmcmd.cxx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Fri Jun 26 00:01:07 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Fri, 26 Jun 2015 00:01:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-281-g086b19a Message-ID: <20150626040107.4283FB04C4@public.kitware.com> 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, master has been updated via 086b19aeda24bab60f7e4cd17feb2e3a070878a9 (commit) from 2fd05f411b758e4060b537a6c9461634ad1362b2 (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=086b19aeda24bab60f7e4cd17feb2e3a070878a9 commit 086b19aeda24bab60f7e4cd17feb2e3a070878a9 Author: Kitware Robot AuthorDate: Fri Jun 26 00:01:05 2015 -0400 Commit: Kitware Robot CommitDate: Fri Jun 26 00:01:05 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 5eefed0..951ba1c 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150625) +set(CMake_VERSION_PATCH 20150626) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:36:08 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:36:08 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-683-gf57487c Message-ID: <20150626123609.04568B073D@public.kitware.com> 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 f57487c0de4735d1fa995d28a4262cd093046564 (commit) via 8306108fd6ed58833d5d33cf6425665457dcd902 (commit) from b704a70345c60887b39b438cadd29c9d2f08abfd (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=f57487c0de4735d1fa995d28a4262cd093046564 commit f57487c0de4735d1fa995d28a4262cd093046564 Merge: b704a70 8306108 Author: Brad King AuthorDate: Fri Jun 26 08:36:07 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 08:36:07 2015 -0400 Merge topic 'compiler-id-simplify-ide-src' into next 8306108f CMakeDetermineCompilerId: Simplify src reference in IDE projects http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8306108fd6ed58833d5d33cf6425665457dcd902 commit 8306108fd6ed58833d5d33cf6425665457dcd902 Author: Brad King AuthorDate: Thu Jun 25 15:15:17 2015 -0400 Commit: Brad King CommitDate: Thu Jun 25 15:16:53 2015 -0400 CMakeDetermineCompilerId: Simplify src reference in IDE projects When constructing the "id_src" value for substitution into VS or Xcode compiler id projects, the input "src" variable already contains the file name with no path so we do not need get_filename_component. We know this because CMAKE_DETERMINE_COMPILER_ID_WRITE already references "${src}" with this assumption. diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 68f2194..487429b 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -217,7 +217,7 @@ Id flags: ${testflags} set(id_subsystem 1) endif() set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR}) - get_filename_component(id_src "${src}" NAME) + set(id_src "${src}") configure_file(${CMAKE_ROOT}/Modules/CompilerId/VS-${v}.${ext}.in ${id_dir}/CompilerId${lang}.${ext} @ONLY) if(CMAKE_VS_MSBUILD_COMMAND AND NOT lang STREQUAL "Fortran") @@ -256,7 +256,7 @@ Id flags: ${testflags} set(id_lang "${lang}") set(id_type ${CMAKE_${lang}_COMPILER_XCODE_TYPE}) set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR}) - get_filename_component(id_src "${src}" NAME) + set(id_src "${src}") if(CMAKE_XCODE_PLATFORM_TOOLSET) set(id_toolset "GCC_VERSION = ${CMAKE_XCODE_PLATFORM_TOOLSET};") else() ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineCompilerId.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:41:17 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:41:17 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-283-g6c098a4 Message-ID: <20150626124117.C7B2A2A86@public.kitware.com> 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, master has been updated via 6c098a4a720293c32ae308bee351e3431a350ab0 (commit) via 30c2e1dd16e061fbabffa35816cb893d81ff0dcf (commit) from 086b19aeda24bab60f7e4cd17feb2e3a070878a9 (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=6c098a4a720293c32ae308bee351e3431a350ab0 commit 6c098a4a720293c32ae308bee351e3431a350ab0 Merge: 086b19a 30c2e1d Author: Brad King AuthorDate: Fri Jun 26 08:41:16 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 08:41:16 2015 -0400 Merge topic 'fix-target_link_libraries-wrong-dir' 30c2e1dd cmTarget: Fix diagnostic of target_link_libraries in wrong directory (#15626) ----------------------------------------------------------------------- Summary of changes: Source/cmTarget.cxx | 4 ++-- Source/cmTarget.h | 3 ++- Source/cmTargetLinkLibrariesCommand.cxx | 3 ++- Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake | 1 + .../SubDirTarget-result.txt} | 0 Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt | 5 +++++ Tests/RunCMake/target_link_libraries/SubDirTarget.cmake | 3 +++ Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt | 1 + .../{GeneratorExpression => target_link_libraries}/empty.c | 0 9 files changed, 16 insertions(+), 4 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => target_link_libraries/SubDirTarget-result.txt} (100%) create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget.cmake create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt copy Tests/RunCMake/{GeneratorExpression => target_link_libraries}/empty.c (100%) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:41:34 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:41:34 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-686-gc993b54 Message-ID: <20150626124134.AF59E2AAF@public.kitware.com> 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 c993b54d2825ec241f08eba214119f5347944fa7 (commit) via 6c098a4a720293c32ae308bee351e3431a350ab0 (commit) via 086b19aeda24bab60f7e4cd17feb2e3a070878a9 (commit) from f57487c0de4735d1fa995d28a4262cd093046564 (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=c993b54d2825ec241f08eba214119f5347944fa7 commit c993b54d2825ec241f08eba214119f5347944fa7 Merge: f57487c 6c098a4 Author: Brad King AuthorDate: Fri Jun 26 08:41:26 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 08:41:26 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:43:48 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:43:48 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-288-gdcc2a7c Message-ID: <20150626124348.DA5231498C@public.kitware.com> 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, master has been updated via dcc2a7ccd4f8d9612b224d7106a4c3cfcd48e6fc (commit) via e4a9346dba41252f0f806b33cb026095e03fb00c (commit) via 9e5e645ae6081f8c29ef00144f85d69a64d361a0 (commit) via ac9062334555efe6893a0b1321f11e80f84bb0ed (commit) via b01b0d74f29e48e3a0648d3d9ece6998b98122a0 (commit) from 6c098a4a720293c32ae308bee351e3431a350ab0 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:43:49 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:43:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-692-gb9d228c Message-ID: <20150626124349.029BE14997@public.kitware.com> 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 b9d228c839be235b02eb5d8c8b8e713692ed6295 (commit) via dcc2a7ccd4f8d9612b224d7106a4c3cfcd48e6fc (commit) via e4a9346dba41252f0f806b33cb026095e03fb00c (commit) via 9e5e645ae6081f8c29ef00144f85d69a64d361a0 (commit) via ac9062334555efe6893a0b1321f11e80f84bb0ed (commit) via b01b0d74f29e48e3a0648d3d9ece6998b98122a0 (commit) from c993b54d2825ec241f08eba214119f5347944fa7 (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=b9d228c839be235b02eb5d8c8b8e713692ed6295 commit b9d228c839be235b02eb5d8c8b8e713692ed6295 Merge: c993b54 dcc2a7c Author: Brad King AuthorDate: Fri Jun 26 08:43:34 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 08:43:34 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:43:49 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:43:49 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.3.0-rc2-14-ge4a9346 Message-ID: <20150626124349.AF2AA149EE@public.kitware.com> 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, release has been updated via e4a9346dba41252f0f806b33cb026095e03fb00c (commit) via 9e5e645ae6081f8c29ef00144f85d69a64d361a0 (commit) via 3117b5feecf94914361e3683f1206f2d9d724c89 (commit) via ac9062334555efe6893a0b1321f11e80f84bb0ed (commit) via 81d58b0de62d3e1fdaeaf7029b0a415c32cf6b2a (commit) via 30c2e1dd16e061fbabffa35816cb893d81ff0dcf (commit) via b01b0d74f29e48e3a0648d3d9ece6998b98122a0 (commit) via d2cf92ec26602f47f44ce5e043ac7e1b3f96a1a5 (commit) from 38ee28bfd501e0d29650bc2fbd08eaec416eade3 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Help/variable/CMAKE_APPBUNDLE_PATH.rst | 5 +-- Help/variable/CMAKE_FIND_ROOT_PATH.rst | 2 +- Help/variable/CMAKE_FRAMEWORK_PATH.rst | 3 +- Help/variable/CMAKE_IGNORE_PATH.rst | 27 +++++++------- Help/variable/CMAKE_INCLUDE_PATH.rst | 11 +++--- Help/variable/CMAKE_LIBRARY_PATH.rst | 9 ++--- Help/variable/CMAKE_MODULE_PATH.rst | 9 +++-- Help/variable/CMAKE_PREFIX_PATH.rst | 20 ++++++----- Help/variable/CMAKE_PROGRAM_PATH.rst | 9 ++--- Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst | 25 +++++++------ Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst | 13 +++---- Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst | 13 +++---- Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst | 26 +++++++------- Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst | 13 +++---- Modules/CheckIncludeFile.cmake | 34 ++++++++++-------- Modules/CheckIncludeFileCXX.cmake | 37 ++++++++++---------- Modules/CheckIncludeFiles.cmake | 33 +++++++++-------- Source/QtDialog/CMakeSetup.cxx | 2 +- Source/QtDialog/CMakeSetupDialog.cxx | 2 +- Source/cmTarget.cxx | 4 +-- Source/cmTarget.h | 3 +- Source/cmTargetLinkLibrariesCommand.cxx | 3 +- .../target_link_libraries/RunCMakeTest.cmake | 1 + .../SubDirTarget-result.txt} | 0 .../target_link_libraries/SubDirTarget-stderr.txt | 5 +++ .../target_link_libraries/SubDirTarget.cmake | 3 ++ .../SubDirTarget/CMakeLists.txt | 1 + .../empty.c | 0 28 files changed, 162 insertions(+), 151 deletions(-) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => target_link_libraries/SubDirTarget-result.txt} (100%) create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget.cmake create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt copy Tests/RunCMake/{GeneratorExpression => target_link_libraries}/empty.c (100%) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 08:45:04 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 08:45:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-695-g954b488 Message-ID: <20150626124504.BCF8DA7F3C@public.kitware.com> 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 954b488d95c741596e6102d6ed151be90d66c667 (commit) via 7057d680899acd98d7d8c1f700d3e0845251dd7d (commit) via 74c99d11bc62048a069bd6c89b48cf4f94884210 (commit) from b9d228c839be235b02eb5d8c8b8e713692ed6295 (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=954b488d95c741596e6102d6ed151be90d66c667 commit 954b488d95c741596e6102d6ed151be90d66c667 Merge: b9d228c 7057d68 Author: Brad King AuthorDate: Fri Jun 26 08:45:04 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 08:45:04 2015 -0400 Merge topic 'test-release' into next 7057d680 Merge branch 'release' into test-release 74c99d11 CMake 3.3.0-rc3 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7057d680899acd98d7d8c1f700d3e0845251dd7d commit 7057d680899acd98d7d8c1f700d3e0845251dd7d Merge: dcc2a7c 74c99d1 Author: Brad King AuthorDate: Fri Jun 26 08:44:46 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 08:44:46 2015 -0400 Merge branch 'release' into test-release http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=74c99d11bc62048a069bd6c89b48cf4f94884210 commit 74c99d11bc62048a069bd6c89b48cf4f94884210 Author: Brad King AuthorDate: Fri Jun 26 08:44:27 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 08:44:27 2015 -0400 CMake 3.3.0-rc3 diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 26a3b8a..1c7b243 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -2,4 +2,4 @@ set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) set(CMake_VERSION_PATCH 0) -set(CMake_VERSION_RC 2) +set(CMake_VERSION_RC 3) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 09:44:32 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 09:44:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-697-g44560cf Message-ID: <20150626134432.623E514C8A@public.kitware.com> 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 44560cfe22c12ea37199e698e8354904f9ec5811 (commit) via 60330aadeacaf101fc72c1c22015be8af7fd46fb (commit) from 954b488d95c741596e6102d6ed151be90d66c667 (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=44560cfe22c12ea37199e698e8354904f9ec5811 commit 44560cfe22c12ea37199e698e8354904f9ec5811 Merge: 954b488 60330aa Author: Brad King AuthorDate: Fri Jun 26 09:44:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 09:44:31 2015 -0400 Merge topic 'vs-librarian-machine-flag-default' into next 60330aad VS: Add /machine: flag to Librarian tool (#11240) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=60330aadeacaf101fc72c1c22015be8af7fd46fb commit 60330aadeacaf101fc72c1c22015be8af7fd46fb Author: Brad King AuthorDate: Fri Jun 26 09:38:35 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 09:38:35 2015 -0400 VS: Add /machine: flag to Librarian tool (#11240) If a Windows resource (.rc) source file is included in a STATIC library, the VS "link" tool will process the compiled ".res" file and needs to know the target architecture. Add /machine: to the default static library flags to give the link tool the information it needs. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 13fe8bc..2537e39 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -230,6 +230,7 @@ elseif(MSVC_Fortran_ARCHITECTURE_ID) set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}") endif() set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}") +set(CMAKE_STATIC_LINKER_FLAGS_INIT "${CMAKE_STATIC_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}") unset(_MACHINE_ARCH_FLAG) # add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype diff --git a/Tests/VSResource/CMakeLists.txt b/Tests/VSResource/CMakeLists.txt index 17eb041..3b9cfc3 100644 --- a/Tests/VSResource/CMakeLists.txt +++ b/Tests/VSResource/CMakeLists.txt @@ -46,7 +46,10 @@ else() include_directories(${CMAKE_CURRENT_BINARY_DIR}) endif() +add_library(ResourceLib STATIC lib.cpp lib.rc) + add_executable(VSResource main.cpp test.rc) +target_link_libraries(VSResource ResourceLib) set_property(TARGET VSResource PROPERTY VS_GLOBAL_CMakeTestVsGlobalVariable "test val") diff --git a/Tests/VSResource/lib.cpp b/Tests/VSResource/lib.cpp new file mode 100644 index 0000000..006e3e4 --- /dev/null +++ b/Tests/VSResource/lib.cpp @@ -0,0 +1 @@ +int lib() { return 0; } diff --git a/Tests/VSResource/lib.rc b/Tests/VSResource/lib.rc new file mode 100644 index 0000000..e69de29 diff --git a/Tests/VSResource/main.cpp b/Tests/VSResource/main.cpp index 7ee0c74..ccf700c 100644 --- a/Tests/VSResource/main.cpp +++ b/Tests/VSResource/main.cpp @@ -1,6 +1,8 @@ #include #include +extern int lib(); + struct x { const char *txt; @@ -76,5 +78,5 @@ int main(int argc, char** argv) } } - return ret; + return ret + lib(); } ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Windows-MSVC.cmake | 1 + Tests/VSResource/CMakeLists.txt | 3 +++ Tests/VSResource/lib.cpp | 1 + Modules/IntelVSImplicitPath/hello.f => Tests/VSResource/lib.rc | 0 Tests/VSResource/main.cpp | 4 +++- 5 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 Tests/VSResource/lib.cpp copy Modules/IntelVSImplicitPath/hello.f => Tests/VSResource/lib.rc (100%) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 09:59:36 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 09:59:36 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-699-gf63f8cb Message-ID: <20150626135936.93337B04EE@public.kitware.com> 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 f63f8cb58d53d9a1afe06a48a356c35d86f6ae9b (commit) via 35c50cda083346dda956c8efe0b92c4745a84482 (commit) from 44560cfe22c12ea37199e698e8354904f9ec5811 (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=f63f8cb58d53d9a1afe06a48a356c35d86f6ae9b commit f63f8cb58d53d9a1afe06a48a356c35d86f6ae9b Merge: 44560cf 35c50cd Author: Brad King AuthorDate: Fri Jun 26 09:59:35 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 09:59:35 2015 -0400 Merge topic 'vs-librarian-machine-flag-default' into next 35c50cda VS: Add /machine: flag to Librarian tool (#11240) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=35c50cda083346dda956c8efe0b92c4745a84482 commit 35c50cda083346dda956c8efe0b92c4745a84482 Author: Brad King AuthorDate: Fri Jun 26 09:38:35 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 09:54:55 2015 -0400 VS: Add /machine: flag to Librarian tool (#11240) If a Windows resource (.rc) source file is included in a STATIC library, the VS "link" tool will process the compiled ".res" file and needs to know the target architecture. Without it, we may get a LNK4068 warning and possibly a LNK1112 error. Add /machine: to the default static library flags to give the link tool the information it needs. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 13fe8bc..2537e39 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -230,6 +230,7 @@ elseif(MSVC_Fortran_ARCHITECTURE_ID) set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}") endif() set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}") +set(CMAKE_STATIC_LINKER_FLAGS_INIT "${CMAKE_STATIC_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}") unset(_MACHINE_ARCH_FLAG) # add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype diff --git a/Tests/VSResource/CMakeLists.txt b/Tests/VSResource/CMakeLists.txt index 17eb041..3b9cfc3 100644 --- a/Tests/VSResource/CMakeLists.txt +++ b/Tests/VSResource/CMakeLists.txt @@ -46,7 +46,10 @@ else() include_directories(${CMAKE_CURRENT_BINARY_DIR}) endif() +add_library(ResourceLib STATIC lib.cpp lib.rc) + add_executable(VSResource main.cpp test.rc) +target_link_libraries(VSResource ResourceLib) set_property(TARGET VSResource PROPERTY VS_GLOBAL_CMakeTestVsGlobalVariable "test val") diff --git a/Tests/VSResource/lib.cpp b/Tests/VSResource/lib.cpp new file mode 100644 index 0000000..006e3e4 --- /dev/null +++ b/Tests/VSResource/lib.cpp @@ -0,0 +1 @@ +int lib() { return 0; } diff --git a/Tests/VSResource/lib.rc b/Tests/VSResource/lib.rc new file mode 100644 index 0000000..e69de29 diff --git a/Tests/VSResource/main.cpp b/Tests/VSResource/main.cpp index 7ee0c74..ccf700c 100644 --- a/Tests/VSResource/main.cpp +++ b/Tests/VSResource/main.cpp @@ -1,6 +1,8 @@ #include #include +extern int lib(); + struct x { const char *txt; @@ -76,5 +78,5 @@ int main(int argc, char** argv) } } - return ret; + return ret + lib(); } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 10:07:15 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 10:07:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-701-g5d6f4b8 Message-ID: <20150626140715.76F69B0741@public.kitware.com> 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 5d6f4b8df932f684ab590174993c046d5659e399 (commit) via 166aa7af334bed63966f64b46fcac7ddfca952b1 (commit) from f63f8cb58d53d9a1afe06a48a356c35d86f6ae9b (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=5d6f4b8df932f684ab590174993c046d5659e399 commit 5d6f4b8df932f684ab590174993c046d5659e399 Merge: f63f8cb 166aa7a Author: Brad King AuthorDate: Fri Jun 26 10:07:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 10:07:14 2015 -0400 Merge topic 'vs-librarian-machine-flag-default' into next 166aa7af fixup! VS: Add /machine: flag to Librarian tool (#11240) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=166aa7af334bed63966f64b46fcac7ddfca952b1 commit 166aa7af334bed63966f64b46fcac7ddfca952b1 Author: Brad King AuthorDate: Fri Jun 26 10:06:46 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 10:06:46 2015 -0400 fixup! VS: Add /machine: flag to Librarian tool (#11240) diff --git a/Tests/VSResource/lib.rc b/Tests/VSResource/lib.rc index e69de29..1ffade6 100644 --- a/Tests/VSResource/lib.rc +++ b/Tests/VSResource/lib.rc @@ -0,0 +1,4 @@ +STRINGTABLE +BEGIN + 1234 "5" +END ----------------------------------------------------------------------- Summary of changes: Tests/VSResource/lib.rc | 4 ++++ 1 file changed, 4 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 10:08:47 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 10:08:47 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-703-g89b6247 Message-ID: <20150626140847.8C5FEB0801@public.kitware.com> 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 89b62475deb926de0abac3130d02a1b3d6fe219b (commit) via 806609c7024dbf07a639a9d77074d4bc82ae1b8a (commit) from 5d6f4b8df932f684ab590174993c046d5659e399 (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=89b62475deb926de0abac3130d02a1b3d6fe219b commit 89b62475deb926de0abac3130d02a1b3d6fe219b Merge: 5d6f4b8 806609c Author: Brad King AuthorDate: Fri Jun 26 10:08:46 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 10:08:46 2015 -0400 Merge topic 'vs-librarian-machine-flag-default' into next 806609c7 VS: Add /machine: flag to Librarian tool (#11240) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=806609c7024dbf07a639a9d77074d4bc82ae1b8a commit 806609c7024dbf07a639a9d77074d4bc82ae1b8a Author: Brad King AuthorDate: Fri Jun 26 09:38:35 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 10:07:08 2015 -0400 VS: Add /machine: flag to Librarian tool (#11240) If a Windows resource (.rc) source file is included in a STATIC library, the VS "link" tool will process the compiled ".res" file and needs to know the target architecture. Without it, we may get a LNK4068 warning and possibly a LNK1112 error. Add /machine: to the default static library flags to give the link tool the information it needs. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 13fe8bc..2537e39 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -230,6 +230,7 @@ elseif(MSVC_Fortran_ARCHITECTURE_ID) set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}") endif() set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}") +set(CMAKE_STATIC_LINKER_FLAGS_INIT "${CMAKE_STATIC_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}") unset(_MACHINE_ARCH_FLAG) # add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype diff --git a/Tests/VSResource/CMakeLists.txt b/Tests/VSResource/CMakeLists.txt index 17eb041..3b9cfc3 100644 --- a/Tests/VSResource/CMakeLists.txt +++ b/Tests/VSResource/CMakeLists.txt @@ -46,7 +46,10 @@ else() include_directories(${CMAKE_CURRENT_BINARY_DIR}) endif() +add_library(ResourceLib STATIC lib.cpp lib.rc) + add_executable(VSResource main.cpp test.rc) +target_link_libraries(VSResource ResourceLib) set_property(TARGET VSResource PROPERTY VS_GLOBAL_CMakeTestVsGlobalVariable "test val") diff --git a/Tests/VSResource/lib.cpp b/Tests/VSResource/lib.cpp new file mode 100644 index 0000000..006e3e4 --- /dev/null +++ b/Tests/VSResource/lib.cpp @@ -0,0 +1 @@ +int lib() { return 0; } diff --git a/Tests/VSResource/lib.rc b/Tests/VSResource/lib.rc new file mode 100644 index 0000000..1ffade6 --- /dev/null +++ b/Tests/VSResource/lib.rc @@ -0,0 +1,4 @@ +STRINGTABLE +BEGIN + 1234 "5" +END diff --git a/Tests/VSResource/main.cpp b/Tests/VSResource/main.cpp index 7ee0c74..ccf700c 100644 --- a/Tests/VSResource/main.cpp +++ b/Tests/VSResource/main.cpp @@ -1,6 +1,8 @@ #include #include +extern int lib(); + struct x { const char *txt; @@ -76,5 +78,5 @@ int main(int argc, char** argv) } } - return ret; + return ret + lib(); } ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 10:53:24 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 10:53:24 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc2-290-g17183f9 Message-ID: <20150626145324.F0E95B02A6@public.kitware.com> 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, master has been updated via 17183f9250327284d5370f8d0e78e00e00098b74 (commit) via 74c99d11bc62048a069bd6c89b48cf4f94884210 (commit) from dcc2a7ccd4f8d9612b224d7106a4c3cfcd48e6fc (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 10:53:25 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 10:53:25 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-705-gd71d2d5 Message-ID: <20150626145325.1A0DBB02A7@public.kitware.com> 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 d71d2d58dfb31a670e0c19ab5a17f5152b04d676 (commit) via 17183f9250327284d5370f8d0e78e00e00098b74 (commit) from 89b62475deb926de0abac3130d02a1b3d6fe219b (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=d71d2d58dfb31a670e0c19ab5a17f5152b04d676 commit d71d2d58dfb31a670e0c19ab5a17f5152b04d676 Merge: 89b6247 17183f9 Author: Brad King AuthorDate: Fri Jun 26 10:53:09 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 10:53:09 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 10:53:25 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 10:53:25 -0400 (EDT) Subject: [Cmake-commits] CMake branch, release, updated. v3.3.0-rc2-15-g74c99d1 Message-ID: <20150626145325.2F64EB02AE@public.kitware.com> 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, release has been updated via 74c99d11bc62048a069bd6c89b48cf4f94884210 (commit) from e4a9346dba41252f0f806b33cb026095e03fb00c (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Fri Jun 26 11:07:19 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Fri, 26 Jun 2015 11:07:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-707-gadfbae3 Message-ID: <20150626150719.1E0FBB0670@public.kitware.com> 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 adfbae333bffef484a851a7e6c97d5a8ca459bc5 (commit) via 6d42ecb5775b3a9b83e96b3f8db2c62a0f5913fe (commit) from d71d2d58dfb31a670e0c19ab5a17f5152b04d676 (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=adfbae333bffef484a851a7e6c97d5a8ca459bc5 commit adfbae333bffef484a851a7e6c97d5a8ca459bc5 Merge: d71d2d5 6d42ecb Author: Bill Hoffman AuthorDate: Fri Jun 26 11:07:18 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 11:07:18 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 6d42ecb5 fix various dashboard warnings and errors http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d42ecb5775b3a9b83e96b3f8db2c62a0f5913fe commit 6d42ecb5775b3a9b83e96b3f8db2c62a0f5913fe Author: Bill Hoffman AuthorDate: Fri Jun 26 11:07:06 2015 -0400 Commit: Bill Hoffman CommitDate: Fri Jun 26 11:07:06 2015 -0400 fix various dashboard warnings and errors diff --git a/Tests/RunCMake/AutoExportDll/hello.cxx b/Tests/RunCMake/AutoExportDll/hello.cxx index 807a811..ad83420 100644 --- a/Tests/RunCMake/AutoExportDll/hello.cxx +++ b/Tests/RunCMake/AutoExportDll/hello.cxx @@ -9,5 +9,5 @@ void hello() { std::cout << "hello"; } -void Hello::operator delete[](void* ptr) {}; -void Hello::operator delete(void* ptr) {}; +void Hello::operator delete[](void*) {}; +void Hello::operator delete(void*) {}; diff --git a/Tests/RunCMake/AutoExportDll/hello.h b/Tests/RunCMake/AutoExportDll/hello.h index a151bd1..3749b97 100644 --- a/Tests/RunCMake/AutoExportDll/hello.h +++ b/Tests/RunCMake/AutoExportDll/hello.h @@ -13,6 +13,6 @@ class Hello public: static winexport int Data; void real(); - static void operator delete[](void* ptr); - static void operator delete(void* ptr); + static void operator delete[](void*); + static void operator delete(void*); }; diff --git a/Tests/RunCMake/AutoExportDll/say.cxx b/Tests/RunCMake/AutoExportDll/say.cxx index 015c3a8..655b3c2 100644 --- a/Tests/RunCMake/AutoExportDll/say.cxx +++ b/Tests/RunCMake/AutoExportDll/say.cxx @@ -1,4 +1,4 @@ -#include +#include #include "hello.h" #ifdef _MSC_VER #include "windows.h" @@ -26,10 +26,12 @@ int main() Hello h; h.real(); hello(); - std::cout << " "; + printf(" "); world(); - std::cout << "\n" << foo() << "\n"; - std::cout << "\n" << bar() << "\n"; - std::cout << "\n"; + printf("\n"); + foo(); + printf("\n"); + bar(); + printf("\n"); return 0; } ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/AutoExportDll/hello.cxx | 4 ++-- Tests/RunCMake/AutoExportDll/hello.h | 4 ++-- Tests/RunCMake/AutoExportDll/say.cxx | 12 +++++++----- 3 files changed, 11 insertions(+), 9 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 12:46:32 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 12:46:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc2-711-g2a8dbc4 Message-ID: <20150626164632.9217C143D6@public.kitware.com> 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 2a8dbc4de0da103a064b0372f1ac8481664f6e83 (commit) via 74f7ccb53dbe088315bf558f3ed0f917b8a820d9 (commit) via 2b131bef1f3b7f0b85ae10974547117f9f647de9 (commit) via 43993aab796f7a91da26f228c8fc026af3513108 (commit) from adfbae333bffef484a851a7e6c97d5a8ca459bc5 (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=2a8dbc4de0da103a064b0372f1ac8481664f6e83 commit 2a8dbc4de0da103a064b0372f1ac8481664f6e83 Merge: adfbae3 74f7ccb Author: Brad King AuthorDate: Fri Jun 26 12:46:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 12:46:31 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 74f7ccb5 Tests: Teach RunCMake.AutoExportDll to tolerate build output 2b131bef Fix auto-export with international characters in the path 43993aab Tests: Disable RunCMake.AutoExportDll on Watcom and Borland tools http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=74f7ccb53dbe088315bf558f3ed0f917b8a820d9 commit 74f7ccb53dbe088315bf558f3ed0f917b8a820d9 Author: Brad King AuthorDate: Fri Jun 26 12:42:19 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 12:42:19 2015 -0400 Tests: Teach RunCMake.AutoExportDll to tolerate build output diff --git a/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt b/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt new file mode 100644 index 0000000..d483c2c --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt @@ -0,0 +1 @@ +^.*$ http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2b131bef1f3b7f0b85ae10974547117f9f647de9 commit 2b131bef1f3b7f0b85ae10974547117f9f647de9 Author: Brad King AuthorDate: Fri Jun 26 12:38:01 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 12:38:06 2015 -0400 Fix auto-export with international characters in the path Also fix bootstrap on MSYS. diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index e94282a..659082f 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -70,6 +70,7 @@ static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; +#include #include #include #include @@ -353,7 +354,8 @@ DumpFile(const char* filename, FILE *fout) LPVOID lpFileBase; PIMAGE_DOS_HEADER dosHeader; - hFile = CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, NULL, + hFile = CreateFileW(cmsys::Encoding::ToWide(filename).c_str(), + GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hFile == INVALID_HANDLE_VALUE) diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 6b9923a..61e6331 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -34,7 +34,7 @@ #include #include // required for atoi -#ifdef _WIN32 +#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) // defined in binexplib.cxx void DumpFile(const char* filename, FILE *fout); #endif @@ -214,7 +214,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) } return 0; } -#ifdef _WIN32 +#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) else if(args[1] == "__create_def") { if(args.size() < 4) @@ -223,7 +223,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) "__create_def Usage: -E __create_def outfile.def objlistfile\n"; return 1; } - FILE* fout = fopen(args[2].c_str(), "w+"); + FILE* fout = cmsys::SystemTools::Fopen(args[2].c_str(), "w+"); if(!fout) { std::cerr << "could not open output .def file: " << args[2].c_str() http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=43993aab796f7a91da26f228c8fc026af3513108 commit 43993aab796f7a91da26f228c8fc026af3513108 Author: Brad King AuthorDate: Fri Jun 26 11:24:35 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 11:31:25 2015 -0400 Tests: Disable RunCMake.AutoExportDll on Watcom and Borland tools diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake index 09cd42a..f4e08ec 100644 --- a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -7,7 +7,7 @@ file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") run_cmake(AutoExport) unset(RunCMake_TEST_OPTIONS) # don't run this test on VS 6 as it is not supported -if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 6") +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 6|Watcom WMake|Borland Makefiles") return() endif() # we build debug so the say.exe will be found in Debug/say.exe for ----------------------------------------------------------------------- Summary of changes: Source/bindexplib.cxx | 4 +++- Source/cmcmd.cxx | 6 +++--- Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt | 1 + Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt hooks/post-receive -- CMake From robert.maynard at kitware.com Fri Jun 26 14:35:09 2015 From: robert.maynard at kitware.com (Robert Maynard) Date: Fri, 26 Jun 2015 14:35:09 -0400 (EDT) Subject: [Cmake-commits] CMake annotated tag, v3.3.0-rc3, created. v3.3.0-rc3 Message-ID: <20150626183509.E857CB08B0@public.kitware.com> 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 annotated tag, v3.3.0-rc3 has been created at 4beedb2629bbefbb7aeaba3d55ced5510faeafa0 (tag) tagging 74c99d11bc62048a069bd6c89b48cf4f94884210 (commit) replaces v3.3.0-rc2 tagged by Brad King on Fri Jun 26 10:17:02 2015 -0400 - Log ----------------------------------------------------------------- CMake 3.3.0-rc3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVjV7eAAoJEOyP7zp7+07a4EcP/0z5Rq5KtG+AhAb+2XKfEX2V bt/KugZkp7O5xQxR9Vdi2tK/Cm3JOkiIriBRlIwmRUgY0cbB75SOuySTuo7u8d55 D1XsUCtiCRhgznrvGMDAaV13RN6tfl+Cn4PDfyJFSvxWCzLDGFiFQUMso8FBuHa8 F1mTzm2PJj9/Sd7fBweYVjGPzo1Wq15iXIiorttXWFqrZCLMZaGZ1g7uWWt0MrFF XOj8q3Qf27fTMgXrvoh4CfjzLynoUX+ZB0qNQHRrT0e5tm9kCkPY0DTbJ3DXhdKJ EVwWXTOPRlq+WULc36uRkiKbhS5CZe0AcYokCas7swSl7IGiAXW91c4ZLQ3T8Uvi jxT9vE8tYuPE3lrvkgHRwb9ISX3TwoZ5h8zmET8T6oM7reUCtbuMvBUHevdkvVcY CH1DnOo0ez0LhIMbWdvOXv3EypVEeDtaQV6MRHe7HQmzJkFSC5V4UoV00YWCADPB x2iSNEW1vZxWkoTzR4bv96tVW1sQKNKHyGKT8P37TSKEGpJLPXG5tvLfIScaMrSu qbEs/h3t5v3Ykljx5m2gHdcyWyc7/ZGxInUuQJTugc9s4bJ2px/hz0yy/wLdzIoL GT9wNsIc0gPZvlL27sim1tsr/A3vw1gEw1wE3H/4lbePwFtY/RqxuQmXG8JPAjL5 s3GpLDmfUXFcz5tAEj05 =Lvp4 -----END PGP SIGNATURE----- Brad King (14): Help: Fix typo in CMAKE_GENERATOR_PLATFORM docs (#15621) Merge branch 'doc-CMAKE_GENERATOR_PLATFORM-typo' into release Merge branch 'doc-cmake-buildsystem-typo' into release Fix assertion failure on unmatched function or macro Merge branch 'fix-function-missing-end' into release cmake-gui: Change --install to use /usr/local/bin by default (#15627) Merge branch 'cmake-gui-osx-install-command-line' into release cmTarget: Fix diagnostic of target_link_libraries in wrong directory (#15626) Help: Revise CheckIncludeFile* documentation Merge branch 'doc-CheckIncludeFile-distinction' into release Help: Revise CMAKE_*_PATH and CMAKE_SYSTEM_*_PATH variable docs (#15631) Merge branch 'doc-find-path-variables' into release Merge branch 'fix-target_link_libraries-wrong-dir' into release CMake 3.3.0-rc3 Erik Sj?lund (1): Help: Fix a typo in cmake-buildsystem(7) manual ----------------------------------------------------------------------- hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 14:36:41 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 14:36:41 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-698-g0a129de Message-ID: <20150626183641.7E0F0B08E8@public.kitware.com> 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 0a129deab731bd65c60ef5bd45f1c865de601e78 (commit) via e30db74ac6ae38de0f76f95db26a3b81606e32d9 (commit) from 2a8dbc4de0da103a064b0372f1ac8481664f6e83 (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=0a129deab731bd65c60ef5bd45f1c865de601e78 commit 0a129deab731bd65c60ef5bd45f1c865de601e78 Merge: 2a8dbc4 e30db74 Author: Brad King AuthorDate: Fri Jun 26 14:36:40 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 14:36:40 2015 -0400 Merge topic 'auto_export_dll_symbols' into next e30db74a Update 'auto_export_dll_symbols' topic to match rewrite http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e30db74ac6ae38de0f76f95db26a3b81606e32d9 commit e30db74ac6ae38de0f76f95db26a3b81606e32d9 Author: Brad King AuthorDate: Fri Jun 26 14:36:08 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 14:36:08 2015 -0400 Update 'auto_export_dll_symbols' topic to match rewrite diff --git a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst index 1c37fd7..3f48af8 100644 --- a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst +++ b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -1,14 +1,17 @@ WINDOWS_EXPORT_ALL_SYMBOLS -------------------------- -This property is implemented only when the compiler supports it. +This property is implemented only for MS-compatible tools on Windows. -This property will automatically create a .def file with all global -symbols found in the input .obj files for a dll on Windows. The def -file will be passed to the linker causing all symbols to be exported -from the dll. For any global data __declspec(dllimport) must still be -used when compiling against the code in the dll. All other function -symbols will be automatically exported and imported by callers. +Enable this boolean property to automatically create a module definition +(``.def``) file with all global symbols found in the input ``.obj`` files +for a ``SHARED`` library on Windows. The module definition file will be +passed to the linker causing all symbols to be exported from the ``.dll``. +For global *data* symbols, ``__declspec(dllimport)`` must still be used when +compiling against the code in the ``.dll``. All other function symbols will +be automatically exported and imported by callers. This simplifies porting +projects to Windows by reducing the need for explicit ``dllexport`` markup, +even in ``C++`` classes. This property is initialized by the value of the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set diff --git a/Help/release/dev/auto_export_dll_symbols.rst b/Help/release/dev/auto_export_dll_symbols.rst new file mode 100644 index 0000000..9db2b5e --- /dev/null +++ b/Help/release/dev/auto_export_dll_symbols.rst @@ -0,0 +1,6 @@ +auto_export_dll_symbols +----------------------- + +* On Windows with MS-compatible tools, CMake learned to optionally + generate a module definition (``.def``) file for ``SHARED`` libraries. + See the :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 1e4ec84..aeaa2bd 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -45,12 +45,11 @@ else() set(CMAKE_CREATE_CONSOLE_EXE "/subsystem:console") set(_PLATFORM_LINK_FLAGS "") endif() -# default support WINDOWS_EXPORT_ALL_SYMBOLS + set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1) if(CMAKE_GENERATOR MATCHES "Visual Studio 6") set (CMAKE_NO_BUILD_TYPE 1) - # WINDOWS_EXPORT_ALL_SYMBOLS not supported for VS6 IDE - set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 0) + set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 0) # not implemented for VS6 endif() if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio") set (CMAKE_NO_BUILD_TYPE 1) diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 659082f..0dd9f75 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -1,6 +1,6 @@ /*============================================================================ CMake - Cross Platform Makefile Generator - Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + Copyright 2000-2015 Kitware, Inc. Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. @@ -9,9 +9,12 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ - -/* permission to use BSD license from Pere Mato pere.mato at cern.ch - Header of original code from http://root.cern.ch follows: */ +/*------------------------------------------------------------------------- + Portions of this source have been derived from the 'bindexplib' tool + provided by the CERN ROOT Data Analysis Framework project (root.cern.ch). + Permission has been granted by Pere Mato to distribute + this derived work under the CMake license. +-------------------------------------------------------------------------*/ /* *---------------------------------------------------------------------- @@ -143,8 +146,8 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, i = 0; foundExports = 0; pDirectivesSectionHeader = 0; - for(i = 0; i < pImageFileHeader->NumberOfSections - && !pDirectivesSectionHeader; i++) + for(i = 0; (i < pImageFileHeader->NumberOfSections && + !pDirectivesSectionHeader); i++) if (!strncmp((const char*)&pSectionHeaders[i].Name[0], ".drectve",8)) pDirectivesSectionHeader = &pSectionHeaders[i]; if (!pDirectivesSectionHeader) return 0; @@ -200,107 +203,88 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, */ stringTable = (PSTR)&pSymbolTable[cSymbols]; - for ( i=0; i < cSymbols; i++ ) - { - if (pSymbolTable->SectionNumber > 0 && - ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) - { - if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) - { - /* - * The name of the Function entry points - */ - if (pSymbolTable->N.Name.Short != 0) - { - symbol = ""; - symbol.insert(0, (const char *)pSymbolTable->N.ShortName, 8); - } - else - { - symbol = stringTable + pSymbolTable->N.Name.Long; - } - // clear out any leading spaces - while (isspace(symbol[0])) symbol.erase(0,1); - // if it starts with _ and has an @ then it is a __cdecl - // so remove the @ stuff for the export - if(symbol[0] == '_') - { - std::string::size_type posAt = symbol.find('@'); - if (posAt != std::string::npos) - { - symbol.erase(posAt); - } - } - if (symbol[0] == '_') symbol.erase(0,1); - if (fImportFlag) - { - fImportFlag = 0; - fprintf(fout,"EXPORTS \n"); - } - /* - Check whether it is "Scalar deleting destructor" and - "Vector deleting destructor" - */ - const char *scalarPrefix = "??_G"; - const char *vectorPrefix = "??_E"; - // original code had a check for - // symbol.find("real@") == std::string::npos) - // but if this disallows memmber functions with the name real - // if scalarPrefix and vectorPrefix are not found then print - //the symbol - if (symbol.compare(0, 4, scalarPrefix) && - symbol.compare(0, 4, vectorPrefix) ) - { - SectChar = - pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; - if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) - { - // Read only (i.e. constants) must be excluded - fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); - } - else - { - if ( pSymbolTable->Type || !(SectChar & IMAGE_SCN_MEM_READ)) - { - fprintf(fout, "\t%s\n", symbol.c_str()); + for ( i=0; i < cSymbols; i++ ) { + if (pSymbolTable->SectionNumber > 0 && + ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + /* + * The name of the Function entry points + */ + if (pSymbolTable->N.Name.Short != 0) { + symbol = ""; + symbol.insert(0, (const char *)pSymbolTable->N.ShortName, 8); + } else { + symbol = stringTable + pSymbolTable->N.Name.Long; + } + + // clear out any leading spaces + while (isspace(symbol[0])) symbol.erase(0,1); + // if it starts with _ and has an @ then it is a __cdecl + // so remove the @ stuff for the export + if(symbol[0] == '_') { + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) { + symbol.erase(posAt); } - else - { - //printf(" strange symbol: %s \n",symbol.c_str()); + } + if (symbol[0] == '_') symbol.erase(0,1); + if (fImportFlag) { + fImportFlag = 0; + fprintf(fout,"EXPORTS \n"); + } + /* + Check whether it is "Scalar deleting destructor" and + "Vector deleting destructor" + */ + const char *scalarPrefix = "??_G"; + const char *vectorPrefix = "??_E"; + // original code had a check for + // symbol.find("real@") == std::string::npos) + // but if this disallows memmber functions with the name real + // if scalarPrefix and vectorPrefix are not found then print + // the symbol + if (symbol.compare(0, 4, scalarPrefix) && + symbol.compare(0, 4, vectorPrefix) ) + { + SectChar = + pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; + if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) { + // Read only (i.e. constants) must be excluded + fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); + } else { + if ( pSymbolTable->Type || + !(SectChar & IMAGE_SCN_MEM_READ)) { + fprintf(fout, "\t%s\n", symbol.c_str()); + } else { + // printf(" strange symbol: %s \n",symbol.c_str()); + } } - } - } // not vector or scalar destructor + } } } - else if (pSymbolTable->SectionNumber - == IMAGE_SYM_UNDEFINED && !pSymbolTable->Type && 0) - { - /* + else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && + !pSymbolTable->Type && 0) { + /* * The IMPORT global variable entry points */ - if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) - { - symbol = stringTable + pSymbolTable->N.Name.Long; - while (isspace(symbol[0])) symbol.erase(0,1); - if (symbol[0] == '_') - { - symbol.erase(0,1); - } - if (!fImportFlag) - { - fImportFlag = 1; - fprintf(fout,"IMPORTS \n"); + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + symbol = stringTable + pSymbolTable->N.Name.Long; + while (isspace(symbol[0])) symbol.erase(0,1); + if (symbol[0] == '_') symbol.erase(0,1); + if (!fImportFlag) { + fImportFlag = 1; + fprintf(fout,"IMPORTS \n"); } - fprintf(fout, "\t%s DATA \n", symbol.c_str()+1); - } - } + fprintf(fout, "\t%s DATA \n", symbol.c_str()+1); + } + } - /* + /* * Take into account any aux symbols */ - i += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable++; + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; } } @@ -332,10 +316,8 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); if (!haveExports) - { - DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, - fout, COFFSymbolCount); - } + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, + fout, COFFSymbolCount); } /* @@ -358,11 +340,10 @@ DumpFile(const char* filename, FILE *fout) GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); - if (hFile == INVALID_HANDLE_VALUE) - { - fprintf(stderr, "Couldn't open file [%s] with CreateFile()\n", filename); - return; - } + if (hFile == INVALID_HANDLE_VALUE) { + fprintf(stderr, "Couldn't open file [%s] with CreateFile()\n", filename); + return; + } hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); if (hFileMapping == 0) { @@ -380,17 +361,16 @@ DumpFile(const char* filename, FILE *fout) } dosHeader = (PIMAGE_DOS_HEADER)lpFileBase; - if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) - { - fprintf(stderr, "File is an executable. I don't dump those.\n"); - return; - } + if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) { + fprintf(stderr, "File is an executable. I don't dump those.\n"); + return; + } /* Does it look like a i386 COFF OBJ file??? */ else if ( - ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) - || (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) - && (dosHeader->e_sp == 0) - ) { + ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || + (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) + && (dosHeader->e_sp == 0) + ) { /* * The two tests above aren't what they look like. They're * really checking for IMAGE_FILE_HEADER.Machine == i386 (0x14C) diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 020ef50..e4eb014 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1081,8 +1081,8 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL); linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str()); } - if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") - &&target.GetType() == cmTarget::SHARED_LIBRARY) + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) { std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; const char *autodef = target.GetProperty(autodef_prop); @@ -2026,8 +2026,8 @@ void cmLocalVisualStudio7Generator tool = this->FortranProject? "VFPreLinkEventTool":"VCPreLinkEventTool"; event.Start(tool); bool addedPrelink = false; - if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") - && target.GetType() == cmTarget::SHARED_LIBRARY) + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) { std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; const char *autodef = target.GetProperty(autodef_prop); @@ -2045,7 +2045,7 @@ void cmLocalVisualStudio7Generator event.Write(commands); } } - if(!addedPrelink) + if (!addedPrelink) { event.Write(target.GetPreLinkCommands()); } diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 0511356..f807517 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -563,10 +563,9 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules useResponseFileForObjects, buildObjs, depends, useWatcomQuote); - // check for windows_auto_dll_export property here - // create .def file from list of objects - if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") - && this->Target->GetType() == cmTarget::SHARED_LIBRARY) + // maybe create .def file from list of objects + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) { std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; const char *autodef = this->Target->GetProperty(autodef_prop); diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index a181f66..4df0993 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -437,6 +437,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() this->OSXBundleGenerator->CreateCFBundle(this->TargetNameOut, target.GetDirectory(cfgName)); } + // Write comments. cmGlobalNinjaGenerator::WriteDivider(this->GetBuildFileStream()); const cmTarget::TargetType targetType = target.GetType(); @@ -616,10 +617,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() std::back_inserter(byproducts), MapToNinjaPath()); } } - // check for windows_auto_dll_export property here - // create .def file from list of objects - if(this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") - && target.GetType() == cmTarget::SHARED_LIBRARY) + + // maybe create .def file from list of objects + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) { std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; const char *autodef = target.GetProperty(autodef_prop); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index d84b7d0..03acf2f 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2465,8 +2465,9 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries", "%(IgnoreSpecificDefaultLibraries)"); } - if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") - && this->Target->GetType() == cmTarget::SHARED_LIBRARY) + + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) { std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; const char *autodef = this->Target->GetProperty(autodef_prop); @@ -2475,6 +2476,7 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); } } + this->LinkOptions[config] = pOptions.release(); return true; } @@ -2623,8 +2625,8 @@ void cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName) { bool addedPrelink = false; - if(this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") - && this->Target->GetType() == cmTarget::SHARED_LIBRARY) + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) { std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; const char *autodef = this->Target->GetProperty(autodef_prop); @@ -2638,7 +2640,7 @@ cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName) this->WriteEvent("PreLinkEvent", commands, configName); } } - if(!addedPrelink) + if (!addedPrelink) { this->WriteEvent("PreLinkEvent", this->Target->GetPreLinkCommands(), configName); diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 61e6331..d97abcc 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -214,6 +214,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) } return 0; } + #if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) else if(args[1] == "__create_def") { ----------------------------------------------------------------------- Summary of changes: Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst | 17 ++- Help/release/dev/auto_export_dll_symbols.rst | 6 + Modules/Platform/Windows-MSVC.cmake | 5 +- Source/bindexplib.cxx | 210 ++++++++++++-------------- Source/cmLocalVisualStudio7Generator.cxx | 10 +- Source/cmMakefileLibraryTargetGenerator.cxx | 7 +- Source/cmNinjaNormalTargetGenerator.cxx | 9 +- Source/cmVisualStudio10TargetGenerator.cxx | 12 +- Source/cmcmd.cxx | 1 + 9 files changed, 134 insertions(+), 143 deletions(-) create mode 100644 Help/release/dev/auto_export_dll_symbols.rst hooks/post-receive -- CMake From brad.king at kitware.com Fri Jun 26 14:37:04 2015 From: brad.king at kitware.com (Brad King) Date: Fri, 26 Jun 2015 14:37:04 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-705-g24fad5b Message-ID: <20150626183704.55DDBB08F6@public.kitware.com> 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 24fad5b0f0ddd90bd6fd6c47e263527e99299dd3 (commit) via 16853cc3dc6fd428658f2a976fadfbbc82ab7af6 (commit) via 11911857ed48cbd5e1c71a8c646e90e033cca99a (commit) via 12378c07b22829b19e1c7ef47a3cda4f213164ba (commit) via bee7a4441c7d2a65041eeaee63131ea610c6ecc4 (commit) via e86309701d5d613a74fc8153c67a142c449c1d37 (commit) via 3ef9d2461099cbfa69689df2ad84aefcbf38e34a (commit) from 0a129deab731bd65c60ef5bd45f1c865de601e78 (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=24fad5b0f0ddd90bd6fd6c47e263527e99299dd3 commit 24fad5b0f0ddd90bd6fd6c47e263527e99299dd3 Merge: 0a129de 16853cc Author: Brad King AuthorDate: Fri Jun 26 14:37:03 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 14:37:03 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 16853cc3 Windows: Optionally generate DLL module definition files automatically 11911857 bindexplib: Build source as part of CMakeLib 12378c07 bindexplib: Wrap long lines bee7a444 bindexplib: Drop code that CMake does not need e8630970 bindexplib: Add copyright/license notice block 3ef9d246 bindexplib: Import original implementation from CERN http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=16853cc3dc6fd428658f2a976fadfbbc82ab7af6 commit 16853cc3dc6fd428658f2a976fadfbbc82ab7af6 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 14:33:11 2015 -0400 Windows: Optionally generate DLL module definition files automatically Create target property WINDOWS_EXPORT_ALL_SYMBOLS to automatically generate a module definition file from MS-compatible .obj files and give it to the linker in order to export all symbols from the .dll part of a SHARED library. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 9a60a10..b767ed6 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -251,6 +251,7 @@ Properties on Targets /prop_tgt/VS_WINRT_EXTENSIONS /prop_tgt/VS_WINRT_REFERENCES /prop_tgt/WIN32_EXECUTABLE + /prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS /prop_tgt/XCODE_ATTRIBUTE_an-attribute /prop_tgt/XCTEST diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..7c7db5e 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -275,6 +275,7 @@ Variables that Control the Build /variable/CMAKE_USE_RELATIVE_PATHS /variable/CMAKE_VISIBILITY_INLINES_HIDDEN /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD + /variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS /variable/CMAKE_WIN32_EXECUTABLE /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute /variable/EXECUTABLE_OUTPUT_PATH diff --git a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst new file mode 100644 index 0000000..3f48af8 --- /dev/null +++ b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -0,0 +1,18 @@ +WINDOWS_EXPORT_ALL_SYMBOLS +-------------------------- + +This property is implemented only for MS-compatible tools on Windows. + +Enable this boolean property to automatically create a module definition +(``.def``) file with all global symbols found in the input ``.obj`` files +for a ``SHARED`` library on Windows. The module definition file will be +passed to the linker causing all symbols to be exported from the ``.dll``. +For global *data* symbols, ``__declspec(dllimport)`` must still be used when +compiling against the code in the ``.dll``. All other function symbols will +be automatically exported and imported by callers. This simplifies porting +projects to Windows by reducing the need for explicit ``dllexport`` markup, +even in ``C++`` classes. + +This property is initialized by the value of +the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set +when a target is created. diff --git a/Help/release/dev/auto_export_dll_symbols.rst b/Help/release/dev/auto_export_dll_symbols.rst new file mode 100644 index 0000000..9db2b5e --- /dev/null +++ b/Help/release/dev/auto_export_dll_symbols.rst @@ -0,0 +1,6 @@ +auto_export_dll_symbols +----------------------- + +* On Windows with MS-compatible tools, CMake learned to optionally + generate a module definition (``.def``) file for ``SHARED`` libraries. + See the :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. diff --git a/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst new file mode 100644 index 0000000..1636842 --- /dev/null +++ b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -0,0 +1,6 @@ +CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS +-------------------------------- + +Default value for :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. +This variable is used to initialize the property on each target as it is +created. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 13fe8bc..aeaa2bd 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -46,8 +46,10 @@ else() set(_PLATFORM_LINK_FLAGS "") endif() +set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1) if(CMAKE_GENERATOR MATCHES "Visual Studio 6") set (CMAKE_NO_BUILD_TYPE 1) + set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 0) # not implemented for VS6 endif() if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio") set (CMAKE_NO_BUILD_TYPE 1) diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 0de0ddf..0dd9f75 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -217,7 +217,16 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, symbol = stringTable + pSymbolTable->N.Name.Long; } + // clear out any leading spaces while (isspace(symbol[0])) symbol.erase(0,1); + // if it starts with _ and has an @ then it is a __cdecl + // so remove the @ stuff for the export + if(symbol[0] == '_') { + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) { + symbol.erase(posAt); + } + } if (symbol[0] == '_') symbol.erase(0,1); if (fImportFlag) { fImportFlag = 0; @@ -229,9 +238,13 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, */ const char *scalarPrefix = "??_G"; const char *vectorPrefix = "??_E"; + // original code had a check for + // symbol.find("real@") == std::string::npos) + // but if this disallows memmber functions with the name real + // if scalarPrefix and vectorPrefix are not found then print + // the symbol if (symbol.compare(0, 4, scalarPrefix) && - symbol.compare(0, 4, vectorPrefix) && - symbol.find("real@") == std::string::npos) + symbol.compare(0, 4, vectorPrefix) ) { SectChar = pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; @@ -243,7 +256,7 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, !(SectChar & IMAGE_SCN_MEM_READ)) { fprintf(fout, "\t%s\n", symbol.c_str()); } else { - // printf(" strange symbol: %s \n",s); + // printf(" strange symbol: %s \n",symbol.c_str()); } } } @@ -328,7 +341,7 @@ DumpFile(const char* filename, FILE *fout) OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hFile == INVALID_HANDLE_VALUE) { - fprintf(stderr, "Couldn't open file with CreateFile()\n"); + fprintf(stderr, "Couldn't open file [%s] with CreateFile()\n", filename); return; } diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 585d19a..61cec6c 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -887,3 +887,64 @@ std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir( } return tmp; } + +void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( + cmGeneratorTarget* gt, std::vector& commands, + std::string const& configName) +{ + std::vector outputs; + std::string deffile = "$(IntDir)/exportall.def"; + outputs.push_back(deffile); + std::vector empty; + std::vector objectSources; + gt->GetObjectSources(objectSources, configName); + std::map mapping; + for(std::vector::const_iterator it + = objectSources.begin(); it != objectSources.end(); ++it) + { + mapping[*it]; + } + gt->LocalGenerator-> + ComputeObjectFilenames(mapping, gt); + std::string obj_dir = gt->ObjectDirectory; + std::string cmakeCommand = cmSystemTools::GetCMakeCommand(); + cmSystemTools::ConvertToWindowsExtendedPath(cmakeCommand); + cmCustomCommandLine cmdl; + cmdl.push_back(cmakeCommand); + cmdl.push_back("-E"); + cmdl.push_back("__create_def"); + cmdl.push_back(deffile); + std::string objs_file = gt->Target->GetName(); + objs_file += ".dir/" + configName; + cmSystemTools::MakeDirectory(objs_file.c_str()); + objs_file += "/exportall.def.objs"; + cmdl.push_back(objs_file); + std::ofstream fout(objs_file.c_str()); + if(!fout) + { + cmSystemTools::Error("could not open ", objs_file.c_str()); + return; + } + for(std::vector::const_iterator it + = objectSources.begin(); it != objectSources.end(); ++it) + { + // Find the object file name corresponding to this source file. + std::map::const_iterator + map_it = mapping.find(*it); + // It must exist because we populated the mapping just above. + assert(!map_it->second.empty()); + std::string objFile = obj_dir + map_it->second; + // replace $(ConfigurationName) in the object names + cmSystemTools::ReplaceString(objFile, this->GetCMakeCFGIntDir(), + configName.c_str()); + fout << objFile << "\n"; + } + cmCustomCommandLines commandLines; + commandLines.push_back(cmdl); + cmCustomCommand command(gt->Target->GetMakefile(), + outputs, empty, empty, + commandLines, + "Auto build dll exports", + "."); + commands.push_back(command); +} diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 69b4564..022e190 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -102,6 +102,10 @@ public: const std::string& config) const; void ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const; + + void AddSymbolExportCommand( + cmGeneratorTarget*, std::vector& commands, + std::string const& configName); protected: virtual void Generate(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index dc3a16d..e4eb014 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1081,6 +1081,16 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL); linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str()); } + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); + } + } switch(target.GetType()) { case cmTarget::UNKNOWN_LIBRARY: @@ -2015,7 +2025,30 @@ void cmLocalVisualStudio7Generator // Add pre-link event. tool = this->FortranProject? "VFPreLinkEventTool":"VCPreLinkEventTool"; event.Start(tool); - event.Write(target.GetPreLinkCommands()); + bool addedPrelink = false; + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + addedPrelink = true; + std::vector commands = + target.GetPreLinkCommands(); + cmGlobalVisualStudioGenerator* gg + = static_cast(this->GlobalGenerator); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); + gg->AddSymbolExportCommand( + gt, commands, configName); + event.Write(commands); + } + } + if (!addedPrelink) + { + event.Write(target.GetPreLinkCommands()); + } cmsys::auto_ptr pcc( this->MaybeCreateImplibDir(target, configName, this->FortranProject)); if(pcc.get()) diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 660027c..f807517 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -563,6 +563,57 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules useResponseFileForObjects, buildObjs, depends, useWatcomQuote); + // maybe create .def file from list of objects + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string name_of_def_file = + this->Target->GetSupportDirectory(); + name_of_def_file += std::string("/") + + this->Target->GetName(); + name_of_def_file += ".def"; + std::string cmd = cmSystemTools::GetCMakeCommand(); + cmd = this->Convert(cmd, cmLocalGenerator::NONE, + cmLocalGenerator::SHELL); + cmd += " -E __create_def "; + cmd += this->Convert(name_of_def_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + cmd += " "; + std::string objlist_file = name_of_def_file; + objlist_file += ".objs"; + cmd += this->Convert(objlist_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + real_link_commands.push_back(cmd); + // create a list of obj files for the -E __create_def to read + std::ofstream fout(objlist_file.c_str()); + for(std::vector::const_iterator i = this->Objects.begin(); + i != this->Objects.end(); ++i) + { + fout << *i << "\n"; + } + for(std::vector::const_iterator i = + this->ExternalObjects.begin(); + i != this->ExternalObjects.end(); ++i) + { + fout << *i << "\n"; + } + // now add the def file link flag + linkFlags += " "; + linkFlags += + this->Makefile->GetSafeDefinition("CMAKE_LINK_DEF_FILE_FLAG"); + linkFlags += this->Convert(name_of_def_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + linkFlags += " "; + } + } + cmLocalGenerator::RuleVariables vars; vars.TargetPDB = targetOutPathPDB.c_str(); diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 2fe53bf..4df0993 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -486,6 +486,24 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() linkPath, &genTarget, useWatcomQuote); + if(this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && target.GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string dllname = targetOutput; + std::string name_of_def_file + = target.GetSupportDirectory(); + name_of_def_file += "/" + target.GetName(); + name_of_def_file += ".def "; + vars["LINK_FLAGS"] += " /DEF:"; + vars["LINK_FLAGS"] += this->GetLocalGenerator() + ->ConvertToOutputFormat(name_of_def_file.c_str(), + cmLocalGenerator::SHELL); + } + } this->addPoolNinjaVariable("JOB_POOL_LINK", &target, vars); @@ -600,6 +618,43 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() } } + // maybe create .def file from list of objects + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string cmakeCommand = + this->GetLocalGenerator()->ConvertToOutputFormat( + cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); + std::string dllname = targetOutput; + std::string name_of_def_file + = target.GetSupportDirectory(); + name_of_def_file += "/" + target.GetName(); + name_of_def_file += ".def"; + std::string cmd = cmakeCommand; + cmd += " -E __create_def "; + cmd += this->GetLocalGenerator() + ->ConvertToOutputFormat(name_of_def_file.c_str(), + cmLocalGenerator::SHELL); + cmd += " "; + cmNinjaDeps objs = this->GetObjects(); + std::string obj_list_file = name_of_def_file; + obj_list_file += ".objs"; + cmd += this->GetLocalGenerator() + ->ConvertToOutputFormat(obj_list_file.c_str(), + cmLocalGenerator::SHELL); + preLinkCmdLines.push_back(cmd); + // create a list of obj files for the -E __create_def to read + std::ofstream fout(obj_list_file.c_str()); + for(cmNinjaDeps::iterator i=objs.begin(); i != objs.end(); ++i) + { + fout << *i << "\n"; + } + } + } // If we have any PRE_LINK commands, we need to go back to HOME_OUTPUT for // the link commands. if (!preLinkCmdLines.empty()) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index c7a13bc..8448431 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -429,6 +429,11 @@ void cmTarget::SetMakefile(cmMakefile* mf) { this->SetProperty("POSITION_INDEPENDENT_CODE", "True"); } + if(this->TargetTypeValue == cmTarget::SHARED_LIBRARY) + { + this->SetPropertyDefault("WINDOWS_EXPORT_ALL_SYMBOLS", 0); + } + if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY) { this->SetPropertyDefault("POSITION_INDEPENDENT_CODE", 0); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 12a1e42..03acf2f 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2466,6 +2466,17 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) "%(IgnoreSpecificDefaultLibraries)"); } + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); + } + } + this->LinkOptions[config] = pOptions.release(); return true; } @@ -2613,8 +2624,27 @@ void cmVisualStudio10TargetGenerator::WriteItemDefinitionGroups() void cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName) { - this->WriteEvent("PreLinkEvent", - this->Target->GetPreLinkCommands(), configName); + bool addedPrelink = false; + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + addedPrelink = true; + std::vector commands = + this->Target->GetPreLinkCommands(); + this->GlobalGenerator->AddSymbolExportCommand( + this->GeneratorTarget, commands, configName); + this->WriteEvent("PreLinkEvent", commands, configName); + } + } + if (!addedPrelink) + { + this->WriteEvent("PreLinkEvent", + this->Target->GetPreLinkCommands(), configName); + } this->WriteEvent("PreBuildEvent", this->Target->GetPreBuildCommands(), configName); this->WriteEvent("PostBuildEvent", diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 3ea2186..d97abcc 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -34,6 +34,10 @@ #include #include // required for atoi +#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) +// defined in binexplib.cxx +void DumpFile(const char* filename, FILE *fout); +#endif void CMakeCommandUsage(const char* program) { @@ -211,6 +215,38 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) return 0; } +#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) + else if(args[1] == "__create_def") + { + if(args.size() < 4) + { + std::cerr << + "__create_def Usage: -E __create_def outfile.def objlistfile\n"; + return 1; + } + FILE* fout = cmsys::SystemTools::Fopen(args[2].c_str(), "w+"); + if(!fout) + { + std::cerr << "could not open output .def file: " << args[2].c_str() + << "\n"; + return 1; + } + cmsys::ifstream fin(args[3].c_str(), + std::ios::in | std::ios::binary); + if(!fin) + { + std::cerr << "could not open object list file: " << args[3].c_str() + << "\n"; + return 1; + } + std::string objfile; + while(cmSystemTools::GetLineFromStream(fin, objfile)) + { + DumpFile(objfile.c_str(), fout); + } + return 0; + } +#endif // run include what you use command and then run the compile // command. This is an internal undocumented option and should // only be used by CMake itself when running iwyu. diff --git a/Tests/RunCMake/AutoExportDll/AutoExport.cmake b/Tests/RunCMake/AutoExportDll/AutoExport.cmake new file mode 100644 index 0000000..c426f66 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/AutoExport.cmake @@ -0,0 +1,5 @@ +project(autoexport) +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) +add_library(autoexport SHARED hello.cxx world.cxx foo.c) +add_executable(say say.cxx) +target_link_libraries(say autoexport) diff --git a/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt b/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt new file mode 100644 index 0000000..d483c2c --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt @@ -0,0 +1 @@ +^.*$ diff --git a/Tests/RunCMake/AutoExportDll/CMakeLists.txt b/Tests/RunCMake/AutoExportDll/CMakeLists.txt new file mode 100644 index 0000000..18dfd26 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.2) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake new file mode 100644 index 0000000..f4e08ec --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -0,0 +1,26 @@ +include(RunCMake) +set(RunCMake_TEST_NO_CLEAN TRUE) +set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/AutoExport-build") +# start by cleaning up because we don't clean up along the way +file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") +# configure the AutoExport test +run_cmake(AutoExport) +unset(RunCMake_TEST_OPTIONS) +# don't run this test on VS 6 as it is not supported +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 6|Watcom WMake|Borland Makefiles") + return() +endif() +# we build debug so the say.exe will be found in Debug/say.exe for +# Visual Studio generators +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio|Xcode") + set(INTDIR "Debug/") +endif() +# build AutoExport +run_cmake_command(AutoExportBuild ${CMAKE_COMMAND} --build + ${RunCMake_TEST_BINARY_DIR} --config Debug) +# run the executable that uses symbols from the dll +if(WIN32) + set(EXE_EXT ".exe") +endif() +run_cmake_command(AutoExportRun + ${RunCMake_BINARY_DIR}/AutoExport-build/${INTDIR}say${EXE_EXT}) diff --git a/Tests/RunCMake/AutoExportDll/foo.c b/Tests/RunCMake/AutoExportDll/foo.c new file mode 100644 index 0000000..4b1318b --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/foo.c @@ -0,0 +1,15 @@ +#ifdef _MSC_VER +#include "windows.h" +#else +#define WINAPI +#endif + +int WINAPI foo() +{ + return 10; +} + +int bar() +{ + return 5; +} diff --git a/Tests/RunCMake/AutoExportDll/hello.cxx b/Tests/RunCMake/AutoExportDll/hello.cxx new file mode 100644 index 0000000..ad83420 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/hello.cxx @@ -0,0 +1,13 @@ +#include +#include "hello.h" +int Hello::Data = 0; +void Hello::real() +{ + return; +} +void hello() +{ + std::cout << "hello"; +} +void Hello::operator delete[](void*) {}; +void Hello::operator delete(void*) {}; diff --git a/Tests/RunCMake/AutoExportDll/hello.h b/Tests/RunCMake/AutoExportDll/hello.h new file mode 100644 index 0000000..3749b97 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/hello.h @@ -0,0 +1,18 @@ +#ifndef _MSC_VER +#define winexport +#else +#ifdef autoexport_EXPORTS +#define winexport +#else +#define winexport __declspec(dllimport) +#endif +#endif + +class Hello +{ +public: + static winexport int Data; + void real(); + static void operator delete[](void*); + static void operator delete(void*); +}; diff --git a/Tests/RunCMake/AutoExportDll/say.cxx b/Tests/RunCMake/AutoExportDll/say.cxx new file mode 100644 index 0000000..655b3c2 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/say.cxx @@ -0,0 +1,37 @@ +#include +#include "hello.h" +#ifdef _MSC_VER +#include "windows.h" +#else +#define WINAPI +#endif + +extern "C" +{ +// test __cdecl stuff + int WINAPI foo(); +// test regular C + int bar(); +} + +// test c++ functions +// forward declare hello and world +void hello(); +void world(); + +int main() +{ + // test static data (needs declspec to work) + Hello::Data = 120; + Hello h; + h.real(); + hello(); + printf(" "); + world(); + printf("\n"); + foo(); + printf("\n"); + bar(); + printf("\n"); + return 0; +} diff --git a/Tests/RunCMake/AutoExportDll/world.cxx b/Tests/RunCMake/AutoExportDll/world.cxx new file mode 100644 index 0000000..8107949 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/world.cxx @@ -0,0 +1,6 @@ +#include + +void world() +{ + std::cout << "world"; +} diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index bc706d3..743ef4b 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -266,3 +266,6 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") endif() add_RunCMake_test_group(CPack "DEB;RPM") +# add a test to make sure symbols are exported from a shared library +# for MSVC compilers CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS property is used +add_RunCMake_test(AutoExportDll) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=11911857ed48cbd5e1c71a8c646e90e033cca99a commit 11911857ed48cbd5e1c71a8c646e90e033cca99a Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 14:08:52 2015 -0400 bindexplib: Build source as part of CMakeLib diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 6d012fd..069f283 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -430,6 +430,7 @@ if (WIN32) set(SRCS ${SRCS} cmCallVisualStudioMacro.cxx cmCallVisualStudioMacro.h + bindexplib.cxx ) if(NOT UNIX) diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index d523d22..0de0ddf 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -73,10 +73,12 @@ static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; +#include #include #include #include #include +#include /* * The names of the first group of possible symbol table storage classes @@ -188,7 +190,7 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, void DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, - FILE *fout, unsigned cSymbols) + FILE *fout, DWORD_PTR cSymbols) { unsigned i; PSTR stringTable; @@ -314,14 +316,15 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) *---------------------------------------------------------------------- */ void -DumpFile(LPSTR filename, FILE *fout) +DumpFile(const char* filename, FILE *fout) { HANDLE hFile; HANDLE hFileMapping; LPVOID lpFileBase; PIMAGE_DOS_HEADER dosHeader; - hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, + hFile = CreateFileW(cmsys::Encoding::ToWide(filename).c_str(), + GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hFile == INVALID_HANDLE_VALUE) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=12378c07b22829b19e1c7ef47a3cda4f213164ba commit 12378c07b22829b19e1c7ef47a3cda4f213164ba Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 14:03:51 2015 -0400 bindexplib: Wrap long lines diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 4a192c1..d523d22 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -128,7 +128,8 @@ const char* StrNStr(const char* start, const char* find, size_t &size) { *---------------------------------------------------------------------- */ int -HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) +HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, + PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) { static int fImportFlag = 0; /* The status is nor defined yet */ WORD i; @@ -143,12 +144,14 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER p i = 0; foundExports = 0; pDirectivesSectionHeader = 0; - for(i = 0; i < pImageFileHeader->NumberOfSections && !pDirectivesSectionHeader; i++) + for(i = 0; (i < pImageFileHeader->NumberOfSections && + !pDirectivesSectionHeader); i++) if (!strncmp((const char*)&pSectionHeaders[i].Name[0], ".drectve",8)) pDirectivesSectionHeader = &pSectionHeaders[i]; if (!pDirectivesSectionHeader) return 0; - rawdata=(const char*)pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; + rawdata=(const char*) + pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; if (!pDirectivesSectionHeader->PointerToRawData || !rawdata) return 0; size = pDirectivesSectionHeader->SizeOfRawData; @@ -183,7 +186,8 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER p *---------------------------------------------------------------------- */ void -DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, +DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, + PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout, unsigned cSymbols) { unsigned i; @@ -198,7 +202,8 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH stringTable = (PSTR)&pSymbolTable[cSymbols]; for ( i=0; i < cSymbols; i++ ) { - if (pSymbolTable->SectionNumber > 0 && ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { + if (pSymbolTable->SectionNumber > 0 && + ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { /* * The name of the Function entry points @@ -226,12 +231,14 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH symbol.compare(0, 4, vectorPrefix) && symbol.find("real@") == std::string::npos) { - SectChar = pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; + SectChar = + pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) { // Read only (i.e. constants) must be excluded fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); } else { - if ( pSymbolTable->Type || !(SectChar & IMAGE_SCN_MEM_READ)) { + if ( pSymbolTable->Type || + !(SectChar & IMAGE_SCN_MEM_READ)) { fprintf(fout, "\t%s\n", symbol.c_str()); } else { // printf(" strange symbol: %s \n",s); @@ -240,7 +247,8 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH } } } - else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && !pSymbolTable->Type && 0){ + else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && + !pSymbolTable->Type && 0) { /* * The IMPORT global variable entry points */ @@ -290,9 +298,11 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) pImageFileHeader->SizeOfOptionalHeader); - int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); + int haveExports = HaveExportedObjects(pImageFileHeader, + PCOFFSectionHeaders, fout); if (!haveExports) - DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, + fout, COFFSymbolCount); } /* @@ -341,7 +351,8 @@ DumpFile(LPSTR filename, FILE *fout) } /* Does it look like a i386 COFF OBJ file??? */ else if ( - ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) + ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || + (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) && (dosHeader->e_sp == 0) ) { /* http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bee7a4441c7d2a65041eeaee63131ea610c6ecc4 commit bee7a4441c7d2a65041eeaee63131ea610c6ecc4 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 14:03:43 2015 -0400 bindexplib: Drop code that CMake does not need diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index a86318f..4a192c1 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -79,55 +79,6 @@ static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; #include /* -*---------------------------------------------------------------------- -* GetArgcArgv -- -* -* Break up a line into argc argv -*---------------------------------------------------------------------- -*/ -int -GetArgcArgv(std::string &s, char **argv) -{ - int quote = 0; - int argc = 0; - std::string::iterator bp = s.begin(); - - while (1) { - while (isspace(*bp)) { - bp++; - } - if (*bp == '\n' || *bp == '\0') { - *bp = '\0'; - return argc; - } - if (*bp == '\"') { - quote = 1; - bp++; - } - argv[argc++] = &(*bp); - - while (*bp != '\0') { - if (quote) { - if (*bp == '\"') { - quote = 0; - *bp = '\0'; - bp++; - break; - } - bp++; - continue; - } - if (isspace(*bp)) { - *bp = '\0'; - bp++; - break; - } - bp++; - } - } -} - -/* * The names of the first group of possible symbol table storage classes */ char * SzStorageClass1[] = { @@ -145,216 +96,6 @@ char * SzStorageClass2[] = { }; /* -*---------------------------------------------------------------------- -* GetSZStorageClass -- -* -* Given a symbol storage class value, return a descriptive -* ASCII string -*---------------------------------------------------------------------- -*/ -PSTR -GetSZStorageClass(BYTE storageClass) -{ - if ( storageClass <= IMAGE_SYM_CLASS_BIT_FIELD ) - return SzStorageClass1[storageClass]; - else if ( (storageClass >= IMAGE_SYM_CLASS_BLOCK) - && (storageClass <= IMAGE_SYM_CLASS_WEAK_EXTERNAL) ) - return SzStorageClass2[storageClass-IMAGE_SYM_CLASS_BLOCK]; - else - return "???"; -} - -void AddHex(std::string& buf, long val, bool caps=false) -{ - buf += "0x"; - size_t len=buf.length(); - while (val) { - char hex = (char)(val & 16); - val = val >> 4; - if (hex<10) hex+='0'; - else if (caps) hex+='A'-10; - else hex+='a'-10; - buf.insert(len, hex, 1); - } -} - -/* -*---------------------------------------------------------------------- -* GetSectionName -- -* -* Used by DumpSymbolTable, it gives meaningful names to -* the non-normal section number. -* -* Results: -* A name is returned in buffer -*---------------------------------------------------------------------- -*/ -void -GetSectionName(PIMAGE_SYMBOL pSymbolTable, std::string& buffer) -{ - DWORD section; - - section = pSymbolTable->SectionNumber; - - switch ( (SHORT)section ) - { - case IMAGE_SYM_UNDEFINED: if (pSymbolTable->Value) buffer += "COMM"; else buffer += "UNDEF"; break; - case IMAGE_SYM_ABSOLUTE: buffer += "ABS "; break; - case IMAGE_SYM_DEBUG: buffer += "DEBUG"; break; - default: AddHex(buffer, section, true); - } -} - -/* -*---------------------------------------------------------------------- -* GetSectionCharacteristics -- -* -* Converts the Characteristics field of IMAGE_SECTION_HEADER -* to print. -* -* Results: -* A definiton of the section symbol type -*---------------------------------------------------------------------- -*/ -void -GetSectionCharacteristics(PIMAGE_SECTION_HEADER pSectionHeaders, int nSectNum, std::string &buffer) -{ - DWORD SectChar; - std::string TempBuf; - buffer.clear(); - if (nSectNum > 0) { - SectChar = pSectionHeaders[nSectNum-1].Characteristics; - - buffer = " "; - AddHex(buffer, SectChar); - if (SectChar & IMAGE_SCN_CNT_CODE) buffer += " Code"; - else if (SectChar & IMAGE_SCN_CNT_INITIALIZED_DATA) buffer += " Init. data"; - else if (SectChar & IMAGE_SCN_CNT_UNINITIALIZED_DATA ) buffer += " UnInit data"; - else buffer += " Unknow type"; - - if (SectChar & IMAGE_SCN_MEM_READ) { - buffer += " Read"; - if (SectChar & IMAGE_SCN_MEM_WRITE) - buffer += " and Write"; - else buffer += " only"; - } - else if (SectChar & IMAGE_SCN_MEM_WRITE) - buffer +=" Write only"; - - } -} - -/* -*---------------------------------------------------------------------- -* DumpSymbolTable -- -* -* Dumps a COFF symbol table from an EXE or OBJ. We only use -* it to dump tables from OBJs. -*---------------------------------------------------------------------- -*/ -void -DumpSymbolTable(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout, unsigned cSymbols) -{ - unsigned i; - PSTR stringTable; - std::string sectionName; - std::string sectionCharacter; - int iSectNum; - - fprintf(fout, "Symbol Table - %X entries (* = auxillary symbol)\n", - cSymbols); - - fprintf(fout, - "Indx Name Value Section cAux Type Storage Character\n" - "---- -------------------- -------- ---------- ----- ------- -------- ---------\n"); - - /* - * The string table apparently starts right after the symbol table - */ - stringTable = (PSTR)&pSymbolTable[cSymbols]; - - for ( i=0; i < cSymbols; i++ ) { - fprintf(fout, "%04X ", i); - if ( pSymbolTable->N.Name.Short != 0 ) - fprintf(fout, "%-20.8s", pSymbolTable->N.ShortName); - else - fprintf(fout, "%-20s", stringTable + pSymbolTable->N.Name.Long); - - fprintf(fout, " %08X", pSymbolTable->Value); - - iSectNum = pSymbolTable->SectionNumber; - GetSectionName(pSymbolTable, sectionName); - fprintf(fout, " sect:%s aux:%X type:%02X st:%s", - sectionName.c_str(), - pSymbolTable->NumberOfAuxSymbols, - pSymbolTable->Type, - GetSZStorageClass(pSymbolTable->StorageClass) ); - - GetSectionCharacteristics(pSectionHeaders,iSectNum,sectionCharacter); - fprintf(fout," hc: %s \n",sectionCharacter.c_str()); -#if 0 - if ( pSymbolTable->NumberOfAuxSymbols ) - DumpAuxSymbols(pSymbolTable); -#endif - - /* - * Take into account any aux symbols - */ - i += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable++; - } -} - -/* -*---------------------------------------------------------------------- -* DumpExternals -- -* -* Dumps a COFF symbol table from an EXE or OBJ. We only use -* it to dump tables from OBJs. -*---------------------------------------------------------------------- -*/ -void -DumpExternals(PIMAGE_SYMBOL pSymbolTable, FILE *fout, unsigned cSymbols) -{ - unsigned i; - PSTR stringTable; - std::string symbol; - - /* - * The string table apparently starts right after the symbol table - */ - stringTable = (PSTR)&pSymbolTable[cSymbols]; - - for ( i=0; i < cSymbols; i++ ) { - if (pSymbolTable->SectionNumber > 0 && pSymbolTable->Type == 0x20) { - if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { - if (pSymbolTable->N.Name.Short != 0) { - symbol = ""; - symbol.insert(0, (const char *)(pSymbolTable->N.ShortName), 8); - } else { - symbol = stringTable + pSymbolTable->N.Name.Long; - } - std::string::size_type posAt = symbol.find('@'); - if (posAt != std::string::npos) symbol.erase(posAt); -#ifndef _MSC_VER - fprintf(fout, "\t%s\n", symbol.c_str()); -#else - fprintf(fout, "\t%s\n", symbol.c_str()+1); -#endif - } - } - - /* - * Take into account any aux symbols - */ - i += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable++; - } -} - -/* + * Utility func, strstr with size + */ const char* StrNStr(const char* start, const char* find, size_t &size) { @@ -443,7 +184,7 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER p */ void DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, - FILE *fout, unsigned cSymbols, int fort) + FILE *fout, unsigned cSymbols) { unsigned i; PSTR stringTable; @@ -470,13 +211,7 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH } while (isspace(symbol[0])) symbol.erase(0,1); -#ifdef _MSC_VER if (symbol[0] == '_') symbol.erase(0,1); - if (fort) { - std::string::size_type posAt = symbol.find('@'); - if (posAt != std::string::npos) symbol.erase(posAt); - } -#endif if (fImportFlag) { fImportFlag = 0; fprintf(fout,"EXPORTS \n"); @@ -485,11 +220,6 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH Check whether it is "Scalar deleting destructor" and "Vector deleting destructor" */ - /* - if (!strstr(s,"@@UAEPAXI at Z") && !strstr(s,"@@QAEPAXI at Z") && - !strstr(s,"@AEPAXI at Z") && !strstr(s,"AEPAXI at Z") && - !strstr(s,"real@")) - */ const char *scalarPrefix = "??_G"; const char *vectorPrefix = "??_E"; if (symbol.compare(0, 4, scalarPrefix) && @@ -544,7 +274,7 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH *---------------------------------------------------------------------- */ void -DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) +DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) { PIMAGE_SYMBOL PCOFFSymbolTable; PIMAGE_SECTION_HEADER PCOFFSectionHeaders; @@ -560,13 +290,9 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) pImageFileHeader->SizeOfOptionalHeader); - if (full) { - DumpSymbolTable(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); - } else { - int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); - if (!haveExports) - DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount, fort); - } + int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); + if (!haveExports) + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); } /* @@ -578,7 +304,7 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) *---------------------------------------------------------------------- */ void -DumpFile(LPSTR filename, FILE *fout, int full, int fort) +DumpFile(LPSTR filename, FILE *fout) { HANDLE hFile; HANDLE hFileMapping; @@ -610,12 +336,8 @@ DumpFile(LPSTR filename, FILE *fout, int full, int fort) dosHeader = (PIMAGE_DOS_HEADER)lpFileBase; if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) { -#if 0 - DumpExeFile( dosHeader ); -#else fprintf(stderr, "File is an executable. I don't dump those.\n"); return; -#endif } /* Does it look like a i386 COFF OBJ file??? */ else if ( @@ -627,7 +349,7 @@ DumpFile(LPSTR filename, FILE *fout, int full, int fort) * really checking for IMAGE_FILE_HEADER.Machine == i386 (0x14C) * and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0; */ - DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout, full, fort); + DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout); } else { printf("unrecognized file format\n"); } @@ -635,123 +357,3 @@ DumpFile(LPSTR filename, FILE *fout, int full, int fort) CloseHandle(hFileMapping); CloseHandle(hFile); } - -void -main(int argc, char **argv) -{ - std::string cmdline; - int i, arg; - FILE *fout; - int full = 0; - int fort = 0; - char *dllname = ""; - char *outfile = NULL; - - if (argc < 3) { -Usage: - fprintf(stderr, "Usage: %s ?-o outfile? ?-f(ull)? ..\n", argv[0]); - exit(1); - } - - arg = 1; - while (argv[arg][0] == '-') { - if (strcmp(argv[arg], "--") == 0) { - arg++; - break; - } else if (strcmp(argv[arg], "-f") == 0) { - full = 1; - } else if (strcmp(argv[arg], "-x") == 0) { - fort = 1; - } else if (strcmp(argv[arg], "-o") == 0) { - arg++; - if (arg == argc) { - goto Usage; - } - outfile = argv[arg]; - } - arg++; - } - if (arg == argc) { - goto Usage; - } - - if (outfile) { - fout = fopen(outfile, "w+"); - if (fout == NULL) { - fprintf(stderr, "Unable to open \'%s\' for writing:\n", - argv[arg]); - perror(""); - exit(1); - } - } else { - fout = stdout; - } - - if (! full) { - dllname = argv[arg]; - arg++; - if (arg == argc) { - goto Usage; - } - fprintf(fout, "LIBRARY %s\n", dllname); -#ifndef _X86_ - fprintf(fout, "CODE PRELOAD MOVEABLE DISCARDABLE\n"); - fprintf(fout, "DATA PRELOAD MOVEABLE MULTIPLE\n\n"); -#endif - } - - for (; arg < argc; arg++) { - WIN32_FIND_DATA FindFileData; - HANDLE SearchFile; - if (argv[arg][0] == '@') { - std::ifstream fargs(&argv[arg][1]); - if (!fargs) { - fprintf(stderr, "Unable to open \'%s\' for reading:\n", - argv[arg]); - perror(""); - exit(1); - } - char *fargv[1000]; - for (i = 0; i < arg; i++) { - cmdline += argv[i]; - fargv[i] = argv[i]; - } - std::string line; - std::getline(fargs, line); - cmdline += line; - fprintf(stderr, "%s\n", line.c_str()); - i += GetArgcArgv(line, &fargv[i]); - argc = i; - argv = fargv; - } - /* - * Argument can contain the wildcard names - */ - SearchFile = FindFirstFile(argv[arg],&FindFileData); - if (SearchFile == INVALID_HANDLE_VALUE){ - fprintf(stderr, "Unable to find \'%s\' for reading:\n", - argv[arg]); - exit(1); - } - else { - /* - * Since WIN32_FIND_DATA has no path information one has to extract it himself. - */ - TCHAR *filename = argv[arg]; - TCHAR path[2048]; - size_t i = strlen(filename); - i--; - while( filename[i] != '\\' && filename[i] != '/' && i >=0) i--; - do - { - if (i >= 0) strncpy( path, filename, i+1); /* Generate the 'path' info */ - path[i+1] = '\0'; - DumpFile(strcat(path, FindFileData.cFileName), fout, full, fort); - } while (FindNextFile(SearchFile,&FindFileData)); - - - FindClose(SearchFile); - } - } - exit(0); -} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e86309701d5d613a74fc8153c67a142c449c1d37 commit e86309701d5d613a74fc8153c67a142c449c1d37 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 13:27:03 2015 -0400 bindexplib: Add copyright/license notice block diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 6f9605c..a86318f 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -1,3 +1,21 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2015 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +/*------------------------------------------------------------------------- + Portions of this source have been derived from the 'bindexplib' tool + provided by the CERN ROOT Data Analysis Framework project (root.cern.ch). + Permission has been granted by Pere Mato to distribute + this derived work under the CMake license. +-------------------------------------------------------------------------*/ + /* *---------------------------------------------------------------------- * Program: dumpexts.exe http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3ef9d2461099cbfa69689df2ad84aefcbf38e34a commit 3ef9d2461099cbfa69689df2ad84aefcbf38e34a Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Fri Jun 26 13:26:52 2015 -0400 bindexplib: Import original implementation from CERN Download the original implementation provided by root.cern.ch with the following session: $ wget https://raw.githubusercontent.com/gordonwatts/root-vc-port/f0ee59af/build/win/bindexplib/bindexplib.cxx $ sha1sum bindexplib.cxx fa6efafb2c58a0644bd0f6a56fe02ee0d55c7fcd bindexplib.cxx $ sed -i 's/ *$//;s/'$'\t''/ /' bindexplib.cxx diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx new file mode 100644 index 0000000..6f9605c --- /dev/null +++ b/Source/bindexplib.cxx @@ -0,0 +1,739 @@ +/* +*---------------------------------------------------------------------- +* Program: dumpexts.exe +* Author: Gordon Chaffee +* +* History: The real functionality of this file was written by +* Matt Pietrek in 1993 in his pedump utility. I've +* modified it to dump the externals in a bunch of object +* files to create a .def file. +* +* Notes: Visual C++ puts an underscore before each exported symbol. +* This file removes them. I don't know if this is a problem +* this other compilers. If _MSC_VER is defined, +* the underscore is removed. If not, it isn't. To get a +* full dump of an object file, use the -f option. This can +* help determine the something that may be different with a +* compiler other than Visual C++. +* ====================================== +* Corrections (Axel 2006-04-04): +* Conversion to C++. Mostly. +* + * Extension (Axel 2006-03-15) + * As soon as an object file contains an /EXPORT directive (which + * is generated by the compiler when a symbol is declared as + * declspec(dllexport)) no to-be-exported symbols are printed, + * as the linker will see these directives, and if those directives + * are present we only export selectively (i.e. we trust the + * programmer). + * + * ====================================== +* ====================================== +* Corrections (Valery Fine 23/02/98): +* +* The "(vector) deleting destructor" MUST not be exported +* To recognize it the following test are introduced: +* "@@UAEPAXI at Z" scalar deleting dtor +* "@@QAEPAXI at Z" vector deleting dtor +* "AEPAXI at Z" vector deleting dtor with thunk adjustor +* ====================================== +* Corrections (Valery Fine 12/02/97): +* +* It created a wrong EXPORTS for the global pointers and constants. +* The Section Header has been involved to discover the missing information +* Now the pointers are correctly supplied supplied with "DATA" descriptor +* the constants with no extra descriptor. +* +* Corrections (Valery Fine 16/09/96): +* +* It didn't work for C++ code with global variables and class definitons +* The DumpExternalObject function has been introduced to generate .DEF file +* +* Author: Valery Fine 16/09/96 (E-mail: fine at vxcern.cern.ch) +*---------------------------------------------------------------------- +*/ + +static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; + +#include +#include +#include +#include + +/* +*---------------------------------------------------------------------- +* GetArgcArgv -- +* +* Break up a line into argc argv +*---------------------------------------------------------------------- +*/ +int +GetArgcArgv(std::string &s, char **argv) +{ + int quote = 0; + int argc = 0; + std::string::iterator bp = s.begin(); + + while (1) { + while (isspace(*bp)) { + bp++; + } + if (*bp == '\n' || *bp == '\0') { + *bp = '\0'; + return argc; + } + if (*bp == '\"') { + quote = 1; + bp++; + } + argv[argc++] = &(*bp); + + while (*bp != '\0') { + if (quote) { + if (*bp == '\"') { + quote = 0; + *bp = '\0'; + bp++; + break; + } + bp++; + continue; + } + if (isspace(*bp)) { + *bp = '\0'; + bp++; + break; + } + bp++; + } + } +} + +/* +* The names of the first group of possible symbol table storage classes +*/ +char * SzStorageClass1[] = { + "NULL","AUTOMATIC","EXTERNAL","STATIC","REGISTER","EXTERNAL_DEF","LABEL", + "UNDEFINED_LABEL","MEMBER_OF_STRUCT","ARGUMENT","STRUCT_TAG", + "MEMBER_OF_UNION","UNION_TAG","TYPE_DEFINITION","UNDEFINED_STATIC", + "ENUM_TAG","MEMBER_OF_ENUM","REGISTER_PARAM","BIT_FIELD" +}; + +/* +* The names of the second group of possible symbol table storage classes +*/ +char * SzStorageClass2[] = { + "BLOCK","FUNCTION","END_OF_STRUCT","FILE","SECTION","WEAK_EXTERNAL" +}; + +/* +*---------------------------------------------------------------------- +* GetSZStorageClass -- +* +* Given a symbol storage class value, return a descriptive +* ASCII string +*---------------------------------------------------------------------- +*/ +PSTR +GetSZStorageClass(BYTE storageClass) +{ + if ( storageClass <= IMAGE_SYM_CLASS_BIT_FIELD ) + return SzStorageClass1[storageClass]; + else if ( (storageClass >= IMAGE_SYM_CLASS_BLOCK) + && (storageClass <= IMAGE_SYM_CLASS_WEAK_EXTERNAL) ) + return SzStorageClass2[storageClass-IMAGE_SYM_CLASS_BLOCK]; + else + return "???"; +} + +void AddHex(std::string& buf, long val, bool caps=false) +{ + buf += "0x"; + size_t len=buf.length(); + while (val) { + char hex = (char)(val & 16); + val = val >> 4; + if (hex<10) hex+='0'; + else if (caps) hex+='A'-10; + else hex+='a'-10; + buf.insert(len, hex, 1); + } +} + +/* +*---------------------------------------------------------------------- +* GetSectionName -- +* +* Used by DumpSymbolTable, it gives meaningful names to +* the non-normal section number. +* +* Results: +* A name is returned in buffer +*---------------------------------------------------------------------- +*/ +void +GetSectionName(PIMAGE_SYMBOL pSymbolTable, std::string& buffer) +{ + DWORD section; + + section = pSymbolTable->SectionNumber; + + switch ( (SHORT)section ) + { + case IMAGE_SYM_UNDEFINED: if (pSymbolTable->Value) buffer += "COMM"; else buffer += "UNDEF"; break; + case IMAGE_SYM_ABSOLUTE: buffer += "ABS "; break; + case IMAGE_SYM_DEBUG: buffer += "DEBUG"; break; + default: AddHex(buffer, section, true); + } +} + +/* +*---------------------------------------------------------------------- +* GetSectionCharacteristics -- +* +* Converts the Characteristics field of IMAGE_SECTION_HEADER +* to print. +* +* Results: +* A definiton of the section symbol type +*---------------------------------------------------------------------- +*/ +void +GetSectionCharacteristics(PIMAGE_SECTION_HEADER pSectionHeaders, int nSectNum, std::string &buffer) +{ + DWORD SectChar; + std::string TempBuf; + buffer.clear(); + if (nSectNum > 0) { + SectChar = pSectionHeaders[nSectNum-1].Characteristics; + + buffer = " "; + AddHex(buffer, SectChar); + if (SectChar & IMAGE_SCN_CNT_CODE) buffer += " Code"; + else if (SectChar & IMAGE_SCN_CNT_INITIALIZED_DATA) buffer += " Init. data"; + else if (SectChar & IMAGE_SCN_CNT_UNINITIALIZED_DATA ) buffer += " UnInit data"; + else buffer += " Unknow type"; + + if (SectChar & IMAGE_SCN_MEM_READ) { + buffer += " Read"; + if (SectChar & IMAGE_SCN_MEM_WRITE) + buffer += " and Write"; + else buffer += " only"; + } + else if (SectChar & IMAGE_SCN_MEM_WRITE) + buffer +=" Write only"; + + } +} + +/* +*---------------------------------------------------------------------- +* DumpSymbolTable -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpSymbolTable(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout, unsigned cSymbols) +{ + unsigned i; + PSTR stringTable; + std::string sectionName; + std::string sectionCharacter; + int iSectNum; + + fprintf(fout, "Symbol Table - %X entries (* = auxillary symbol)\n", + cSymbols); + + fprintf(fout, + "Indx Name Value Section cAux Type Storage Character\n" + "---- -------------------- -------- ---------- ----- ------- -------- ---------\n"); + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) { + fprintf(fout, "%04X ", i); + if ( pSymbolTable->N.Name.Short != 0 ) + fprintf(fout, "%-20.8s", pSymbolTable->N.ShortName); + else + fprintf(fout, "%-20s", stringTable + pSymbolTable->N.Name.Long); + + fprintf(fout, " %08X", pSymbolTable->Value); + + iSectNum = pSymbolTable->SectionNumber; + GetSectionName(pSymbolTable, sectionName); + fprintf(fout, " sect:%s aux:%X type:%02X st:%s", + sectionName.c_str(), + pSymbolTable->NumberOfAuxSymbols, + pSymbolTable->Type, + GetSZStorageClass(pSymbolTable->StorageClass) ); + + GetSectionCharacteristics(pSectionHeaders,iSectNum,sectionCharacter); + fprintf(fout," hc: %s \n",sectionCharacter.c_str()); +#if 0 + if ( pSymbolTable->NumberOfAuxSymbols ) + DumpAuxSymbols(pSymbolTable); +#endif + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* +*---------------------------------------------------------------------- +* DumpExternals -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpExternals(PIMAGE_SYMBOL pSymbolTable, FILE *fout, unsigned cSymbols) +{ + unsigned i; + PSTR stringTable; + std::string symbol; + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) { + if (pSymbolTable->SectionNumber > 0 && pSymbolTable->Type == 0x20) { + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + if (pSymbolTable->N.Name.Short != 0) { + symbol = ""; + symbol.insert(0, (const char *)(pSymbolTable->N.ShortName), 8); + } else { + symbol = stringTable + pSymbolTable->N.Name.Long; + } + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) symbol.erase(posAt); +#ifndef _MSC_VER + fprintf(fout, "\t%s\n", symbol.c_str()); +#else + fprintf(fout, "\t%s\n", symbol.c_str()+1); +#endif + } + } + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* ++ * Utility func, strstr with size ++ */ +const char* StrNStr(const char* start, const char* find, size_t &size) { + size_t len; + const char* hint; + + if (!start || !find || !size) { + size = 0; + return 0; + } + len = strlen(find); + + while (hint = (const char*) memchr(start, find[0], size-len+1)) { + size -= (hint - start); + if (!strncmp(hint, find, len)) + return hint; + start = hint + 1; + } + + size = 0; + return 0; +} + +/* + *---------------------------------------------------------------------- + * HaveExportedObjects -- + * + * Returns >0 if export directives (declspec(dllexport)) exist. + * + *---------------------------------------------------------------------- + */ +int +HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) +{ + static int fImportFlag = 0; /* The status is nor defined yet */ + WORD i; + size_t size; + char foundExports; + const char * rawdata; + + PIMAGE_SECTION_HEADER pDirectivesSectionHeader; + + if (fImportFlag) return 1; + + i = 0; + foundExports = 0; + pDirectivesSectionHeader = 0; + for(i = 0; i < pImageFileHeader->NumberOfSections && !pDirectivesSectionHeader; i++) + if (!strncmp((const char*)&pSectionHeaders[i].Name[0], ".drectve",8)) + pDirectivesSectionHeader = &pSectionHeaders[i]; + if (!pDirectivesSectionHeader) return 0; + + rawdata=(const char*)pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; + if (!pDirectivesSectionHeader->PointerToRawData || !rawdata) return 0; + + size = pDirectivesSectionHeader->SizeOfRawData; + const char* posImportFlag = rawdata; + while ((posImportFlag = StrNStr(posImportFlag, " /EXPORT:", size))) { + const char* lookingForDict = posImportFlag + 9; + if (!strncmp(lookingForDict, "_G__cpp_",8) || + !strncmp(lookingForDict, "_G__set_cpp_",12)) { + posImportFlag = lookingForDict; + continue; + } + + const char* lookingForDATA = posImportFlag + 9; + while (*(++lookingForDATA) && *lookingForDATA != ' '); + lookingForDATA -= 5; + // ignore DATA exports + if (strncmp(lookingForDATA, ",DATA", 5)) break; + posImportFlag = lookingForDATA + 5; + } + fImportFlag = (int)posImportFlag; + return fImportFlag; +} + + + +/* + *---------------------------------------------------------------------- +* DumpExternalsObjects -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, + FILE *fout, unsigned cSymbols, int fort) +{ + unsigned i; + PSTR stringTable; + std::string symbol; + DWORD SectChar; + static int fImportFlag = -1; /* The status is nor defined yet */ + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) { + if (pSymbolTable->SectionNumber > 0 && ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + /* + * The name of the Function entry points + */ + if (pSymbolTable->N.Name.Short != 0) { + symbol = ""; + symbol.insert(0, (const char *)pSymbolTable->N.ShortName, 8); + } else { + symbol = stringTable + pSymbolTable->N.Name.Long; + } + + while (isspace(symbol[0])) symbol.erase(0,1); +#ifdef _MSC_VER + if (symbol[0] == '_') symbol.erase(0,1); + if (fort) { + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) symbol.erase(posAt); + } +#endif + if (fImportFlag) { + fImportFlag = 0; + fprintf(fout,"EXPORTS \n"); + } + /* + Check whether it is "Scalar deleting destructor" and + "Vector deleting destructor" + */ + /* + if (!strstr(s,"@@UAEPAXI at Z") && !strstr(s,"@@QAEPAXI at Z") && + !strstr(s,"@AEPAXI at Z") && !strstr(s,"AEPAXI at Z") && + !strstr(s,"real@")) + */ + const char *scalarPrefix = "??_G"; + const char *vectorPrefix = "??_E"; + if (symbol.compare(0, 4, scalarPrefix) && + symbol.compare(0, 4, vectorPrefix) && + symbol.find("real@") == std::string::npos) + { + SectChar = pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; + if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) { + // Read only (i.e. constants) must be excluded + fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); + } else { + if ( pSymbolTable->Type || !(SectChar & IMAGE_SCN_MEM_READ)) { + fprintf(fout, "\t%s\n", symbol.c_str()); + } else { + // printf(" strange symbol: %s \n",s); + } + } + } + } + } + else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && !pSymbolTable->Type && 0){ + /* + * The IMPORT global variable entry points + */ + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + symbol = stringTable + pSymbolTable->N.Name.Long; + while (isspace(symbol[0])) symbol.erase(0,1); + if (symbol[0] == '_') symbol.erase(0,1); + if (!fImportFlag) { + fImportFlag = 1; + fprintf(fout,"IMPORTS \n"); + } + fprintf(fout, "\t%s DATA \n", symbol.c_str()+1); + } + } + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* +*---------------------------------------------------------------------- +* DumpObjFile -- +* +* Dump an object file--either a full listing or just the exported +* symbols. +*---------------------------------------------------------------------- +*/ +void +DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) +{ + PIMAGE_SYMBOL PCOFFSymbolTable; + PIMAGE_SECTION_HEADER PCOFFSectionHeaders; + DWORD_PTR COFFSymbolCount; + + PCOFFSymbolTable = (PIMAGE_SYMBOL) + ((DWORD_PTR)pImageFileHeader + pImageFileHeader->PointerToSymbolTable); + COFFSymbolCount = pImageFileHeader->NumberOfSymbols; + + PCOFFSectionHeaders = (PIMAGE_SECTION_HEADER) + ((DWORD_PTR)pImageFileHeader + + IMAGE_SIZEOF_FILE_HEADER + + pImageFileHeader->SizeOfOptionalHeader); + + + if (full) { + DumpSymbolTable(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); + } else { + int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); + if (!haveExports) + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount, fort); + } +} + +/* +*---------------------------------------------------------------------- +* DumpFile -- +* +* Open up a file, memory map it, and call the appropriate +* dumping routine +*---------------------------------------------------------------------- +*/ +void +DumpFile(LPSTR filename, FILE *fout, int full, int fort) +{ + HANDLE hFile; + HANDLE hFileMapping; + LPVOID lpFileBase; + PIMAGE_DOS_HEADER dosHeader; + + hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + + if (hFile == INVALID_HANDLE_VALUE) { + fprintf(stderr, "Couldn't open file with CreateFile()\n"); + return; + } + + hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); + if (hFileMapping == 0) { + CloseHandle(hFile); + fprintf(stderr, "Couldn't open file mapping with CreateFileMapping()\n"); + return; + } + + lpFileBase = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0); + if (lpFileBase == 0) { + CloseHandle(hFileMapping); + CloseHandle(hFile); + fprintf(stderr, "Couldn't map view of file with MapViewOfFile()\n"); + return; + } + + dosHeader = (PIMAGE_DOS_HEADER)lpFileBase; + if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) { +#if 0 + DumpExeFile( dosHeader ); +#else + fprintf(stderr, "File is an executable. I don't dump those.\n"); + return; +#endif + } + /* Does it look like a i386 COFF OBJ file??? */ + else if ( + ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) + && (dosHeader->e_sp == 0) + ) { + /* + * The two tests above aren't what they look like. They're + * really checking for IMAGE_FILE_HEADER.Machine == i386 (0x14C) + * and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0; + */ + DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout, full, fort); + } else { + printf("unrecognized file format\n"); + } + UnmapViewOfFile(lpFileBase); + CloseHandle(hFileMapping); + CloseHandle(hFile); +} + +void +main(int argc, char **argv) +{ + std::string cmdline; + int i, arg; + FILE *fout; + int full = 0; + int fort = 0; + char *dllname = ""; + char *outfile = NULL; + + if (argc < 3) { +Usage: + fprintf(stderr, "Usage: %s ?-o outfile? ?-f(ull)? ..\n", argv[0]); + exit(1); + } + + arg = 1; + while (argv[arg][0] == '-') { + if (strcmp(argv[arg], "--") == 0) { + arg++; + break; + } else if (strcmp(argv[arg], "-f") == 0) { + full = 1; + } else if (strcmp(argv[arg], "-x") == 0) { + fort = 1; + } else if (strcmp(argv[arg], "-o") == 0) { + arg++; + if (arg == argc) { + goto Usage; + } + outfile = argv[arg]; + } + arg++; + } + if (arg == argc) { + goto Usage; + } + + if (outfile) { + fout = fopen(outfile, "w+"); + if (fout == NULL) { + fprintf(stderr, "Unable to open \'%s\' for writing:\n", + argv[arg]); + perror(""); + exit(1); + } + } else { + fout = stdout; + } + + if (! full) { + dllname = argv[arg]; + arg++; + if (arg == argc) { + goto Usage; + } + fprintf(fout, "LIBRARY %s\n", dllname); +#ifndef _X86_ + fprintf(fout, "CODE PRELOAD MOVEABLE DISCARDABLE\n"); + fprintf(fout, "DATA PRELOAD MOVEABLE MULTIPLE\n\n"); +#endif + } + + for (; arg < argc; arg++) { + WIN32_FIND_DATA FindFileData; + HANDLE SearchFile; + if (argv[arg][0] == '@') { + std::ifstream fargs(&argv[arg][1]); + if (!fargs) { + fprintf(stderr, "Unable to open \'%s\' for reading:\n", + argv[arg]); + perror(""); + exit(1); + } + char *fargv[1000]; + for (i = 0; i < arg; i++) { + cmdline += argv[i]; + fargv[i] = argv[i]; + } + std::string line; + std::getline(fargs, line); + cmdline += line; + fprintf(stderr, "%s\n", line.c_str()); + i += GetArgcArgv(line, &fargv[i]); + argc = i; + argv = fargv; + } + /* + * Argument can contain the wildcard names + */ + SearchFile = FindFirstFile(argv[arg],&FindFileData); + if (SearchFile == INVALID_HANDLE_VALUE){ + fprintf(stderr, "Unable to find \'%s\' for reading:\n", + argv[arg]); + exit(1); + } + else { + /* + * Since WIN32_FIND_DATA has no path information one has to extract it himself. + */ + TCHAR *filename = argv[arg]; + TCHAR path[2048]; + size_t i = strlen(filename); + i--; + while( filename[i] != '\\' && filename[i] != '/' && i >=0) i--; + do + { + if (i >= 0) strncpy( path, filename, i+1); /* Generate the 'path' info */ + path[i+1] = '\0'; + DumpFile(strcat(path, FindFileData.cFileName), fout, full, fort); + } while (FindNextFile(SearchFile,&FindFileData)); + + + FindClose(SearchFile); + } + } + exit(0); +} ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From bill.hoffman at kitware.com Fri Jun 26 16:49:27 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Fri, 26 Jun 2015 16:49:27 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-707-gfbde295 Message-ID: <20150626204927.8F4C1AF295@public.kitware.com> 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 fbde295974f8dd6a04bde1a48e2cd43034b3af98 (commit) via 8ccdfb754a5f3b4c74b7725677bf0900785fa47d (commit) from 24fad5b0f0ddd90bd6fd6c47e263527e99299dd3 (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=fbde295974f8dd6a04bde1a48e2cd43034b3af98 commit fbde295974f8dd6a04bde1a48e2cd43034b3af98 Merge: 24fad5b 8ccdfb7 Author: Bill Hoffman AuthorDate: Fri Jun 26 16:49:26 2015 -0400 Commit: CMake Topic Stage CommitDate: Fri Jun 26 16:49:26 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 8ccdfb75 Add clean to the export test and change the obj list name to avoid removal. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ccdfb754a5f3b4c74b7725677bf0900785fa47d commit 8ccdfb754a5f3b4c74b7725677bf0900785fa47d Author: Bill Hoffman AuthorDate: Fri Jun 26 16:48:57 2015 -0400 Commit: Bill Hoffman CommitDate: Fri Jun 26 16:48:57 2015 -0400 Add clean to the export test and change the obj list name to avoid removal. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 61cec6c..bdc3c98 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -917,7 +917,7 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( std::string objs_file = gt->Target->GetName(); objs_file += ".dir/" + configName; cmSystemTools::MakeDirectory(objs_file.c_str()); - objs_file += "/exportall.def.objs"; + objs_file += "/objects.txt"; cmdl.push_back(objs_file); std::ofstream fout(objs_file.c_str()); if(!fout) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 03acf2f..024a1c5 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2473,7 +2473,7 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) const char *autodef = this->Target->GetProperty(autodef_prop); if (autodef && *autodef) { - linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)exportall.def"); } } diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake index f4e08ec..8a2a174 100644 --- a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -17,7 +17,7 @@ if("${RunCMake_GENERATOR}" MATCHES "Visual Studio|Xcode") endif() # build AutoExport run_cmake_command(AutoExportBuild ${CMAKE_COMMAND} --build - ${RunCMake_TEST_BINARY_DIR} --config Debug) + ${RunCMake_TEST_BINARY_DIR} --config Debug --clean-first) # run the executable that uses symbols from the dll if(WIN32) set(EXE_EXT ".exe") ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudioGenerator.cxx | 2 +- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sat Jun 27 00:01:07 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sat, 27 Jun 2015 00:01:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-276-gb702415 Message-ID: <20150627040107.DEE1AB038F@public.kitware.com> 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, master has been updated via b702415d3a14cc2c561e4327ca27d720bbec886a (commit) from 17183f9250327284d5370f8d0e78e00e00098b74 (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=b702415d3a14cc2c561e4327ca27d720bbec886a commit b702415d3a14cc2c561e4327ca27d720bbec886a Author: Kitware Robot AuthorDate: Sat Jun 27 00:01:05 2015 -0400 Commit: Kitware Robot CommitDate: Sat Jun 27 00:01:05 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 951ba1c..bac2eaf 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150626) +set(CMake_VERSION_PATCH 20150627) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Sat Jun 27 17:33:07 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Sat, 27 Jun 2015 17:33:07 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-710-g26d88d3 Message-ID: <20150627213307.4BAF2B045A@public.kitware.com> 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 26d88d323f21fa292b6a2990f3522e7f87ff0787 (commit) via 7998915e3bf8aa18940d488ec3238b195615723a (commit) via 003099bc92fd3f0cdd97e7524900f28a84db2a5a (commit) from fbde295974f8dd6a04bde1a48e2cd43034b3af98 (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=26d88d323f21fa292b6a2990f3522e7f87ff0787 commit 26d88d323f21fa292b6a2990f3522e7f87ff0787 Merge: fbde295 7998915 Author: Bill Hoffman AuthorDate: Sat Jun 27 17:33:06 2015 -0400 Commit: CMake Topic Stage CommitDate: Sat Jun 27 17:33:06 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 7998915e Handle sub directory libraries with export all dll and add a test for it. 003099bc Do not use iostream because some older compilers get it wrong. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7998915e3bf8aa18940d488ec3238b195615723a commit 7998915e3bf8aa18940d488ec3238b195615723a Author: Bill Hoffman AuthorDate: Sat Jun 27 17:32:05 2015 -0400 Commit: Bill Hoffman CommitDate: Sat Jun 27 17:32:05 2015 -0400 Handle sub directory libraries with export all dll and add a test for it. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index bdc3c98..7a8ac86 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -893,7 +893,8 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( std::string const& configName) { std::vector outputs; - std::string deffile = "$(IntDir)/exportall.def"; + std::string deffile = gt->ObjectDirectory; + deffile += "/exportall.def"; outputs.push_back(deffile); std::vector empty; std::vector objectSources; @@ -914,8 +915,11 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( cmdl.push_back("-E"); cmdl.push_back("__create_def"); cmdl.push_back(deffile); - std::string objs_file = gt->Target->GetName(); - objs_file += ".dir/" + configName; + std::string obj_dir_expanded = obj_dir; + cmSystemTools::ReplaceString(obj_dir_expanded, + this->GetCMakeCFGIntDir(), + configName.c_str()); + std::string objs_file = obj_dir_expanded; cmSystemTools::MakeDirectory(objs_file.c_str()); objs_file += "/objects.txt"; cmdl.push_back(objs_file); diff --git a/Tests/RunCMake/AutoExportDll/AutoExport.cmake b/Tests/RunCMake/AutoExportDll/AutoExport.cmake index c426f66..3b2b2c5 100644 --- a/Tests/RunCMake/AutoExportDll/AutoExport.cmake +++ b/Tests/RunCMake/AutoExportDll/AutoExport.cmake @@ -1,5 +1,7 @@ project(autoexport) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${autoexport_BINARY_DIR}/bin) +add_subdirectory(sub) add_library(autoexport SHARED hello.cxx world.cxx foo.c) add_executable(say say.cxx) -target_link_libraries(say autoexport) +target_link_libraries(say autoexport autoexport2) diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake index 8a2a174..3784a6a 100644 --- a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -23,4 +23,4 @@ if(WIN32) set(EXE_EXT ".exe") endif() run_cmake_command(AutoExportRun - ${RunCMake_BINARY_DIR}/AutoExport-build/${INTDIR}say${EXE_EXT}) + ${RunCMake_BINARY_DIR}/AutoExport-build/bin/${INTDIR}say${EXE_EXT}) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=003099bc92fd3f0cdd97e7524900f28a84db2a5a commit 003099bc92fd3f0cdd97e7524900f28a84db2a5a Author: Bill Hoffman AuthorDate: Sat Jun 27 17:24:21 2015 -0400 Commit: Bill Hoffman CommitDate: Sat Jun 27 17:24:21 2015 -0400 Do not use iostream because some older compilers get it wrong. diff --git a/Tests/RunCMake/AutoExportDll/hello.cxx b/Tests/RunCMake/AutoExportDll/hello.cxx index ad83420..3933fc1 100644 --- a/Tests/RunCMake/AutoExportDll/hello.cxx +++ b/Tests/RunCMake/AutoExportDll/hello.cxx @@ -1,4 +1,4 @@ -#include +#include #include "hello.h" int Hello::Data = 0; void Hello::real() @@ -7,7 +7,7 @@ void Hello::real() } void hello() { - std::cout << "hello"; + printf("hello"); } void Hello::operator delete[](void*) {}; void Hello::operator delete(void*) {}; diff --git a/Tests/RunCMake/AutoExportDll/world.cxx b/Tests/RunCMake/AutoExportDll/world.cxx index 8107949..3a54df3 100644 --- a/Tests/RunCMake/AutoExportDll/world.cxx +++ b/Tests/RunCMake/AutoExportDll/world.cxx @@ -1,6 +1,6 @@ -#include +#include "stdio.h" void world() { - std::cout << "world"; + printf("world"); } ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalVisualStudioGenerator.cxx | 10 +++++++--- Tests/RunCMake/AutoExportDll/AutoExport.cmake | 4 +++- Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake | 2 +- Tests/RunCMake/AutoExportDll/hello.cxx | 4 ++-- Tests/RunCMake/AutoExportDll/world.cxx | 4 ++-- 5 files changed, 15 insertions(+), 9 deletions(-) hooks/post-receive -- CMake From kwrobot at kitware.com Sun Jun 28 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Sun, 28 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-277-ge5f991f Message-ID: <20150628040106.46BB3AF295@public.kitware.com> 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, master has been updated via e5f991f62f30864ccc14d10f348e56a249c1562c (commit) from b702415d3a14cc2c561e4327ca27d720bbec886a (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=e5f991f62f30864ccc14d10f348e56a249c1562c commit e5f991f62f30864ccc14d10f348e56a249c1562c Author: Kitware Robot AuthorDate: Sun Jun 28 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Sun Jun 28 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index bac2eaf..4ede6a5 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150627) +set(CMake_VERSION_PATCH 20150628) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From bill.hoffman at kitware.com Sun Jun 28 08:39:19 2015 From: bill.hoffman at kitware.com (Bill Hoffman) Date: Sun, 28 Jun 2015 08:39:19 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-712-g884eb43 Message-ID: <20150628123919.D93C27DF@public.kitware.com> 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 884eb43e9b752e15f80f5ce69bd18388794f5adb (commit) via e58ec8faabd019c0a13219cfb86a5585a67a4b66 (commit) from 26d88d323f21fa292b6a2990f3522e7f87ff0787 (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=884eb43e9b752e15f80f5ce69bd18388794f5adb commit 884eb43e9b752e15f80f5ce69bd18388794f5adb Merge: 26d88d3 e58ec8f Author: Bill Hoffman AuthorDate: Sun Jun 28 08:39:18 2015 -0400 Commit: CMake Topic Stage CommitDate: Sun Jun 28 08:39:18 2015 -0400 Merge topic 'auto_export_dll_symbols' into next e58ec8fa add missing sub dir http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e58ec8faabd019c0a13219cfb86a5585a67a4b66 commit e58ec8faabd019c0a13219cfb86a5585a67a4b66 Author: Bill Hoffman AuthorDate: Sun Jun 28 08:39:03 2015 -0400 Commit: Bill Hoffman CommitDate: Sun Jun 28 08:39:03 2015 -0400 add missing sub dir diff --git a/Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt b/Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt new file mode 100644 index 0000000..dee33e6 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt @@ -0,0 +1 @@ +add_library(autoexport2 SHARED sub.cxx) diff --git a/Tests/RunCMake/AutoExportDll/sub/sub.cxx b/Tests/RunCMake/AutoExportDll/sub/sub.cxx new file mode 100644 index 0000000..9766b41 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/sub/sub.cxx @@ -0,0 +1,4 @@ +int sub() +{ + return 10; +} ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt | 1 + Tests/{SubProject/gen.cxx.in => RunCMake/AutoExportDll/sub/sub.cxx} | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt copy Tests/{SubProject/gen.cxx.in => RunCMake/AutoExportDll/sub/sub.cxx} (62%) hooks/post-receive -- CMake From kwrobot at kitware.com Mon Jun 29 00:01:06 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Mon, 29 Jun 2015 00:01:06 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-278-gebd5eeb Message-ID: <20150629040106.505D3B036D@public.kitware.com> 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, master has been updated via ebd5eeb6567b89697c57c4203a4c38b988c7bfaa (commit) from e5f991f62f30864ccc14d10f348e56a249c1562c (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=ebd5eeb6567b89697c57c4203a4c38b988c7bfaa commit ebd5eeb6567b89697c57c4203a4c38b988c7bfaa Author: Kitware Robot AuthorDate: Mon Jun 29 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Mon Jun 29 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 4ede6a5..2570ca3 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150628) +set(CMake_VERSION_PATCH 20150629) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 08:56:03 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 08:56:03 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-714-g97d65a7 Message-ID: <20150629125603.13171B050F@public.kitware.com> 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 97d65a7ecf2ce711c87c53ef7be205b9b987efc2 (commit) via 6524ed5e948d03ceeb3a4ed37de130f43aa12101 (commit) from 884eb43e9b752e15f80f5ce69bd18388794f5adb (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=97d65a7ecf2ce711c87c53ef7be205b9b987efc2 commit 97d65a7ecf2ce711c87c53ef7be205b9b987efc2 Merge: 884eb43 6524ed5 Author: Brad King AuthorDate: Mon Jun 29 08:56:02 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 08:56:02 2015 -0400 Merge topic 'FindMatlab-doc-section-headers' into next 6524ed5e FindMatlab: Fix documentation section header underline style http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6524ed5e948d03ceeb3a4ed37de130f43aa12101 commit 6524ed5e948d03ceeb3a4ed37de130f43aa12101 Author: Tamas Kenez AuthorDate: Mon Jun 29 13:42:10 2015 +0200 Commit: Brad King CommitDate: Mon Jun 29 08:55:49 2015 -0400 FindMatlab: Fix documentation section header underline style Replace caret-headers with double-quote-headers and replace dash-headers with caret-headers. This makes the headers match their level of nesting according to our documentation style guide in cmake-developers(7). diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index 028bf5a..a47a69c 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -55,7 +55,7 @@ # returning an exit code can be used as well (0 indicating a success). # # Module Input Variables -# ---------------------- +# ^^^^^^^^^^^^^^^^^^^^^^ # # Users or projects may set the following variables to configure the module # behaviour: @@ -69,10 +69,10 @@ # versions. # # Variables defined by the module -# ------------------------------- +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # # Result variables -# ^^^^^^^^^^^^^^^^ +# """""""""""""""" # # ``Matlab_FOUND`` # ``TRUE`` if the Matlab installation is found, ``FALSE`` @@ -100,7 +100,7 @@ # Available only if the component ``MEX_COMPILER`` is asked # # Cached variables -# ^^^^^^^^^^^^^^^^ +# """""""""""""""" # # ``Matlab_MEX_EXTENSION`` # the extension of the mex files for the current platform (given by Matlab). @@ -109,7 +109,7 @@ # is changed by the user, the result variables are recomputed. # # Provided macros -# --------------- +# ^^^^^^^^^^^^^^^ # # :command:`matlab_get_version_from_release_name` # returns the version from the release name @@ -117,7 +117,7 @@ # returns the release name from the Matlab version # # Provided functions -# ------------------ +# ^^^^^^^^^^^^^^^^^^ # # :command:`matlab_add_mex` # adds a target compiling a MEX file. @@ -139,7 +139,7 @@ # # # Known issues -# ------------ +# ^^^^^^^^^^^^ # # **Symbol clash in a MEX target** # By default, every symbols inside a MEX @@ -166,7 +166,7 @@ # # # Reference -# -------------- +# ^^^^^^^^^ # # .. variable:: Matlab_ROOT_DIR # ----------------------------------------------------------------------- Summary of changes: Modules/FindMatlab.cmake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 09:56:31 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 09:56:31 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-717-g9303067 Message-ID: <20150629135631.9ED58B04C2@public.kitware.com> 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 93030679028c692bb96fc11c8e52e8f145dd1e30 (commit) via 1de07797a39e03033f4f8cde7be3b4b6c4c5e816 (commit) via 229e7f8a25efc971ad6869787565f96b3c167a7b (commit) from 97d65a7ecf2ce711c87c53ef7be205b9b987efc2 (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=93030679028c692bb96fc11c8e52e8f145dd1e30 commit 93030679028c692bb96fc11c8e52e8f145dd1e30 Merge: 97d65a7 1de0779 Author: Brad King AuthorDate: Mon Jun 29 09:56:30 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 09:56:30 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 1de07797 bindexplib: Fix compilation warnings 229e7f8a Fix generation of object list file http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1de07797a39e03033f4f8cde7be3b4b6c4c5e816 commit 1de07797a39e03033f4f8cde7be3b4b6c4c5e816 Author: Brad King AuthorDate: Mon Jun 29 09:55:31 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 09:55:31 2015 -0400 bindexplib: Fix compilation warnings diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 0dd9f75..879d9bc 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -71,8 +71,6 @@ *---------------------------------------------------------------------- */ -static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; - #include #include #include @@ -81,23 +79,6 @@ static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; #include /* -* The names of the first group of possible symbol table storage classes -*/ -char * SzStorageClass1[] = { - "NULL","AUTOMATIC","EXTERNAL","STATIC","REGISTER","EXTERNAL_DEF","LABEL", - "UNDEFINED_LABEL","MEMBER_OF_STRUCT","ARGUMENT","STRUCT_TAG", - "MEMBER_OF_UNION","UNION_TAG","TYPE_DEFINITION","UNDEFINED_STATIC", - "ENUM_TAG","MEMBER_OF_ENUM","REGISTER_PARAM","BIT_FIELD" -}; - -/* -* The names of the second group of possible symbol table storage classes -*/ -char * SzStorageClass2[] = { - "BLOCK","FUNCTION","END_OF_STRUCT","FILE","SECTION","WEAK_EXTERNAL" -}; - -/* + * Utility func, strstr with size + */ const char* StrNStr(const char* start, const char* find, size_t &size) { @@ -110,7 +91,7 @@ const char* StrNStr(const char* start, const char* find, size_t &size) { } len = strlen(find); - while (hint = (const char*) memchr(start, find[0], size-len+1)) { + while ((hint = (const char*) memchr(start, find[0], size-len+1))) { size -= (hint - start); if (!strncmp(hint, find, len)) return hint; @@ -131,7 +112,7 @@ const char* StrNStr(const char* start, const char* find, size_t &size) { */ int HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, - PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) + PIMAGE_SECTION_HEADER pSectionHeaders) { static int fImportFlag = 0; /* The status is nor defined yet */ WORD i; @@ -314,7 +295,7 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) int haveExports = HaveExportedObjects(pImageFileHeader, - PCOFFSectionHeaders, fout); + PCOFFSectionHeaders); if (!haveExports) DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=229e7f8a25efc971ad6869787565f96b3c167a7b commit 229e7f8a25efc971ad6869787565f96b3c167a7b Author: Brad King AuthorDate: Mon Jun 29 09:51:17 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 09:51:17 2015 -0400 Fix generation of object list file diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 7a8ac86..a41e843 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -13,6 +13,7 @@ #include "cmGlobalVisualStudioGenerator.h" #include "cmCallVisualStudioMacro.h" +#include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" #include "cmLocalVisualStudioGenerator.h" #include "cmMakefile.h" @@ -923,7 +924,7 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( cmSystemTools::MakeDirectory(objs_file.c_str()); objs_file += "/objects.txt"; cmdl.push_back(objs_file); - std::ofstream fout(objs_file.c_str()); + cmGeneratedFileStream fout(objs_file.c_str()); if(!fout) { cmSystemTools::Error("could not open ", objs_file.c_str()); diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index f807517..ffdd27b 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -591,7 +591,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules cmLocalGenerator::SHELL); real_link_commands.push_back(cmd); // create a list of obj files for the -E __create_def to read - std::ofstream fout(objlist_file.c_str()); + cmGeneratedFileStream fout(objlist_file.c_str()); for(std::vector::const_iterator i = this->Objects.begin(); i != this->Objects.end(); ++i) { diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 4df0993..4603de8 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -648,7 +648,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() cmLocalGenerator::SHELL); preLinkCmdLines.push_back(cmd); // create a list of obj files for the -E __create_def to read - std::ofstream fout(obj_list_file.c_str()); + cmGeneratedFileStream fout(obj_list_file.c_str()); for(cmNinjaDeps::iterator i=objs.begin(); i != objs.end(); ++i) { fout << *i << "\n"; ----------------------------------------------------------------------- Summary of changes: Source/bindexplib.cxx | 25 +++---------------------- Source/cmGlobalVisualStudioGenerator.cxx | 3 ++- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmNinjaNormalTargetGenerator.cxx | 2 +- 4 files changed, 7 insertions(+), 25 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 10:24:12 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 10:24:12 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-280-g7e79931 Message-ID: <20150629142412.8A660B033B@public.kitware.com> 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, master has been updated via 7e79931e44c308f3cd25346187eb3b0a2b8b6b24 (commit) via 6524ed5e948d03ceeb3a4ed37de130f43aa12101 (commit) from ebd5eeb6567b89697c57c4203a4c38b988c7bfaa (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=7e79931e44c308f3cd25346187eb3b0a2b8b6b24 commit 7e79931e44c308f3cd25346187eb3b0a2b8b6b24 Merge: ebd5eeb 6524ed5 Author: Brad King AuthorDate: Mon Jun 29 10:24:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 10:24:11 2015 -0400 Merge topic 'FindMatlab-doc-section-headers' 6524ed5e FindMatlab: Fix documentation section header underline style ----------------------------------------------------------------------- Summary of changes: Modules/FindMatlab.cmake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 10:24:14 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 10:24:14 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-282-g1cb8d95 Message-ID: <20150629142414.646B0B033C@public.kitware.com> 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, master has been updated via 1cb8d95509006c6533aaefe5a5ea3fe37692b564 (commit) via 806609c7024dbf07a639a9d77074d4bc82ae1b8a (commit) from 7e79931e44c308f3cd25346187eb3b0a2b8b6b24 (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=1cb8d95509006c6533aaefe5a5ea3fe37692b564 commit 1cb8d95509006c6533aaefe5a5ea3fe37692b564 Merge: 7e79931 806609c Author: Brad King AuthorDate: Mon Jun 29 10:24:13 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 10:24:13 2015 -0400 Merge topic 'vs-librarian-machine-flag-default' 806609c7 VS: Add /machine: flag to Librarian tool (#11240) ----------------------------------------------------------------------- Summary of changes: Modules/Platform/Windows-MSVC.cmake | 1 + Tests/VSResource/CMakeLists.txt | 3 +++ Tests/VSResource/lib.cpp | 1 + Tests/VSResource/lib.rc | 4 ++++ Tests/VSResource/main.cpp | 4 +++- 5 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 Tests/VSResource/lib.cpp create mode 100644 Tests/VSResource/lib.rc hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 10:24:16 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 10:24:16 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-284-gbbfebcb Message-ID: <20150629142416.1F1A2B0358@public.kitware.com> 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, master has been updated via bbfebcbc13df87173dd8cb59cd34e1e0b3e1c0cc (commit) via 8306108fd6ed58833d5d33cf6425665457dcd902 (commit) from 1cb8d95509006c6533aaefe5a5ea3fe37692b564 (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=bbfebcbc13df87173dd8cb59cd34e1e0b3e1c0cc commit bbfebcbc13df87173dd8cb59cd34e1e0b3e1c0cc Merge: 1cb8d95 8306108 Author: Brad King AuthorDate: Mon Jun 29 10:24:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 10:24:14 2015 -0400 Merge topic 'compiler-id-simplify-ide-src' 8306108f CMakeDetermineCompilerId: Simplify src reference in IDE projects ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineCompilerId.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 10:24:43 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 10:24:43 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-724-g2a6f4b0 Message-ID: <20150629142443.2AEA9B0396@public.kitware.com> 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 2a6f4b082107d24141a7478d9ecac41355328a90 (commit) via bbfebcbc13df87173dd8cb59cd34e1e0b3e1c0cc (commit) via 1cb8d95509006c6533aaefe5a5ea3fe37692b564 (commit) via 7e79931e44c308f3cd25346187eb3b0a2b8b6b24 (commit) via ebd5eeb6567b89697c57c4203a4c38b988c7bfaa (commit) via e5f991f62f30864ccc14d10f348e56a249c1562c (commit) via b702415d3a14cc2c561e4327ca27d720bbec886a (commit) from 93030679028c692bb96fc11c8e52e8f145dd1e30 (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=2a6f4b082107d24141a7478d9ecac41355328a90 commit 2a6f4b082107d24141a7478d9ecac41355328a90 Merge: 9303067 bbfebcb Author: Brad King AuthorDate: Mon Jun 29 10:24:30 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 10:24:30 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 11:26:20 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 11:26:20 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-726-ge8af2e8 Message-ID: <20150629152620.210CFB03AC@public.kitware.com> 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 e8af2e89b0b2cffb45ebf3894b0817cd13d462dd (commit) via 6452291c5cd51cb6ea611b0cfcfbc1619c213ae8 (commit) from 2a6f4b082107d24141a7478d9ecac41355328a90 (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=e8af2e89b0b2cffb45ebf3894b0817cd13d462dd commit e8af2e89b0b2cffb45ebf3894b0817cd13d462dd Merge: 2a6f4b0 6452291 Author: Brad King AuthorDate: Mon Jun 29 11:26:19 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 11:26:19 2015 -0400 Merge topic 'compiler-id-xcode-tool-per-language' into next 6452291c CMakeDetermineCompilerId: Use per-language regex to match Xcode compiler tool http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6452291c5cd51cb6ea611b0cfcfbc1619c213ae8 commit 6452291c5cd51cb6ea611b0cfcfbc1619c213ae8 Author: Brad King AuthorDate: Mon Jun 29 11:19:15 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 11:23:58 2015 -0400 CMakeDetermineCompilerId: Use per-language regex to match Xcode compiler tool Move the Ld invocation match expression from CMakeDetermineCompilerId into CMakeDetermineCCompiler and CMakeDetermineCXXCompiler so that it can be specified on a per-language basis. diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 40d4ce6..492c3ea 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -105,6 +105,14 @@ if(NOT CMAKE_C_COMPILER_ID_RUN) set(CMAKE_C_COMPILER_ID_VENDOR_FLAGS_IAR ) set(CMAKE_C_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler") + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerIdC/... + # to extract the compiler front-end for the language. + set(CMAKE_C_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdC/(\\./)?(CompilerIdC.xctest/)?CompilerIdC[ \t\n\\\"]") + set(CMAKE_C_COMPILER_ID_TOOL_MATCH_INDEX 2) + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) CMAKE_DETERMINE_COMPILER_ID(C CFLAGS CMakeCCompilerId.c) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index a673525..2032015 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -100,6 +100,14 @@ if(NOT CMAKE_CXX_COMPILER_ID_RUN) set(CMAKE_CXX_COMPILER_ID_VENDOR_FLAGS_IAR ) set(CMAKE_CXX_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler") + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerIdCXX/... + # to extract the compiler front-end for the language. + set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCXX/(\\./)?(CompilerIdCXX.xctest/)?CompilerIdCXX[ \t\n\\\"]") + set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_INDEX 2) + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) CMAKE_DETERMINE_COMPILER_ID(CXX CXXFLAGS CMakeCXXCompilerId.cpp) diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 487429b..c699315 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -304,15 +304,12 @@ Id flags: ${testflags} set(ENV{MACOSX_DEPLOYMENT_TARGET} "${_ENV_MACOSX_DEPLOYMENT_TARGET}") endif() - # Match the link line from xcodebuild output of the form - # Ld ... - # ... - # /path/to/cc ...CompilerId${lang}/... - # to extract the compiler front-end for the language. - if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerId${lang}/(\\./)?(CompilerId${lang}.xctest/)?CompilerId${lang}[ \t\n\\\"]") - set(_comp "${CMAKE_MATCH_2}") - if(EXISTS "${_comp}") - set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE) + if(DEFINED CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX) + if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX}") + set(_comp "${CMAKE_MATCH_${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_INDEX}}") + if(EXISTS "${_comp}") + set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE) + endif() endif() endif() else() ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineCCompiler.cmake | 8 ++++++++ Modules/CMakeDetermineCXXCompiler.cmake | 8 ++++++++ Modules/CMakeDetermineCompilerId.cmake | 15 ++++++--------- 3 files changed, 22 insertions(+), 9 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 14:55:41 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 14:55:41 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-728-gfaf46fb Message-ID: <20150629185541.4ABAEB03DA@public.kitware.com> 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 faf46fb0e3ba96dae42a1603b9b9dbf18bb77b33 (commit) via bf249fee1180546d8cd1b563f05946a72940271f (commit) from e8af2e89b0b2cffb45ebf3894b0817cd13d462dd (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=faf46fb0e3ba96dae42a1603b9b9dbf18bb77b33 commit faf46fb0e3ba96dae42a1603b9b9dbf18bb77b33 Merge: e8af2e8 bf249fe Author: Brad King AuthorDate: Mon Jun 29 14:55:40 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 14:55:40 2015 -0400 Merge topic 'enable_language-fail-earlier' into next bf249fee enable_language: Allow CMakeDetermineCompiler module to fail early http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bf249fee1180546d8cd1b563f05946a72940271f commit bf249fee1180546d8cd1b563f05946a72940271f Author: Brad King AuthorDate: Mon Jun 29 14:51:14 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 14:53:43 2015 -0400 enable_language: Allow CMakeDetermineCompiler module to fail early If the module reports a FATAL_ERROR, skip the rest of the steps to enable the language to avoid unnecessary following error messages. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 14eaeac..23ab93d 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -564,6 +564,10 @@ cmGlobalGenerator::EnableLanguage(std::vectorconst& languages, cmSystemTools::Error("Could not find cmake module file: ", determineCompiler.c_str()); } + if (cmSystemTools::GetFatalErrorOccured()) + { + return; + } needTestLanguage[lang] = true; // Some generators like visual studio should not use the env variables // So the global generator can specify that in this variable diff --git a/Tests/RunCMake/Languages/DetermineFail-result.txt b/Tests/RunCMake/Languages/DetermineFail-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Languages/DetermineFail-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Languages/DetermineFail-stderr.txt b/Tests/RunCMake/Languages/DetermineFail-stderr.txt new file mode 100644 index 0000000..b58c4c2 --- /dev/null +++ b/Tests/RunCMake/Languages/DetermineFail-stderr.txt @@ -0,0 +1,7 @@ +^CMake Error at Modules/CMakeDetermineFailCompiler.cmake:[0-9]+ \(message\): + This language is not supported. +Call Stack \(most recent call first\): + DetermineFail.cmake:[0-9]+ \(enable_language\) + CMakeLists.txt:[0-9]+ \(include\) ++ +CMake Error: CMAKE_Fail_COMPILER not set, after EnableLanguage$ diff --git a/Tests/RunCMake/Languages/DetermineFail.cmake b/Tests/RunCMake/Languages/DetermineFail.cmake new file mode 100644 index 0000000..3c8d17d --- /dev/null +++ b/Tests/RunCMake/Languages/DetermineFail.cmake @@ -0,0 +1,2 @@ +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) +enable_language(Fail) diff --git a/Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake b/Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake new file mode 100644 index 0000000..3b2d50a --- /dev/null +++ b/Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This language is not supported.") diff --git a/Tests/RunCMake/Languages/RunCMakeTest.cmake b/Tests/RunCMake/Languages/RunCMakeTest.cmake index 6517a81..732baae 100644 --- a/Tests/RunCMake/Languages/RunCMakeTest.cmake +++ b/Tests/RunCMake/Languages/RunCMakeTest.cmake @@ -4,3 +4,5 @@ run_cmake(NoLangSHARED) run_cmake(LINK_LANGUAGE-genex) run_cmake(link-libraries-TARGET_FILE-genex) run_cmake(link-libraries-TARGET_FILE-genex-ok) + +run_cmake(DetermineFail) ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 4 ++++ .../DetermineFail-result.txt} | 0 Tests/RunCMake/Languages/DetermineFail-stderr.txt | 7 +++++++ Tests/RunCMake/Languages/DetermineFail.cmake | 2 ++ .../RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake | 1 + Tests/RunCMake/Languages/RunCMakeTest.cmake | 2 ++ 6 files changed, 16 insertions(+) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Languages/DetermineFail-result.txt} (100%) create mode 100644 Tests/RunCMake/Languages/DetermineFail-stderr.txt create mode 100644 Tests/RunCMake/Languages/DetermineFail.cmake create mode 100644 Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 16:18:11 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 16:18:11 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-730-ge2360a2 Message-ID: <20150629201811.C0B5AB0052@public.kitware.com> 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 e2360a21863e56dd789e6faa4d61f3d06c15efa5 (commit) via c21e1b39cd4d319699f43c1bf2667adedce04d36 (commit) from faf46fb0e3ba96dae42a1603b9b9dbf18bb77b33 (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=e2360a21863e56dd789e6faa4d61f3d06c15efa5 commit e2360a21863e56dd789e6faa4d61f3d06c15efa5 Merge: faf46fb c21e1b3 Author: Brad King AuthorDate: Mon Jun 29 16:18:11 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 16:18:11 2015 -0400 Merge topic 'enable_language-fail-earlier' into next c21e1b39 fixup! enable_language: Allow CMakeDetermineCompiler module to fail http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c21e1b39cd4d319699f43c1bf2667adedce04d36 commit c21e1b39cd4d319699f43c1bf2667adedce04d36 Author: Brad King AuthorDate: Mon Jun 29 16:17:08 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 16:17:08 2015 -0400 fixup! enable_language: Allow CMakeDetermineCompiler module to fail diff --git a/Tests/RunCMake/Languages/DetermineFail-stderr.txt b/Tests/RunCMake/Languages/DetermineFail-stderr.txt index b58c4c2..3b4743e 100644 --- a/Tests/RunCMake/Languages/DetermineFail-stderr.txt +++ b/Tests/RunCMake/Languages/DetermineFail-stderr.txt @@ -3,5 +3,3 @@ Call Stack \(most recent call first\): DetermineFail.cmake:[0-9]+ \(enable_language\) CMakeLists.txt:[0-9]+ \(include\) -+ -CMake Error: CMAKE_Fail_COMPILER not set, after EnableLanguage$ ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/Languages/DetermineFail-stderr.txt | 2 -- 1 file changed, 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Mon Jun 29 16:18:40 2015 From: brad.king at kitware.com (Brad King) Date: Mon, 29 Jun 2015 16:18:40 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-732-g5fdda16 Message-ID: <20150629201840.77B5DB00D1@public.kitware.com> 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 5fdda16a1b39d00ab50581ef14430188e0cebe85 (commit) via 327490e698db7a74f6a8e8543e99c6c7c9333a8f (commit) from e2360a21863e56dd789e6faa4d61f3d06c15efa5 (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=5fdda16a1b39d00ab50581ef14430188e0cebe85 commit 5fdda16a1b39d00ab50581ef14430188e0cebe85 Merge: e2360a2 327490e Author: Brad King AuthorDate: Mon Jun 29 16:18:39 2015 -0400 Commit: CMake Topic Stage CommitDate: Mon Jun 29 16:18:39 2015 -0400 Merge topic 'enable_language-fail-earlier' into next 327490e6 enable_language: Allow CMakeDetermineCompiler module to fail early http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=327490e698db7a74f6a8e8543e99c6c7c9333a8f commit 327490e698db7a74f6a8e8543e99c6c7c9333a8f Author: Brad King AuthorDate: Mon Jun 29 14:51:14 2015 -0400 Commit: Brad King CommitDate: Mon Jun 29 16:18:32 2015 -0400 enable_language: Allow CMakeDetermineCompiler module to fail early If the module reports a FATAL_ERROR, skip the rest of the steps to enable the language to avoid unnecessary following error messages. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 14eaeac..23ab93d 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -564,6 +564,10 @@ cmGlobalGenerator::EnableLanguage(std::vectorconst& languages, cmSystemTools::Error("Could not find cmake module file: ", determineCompiler.c_str()); } + if (cmSystemTools::GetFatalErrorOccured()) + { + return; + } needTestLanguage[lang] = true; // Some generators like visual studio should not use the env variables // So the global generator can specify that in this variable diff --git a/Tests/RunCMake/Languages/DetermineFail-result.txt b/Tests/RunCMake/Languages/DetermineFail-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Languages/DetermineFail-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Languages/DetermineFail-stderr.txt b/Tests/RunCMake/Languages/DetermineFail-stderr.txt new file mode 100644 index 0000000..3b4743e --- /dev/null +++ b/Tests/RunCMake/Languages/DetermineFail-stderr.txt @@ -0,0 +1,5 @@ +^CMake Error at Modules/CMakeDetermineFailCompiler.cmake:[0-9]+ \(message\): + This language is not supported. +Call Stack \(most recent call first\): + DetermineFail.cmake:[0-9]+ \(enable_language\) + CMakeLists.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/Languages/DetermineFail.cmake b/Tests/RunCMake/Languages/DetermineFail.cmake new file mode 100644 index 0000000..3c8d17d --- /dev/null +++ b/Tests/RunCMake/Languages/DetermineFail.cmake @@ -0,0 +1,2 @@ +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) +enable_language(Fail) diff --git a/Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake b/Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake new file mode 100644 index 0000000..3b2d50a --- /dev/null +++ b/Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This language is not supported.") diff --git a/Tests/RunCMake/Languages/RunCMakeTest.cmake b/Tests/RunCMake/Languages/RunCMakeTest.cmake index 6517a81..732baae 100644 --- a/Tests/RunCMake/Languages/RunCMakeTest.cmake +++ b/Tests/RunCMake/Languages/RunCMakeTest.cmake @@ -4,3 +4,5 @@ run_cmake(NoLangSHARED) run_cmake(LINK_LANGUAGE-genex) run_cmake(link-libraries-TARGET_FILE-genex) run_cmake(link-libraries-TARGET_FILE-genex-ok) + +run_cmake(DetermineFail) ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From kwrobot at kitware.com Tue Jun 30 00:01:05 2015 From: kwrobot at kitware.com (Kitware Robot) Date: Tue, 30 Jun 2015 00:01:05 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-285-g5ff47ea Message-ID: <20150630040105.9DA5FB04CF@public.kitware.com> 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, master has been updated via 5ff47ea93d490616292aae88847b42d56200d9e7 (commit) from bbfebcbc13df87173dd8cb59cd34e1e0b3e1c0cc (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=5ff47ea93d490616292aae88847b42d56200d9e7 commit 5ff47ea93d490616292aae88847b42d56200d9e7 Author: Kitware Robot AuthorDate: Tue Jun 30 00:01:04 2015 -0400 Commit: Kitware Robot CommitDate: Tue Jun 30 00:01:04 2015 -0400 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 2570ca3..fd88610 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20150629) +set(CMake_VERSION_PATCH 20150630) #set(CMake_VERSION_RC 1) ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:14:02 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:14:02 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-734-g585e9da Message-ID: <20150630141402.D5887149EE@public.kitware.com> 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 585e9da0e2262c11b7be1a728f88dddb31c2ed0b (commit) via 00dae1a7ccfa4b375c2044b8a435b9728ac46366 (commit) from 5fdda16a1b39d00ab50581ef14430188e0cebe85 (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=585e9da0e2262c11b7be1a728f88dddb31c2ed0b commit 585e9da0e2262c11b7be1a728f88dddb31c2ed0b Merge: 5fdda16 00dae1a Author: Brad King AuthorDate: Tue Jun 30 10:14:02 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 10:14:02 2015 -0400 Merge topic 'compiler-id-xcode-tool-per-language' into next 00dae1a7 fixup! CMakeDetermineCompilerId: Use per-language regex to match Xcode http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=00dae1a7ccfa4b375c2044b8a435b9728ac46366 commit 00dae1a7ccfa4b375c2044b8a435b9728ac46366 Author: Brad King AuthorDate: Tue Jun 30 10:13:41 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:13:41 2015 -0400 fixup! CMakeDetermineCompilerId: Use per-language regex to match Xcode diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index 52ec25a..911ffac 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -127,6 +127,14 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN) set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_NAG "-V") set(CMAKE_Fortran_COMPILER_ID_VENDOR_REGEX_NAG "NAG Fortran Compiler") + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerIdFortran/... + # to extract the compiler front-end for the language. + set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdFortran/(\\./)?(CompilerIdFortran.xctest/)?CompilerIdFortran[ \t\n\\\"]") + set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_INDEX 2) + set(_version_info "") foreach(m MAJOR MINOR PATCH TWEAK) set(_COMP "_${m}") ----------------------------------------------------------------------- Summary of changes: Modules/CMakeDetermineFortranCompiler.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:15:59 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:15:59 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-736-g5da2e18 Message-ID: <20150630141559.72C31B0286@public.kitware.com> 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 5da2e18f384f4a748eb0e440b482a444deede5d5 (commit) via 99d160385e22ab7bd8e712d5a58460940573cfcd (commit) from 585e9da0e2262c11b7be1a728f88dddb31c2ed0b (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=5da2e18f384f4a748eb0e440b482a444deede5d5 commit 5da2e18f384f4a748eb0e440b482a444deede5d5 Merge: 585e9da 99d1603 Author: Brad King AuthorDate: Tue Jun 30 10:15:58 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 10:15:58 2015 -0400 Merge topic 'compiler-id-xcode-tool-per-language' into next 99d16038 CMakeDetermineCompilerId: Use per-language regex to match Xcode compiler tool http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=99d160385e22ab7bd8e712d5a58460940573cfcd commit 99d160385e22ab7bd8e712d5a58460940573cfcd Author: Brad King AuthorDate: Mon Jun 29 11:19:15 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:14:08 2015 -0400 CMakeDetermineCompilerId: Use per-language regex to match Xcode compiler tool Move the Ld invocation match expression from CMakeDetermineCompilerId into CMakeDetermine{C,CXX,Fortran}Compiler so that it can be specified on a per-language basis. diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 40d4ce6..492c3ea 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -105,6 +105,14 @@ if(NOT CMAKE_C_COMPILER_ID_RUN) set(CMAKE_C_COMPILER_ID_VENDOR_FLAGS_IAR ) set(CMAKE_C_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler") + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerIdC/... + # to extract the compiler front-end for the language. + set(CMAKE_C_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdC/(\\./)?(CompilerIdC.xctest/)?CompilerIdC[ \t\n\\\"]") + set(CMAKE_C_COMPILER_ID_TOOL_MATCH_INDEX 2) + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) CMAKE_DETERMINE_COMPILER_ID(C CFLAGS CMakeCCompilerId.c) diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index a673525..2032015 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -100,6 +100,14 @@ if(NOT CMAKE_CXX_COMPILER_ID_RUN) set(CMAKE_CXX_COMPILER_ID_VENDOR_FLAGS_IAR ) set(CMAKE_CXX_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler") + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerIdCXX/... + # to extract the compiler front-end for the language. + set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCXX/(\\./)?(CompilerIdCXX.xctest/)?CompilerIdCXX[ \t\n\\\"]") + set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_INDEX 2) + include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) CMAKE_DETERMINE_COMPILER_ID(CXX CXXFLAGS CMakeCXXCompilerId.cpp) diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 487429b..c699315 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -304,15 +304,12 @@ Id flags: ${testflags} set(ENV{MACOSX_DEPLOYMENT_TARGET} "${_ENV_MACOSX_DEPLOYMENT_TARGET}") endif() - # Match the link line from xcodebuild output of the form - # Ld ... - # ... - # /path/to/cc ...CompilerId${lang}/... - # to extract the compiler front-end for the language. - if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerId${lang}/(\\./)?(CompilerId${lang}.xctest/)?CompilerId${lang}[ \t\n\\\"]") - set(_comp "${CMAKE_MATCH_2}") - if(EXISTS "${_comp}") - set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE) + if(DEFINED CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX) + if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX}") + set(_comp "${CMAKE_MATCH_${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_INDEX}}") + if(EXISTS "${_comp}") + set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE) + endif() endif() endif() else() diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index 52ec25a..911ffac 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -127,6 +127,14 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN) set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_NAG "-V") set(CMAKE_Fortran_COMPILER_ID_VENDOR_REGEX_NAG "NAG Fortran Compiler") + # Match the link line from xcodebuild output of the form + # Ld ... + # ... + # /path/to/cc ...CompilerIdFortran/... + # to extract the compiler front-end for the language. + set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdFortran/(\\./)?(CompilerIdFortran.xctest/)?CompilerIdFortran[ \t\n\\\"]") + set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_INDEX 2) + set(_version_info "") foreach(m MAJOR MINOR PATCH TWEAK) set(_COMP "_${m}") ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:21:15 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:21:15 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-738-g333b0bc Message-ID: <20150630142115.6D3DAB04AF@public.kitware.com> 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 333b0bc7055efb1369fa6cda0586e68553c8ebe3 (commit) via 91b3ae8e25e439340421573b3a270648a39a5e2f (commit) from 5da2e18f384f4a748eb0e440b482a444deede5d5 (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=333b0bc7055efb1369fa6cda0586e68553c8ebe3 commit 333b0bc7055efb1369fa6cda0586e68553c8ebe3 Merge: 5da2e18 91b3ae8 Author: Brad King AuthorDate: Tue Jun 30 10:21:14 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 10:21:14 2015 -0400 Merge topic 'ctest-test-load' into next 91b3ae8e fixup! ctest: Optionally avoid starting tests that may exceed a given CPU load http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=91b3ae8e25e439340421573b3a270648a39a5e2f commit 91b3ae8e25e439340421573b3a270648a39a5e2f Author: Brad King AuthorDate: Tue Jun 30 10:21:01 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:21:01 2015 -0400 fixup! ctest: Optionally avoid starting tests that may exceed a given CPU load diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index be4a958..aba1daf 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -1,5 +1,5 @@ include(RunCMake) -set(RunCMake_TEST_TIMEOUT 30) +set(RunCMake_TEST_TIMEOUT 60) unset(ENV{CTEST_PARALLEL_LEVEL}) unset(ENV{CTEST_OUTPUT_ON_FAILURE}) diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index f1827c2..21d0447 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,5 +1,5 @@ include(RunCTest) -set(RunCMake_TEST_TIMEOUT 30) +set(RunCMake_TEST_TIMEOUT 60) set(CASE_CTEST_TEST_ARGS "") set(CASE_CTEST_TEST_LOAD "") ----------------------------------------------------------------------- Summary of changes: Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 2 +- Tests/RunCMake/ctest_test/RunCMakeTest.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:22:09 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:22:09 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-743-gfe09e6f Message-ID: <20150630142209.A9C55B04F3@public.kitware.com> 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 fe09e6f9165d594c1a455f99f99c2700237957b6 (commit) via f62d301b9257542f5460902c400af3f947f10a66 (commit) via 07c550caa20d4b1d6ebc08269d744ff6a45c0a6d (commit) via 8bf5a80b9668a31b85aaac00d1682228bbbbac5e (commit) via dffc307c81220ffc243abc3b87ecfd694bd4cd35 (commit) from 333b0bc7055efb1369fa6cda0586e68553c8ebe3 (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=fe09e6f9165d594c1a455f99f99c2700237957b6 commit fe09e6f9165d594c1a455f99f99c2700237957b6 Merge: 333b0bc f62d301 Author: Brad King AuthorDate: Tue Jun 30 10:22:08 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 10:22:08 2015 -0400 Merge topic 'ctest-test-load' into next f62d301b ctest: Optionally avoid starting tests that may exceed a given CPU load 07c550ca cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation 8bf5a80b cmSystemTools: Add StringToULong helper dffc307c Tests: Teach RunCMake infrastructure to optionally timeout http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f62d301b9257542f5460902c400af3f947f10a66 commit f62d301b9257542f5460902c400af3f947f10a66 Author: Betsy McPhail AuthorDate: Tue Jun 9 08:50:44 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:21:37 2015 -0400 ctest: Optionally avoid starting tests that may exceed a given CPU load Add a TestLoad setting to CTest that can be set via a new --test-load command-line option, CTEST_TEST_LOAD variable, or TEST_LOAD option to the ctest_test command. Teach cmCTestMultiProcessHandler to measure the CPU load and avoid starting tests that may take more than the spare load currently available. The expression + <= must be true to start a new test. Co-Author: Zack Galbreath diff --git a/Help/command/ctest_memcheck.rst b/Help/command/ctest_memcheck.rst index 2800511..29bdf7d 100644 --- a/Help/command/ctest_memcheck.rst +++ b/Help/command/ctest_memcheck.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest MemCheck Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index af422b6..162db69 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst @@ -14,6 +14,7 @@ Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`. [EXCLUDE_LABEL ] [INCLUDE_LABEL ] [PARALLEL_LEVEL ] + [TEST_LOAD ] [SCHEDULE_RANDOM ] [STOP_TIME ] [RETURN_VALUE ] @@ -61,6 +62,13 @@ The options are: Specify a positive number representing the number of tests to be run in parallel. +``TEST_LOAD `` + While running tests in parallel, try not to start tests when they + may cause the CPU load to pass above a given threshold. If not + specified the :variable:`CTEST_TEST_LOAD` variable will be checked, + and then the ``--test-load`` command-line argument to :manual:`ctest(1)`. + See also the ``TestLoad`` setting in the :ref:`CTest Test Step`. + ``SCHEDULE_RANDOM `` Launch tests in a random order. This may be useful for detecting implicit test dependencies. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..adbc40b 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -386,6 +386,7 @@ Variables for CTest /variable/CTEST_SVN_COMMAND /variable/CTEST_SVN_OPTIONS /variable/CTEST_SVN_UPDATE_OPTIONS + /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT /variable/CTEST_TRIGGER_SITE /variable/CTEST_UPDATE_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index c91321b..50c856a 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -66,6 +66,13 @@ Options number of jobs. This option can also be set by setting the environment variable ``CTEST_PARALLEL_LEVEL``. +``--test-load `` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + When ``ctest`` is run as a `Dashboard Client`_ this sets the + ``TestLoad`` option of the `CTest Test Step`_. + ``-Q,--quiet`` Make ctest quiet. @@ -776,6 +783,13 @@ Arguments to the command may specify some of the step settings. Configuration settings include: +``TestLoad`` + While running tests in parallel (e.g. with ``-j``), try not to start + tests when they may cause the CPU load to pass above a given threshold. + + * `CTest Script`_ variable: :variable:`CTEST_TEST_LOAD` + * :module:`CTest` module variable: ``CTEST_TEST_LOAD`` + ``TimeOut`` The default timeout for each test if not specified by the :prop_test:`TIMEOUT` test property. diff --git a/Help/release/dev/ctest-test-load-option.rst b/Help/release/dev/ctest-test-load-option.rst new file mode 100644 index 0000000..069f49a --- /dev/null +++ b/Help/release/dev/ctest-test-load-option.rst @@ -0,0 +1,9 @@ +ctest-test-load-option +---------------------- + +* CTest learned to optionally measure the CPU load during parallel + testing and avoid starting tests that may cause the load to exceed + a given threshold. See the :manual:`ctest(1)` command ``--test-load`` + option, the ``TestLoad`` setting of the :ref:`CTest Test Step`, + the :variable:`CTEST_TEST_LOAD` variable, and the ``TEST_LOAD`` + option of the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst new file mode 100644 index 0000000..80823fe --- /dev/null +++ b/Help/variable/CTEST_TEST_LOAD.rst @@ -0,0 +1,7 @@ +CTEST_TEST_LOAD +--------------- + +Specify the ``TestLoad`` setting in the :ref:`CTest Test Step` +of a :manual:`ctest(1)` dashboard client script. This sets the +default value for the ``TEST_LOAD`` option of the :command:`ctest_test` +command. diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 37a0a40..918b407 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -95,6 +95,10 @@ SlurmRunCommand: @SLURM_SRUN_COMMAND@ # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: @CTEST_TEST_LOAD@ + UseLaunchers: @CTEST_USE_LAUNCHERS@ CurlOptions: @CTEST_CURL_OPTIONS@ # warning, if you add new options here that have to do with submit, diff --git a/Source/CTest/cmCTestGenericHandler.cxx b/Source/CTest/cmCTestGenericHandler.cxx index 81eb0a8..ad79ba2 100644 --- a/Source/CTest/cmCTestGenericHandler.cxx +++ b/Source/CTest/cmCTestGenericHandler.cxx @@ -23,6 +23,7 @@ cmCTestGenericHandler::cmCTestGenericHandler() this->SubmitIndex = 0; this->AppendXML = false; this->Quiet = false; + this->TestLoad = 0; } //---------------------------------------------------------------------- @@ -70,6 +71,7 @@ void cmCTestGenericHandler::SetPersistentOption(const std::string& op, void cmCTestGenericHandler::Initialize() { this->AppendXML = false; + this->TestLoad = 0; this->Options.clear(); t_StringToString::iterator it; for ( it = this->PersistentOptions.begin(); diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index 8567dd7..4b7ae79 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -89,6 +89,8 @@ public: void SetAppendXML(bool b) { this->AppendXML = b; } void SetQuiet(bool b) { this->Quiet = b; } bool GetQuiet() { return this->Quiet; } + void SetTestLoad(unsigned long load) { this->TestLoad = load; } + unsigned long GetTestLoad() const { return this->TestLoad; } protected: bool StartResultingXML(cmCTest::Part part, @@ -97,6 +99,7 @@ protected: bool AppendXML; bool Quiet; + unsigned long TestLoad; cmSystemTools::OutputOption HandlerVerbose; cmCTest *CTest; t_StringToString Options; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 28aec3d..4832186 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -13,12 +13,15 @@ #include "cmProcess.h" #include "cmStandardIncludes.h" #include "cmCTest.h" +#include "cmCTestScriptHandler.h" #include "cmSystemTools.h" #include #include #include #include +#include #include +#include class TestComparator { @@ -40,6 +43,7 @@ private: cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { this->ParallelLevel = 1; + this->TestLoad = 0; this->Completed = 0; this->RunningCount = 0; this->StopTimePassed = false; @@ -84,6 +88,11 @@ void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTestMultiProcessHandler::SetTestLoad(unsigned long load) +{ + this->TestLoad = load; +} + //--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { @@ -213,6 +222,11 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) return processors; } +std::string cmCTestMultiProcessHandler::GetName(int test) +{ + return this->Properties[test]->Name; +} + //--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { @@ -259,6 +273,46 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + bool allTestsFailedTestLoadCheck = false; + bool usedFakeLoadForTesting = false; + size_t minProcessorsRequired = this->ParallelLevel; + std::string testWithMinProcessors = ""; + + cmsys::SystemInformation info; + + unsigned long systemLoad = 0; + size_t spareLoad = 0; + if (this->TestLoad > 0) + { + // Activate possible wait. + allTestsFailedTestLoadCheck = true; + + // Check for a fake load average value used in testing. + if (const char* fake_load_value = + cmSystemTools::GetEnv("__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING")) + { + usedFakeLoadForTesting = true; + if (!cmSystemTools::StringToULong(fake_load_value, &systemLoad)) + { + cmSystemTools::Error("Failed to parse fake load value: ", + fake_load_value); + } + } + // If it's not set, look up the true load average. + else + { + systemLoad = static_cast(ceil(info.GetLoadAverage())); + } + spareLoad = (this->TestLoad > systemLoad ? + this->TestLoad - systemLoad : 0); + + // Don't start more tests than the spare load can support. + if (numToStart > spareLoad) + { + numToStart = spareLoad; + } + } + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { @@ -274,18 +328,74 @@ void cmCTestMultiProcessHandler::StartNextTests() } size_t processors = GetProcessorsUsed(*test); + bool testLoadOk = true; + if (this->TestLoad > 0) + { + if (processors <= spareLoad) + { + cmCTestLog(this->CTest, DEBUG, + "OK to run " << GetName(*test) << + ", it requires " << processors << + " procs & system load is: " << + systemLoad << std::endl); + allTestsFailedTestLoadCheck = false; + } + else + { + testLoadOk = false; + } + } - if(processors <= numToStart && this->StartTest(*test)) + if (processors <= minProcessorsRequired) { - if(this->StopTimePassed) - { - return; - } - numToStart -= processors; + minProcessorsRequired = processors; + testWithMinProcessors = GetName(*test); + } + + if(testLoadOk && processors <= numToStart && this->StartTest(*test)) + { + if(this->StopTimePassed) + { + return; + } + + numToStart -= processors; } else if(numToStart == 0) { - return; + break; + } + } + + if (allTestsFailedTestLoadCheck) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***** WAITING, "); + if (this->SerialTestRunning) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "Waiting for RUN_SERIAL test to finish."); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + "System Load: " << systemLoad << ", " + "Max Allowed Load: " << this->TestLoad << ", " + "Smallest test " << testWithMinProcessors << + " requires " << minProcessorsRequired); + } + cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); + + if (usedFakeLoadForTesting) + { + // Break out of the infinite loop of waiting for our fake load + // to come down. + this->StopTimePassed = true; + } + else + { + // Wait between 1 and 5 seconds before trying again. + cmCTestScriptHandler::SleepInSeconds( + cmSystemTools::RandomSeed() % 5 + 1); } } } diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 243318f..ed3e155 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -37,6 +37,7 @@ public: void SetTests(TestMap& tests, PropertiesMap& properties); // Set the max number of tests that can be run at the same time. void SetParallelLevel(size_t); + void SetTestLoad(unsigned long load); virtual void RunTests(); void PrintTestList(); void PrintLabels(); @@ -93,6 +94,7 @@ protected: bool CheckCycles(); int FindMaxIndex(); inline size_t GetProcessorsUsed(int index); + std::string GetName(int index); void LockResources(int index); void UnlockResources(int index); @@ -116,6 +118,7 @@ protected: std::set LockedResources; std::vector* TestResults; size_t ParallelLevel; // max number of process that can be run at once + unsigned long TestLoad; std::set RunningTests; // current running tests cmCTestTestHandler * TestHandler; cmCTest* CTest; diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 8b357ac..b7d8318 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -26,6 +26,7 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_SCHEDULE_RANDOM] = "SCHEDULE_RANDOM"; this->Arguments[ctt_STOP_TIME] = "STOP_TIME"; + this->Arguments[ctt_TEST_LOAD] = "TEST_LOAD"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -103,6 +104,38 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { this->CTest->SetStopTime(this->Values[ctt_STOP_TIME]); } + + // Test load is determined by: TEST_LOAD argument, + // or CTEST_TEST_LOAD script variable, or ctest --test-load + // command line argument... in that order. + unsigned long testLoad; + const char* ctestTestLoad + = this->Makefile->GetDefinition("CTEST_TEST_LOAD"); + if(this->Values[ctt_TEST_LOAD] && *this->Values[ctt_TEST_LOAD]) + { + if (!cmSystemTools::StringToULong(this->Values[ctt_TEST_LOAD], &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, "Invalid value for 'TEST_LOAD' : " + << this->Values[ctt_TEST_LOAD] << std::endl); + } + } + else if(ctestTestLoad && *ctestTestLoad) + { + if (!cmSystemTools::StringToULong(ctestTestLoad, &testLoad)) + { + testLoad = 0; + cmCTestLog(this->CTest, WARNING, + "Invalid value for 'CTEST_TEST_LOAD' : " << + ctestTestLoad << std::endl); + } + } + else + { + testLoad = this->CTest->GetTestLoad(); + } + handler->SetTestLoad(testLoad); + handler->SetQuiet(this->Quiet); return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index a1e5f36..0dfca97 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -60,6 +60,7 @@ protected: ctt_PARALLEL_LEVEL, ctt_SCHEDULE_RANDOM, ctt_STOP_TIME, + ctt_TEST_LOAD, ctt_LAST }; }; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 70b7f5c..59576f4 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1062,6 +1062,14 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, parallel->SetParallelLevel(this->CTest->GetParallelLevel()); parallel->SetTestHandler(this); parallel->SetQuiet(this->Quiet); + if(this->TestLoad > 0) + { + parallel->SetTestLoad(this->TestLoad); + } + else + { + parallel->SetTestLoad(this->CTest->GetTestLoad()); + } *this->LogFile << "Start testing: " << this->CTest->CurrentTime() << std::endl diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e3b7a2b..5887ba8 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -294,6 +294,7 @@ cmCTest::cmCTest() this->LabelSummary = true; this->ParallelLevel = 1; this->ParallelLevelSetInCli = false; + this->TestLoad = 0; this->SubmitIndex = 0; this->Failover = false; this->BatchJobs = false; @@ -393,6 +394,11 @@ void cmCTest::SetParallelLevel(int level) this->ParallelLevel = level < 1 ? 1 : level; } +void cmCTest::SetTestLoad(unsigned long load) +{ + this->TestLoad = load; +} + //---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { @@ -820,6 +826,20 @@ bool cmCTest::UpdateCTestConfiguration() cmSystemTools::ChangeDirectory(this->BinaryDir); } this->TimeOut = atoi(this->GetCTestConfiguration("TimeOut").c_str()); + std::string const& testLoad = this->GetCTestConfiguration("TestLoad"); + if (!testLoad.empty()) + { + unsigned long load; + if (cmSystemTools::StringToULong(testLoad.c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, "Invalid value for 'Test Load' : " + << testLoad << std::endl); + } + } if ( this->ProduceXML ) { this->CompressXMLFiles = cmSystemTools::IsOn( @@ -2051,6 +2071,21 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, } } + if(this->CheckArgument(arg, "--test-load") && i < args.size() - 1) + { + i++; + unsigned long load; + if (cmSystemTools::StringToULong(args[i].c_str(), &load)) + { + this->SetTestLoad(load); + } + else + { + cmCTestLog(this, WARNING, + "Invalid value for 'Test Load' : " << args[i] << std::endl); + } + } + if(this->CheckArgument(arg, "--no-compress-output")) { this->CompressTestOutput = false; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index db3ea10..47245ae 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -161,6 +161,9 @@ public: int GetParallelLevel() { return this->ParallelLevel; } void SetParallelLevel(int); + unsigned long GetTestLoad() { return this->TestLoad; } + void SetTestLoad(unsigned long); + /** * Check if CTest file exists */ @@ -499,6 +502,8 @@ private: int ParallelLevel; bool ParallelLevelSetInCli; + unsigned long TestLoad; + int CompatibilityMode; // information for the --build-and-test options diff --git a/Source/ctest.cxx b/Source/ctest.cxx index e784759..afcbd61 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -98,6 +98,7 @@ static const char * cmDocumentationOptions[][2] = {"--test-command", "The test to run with the --build-and-test option."}, {"--test-timeout", "The time limit in seconds, internal use only."}, + {"--test-load", "CPU load threshold for starting new parallel tests."}, {"--tomorrow-tag", "Nightly or experimental starts with next day tag."}, {"--ctest-config", "The configuration file used to initialize CTest state " "when submitting dashboards."}, diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index a3ce139..aba1daf 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake @@ -1,4 +1,5 @@ include(RunCMake) +set(RunCMake_TEST_TIMEOUT 60) unset(ENV{CTEST_PARALLEL_LEVEL}) unset(ENV{CTEST_OUTPUT_ON_FAILURE}) @@ -52,3 +53,35 @@ add_test(MergeOutput \"${CMAKE_COMMAND}\" -P \"${RunCMake_SOURCE_DIR}/MergeOutpu run_cmake_command(MergeOutput ${CMAKE_CTEST_COMMAND} -V) endfunction() run_MergeOutput() + + +function(run_TestLoad name load) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" " + add_test(TestLoad1 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") + add_test(TestLoad2 \"${CMAKE_COMMAND}\" -E echo \"test of --test-load\") +") + run_cmake_command(${name} ${CMAKE_CTEST_COMMAND} -j2 --test-load ${load} --test-timeout 5) +endfunction() + +# Tests for the --test-load feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_TestLoad(test-load-fail 2) + +# Verify that warning message is displayed but tests still start when +# an invalid argument is given. +run_TestLoad(test-load-invalid 'two') + +# Verify that new tests are started when the load average falls below +# our threshold. +run_TestLoad(test-load-pass 10) + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt new file mode 100644 index 0000000..153da09 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-fail-stdout.txt @@ -0,0 +1,2 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test TestLoad[1-2] requires 1\*\*\*\*\* diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt new file mode 100644 index 0000000..caab3b9 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stderr.txt @@ -0,0 +1 @@ +Invalid value for 'Test Load' : 'two' diff --git a/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-invalid-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt new file mode 100644 index 0000000..7ee3dae --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/test-load-pass-stdout.txt @@ -0,0 +1,7 @@ +^Test project .*/Tests/RunCMake/CTestCommandLine/TestLoad + Start 1: TestLoad1 + Start 2: TestLoad2 +1/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec +2/2 Test #[1-2]: TestLoad[1-2] ........................ Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt new file mode 100644 index 0000000..e203c10 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 4, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt new file mode 100644 index 0000000..7f2d7f6 --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'CTEST_TEST_LOAD' : ERR2 diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt new file mode 100644 index 0000000..b54220c --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt new file mode 100644 index 0000000..c221eed --- /dev/null +++ b/Tests/RunCMake/ctest_test/CTestTestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/CTestTestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index d906290..21d0447 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake @@ -1,6 +1,8 @@ include(RunCTest) +set(RunCMake_TEST_TIMEOUT 60) set(CASE_CTEST_TEST_ARGS "") +set(CASE_CTEST_TEST_LOAD "") function(run_ctest_test CASE_NAME) set(CASE_CTEST_TEST_ARGS "${ARGN}") @@ -8,3 +10,42 @@ function(run_ctest_test CASE_NAME) endfunction() run_ctest_test(TestQuiet QUIET) + +# Tests for the 'Test Load' feature of ctest +# +# Spoof a load average value to make these tests more reliable. +set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5) + +# Verify that new tests are started when the load average falls below +# our threshold. +run_ctest_test(TestLoadPass TEST_LOAD 6) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +run_ctest_test(TestLoadFail TEST_LOAD 2) + +# Verify that when an invalid "TEST_LOAD" value is given, a warning +# message is displayed and the value is ignored. +run_ctest_test(TestLoadInvalid TEST_LOAD "ERR1") + +# Verify that new tests are started when the load average falls below +# our threshold. +set(CASE_CTEST_TEST_LOAD 7) +run_ctest_test(CTestTestLoadPass) + +# Verify that new tests are not started when the load average exceeds +# our threshold. +set(CASE_CTEST_TEST_LOAD 4) +run_ctest_test(CTestTestLoadFail) + +# Verify that when an invalid "CTEST_TEST_LOAD" value is given, +# a warning message is displayed and the value is ignored. +set(CASE_CTEST_TEST_LOAD "ERR2") +run_ctest_test(CTestTestLoadInvalid) + +# Verify that the "TEST_LOAD" value has higher precedence than +# the "CTEST_TEST_LOAD" value +set(CASE_CTEST_TEST_LOAD "ERR3") +run_ctest_test(TestLoadOrder TEST_LOAD "ERR4") + +unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING}) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-result.txt b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt new file mode 100644 index 0000000..eafba1c --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stderr.txt @@ -0,0 +1 @@ +No tests were found!!! diff --git a/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt new file mode 100644 index 0000000..4d7ce48 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadFail-stdout.txt @@ -0,0 +1,2 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadFail-build +\*\*\*\*\* WAITING, System Load: 5, Max Allowed Load: 2, Smallest test RunCMakeVersion requires 1\*\*\*\*\*$ diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt new file mode 100644 index 0000000..40ddb3a --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR1 diff --git a/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt new file mode 100644 index 0000000..c4fd35b --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadInvalid-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadInvalid-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt new file mode 100644 index 0000000..1de730e --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stderr.txt @@ -0,0 +1 @@ +^Invalid value for 'TEST_LOAD' : ERR4 diff --git a/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt new file mode 100644 index 0000000..22da092 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadOrder-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadOrder-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt new file mode 100644 index 0000000..e5048f4 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestLoadPass-stdout.txt @@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/ctest_test/TestLoadPass-build + Start 1: RunCMakeVersion +1/1 Test #1: RunCMakeVersion .................. Passed +[0-9.]+ sec ++ +100% tests passed, 0 tests failed out of 1 ++ +Total Test time \(real\) = +[0-9.]+ sec$ diff --git a/Tests/RunCMake/ctest_test/test.cmake.in b/Tests/RunCMake/ctest_test/test.cmake.in index 1350abe..a8de6a3 100644 --- a/Tests/RunCMake/ctest_test/test.cmake.in +++ b/Tests/RunCMake/ctest_test/test.cmake.in @@ -8,6 +8,7 @@ set(CTEST_CMAKE_GENERATOR "@RunCMake_GENERATOR@") set(CTEST_CMAKE_GENERATOR_PLATFORM "@RunCMake_GENERATOR_PLATFORM@") set(CTEST_CMAKE_GENERATOR_TOOLSET "@RunCMake_GENERATOR_TOOLSET@") set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}") +set(CTEST_TEST_LOAD "@CASE_CTEST_TEST_LOAD@") set(ctest_test_args "@CASE_CTEST_TEST_ARGS@") ctest_start(Experimental) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=07c550caa20d4b1d6ebc08269d744ff6a45c0a6d commit 07c550caa20d4b1d6ebc08269d744ff6a45c0a6d Author: Zack Galbreath AuthorDate: Mon Jun 1 09:42:44 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:21:37 2015 -0400 cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation The original implementation of the RUN_SERIAL test property worked by having such a test consume all available processors. Instead use an explicit flag to indicate that a serial test is running. This avoids artificially inflating the number of processors a test is expected to consume. diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index bd090db..28aec3d 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -44,6 +44,7 @@ cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() this->RunningCount = 0; this->StopTimePassed = false; this->HasCycles = false; + this->SerialTestRunning = false; } cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() @@ -172,6 +173,11 @@ void cmCTestMultiProcessHandler::LockResources(int index) this->LockedResources.insert( this->Properties[index]->LockedResources.begin(), this->Properties[index]->LockedResources.end()); + + if (this->Properties[index]->RunSerial) + { + this->SerialTestRunning = true; + } } //--------------------------------------------------------- @@ -198,11 +204,9 @@ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) { size_t processors = static_cast(this->Properties[test]->Processors); - //If this is set to run serially, it must run alone. - //Also, if processors setting is set higher than the -j + //If processors setting is set higher than the -j //setting, we default to using all of the process slots. - if(this->Properties[test]->RunSerial - || processors > this->ParallelLevel) + if (processors > this->ParallelLevel) { processors = this->ParallelLevel; } @@ -248,9 +252,27 @@ void cmCTestMultiProcessHandler::StartNextTests() return; } + // Don't start any new tests if one with the RUN_SERIAL property + // is already running. + if (this->SerialTestRunning) + { + return; + } + TestList copy = this->SortedTests; for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) { + // Take a nap if we're currently performing a RUN_SERIAL test. + if (this->SerialTestRunning) + { + break; + } + // We can only start a RUN_SERIAL test if no other tests are also running. + if (this->Properties[*test]->RunSerial && this->RunningCount > 0) + { + continue; + } + size_t processors = GetProcessorsUsed(*test); if(processors <= numToStart && this->StartTest(*test)) @@ -319,6 +341,11 @@ bool cmCTestMultiProcessHandler::CheckOutput() this->WriteCheckpoint(test); this->UnlockResources(test); this->RunningCount -= GetProcessorsUsed(test); + if (this->Properties[test]->RunSerial) + { + this->SerialTestRunning = false; + } + delete p; } return true; diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 6440fbc..243318f 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -121,6 +121,7 @@ protected: cmCTest* CTest; bool HasCycles; bool Quiet; + bool SerialTestRunning; }; #endif http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8bf5a80b9668a31b85aaac00d1682228bbbbac5e commit 8bf5a80b9668a31b85aaac00d1682228bbbbac5e Author: Brad King AuthorDate: Wed Jun 24 09:41:58 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:21:37 2015 -0400 cmSystemTools: Add StringToULong helper Convert a string to an unsigned integer and reject any extra input. diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index e2adabe..7230a64 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -2955,3 +2955,12 @@ bool cmSystemTools::StringToLong(const char* str, long* value) *value = strtol(str, &endp, 10); return (*endp == '\0') && (endp != str) && (errno == 0); } + +//---------------------------------------------------------------------------- +bool cmSystemTools::StringToULong(const char* str, unsigned long* value) +{ + errno = 0; + char *endp; + *value = strtoul(str, &endp, 10); + return (*endp == '\0') && (endp != str) && (errno == 0); +} diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 6feb6c5..8ebb4e3 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -469,6 +469,7 @@ public: /** Convert string to long. Expected that the whole string is an integer */ static bool StringToLong(const char* str, long* value); + static bool StringToULong(const char* str, unsigned long* value); #ifdef _WIN32 struct WindowsFileRetry http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dffc307c81220ffc243abc3b87ecfd694bd4cd35 commit dffc307c81220ffc243abc3b87ecfd694bd4cd35 Author: Brad King AuthorDate: Wed Jun 24 09:53:37 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:21:34 2015 -0400 Tests: Teach RunCMake infrastructure to optionally timeout Add a RunCMake_TEST_TIMEOUT option that tests can set to cause RunCMake to limit the time it waits for the child process to finish. diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index 70c0d6c..46bc494 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -66,6 +66,11 @@ function(run_cmake test) else() set(actual_stderr_var actual_stderr) endif() + if(DEFINED RunCMake_TEST_TIMEOUT) + set(maybe_timeout TIMEOUT ${RunCMake_TEST_TIMEOUT}) + else() + set(maybe_timeout "") + endif() if(RunCMake_TEST_COMMAND) execute_process( COMMAND ${RunCMake_TEST_COMMAND} @@ -73,6 +78,7 @@ function(run_cmake test) OUTPUT_VARIABLE actual_stdout ERROR_VARIABLE ${actual_stderr_var} RESULT_VARIABLE actual_result + ${maybe_timeout} ) else() execute_process( @@ -87,6 +93,7 @@ function(run_cmake test) OUTPUT_VARIABLE actual_stdout ERROR_VARIABLE ${actual_stderr_var} RESULT_VARIABLE actual_result + ${maybe_timeout} ) endif() set(msg "") ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:23:32 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:23:32 -0400 (EDT) Subject: [Cmake-commits] CMake branch, master, updated. v3.3.0-rc3-287-g7e3ac12 Message-ID: <20150630142332.E9391B0538@public.kitware.com> 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, master has been updated via 7e3ac12df45fa42b590971accaf1db89b1a0ffb6 (commit) via 327490e698db7a74f6a8e8543e99c6c7c9333a8f (commit) from 5ff47ea93d490616292aae88847b42d56200d9e7 (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=7e3ac12df45fa42b590971accaf1db89b1a0ffb6 commit 7e3ac12df45fa42b590971accaf1db89b1a0ffb6 Merge: 5ff47ea 327490e Author: Brad King AuthorDate: Tue Jun 30 10:23:31 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 10:23:31 2015 -0400 Merge topic 'enable_language-fail-earlier' 327490e6 enable_language: Allow CMakeDetermineCompiler module to fail early ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 4 ++++ .../CMP0004-NEW-result.txt => Languages/DetermineFail-result.txt} | 0 Tests/RunCMake/Languages/DetermineFail-stderr.txt | 5 +++++ Tests/RunCMake/Languages/DetermineFail.cmake | 2 ++ Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake | 1 + Tests/RunCMake/Languages/RunCMakeTest.cmake | 2 ++ 6 files changed, 14 insertions(+) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Languages/DetermineFail-result.txt} (100%) create mode 100644 Tests/RunCMake/Languages/DetermineFail-stderr.txt create mode 100644 Tests/RunCMake/Languages/DetermineFail.cmake create mode 100644 Tests/RunCMake/Languages/Modules/CMakeDetermineFailCompiler.cmake hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:23:48 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:23:48 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-746-g2beb245 Message-ID: <20150630142348.1644EB0544@public.kitware.com> 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 2beb245b57e47bf41ef2a7a469f74cfd16420748 (commit) via 7e3ac12df45fa42b590971accaf1db89b1a0ffb6 (commit) via 5ff47ea93d490616292aae88847b42d56200d9e7 (commit) from fe09e6f9165d594c1a455f99f99c2700237957b6 (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=2beb245b57e47bf41ef2a7a469f74cfd16420748 commit 2beb245b57e47bf41ef2a7a469f74cfd16420748 Merge: fe09e6f 7e3ac12 Author: Brad King AuthorDate: Tue Jun 30 10:23:40 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:23:40 2015 -0400 Merge branch 'master' into next ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake From brad.king at kitware.com Tue Jun 30 10:36:23 2015 From: brad.king at kitware.com (Brad King) Date: Tue, 30 Jun 2015 10:36:23 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-753-gd2e9ccb Message-ID: <20150630143623.4BC80B06F1@public.kitware.com> 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 d2e9ccbc7f3de688d3ec187ab093607eab8d82d7 (commit) via 7fe42a11e81a157a0dc4f504af2394cf24a80834 (commit) via def006e5fed52be4f418e0d51c6dbbef1f1392b7 (commit) via f06220dc8a4550af398d653c68a1deee392a81a2 (commit) via e7c9ac90937aaaa68b67709217142afe2e6c8e40 (commit) via 4b60809ceb4842bbd39d5c0d04616ce90cc44ebf (commit) via c078a36a23189eb3c11bf128c978f9484d149f26 (commit) from 2beb245b57e47bf41ef2a7a469f74cfd16420748 (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=d2e9ccbc7f3de688d3ec187ab093607eab8d82d7 commit d2e9ccbc7f3de688d3ec187ab093607eab8d82d7 Merge: 2beb245 7fe42a1 Author: Brad King AuthorDate: Tue Jun 30 10:36:22 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 10:36:22 2015 -0400 Merge topic 'auto_export_dll_symbols' into next 7fe42a11 Windows: Optionally generate DLL module definition files automatically def006e5 bindexplib: Build source as part of CMakeLib f06220dc bindexplib: Wrap long lines e7c9ac90 bindexplib: Drop code that CMake does not need 4b60809c bindexplib: Add copyright/license notice block c078a36a bindexplib: Import original implementation from CERN http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7fe42a11e81a157a0dc4f504af2394cf24a80834 commit 7fe42a11e81a157a0dc4f504af2394cf24a80834 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:33:09 2015 -0400 Windows: Optionally generate DLL module definition files automatically Create target property WINDOWS_EXPORT_ALL_SYMBOLS to automatically generate a module definition file from MS-compatible .obj files and give it to the linker in order to export all symbols from the .dll part of a SHARED library. diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 9a60a10..b767ed6 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -251,6 +251,7 @@ Properties on Targets /prop_tgt/VS_WINRT_EXTENSIONS /prop_tgt/VS_WINRT_REFERENCES /prop_tgt/WIN32_EXECUTABLE + /prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS /prop_tgt/XCODE_ATTRIBUTE_an-attribute /prop_tgt/XCTEST diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 0e6222f..7c7db5e 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -275,6 +275,7 @@ Variables that Control the Build /variable/CMAKE_USE_RELATIVE_PATHS /variable/CMAKE_VISIBILITY_INLINES_HIDDEN /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD + /variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS /variable/CMAKE_WIN32_EXECUTABLE /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute /variable/EXECUTABLE_OUTPUT_PATH diff --git a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst new file mode 100644 index 0000000..3f48af8 --- /dev/null +++ b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -0,0 +1,18 @@ +WINDOWS_EXPORT_ALL_SYMBOLS +-------------------------- + +This property is implemented only for MS-compatible tools on Windows. + +Enable this boolean property to automatically create a module definition +(``.def``) file with all global symbols found in the input ``.obj`` files +for a ``SHARED`` library on Windows. The module definition file will be +passed to the linker causing all symbols to be exported from the ``.dll``. +For global *data* symbols, ``__declspec(dllimport)`` must still be used when +compiling against the code in the ``.dll``. All other function symbols will +be automatically exported and imported by callers. This simplifies porting +projects to Windows by reducing the need for explicit ``dllexport`` markup, +even in ``C++`` classes. + +This property is initialized by the value of +the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set +when a target is created. diff --git a/Help/release/dev/auto_export_dll_symbols.rst b/Help/release/dev/auto_export_dll_symbols.rst new file mode 100644 index 0000000..9db2b5e --- /dev/null +++ b/Help/release/dev/auto_export_dll_symbols.rst @@ -0,0 +1,6 @@ +auto_export_dll_symbols +----------------------- + +* On Windows with MS-compatible tools, CMake learned to optionally + generate a module definition (``.def``) file for ``SHARED`` libraries. + See the :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. diff --git a/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst new file mode 100644 index 0000000..1636842 --- /dev/null +++ b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -0,0 +1,6 @@ +CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS +-------------------------------- + +Default value for :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. +This variable is used to initialize the property on each target as it is +created. diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 13fe8bc..aeaa2bd 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -46,8 +46,10 @@ else() set(_PLATFORM_LINK_FLAGS "") endif() +set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1) if(CMAKE_GENERATOR MATCHES "Visual Studio 6") set (CMAKE_NO_BUILD_TYPE 1) + set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 0) # not implemented for VS6 endif() if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio") set (CMAKE_NO_BUILD_TYPE 1) diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index f14d301..879d9bc 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -198,7 +198,16 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, symbol = stringTable + pSymbolTable->N.Name.Long; } + // clear out any leading spaces while (isspace(symbol[0])) symbol.erase(0,1); + // if it starts with _ and has an @ then it is a __cdecl + // so remove the @ stuff for the export + if(symbol[0] == '_') { + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) { + symbol.erase(posAt); + } + } if (symbol[0] == '_') symbol.erase(0,1); if (fImportFlag) { fImportFlag = 0; @@ -210,9 +219,13 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, */ const char *scalarPrefix = "??_G"; const char *vectorPrefix = "??_E"; + // original code had a check for + // symbol.find("real@") == std::string::npos) + // but if this disallows memmber functions with the name real + // if scalarPrefix and vectorPrefix are not found then print + // the symbol if (symbol.compare(0, 4, scalarPrefix) && - symbol.compare(0, 4, vectorPrefix) && - symbol.find("real@") == std::string::npos) + symbol.compare(0, 4, vectorPrefix) ) { SectChar = pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; @@ -224,7 +237,7 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, !(SectChar & IMAGE_SCN_MEM_READ)) { fprintf(fout, "\t%s\n", symbol.c_str()); } else { - // printf(" strange symbol: %s \n",s); + // printf(" strange symbol: %s \n",symbol.c_str()); } } } @@ -309,7 +322,7 @@ DumpFile(const char* filename, FILE *fout) OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hFile == INVALID_HANDLE_VALUE) { - fprintf(stderr, "Couldn't open file with CreateFile()\n"); + fprintf(stderr, "Couldn't open file [%s] with CreateFile()\n", filename); return; } diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 585d19a..a41e843 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -13,6 +13,7 @@ #include "cmGlobalVisualStudioGenerator.h" #include "cmCallVisualStudioMacro.h" +#include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" #include "cmLocalVisualStudioGenerator.h" #include "cmMakefile.h" @@ -887,3 +888,68 @@ std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir( } return tmp; } + +void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( + cmGeneratorTarget* gt, std::vector& commands, + std::string const& configName) +{ + std::vector outputs; + std::string deffile = gt->ObjectDirectory; + deffile += "/exportall.def"; + outputs.push_back(deffile); + std::vector empty; + std::vector objectSources; + gt->GetObjectSources(objectSources, configName); + std::map mapping; + for(std::vector::const_iterator it + = objectSources.begin(); it != objectSources.end(); ++it) + { + mapping[*it]; + } + gt->LocalGenerator-> + ComputeObjectFilenames(mapping, gt); + std::string obj_dir = gt->ObjectDirectory; + std::string cmakeCommand = cmSystemTools::GetCMakeCommand(); + cmSystemTools::ConvertToWindowsExtendedPath(cmakeCommand); + cmCustomCommandLine cmdl; + cmdl.push_back(cmakeCommand); + cmdl.push_back("-E"); + cmdl.push_back("__create_def"); + cmdl.push_back(deffile); + std::string obj_dir_expanded = obj_dir; + cmSystemTools::ReplaceString(obj_dir_expanded, + this->GetCMakeCFGIntDir(), + configName.c_str()); + std::string objs_file = obj_dir_expanded; + cmSystemTools::MakeDirectory(objs_file.c_str()); + objs_file += "/objects.txt"; + cmdl.push_back(objs_file); + cmGeneratedFileStream fout(objs_file.c_str()); + if(!fout) + { + cmSystemTools::Error("could not open ", objs_file.c_str()); + return; + } + for(std::vector::const_iterator it + = objectSources.begin(); it != objectSources.end(); ++it) + { + // Find the object file name corresponding to this source file. + std::map::const_iterator + map_it = mapping.find(*it); + // It must exist because we populated the mapping just above. + assert(!map_it->second.empty()); + std::string objFile = obj_dir + map_it->second; + // replace $(ConfigurationName) in the object names + cmSystemTools::ReplaceString(objFile, this->GetCMakeCFGIntDir(), + configName.c_str()); + fout << objFile << "\n"; + } + cmCustomCommandLines commandLines; + commandLines.push_back(cmdl); + cmCustomCommand command(gt->Target->GetMakefile(), + outputs, empty, empty, + commandLines, + "Auto build dll exports", + "."); + commands.push_back(command); +} diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 69b4564..022e190 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -102,6 +102,10 @@ public: const std::string& config) const; void ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const; + + void AddSymbolExportCommand( + cmGeneratorTarget*, std::vector& commands, + std::string const& configName); protected: virtual void Generate(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index dc3a16d..e4eb014 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1081,6 +1081,16 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout, this->ConvertToOutputFormat(this->ModuleDefinitionFile, SHELL); linkOptions.AddFlag("ModuleDefinitionFile", defFile.c_str()); } + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)/exportall.def"); + } + } switch(target.GetType()) { case cmTarget::UNKNOWN_LIBRARY: @@ -2015,7 +2025,30 @@ void cmLocalVisualStudio7Generator // Add pre-link event. tool = this->FortranProject? "VFPreLinkEventTool":"VCPreLinkEventTool"; event.Start(tool); - event.Write(target.GetPreLinkCommands()); + bool addedPrelink = false; + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + addedPrelink = true; + std::vector commands = + target.GetPreLinkCommands(); + cmGlobalVisualStudioGenerator* gg + = static_cast(this->GlobalGenerator); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(&target); + gg->AddSymbolExportCommand( + gt, commands, configName); + event.Write(commands); + } + } + if (!addedPrelink) + { + event.Write(target.GetPreLinkCommands()); + } cmsys::auto_ptr pcc( this->MaybeCreateImplibDir(target, configName, this->FortranProject)); if(pcc.get()) diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 660027c..ffdd27b 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -563,6 +563,57 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules useResponseFileForObjects, buildObjs, depends, useWatcomQuote); + // maybe create .def file from list of objects + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string name_of_def_file = + this->Target->GetSupportDirectory(); + name_of_def_file += std::string("/") + + this->Target->GetName(); + name_of_def_file += ".def"; + std::string cmd = cmSystemTools::GetCMakeCommand(); + cmd = this->Convert(cmd, cmLocalGenerator::NONE, + cmLocalGenerator::SHELL); + cmd += " -E __create_def "; + cmd += this->Convert(name_of_def_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + cmd += " "; + std::string objlist_file = name_of_def_file; + objlist_file += ".objs"; + cmd += this->Convert(objlist_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + real_link_commands.push_back(cmd); + // create a list of obj files for the -E __create_def to read + cmGeneratedFileStream fout(objlist_file.c_str()); + for(std::vector::const_iterator i = this->Objects.begin(); + i != this->Objects.end(); ++i) + { + fout << *i << "\n"; + } + for(std::vector::const_iterator i = + this->ExternalObjects.begin(); + i != this->ExternalObjects.end(); ++i) + { + fout << *i << "\n"; + } + // now add the def file link flag + linkFlags += " "; + linkFlags += + this->Makefile->GetSafeDefinition("CMAKE_LINK_DEF_FILE_FLAG"); + linkFlags += this->Convert(name_of_def_file, + cmLocalGenerator::START_OUTPUT, + cmLocalGenerator::SHELL); + linkFlags += " "; + } + } + cmLocalGenerator::RuleVariables vars; vars.TargetPDB = targetOutPathPDB.c_str(); diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 2fe53bf..4603de8 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -486,6 +486,24 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() linkPath, &genTarget, useWatcomQuote); + if(this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS") + && target.GetType() == cmTarget::SHARED_LIBRARY) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string dllname = targetOutput; + std::string name_of_def_file + = target.GetSupportDirectory(); + name_of_def_file += "/" + target.GetName(); + name_of_def_file += ".def "; + vars["LINK_FLAGS"] += " /DEF:"; + vars["LINK_FLAGS"] += this->GetLocalGenerator() + ->ConvertToOutputFormat(name_of_def_file.c_str(), + cmLocalGenerator::SHELL); + } + } this->addPoolNinjaVariable("JOB_POOL_LINK", &target, vars); @@ -600,6 +618,43 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() } } + // maybe create .def file from list of objects + if (target.GetType() == cmTarget::SHARED_LIBRARY && + this->GetMakefile()->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = target.GetProperty(autodef_prop); + if (autodef && *autodef) + { + std::string cmakeCommand = + this->GetLocalGenerator()->ConvertToOutputFormat( + cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); + std::string dllname = targetOutput; + std::string name_of_def_file + = target.GetSupportDirectory(); + name_of_def_file += "/" + target.GetName(); + name_of_def_file += ".def"; + std::string cmd = cmakeCommand; + cmd += " -E __create_def "; + cmd += this->GetLocalGenerator() + ->ConvertToOutputFormat(name_of_def_file.c_str(), + cmLocalGenerator::SHELL); + cmd += " "; + cmNinjaDeps objs = this->GetObjects(); + std::string obj_list_file = name_of_def_file; + obj_list_file += ".objs"; + cmd += this->GetLocalGenerator() + ->ConvertToOutputFormat(obj_list_file.c_str(), + cmLocalGenerator::SHELL); + preLinkCmdLines.push_back(cmd); + // create a list of obj files for the -E __create_def to read + cmGeneratedFileStream fout(obj_list_file.c_str()); + for(cmNinjaDeps::iterator i=objs.begin(); i != objs.end(); ++i) + { + fout << *i << "\n"; + } + } + } // If we have any PRE_LINK commands, we need to go back to HOME_OUTPUT for // the link commands. if (!preLinkCmdLines.empty()) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index c7a13bc..8448431 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -429,6 +429,11 @@ void cmTarget::SetMakefile(cmMakefile* mf) { this->SetProperty("POSITION_INDEPENDENT_CODE", "True"); } + if(this->TargetTypeValue == cmTarget::SHARED_LIBRARY) + { + this->SetPropertyDefault("WINDOWS_EXPORT_ALL_SYMBOLS", 0); + } + if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY) { this->SetPropertyDefault("POSITION_INDEPENDENT_CODE", 0); diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 12a1e42..024a1c5 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2466,6 +2466,17 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) "%(IgnoreSpecificDefaultLibraries)"); } + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + linkOptions.AddFlag("ModuleDefinitionFile", "$(IntDir)exportall.def"); + } + } + this->LinkOptions[config] = pOptions.release(); return true; } @@ -2613,8 +2624,27 @@ void cmVisualStudio10TargetGenerator::WriteItemDefinitionGroups() void cmVisualStudio10TargetGenerator::WriteEvents(std::string const& configName) { - this->WriteEvent("PreLinkEvent", - this->Target->GetPreLinkCommands(), configName); + bool addedPrelink = false; + if (this->Target->GetType() == cmTarget::SHARED_LIBRARY && + this->Makefile->IsOn("CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS")) + { + std::string const autodef_prop = "WINDOWS_EXPORT_ALL_SYMBOLS"; + const char *autodef = this->Target->GetProperty(autodef_prop); + if (autodef && *autodef) + { + addedPrelink = true; + std::vector commands = + this->Target->GetPreLinkCommands(); + this->GlobalGenerator->AddSymbolExportCommand( + this->GeneratorTarget, commands, configName); + this->WriteEvent("PreLinkEvent", commands, configName); + } + } + if (!addedPrelink) + { + this->WriteEvent("PreLinkEvent", + this->Target->GetPreLinkCommands(), configName); + } this->WriteEvent("PreBuildEvent", this->Target->GetPreBuildCommands(), configName); this->WriteEvent("PostBuildEvent", diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 3ea2186..d97abcc 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -34,6 +34,10 @@ #include #include // required for atoi +#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) +// defined in binexplib.cxx +void DumpFile(const char* filename, FILE *fout); +#endif void CMakeCommandUsage(const char* program) { @@ -211,6 +215,38 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) return 0; } +#if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE) + else if(args[1] == "__create_def") + { + if(args.size() < 4) + { + std::cerr << + "__create_def Usage: -E __create_def outfile.def objlistfile\n"; + return 1; + } + FILE* fout = cmsys::SystemTools::Fopen(args[2].c_str(), "w+"); + if(!fout) + { + std::cerr << "could not open output .def file: " << args[2].c_str() + << "\n"; + return 1; + } + cmsys::ifstream fin(args[3].c_str(), + std::ios::in | std::ios::binary); + if(!fin) + { + std::cerr << "could not open object list file: " << args[3].c_str() + << "\n"; + return 1; + } + std::string objfile; + while(cmSystemTools::GetLineFromStream(fin, objfile)) + { + DumpFile(objfile.c_str(), fout); + } + return 0; + } +#endif // run include what you use command and then run the compile // command. This is an internal undocumented option and should // only be used by CMake itself when running iwyu. diff --git a/Tests/RunCMake/AutoExportDll/AutoExport.cmake b/Tests/RunCMake/AutoExportDll/AutoExport.cmake new file mode 100644 index 0000000..3b2b2c5 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/AutoExport.cmake @@ -0,0 +1,7 @@ +project(autoexport) +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${autoexport_BINARY_DIR}/bin) +add_subdirectory(sub) +add_library(autoexport SHARED hello.cxx world.cxx foo.c) +add_executable(say say.cxx) +target_link_libraries(say autoexport autoexport2) diff --git a/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt b/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt new file mode 100644 index 0000000..d483c2c --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/AutoExportBuild-stderr.txt @@ -0,0 +1 @@ +^.*$ diff --git a/Tests/RunCMake/AutoExportDll/CMakeLists.txt b/Tests/RunCMake/AutoExportDll/CMakeLists.txt new file mode 100644 index 0000000..18dfd26 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.2) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake new file mode 100644 index 0000000..3784a6a --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/RunCMakeTest.cmake @@ -0,0 +1,26 @@ +include(RunCMake) +set(RunCMake_TEST_NO_CLEAN TRUE) +set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/AutoExport-build") +# start by cleaning up because we don't clean up along the way +file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") +# configure the AutoExport test +run_cmake(AutoExport) +unset(RunCMake_TEST_OPTIONS) +# don't run this test on VS 6 as it is not supported +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio 6|Watcom WMake|Borland Makefiles") + return() +endif() +# we build debug so the say.exe will be found in Debug/say.exe for +# Visual Studio generators +if("${RunCMake_GENERATOR}" MATCHES "Visual Studio|Xcode") + set(INTDIR "Debug/") +endif() +# build AutoExport +run_cmake_command(AutoExportBuild ${CMAKE_COMMAND} --build + ${RunCMake_TEST_BINARY_DIR} --config Debug --clean-first) +# run the executable that uses symbols from the dll +if(WIN32) + set(EXE_EXT ".exe") +endif() +run_cmake_command(AutoExportRun + ${RunCMake_BINARY_DIR}/AutoExport-build/bin/${INTDIR}say${EXE_EXT}) diff --git a/Tests/RunCMake/AutoExportDll/foo.c b/Tests/RunCMake/AutoExportDll/foo.c new file mode 100644 index 0000000..4b1318b --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/foo.c @@ -0,0 +1,15 @@ +#ifdef _MSC_VER +#include "windows.h" +#else +#define WINAPI +#endif + +int WINAPI foo() +{ + return 10; +} + +int bar() +{ + return 5; +} diff --git a/Tests/RunCMake/AutoExportDll/hello.cxx b/Tests/RunCMake/AutoExportDll/hello.cxx new file mode 100644 index 0000000..3933fc1 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/hello.cxx @@ -0,0 +1,13 @@ +#include +#include "hello.h" +int Hello::Data = 0; +void Hello::real() +{ + return; +} +void hello() +{ + printf("hello"); +} +void Hello::operator delete[](void*) {}; +void Hello::operator delete(void*) {}; diff --git a/Tests/RunCMake/AutoExportDll/hello.h b/Tests/RunCMake/AutoExportDll/hello.h new file mode 100644 index 0000000..3749b97 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/hello.h @@ -0,0 +1,18 @@ +#ifndef _MSC_VER +#define winexport +#else +#ifdef autoexport_EXPORTS +#define winexport +#else +#define winexport __declspec(dllimport) +#endif +#endif + +class Hello +{ +public: + static winexport int Data; + void real(); + static void operator delete[](void*); + static void operator delete(void*); +}; diff --git a/Tests/RunCMake/AutoExportDll/say.cxx b/Tests/RunCMake/AutoExportDll/say.cxx new file mode 100644 index 0000000..655b3c2 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/say.cxx @@ -0,0 +1,37 @@ +#include +#include "hello.h" +#ifdef _MSC_VER +#include "windows.h" +#else +#define WINAPI +#endif + +extern "C" +{ +// test __cdecl stuff + int WINAPI foo(); +// test regular C + int bar(); +} + +// test c++ functions +// forward declare hello and world +void hello(); +void world(); + +int main() +{ + // test static data (needs declspec to work) + Hello::Data = 120; + Hello h; + h.real(); + hello(); + printf(" "); + world(); + printf("\n"); + foo(); + printf("\n"); + bar(); + printf("\n"); + return 0; +} diff --git a/Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt b/Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt new file mode 100644 index 0000000..dee33e6 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/sub/CMakeLists.txt @@ -0,0 +1 @@ +add_library(autoexport2 SHARED sub.cxx) diff --git a/Tests/RunCMake/AutoExportDll/sub/sub.cxx b/Tests/RunCMake/AutoExportDll/sub/sub.cxx new file mode 100644 index 0000000..9766b41 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/sub/sub.cxx @@ -0,0 +1,4 @@ +int sub() +{ + return 10; +} diff --git a/Tests/RunCMake/AutoExportDll/world.cxx b/Tests/RunCMake/AutoExportDll/world.cxx new file mode 100644 index 0000000..3a54df3 --- /dev/null +++ b/Tests/RunCMake/AutoExportDll/world.cxx @@ -0,0 +1,6 @@ +#include "stdio.h" + +void world() +{ + printf("world"); +} diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index bc706d3..743ef4b 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -266,3 +266,6 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") endif() add_RunCMake_test_group(CPack "DEB;RPM") +# add a test to make sure symbols are exported from a shared library +# for MSVC compilers CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS property is used +add_RunCMake_test(AutoExportDll) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=def006e5fed52be4f418e0d51c6dbbef1f1392b7 commit def006e5fed52be4f418e0d51c6dbbef1f1392b7 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:32:57 2015 -0400 bindexplib: Build source as part of CMakeLib diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 6d012fd..069f283 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -430,6 +430,7 @@ if (WIN32) set(SRCS ${SRCS} cmCallVisualStudioMacro.cxx cmCallVisualStudioMacro.h + bindexplib.cxx ) if(NOT UNIX) diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 8328213..f14d301 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -71,10 +71,12 @@ *---------------------------------------------------------------------- */ +#include #include #include #include #include +#include /* + * Utility func, strstr with size @@ -89,7 +91,7 @@ const char* StrNStr(const char* start, const char* find, size_t &size) { } len = strlen(find); - while (hint = (const char*) memchr(start, find[0], size-len+1)) { + while ((hint = (const char*) memchr(start, find[0], size-len+1))) { size -= (hint - start); if (!strncmp(hint, find, len)) return hint; @@ -169,7 +171,7 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, void DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, - FILE *fout, unsigned cSymbols) + FILE *fout, DWORD_PTR cSymbols) { unsigned i; PSTR stringTable; @@ -295,14 +297,15 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) *---------------------------------------------------------------------- */ void -DumpFile(LPSTR filename, FILE *fout) +DumpFile(const char* filename, FILE *fout) { HANDLE hFile; HANDLE hFileMapping; LPVOID lpFileBase; PIMAGE_DOS_HEADER dosHeader; - hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, + hFile = CreateFileW(cmsys::Encoding::ToWide(filename).c_str(), + GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hFile == INVALID_HANDLE_VALUE) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f06220dc8a4550af398d653c68a1deee392a81a2 commit f06220dc8a4550af398d653c68a1deee392a81a2 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:32:53 2015 -0400 bindexplib: Wrap long lines diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 33f8161..8328213 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -109,7 +109,8 @@ const char* StrNStr(const char* start, const char* find, size_t &size) { *---------------------------------------------------------------------- */ int -HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER pSectionHeaders) +HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, + PIMAGE_SECTION_HEADER pSectionHeaders) { static int fImportFlag = 0; /* The status is nor defined yet */ WORD i; @@ -124,12 +125,14 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER p i = 0; foundExports = 0; pDirectivesSectionHeader = 0; - for(i = 0; i < pImageFileHeader->NumberOfSections && !pDirectivesSectionHeader; i++) + for(i = 0; (i < pImageFileHeader->NumberOfSections && + !pDirectivesSectionHeader); i++) if (!strncmp((const char*)&pSectionHeaders[i].Name[0], ".drectve",8)) pDirectivesSectionHeader = &pSectionHeaders[i]; if (!pDirectivesSectionHeader) return 0; - rawdata=(const char*)pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; + rawdata=(const char*) + pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; if (!pDirectivesSectionHeader->PointerToRawData || !rawdata) return 0; size = pDirectivesSectionHeader->SizeOfRawData; @@ -164,7 +167,8 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER p *---------------------------------------------------------------------- */ void -DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, +DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, + PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout, unsigned cSymbols) { unsigned i; @@ -179,7 +183,8 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH stringTable = (PSTR)&pSymbolTable[cSymbols]; for ( i=0; i < cSymbols; i++ ) { - if (pSymbolTable->SectionNumber > 0 && ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { + if (pSymbolTable->SectionNumber > 0 && + ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { /* * The name of the Function entry points @@ -207,12 +212,14 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH symbol.compare(0, 4, vectorPrefix) && symbol.find("real@") == std::string::npos) { - SectChar = pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; + SectChar = + pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) { // Read only (i.e. constants) must be excluded fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); } else { - if ( pSymbolTable->Type || !(SectChar & IMAGE_SCN_MEM_READ)) { + if ( pSymbolTable->Type || + !(SectChar & IMAGE_SCN_MEM_READ)) { fprintf(fout, "\t%s\n", symbol.c_str()); } else { // printf(" strange symbol: %s \n",s); @@ -221,7 +228,8 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH } } } - else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && !pSymbolTable->Type && 0){ + else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && + !pSymbolTable->Type && 0) { /* * The IMPORT global variable entry points */ @@ -271,9 +279,11 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) pImageFileHeader->SizeOfOptionalHeader); - int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders); + int haveExports = HaveExportedObjects(pImageFileHeader, + PCOFFSectionHeaders); if (!haveExports) - DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, + fout, COFFSymbolCount); } /* @@ -322,7 +332,8 @@ DumpFile(LPSTR filename, FILE *fout) } /* Does it look like a i386 COFF OBJ file??? */ else if ( - ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) + ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || + (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) && (dosHeader->e_sp == 0) ) { /* http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e7c9ac90937aaaa68b67709217142afe2e6c8e40 commit e7c9ac90937aaaa68b67709217142afe2e6c8e40 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:32:51 2015 -0400 bindexplib: Drop code that CMake does not need diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index a86318f..33f8161 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -71,290 +71,12 @@ *---------------------------------------------------------------------- */ -static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; - #include #include #include #include /* -*---------------------------------------------------------------------- -* GetArgcArgv -- -* -* Break up a line into argc argv -*---------------------------------------------------------------------- -*/ -int -GetArgcArgv(std::string &s, char **argv) -{ - int quote = 0; - int argc = 0; - std::string::iterator bp = s.begin(); - - while (1) { - while (isspace(*bp)) { - bp++; - } - if (*bp == '\n' || *bp == '\0') { - *bp = '\0'; - return argc; - } - if (*bp == '\"') { - quote = 1; - bp++; - } - argv[argc++] = &(*bp); - - while (*bp != '\0') { - if (quote) { - if (*bp == '\"') { - quote = 0; - *bp = '\0'; - bp++; - break; - } - bp++; - continue; - } - if (isspace(*bp)) { - *bp = '\0'; - bp++; - break; - } - bp++; - } - } -} - -/* -* The names of the first group of possible symbol table storage classes -*/ -char * SzStorageClass1[] = { - "NULL","AUTOMATIC","EXTERNAL","STATIC","REGISTER","EXTERNAL_DEF","LABEL", - "UNDEFINED_LABEL","MEMBER_OF_STRUCT","ARGUMENT","STRUCT_TAG", - "MEMBER_OF_UNION","UNION_TAG","TYPE_DEFINITION","UNDEFINED_STATIC", - "ENUM_TAG","MEMBER_OF_ENUM","REGISTER_PARAM","BIT_FIELD" -}; - -/* -* The names of the second group of possible symbol table storage classes -*/ -char * SzStorageClass2[] = { - "BLOCK","FUNCTION","END_OF_STRUCT","FILE","SECTION","WEAK_EXTERNAL" -}; - -/* -*---------------------------------------------------------------------- -* GetSZStorageClass -- -* -* Given a symbol storage class value, return a descriptive -* ASCII string -*---------------------------------------------------------------------- -*/ -PSTR -GetSZStorageClass(BYTE storageClass) -{ - if ( storageClass <= IMAGE_SYM_CLASS_BIT_FIELD ) - return SzStorageClass1[storageClass]; - else if ( (storageClass >= IMAGE_SYM_CLASS_BLOCK) - && (storageClass <= IMAGE_SYM_CLASS_WEAK_EXTERNAL) ) - return SzStorageClass2[storageClass-IMAGE_SYM_CLASS_BLOCK]; - else - return "???"; -} - -void AddHex(std::string& buf, long val, bool caps=false) -{ - buf += "0x"; - size_t len=buf.length(); - while (val) { - char hex = (char)(val & 16); - val = val >> 4; - if (hex<10) hex+='0'; - else if (caps) hex+='A'-10; - else hex+='a'-10; - buf.insert(len, hex, 1); - } -} - -/* -*---------------------------------------------------------------------- -* GetSectionName -- -* -* Used by DumpSymbolTable, it gives meaningful names to -* the non-normal section number. -* -* Results: -* A name is returned in buffer -*---------------------------------------------------------------------- -*/ -void -GetSectionName(PIMAGE_SYMBOL pSymbolTable, std::string& buffer) -{ - DWORD section; - - section = pSymbolTable->SectionNumber; - - switch ( (SHORT)section ) - { - case IMAGE_SYM_UNDEFINED: if (pSymbolTable->Value) buffer += "COMM"; else buffer += "UNDEF"; break; - case IMAGE_SYM_ABSOLUTE: buffer += "ABS "; break; - case IMAGE_SYM_DEBUG: buffer += "DEBUG"; break; - default: AddHex(buffer, section, true); - } -} - -/* -*---------------------------------------------------------------------- -* GetSectionCharacteristics -- -* -* Converts the Characteristics field of IMAGE_SECTION_HEADER -* to print. -* -* Results: -* A definiton of the section symbol type -*---------------------------------------------------------------------- -*/ -void -GetSectionCharacteristics(PIMAGE_SECTION_HEADER pSectionHeaders, int nSectNum, std::string &buffer) -{ - DWORD SectChar; - std::string TempBuf; - buffer.clear(); - if (nSectNum > 0) { - SectChar = pSectionHeaders[nSectNum-1].Characteristics; - - buffer = " "; - AddHex(buffer, SectChar); - if (SectChar & IMAGE_SCN_CNT_CODE) buffer += " Code"; - else if (SectChar & IMAGE_SCN_CNT_INITIALIZED_DATA) buffer += " Init. data"; - else if (SectChar & IMAGE_SCN_CNT_UNINITIALIZED_DATA ) buffer += " UnInit data"; - else buffer += " Unknow type"; - - if (SectChar & IMAGE_SCN_MEM_READ) { - buffer += " Read"; - if (SectChar & IMAGE_SCN_MEM_WRITE) - buffer += " and Write"; - else buffer += " only"; - } - else if (SectChar & IMAGE_SCN_MEM_WRITE) - buffer +=" Write only"; - - } -} - -/* -*---------------------------------------------------------------------- -* DumpSymbolTable -- -* -* Dumps a COFF symbol table from an EXE or OBJ. We only use -* it to dump tables from OBJs. -*---------------------------------------------------------------------- -*/ -void -DumpSymbolTable(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout, unsigned cSymbols) -{ - unsigned i; - PSTR stringTable; - std::string sectionName; - std::string sectionCharacter; - int iSectNum; - - fprintf(fout, "Symbol Table - %X entries (* = auxillary symbol)\n", - cSymbols); - - fprintf(fout, - "Indx Name Value Section cAux Type Storage Character\n" - "---- -------------------- -------- ---------- ----- ------- -------- ---------\n"); - - /* - * The string table apparently starts right after the symbol table - */ - stringTable = (PSTR)&pSymbolTable[cSymbols]; - - for ( i=0; i < cSymbols; i++ ) { - fprintf(fout, "%04X ", i); - if ( pSymbolTable->N.Name.Short != 0 ) - fprintf(fout, "%-20.8s", pSymbolTable->N.ShortName); - else - fprintf(fout, "%-20s", stringTable + pSymbolTable->N.Name.Long); - - fprintf(fout, " %08X", pSymbolTable->Value); - - iSectNum = pSymbolTable->SectionNumber; - GetSectionName(pSymbolTable, sectionName); - fprintf(fout, " sect:%s aux:%X type:%02X st:%s", - sectionName.c_str(), - pSymbolTable->NumberOfAuxSymbols, - pSymbolTable->Type, - GetSZStorageClass(pSymbolTable->StorageClass) ); - - GetSectionCharacteristics(pSectionHeaders,iSectNum,sectionCharacter); - fprintf(fout," hc: %s \n",sectionCharacter.c_str()); -#if 0 - if ( pSymbolTable->NumberOfAuxSymbols ) - DumpAuxSymbols(pSymbolTable); -#endif - - /* - * Take into account any aux symbols - */ - i += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable++; - } -} - -/* -*---------------------------------------------------------------------- -* DumpExternals -- -* -* Dumps a COFF symbol table from an EXE or OBJ. We only use -* it to dump tables from OBJs. -*---------------------------------------------------------------------- -*/ -void -DumpExternals(PIMAGE_SYMBOL pSymbolTable, FILE *fout, unsigned cSymbols) -{ - unsigned i; - PSTR stringTable; - std::string symbol; - - /* - * The string table apparently starts right after the symbol table - */ - stringTable = (PSTR)&pSymbolTable[cSymbols]; - - for ( i=0; i < cSymbols; i++ ) { - if (pSymbolTable->SectionNumber > 0 && pSymbolTable->Type == 0x20) { - if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { - if (pSymbolTable->N.Name.Short != 0) { - symbol = ""; - symbol.insert(0, (const char *)(pSymbolTable->N.ShortName), 8); - } else { - symbol = stringTable + pSymbolTable->N.Name.Long; - } - std::string::size_type posAt = symbol.find('@'); - if (posAt != std::string::npos) symbol.erase(posAt); -#ifndef _MSC_VER - fprintf(fout, "\t%s\n", symbol.c_str()); -#else - fprintf(fout, "\t%s\n", symbol.c_str()+1); -#endif - } - } - - /* - * Take into account any aux symbols - */ - i += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable += pSymbolTable->NumberOfAuxSymbols; - pSymbolTable++; - } -} - -/* + * Utility func, strstr with size + */ const char* StrNStr(const char* start, const char* find, size_t &size) { @@ -387,7 +109,7 @@ const char* StrNStr(const char* start, const char* find, size_t &size) { *---------------------------------------------------------------------- */ int -HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) +HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER pSectionHeaders) { static int fImportFlag = 0; /* The status is nor defined yet */ WORD i; @@ -443,7 +165,7 @@ HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER p */ void DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, - FILE *fout, unsigned cSymbols, int fort) + FILE *fout, unsigned cSymbols) { unsigned i; PSTR stringTable; @@ -470,13 +192,7 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH } while (isspace(symbol[0])) symbol.erase(0,1); -#ifdef _MSC_VER if (symbol[0] == '_') symbol.erase(0,1); - if (fort) { - std::string::size_type posAt = symbol.find('@'); - if (posAt != std::string::npos) symbol.erase(posAt); - } -#endif if (fImportFlag) { fImportFlag = 0; fprintf(fout,"EXPORTS \n"); @@ -485,11 +201,6 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH Check whether it is "Scalar deleting destructor" and "Vector deleting destructor" */ - /* - if (!strstr(s,"@@UAEPAXI at Z") && !strstr(s,"@@QAEPAXI at Z") && - !strstr(s,"@AEPAXI at Z") && !strstr(s,"AEPAXI at Z") && - !strstr(s,"real@")) - */ const char *scalarPrefix = "??_G"; const char *vectorPrefix = "??_E"; if (symbol.compare(0, 4, scalarPrefix) && @@ -544,7 +255,7 @@ DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionH *---------------------------------------------------------------------- */ void -DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) +DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout) { PIMAGE_SYMBOL PCOFFSymbolTable; PIMAGE_SECTION_HEADER PCOFFSectionHeaders; @@ -560,13 +271,9 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) pImageFileHeader->SizeOfOptionalHeader); - if (full) { - DumpSymbolTable(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); - } else { - int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); - if (!haveExports) - DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount, fort); - } + int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders); + if (!haveExports) + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); } /* @@ -578,7 +285,7 @@ DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) *---------------------------------------------------------------------- */ void -DumpFile(LPSTR filename, FILE *fout, int full, int fort) +DumpFile(LPSTR filename, FILE *fout) { HANDLE hFile; HANDLE hFileMapping; @@ -610,12 +317,8 @@ DumpFile(LPSTR filename, FILE *fout, int full, int fort) dosHeader = (PIMAGE_DOS_HEADER)lpFileBase; if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) { -#if 0 - DumpExeFile( dosHeader ); -#else fprintf(stderr, "File is an executable. I don't dump those.\n"); return; -#endif } /* Does it look like a i386 COFF OBJ file??? */ else if ( @@ -627,7 +330,7 @@ DumpFile(LPSTR filename, FILE *fout, int full, int fort) * really checking for IMAGE_FILE_HEADER.Machine == i386 (0x14C) * and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0; */ - DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout, full, fort); + DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout); } else { printf("unrecognized file format\n"); } @@ -635,123 +338,3 @@ DumpFile(LPSTR filename, FILE *fout, int full, int fort) CloseHandle(hFileMapping); CloseHandle(hFile); } - -void -main(int argc, char **argv) -{ - std::string cmdline; - int i, arg; - FILE *fout; - int full = 0; - int fort = 0; - char *dllname = ""; - char *outfile = NULL; - - if (argc < 3) { -Usage: - fprintf(stderr, "Usage: %s ?-o outfile? ?-f(ull)? ..\n", argv[0]); - exit(1); - } - - arg = 1; - while (argv[arg][0] == '-') { - if (strcmp(argv[arg], "--") == 0) { - arg++; - break; - } else if (strcmp(argv[arg], "-f") == 0) { - full = 1; - } else if (strcmp(argv[arg], "-x") == 0) { - fort = 1; - } else if (strcmp(argv[arg], "-o") == 0) { - arg++; - if (arg == argc) { - goto Usage; - } - outfile = argv[arg]; - } - arg++; - } - if (arg == argc) { - goto Usage; - } - - if (outfile) { - fout = fopen(outfile, "w+"); - if (fout == NULL) { - fprintf(stderr, "Unable to open \'%s\' for writing:\n", - argv[arg]); - perror(""); - exit(1); - } - } else { - fout = stdout; - } - - if (! full) { - dllname = argv[arg]; - arg++; - if (arg == argc) { - goto Usage; - } - fprintf(fout, "LIBRARY %s\n", dllname); -#ifndef _X86_ - fprintf(fout, "CODE PRELOAD MOVEABLE DISCARDABLE\n"); - fprintf(fout, "DATA PRELOAD MOVEABLE MULTIPLE\n\n"); -#endif - } - - for (; arg < argc; arg++) { - WIN32_FIND_DATA FindFileData; - HANDLE SearchFile; - if (argv[arg][0] == '@') { - std::ifstream fargs(&argv[arg][1]); - if (!fargs) { - fprintf(stderr, "Unable to open \'%s\' for reading:\n", - argv[arg]); - perror(""); - exit(1); - } - char *fargv[1000]; - for (i = 0; i < arg; i++) { - cmdline += argv[i]; - fargv[i] = argv[i]; - } - std::string line; - std::getline(fargs, line); - cmdline += line; - fprintf(stderr, "%s\n", line.c_str()); - i += GetArgcArgv(line, &fargv[i]); - argc = i; - argv = fargv; - } - /* - * Argument can contain the wildcard names - */ - SearchFile = FindFirstFile(argv[arg],&FindFileData); - if (SearchFile == INVALID_HANDLE_VALUE){ - fprintf(stderr, "Unable to find \'%s\' for reading:\n", - argv[arg]); - exit(1); - } - else { - /* - * Since WIN32_FIND_DATA has no path information one has to extract it himself. - */ - TCHAR *filename = argv[arg]; - TCHAR path[2048]; - size_t i = strlen(filename); - i--; - while( filename[i] != '\\' && filename[i] != '/' && i >=0) i--; - do - { - if (i >= 0) strncpy( path, filename, i+1); /* Generate the 'path' info */ - path[i+1] = '\0'; - DumpFile(strcat(path, FindFileData.cFileName), fout, full, fort); - } while (FindNextFile(SearchFile,&FindFileData)); - - - FindClose(SearchFile); - } - } - exit(0); -} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b60809ceb4842bbd39d5c0d04616ce90cc44ebf commit 4b60809ceb4842bbd39d5c0d04616ce90cc44ebf Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:32:47 2015 -0400 bindexplib: Add copyright/license notice block diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 6f9605c..a86318f 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -1,3 +1,21 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2015 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +/*------------------------------------------------------------------------- + Portions of this source have been derived from the 'bindexplib' tool + provided by the CERN ROOT Data Analysis Framework project (root.cern.ch). + Permission has been granted by Pere Mato to distribute + this derived work under the CMake license. +-------------------------------------------------------------------------*/ + /* *---------------------------------------------------------------------- * Program: dumpexts.exe http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c078a36a23189eb3c11bf128c978f9484d149f26 commit c078a36a23189eb3c11bf128c978f9484d149f26 Author: Bill Hoffman AuthorDate: Fri Jun 19 16:12:43 2015 -0400 Commit: Brad King CommitDate: Tue Jun 30 10:32:39 2015 -0400 bindexplib: Import original implementation from CERN Download the original implementation provided by root.cern.ch with the following session: $ wget https://raw.githubusercontent.com/gordonwatts/root-vc-port/f0ee59af/build/win/bindexplib/bindexplib.cxx $ sha1sum bindexplib.cxx fa6efafb2c58a0644bd0f6a56fe02ee0d55c7fcd bindexplib.cxx $ sed -i 's/ *$//;s/'$'\t''/ /' bindexplib.cxx diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx new file mode 100644 index 0000000..6f9605c --- /dev/null +++ b/Source/bindexplib.cxx @@ -0,0 +1,739 @@ +/* +*---------------------------------------------------------------------- +* Program: dumpexts.exe +* Author: Gordon Chaffee +* +* History: The real functionality of this file was written by +* Matt Pietrek in 1993 in his pedump utility. I've +* modified it to dump the externals in a bunch of object +* files to create a .def file. +* +* Notes: Visual C++ puts an underscore before each exported symbol. +* This file removes them. I don't know if this is a problem +* this other compilers. If _MSC_VER is defined, +* the underscore is removed. If not, it isn't. To get a +* full dump of an object file, use the -f option. This can +* help determine the something that may be different with a +* compiler other than Visual C++. +* ====================================== +* Corrections (Axel 2006-04-04): +* Conversion to C++. Mostly. +* + * Extension (Axel 2006-03-15) + * As soon as an object file contains an /EXPORT directive (which + * is generated by the compiler when a symbol is declared as + * declspec(dllexport)) no to-be-exported symbols are printed, + * as the linker will see these directives, and if those directives + * are present we only export selectively (i.e. we trust the + * programmer). + * + * ====================================== +* ====================================== +* Corrections (Valery Fine 23/02/98): +* +* The "(vector) deleting destructor" MUST not be exported +* To recognize it the following test are introduced: +* "@@UAEPAXI at Z" scalar deleting dtor +* "@@QAEPAXI at Z" vector deleting dtor +* "AEPAXI at Z" vector deleting dtor with thunk adjustor +* ====================================== +* Corrections (Valery Fine 12/02/97): +* +* It created a wrong EXPORTS for the global pointers and constants. +* The Section Header has been involved to discover the missing information +* Now the pointers are correctly supplied supplied with "DATA" descriptor +* the constants with no extra descriptor. +* +* Corrections (Valery Fine 16/09/96): +* +* It didn't work for C++ code with global variables and class definitons +* The DumpExternalObject function has been introduced to generate .DEF file +* +* Author: Valery Fine 16/09/96 (E-mail: fine at vxcern.cern.ch) +*---------------------------------------------------------------------- +*/ + +static char sccsid[] = "@(#) winDumpExts.c 1.2 95/10/03 15:27:34"; + +#include +#include +#include +#include + +/* +*---------------------------------------------------------------------- +* GetArgcArgv -- +* +* Break up a line into argc argv +*---------------------------------------------------------------------- +*/ +int +GetArgcArgv(std::string &s, char **argv) +{ + int quote = 0; + int argc = 0; + std::string::iterator bp = s.begin(); + + while (1) { + while (isspace(*bp)) { + bp++; + } + if (*bp == '\n' || *bp == '\0') { + *bp = '\0'; + return argc; + } + if (*bp == '\"') { + quote = 1; + bp++; + } + argv[argc++] = &(*bp); + + while (*bp != '\0') { + if (quote) { + if (*bp == '\"') { + quote = 0; + *bp = '\0'; + bp++; + break; + } + bp++; + continue; + } + if (isspace(*bp)) { + *bp = '\0'; + bp++; + break; + } + bp++; + } + } +} + +/* +* The names of the first group of possible symbol table storage classes +*/ +char * SzStorageClass1[] = { + "NULL","AUTOMATIC","EXTERNAL","STATIC","REGISTER","EXTERNAL_DEF","LABEL", + "UNDEFINED_LABEL","MEMBER_OF_STRUCT","ARGUMENT","STRUCT_TAG", + "MEMBER_OF_UNION","UNION_TAG","TYPE_DEFINITION","UNDEFINED_STATIC", + "ENUM_TAG","MEMBER_OF_ENUM","REGISTER_PARAM","BIT_FIELD" +}; + +/* +* The names of the second group of possible symbol table storage classes +*/ +char * SzStorageClass2[] = { + "BLOCK","FUNCTION","END_OF_STRUCT","FILE","SECTION","WEAK_EXTERNAL" +}; + +/* +*---------------------------------------------------------------------- +* GetSZStorageClass -- +* +* Given a symbol storage class value, return a descriptive +* ASCII string +*---------------------------------------------------------------------- +*/ +PSTR +GetSZStorageClass(BYTE storageClass) +{ + if ( storageClass <= IMAGE_SYM_CLASS_BIT_FIELD ) + return SzStorageClass1[storageClass]; + else if ( (storageClass >= IMAGE_SYM_CLASS_BLOCK) + && (storageClass <= IMAGE_SYM_CLASS_WEAK_EXTERNAL) ) + return SzStorageClass2[storageClass-IMAGE_SYM_CLASS_BLOCK]; + else + return "???"; +} + +void AddHex(std::string& buf, long val, bool caps=false) +{ + buf += "0x"; + size_t len=buf.length(); + while (val) { + char hex = (char)(val & 16); + val = val >> 4; + if (hex<10) hex+='0'; + else if (caps) hex+='A'-10; + else hex+='a'-10; + buf.insert(len, hex, 1); + } +} + +/* +*---------------------------------------------------------------------- +* GetSectionName -- +* +* Used by DumpSymbolTable, it gives meaningful names to +* the non-normal section number. +* +* Results: +* A name is returned in buffer +*---------------------------------------------------------------------- +*/ +void +GetSectionName(PIMAGE_SYMBOL pSymbolTable, std::string& buffer) +{ + DWORD section; + + section = pSymbolTable->SectionNumber; + + switch ( (SHORT)section ) + { + case IMAGE_SYM_UNDEFINED: if (pSymbolTable->Value) buffer += "COMM"; else buffer += "UNDEF"; break; + case IMAGE_SYM_ABSOLUTE: buffer += "ABS "; break; + case IMAGE_SYM_DEBUG: buffer += "DEBUG"; break; + default: AddHex(buffer, section, true); + } +} + +/* +*---------------------------------------------------------------------- +* GetSectionCharacteristics -- +* +* Converts the Characteristics field of IMAGE_SECTION_HEADER +* to print. +* +* Results: +* A definiton of the section symbol type +*---------------------------------------------------------------------- +*/ +void +GetSectionCharacteristics(PIMAGE_SECTION_HEADER pSectionHeaders, int nSectNum, std::string &buffer) +{ + DWORD SectChar; + std::string TempBuf; + buffer.clear(); + if (nSectNum > 0) { + SectChar = pSectionHeaders[nSectNum-1].Characteristics; + + buffer = " "; + AddHex(buffer, SectChar); + if (SectChar & IMAGE_SCN_CNT_CODE) buffer += " Code"; + else if (SectChar & IMAGE_SCN_CNT_INITIALIZED_DATA) buffer += " Init. data"; + else if (SectChar & IMAGE_SCN_CNT_UNINITIALIZED_DATA ) buffer += " UnInit data"; + else buffer += " Unknow type"; + + if (SectChar & IMAGE_SCN_MEM_READ) { + buffer += " Read"; + if (SectChar & IMAGE_SCN_MEM_WRITE) + buffer += " and Write"; + else buffer += " only"; + } + else if (SectChar & IMAGE_SCN_MEM_WRITE) + buffer +=" Write only"; + + } +} + +/* +*---------------------------------------------------------------------- +* DumpSymbolTable -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpSymbolTable(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout, unsigned cSymbols) +{ + unsigned i; + PSTR stringTable; + std::string sectionName; + std::string sectionCharacter; + int iSectNum; + + fprintf(fout, "Symbol Table - %X entries (* = auxillary symbol)\n", + cSymbols); + + fprintf(fout, + "Indx Name Value Section cAux Type Storage Character\n" + "---- -------------------- -------- ---------- ----- ------- -------- ---------\n"); + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) { + fprintf(fout, "%04X ", i); + if ( pSymbolTable->N.Name.Short != 0 ) + fprintf(fout, "%-20.8s", pSymbolTable->N.ShortName); + else + fprintf(fout, "%-20s", stringTable + pSymbolTable->N.Name.Long); + + fprintf(fout, " %08X", pSymbolTable->Value); + + iSectNum = pSymbolTable->SectionNumber; + GetSectionName(pSymbolTable, sectionName); + fprintf(fout, " sect:%s aux:%X type:%02X st:%s", + sectionName.c_str(), + pSymbolTable->NumberOfAuxSymbols, + pSymbolTable->Type, + GetSZStorageClass(pSymbolTable->StorageClass) ); + + GetSectionCharacteristics(pSectionHeaders,iSectNum,sectionCharacter); + fprintf(fout," hc: %s \n",sectionCharacter.c_str()); +#if 0 + if ( pSymbolTable->NumberOfAuxSymbols ) + DumpAuxSymbols(pSymbolTable); +#endif + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* +*---------------------------------------------------------------------- +* DumpExternals -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpExternals(PIMAGE_SYMBOL pSymbolTable, FILE *fout, unsigned cSymbols) +{ + unsigned i; + PSTR stringTable; + std::string symbol; + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) { + if (pSymbolTable->SectionNumber > 0 && pSymbolTable->Type == 0x20) { + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + if (pSymbolTable->N.Name.Short != 0) { + symbol = ""; + symbol.insert(0, (const char *)(pSymbolTable->N.ShortName), 8); + } else { + symbol = stringTable + pSymbolTable->N.Name.Long; + } + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) symbol.erase(posAt); +#ifndef _MSC_VER + fprintf(fout, "\t%s\n", symbol.c_str()); +#else + fprintf(fout, "\t%s\n", symbol.c_str()+1); +#endif + } + } + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* ++ * Utility func, strstr with size ++ */ +const char* StrNStr(const char* start, const char* find, size_t &size) { + size_t len; + const char* hint; + + if (!start || !find || !size) { + size = 0; + return 0; + } + len = strlen(find); + + while (hint = (const char*) memchr(start, find[0], size-len+1)) { + size -= (hint - start); + if (!strncmp(hint, find, len)) + return hint; + start = hint + 1; + } + + size = 0; + return 0; +} + +/* + *---------------------------------------------------------------------- + * HaveExportedObjects -- + * + * Returns >0 if export directives (declspec(dllexport)) exist. + * + *---------------------------------------------------------------------- + */ +int +HaveExportedObjects(PIMAGE_FILE_HEADER pImageFileHeader, PIMAGE_SECTION_HEADER pSectionHeaders, FILE *fout) +{ + static int fImportFlag = 0; /* The status is nor defined yet */ + WORD i; + size_t size; + char foundExports; + const char * rawdata; + + PIMAGE_SECTION_HEADER pDirectivesSectionHeader; + + if (fImportFlag) return 1; + + i = 0; + foundExports = 0; + pDirectivesSectionHeader = 0; + for(i = 0; i < pImageFileHeader->NumberOfSections && !pDirectivesSectionHeader; i++) + if (!strncmp((const char*)&pSectionHeaders[i].Name[0], ".drectve",8)) + pDirectivesSectionHeader = &pSectionHeaders[i]; + if (!pDirectivesSectionHeader) return 0; + + rawdata=(const char*)pImageFileHeader+pDirectivesSectionHeader->PointerToRawData; + if (!pDirectivesSectionHeader->PointerToRawData || !rawdata) return 0; + + size = pDirectivesSectionHeader->SizeOfRawData; + const char* posImportFlag = rawdata; + while ((posImportFlag = StrNStr(posImportFlag, " /EXPORT:", size))) { + const char* lookingForDict = posImportFlag + 9; + if (!strncmp(lookingForDict, "_G__cpp_",8) || + !strncmp(lookingForDict, "_G__set_cpp_",12)) { + posImportFlag = lookingForDict; + continue; + } + + const char* lookingForDATA = posImportFlag + 9; + while (*(++lookingForDATA) && *lookingForDATA != ' '); + lookingForDATA -= 5; + // ignore DATA exports + if (strncmp(lookingForDATA, ",DATA", 5)) break; + posImportFlag = lookingForDATA + 5; + } + fImportFlag = (int)posImportFlag; + return fImportFlag; +} + + + +/* + *---------------------------------------------------------------------- +* DumpExternalsObjects -- +* +* Dumps a COFF symbol table from an EXE or OBJ. We only use +* it to dump tables from OBJs. +*---------------------------------------------------------------------- +*/ +void +DumpExternalsObjects(PIMAGE_SYMBOL pSymbolTable, PIMAGE_SECTION_HEADER pSectionHeaders, + FILE *fout, unsigned cSymbols, int fort) +{ + unsigned i; + PSTR stringTable; + std::string symbol; + DWORD SectChar; + static int fImportFlag = -1; /* The status is nor defined yet */ + + /* + * The string table apparently starts right after the symbol table + */ + stringTable = (PSTR)&pSymbolTable[cSymbols]; + + for ( i=0; i < cSymbols; i++ ) { + if (pSymbolTable->SectionNumber > 0 && ( pSymbolTable->Type == 0x20 || pSymbolTable->Type == 0x0)) { + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + /* + * The name of the Function entry points + */ + if (pSymbolTable->N.Name.Short != 0) { + symbol = ""; + symbol.insert(0, (const char *)pSymbolTable->N.ShortName, 8); + } else { + symbol = stringTable + pSymbolTable->N.Name.Long; + } + + while (isspace(symbol[0])) symbol.erase(0,1); +#ifdef _MSC_VER + if (symbol[0] == '_') symbol.erase(0,1); + if (fort) { + std::string::size_type posAt = symbol.find('@'); + if (posAt != std::string::npos) symbol.erase(posAt); + } +#endif + if (fImportFlag) { + fImportFlag = 0; + fprintf(fout,"EXPORTS \n"); + } + /* + Check whether it is "Scalar deleting destructor" and + "Vector deleting destructor" + */ + /* + if (!strstr(s,"@@UAEPAXI at Z") && !strstr(s,"@@QAEPAXI at Z") && + !strstr(s,"@AEPAXI at Z") && !strstr(s,"AEPAXI at Z") && + !strstr(s,"real@")) + */ + const char *scalarPrefix = "??_G"; + const char *vectorPrefix = "??_E"; + if (symbol.compare(0, 4, scalarPrefix) && + symbol.compare(0, 4, vectorPrefix) && + symbol.find("real@") == std::string::npos) + { + SectChar = pSectionHeaders[pSymbolTable->SectionNumber-1].Characteristics; + if (!pSymbolTable->Type && (SectChar & IMAGE_SCN_MEM_WRITE)) { + // Read only (i.e. constants) must be excluded + fprintf(fout, "\t%s \t DATA\n", symbol.c_str()); + } else { + if ( pSymbolTable->Type || !(SectChar & IMAGE_SCN_MEM_READ)) { + fprintf(fout, "\t%s\n", symbol.c_str()); + } else { + // printf(" strange symbol: %s \n",s); + } + } + } + } + } + else if (pSymbolTable->SectionNumber == IMAGE_SYM_UNDEFINED && !pSymbolTable->Type && 0){ + /* + * The IMPORT global variable entry points + */ + if (pSymbolTable->StorageClass == IMAGE_SYM_CLASS_EXTERNAL) { + symbol = stringTable + pSymbolTable->N.Name.Long; + while (isspace(symbol[0])) symbol.erase(0,1); + if (symbol[0] == '_') symbol.erase(0,1); + if (!fImportFlag) { + fImportFlag = 1; + fprintf(fout,"IMPORTS \n"); + } + fprintf(fout, "\t%s DATA \n", symbol.c_str()+1); + } + } + + /* + * Take into account any aux symbols + */ + i += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable += pSymbolTable->NumberOfAuxSymbols; + pSymbolTable++; + } +} + +/* +*---------------------------------------------------------------------- +* DumpObjFile -- +* +* Dump an object file--either a full listing or just the exported +* symbols. +*---------------------------------------------------------------------- +*/ +void +DumpObjFile(PIMAGE_FILE_HEADER pImageFileHeader, FILE *fout, int full, int fort) +{ + PIMAGE_SYMBOL PCOFFSymbolTable; + PIMAGE_SECTION_HEADER PCOFFSectionHeaders; + DWORD_PTR COFFSymbolCount; + + PCOFFSymbolTable = (PIMAGE_SYMBOL) + ((DWORD_PTR)pImageFileHeader + pImageFileHeader->PointerToSymbolTable); + COFFSymbolCount = pImageFileHeader->NumberOfSymbols; + + PCOFFSectionHeaders = (PIMAGE_SECTION_HEADER) + ((DWORD_PTR)pImageFileHeader + + IMAGE_SIZEOF_FILE_HEADER + + pImageFileHeader->SizeOfOptionalHeader); + + + if (full) { + DumpSymbolTable(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount); + } else { + int haveExports = HaveExportedObjects(pImageFileHeader, PCOFFSectionHeaders, fout); + if (!haveExports) + DumpExternalsObjects(PCOFFSymbolTable, PCOFFSectionHeaders, fout, COFFSymbolCount, fort); + } +} + +/* +*---------------------------------------------------------------------- +* DumpFile -- +* +* Open up a file, memory map it, and call the appropriate +* dumping routine +*---------------------------------------------------------------------- +*/ +void +DumpFile(LPSTR filename, FILE *fout, int full, int fort) +{ + HANDLE hFile; + HANDLE hFileMapping; + LPVOID lpFileBase; + PIMAGE_DOS_HEADER dosHeader; + + hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + + if (hFile == INVALID_HANDLE_VALUE) { + fprintf(stderr, "Couldn't open file with CreateFile()\n"); + return; + } + + hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); + if (hFileMapping == 0) { + CloseHandle(hFile); + fprintf(stderr, "Couldn't open file mapping with CreateFileMapping()\n"); + return; + } + + lpFileBase = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0); + if (lpFileBase == 0) { + CloseHandle(hFileMapping); + CloseHandle(hFile); + fprintf(stderr, "Couldn't map view of file with MapViewOfFile()\n"); + return; + } + + dosHeader = (PIMAGE_DOS_HEADER)lpFileBase; + if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) { +#if 0 + DumpExeFile( dosHeader ); +#else + fprintf(stderr, "File is an executable. I don't dump those.\n"); + return; +#endif + } + /* Does it look like a i386 COFF OBJ file??? */ + else if ( + ((dosHeader->e_magic == IMAGE_FILE_MACHINE_I386) || (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)) + && (dosHeader->e_sp == 0) + ) { + /* + * The two tests above aren't what they look like. They're + * really checking for IMAGE_FILE_HEADER.Machine == i386 (0x14C) + * and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0; + */ + DumpObjFile((PIMAGE_FILE_HEADER) lpFileBase, fout, full, fort); + } else { + printf("unrecognized file format\n"); + } + UnmapViewOfFile(lpFileBase); + CloseHandle(hFileMapping); + CloseHandle(hFile); +} + +void +main(int argc, char **argv) +{ + std::string cmdline; + int i, arg; + FILE *fout; + int full = 0; + int fort = 0; + char *dllname = ""; + char *outfile = NULL; + + if (argc < 3) { +Usage: + fprintf(stderr, "Usage: %s ?-o outfile? ?-f(ull)? ..\n", argv[0]); + exit(1); + } + + arg = 1; + while (argv[arg][0] == '-') { + if (strcmp(argv[arg], "--") == 0) { + arg++; + break; + } else if (strcmp(argv[arg], "-f") == 0) { + full = 1; + } else if (strcmp(argv[arg], "-x") == 0) { + fort = 1; + } else if (strcmp(argv[arg], "-o") == 0) { + arg++; + if (arg == argc) { + goto Usage; + } + outfile = argv[arg]; + } + arg++; + } + if (arg == argc) { + goto Usage; + } + + if (outfile) { + fout = fopen(outfile, "w+"); + if (fout == NULL) { + fprintf(stderr, "Unable to open \'%s\' for writing:\n", + argv[arg]); + perror(""); + exit(1); + } + } else { + fout = stdout; + } + + if (! full) { + dllname = argv[arg]; + arg++; + if (arg == argc) { + goto Usage; + } + fprintf(fout, "LIBRARY %s\n", dllname); +#ifndef _X86_ + fprintf(fout, "CODE PRELOAD MOVEABLE DISCARDABLE\n"); + fprintf(fout, "DATA PRELOAD MOVEABLE MULTIPLE\n\n"); +#endif + } + + for (; arg < argc; arg++) { + WIN32_FIND_DATA FindFileData; + HANDLE SearchFile; + if (argv[arg][0] == '@') { + std::ifstream fargs(&argv[arg][1]); + if (!fargs) { + fprintf(stderr, "Unable to open \'%s\' for reading:\n", + argv[arg]); + perror(""); + exit(1); + } + char *fargv[1000]; + for (i = 0; i < arg; i++) { + cmdline += argv[i]; + fargv[i] = argv[i]; + } + std::string line; + std::getline(fargs, line); + cmdline += line; + fprintf(stderr, "%s\n", line.c_str()); + i += GetArgcArgv(line, &fargv[i]); + argc = i; + argv = fargv; + } + /* + * Argument can contain the wildcard names + */ + SearchFile = FindFirstFile(argv[arg],&FindFileData); + if (SearchFile == INVALID_HANDLE_VALUE){ + fprintf(stderr, "Unable to find \'%s\' for reading:\n", + argv[arg]); + exit(1); + } + else { + /* + * Since WIN32_FIND_DATA has no path information one has to extract it himself. + */ + TCHAR *filename = argv[arg]; + TCHAR path[2048]; + size_t i = strlen(filename); + i--; + while( filename[i] != '\\' && filename[i] != '/' && i >=0) i--; + do + { + if (i >= 0) strncpy( path, filename, i+1); /* Generate the 'path' info */ + path[i+1] = '\0'; + DumpFile(strcat(path, FindFileData.cFileName), fout, full, fort); + } while (FindNextFile(SearchFile,&FindFileData)); + + + FindClose(SearchFile); + } + } + exit(0); +} ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 30 17:35:42 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 30 Jun 2015 17:35:42 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-767-gfe3cbb7 Message-ID: <20150630213543.008F0B0487@public.kitware.com> 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 fe3cbb78721dc84d01ab030422a67013d1595f3d (commit) via 48c6a92b286522cf350412d6dd3219b263e9ab5b (commit) via e28e110d221a50687cc9922743366b2f34ccd852 (commit) via 3f5200ec5f17de36d0db1729d61e520fb014abe5 (commit) via 0a34ea597a954f49335559108bf3fa3382734657 (commit) via be5997ef77dccc866ddb96bdfd2f529f74988eef (commit) via 5bf9bfda3f364b27ca91eacab18ec4dad2cc59f7 (commit) via f346d88d102c627e98f630ae1c9d26cc899f76d8 (commit) via b661403177edb1d22b89cc4a0ea69a8f93ad2ad2 (commit) via 6708d21664baf3bab6f8af143c373de7af84bffc (commit) via 0818737c851dce18a6da442ee73029b0de22ad56 (commit) via dd7e42758d4874c087bbbc6ae062f36455f6d49c (commit) via 92cecd936999f9a4c67332d1aeaba3ff120fbbc2 (commit) via 276c62253e3f25eda4acbf0049a70c7d622c9ea2 (commit) from d2e9ccbc7f3de688d3ec187ab093607eab8d82d7 (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=fe3cbb78721dc84d01ab030422a67013d1595f3d commit fe3cbb78721dc84d01ab030422a67013d1595f3d Merge: d2e9ccb 48c6a92 Author: Stephen Kelly AuthorDate: Tue Jun 30 17:35:41 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 17:35:41 2015 -0400 Merge topic 'clean-up-cmMakefile' into next 48c6a92b cmMakefile: Merge two Scope types and instances. e28e110d cmMakefile: Rename a variable. 3f5200ec cmMakefile: Expand the scope of scoped buildsystem file state. 0a34ea59 cmMakefile: Compute the filename processed in a scope. be5997ef cmMakefile: Inline ProcessBuildsystemFile into only caller. 5bf9bfda cmMakefile: Don't use string comparison to check directory level. f346d88d cmMakefile: Avoid invoking EnforceDirectoryLevelRules. b6614031 cmMakefile: Add filename to ReadListFile auto scopes. 6708d216 cmMakefile: Remove IncludeScope Quiet call. 0818737c cmMakefile: Make listfile scopes responsible for logical checks. dd7e4275 cmMakefile: Move the lexical scope. 92cecd93 cmMakefile: Add automatic scopes to listfile readers. 276c6225 cmMakefile: Move the IncludeScope to where it is used. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=48c6a92b286522cf350412d6dd3219b263e9ab5b commit 48c6a92b286522cf350412d6dd3219b263e9ab5b Author: Stephen Kelly AuthorDate: Fri Jun 26 00:13:22 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:22 2015 +0200 cmMakefile: Merge two Scope types and instances. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 0edced5..cdcf88c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1626,35 +1626,6 @@ bool cmMakefile::IsRootMakefile() const return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid(); } -//---------------------------------------------------------------------------- -class cmMakefileCurrent -{ - cmGlobalGenerator* GG; - cmMakefile* CurrentMakefile; - cmState::Snapshot Snapshot; -public: - cmMakefileCurrent(cmMakefile* mf) - { - this->GG = mf->GetGlobalGenerator(); - this->CurrentMakefile = this->GG->GetCurrentMakefile(); - this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); - this->GG->GetCMakeInstance()->SetCurrentSnapshot( - this->GG->GetCMakeInstance()->GetCurrentSnapshot()); - this->GG->SetCurrentMakefile(mf); -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PushFileScope(); -#endif - } - ~cmMakefileCurrent() - { -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->GG->GetFileLockPool().PopFileScope(); -#endif - this->GG->SetCurrentMakefile(this->CurrentMakefile); - this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); - } -}; - class cmMakefile::BuildsystemFileScope { public: @@ -1667,24 +1638,41 @@ public: this->Makefile->ListFileStack.push_back(currentStart); this->Makefile->PushPolicyBarrier(); this->Makefile->PushFunctionBlockerBarrier(); + + this->GG = mf->GetGlobalGenerator(); + this->CurrentMakefile = this->GG->GetCurrentMakefile(); + this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); + this->GG->GetCMakeInstance()->SetCurrentSnapshot( + this->GG->GetCMakeInstance()->GetCurrentSnapshot()); + this->GG->SetCurrentMakefile(mf); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PushFileScope(); +#endif } ~BuildsystemFileScope() { this->Makefile->PopFunctionBlockerBarrier(this->ReportError); this->Makefile->PopPolicyBarrier(this->ReportError); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->GG->GetFileLockPool().PopFileScope(); +#endif + this->GG->SetCurrentMakefile(this->CurrentMakefile); + this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); } void Quiet() { this->ReportError = false; } private: cmMakefile* Makefile; + cmGlobalGenerator* GG; + cmMakefile* CurrentMakefile; + cmState::Snapshot Snapshot; bool ReportError; }; //---------------------------------------------------------------------------- void cmMakefile::Configure() { - cmMakefileCurrent cmf(this); BuildsystemFileScope scope(this); // make sure the CMakeFiles dir is there http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e28e110d221a50687cc9922743366b2f34ccd852 commit e28e110d221a50687cc9922743366b2f34ccd852 Author: Stephen Kelly AuthorDate: Fri Jun 26 00:11:51 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:22 2015 +0200 cmMakefile: Rename a variable. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 79f4c44..0edced5 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1630,13 +1630,13 @@ bool cmMakefile::IsRootMakefile() const class cmMakefileCurrent { cmGlobalGenerator* GG; - cmMakefile* MF; + cmMakefile* CurrentMakefile; cmState::Snapshot Snapshot; public: cmMakefileCurrent(cmMakefile* mf) { this->GG = mf->GetGlobalGenerator(); - this->MF = this->GG->GetCurrentMakefile(); + this->CurrentMakefile = this->GG->GetCurrentMakefile(); this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot(); this->GG->GetCMakeInstance()->SetCurrentSnapshot( this->GG->GetCMakeInstance()->GetCurrentSnapshot()); @@ -1650,7 +1650,7 @@ public: #if defined(CMAKE_BUILD_WITH_CMAKE) this->GG->GetFileLockPool().PopFileScope(); #endif - this->GG->SetCurrentMakefile(this->MF); + this->GG->SetCurrentMakefile(this->CurrentMakefile); this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot); } }; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3f5200ec5f17de36d0db1729d61e520fb014abe5 commit 3f5200ec5f17de36d0db1729d61e520fb014abe5 Author: Stephen Kelly AuthorDate: Fri Jun 26 00:11:10 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:21 2015 +0200 cmMakefile: Expand the scope of scoped buildsystem file state. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3aaf8d0..79f4c44 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1685,6 +1685,7 @@ private: void cmMakefile::Configure() { cmMakefileCurrent cmf(this); + BuildsystemFileScope scope(this); // make sure the CMakeFiles dir is there std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory(); @@ -1696,8 +1697,6 @@ void cmMakefile::Configure() assert(cmSystemTools::FileExists(currentStart.c_str(), true)); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str()); - { - BuildsystemFileScope scope(this); cmListFile listFile; if (!listFile.ParseFile(currentStart.c_str(), this->IsRootMakefile(), this)) { @@ -1709,7 +1708,6 @@ void cmMakefile::Configure() { scope.Quiet(); } - } // at the end handle any old style subdirs std::vector subdirs = this->UnConfiguredDirectories; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0a34ea597a954f49335559108bf3fa3382734657 commit 0a34ea597a954f49335559108bf3fa3382734657 Author: Stephen Kelly AuthorDate: Sun Jun 21 23:19:50 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:21 2015 +0200 cmMakefile: Compute the filename processed in a scope. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 32dd8f5..3aaf8d0 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1658,10 +1658,13 @@ public: class cmMakefile::BuildsystemFileScope { public: - BuildsystemFileScope(cmMakefile* mf, std::string const& filename) + BuildsystemFileScope(cmMakefile* mf) : Makefile(mf), ReportError(true) { - this->Makefile->ListFileStack.push_back(filename); + std::string currentStart = + this->Makefile->StateSnapshot.GetCurrentSourceDirectory(); + currentStart += "/CMakeLists.txt"; + this->Makefile->ListFileStack.push_back(currentStart); this->Makefile->PushPolicyBarrier(); this->Makefile->PushFunctionBlockerBarrier(); } @@ -1694,7 +1697,7 @@ void cmMakefile::Configure() this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str()); { - BuildsystemFileScope scope(this, currentStart); + BuildsystemFileScope scope(this); cmListFile listFile; if (!listFile.ParseFile(currentStart.c_str(), this->IsRootMakefile(), this)) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=be5997ef77dccc866ddb96bdfd2f529f74988eef commit be5997ef77dccc866ddb96bdfd2f529f74988eef Author: Stephen Kelly AuthorDate: Sun Jun 21 23:13:24 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:21 2015 +0200 cmMakefile: Inline ProcessBuildsystemFile into only caller. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 53c2d4c..32dd8f5 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -405,48 +405,6 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, return result; } -class cmMakefile::BuildsystemFileScope -{ -public: - BuildsystemFileScope(cmMakefile* mf, std::string const& filename) - : Makefile(mf), ReportError(true) - { - this->Makefile->ListFileStack.push_back(filename); - this->Makefile->PushPolicyBarrier(); - this->Makefile->PushFunctionBlockerBarrier(); - } - - ~BuildsystemFileScope() - { - this->Makefile->PopFunctionBlockerBarrier(this->ReportError); - this->Makefile->PopPolicyBarrier(this->ReportError); - } - - void Quiet() { this->ReportError = false; } -private: - cmMakefile* Makefile; - bool ReportError; -}; - -bool cmMakefile::ProcessBuildsystemFile(const char* filename) -{ - this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); - - BuildsystemFileScope scope(this, filename); - - cmListFile listFile; - if (!listFile.ParseFile(filename, this->IsRootMakefile(), this)) - { - return false; - } - this->ReadListFile(listFile, filename); - if(cmSystemTools::GetFatalErrorOccured()) - { - scope.Quiet(); - } - return true; -} - //---------------------------------------------------------------------------- class cmMakefile::IncludeScope { @@ -1697,6 +1655,29 @@ public: } }; +class cmMakefile::BuildsystemFileScope +{ +public: + BuildsystemFileScope(cmMakefile* mf, std::string const& filename) + : Makefile(mf), ReportError(true) + { + this->Makefile->ListFileStack.push_back(filename); + this->Makefile->PushPolicyBarrier(); + this->Makefile->PushFunctionBlockerBarrier(); + } + + ~BuildsystemFileScope() + { + this->Makefile->PopFunctionBlockerBarrier(this->ReportError); + this->Makefile->PopPolicyBarrier(this->ReportError); + } + + void Quiet() { this->ReportError = false; } +private: + cmMakefile* Makefile; + bool ReportError; +}; + //---------------------------------------------------------------------------- void cmMakefile::Configure() { @@ -1710,7 +1691,22 @@ void cmMakefile::Configure() std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory(); currentStart += "/CMakeLists.txt"; assert(cmSystemTools::FileExists(currentStart.c_str(), true)); - this->ProcessBuildsystemFile(currentStart.c_str()); + this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str()); + + { + BuildsystemFileScope scope(this, currentStart); + cmListFile listFile; + if (!listFile.ParseFile(currentStart.c_str(), this->IsRootMakefile(), this)) + { + this->SetConfigured(); + return; + } + this->ReadListFile(listFile, currentStart); + if(cmSystemTools::GetFatalErrorOccured()) + { + scope.Quiet(); + } + } // at the end handle any old style subdirs std::vector subdirs = this->UnConfiguredDirectories; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5bf9bfda3f364b27ca91eacab18ec4dad2cc59f7 commit 5bf9bfda3f364b27ca91eacab18ec4dad2cc59f7 Author: Stephen Kelly AuthorDate: Sun Jun 21 23:01:13 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:20 2015 +0200 cmMakefile: Don't use string comparison to check directory level. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 87292ea..53c2d4c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -431,12 +431,11 @@ private: bool cmMakefile::ProcessBuildsystemFile(const char* filename) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); - std::string curSrc = this->GetCurrentSourceDirectory(); BuildsystemFileScope scope(this, filename); cmListFile listFile; - if (!listFile.ParseFile(filename, curSrc == this->GetHomeDirectory(), this)) + if (!listFile.ParseFile(filename, this->IsRootMakefile(), this)) { return false; } http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f346d88d102c627e98f630ae1c9d26cc899f76d8 commit f346d88d102c627e98f630ae1c9d26cc899f76d8 Author: Stephen Kelly AuthorDate: Sun Jun 21 23:00:44 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:20 2015 +0200 cmMakefile: Avoid invoking EnforceDirectoryLevelRules. This is part of the CMP0000 implementation and only needs to be invoked for top-level buildsystem files currently. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 23ab93d..383984d 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1106,6 +1106,7 @@ void cmGlobalGenerator::Configure() // now do it lg->GetMakefile()->Configure(); + lg->GetMakefile()->EnforceDirectoryLevelRules(); // update the cache entry for the number of local generators, this is used // for progress diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b9a66d3..87292ea 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -445,7 +445,6 @@ bool cmMakefile::ProcessBuildsystemFile(const char* filename) { scope.Quiet(); } - this->EnforceDirectoryLevelRules(); return true; } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index ebf33df..aa70c72 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -825,6 +825,8 @@ public: std::string GetExecutionFilePath() const; + void EnforceDirectoryLevelRules() const; + protected: // add link libraries and directories to the target void AddGlobalLinkInformation(const std::string& name, cmTarget& target); @@ -975,9 +977,6 @@ private: cmPolicies::PolicyStatus GetPolicyStatusInternal(cmPolicies::PolicyID id) const; - // Enforce rules about CMakeLists.txt files. - void EnforceDirectoryLevelRules() const; - // CMP0053 == old cmake::MessageType ExpandVariablesInStringOld( std::string& errorstr, http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b661403177edb1d22b89cc4a0ea69a8f93ad2ad2 commit b661403177edb1d22b89cc4a0ea69a8f93ad2ad2 Author: Stephen Kelly AuthorDate: Sun Jun 21 22:56:15 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:19 2015 +0200 cmMakefile: Add filename to ReadListFile auto scopes. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index b21e441..b9a66d3 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -408,9 +408,10 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, class cmMakefile::BuildsystemFileScope { public: - BuildsystemFileScope(cmMakefile* mf) + BuildsystemFileScope(cmMakefile* mf, std::string const& filename) : Makefile(mf), ReportError(true) { + this->Makefile->ListFileStack.push_back(filename); this->Makefile->PushPolicyBarrier(); this->Makefile->PushFunctionBlockerBarrier(); } @@ -432,14 +433,13 @@ bool cmMakefile::ProcessBuildsystemFile(const char* filename) this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); std::string curSrc = this->GetCurrentSourceDirectory(); - this->ListFileStack.push_back(filename); + BuildsystemFileScope scope(this, filename); cmListFile listFile; if (!listFile.ParseFile(filename, curSrc == this->GetHomeDirectory(), this)) { return false; } - BuildsystemFileScope scope(this); this->ReadListFile(listFile, filename); if(cmSystemTools::GetFatalErrorOccured()) { @@ -604,9 +604,10 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) class cmMakefile::ListFileScope { public: - ListFileScope(cmMakefile* mf) + ListFileScope(cmMakefile* mf, std::string const& filenametoread) : Makefile(mf), ReportError(true) { + this->Makefile->ListFileStack.push_back(filenametoread); this->Makefile->PushPolicyBarrier(); this->Makefile->PushFunctionBlockerBarrier(); } @@ -630,7 +631,7 @@ bool cmMakefile::ReadListFile(const char* filename) cmSystemTools::CollapseFullPath(filename, this->GetCurrentSourceDirectory()); - this->ListFileStack.push_back(filenametoread); + ListFileScope scope(this, filenametoread); cmListFile listFile; if (!listFile.ParseFile(filenametoread.c_str(), false, this)) @@ -638,7 +639,6 @@ bool cmMakefile::ReadListFile(const char* filename) return false; } - ListFileScope scope(this); this->ReadListFile(listFile, filenametoread); if(cmSystemTools::GetFatalErrorOccured()) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6708d21664baf3bab6f8af143c373de7af84bffc commit 6708d21664baf3bab6f8af143c373de7af84bffc Author: Stephen Kelly AuthorDate: Tue Jun 23 09:25:03 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:19 2015 +0200 cmMakefile: Remove IncludeScope Quiet call. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d6cf104..b21e441 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -591,7 +591,6 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) cmListFile listFile; if (!listFile.ParseFile(filenametoread.c_str(), false, this)) { - incScope.Quiet(); return false; } this->ReadListFile(listFile, filenametoread); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0818737c851dce18a6da442ee73029b0de22ad56 commit 0818737c851dce18a6da442ee73029b0de22ad56 Author: Stephen Kelly AuthorDate: Sun Jun 21 22:53:16 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:18 2015 +0200 cmMakefile: Make listfile scopes responsible for logical checks. Remove the LexicalPushPop. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9948ac8..d6cf104 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -412,10 +412,12 @@ public: : Makefile(mf), ReportError(true) { this->Makefile->PushPolicyBarrier(); + this->Makefile->PushFunctionBlockerBarrier(); } ~BuildsystemFileScope() { + this->Makefile->PopFunctionBlockerBarrier(this->ReportError); this->Makefile->PopPolicyBarrier(this->ReportError); } @@ -502,11 +504,13 @@ cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, // The included file cannot pop our policy scope. this->Makefile->PushPolicyBarrier(); this->Makefile->ListFileStack.push_back(filenametoread); + this->Makefile->PushFunctionBlockerBarrier(); } //---------------------------------------------------------------------------- cmMakefile::IncludeScope::~IncludeScope() { + this->Makefile->PopFunctionBlockerBarrier(this->ReportError); // Enforce matching policy scopes inside the included file. this->Makefile->PopPolicyBarrier(this->ReportError); @@ -605,10 +609,12 @@ public: : Makefile(mf), ReportError(true) { this->Makefile->PushPolicyBarrier(); + this->Makefile->PushFunctionBlockerBarrier(); } ~ListFileScope() { + this->Makefile->PopFunctionBlockerBarrier(this->ReportError); this->Makefile->PopPolicyBarrier(this->ReportError); this->Makefile->ListFileStack.pop_back(); } @@ -645,8 +651,6 @@ bool cmMakefile::ReadListFile(const char* filename) void cmMakefile::ReadListFile(cmListFile const& listFile, std::string const& filenametoread) { - LexicalPushPop lexScope(this); - // add this list file to the list of dependencies this->ListFiles.push_back(filenametoread); @@ -671,8 +675,6 @@ void cmMakefile::ReadListFile(cmListFile const& listFile, this->ExecuteCommand(listFile.Functions[i],status); if(cmSystemTools::GetFatalErrorOccured()) { - // Exit early due to error. - lexScope.Quiet(); break; } if(status.GetReturnInvoked()) @@ -3521,19 +3523,6 @@ cmMakefile::RemoveFunctionBlocker(cmFunctionBlocker* fb, return cmsys::auto_ptr(); } -//---------------------------------------------------------------------------- -cmMakefile::LexicalPushPop::LexicalPushPop(cmMakefile* mf): - Makefile(mf), ReportError(true) -{ - this->Makefile->PushFunctionBlockerBarrier(); -} - -//---------------------------------------------------------------------------- -cmMakefile::LexicalPushPop::~LexicalPushPop() -{ - this->Makefile->PopFunctionBlockerBarrier(this->ReportError); -} - const char* cmMakefile::GetHomeDirectory() const { return this->GetCMakeInstance()->GetHomeDirectory(); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 64783e5..ebf33df 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -100,19 +100,6 @@ public: cmsys::auto_ptr RemoveFunctionBlocker(cmFunctionBlocker* fb, const cmListFileFunction& lff); - /** Push/pop a lexical (function blocker) barrier automatically. */ - class LexicalPushPop - { - public: - LexicalPushPop(cmMakefile* mf); - ~LexicalPushPop(); - void Quiet() { this->ReportError = false; } - private: - cmMakefile* Makefile; - bool ReportError; - }; - friend class LexicalPushPop; - /** * Try running cmake and building a file. This is used for dynalically * loaded commands, not as part of the usual build process. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dd7e42758d4874c087bbbc6ae062f36455f6d49c commit dd7e42758d4874c087bbbc6ae062f36455f6d49c Author: Stephen Kelly AuthorDate: Sun Jun 21 22:50:52 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:18 2015 +0200 cmMakefile: Move the lexical scope. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a10f99c..9948ac8 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -645,6 +645,8 @@ bool cmMakefile::ReadListFile(const char* filename) void cmMakefile::ReadListFile(cmListFile const& listFile, std::string const& filenametoread) { + LexicalPushPop lexScope(this); + // add this list file to the list of dependencies this->ListFiles.push_back(filenametoread); @@ -661,9 +663,6 @@ void cmMakefile::ReadListFile(cmListFile const& listFile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_FILE"); this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); - // Enforce balanced blocks (if/endif, function/endfunction, etc.). - LexicalPushPop lexScope(this); - // Run the parsed commands. const size_t numberFunctions = listFile.Functions.size(); for(size_t i =0; i < numberFunctions; ++i) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=92cecd936999f9a4c67332d1aeaba3ff120fbbc2 commit 92cecd936999f9a4c67332d1aeaba3ff120fbbc2 Author: Stephen Kelly AuthorDate: Sun Jun 21 22:50:13 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:18 2015 +0200 cmMakefile: Add automatic scopes to listfile readers. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5225605..a10f99c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -405,6 +405,26 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, return result; } +class cmMakefile::BuildsystemFileScope +{ +public: + BuildsystemFileScope(cmMakefile* mf) + : Makefile(mf), ReportError(true) + { + this->Makefile->PushPolicyBarrier(); + } + + ~BuildsystemFileScope() + { + this->Makefile->PopPolicyBarrier(this->ReportError); + } + + void Quiet() { this->ReportError = false; } +private: + cmMakefile* Makefile; + bool ReportError; +}; + bool cmMakefile::ProcessBuildsystemFile(const char* filename) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); @@ -417,10 +437,12 @@ bool cmMakefile::ProcessBuildsystemFile(const char* filename) { return false; } - - this->PushPolicyBarrier(); + BuildsystemFileScope scope(this); this->ReadListFile(listFile, filename); - this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); + if(cmSystemTools::GetFatalErrorOccured()) + { + scope.Quiet(); + } this->EnforceDirectoryLevelRules(); return true; } @@ -576,6 +598,27 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) return true; } +class cmMakefile::ListFileScope +{ +public: + ListFileScope(cmMakefile* mf) + : Makefile(mf), ReportError(true) + { + this->Makefile->PushPolicyBarrier(); + } + + ~ListFileScope() + { + this->Makefile->PopPolicyBarrier(this->ReportError); + this->Makefile->ListFileStack.pop_back(); + } + + void Quiet() { this->ReportError = false; } +private: + cmMakefile* Makefile; + bool ReportError; +}; + bool cmMakefile::ReadListFile(const char* filename) { std::string filenametoread = @@ -590,10 +633,12 @@ bool cmMakefile::ReadListFile(const char* filename) return false; } - this->PushPolicyBarrier(); + ListFileScope scope(this); this->ReadListFile(listFile, filenametoread); - this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); - this->ListFileStack.pop_back(); + if(cmSystemTools::GetFatalErrorOccured()) + { + scope.Quiet(); + } return true; } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 85f117b..64783e5 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -968,6 +968,10 @@ private: friend class cmCMakePolicyCommand; class IncludeScope; friend class IncludeScope; + class ListFileScope; + friend class ListFileScope; + class BuildsystemFileScope; + friend class BuildsystemFileScope; // stack of policy settings struct PolicyStackEntry: public cmPolicies::PolicyMap http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=276c62253e3f25eda4acbf0049a70c7d622c9ea2 commit 276c62253e3f25eda4acbf0049a70c7d622c9ea2 Author: Stephen Kelly AuthorDate: Sun Jun 21 22:46:42 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:14:17 2015 +0200 cmMakefile: Move the IncludeScope to where it is used. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a3ba134..5225605 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -405,6 +405,26 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, return result; } +bool cmMakefile::ProcessBuildsystemFile(const char* filename) +{ + this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); + std::string curSrc = this->GetCurrentSourceDirectory(); + + this->ListFileStack.push_back(filename); + + cmListFile listFile; + if (!listFile.ParseFile(filename, curSrc == this->GetHomeDirectory(), this)) + { + return false; + } + + this->PushPolicyBarrier(); + this->ReadListFile(listFile, filename); + this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); + this->EnforceDirectoryLevelRules(); + return true; +} + //---------------------------------------------------------------------------- class cmMakefile::IncludeScope { @@ -532,26 +552,6 @@ void cmMakefile::IncludeScope::EnforceCMP0011() } } -bool cmMakefile::ProcessBuildsystemFile(const char* filename) -{ - this->AddDefinition("CMAKE_PARENT_LIST_FILE", filename); - std::string curSrc = this->GetCurrentSourceDirectory(); - - this->ListFileStack.push_back(filename); - - cmListFile listFile; - if (!listFile.ParseFile(filename, curSrc == this->GetHomeDirectory(), this)) - { - return false; - } - - this->PushPolicyBarrier(); - this->ReadListFile(listFile, filename); - this->PopPolicyBarrier(!cmSystemTools::GetFatalErrorOccured()); - this->EnforceDirectoryLevelRules(); - return true; -} - bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", ----------------------------------------------------------------------- Summary of changes: Source/cmGlobalGenerator.cxx | 1 + Source/cmMakefile.cxx | 131 +++++++++++++++++++++++------------------- Source/cmMakefile.h | 22 ++----- 3 files changed, 80 insertions(+), 74 deletions(-) hooks/post-receive -- CMake From steveire at gmail.com Tue Jun 30 17:44:00 2015 From: steveire at gmail.com (Stephen Kelly) Date: Tue, 30 Jun 2015 17:44:00 -0400 (EDT) Subject: [Cmake-commits] CMake branch, next, updated. v3.3.0-rc3-770-g352ef39 Message-ID: <20150630214400.825F4846BA@public.kitware.com> 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 352ef3970ebc3f30bb2bb04502d7db8206955da8 (commit) via 9771642b4171dec73b523b85fc2e31a8bbae3c76 (commit) via ecf2d0dcb3050a391dd59f39b26787f2fa2e6dee (commit) from fe3cbb78721dc84d01ab030422a67013d1595f3d (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=352ef3970ebc3f30bb2bb04502d7db8206955da8 commit 352ef3970ebc3f30bb2bb04502d7db8206955da8 Merge: fe3cbb7 9771642 Author: Stephen Kelly AuthorDate: Tue Jun 30 17:43:59 2015 -0400 Commit: CMake Topic Stage CommitDate: Tue Jun 30 17:43:59 2015 -0400 Merge topic 'use-generator-target' into next 9771642b cmGlobalGenerator: Map local generators to generator targets. ecf2d0dc cmComputeTargetDepends: Change API to use cmGeneratorTarget. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9771642b4171dec73b523b85fc2e31a8bbae3c76 commit 9771642b4171dec73b523b85fc2e31a8bbae3c76 Author: Stephen Kelly AuthorDate: Sat Jun 6 15:24:24 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:35:55 2015 +0200 cmGlobalGenerator: Map local generators to generator targets. diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index a69732e..f310744 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2043,20 +2043,19 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() clg = clg->GetParent()) { // This local generator includes the target. - std::set& targetSet = + std::set& targetSet = this->LocalGeneratorToTargetMap[clg]; - targetSet.insert(&target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + targetSet.insert(gt); // Add dependencies of the included target. An excluded // target may still be included if it is a dependency of a // non-excluded target. - cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator ti = tgtdeps.begin(); ti != tgtdeps.end(); ++ti) { - cmGeneratorTarget const* ttt = *ti; - targetSet.insert(ttt->Target); + targetSet.insert(*ti); } } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f86e825..398335b 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -406,7 +406,7 @@ protected: cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; - std::map > + std::map > LocalGeneratorToTargetMap; // Set of named installation components requested by the project. diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 412728f..e6a67d3 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -830,7 +830,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalGenerator::FULL, cmLocalGenerator::SHELL); // - std::set emitted; + std::set emitted; progCmd << " " << this->CountProgressMarksInTarget(gtarget, emitted); commands.push_back(progCmd.str()); @@ -909,10 +909,10 @@ cmGlobalUnixMakefileGenerator3 size_t cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted) + std::set& emitted) { size_t count = 0; - if(emitted.insert(target->Target).second) + if(emitted.insert(target).second) { count = this->ProgressMap[target->Target].Marks.size(); TargetDependSet const& depends = this->GetTargetDirectDepends(target); @@ -935,14 +935,13 @@ cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg) { size_t count = 0; - std::set emitted; - std::set const& targets + std::set emitted; + std::set const& targets = this->LocalGeneratorToTargetMap[lg]; - for(std::set::const_iterator t = targets.begin(); + for(std::set::const_iterator t = targets.begin(); t != targets.end(); ++t) { - cmGeneratorTarget* gt = this->GetGeneratorTarget(*t); - count += this->CountProgressMarksInTarget(gt, emitted); + count += this->CountProgressMarksInTarget(*t, emitted); } return count; } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 8805011..14adf2e 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -199,7 +199,7 @@ protected: ProgressMapType ProgressMap; size_t CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted); + std::set& emitted); size_t CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg); cmGeneratedFileStream *CommandDatabase; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ecf2d0dcb3050a391dd59f39b26787f2fa2e6dee commit ecf2d0dcb3050a391dd59f39b26787f2fa2e6dee Author: Stephen Kelly AuthorDate: Sat Jun 6 13:08:17 2015 +0200 Commit: Stephen Kelly CommitDate: Tue Jun 30 23:35:54 2015 +0200 cmComputeTargetDepends: Change API to use cmGeneratorTarget. diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 87b47b4..c4a03a0 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -147,12 +147,12 @@ bool cmComputeTargetDepends::Compute() //---------------------------------------------------------------------------- void -cmComputeTargetDepends::GetTargetDirectDepends(cmTarget const* t, +cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t, cmTargetDependSet& deps) { // Lookup the index for this target. All targets should be known by // this point. - std::map::const_iterator tii + std::map::const_iterator tii = this->TargetIndex.find(t); assert(tii != this->TargetIndex.end()); int i = tii->second; @@ -161,7 +161,7 @@ cmComputeTargetDepends::GetTargetDirectDepends(cmTarget const* t, EdgeList const& nl = this->FinalGraph[i]; for(EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { - cmTarget const* dep = this->Targets[*ni]; + cmGeneratorTarget const* dep = this->Targets[*ni]; cmTargetDependSet::iterator di = deps.insert(dep).first; di->SetType(ni->IsStrong()); } @@ -180,9 +180,11 @@ void cmComputeTargetDepends::CollectTargets() ti != targets.end(); ++ti) { cmTarget const* target = &ti->second; + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(target); int index = static_cast(this->Targets.size()); - this->TargetIndex[target] = index; - this->Targets.push_back(target); + this->TargetIndex[gt] = index; + this->Targets.push_back(gt); } } } @@ -204,7 +206,7 @@ void cmComputeTargetDepends::CollectDepends() void cmComputeTargetDepends::CollectTargetDepends(int depender_index) { // Get the depender. - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; if (depender->GetType() == cmTarget::INTERFACE_LIBRARY) { return; @@ -216,10 +218,9 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) // deal with config-specific dependencies. { std::set emitted; - cmGeneratorTarget* gt = this->GlobalGenerator->GetGeneratorTarget(depender); std::vector configs; - depender->GetMakefile()->GetConfigurations(configs); + depender->Makefile->GetConfigurations(configs); if (configs.empty()) { configs.push_back(""); @@ -228,7 +229,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) it != configs.end(); ++it) { std::vector objectFiles; - gt->GetExternalObjects(objectFiles, *it); + depender->GetExternalObjects(objectFiles, *it); for(std::vector::const_iterator oi = objectFiles.begin(); oi != objectFiles.end(); ++oi) { @@ -244,15 +245,15 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) ->IssueMessage(cmake::FATAL_ERROR, "Only executables and non-OBJECT libraries may " "reference target objects.", - depender->GetBacktrace()); + depender->Target->GetBacktrace()); return; } - const_cast(depender)->AddUtility(objLib); + const_cast(depender)->Target->AddUtility(objLib); } } cmTarget::LinkImplementation const* impl = - depender->GetLinkImplementation(*it); + depender->Target->GetLinkImplementation(*it); // A target should not depend on itself. emitted.insert(depender->GetName()); @@ -272,7 +273,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) // Loop over all utility dependencies. { - std::set const& tutils = depender->GetUtilityItems(); + std::set const& tutils = depender->Target->GetUtilityItems(); std::set emitted; // A target should not depend on itself. emitted.insert(depender->GetName()); @@ -290,13 +291,14 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) //---------------------------------------------------------------------------- void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, - cmTarget const* dependee, - const std::string& config, - std::set &emitted) + const cmGeneratorTarget* dependee, + const std::string& config, + std::set &emitted) { - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; if(cmTarget::LinkInterface const* iface = - dependee->GetLinkInterface(config, depender)) + dependee->Target->GetLinkInterface(config, + depender->Target)) { for(std::vector::const_iterator lib = iface->Libraries.begin(); @@ -317,7 +319,7 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set &emitted) { - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; cmTarget const* dependee = dependee_name.Target; // Skip targets that will not really be linked. This is probably a // name conflict between an external library and an executable @@ -331,16 +333,17 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, if(dependee) { - this->AddInterfaceDepends(depender_index, dependee, "", emitted); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(dependee); + this->AddInterfaceDepends(depender_index, gt, "", emitted); std::vector configs; - depender->GetMakefile()->GetConfigurations(configs); + depender->Makefile->GetConfigurations(configs); for (std::vector::const_iterator it = configs.begin(); it != configs.end(); ++it) { // A target should not depend on itself. emitted.insert(depender->GetName()); - this->AddInterfaceDepends(depender_index, dependee, - *it, emitted); + this->AddInterfaceDepends(depender_index, gt, *it, emitted); } } } @@ -351,7 +354,7 @@ void cmComputeTargetDepends::AddTargetDepend( bool linking) { // Get the depender. - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; // Check the target's makefile first. cmTarget const* dependee = dependee_name.Target; @@ -362,7 +365,7 @@ void cmComputeTargetDepends::AddTargetDepend( cmake::MessageType messageType = cmake::AUTHOR_WARNING; bool issueMessage = false; std::ostringstream e; - switch(depender->GetPolicyStatusCMP0046()) + switch(depender->Target->GetPolicyStatusCMP0046()) { case cmPolicies::WARN: e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0046) << "\n"; @@ -383,7 +386,7 @@ void cmComputeTargetDepends::AddTargetDepend( << "\" of target \"" << depender->GetName() << "\" does not exist."; cmListFileBacktrace const* backtrace = - depender->GetUtilityBacktrace(dependee_name); + depender->Target->GetUtilityBacktrace(dependee_name); if(backtrace) { cm->IssueMessage(messageType, e.str(), *backtrace); @@ -408,27 +411,31 @@ void cmComputeTargetDepends::AddTargetDepend( if(dependee) { - this->AddTargetDepend(depender_index, dependee, linking); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(dependee); + this->AddTargetDepend(depender_index, gt, linking); } } //---------------------------------------------------------------------------- void cmComputeTargetDepends::AddTargetDepend(int depender_index, - cmTarget const* dependee, + const cmGeneratorTarget* dependee, bool linking) { - if(dependee->IsImported() || + if(dependee->Target->IsImported() || dependee->GetType() == cmTarget::INTERFACE_LIBRARY) { // Skip IMPORTED and INTERFACE targets but follow their utility // dependencies. - std::set const& utils = dependee->GetUtilityItems(); + std::set const& utils = dependee->Target->GetUtilityItems(); for(std::set::const_iterator i = utils.begin(); i != utils.end(); ++i) { if(cmTarget const* transitive_dependee = i->Target) { - this->AddTargetDepend(depender_index, transitive_dependee, false); + cmGeneratorTarget* gt = + this->GlobalGenerator->GetGeneratorTarget(transitive_dependee); + this->AddTargetDepend(depender_index, gt, false); } } } @@ -436,7 +443,7 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, { // Lookup the index for this target. All targets should be known by // this point. - std::map::const_iterator tii = + std::map::const_iterator tii = this->TargetIndex.find(dependee); assert(tii != this->TargetIndex.end()); int dependee_index = tii->second; @@ -457,13 +464,13 @@ cmComputeTargetDepends::DisplayGraph(Graph const& graph, for(int depender_index = 0; depender_index < n; ++depender_index) { EdgeList const& nl = graph[depender_index]; - cmTarget const* depender = this->Targets[depender_index]; + cmGeneratorTarget const* depender = this->Targets[depender_index]; fprintf(stderr, "target %d is [%s]\n", depender_index, depender->GetName().c_str()); for(EdgeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { int dependee_index = *ni; - cmTarget const* dependee = this->Targets[dependee_index]; + cmGeneratorTarget const* dependee = this->Targets[dependee_index]; fprintf(stderr, " depends on target %d [%s] (%s)\n", dependee_index, dependee->GetName().c_str(), ni->IsStrong()? "strong" : "weak"); } @@ -550,11 +557,11 @@ cmComputeTargetDepends { // Get the depender. int i = *ci; - cmTarget const* depender = this->Targets[i]; + cmGeneratorTarget const* depender = this->Targets[i]; // Describe the depender. e << " \"" << depender->GetName() << "\" of type " - << cmTarget::GetTargetTypeName(depender->GetType()) << "\n"; + << cmTarget::GetTargetTypeName(depender->Target->GetType()) << "\n"; // List its dependencies that are inside the component. EdgeList const& nl = this->InitialGraph[i]; @@ -563,7 +570,7 @@ cmComputeTargetDepends int j = *ni; if(cmap[j] == c) { - cmTarget const* dependee = this->Targets[j]; + cmGeneratorTarget const* dependee = this->Targets[j]; e << " depends on \"" << dependee->GetName() << "\"" << " (" << (ni->IsStrong()? "strong" : "weak") << ")\n"; } diff --git a/Source/cmComputeTargetDepends.h b/Source/cmComputeTargetDepends.h index 902f342..6100d97 100644 --- a/Source/cmComputeTargetDepends.h +++ b/Source/cmComputeTargetDepends.h @@ -21,7 +21,7 @@ class cmComputeComponentGraph; class cmGlobalGenerator; class cmLinkItem; -class cmTarget; +class cmGeneratorTarget; class cmTargetDependSet; /** \class cmComputeTargetDepends @@ -39,9 +39,10 @@ public: bool Compute(); - std::vector const& + std::vector const& GetTargets() const { return this->Targets; } - void GetTargetDirectDepends(cmTarget const* t, cmTargetDependSet& deps); + void GetTargetDirectDepends(cmGeneratorTarget const* t, + cmTargetDependSet& deps); private: void CollectTargets(); void CollectDepends(); @@ -49,13 +50,14 @@ private: void AddTargetDepend(int depender_index, cmLinkItem const& dependee_name, bool linking); - void AddTargetDepend(int depender_index, cmTarget const* dependee, + void AddTargetDepend(int depender_index, cmGeneratorTarget const* dependee, bool linking); bool ComputeFinalDepends(cmComputeComponentGraph const& ccg); void AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set &emitted); - void AddInterfaceDepends(int depender_index, cmTarget const* dependee, + void AddInterfaceDepends(int depender_index, + cmGeneratorTarget const* dependee, const std::string& config, std::set &emitted); cmGlobalGenerator* GlobalGenerator; @@ -63,8 +65,8 @@ private: bool NoCycles; // Collect all targets. - std::vector Targets; - std::map TargetIndex; + std::vector Targets; + std::map TargetIndex; // Represent the target dependency graph. The entry at each // top-level index corresponds to a depender whose dependencies are diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 14efc3e..2f9265a 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -355,11 +355,11 @@ void cmGhsMultiTargetGenerator::WriteTargetLinkLibraries() { // library directories cmTargetDependSet tds = - this->GetGlobalGenerator()->GetTargetDirectDepends(*this->Target); + this->GetGlobalGenerator()->GetTargetDirectDepends(this->GeneratorTarget); for (cmTargetDependSet::iterator tdsI = tds.begin(); tdsI != tds.end(); ++tdsI) { - const cmTarget *tg(*tdsI); + const cmTarget *tg = (*tdsI)->Target; *this->GetFolderBuildStreams() << " -L\"" << GetAbsBuildFilePath(tg) << "\"" << std::endl; } diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 23ab93d..a69732e 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1354,9 +1354,9 @@ bool cmGlobalGenerator::ComputeTargetDepends() { return false; } - std::vector const& targets = ctd.GetTargets(); - for(std::vector::const_iterator ti = targets.begin(); - ti != targets.end(); ++ti) + std::vector const& targets = ctd.GetTargets(); + for(std::vector::const_iterator ti + = targets.begin(); ti != targets.end(); ++ti) { ctd.GetTargetDirectDepends(*ti, this->TargetDependencies[*ti]); } @@ -2050,12 +2050,13 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() // Add dependencies of the included target. An excluded // target may still be included if it is a dependency of a // non-excluded target. - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator ti = tgtdeps.begin(); ti != tgtdeps.end(); ++ti) { - cmTarget const* ttt = *ti; - targetSet.insert(ttt); + cmGeneratorTarget const* ttt = *ti; + targetSet.insert(ttt->Target); } } } @@ -2517,9 +2518,9 @@ void cmGlobalGenerator::AppendDirectoryForConfig(const std::string&, //---------------------------------------------------------------------------- cmGlobalGenerator::TargetDependSet const& -cmGlobalGenerator::GetTargetDirectDepends(cmTarget const& target) +cmGlobalGenerator::GetTargetDirectDepends(cmGeneratorTarget const* target) { - return this->TargetDependencies[&target]; + return this->TargetDependencies[target]; } void cmGlobalGenerator::AddTarget(cmTarget* t) @@ -2619,9 +2620,10 @@ void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets, continue; } // put the target in the set of original targets - originalTargets.insert(target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + originalTargets.insert(gt); // Get the set of targets that depend on target - this->AddTargetDepends(target, projectTargets); + this->AddTargetDepends(gt, projectTargets); } } } @@ -2634,7 +2636,7 @@ bool cmGlobalGenerator::IsRootOnlyTarget(cmTarget* target) const } //---------------------------------------------------------------------------- -void cmGlobalGenerator::AddTargetDepends(cmTarget const* target, +void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target, TargetDependSet& projectTargets) { // add the target itself @@ -2642,11 +2644,10 @@ void cmGlobalGenerator::AddTargetDepends(cmTarget const* target, { // This is the first time we have encountered the target. // Recursively follow its dependencies. - TargetDependSet const& ts = this->GetTargetDirectDepends(*target); + TargetDependSet const& ts = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator i = ts.begin(); i != ts.end(); ++i) { - cmTarget const* dtarget = *i; - this->AddTargetDepends(dtarget, projectTargets); + this->AddTargetDepends(*i, projectTargets); } } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index d606cc9..f86e825 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -292,7 +292,8 @@ public: // what targets does the specified target depend on directly // via a target_link_libraries or add_dependencies - TargetDependSet const& GetTargetDirectDepends(cmTarget const& target); + TargetDependSet const& GetTargetDirectDepends( + const cmGeneratorTarget* target); /** Get per-target generator information. */ cmGeneratorTarget* GetGeneratorTarget(cmTarget const*) const; @@ -368,7 +369,7 @@ protected: TargetDependSet& originalTargets, cmLocalGenerator* root, GeneratorVector const&); bool IsRootOnlyTarget(cmTarget* target) const; - void AddTargetDepends(cmTarget const* target, + void AddTargetDepends(const cmGeneratorTarget* target, TargetDependSet& projectTargets); void SetLanguageEnabledFlag(const std::string& l, cmMakefile* mf); void SetLanguageEnabledMaps(const std::string& l, cmMakefile* mf); @@ -477,7 +478,7 @@ private: std::vector FilesReplacedDuringGenerate; // Store computed inter-target dependencies. - typedef std::map TargetDependMap; + typedef std::map TargetDependMap; TargetDependMap TargetDependencies; // Per-target generator information. diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 103d75a..722294b 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -949,8 +949,8 @@ cmGlobalNinjaGenerator std::set const& utils = target->GetUtilities(); std::copy(utils.begin(), utils.end(), std::back_inserter(outputs)); } else { - cmTargetDependSet const& targetDeps = - this->GetTargetDirectDepends(*target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + cmTargetDependSet const& targetDeps = this->GetTargetDirectDepends(gt); for (cmTargetDependSet::const_iterator i = targetDeps.begin(); i != targetDeps.end(); ++i) { @@ -958,7 +958,7 @@ cmGlobalNinjaGenerator { continue; } - this->AppendTargetOutputs(*i, outputs); + this->AppendTargetOutputs((*i)->Target, outputs); } } } diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 0f61225..412728f 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -804,7 +804,7 @@ cmGlobalUnixMakefileGenerator3 lg->AppendEcho(commands, "Built target " + name, cmLocalUnixMakefileGenerator3::EchoNormal, &progress); - this->AppendGlobalTargetDepends(depends,*gtarget->Target); + this->AppendGlobalTargetDepends(depends, gtarget); lg->WriteMakeRule(ruleFileStream, "All Build rule for target.", localName, depends, commands, true); @@ -832,7 +832,7 @@ cmGlobalUnixMakefileGenerator3 // std::set emitted; progCmd << " " - << this->CountProgressMarksInTarget(gtarget->Target, emitted); + << this->CountProgressMarksInTarget(gtarget, emitted); commands.push_back(progCmd.str()); } std::string tmp = cmake::GetCMakeFilesDirectoryPostSlash(); @@ -908,14 +908,14 @@ cmGlobalUnixMakefileGenerator3 //---------------------------------------------------------------------------- size_t cmGlobalUnixMakefileGenerator3 -::CountProgressMarksInTarget(cmTarget const* target, +::CountProgressMarksInTarget(cmGeneratorTarget const* target, std::set& emitted) { size_t count = 0; - if(emitted.insert(target).second) + if(emitted.insert(target->Target).second) { - count = this->ProgressMap[target].Marks.size(); - TargetDependSet const& depends = this->GetTargetDirectDepends(*target); + count = this->ProgressMap[target->Target].Marks.size(); + TargetDependSet const& depends = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { @@ -941,7 +941,8 @@ cmGlobalUnixMakefileGenerator3 for(std::set::const_iterator t = targets.begin(); t != targets.end(); ++t) { - count += this->CountProgressMarksInTarget(*t, emitted); + cmGeneratorTarget* gt = this->GetGeneratorTarget(*t); + count += this->CountProgressMarksInTarget(gt, emitted); } return count; } @@ -987,22 +988,21 @@ cmGlobalUnixMakefileGenerator3::TargetProgress void cmGlobalUnixMakefileGenerator3 ::AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target) + cmGeneratorTarget* target) { TargetDependSet const& depends_set = this->GetTargetDirectDepends(target); for(TargetDependSet::const_iterator i = depends_set.begin(); i != depends_set.end(); ++i) { // Create the target-level dependency. - cmTarget const* dep = *i; + cmGeneratorTarget const* dep = *i; if (dep->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; } cmLocalUnixMakefileGenerator3* lg3 = - static_cast - (dep->GetMakefile()->GetLocalGenerator()); - std::string tgtName = lg3->GetRelativeTargetDirectory(*dep); + static_cast(dep->GetLocalGenerator()); + std::string tgtName = lg3->GetRelativeTargetDirectory(*(*dep).Target); tgtName += "/all"; depends.push_back(tgtName); } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index a639ff0..8805011 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -153,7 +153,7 @@ protected: cmLocalUnixMakefileGenerator3* lg); void AppendGlobalTargetDepends(std::vector& depends, - cmTarget& target); + cmGeneratorTarget* target); // does this generator need a requires step for any of its targets bool NeedRequiresStep(cmTarget const&); @@ -198,7 +198,7 @@ protected: cmStrictTargetComparison> ProgressMapType; ProgressMapType ProgressMap; - size_t CountProgressMarksInTarget(cmTarget const* target, + size_t CountProgressMarksInTarget(cmGeneratorTarget const* target, std::set& emitted); size_t CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg); diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index 632141a..65a15ee 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -224,7 +224,7 @@ void cmGlobalVisualStudio6Generator tt = orderedProjectTargets.begin(); tt != orderedProjectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index f453da1..1674e98 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -402,7 +402,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetConfigurations( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -442,7 +442,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -534,7 +534,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetDepends( for(OrderedTargetDependSet::const_iterator tt = projectTargets.begin(); tt != projectTargets.end(); ++tt) { - cmTarget const* target = *tt; + cmTarget const* target = (*tt)->Target; if(target->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; @@ -1045,12 +1045,12 @@ cmGlobalVisualStudio7Generator ::IsDependedOn(OrderedTargetDependSet const& projectTargets, cmTarget const* targetIn) { + cmGeneratorTarget* gtIn = this->GetGeneratorTarget(targetIn); for (OrderedTargetDependSet::const_iterator l = projectTargets.begin(); l != projectTargets.end(); ++l) { - cmTarget const& target = **l; - TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target); - if(tgtdeps.count(targetIn)) + TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(*l); + if(tgtdeps.count(gtIn)) { return true; } diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index b96a799..f3cf36e 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -441,7 +441,8 @@ bool cmGlobalVisualStudio8Generator::ComputeTargetDepends() void cmGlobalVisualStudio8Generator::WriteProjectDepends( std::ostream& fout, const std::string&, const char*, cmTarget const& t) { - TargetDependSet const& unordered = this->GetTargetDirectDepends(t); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&t); + TargetDependSet const& unordered = this->GetTargetDirectDepends(gt); OrderedTargetDependSet depends(unordered); for(OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 585d19a..438d60e 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -299,13 +299,14 @@ void cmGlobalVisualStudioGenerator::FillLinkClosure(cmTarget const* target, { if(linked.insert(target).second) { - TargetDependSet const& depends = this->GetTargetDirectDepends(*target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + TargetDependSet const& depends = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { if(di->IsLink()) { - this->FillLinkClosure(*di, linked); + this->FillLinkClosure((*di)->Target, linked); } } } @@ -338,13 +339,14 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends( { // Static library targets do not list their link dependencies so // we must follow them transitively now. - TargetDependSet const& depends = this->GetTargetDirectDepends(*target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(target); + TargetDependSet const& depends = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) { if(di->IsLink()) { - this->FollowLinkDepends(*di, linked); + this->FollowLinkDepends((*di)->Target, linked); } } } @@ -413,7 +415,8 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) target.GetType() != cmTarget::MODULE_LIBRARY && target.GetType() != cmTarget::EXECUTABLE); - TargetDependSet const& depends = this->GetTargetDirectDepends(target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + TargetDependSet const& depends = this->GetTargetDirectDepends(gt); // Collect implicit link dependencies (target_link_libraries). // Static libraries cannot depend on their link implementation @@ -427,7 +430,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) cmTargetDepend dep = *di; if(dep.IsLink()) { - this->FollowLinkDepends(dep, linkDepends); + this->FollowLinkDepends(dep->Target, linkDepends); } } } @@ -440,7 +443,7 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target) cmTargetDepend dep = *di; if(dep.IsUtil()) { - this->FollowLinkDepends(dep, utilDepends); + this->FollowLinkDepends(dep->Target, utilDepends); } } @@ -843,7 +846,7 @@ cmGlobalVisualStudioGenerator::TargetIsFortranOnly(cmTarget const& target) //---------------------------------------------------------------------------- bool cmGlobalVisualStudioGenerator::TargetCompare -::operator()(cmTarget const* l, cmTarget const* r) const +::operator()(cmGeneratorTarget const* l, cmGeneratorTarget const* r) const { // Make sure ALL_BUILD is first so it is the default active project. if(r->GetName() == "ALL_BUILD") @@ -868,7 +871,13 @@ cmGlobalVisualStudioGenerator::OrderedTargetDependSet cmGlobalVisualStudioGenerator::OrderedTargetDependSet ::OrderedTargetDependSet(TargetSet const& targets) { - this->insert(targets.begin(), targets.end()); + for (TargetSet::const_iterator it = targets.begin(); + it != targets.end(); ++it) + { + cmGeneratorTarget* gt = + (*it)->GetMakefile()->GetGlobalGenerator()->GetGeneratorTarget(*it); + this->insert(gt); + } } std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir( diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index 69b4564..41843b3 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -91,7 +91,8 @@ public: class TargetSet: public std::set {}; struct TargetCompare { - bool operator()(cmTarget const* l, cmTarget const* r) const; + bool operator()(cmGeneratorTarget const* l, + cmGeneratorTarget const* r) const; }; class OrderedTargetDependSet; diff --git a/Source/cmTargetDepend.h b/Source/cmTargetDepend.h index 1feb072..c5059ee 100644 --- a/Source/cmTargetDepend.h +++ b/Source/cmTargetDepend.h @@ -14,23 +14,24 @@ #include "cmStandardIncludes.h" -class cmTarget; +class cmGeneratorTarget; /** One edge in the global target dependency graph. It may be marked as a 'link' or 'util' edge or both. */ class cmTargetDepend { - cmTarget const* Target; + cmGeneratorTarget const* Target; // The set order depends only on the Target, so we use // mutable members to acheive a map with set syntax. mutable bool Link; mutable bool Util; public: - cmTargetDepend(cmTarget const* t): Target(t), Link(false), Util(false) {} - operator cmTarget const*() const { return this->Target; } - cmTarget const* operator->() const { return this->Target; } - cmTarget const& operator*() const { return *this->Target; } + cmTargetDepend(cmGeneratorTarget const* t) + : Target(t), Link(false), Util(false) {} + operator cmGeneratorTarget const*() const { return this->Target; } + cmGeneratorTarget const* operator->() const { return this->Target; } + cmGeneratorTarget const& operator*() const { return *this->Target; } friend bool operator < (cmTargetDepend const& l, cmTargetDepend const& r) { return l.Target < r.Target; } void SetType(bool strong) const diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 12a1e42..591c2db 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2660,7 +2660,7 @@ void cmVisualStudio10TargetGenerator::WriteEvent( void cmVisualStudio10TargetGenerator::WriteProjectReferences() { cmGlobalGenerator::TargetDependSet const& unordered - = this->GlobalGenerator->GetTargetDirectDepends(*this->Target); + = this->GlobalGenerator->GetTargetDirectDepends(this->GeneratorTarget); typedef cmGlobalVisualStudioGenerator::OrderedTargetDependSet OrderedTargetDependSet; OrderedTargetDependSet depends(unordered); @@ -2668,7 +2668,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences() for( OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) { - cmTarget const* dt = *i; + cmTarget const* dt = (*i)->Target; if(dt->GetType() == cmTarget::INTERFACE_LIBRARY) { continue; ----------------------------------------------------------------------- Summary of changes: Source/cmComputeTargetDepends.cxx | 81 +++++++++++++++------------- Source/cmComputeTargetDepends.h | 16 +++--- Source/cmGhsMultiTargetGenerator.cxx | 4 +- Source/cmGlobalGenerator.cxx | 32 +++++------ Source/cmGlobalGenerator.h | 9 ++-- Source/cmGlobalNinjaGenerator.cxx | 6 +-- Source/cmGlobalUnixMakefileGenerator3.cxx | 29 +++++----- Source/cmGlobalUnixMakefileGenerator3.h | 6 +-- Source/cmGlobalVisualStudio6Generator.cxx | 2 +- Source/cmGlobalVisualStudio7Generator.cxx | 12 ++--- Source/cmGlobalVisualStudio8Generator.cxx | 3 +- Source/cmGlobalVisualStudioGenerator.cxx | 27 ++++++---- Source/cmGlobalVisualStudioGenerator.h | 3 +- Source/cmTargetDepend.h | 13 ++--- Source/cmVisualStudio10TargetGenerator.cxx | 4 +- 15 files changed, 134 insertions(+), 113 deletions(-) hooks/post-receive -- CMake