summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* cmake-gui: Populate CFBundleIdentifier in our Info.plist file (#16023)Brad King2016-03-171-0/+1
|
* CMake 3.5.0v3.5.0Brad King2016-03-081-1/+1
|
* Merge branch 'vs14-debug-enum-older-toolsets' into releaseBrad King2016-03-071-0/+28
|\
| * VS: Fix VS 2015 .vcxproj debug setting for older toolsets (#15986)Brad King2016-03-071-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.4.2~2^2 (VS: Fix VS 2015 .vcxproj file value for GenerateDebugInformation, 2016-01-08) we generate invalid project files for the v110 and v120 toolsets. VS complains: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(639,9): error MSB4030: "Debug" is an invalid value for the "GenerateDebugInformation" parameter of the "Link" task. The "GenerateDebugInformation" parameter is of type "System.Boolean". This reveals that our VS flag map selection should be based on the toolset instead of the version of VS. However, that will be a non-trivial change so for now fix this particular use case by hard-coding a correction to the flag map. Reported-by: Gregor Jasny <gjasny@googlemail.com>
* | CMake 3.5.0-rc3v3.5.0-rc3Brad King2016-02-181-1/+1
| |
* | Merge branch 'fix-static-private-non-target-depends' into releaseBrad King2016-02-172-5/+23
|\ \
| * | Fix export of STATIC library PRIVATE non-target dependenciesBrad King2016-02-172-5/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit v3.5.0-rc1~43^2 (Fix export of STATIC library PRIVATE dependencies with CMP0022 NEW, 2016-01-15) we taught target_link_libraries to generate `$<LINK_ONLY:$<TARGET_NAME:dep>>` in INTERFACE_LINK_LIBRARIES instead of `$<LINK_ONLY:dep>` so that `dep` can be recognized as a target name and updated during export. However, this approach does not work when `dep` is just a plain library name and not a target because `$<TARGET_NAME:...>` requires the name of a reachable target. Since we do not know during target_link_libraries whether the name will correspond to a reachable target or not, we cannot inject the `$<TARGET_NAME:...>` expression. Revert this change and solve the original problem instead by teaching the export logic to recognize and update target names directly in `$<LINK_ONLY:...>` expressions. Reported-by: Ben Boeckel <ben.boeckel@kitware.com>
* | | Merge branch 'fix-cmake_parse_arguments-expansion' into releaseBrad King2016-02-121-2/+10
|\ \ \
| * | | cmake_parse_arguments: Restore ;-list argument flatteningDimitar Yordanov2016-02-121-2/+10
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The re-implementation in commit v3.5.0-rc1~116^2~1 (CMakeParseArguments: replace by native cmake_parse_arguments command, 2015-12-05) introduced a regression when parsing the ARGN arguments with cmake_parse_arguments. The original implementation used foreach(currentArg ${ARGN}) to iterate over input arguments. This flattened ;-lists within the arguments whether they were quoted or not. Fix our new implementation to preserve this behavior and add a test case to cover it. Signed-off-by: Dimitar Yordanov <dimitar.yordanov@sap.com> Signed-off-by: Matthias Maennich <matthias.maennich@sap.com>
* | | Merge branch 'cmake-gui-reset-generator' into releaseBrad King2016-02-121-0/+7
|\ \ \
| * | | cmake-gui: Fix cmState initialization when changing generators (#15959)Brad King2016-02-121-0/+7
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring in commit v3.3.0-rc1~29^2~1 (cmState: Host some state from the cmGlobalGenerator, 2015-05-24) moved storage of some generator traits over to cmState. However, it accidentally removed initialization of the values from the cmGlobalGenerator constructor. This is needed because generator subclasses update the settings in their constructors. Since a single cmState instance is shared across multiple build trees by cmake-gui, initializing the values in its constructor is not enough. Fix this by restoring the needed initializations to the cmGlobalGenerator constructor.
* | | CMake 3.5.0-rc2v3.5.0-rc2Brad King2016-02-101-1/+1
| | |
* | | Merge branch 'curl-pre-7.21.5' into releaseBrad King2016-02-091-0/+5
|\ \ \
| * | | cmCurl: Fix compilation with system curl versions prior to 7.21.5Brad King2016-02-091-0/+5
| |/ / | | | | | | | | | | | | | | | | | | This version introduced CURLE_NOT_BUILT_IN which we have used since commit v3.4.0-rc1~211^2~4 (cmCurl: Tolerate lack of CURLOPT_CAPATH support, 2015-08-12). For older versions, just define the name to the then-unused error code so that we can compile.
* | | Merge branch 'fix-target-lookup-performance-regression' into releaseBrad King2016-02-084-62/+47
|\ \ \
| * | | Improve internal generator target structure lookupBrad King2016-02-083-35/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit v3.5.0-rc1~272^2~6 (cmGlobalGenerator: Add FindGeneratorTarget API, 2015-10-25) a lookup was implemented via linear search. Replace it with an efficient data structure. Suggested-by: Stephen Kelly <steveire@gmail.com>
| * | | Fix internal target lookup performance regressionBrad King2016-02-083-34/+32
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring in commit v3.5.0-rc1~272^2~13 (cmGlobalGenerator: Remove direct storage of targets, 2015-10-25) replaced an efficient data structure mapping from target name to cmTarget instance with a linear search. Lookups through cmGlobalGenerator::FindTarget are done a lot. Restore the efficient mapping structure with a name indicating its purpose. Reported-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
* | | Merge branch 'fix-install-EXPORT-crash' into releaseBrad King2016-02-081-3/+5
|\ \ \
| * | | install(EXPORT): Fix crash on target in another directoryBrad King2016-02-051-3/+5
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring merged by commit v3.5.0-rc1~299 (Merge topic 'use-generator-target', 2015-10-20) in and around commit v3.5.0-rc1~299^2~13 (cmExportSet: Store a cmGeneratorTarget, 2015-10-17) changed export sets to delay looking up actual targets and stores only their names. However, in InstallCommand::HandleExportMode we need to lookup targets immediately to check them for EXPORT_LINK_INTERFACE_LIBRARIES. The check was accidentally made local to the current directory, so if an export set contains a target from another directory the lookup fails and CMake crashes. Fix the check to look up the target name globally, and tolerate when no target is found just in case. Reported-by: Kelly Thompson <kgt@lanl.gov>
* | | Merge branch 'fix-Fortran-module-in-subdir' into releaseBrad King2016-02-081-4/+2
|\ \ \
| * | | Fix dependency scanning configuration in subdirectoriesBrad King2016-02-051-4/+2
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring in commit v3.5.0-rc1~347^2~2 (Set the current dirs on the snapshot before creating the cmMakefile) accidentally changed the source and binary directories configured in `cmake -E cmake_depends` for use during dependency scanning. This can cause the wrong directory information to be loaded. It also breaks Fortran module dependency scanning for modules provided by targets in subdirectories that do not have Fortran_MODULE_DIRECTORY set. Fix the dependency scanning directory configuration and add a test to cover the Fortran module case in which the breakage was observed. Reported-by: Kelly Thompson <kgt@lanl.gov>
* | | CMake 3.5.0-rc1 version updatev3.5.0-rc1Brad King2016-02-021-3/+3
|/ /
* | Merge topic 'remove-stray-semicolon'Brad King2016-02-021-1/+1
|\ \ | | | | | | | | | | | | ccb2d5c0 cmAlgorithms.h: remove superfluous semicolon after method
| * | cmAlgorithms.h: remove superfluous semicolon after methodChristoph GrĂ¼ninger2016-02-011-1/+1
| | |
* | | Merge topic 'fix-CMAKE_MATCH-self-match'Brad King2016-02-021-0/+10
|\ \ \ | | | | | | | | | | | | | | | | 6ffc4323 cmConditionEvaluator: Fix matching of `CMAKE_MATCH_*` values (#15944)
| * | | cmConditionEvaluator: Fix matching of `CMAKE_MATCH_*` values (#15944)Brad King2016-02-011-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While evaluating `if(MATCHES)` we get a `const char*` pointer to the string to be matched. On code like if(CMAKE_MATCH_COUNT MATCHES "Y") the string to be matched may be owned by our own result variables. We must move the value to our own buffer before clearing them. Otherwise we risk reading freed storage.
* | | | CMake Nightly Date StampKitware Robot2016-02-021-1/+1
| |/ / |/| |
* | | Merge topic 'clarify-add_custom_command-TARGET-scope'Brad King2016-02-011-1/+18
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d257d681 add_custom_command: Clarify error when TARGET is out of scope (#15681) 4d53e0a7 Help: Clarify `add_custom_command(TARGET)` scope (#15681) 8c615af4 Help: Clarify policy `CMP0040` documentation (#15681) 63c5808f Help: Clarify scope of `if(TARGET)` expression a336e438 Help: Improve markup in `if` command documentation 88968265 Help: Improve markup in `get_target_property` documentation
| * | | add_custom_command: Clarify error when TARGET is out of scope (#15681)Brad King2016-01-281-1/+18
| |/ / | | | | | | | | | | | | | | | | | | | | | The add_custom_command(TARGET) signature only works for targets defined in the current directory. Clarify this in the error message when the target exists but was defined elsewhere. Inspired-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
* | | CMake Nightly Date StampKitware Robot2016-02-011-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-01-311-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-01-301-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-01-291-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-01-281-1/+1
|/ /
* | CMake Nightly Date StampKitware Robot2016-01-271-1/+1
| |
* | CMake Nightly Date StampKitware Robot2016-01-261-1/+1
| |
* | Merge topic 'vs-win10-sdk'Brad King2016-01-252-5/+6
|\ \ | | | | | | | | | | | | d7e863c1 VS: Do not fail on Windows 10 with VS 2015 if no SDK is available (#15929)
| * | VS: Do not fail on Windows 10 with VS 2015 if no SDK is available (#15929)Brad King2016-01-212-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.4.0-rc1~5^2~1 (VS: Add support for selecting the Windows 10 SDK, 2015-09-30) the VS 2015 generator requires a Windows 10 SDK to be available when CMAKE_SYSTEM_VERSION specifies Windows 10 (e.g. when building on a Windows 10 host). Howewver, it is possible to install VS 2015 without any Windows 10 SDK. Instead of failing with an error message about the lack of a Windows 10 SDK, simply tolerate this case and use the default Windows 8.1 SDK. Since building for Windows Store still requires the SDK, retain the diagnostic in that case.
* | | CMake Nightly Date StampKitware Robot2016-01-251-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-01-241-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-01-231-1/+1
| | |
* | | Merge topic 'fix-use-generator-target'Brad King2016-01-221-1/+1
|\ \ \ | | | | | | | | | | | | | | | | 7dbfdddf cmExportInstallFileGenerator: Fix crash in FindNamespaces
| * | | cmExportInstallFileGenerator: Fix crash in FindNamespacesAndrey Pokrovskiy2016-01-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring merged by commit 9afbb733ec (Merge topic 'use-generator-target', 2015-10-20) in and around commit 381e7afd (cmExportSet: Store a cmGeneratorTarget, 2015-10-17) forgot to update one place in this method. This leads to a crash in code such as add_library(A a.c) add_library(B b.c) target_link_libraries(B A) install(TARGETS B DESTINATION lib EXPORT ExpB) install(EXPORT ExpB DESTINATION lib/cmake/test) add_executable(C c.c) install(TARGETS C DESTINATION bin EXPORT ExpC) Fix the target name reference to avoid using an unpopulated Target pointer.
* | | | CMake Nightly Date StampKitware Robot2016-01-221-1/+1
| | | |
* | | | Merge topic 'reduce-allocations'Brad King2016-01-216-29/+26
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 70788e92 Remove temporary allocations when calling cmHasLiteral{Suf,Pre}fix. bd2384f5 Optimize cmMakefile::ExpandVariablesInStringNew. ad9394f4 Remove temporary allocations in cmMacroHelper::InvokeInitialPass. f9599ed4 Remove temporary allocations by extending the lifetime of the retval. 275f2a85 Remove temporary allocations when calling cmGeneratorTarget::GetName.
| * | | | Remove temporary allocations when calling cmHasLiteral{Suf,Pre}fix.Milian Wolff2016-01-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the first argument passed is a std::string, we need to take it by const&, otherwise we copy the string and trigger a temporary allocation. This patch removes a few 10k temporary allocations when running the CMake daemon on the KDevelop build dir. This hotspot was found with heaptrack.
| * | | | Optimize cmMakefile::ExpandVariablesInStringNew.Milian Wolff2016-01-201-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can remove the temporary allocations required for the default-constructed t_lookup passed into the openstack by refactoring the code slightly. Furthermore, we use a vector instead of a stack, since the latter is based on a deque which is not required for a heap / lifo structure. This patch removes ~215k allocations. This hotspot was found with heaptrack.
| * | | | Remove temporary allocations in cmMacroHelper::InvokeInitialPass.Milian Wolff2016-01-201-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This code used to convert std::string's to raw C strings only to put that back into a std::string. This patch thus removes ~70k temporary allocations when running the CMake daemon on KDevelop. This hotspot was found with heaptrack.
| * | | | Remove temporary allocations by extending the lifetime of the retval.Milian Wolff2016-01-201-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See also Herb Sutter's article on the "most important const": http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/ When running the CMake daemon on the KDevelop build dir, this removes some hundreds of thousands of temporary allocations. This hotspot was found with heaptrack.
| * | | | Remove temporary allocations when calling cmGeneratorTarget::GetName.Milian Wolff2016-01-202-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This happens quite often from within comparisons such as in NamedGeneratorTargetFinder or FindGeneratorTargetImpl. It is the top hotspot of both, number of allocations as well as number of temporary allocations - the majority of calls lead to temporary allocations. In raw numbers, this patch removes ~1E6 temporary allocations of 1.5E6 temporary allocations in total when running the cmake daemon on the KDevelop build dir. That is 2/3 of the total. This hotspot was found with heaptrack.