diff options
32 files changed, 313 insertions, 78 deletions
diff --git a/CMakeCPack.cmake b/CMakeCPack.cmake index 72fc97c..8879cb9 100644 --- a/CMakeCPack.cmake +++ b/CMakeCPack.cmake @@ -108,9 +108,9 @@ if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") set(CPACK_COMPONENTS_GROUPING IGNORE) ") else() - if(BUILD_QtDialog AND CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL) + if(BUILD_QtDialog AND USE_LGPL) set(_CPACK_IFW_ADDITIONAL_LICENSES - "\"LGPLv2.1\" \"${CMake_SOURCE_DIR}/Licenses/LGPLv2.1.txt\"") + "\"LGPLv${USE_LGPL}\" \"${CMake_SOURCE_DIR}/Licenses/LGPLv${USE_LGPL}.txt\"") endif() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 787f319..5336208 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,16 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE) set(CMake_BIN_DIR ${CMake_BINARY_DIR}/bin) endif() +if(CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL) + if(CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL MATCHES "^3|2\\.1$") + set(USE_LGPL "${CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL}") + else() + set(USE_LGPL "2.1") + endif() +else() + set(USE_LGPL "") +endif() + if("${CMake_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") # Disallow architecture-specific try_run. It may not run on the host. macro(TRY_RUN) diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst index 65153af..8f7c336 100644 --- a/Help/manual/cmake.1.rst +++ b/Help/manual/cmake.1.rst @@ -108,6 +108,11 @@ Options Like ``--trace``, but with variables expanded. +``--trace-source=<file>`` + Put cmake in trace mode, but output only lines of a specified file. + + Multiple options are allowed. + ``--warn-uninitialized`` Warn about uninitialized values. diff --git a/Help/release/dev/cmake-trace-source.rst b/Help/release/dev/cmake-trace-source.rst new file mode 100644 index 0000000..9b17f6c --- /dev/null +++ b/Help/release/dev/cmake-trace-source.rst @@ -0,0 +1,4 @@ +cmake-trace-source +------------------ + +* The :manual:`cmake(1)` command learned a ``--trace-source=<file>`` option. diff --git a/Licenses/LGPLv3.txt b/Licenses/LGPLv3.txt new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/Licenses/LGPLv3.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake index dc6336d..e38e5ed 100644 --- a/Modules/FindFreetype.cmake +++ b/Modules/FindFreetype.cmake @@ -87,15 +87,28 @@ find_path( freetype2 ) -find_library(FREETYPE_LIBRARY - NAMES - freetype - libfreetype - freetype219 - ${FREETYPE_FIND_ARGS} - PATH_SUFFIXES - lib -) +if(NOT FREETYPE_LIBRARY) + find_library(FREETYPE_LIBRARY_RELEASE + NAMES + freetype + libfreetype + freetype219 + ${FREETYPE_FIND_ARGS} + PATH_SUFFIXES + lib + ) + find_library(FREETYPE_LIBRARY_DEBUG + NAMES + freetyped + libfreetyped + freetype219d + ${FREETYPE_FIND_ARGS} + PATH_SUFFIXES + lib + ) + include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) + select_library_configurations(FREETYPE) +endif() unset(FREETYPE_FIND_ARGS) @@ -147,7 +160,6 @@ find_package_handle_standard_args( ) mark_as_advanced( - FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build ) diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake index 33290c4..d16460b 100644 --- a/Modules/FindPkgConfig.cmake +++ b/Modules/FindPkgConfig.cmake @@ -595,12 +595,14 @@ endmacro() XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp #]========================================] macro(pkg_check_modules _prefix _module0) + _pkgconfig_parse_options(_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target "${_module0}" ${ARGN}) # check cached value if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND) - _pkgconfig_parse_options (_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target "${_module0}" ${ARGN}) _pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} "${_prefix}" ${_pkg_modules}) _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION}) + elseif (${_prefix}_FOUND AND ${_imp_target}) + _pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path) endif() endmacro() @@ -623,10 +625,10 @@ endmacro() pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2) #]========================================] macro(pkg_search_module _prefix _module0) + _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target "${_module0}" ${ARGN}) # check cached value if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND) set(_pkg_modules_found 0) - _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target "${_module0}" ${ARGN}) if (NOT ${_pkg_is_silent}) message(STATUS "Checking for one of the modules '${_pkg_modules_alt}'") @@ -650,6 +652,8 @@ macro(pkg_search_module _prefix _module0) endif() _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION}) + elseif (${_prefix}_FOUND AND ${_imp_target}) + _pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path) endif() endmacro() diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake index 11091b5..d167a13 100644 --- a/Modules/FindQt4.cmake +++ b/Modules/FindQt4.cmake @@ -240,6 +240,8 @@ # The QAxServer target (Windows only) # ``Qt4::QtDBus`` # The QtDBus target +# ``Qt4::QtDeclarative`` +# The QtDeclarative target # ``Qt4::QtDesigner`` # The QtDesigner target # ``Qt4::QtDesignerComponents`` diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 1920a7c..6c254ed 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -305,7 +305,7 @@ macro(__windows_compiler_msvc lang) set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-D_DEBUG /MDd -gline-tables-only -fno-inline -O0 ${_RTC1}") set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD -O2 -DNDEBUG") set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD -gline-tables-only -O2 -fno-inline -DNDEBUG") - set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD -Os -DNDEBUG") + set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD -DNDEBUG") # TODO: Add '-Os' once VS generator maps it properly for Clang else() set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS /W3${_FLAGS_${lang}}") set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od ${_RTC1}") @@ -89,7 +89,7 @@ If you have found a bug: 3. Finally, if the issue is not resolved by the above steps, open an entry in the `CMake Issue Tracker`_. -.. _`CMake Issue Tracker`: https://cmake.org/Bug +.. _`CMake Issue Tracker`: https://gitlab.kitware.com/cmake/cmake/issues Contributing ============ diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 7e8a46a..98d87b1 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 6) -set(CMake_VERSION_PATCH 20160617) +set(CMake_VERSION_PATCH 20160621) #set(CMake_VERSION_RC 1) diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt index a906f4a..68c65ac 100644 --- a/Source/QtDialog/CMakeLists.txt +++ b/Source/QtDialog/CMakeLists.txt @@ -150,12 +150,12 @@ if(APPLE) MACOSX_PACKAGE_LOCATION Resources) endif() -if(CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL) - install(FILES ${CMake_SOURCE_DIR}/Licenses/LGPLv2.1.txt +if(USE_LGPL) + install(FILES ${CMake_SOURCE_DIR}/Licenses/LGPLv${USE_LGPL}.txt DESTINATION ${CMAKE_DATA_DIR}/Licenses ${COMPONENT}) set_property(SOURCE CMakeSetupDialog.cxx - PROPERTY COMPILE_DEFINITIONS CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL) + PROPERTY COMPILE_DEFINITIONS USE_LGPL="${USE_LGPL}") endif() set(CMAKE_INCLUDE_CURRENT_DIR ON) diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index 712611d..fda3e58 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -830,17 +830,18 @@ void CMakeSetupDialog::doAbout() "\n" "CMake GUI maintained by csimsoft,\n" "built using Qt %2 (qt-project.org).\n" -#ifdef CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL +#ifdef USE_LGPL "\n" "The Qt Toolkit is Copyright (C) Digia Plc and/or its subsidiary(-ies).\n" - "Qt is licensed under terms of the GNU LGPLv2.1, available at:\n" + "Qt is licensed under terms of the GNU LGPLv" USE_LGPL ", available at:\n" " \"%3\"" #endif ); msg = msg.arg(cmVersion::GetCMakeVersion()); msg = msg.arg(qVersion()); -#ifdef CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL - std::string lgpl = cmSystemTools::GetCMakeRoot() + "/Licenses/LGPLv2.1.txt"; +#ifdef USE_LGPL + std::string lgpl = + cmSystemTools::GetCMakeRoot() + "/Licenses/LGPLv" USE_LGPL ".txt"; msg = msg.arg(lgpl.c_str()); #endif diff --git a/Source/cmDependsJavaParserHelper.cxx b/Source/cmDependsJavaParserHelper.cxx index bd3ee4d..238e7a1 100644 --- a/Source/cmDependsJavaParserHelper.cxx +++ b/Source/cmDependsJavaParserHelper.cxx @@ -35,7 +35,7 @@ cmDependsJavaParserHelper::~cmDependsJavaParserHelper() } void cmDependsJavaParserHelper::CurrentClass::AddFileNamesForPrinting( - std::vector<std::string>* files, const char* prefix, const char* sep) + std::vector<std::string>* files, const char* prefix, const char* sep) const { std::string rname = ""; if (prefix) { @@ -44,8 +44,8 @@ void cmDependsJavaParserHelper::CurrentClass::AddFileNamesForPrinting( } rname += this->Name; files->push_back(rname); - std::vector<CurrentClass>::iterator it; - for (it = this->NestedClasses->begin(); it != this->NestedClasses->end(); + std::vector<CurrentClass>::const_iterator it; + for (it = this->NestedClasses.begin(); it != this->NestedClasses.end(); ++it) { it->AddFileNamesForPrinting(files, rname.c_str(), sep); } @@ -191,25 +191,19 @@ void cmDependsJavaParserHelper::StartClass(const char* cls) void cmDependsJavaParserHelper::EndClass() { - CurrentClass* parent = 0; - CurrentClass* current = 0; - if (!this->ClassStack.empty()) { - current = &(*(this->ClassStack.end() - 1)); - if (this->ClassStack.size() > 1) { - parent = &(*(this->ClassStack.end() - 2)); - } - } - if (current == 0) { + if (this->ClassStack.empty()) { std::cerr << "Error when parsing. Current class is null" << std::endl; abort(); } - if (parent == 0) { + if (this->ClassStack.size() <= 1) { std::cerr << "Error when parsing. Parent class is null" << std::endl; abort(); } + CurrentClass& current = this->ClassStack.back(); + CurrentClass& parent = this->ClassStack[this->ClassStack.size() - 2]; this->CurrentDepth--; - parent->NestedClasses->push_back(*current); - this->ClassStack.erase(this->ClassStack.end() - 1, this->ClassStack.end()); + parent.NestedClasses.push_back(current); + this->ClassStack.pop_back(); } void cmDependsJavaParserHelper::PrintClasses() @@ -228,10 +222,10 @@ void cmDependsJavaParserHelper::PrintClasses() std::vector<std::string> cmDependsJavaParserHelper::GetFilesProduced() { std::vector<std::string> files; - CurrentClass* toplevel = &(*(this->ClassStack.begin())); - std::vector<CurrentClass>::iterator it; - for (it = toplevel->NestedClasses->begin(); - it != toplevel->NestedClasses->end(); ++it) { + CurrentClass const& toplevel = this->ClassStack.front(); + std::vector<CurrentClass>::const_iterator it; + for (it = toplevel.NestedClasses.begin(); it != toplevel.NestedClasses.end(); + ++it) { it->AddFileNamesForPrinting(&files, 0, "$"); } return files; @@ -309,11 +303,10 @@ int cmDependsJavaParserHelper::LexInput(char* buf, int maxlen) if (buf[0] == '\n') { this->CurrentLine++; } - return (1); - } else { - buf[0] = '\n'; - return (0); + return 1; } + buf[0] = '\n'; + return 0; } void cmDependsJavaParserHelper::Error(const char* str) { diff --git a/Source/cmDependsJavaParserHelper.h b/Source/cmDependsJavaParserHelper.h index a13d023..6ff0245 100644 --- a/Source/cmDependsJavaParserHelper.h +++ b/Source/cmDependsJavaParserHelper.h @@ -48,7 +48,7 @@ public: // For yacc void AddClassFound(const char* sclass); - void PrepareElement(ParserType* opt); + void PrepareElement(ParserType* me); void DeallocateParserType(char** pt); void CheckEmpty(int line, int cnt, ParserType* pt); void StartClass(const char* cls); @@ -69,20 +69,9 @@ private: { public: std::string Name; - std::vector<CurrentClass>* NestedClasses; - CurrentClass() { this->NestedClasses = new std::vector<CurrentClass>; } - ~CurrentClass() { delete this->NestedClasses; } - CurrentClass& operator=(CurrentClass const& c) - { - this->NestedClasses->clear(); - this->Name = c.Name; - std::copy(c.NestedClasses->begin(), c.NestedClasses->end(), - std::back_inserter(*this->NestedClasses)); - return *this; - } - CurrentClass(CurrentClass const& c) { (*this) = c; } + std::vector<CurrentClass> NestedClasses; void AddFileNamesForPrinting(std::vector<std::string>* files, - const char* prefix, const char* sep); + const char* prefix, const char* sep) const; }; std::string CurrentPackage; std::string::size_type InputBufferPos; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5712070..e8c1576 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -37,6 +37,7 @@ #include <cmsys/FStream.hxx> #include <cmsys/RegularExpression.hxx> +#include <cmsys/SystemTools.hxx> #include <cmsys/auto_ptr.hxx> #include <assert.h> @@ -175,8 +176,29 @@ cmListFileContext cmMakefile::GetExecutionContext() const void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const { + // Check if current file in the list of requested to trace... + std::vector<std::string> const& trace_only_this_files = + this->GetCMakeInstance()->GetTraceSources(); + std::string const& full_path = this->GetExecutionFilePath(); + std::string const& only_filename = cmSystemTools::GetFilenameName(full_path); + bool trace = trace_only_this_files.empty(); + if (!trace) { + for (std::vector<std::string>::const_iterator i = + trace_only_this_files.begin(); + !trace && i != trace_only_this_files.end(); ++i) { + std::string::size_type const pos = full_path.rfind(*i); + trace = (pos != std::string::npos) && + ((pos + i->size()) == full_path.size()) && + (only_filename == cmSystemTools::GetFilenameName(*i)); + } + // Do nothing if current file wasn't requested for trace... + if (!trace) { + return; + } + } + std::ostringstream msg; - msg << this->GetExecutionFilePath() << "(" << lff.Line << "): "; + msg << full_path << "(" << lff.Line << "): "; msg << lff.Name << "("; bool expand = this->GetCMakeInstance()->GetTraceExpand(); std::string temp; diff --git a/Source/cmVS14CLFlagTable.h b/Source/cmVS14CLFlagTable.h index 4243f30..5812e79 100644 --- a/Source/cmVS14CLFlagTable.h +++ b/Source/cmVS14CLFlagTable.h @@ -16,7 +16,6 @@ static cmVS7FlagTable cmVS14CLFlagTable[] = { { "Optimization", "", "Custom", "Custom", 0 }, { "Optimization", "Od", "Disabled", "Disabled", 0 }, - { "Optimization", "Os", "Minimize Size", "MinSize", 0 }, { "Optimization", "O1", "Minimize Size", "MinSpace", 0 }, { "Optimization", "O2", "Maximize Speed", "MaxSpeed", 0 }, { "Optimization", "Ox", "Full Optimization", "Full", 0 }, diff --git a/Source/cmake.cxx b/Source/cmake.cxx index db0072a..654100b 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -589,6 +589,11 @@ void cmake::SetArgs(const std::vector<std::string>& args, std::cout << "Running with expanded trace output on.\n"; this->SetTrace(true); this->SetTraceExpand(true); + } else if (arg.find("--trace-source=", 0) == 0) { + std::string file = arg.substr(strlen("--trace-source=")); + cmSystemTools::ConvertToUnixSlashes(file); + this->AddTraceSource(file); + this->SetTrace(true); } else if (arg.find("--trace", 0) == 0) { std::cout << "Running with trace output on.\n"; this->SetTrace(true); diff --git a/Source/cmake.h b/Source/cmake.h index c5d7cbb..9ac6935 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -307,6 +307,14 @@ public: void SetTrace(bool b) { this->Trace = b; } bool GetTraceExpand() { return this->TraceExpand; } void SetTraceExpand(bool b) { this->TraceExpand = b; } + void AddTraceSource(std::string const& file) + { + this->TraceOnlyThisSources.push_back(file); + } + std::vector<std::string> const& GetTraceSources() const + { + return this->TraceOnlyThisSources; + } bool GetWarnUninitialized() { return this->WarnUninitialized; } void SetWarnUninitialized(bool b) { this->WarnUninitialized = b; } bool GetWarnUnused() { return this->WarnUnused; } @@ -481,6 +489,8 @@ private: cmState* State; cmState::Snapshot CurrentSnapshot; + std::vector<std::string> TraceOnlyThisSources; + void UpdateConversionPathTable(); // Print a list of valid generators to stderr. diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 056671a..495aae5 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -73,6 +73,8 @@ static const char* cmDocumentationOptions[][2] = { { "--debug-output", "Put cmake in a debug mode." }, { "--trace", "Put cmake in trace mode." }, { "--trace-expand", "Put cmake in trace mode with variable expansion." }, + { "--trace-source=<file>", + "Trace only this CMake file/module. Multiple options allowed." }, { "--warn-uninitialized", "Warn about uninitialized values." }, { "--warn-unused-vars", "Warn about unused variables." }, { "--no-warn-unused-cli", "Don't warn about command line options." }, diff --git a/Tests/RunCMake/CPack/DEB/DEB_EXTRA-VerifyResult.cmake b/Tests/RunCMake/CPack/DEB/DEB_EXTRA-VerifyResult.cmake index 5f929ff..85e137f 100644 --- a/Tests/RunCMake/CPack/DEB/DEB_EXTRA-VerifyResult.cmake +++ b/Tests/RunCMake/CPack/DEB/DEB_EXTRA-VerifyResult.cmake @@ -1,17 +1,18 @@ set(foo_preinst "^echo default_preinst$") -set(foo_preinst_permissions_regex "-rwxr-xr-x .*") +# NOTE: optional dot at the end of permissions regex is for SELinux enabled systems +set(foo_preinst_permissions_regex "-rwxr-xr-x\.? .*") set(foo_prerm "^echo default_prerm$") -set(foo_prerm_permissions_regex "-rwxr-xr-x .*") +set(foo_prerm_permissions_regex "-rwxr-xr-x\.? .*") verifyDebControl("${FOUND_FILE_1}" "foo" "preinst;prerm") set(bar_preinst "^echo bar_preinst$") -set(bar_prerm_permissions_regex "-rwx------ .*") +set(bar_preinst_permissions_regex "-rwx------\.? .*") set(bar_prerm "^echo bar_prerm$") -set(bar_prerm_permissions_regex "-rwx------ .*") +set(bar_prerm_permissions_regex "-rwx------\.? .*") verifyDebControl("${FOUND_FILE_2}" "bar" "preinst;prerm") set(bas_preinst "^echo default_preinst$") -set(bas_prerm_permissions_regex "-rwxr-xr-x .*") +set(bas_preinst_permissions_regex "-rwxr-xr-x\.? .*") set(bas_prerm "^echo default_prerm$") -set(bas_prerm_permissions_regex "-rwxr-xr-x .*") +set(bas_prerm_permissions_regex "-rwxr-xr-x\.? .*") verifyDebControl("${FOUND_FILE_3}" "bas" "preinst;prerm") diff --git a/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS-VerifyResult.cmake b/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS-VerifyResult.cmake index 8ccb628..b1952ef 100644 --- a/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS-VerifyResult.cmake +++ b/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS-VerifyResult.cmake @@ -1,3 +1,4 @@ set(shlibs_shlibs "^libtest_lib 0\\.8 generate_shlibs \\(\\= 0\\.1\\.1\\)\n$") -set(shlibs_shlibs_permissions_regex "-rw-r--r-- .*") +# optional dot at the end of permissions regex is for SELinux enabled systems +set(shlibs_shlibs_permissions_regex "-rw-r--r--\.? .*") verifyDebControl("${FOUND_FILE_1}" "shlibs" "shlibs") diff --git a/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS_LDCONFIG-VerifyResult.cmake b/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS_LDCONFIG-VerifyResult.cmake index d04c641..422cfbe 100644 --- a/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS_LDCONFIG-VerifyResult.cmake +++ b/Tests/RunCMake/CPack/DEB/DEB_GENERATE_SHLIBS_LDCONFIG-VerifyResult.cmake @@ -1,7 +1,8 @@ set(shlibs_shlibs "^libtest_lib 0\\.8 generate_shlibs_ldconfig \\(>\\= 0\\.1\\.1\\)\n$") -set(shlibs_shlibs_permissions_regex "-rw-r--r-- .*") +# NOTE: optional dot at the end of permissions regex is for SELinux enabled systems +set(shlibs_shlibs_permissions_regex "-rw-r--r--\.? .*") set(shlibs_postinst ".*ldconfig.*") -set(shlibs_postinst_permissions_regex "-rwxr-xr-x .*") +set(shlibs_postinst_permissions_regex "-rwxr-xr-x\.? .*") set(shlibs_postrm ".*ldconfig.*") -set(shlibs_postrm_permissions_regex "-rwxr-xr-x .*") +set(shlibs_postrm_permissions_regex "-rwxr-xr-x\.? .*") verifyDebControl("${FOUND_FILE_1}" "shlibs" "shlibs;postinst;postrm") diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index f449f1d..077a19d 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -264,6 +264,10 @@ set(RunCMake_TEST_OPTIONS --trace-expand) run_cmake(trace-expand) unset(RunCMake_TEST_OPTIONS) +set(RunCMake_TEST_OPTIONS --trace-source=trace-only-this-file.cmake) +run_cmake(trace-source) +unset(RunCMake_TEST_OPTIONS) + set(RunCMake_TEST_OPTIONS --debug-trycompile) run_cmake(debug-trycompile) unset(RunCMake_TEST_OPTIONS) diff --git a/Tests/RunCMake/CommandLine/trace-only-this-file.cmake b/Tests/RunCMake/CommandLine/trace-only-this-file.cmake new file mode 100644 index 0000000..1450271 --- /dev/null +++ b/Tests/RunCMake/CommandLine/trace-only-this-file.cmake @@ -0,0 +1 @@ +message(STATUS "trace particular file test passed") diff --git a/Tests/RunCMake/CommandLine/trace-source-stderr.txt b/Tests/RunCMake/CommandLine/trace-source-stderr.txt new file mode 100644 index 0000000..dc90c65 --- /dev/null +++ b/Tests/RunCMake/CommandLine/trace-source-stderr.txt @@ -0,0 +1 @@ +^.*/trace-only-this-file.cmake\(1\): message\(STATUS trace particular file test passed \)$ diff --git a/Tests/RunCMake/CommandLine/trace-source.cmake b/Tests/RunCMake/CommandLine/trace-source.cmake new file mode 100644 index 0000000..5ac2d9d --- /dev/null +++ b/Tests/RunCMake/CommandLine/trace-source.cmake @@ -0,0 +1,3 @@ +message(STATUS "before include()") +include("trace-only-this-file.cmake") +message(STATUS "after include()") diff --git a/Utilities/Release/linux32_release.cmake b/Utilities/Release/linux32_release.cmake index 6d096d1..4ef513e 100644 --- a/Utilities/Release/linux32_release.cmake +++ b/Utilities/Release/linux32_release.cmake @@ -17,7 +17,7 @@ OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2h/include OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-i386 BUILD_QtDialog:BOOL:=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=2.1 CMake_INSTALL_DEPENDENCIES:BOOL=ON QT_QMAKE_EXECUTABLE:FILEPATH=/home/kitware/qt-4.43-install/bin/qmake ") diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index cfe370b..7511c8a 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -17,7 +17,7 @@ OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2h/include OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-x86_64 BUILD_QtDialog:BOOL:=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=2.1 CMake_INSTALL_DEPENDENCIES:BOOL=ON QT_QMAKE_EXECUTABLE:FILEPATH=/home/kitware/qt-4.8.6/bin/qmake ") diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake index 17f7df6..35705ed 100644 --- a/Utilities/Release/osx_release.cmake +++ b/Utilities/Release/osx_release.cmake @@ -18,7 +18,7 @@ CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.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 +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_SKIP_RPATH:BOOL=TRUE CMake_NO_C_STANDARD:BOOL=TRUE diff --git a/Utilities/Release/win32_release.cmake b/Utilities/Release/win32_release.cmake index ba83b26..3892441 100644 --- a/Utilities/Release/win32_release.cmake +++ b/Utilities/Release/win32_release.cmake @@ -15,7 +15,7 @@ CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CMAKE_Fortran_COMPILER:FILEPATH=FALSE CMAKE_GENERATOR:INTERNAL=Ninja BUILD_QtDialog:BOOL:=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,5.01 ") diff --git a/Utilities/Release/win64_release.cmake b/Utilities/Release/win64_release.cmake index 8e207b5..923cc96 100644 --- a/Utilities/Release/win64_release.cmake +++ b/Utilities/Release/win64_release.cmake @@ -16,7 +16,7 @@ CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CMAKE_Fortran_COMPILER:FILEPATH=FALSE CMAKE_GENERATOR:INTERNAL=Ninja BUILD_QtDialog:BOOL:=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,5.02 ") |