Commit Graph

20900 Commits

Author SHA1 Message Date
Brad King 5467e7945d cmLocalGenerator: Add method to get Fortran-specific compiler flags
Add a cmLocalGenerator::GetTargetFortranFlags virtual method to get
generator-specific generation of Fortran-specific flags.  Implement it
in cmLocalCommonGenerator by moving the implementation from
cmCommonTargetGenerator::AddFortranFlags.  This will allow it to be used
without having a target generator available.

Inspired-by: Tobias Hunger <tobias.hunger@qt.io>
2016-06-17 14:49:29 -04:00
Tobias Hunger 49f10f0d24 cmGeneratorTarget: Adopt Fortran module directory generation
Move code to create/get the fortran module directory from the
cmCommonTargetGenerator to cmGeneratorTarget.

Rename the ComputeFortranModuleDirectory method to
CreateFortranModuleDirectory as this method *creates* the directory if
it is missing.
2016-06-17 14:22:29 -04:00
Brad King 0392f72bef Refactor Makefile/Ninja tool working directory storage
Move cmCommonTargetGenerator::WorkingDirectory to cmLocalCommonGenerator
and add an access method.
2016-06-17 14:22:28 -04:00
Alex Turbov e63151ff54 cmake: Add an option to control what files needs to be traced
Even in relatively small projects using `--trace` (and `--trace-expand`)
may produce a lot of output.  When developing a custom module usually
one is interested in output of only a few particular modules.

Add a `--trace-source=<file>` option to enable tracing only a subset of
source files.  The final output would be only from requested modules,
ignoring anything else not matched to given filename(s).
2016-06-17 11:46:23 -04:00
Brad King 9e47255604 Merge topic 'xcode-mig-support'
8be00e44 Help: Add release note about XCODE_FILE_ATTRIBUTES source file property
27eb657d Xcode: Add support for mig files
811f6c82 Xcode: Add XCODE_FILE_ATTRIBUTES source file property
ef494edf Xcode: Don't emit empty settings blocks.
82ebbf68 Xcode: Add function to conditionally add Xcode Attributes
025edea0 Xcode: Add const qualifiers
2016-06-17 11:06:47 -04:00
Brad King e4cb7d7609 Merge topic 'link_what_you_use'
a0902efa Help: Add notes for topic 'link_what_you_use'
96242f80 Add options to run `ldd -u -r` as a "link-what-you-use" tool
2016-06-17 11:06:44 -04:00
Brad King 44f81be934 Merge topic 'CodeBlocks-generated-sources'
afd6cc6b CodeBlocks: Show generated files in non-utility targets
2016-06-17 11:06:40 -04:00
Brad King 9ef7ccdcf9 Merge topic 'CodeBlocks-include-order'
76b462ea cmExtraCodeBlocksGenerator: Do not shuffle include directories
2016-06-17 11:06:37 -04:00
Bill Hoffman 96242f8022 Add options to run `ldd -u -r` as a "link-what-you-use" tool
Create a LINK_WHAT_YOU_USE target property and corresponding
CMAKE_LINK_WHAT_YOU_USE variable to enable this behavior.
Extend link commands by running `ldd -u -r` to detect shared
libraries that are linked but not needed.
2016-06-17 10:56:40 -04:00
James Touton 27eb657d11 Xcode: Add support for mig files 2016-06-17 10:49:06 -04:00
James Touton 811f6c8252 Xcode: Add XCODE_FILE_ATTRIBUTES source file property
This adds values to the ATTRIBUTES list in PBXBuildFile settings.
2016-06-17 10:49:06 -04:00
James Touton ef494edf76 Xcode: Don't emit empty settings blocks. 2016-06-17 10:49:06 -04:00
Gregor Jasny 82ebbf683e Xcode: Add function to conditionally add Xcode Attributes 2016-06-17 10:49:05 -04:00
James Touton 025edea019 Xcode: Add const qualifiers 2016-06-17 10:49:05 -04:00
Brad King 3a50c55ff6 Merge branch 'CodeBlocks-include-order' into release 2016-06-17 10:40:14 -04:00
Tobias Hunger 76b462eacb cmExtraCodeBlocksGenerator: Do not shuffle include directories
Report include directories in a sensible order. Do not shuffle them
when trying to make them unique.
2016-06-17 10:37:29 -04:00
Brad King 4160d68189 Merge branch 'revert-vs-clang-minsize' into release 2016-06-17 10:20:16 -04:00
Brad King 78249be29d VS: Fix regressed mapping for the cl `/Os` compiler flag
In commit v3.6.0-rc1~279^2~10 (VS: in Clang/C2 toolset, setup correct
compiler settings, 2016-02-18) a flag mapping was added for the clang
`-Os` flag.  However, this collides with a mapping we already had for
the MSVC flag of the same name.  This is a symptom of a larger problem
in that the VS generators need a per-toolset flag map (issue #16153).

For now, simply drop the new mapping and drop `-Os` from clang compiler
flags in the MinSizeRel configuration.

Reported-by: Felix Bruns <felixbruns@gmail.com>
2016-06-17 10:18:47 -04:00
Kitware Robot d4283ca18b CMake Nightly Date Stamp 2016-06-17 00:01:07 -04:00
Enrico Bedau afd6cc6b92 CodeBlocks: Show generated files in non-utility targets
Since 2.6.3 the UTILITY target may have source files. A defect was filed
that these files are now visible in the source tree. A fix later removed
all generated files from the source tree, regardless of the target type.
You can't even include them by using the SOURCES option. This fix adds
generated files again, except for the UTILITY target which cluttered the
source tree.

Fixes #14272.
2016-06-16 09:55:29 -04:00
Brad King a854e1795f Merge topic 'cmOutputConverter-stringstream'
d645b03e cmOutputConverter: implement Shell__GetArgument using ostringstream
2016-06-16 09:46:56 -04:00
Brad King 0e523d0612 Merge topic 'cleanup-streams'
ed5fa48d cmXMLWriter: use ifstream from KWSys
24ab29b8 Prefer istringstream and ostringstream over stringstream.
ab8b77dd Remove redundant arguments from fstream constructors
eb79fa72 Access std::ios_base with std::ios
2016-06-16 09:46:54 -04:00
Brad King 290913fab8 Merge topic 'iwyu-preparation'
1c2c6297 cmTargetLinkLibraryType: Extract from cmStandardIncludes.h
ffdc0a8e cmTypeMacro: Extract from cmStandardIncludes.h
e4eb88e2 cmCustomCommandLines: Extract from cmStandardIncludes.h
535ec2bf cmDocumentationEntry: Extract from cmStandardIncludes
c3819aca cmConfigure.h: Establish as 'include first' file
2016-06-16 09:46:49 -04:00
Brad King 84c0fdb192 Merge topic 'clean-up-cmMakefile-IssueMessage'
5bbcf758 cmIfCommand: Don't rely on NestedError logic to issue messages
262ce91e cmMakefile: Extract invoke result variables
2016-06-16 09:46:47 -04:00
Brad King 2701b519b1 Merge topic 'clean-up-Parser'
905e738f Parser: Out-of-line conditional code to cmMakefile
0a9094cd Parser: Issue file open error messages through dedicated API
2016-06-16 09:46:44 -04:00
Brad King ce62454019 Merge topic 'find_package-duplicate-search-paths'
919db25c cmFindPackageCommand: remove duplicate paths from error message
ebf18df5 cmFindPackageCommand: use iterators to loop over configurations
2016-06-16 09:46:42 -04:00
Daniel Pfeifer 1c2c629769 cmTargetLinkLibraryType: Extract from cmStandardIncludes.h 2016-06-16 09:26:50 -04:00
Daniel Pfeifer ffdc0a8e28 cmTypeMacro: Extract from cmStandardIncludes.h 2016-06-16 09:26:33 -04:00
Daniel Pfeifer e4eb88e21d cmCustomCommandLines: Extract from cmStandardIncludes.h 2016-06-16 09:25:22 -04:00
Kitware Robot 83ae79442c CMake Nightly Date Stamp 2016-06-16 00:01:06 -04:00
Daniel Pfeifer d645b03e9c cmOutputConverter: implement Shell__GetArgument using ostringstream
This removes the need to calculate the resulting string length
beforehand.
2016-06-15 23:44:37 +02:00
Kitware Robot 909d51bece CMake Nightly Date Stamp 2016-06-15 00:01:06 -04:00
Daniel Pfeifer ed5fa48d50 cmXMLWriter: use ifstream from KWSys 2016-06-14 23:26:16 +02:00
Daniel Pfeifer 24ab29b882 Prefer istringstream and ostringstream over stringstream.
Use istringsream for parsing, ostringstream for generation.
2016-06-14 22:37:36 +02:00
Daniel Pfeifer ab8b77dd33 Remove redundant arguments from fstream constructors
Don't pass the default value of the openmode parameter explicitly.
2016-06-14 22:28:55 +02:00
Daniel Pfeifer eb79fa7260 Access std::ios_base with std::ios
Just because it is shorter.
2016-06-14 22:23:08 +02:00
Kitware Robot 33f74dc524 CMake Nightly Date Stamp 2016-06-14 00:01:10 -04:00
Daniel Pfeifer 535ec2bf1a cmDocumentationEntry: Extract from cmStandardIncludes 2016-06-13 22:41:29 +02:00
Daniel Pfeifer c3819acad2 cmConfigure.h: Establish as 'include first' file
At the moment, cmStandardIncludes.h needs to be included before any
standard includes because it disables some warnings that are caused
by the standard library of some compilers.  Move this responsibility
to the cmConfigure.h file.

Also add include guards to cmConfigure.h to make sure the file can be
included multiple times.
2016-06-13 22:37:28 +02:00
Stephen Kelly 5bbcf758a1 cmIfCommand: Don't rely on NestedError logic to issue messages 2016-06-13 20:20:44 +02:00
Stephen Kelly 262ce91e8a cmMakefile: Extract invoke result variables
Make it more clear what is happening here.
2016-06-13 20:20:44 +02:00
Stephen Kelly 905e738ffe Parser: Out-of-line conditional code to cmMakefile
Simplify parser API.
2016-06-13 20:19:16 +02:00
Stephen Kelly 0a9094cd10 Parser: Issue file open error messages through dedicated API 2016-06-13 20:19:16 +02:00
Ben Boeckel 919db25c3b cmFindPackageCommand: remove duplicate paths from error message
Fixes #15252.
2016-06-13 11:16:12 -04:00
Ben Boeckel ebf18df580 cmFindPackageCommand: use iterators to loop over configurations 2016-06-13 11:16:10 -04:00
Brad King 9f3546bbb4 CMake 3.6.0-rc2 2016-06-13 10:28:02 -04:00
Brad King 473634eb1c Merge topic 'expose-cache-properties'
63c0e92c cmState: Expose list of properties of values in the cache
6eee2463 cmCacheEntry: Retrieve all properties of cache entries
120899c6 cmPropertyList: Add a way to retrieve all properties
7066218e cmake: Kill cmake::CacheManager and its getter
2016-06-13 10:03:05 -04:00
Brad King 4e66ca1952 Merge topic 'fix-cmake-ISP-violation'
23f87e81 cmake: Remove force from IssueMessage API
54c65d5f cmake: Extract DisplayMessage API.
2016-06-13 09:54:27 -04:00
Brad King 18e00ac7b9 Merge topic 'avoid-cmMakefile-IssueMessage-after-configure'
ea5324cd cmMakefile: Port messages for compile features to cmake
df8c3130 cmGlobalGenerator: Don't use cmMakefile::IssueMessage after configure
946d1e50 cmMakefile: Avoid IssueMessage after configure is finished
096c7754 cmLocalGenerator: Store Backtrace for the directory
2016-06-13 09:54:24 -04:00
Brad King 3b14a4bca4 Merge topic 'fix-Message-API-ISP-violation'
0a4af073 cmake: Issue message independent of cmMakefile definition
2016-06-13 09:54:20 -04:00
Brad King 941fbe31f5 Merge topic 'find-lib32'
896ad251 Teach find_library and find_package to search lib32 paths (#11260)
2016-06-13 09:54:17 -04:00
Brad King ff1cce464d Merge topic 'add-braces'
757b0ff5 Add missing braces around statements in header files
a16bf141 Add missing braces around statements.
bd9e551c PseudoMemcheck: revise style with clang-format.
2016-06-13 09:54:14 -04:00
Brad King 7ce354d3ac Merge topic 'refactor-cmLocalGenerator-flags'
f62ed322 cmLocalGenerator: Add GetTargetDefines to get all defines for a target
853b1bb4 cmLocalGenerator: Constify AppendDefines and AddCompileDefinitions
2016-06-13 09:54:09 -04:00
Kitware Robot 06ee543c00 CMake Nightly Date Stamp 2016-06-13 00:01:05 -04:00
Stephen Kelly 23f87e8157 cmake: Remove force from IssueMessage API
The force parameter is ugly and makes the method harder to reason about
(issues the message ... but maybe it doesn't ... but then again you can
force it).  It is a violation of

 https://en.wikipedia.org/wiki/Interface_segregation_principle

and is the kind of thing described in a recent blog here:

 http://code.joejag.com/2016/anti-if-the-missing-patterns.html

 "Any time you see this you actually have two methods bundled into one.
  That boolean represents an opportunity to name a concept in your code."
2016-06-12 22:09:27 +02:00
Stephen Kelly 54c65d5fb2 cmake: Extract DisplayMessage API. 2016-06-12 22:08:47 +02:00
Stephen Kelly ea5324cd4b cmMakefile: Port messages for compile features to cmake 2016-06-12 19:01:45 +02:00
Stephen Kelly df8c3130d6 cmGlobalGenerator: Don't use cmMakefile::IssueMessage after configure 2016-06-12 19:01:45 +02:00
Stephen Kelly 946d1e50dc cmMakefile: Avoid IssueMessage after configure is finished 2016-06-12 19:01:45 +02:00
Stephen Kelly 096c7754b3 cmLocalGenerator: Store Backtrace for the directory
Don't rely on cmMakefile to provide that.  Use it to issue messages.
2016-06-12 19:01:45 +02:00
Stephen Kelly 0a4af0735f cmake: Issue message independent of cmMakefile definition
The makefile is only used when called by the cmMessageCommand, so inline
the use of it there.  It otherwise creates an undesirable dependency on
cmMakefile for issuing messages in the cmake instance, a violation of
the Interface Segregation Principle.

 https://en.wikipedia.org/wiki/Interface_segregation_principle

This also makes it more explicit that the variable definitions only
affect the message() command.  If an AUTHOR_WARNING is issued for any
other reason, it is not affected.  To affect that, it is necessary to
set the cache variable instead of the regular variable.

This is an unfortunate interface quirk, but one which can't be fixed
easily now.
2016-06-12 18:38:33 +02:00
Kitware Robot acf0c0f444 CMake Nightly Date Stamp 2016-06-12 00:01:09 -04:00
Daniel Pfeifer 757b0ff5dd Add missing braces around statements in header files 2016-06-11 09:49:00 +02:00
Kitware Robot d6e99fa834 CMake Nightly Date Stamp 2016-06-11 00:01:07 -04:00
Daniel Pfeifer a16bf141bc Add missing braces around statements.
Apply fixits of clang-tidy's readability-braces-around-statements
checker.
2016-06-10 18:36:24 +02:00
Daniel Scharrer 896ad251de Teach find_library and find_package to search lib32 paths (#11260)
Add a ``FIND_LIBRARY_USE_LIB32_PATHS`` global property analogous to the
``FIND_LIBRARY_USE_LIB64_PATHS`` property.  This helps find commands on
multilib systems that use ``lib32`` directories and either do not have
``lib`` symlinks or point ``lib`` to ``lib64``.
2016-06-10 11:09:16 -04:00
Tobias Hunger 63c0e92c93 cmState: Expose list of properties of values in the cache 2016-06-10 09:33:41 -04:00
Tobias Hunger 6eee24634b cmCacheEntry: Retrieve all properties of cache entries 2016-06-10 09:33:41 -04:00
Tobias Hunger 120899c698 cmPropertyList: Add a way to retrieve all properties 2016-06-10 09:33:02 -04:00
Tobias Hunger 7066218e79 cmake: Kill cmake::CacheManager and its getter
This member variable is never initialized and has apparently moved
to cmState.
2016-06-10 09:27:59 -04:00
Tobias Hunger f62ed322dc cmLocalGenerator: Add GetTargetDefines to get all defines for a target 2016-06-10 09:24:49 -04:00
Brad King 853b1bb4ba cmLocalGenerator: Constify AppendDefines and AddCompileDefinitions 2016-06-10 09:24:11 -04:00
Brad King 98aafb2ad6 Merge topic 'refactor-cmLocalGenerator-flags'
d9613b96 cmLocalGenerator: Move GetFrameworkFlags implementation to private helper
70d3bf85 cmLocalGenerator: Adopt GetFrameworkFlags method
de4ee088 cmCommonTargetGenerator: De-duplicate CMAKE_BUILD_TYPE lookup
2016-06-10 09:10:04 -04:00
Brad King 1bde72a390 Merge topic 'cmake-gui-osx-symlink-qt5-plugin'
f2840155 cmake-gui: Teach Qt5 where plugins are when launched through a symlink
2016-06-10 09:09:47 -04:00
Kitware Robot 1f9b35da10 CMake Nightly Date Stamp 2016-06-10 00:01:06 -04:00
Robert Maynard f28401554a cmake-gui: Teach Qt5 where plugins are when launched through a symlink
When we are on OSX and we are launching cmake-gui from a symlink, the
application will fail to launch as it can't find the qt.conf file which
tells it what the name of the plugin folder is. We need to add this path
BEFORE the application is constructed as that is what triggers the
searching for the platform plugins
2016-06-09 13:21:27 -04:00
Tobias Hunger d9613b962e cmLocalGenerator: Move GetFrameworkFlags implementation to private helper 2016-06-09 10:41:42 -04:00
Tobias Hunger 70d3bf8580 cmLocalGenerator: Adopt GetFrameworkFlags method
Move it from cmCommonTargetGenerator.
2016-06-09 10:39:57 -04:00
Brad King 8f3bd1f454 Merge topic 'ninja-no-ranlib-windows'
ea598671 Run ranlib on archives only if the tool is available
2016-06-09 09:18:28 -04:00
Brad King c21397b2df Merge topic 'refactor-cmLocalGenerator-flags'
b0d3e693 cmLocalGenerator: Pass configuration to GetTargetFlags
2016-06-09 09:18:26 -04:00
Brad King 065bb0ffeb Merge topic 'small-cleanups'
9f25fc4d Prefer std::ostream& over derivatives as parameters
f9cc43ea cmake: remove unnused member Verbose
6e658085 cmake: Fix constness of methods
87ffd76d cmake: Make internal method file static
fa169fe8 Parser: Merge identical conditions
2016-06-09 09:18:23 -04:00
Brad King 01632c2552 Merge topic 'xmlwriter'
e9da5192 CPack/PackageMaker: port to cmXMLWriter
2016-06-09 09:18:21 -04:00
Daniel Pfeifer e9da5192e5 CPack/PackageMaker: port to cmXMLWriter 2016-06-09 09:16:34 -04:00
Kitware Robot 3969994758 CMake Nightly Date Stamp 2016-06-09 00:01:07 -04:00
Daniel Pfeifer 9f25fc4dbb Prefer std::ostream& over derivatives as parameters 2016-06-08 23:08:40 +02:00
Daniel Pfeifer f9cc43ea37 cmake: remove unnused member Verbose 2016-06-08 23:08:33 +02:00
Stephen Kelly 6e65808516 cmake: Fix constness of methods 2016-06-08 23:08:29 +02:00
Stephen Kelly 87ffd76d1a cmake: Make internal method file static 2016-06-08 23:08:24 +02:00
Stephen Kelly fa169fe8a7 Parser: Merge identical conditions 2016-06-08 23:08:14 +02:00
Tobias Hunger de4ee088e7 cmCommonTargetGenerator: De-duplicate CMAKE_BUILD_TYPE lookup 2016-06-08 16:41:41 -04:00
Tobias Hunger b0d3e693f1 cmLocalGenerator: Pass configuration to GetTargetFlags
Move the configuration lookup to call sites.  This will allow
multi-configuration callers to use the method.
2016-06-08 16:18:31 -04:00
Brad King 8632251b25 Merge topic 'find_path-in-framework'
188baef0 find_path: Fix location of <dir/header.h> in a framework on OS X
2016-06-08 12:56:00 -04:00
Brad King 5572f5fffd Merge topic 'clang-format-again'
ff08a80a Source/CPack: Run clang-format to fix style
3b284432 Tests/FindOpenCL: Run clang-format to fix style
2016-06-08 12:55:58 -04:00
Brad King ea59867187 Run ranlib on archives only if the tool is available
CMakeFindBinUtils sets CMAKE_RANLIB to `:` if it is not available in
order to get a no-op.  This does not work on a Windows host build
environment that runs commands in `cmd` instead of `sh`.  Teach the
Ninja and Makefile generators to simply skip the command if it is `:`.

This this was already done by the Makefile generator since commit
v2.6.0~3161 (BUG: Do not write link script lines that use the ':',
2006-06-18), but only when using a link script.

Reported-by: Michael Jäntsch <Michael.Jaentsch@gmx.de>
2016-06-08 12:00:44 -04:00
Kitware Robot 1cfc750150 CMake Nightly Date Stamp 2016-06-08 00:01:07 -04:00
Harry Mallon 188baef00c find_path: Fix location of <dir/header.h> in a framework on OS X
After finding it in `foo.Framework/Headers/dir/header.h`, we should
report the `foo.Framework/Headers` directory, not
`foo.Framework/Headers/dir`, because the former is what actually
contains the path the caller wishes to include.
2016-06-07 09:04:35 -04:00
Brad King ff08a80af1 Source/CPack: Run clang-format to fix style 2016-06-07 08:41:16 -04:00
Brad King 633d99dc62 Merge topic 'remove-c_str'
fa277b29 Remove c_str() calls from stream arguments.
ba5fb165 call static cmOutputConverter::GetFortranFormat without object
2016-06-07 08:34:04 -04:00
Kitware Robot 14de21d7d2 CMake Nightly Date Stamp 2016-06-07 00:01:07 -04:00
Daniel Pfeifer fa277b29e4 Remove c_str() calls from stream arguments.
Mostly automated:

git grep -l '.c_str() <<' | xargs sed -i 's|\.c_str() <<| <<|g'
2016-06-06 23:53:32 +02:00
Daniel Pfeifer ba5fb16519 call static cmOutputConverter::GetFortranFormat without object 2016-06-06 23:32:38 +02:00
Brad King d546456765 Merge topic 'productbuild'
63e5eb5f Help: Add notes for 'productbuild' topic
2e3c67d1 productbuild: Add new productbuild cpack generator.
50a3d340 PackageMaker: factor out common code for creating pkg files.
2016-06-06 11:19:20 -04:00
Kitware Robot fc45ecfc50 CMake Nightly Date Stamp 2016-06-06 00:01:05 -04:00
Kitware Robot 1503a67bf4 CMake Nightly Date Stamp 2016-06-05 00:01:05 -04:00
Kitware Robot 6a22a7cf71 CMake Nightly Date Stamp 2016-06-04 00:01:05 -04:00
Clinton Stimpson 2e3c67d1b6 productbuild: Add new productbuild cpack generator.
This cpack generator basically replaces the obsolete PackageMaker generator.
2016-06-03 14:41:57 -06:00
Brad King 0663dbf133 Merge topic 'minor-cleanups'
f6c21894 Modules: Rename internal platform-specific compiler determination modules
0c7951a9 cmLocalGenerator: Consolidate conditions in AddArchitectureFlags
2016-06-03 10:45:59 -04:00
Brad King 9d16f64048 Merge topic 'fix-TARGET_PROPERTY-LOCATION-crash'
f500a784 Fix crash on $<TARGET_PROPERTY:...,LOCATION> genex (#16134)
2016-06-03 10:45:57 -04:00
Brad King 3d6638471a Merge topic 'size-empty'
c6220de2 Use the empty() method to check for emptyness.
2016-06-03 10:45:52 -04:00
Brad King 811831a958 Merge topic 'simplify-boolean-expressions'
7f6b8d33 Simplify boolean expressions
2016-06-03 10:45:40 -04:00
Kitware Robot 8b289db739 CMake Nightly Date Stamp 2016-06-03 00:01:19 -04:00
Daniel Pfeifer c6220de276 Use the empty() method to check for emptyness.
Apply fix-its from clang-tidy's readability-container-size-empty
checker.
2016-06-02 21:35:50 +02:00
Brad King 7e8cfb9549 Merge branch 'fix-TARGET_PROPERTY-LOCATION-crash' into release 2016-06-02 11:08:09 -04:00
Brad King f500a784d0 Fix crash on $<TARGET_PROPERTY:...,LOCATION> genex (#16134)
Policy CMP0026 deprecated the LOCATION property, and we have long
provided a $<TARGET_FILE:...> generator expression.  However, if
a project tries to use $<TARGET_PROPERTY:...,LOCATION> we should
at least not crash.

The compatibility implementation of the LOCATION property uses
cmGlobalGenerator::CreateGenerationObjects to create the structures
needed to evaluate the property before generation starts.  The
implementation assumed that accessing the property could only be done
during configuration (via the typical get_property command use case).
The $<TARGET_PROPERTY:...,LOCATION> genex causes the LOCATION property
to be accessed during generation.  Calling CreateGenerationObjects
during generation blows away all the objects currently being used for
generation and is not safe.  Add a condition to call it only when
configuration is not finished.
2016-06-02 10:58:38 -04:00
Brad King 0c7951a939 cmLocalGenerator: Consolidate conditions in AddArchitectureFlags
Make room for possible future non-Apple architecture flags.
2016-06-02 09:47:32 -04:00
Brad King f1ff6301ea Merge topic 'minor-cleanups'
2175e5bf cmGlobalGenerator: Make IsMultiConfig() const
2016-06-02 09:44:53 -04:00
Brad King c6bcb6fa1e Merge topic 'bin-dir-option'
18bfbc97 Add option to control 'bin' directory of CMake's own installation (#16076)
2016-06-02 09:44:48 -04:00
Daniel Pfeifer 7f6b8d3399 Simplify boolean expressions
Use clang-tidy's readability-simplify-boolean-expr checker.
After applying the fix-its, revise all changes *very* carefully.
Be aware of false positives and invalid changes.
2016-06-02 08:24:04 -04:00
Kitware Robot 34d07d7ccc CMake Nightly Date Stamp 2016-06-02 00:01:10 -04:00
Clinton Stimpson 50a3d34005 PackageMaker: factor out common code for creating pkg files. 2016-06-01 21:56:50 -06:00
Tobias Hunger 2175e5bfa5 cmGlobalGenerator: Make IsMultiConfig() const 2016-06-01 11:12:58 -04:00
Nicolas BUNEL 18bfbc972f Add option to control 'bin' directory of CMake's own installation (#16076)
Add a `CMAKE_BIN_DIR` cache entry to CMake's own build configuration.
Add a `--bindir` option to the `bootstrap` script to set it.
2016-06-01 11:12:36 -04:00
Brad King d6754d37d5 Begin post-3.6 development 2016-06-01 10:59:26 -04:00
Brad King 91f6e7904a CMake 3.6.0-rc1 version update 2016-06-01 10:57:43 -04:00
Brad King 4062d6d694 Merge topic 'minor-cleanups'
bd4fef64 cmSourceFileLocation: Fix typo in comment
814e774e cmSearchPath: Fix typo in comment
2016-06-01 09:04:48 -04:00
Tobias Hunger bd4fef6406 cmSourceFileLocation: Fix typo in comment 2016-06-01 08:33:48 -04:00
Tobias Hunger 814e774eff cmSearchPath: Fix typo in comment 2016-06-01 08:33:35 -04:00
Kitware Robot adc7fcd013 CMake Nightly Date Stamp 2016-06-01 00:01:07 -04:00
Kitware Robot 88ede8e5ea CMake Nightly Date Stamp 2016-05-31 00:01:06 -04:00
Kitware Robot 8afadaa5b2 CMake Nightly Date Stamp 2016-05-30 00:01:05 -04:00
Kitware Robot e0fbd95f06 CMake Nightly Date Stamp 2016-05-29 00:01:05 -04:00
Kitware Robot 797a332a61 CMake Nightly Date Stamp 2016-05-28 00:01:06 -04:00
Brad King fb1f5d50af Merge topic 'remove-needless-copies'
27ead963 Remove unnecessary local copies.
618fb23f Pass arguments that are not modified as const&.
2016-05-27 09:08:21 -04:00
Brad King 82c286393a Merge topic 'remove-needless-c_str'
1b2bb933 Remove redundant c_str() calls.
2016-05-27 09:08:18 -04:00
Kitware Robot fdb474d456 CMake Nightly Date Stamp 2016-05-27 00:01:07 -04:00
Daniel Pfeifer 1b2bb93302 Remove redundant c_str() calls.
Run clang-tidy's readability-redundant-string-cstr checker.
Ignore findings in kwsys.
2016-05-26 22:52:22 +02:00
Daniel Pfeifer 27ead96305 Remove unnecessary local copies.
Use clang-tidy's performance-unnecessary-copy-initialization checker.
After applying the fix-its (which turns the copies into const&), revise
the changes and see whether the copies can be removed entirely by using
the original instead.
2016-05-26 22:21:15 +02:00
Daniel Pfeifer 618fb23fc9 Pass arguments that are not modified as const&.
Use clang-tidy's performance-unnecessary-value-param checker to find
value parameter declarations of expensive to copy types that are not
modified inside the function.  Ignore findings in kwsys.
After applying the fix-its, manually change `const T&` to `T const&`.
2016-05-26 21:58:51 +02:00
Brad King 36d9a01a31 Merge topic 'try_compile-custom-variables'
d256ba07 try_compile: Optionally forward custom platform variables to test project
fb4791b3 cmCoreTryCompile: Refactor forwarding of variables to test project
2016-05-26 09:52:12 -04:00
Brad King 67cc866877 Merge topic 'fix-variable-watch-leak'
75e3e0d3 cmVariableWatch: Fix potential memory leak
2016-05-26 09:52:09 -04:00
Brad King 579185be7a Merge topic 'cpack-dmg-no-app-link'
3acc29fc CPack/DragNDrop: Optionally disable `/Applications` symlink
2016-05-26 09:52:07 -04:00
Brad King 2a028b7898 Merge topic 'style-cmSystemTools'
8e801eb5 cmSystemTools: Fix indentation typo
2016-05-26 09:52:02 -04:00
Kitware Robot 0746a4c62c CMake Nightly Date Stamp 2016-05-26 00:03:52 -04:00
Brad King 75e3e0d3dc cmVariableWatch: Fix potential memory leak
Teach cmVariableWatch::AddWatch to own the Pair it allocates until
it needs to pass ownership to WatchMap.
2016-05-25 09:58:36 -04:00
Harry Mallon 3acc29fca9 CPack/DragNDrop: Optionally disable `/Applications` symlink 2016-05-25 09:51:04 -04:00
Brad King d256ba078a try_compile: Optionally forward custom platform variables to test project
Add a `CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable to specify a list
of custom variables to be forwarded to a `try_compile` test project.
This will be useful for platform information modules or toolchain files
to forward some platform-specific set of variables from the host project
(perhaps set in its cache) to the test project so that it can build the
same way.
2016-05-25 09:36:19 -04:00
Brad King fb4791b37c cmCoreTryCompile: Refactor forwarding of variables to test project
De-duplicate the logic that constructs the cmake `-D` flag used to pass
variables into the test project cache.  Also subsume variables that were
propagated by generating `set()` commands in the project and pass them
as cache entries instead.
2016-05-25 09:36:19 -04:00
Brad King 6052e4b3bf Merge topic 'improve-character-find-and-replace'
5784747d Improve string find: prefer character overloads.
5cec953e Use std::replace for replacing chars in strings.
2a1a2033 cmExtraEclipseCDT4Generator: use std::replace.
34bc6e1f cmCTestScriptHandler: don't call find repeatedly.
2016-05-25 09:34:29 -04:00
Brad King 916d52533e Merge topic 'standard-include-directories'
c1340827 Add a variable to specify language-wide system include directories
44199097 cmMakefile: Optimize AddSystemIncludeDirectories for empty set
a896043b GHS: Compute include directories consistently with other generators
2016-05-25 09:34:24 -04:00
Brad King 2bc55b69db Merge topic 'output-converter-enums'
25d1ef64 Use enums defined in cmOutputConverter using their fully qualified name.
2016-05-25 09:34:19 -04:00
Brad King c13408279f Add a variable to specify language-wide system include directories
Create a `CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable to specify
system include directories for for `<LANG>` compiler command lines.
This plays a role for include directories as the existing
`CMAKE_<LANG>_STANDARD_LIBRARIES` variable does for link libraries.
2016-05-25 09:30:31 -04:00
Brad King 8e801eb517 cmSystemTools: Fix indentation typo 2016-05-25 09:27:54 -04:00
Daniel Pfeifer 25d1ef6424 Use enums defined in cmOutputConverter using their fully qualified name.
Mostly automated:

values=("RelativeRoot" "NONE" "FULL" "HOME" "START" "HOME_OUTPUT" "START_OUTPUT"
        "OutputFormat" "UNCHANGED" "MAKERULE" "SHELL" "WATCOMQUOTE" "RESPONSE"
        "FortranFormat" "FortranFormatNone" "FortranFormatFixed" "FortranFormatFree")
for i in "${values[@]}"; do git grep -l cmLocalGenerator::$i | xargs sed -i "s|cmLocalGenerator::$i|cmOutputConverter::$i|g"; done
2016-05-25 09:20:09 -04:00
Kitware Robot d5ccab37b3 CMake Nightly Date Stamp 2016-05-25 00:01:07 -04:00
Daniel Pfeifer 5784747d1b Improve string find: prefer character overloads.
Apply fix-its from clang-tidy's performance-faster-string-find checker.
Ignore findings in kwsys.
2016-05-24 23:22:24 +02:00
Daniel Pfeifer 5cec953e6a Use std::replace for replacing chars in strings.
Find uses of `cmSystemTools::ReplaceString` where both `replace` and
`with` are string literals with a size of one.

Automate with:

git grep -l ReplaceString | xargs sed -i "s|cmSystemTools::ReplaceString(\([^,]*\), \"\(.\)\", \"\(.\)\");|std::replace(\1.begin(), \1.end(), '\2', '\3');|g"
git grep -l ReplaceString | xargs sed -i "s|cmSystemTools::ReplaceString(\([^,]*\), \"\(.\)\", \"\\\\\\\\\");|std::replace(\1.begin(), \1.end(), '\2', '\\\\\\\\');|g"
git grep -l ReplaceString | xargs sed -i "s|cmSystemTools::ReplaceString(\([^,]*\), \"\\\\\\\\\", \"\(.\)\");|std::replace(\1.begin(), \1.end(), '\\\\\\\\', '\2');|g"
2016-05-24 23:22:20 +02:00
Daniel Pfeifer 2a1a2033af cmExtraEclipseCDT4Generator: use std::replace. 2016-05-24 23:22:16 +02:00
Daniel Pfeifer 34bc6e1f3b cmCTestScriptHandler: don't call find repeatedly.
Also, prefer the character overload.
2016-05-24 23:22:08 +02:00
Brad King a98a699987 Merge topic 'cpack-deb-different-package-names'
adbd3985 CPack/Deb possibility to change package name
2016-05-24 13:54:03 -04:00
Brad King f77a49ff30 Merge topic 'cpackifw-updates'
06ca7795 CPackIFW: Command cpack_ifw_configure_component learned ESSENTIAL option
222fa595 CPackIFW: Doc decoration
2016-05-24 13:53:53 -04:00
Brad King 4419909756 cmMakefile: Optimize AddSystemIncludeDirectories for empty set
Do not bother looping over all targets if we have no system include
directories to add anyway.
2016-05-24 11:40:35 -04:00
Brad King a896043bac GHS: Compute include directories consistently with other generators
All generators use cmLocalGenerator::GetIncludeDirectories to construct
the final list of include directories for a target.
2016-05-24 11:40:35 -04:00
Kitware Robot ecb4ad2aa2 CMake Nightly Date Stamp 2016-05-24 00:01:36 -04:00
Domen Vrankar adbd3985f8 CPack/Deb possibility to change package name
This patch preserves backward compatibility of
deb package names with previous CMake versions
but similarly to CPack/RPM allows to change
package name format and supports DEB-DEFAULT
setting that produces proper Debian package names.
2016-05-23 19:55:46 +02:00
Konstantin Podsvirov 06ca7795f4 CPackIFW: Command cpack_ifw_configure_component learned ESSENTIAL option 2016-05-23 19:09:03 +03:00
Brad King c75d91a05c Merge topic 'rpath-no-regex'
f4d3c44c Fix support for large RPATH updates (#16105)
2016-05-23 09:42:23 -04:00
Kitware Robot 2c13f1b7f0 CMake Nightly Date Stamp 2016-05-23 00:01:06 -04:00
Kitware Robot 52eeef3264 CMake Nightly Date Stamp 2016-05-22 00:01:04 -04:00
Kitware Robot 24391d9f76 CMake Nightly Date Stamp 2016-05-21 00:01:07 -04:00
Brad King acd039ae0e Merge topic 'minor-cleanup'
40bee43a cmCPackDragNDropGenerator: Replace std::{ostringstream => string}
2016-05-20 09:15:52 -04:00
Kitware Robot 4dc1164387 CMake Nightly Date Stamp 2016-05-20 00:01:07 -04:00
Brad King f4d3c44cc7 Fix support for large RPATH updates (#16105)
Avoid using a KWSys RegularExpression to search for RPATH substrings.
It cannot handle large expressions.
2016-05-19 11:59:25 -04:00
Brad King e0da6c3b56 Merge topic 'ninja-output-path-prefix'
eb076692 Tests: Select RunCMake.Ninja test cases based on ninja version
8a862a4d Ninja: Support embedding of CMake as subninja project
038e7716 Ninja: Pass all build paths through a central method
7c26a6a2 Ninja: Fix path to soname-d target file
ac3cdd9a Ninja: Convert object file names to ninja paths earlier
d4381cb1 Ninja: Convert link library file names like all other output paths
0397c92a Ninja: Pre-compute "CMakeCache.txt" build target name
3b3ecdfa Ninja: Pre-compute "all" build target name
5ca72750 Ninja: Simplify generation of custom target logical path
2016-05-19 10:41:27 -04:00
Brad King 5a9efbfc4b Merge topic 'cpack-ifw-updates'
41199f8c CPackIFW: Add support for Promoting Updates
6ca6b0dd CPackIFW: Add more known QtIFW releases
2016-05-19 10:41:21 -04:00
Kitware Robot 6bf6482fa6 CMake Nightly Date Stamp 2016-05-19 00:01:07 -04:00
Konstantin Podsvirov 41199f8c1e CPackIFW: Add support for Promoting Updates
Add support for this feature added by QtIFW 2.0.3:

  http://doc.qt.io/qtinstallerframework/ifw-updates.html

Add a `cpack_ifw_update_repository` command as porcelain.
2016-05-18 09:49:14 -04:00
Brad King 4f17baccad Merge topic 'file-glob-sort'
edcccde7 file: Sort GLOB results to make it deterministic (#14491)
2016-05-18 09:30:59 -04:00
Brad King 570d689776 Merge topic 'ghs-shorter-object-names'
d7233a04 GHS: Use shorter object file names on collision
2016-05-18 09:30:55 -04:00
Brad King 1e876b4691 Merge topic 'clang-format-lexer'
030556b7 cmListFileLexer: Revise C++ coding style using clang-format
e4a92dab cmListFileLexer: Update to flex 2.6
2016-05-18 09:30:50 -04:00
Geoff Viola d7233a0472 GHS: Use shorter object file names on collision 2016-05-18 09:27:19 -04:00
Kitware Robot 529c96c6b7 CMake Nightly Date Stamp 2016-05-18 00:01:07 -04:00
Brad King 40bee43a58 cmCPackDragNDropGenerator: Replace std::{ostringstream => string} 2016-05-17 13:47:21 -04:00
Brad King 030556b72b cmListFileLexer: Revise C++ coding style using clang-format
Manually extract the C++ portion of `cmListFileLexer.in.l` into a
temporary file, format it, and then move it back into the original file.
Manually format C++ code inside the lexer actions to match our style.
Then re-generate the lexer.
2016-05-17 13:27:23 -04:00
Brad King e4a92dab3f cmListFileLexer: Update to flex 2.6
Revise the documented modifications we need to make to the
flex-generated source file according to the needs of the new version.
Update our own implementation to avoid warnings with flex types.
2016-05-17 10:56:37 -04:00
Reiner Herrmann edcccde7d6 file: Sort GLOB results to make it deterministic (#14491)
Even though the `file(GLOB)` documentation specifically warns against
using it to collect a list of source files, projects often do it anyway.
Since it uses `readdir()`, the list of files will be unsorted.
This list is often passed directly to add_executable / add_library.
Linking binaries with an unsorted list will make it unreproducible,
which means that the produced binary will differ depending on the
unpredictable `readdir()` order.

To solve those reproducibility issues in a lot of programs (which don't
explicitly `list(SORT)` the list manually), sort the resulting list of
the `file(GLOB)` command.

A more detailed rationale about reproducible builds is available
[here](https://reproducible-builds.org/).
2016-05-17 10:12:11 -04:00
Nicolas Despres 8a862a4d4b Ninja: Support embedding of CMake as subninja project
Add a `CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable.  When it is set, CMake
generates a `build.ninja` file suitable for embedding into another ninja
project potentially generated by an alien generator.
2016-05-17 09:34:12 -04:00
Nicolas Despres 038e7716e5 Ninja: Pass all build paths through a central method
This gives us a central location to revise paths.
2016-05-17 09:34:11 -04:00
Nicolas Despres 7c26a6a269 Ninja: Fix path to soname-d target file
In WriteLinkStatement we convert all target output paths to ninja-style
paths.  Add a missing conversion for the `soname` file name.
2016-05-17 09:34:10 -04:00
Nicolas Despres ac3cdd9af2 Ninja: Convert object file names to ninja paths earlier
In WriteObjectBuildStatement we pass object file names and directories
to several places that expect paths as Ninja sees them.  Convert them to
Ninja paths before all such uses.
2016-05-17 09:34:09 -04:00
Nicolas Despres d4381cb15d Ninja: Convert link library file names like all other output paths
All paths generated on Ninja-invoked command lines should be passed
through ConvertToNinjaPath.  Fix ConvertToLinkReference to call this
instead of partially duplicating its implementation.
2016-05-17 09:34:09 -04:00
Nicolas Despres 0397c92a15 Ninja: Pre-compute "CMakeCache.txt" build target name 2016-05-17 09:34:08 -04:00
Nicolas Despres 3b3ecdfa48 Ninja: Pre-compute "all" build target name 2016-05-17 09:34:07 -04:00
Brad King 5ca72750c8 Ninja: Simplify generation of custom target logical path
In `AppendTargetOutputs` we generate a logical build target name for
each UTILITY command.  Simplify the logic to avoid testing the result
of `ConvertToNinjaPath`.
2016-05-17 09:34:06 -04:00
Brad King 7d2a0aa76c Merge topic 'clang-format-source'
d9fd2f54 Revise C++ coding style using clang-format
82df6dea Empty commit at end of history preceding clang-format style transition
6a13f43f CONTRIBUTING: Add a section on coding style
bf451d9f Add a script to run clang-format on the entire source tree
1e90d78f Configure clang-format for CMake source tree
da60adc3 Tell Git to use a distinct conflict marker size in `.rst` files
2016-05-17 09:33:02 -04:00
Brad King 930ac45cba Merge topic 'clang-format-prep'
c7006d2e cmGeneratorTarget: Protect macro code layout from clang-format
2016-05-17 09:32:59 -04:00
Kitware Robot 8b0be06005 CMake Nightly Date Stamp 2016-05-17 00:01:08 -04:00
Kitware Robot d9fd2f5402 Revise C++ coding style using clang-format
Run the `Utilities/Scripts/clang-format.bash` script to update
all our C++ code to a new style defined by `.clang-format`.
Use `clang-format` version 3.8.

* If you reached this commit for a line in `git blame`, re-run the blame
  operation starting at the parent of this commit to see older history
  for the content.

* See the parent commit for instructions to rebase a change across this
  style transition commit.
2016-05-16 16:05:19 -04:00
Brad King c7006d2ef1 cmGeneratorTarget: Protect macro code layout from clang-format
The `IMPLEMENT_VISIT_IMPL` macro must preserve a space before the `>`
character in case the `DATATYPE` is a template type ending in `>`.
Manually format the macro layout as clang-format would except for this
space.  Then add markup to tell clang-format not to format this macro.
2016-05-16 16:04:43 -04:00
Brad King bc7598fde0 Merge topic 'cpack-rpm-different-package-names'
44ee2d71 CPack/RPM different package names
2016-05-16 10:11:32 -04:00
Brad King 2b25174da6 Merge topic 'cpack-deb-improvements'
4461e8bb CPack/Deb cpack-deb-improvements release notes
7e940bf7 CPack/Deb test changes due to breaking changes
3b648894 CPack/Deb package release number in file name
316dd613 CPack/Deb proper package file naming
271e03f0 CPack/Deb per-component package architecture
23baaf8d CPack/Deb inter package dependencies
3a55a0e7 CPack/Deb proper component packages file naming
c7f388e7 CPack/Deb generation of postinst and postrm ldconfig files
2d589653 CPack/Deb generation of DEBIAN/shlibs control file
2016-05-16 10:11:30 -04:00
Brad King cd1c3d80d0 Merge topic 'link-item-interface-not-path'
9cb263d7 cmComputeLinkInformation: Do not mark interface library as a path
2016-05-16 10:11:27 -04:00
Kitware Robot fba30b2fc7 CMake Nightly Date Stamp 2016-05-16 00:01:05 -04:00
Kitware Robot 80a2f87968 CMake Nightly Date Stamp 2016-05-15 00:01:05 -04:00
Domen Vrankar 44ee2d717a CPack/RPM different package names
Packagers may now set their own rpm package
file names or request that rpmbuild tool
chooses one for them. It also supports handing
of situations where one spec file may produce
multiple rpm packages.
2016-05-15 03:01:34 +02:00
Kitware Robot b952336902 CMake Nightly Date Stamp 2016-05-14 00:01:08 -04:00
Brad King 9cb263d772 cmComputeLinkInformation: Do not mark interface library as a path
The empty string we add as a link item for an INTERFACE_LIBRARY target
is not a path, so do not mark it as such.  The generators currently
tolerate it either way, but only by accident.
2016-05-13 14:39:53 -04:00
Domen Vrankar 316dd61367 CPack/Deb proper package file naming
Proper Debian packages file naming for single package
setup (breaks compatibility with previous versions)
2016-05-13 10:46:04 -04:00
Alexander Smorkalov 3a55a0e72c CPack/Deb proper component packages file naming
Proper Debian packages file naming for multi-component setup
(breaks compatibility with previous versions)
2016-05-13 10:46:03 -04:00
Alexander Smorkalov c7f388e723 CPack/Deb generation of postinst and postrm ldconfig files
DEBIAN/postinst and DEBAIN/postrm files generation if
the package installs libraries in ldconfig controlled
location (/lib/, /usr/lib/)
2016-05-13 10:46:03 -04:00
Alexander Smorkalov 2d5896530b CPack/Deb generation of DEBIAN/shlibs control file
DEBIAN/shlibs control file generation if the package
contains libraries
2016-05-13 10:46:02 -04:00
Kitware Robot bdc84a9def CMake Nightly Date Stamp 2016-05-13 00:01:07 -04:00
Brad King cb704c0871 Merge topic 'ctest-suppress-Note'
eafe541f CTest: Do not treat "Note: ..." lines as errors (#14394)
2016-05-12 09:28:36 -04:00
Brad King 7057864560 Merge topic 'cmake-gui-locale'
cab095e1 cmake-gui: Always use "C" locale for numbers (#16099)
2016-05-12 09:28:33 -04:00
Clinton Stimpson cab095e11e cmake-gui: Always use "C" locale for numbers (#16099)
Set LC_NUMERIC = "C" at startup after Qt initializes the application
because Qt may have adopted the current locale from the environment.
CMake does not define behavior for non-C-locale numeric behavior.
2016-05-12 09:24:36 -04:00
Kitware Robot 27cda1390a CMake Nightly Date Stamp 2016-05-12 00:01:11 -04:00
Brad King eafe541ff6 CTest: Do not treat "Note: ..." lines as errors (#14394)
Otherwise CTest interprets the Qt5 moc tool output

    Note: No relevant classes found. No output generated.

as a compiler error.
2016-05-11 09:56:51 -04:00
Kitware Robot eb4f510412 CMake Nightly Date Stamp 2016-05-11 00:01:07 -04:00
Brad King 541d20dd9f Merge topic 'find-command-prefix-from-PATH-windows-only'
b30b32a4 Drop find_(library|file|path) prefixes from PATH on non-Windows
2016-05-10 14:40:52 -04:00
Kitware Robot 5fdd7d21f4 CMake Nightly Date Stamp 2016-05-10 00:01:08 -04:00
Brad King b30b32a493 Drop find_(library|file|path) prefixes from PATH on non-Windows
Since commit v3.3.0-rc1~430^2 (Teach find_(library|file|path) to get
prefixes from PATH, 2015-02-18) we search in <prefix>/include and
<prefix>/lib directories for prefixes with bin directories in the PATH
environment variable.  The motivation was to support MSYS, MinGW and
similar Windows platforms in their default environments automatically.
At the time this behavior was thought to be worthwhile in general.

Suggested-by: Chuck Atkins <chuck.atkins@kitware.com>
2016-05-09 12:58:08 -04:00
Brad King 0ac18d40c8 Remove `//------...` horizontal separator comments
Modern editors provide plenty of ways to visually separate functions.
Drop the explicit comments that previously served this purpose.
Use the following command to automate the change:

    $ git ls-files -z -- \
        "*.c" "*.cc" "*.cpp" "*.cxx" "*.h" "*.hh" "*.hpp" "*.hxx" |
      egrep -z -v "^Source/cmCommandArgumentLexer\." |
      egrep -z -v "^Source/cmCommandArgumentParser(\.y|\.cxx|Tokens\.h)" |
      egrep -z -v "^Source/cmDependsJavaLexer\." |
      egrep -z -v "^Source/cmDependsJavaParser(\.y|\.cxx|Tokens\.h)" |
      egrep -z -v "^Source/cmExprLexer\." |
      egrep -z -v "^Source/cmExprParser(\.y|\.cxx|Tokens\.h)" |
      egrep -z -v "^Source/cmFortranLexer\." |
      egrep -z -v "^Source/cmFortranParser(\.y|\.cxx|Tokens\.h)" |
      egrep -z -v "^Source/cmListFileLexer\." |
      egrep -z -v "^Source/cm_sha2" |
      egrep -z -v "^Source/(kwsys|CursesDialog/form)/" |
      egrep -z -v "^Utilities/(KW|cm).*/" |
      xargs -0 sed -i '/^\(\/\/---*\|\/\*---*\*\/\)$/ {d;}'

This avoids modifying third-party sources and generated sources.
2016-05-09 09:41:43 -04:00
Brad King d95fbdb709 Merge topic 'custom-command-CROSSCOMPILING_EMULATOR'
8c2cedc6 CustomCommandGenerator: Add support for CROSSCOMPILING_EMULATOR
2016-05-09 09:01:10 -04:00
Brad King 7ecd9648a1 Merge topic 'clang-format-prep'
afca3735 Help clang-format wrap after braces on long initializer lists
85425a3e Move comments off of class access specifier lines
64b55203 Isolate formatted streaming blocks with clang-format off/on
2016-05-09 09:01:08 -04:00
Brad King 488b82f8cc Merge topic 'fix-export-unset'
f45c16e7 Fix export file variable pollution
2016-05-09 09:01:05 -04:00
Jean-Christophe Fillion-Robin 8c2cedc624 CustomCommandGenerator: Add support for CROSSCOMPILING_EMULATOR
Teach the `add_custom_command` and `add_custom_target' commands to
substitute argv0 with the crosscompiling emulator if it is a target with
the `CROSSCOMPILING_EMULATOR` property set.
2016-05-09 08:56:27 -04:00
Kitware Robot 9183056ed4 CMake Nightly Date Stamp 2016-05-09 00:01:05 -04:00
Kitware Robot e19d7d6073 CMake Nightly Date Stamp 2016-05-08 00:01:05 -04:00
Kitware Robot 7aee319b73 CMake Nightly Date Stamp 2016-05-07 00:01:07 -04:00
Brad King afca373510 Help clang-format wrap after braces on long initializer lists
Add a long comment inside a few braced initializer lists in order to
convince clang-format to break after the opening brace and format the
list without indenting every value past the opening brace.
2016-05-06 15:54:32 -04:00
Brad King 85425a3e6c Move comments off of class access specifier lines
The clang-format tool may turn this:

   public: // comment about access specifier

     // unrelated comment indented with code
     ...

Into:

   public: // comment about access specifier

           // unrelated comment indented with code
     ...

Avoid this by moving comments off of access specifier lines.
2016-05-06 14:51:26 -04:00
Brad King 64b5520346 Isolate formatted streaming blocks with clang-format off/on
The clang-format tool can do a good job formatting most code, but
well-organized streaming blocks are best left manually formatted.

Find blocks of the form

    os <<
      "...\n"
      "...\n"
      ;

using the command

    $ git ls-files -z -- Source |
      egrep -v -z '^Source/kwsys/' |
      xargs -0 pcregrep -M --color=always -B 1 -A 1 -n \
        '<<[^\n]*\n(^ *("[^\n]*("|<<|;)$|;)\n){2,}'

Find blocks of the form

    os << "...\n"
       << "...\n"
       << "...\n";

using the command

    $ git ls-files -z -- Source |
      egrep -v -z '^Source/kwsys/' |
      xargs -0 pcregrep -M --color=always -B 1 -A 1 -n \
        '<<[^\n]*\n(^ *<<[^\n]*(\\n"|<<|;)$\n){2,}'

Surround such blocks with the pair

    /* clang-format off */
    ...
    /* clang-format on */

in order to protect them from update by clang-format.  Use the C-style
`/*...*/` comments instead of C++-style `//...` comments in order to
prevent them from ever being swallowed by re-formatting of surrounding
comments.
2016-05-06 14:25:55 -04:00
Brad King 73601ff831 Merge topic 'ghs-hash-object-locations'
5e428713 GHS: Shorten long object paths with duplicate source names
2016-05-06 08:22:33 -04:00
Geoff Viola 5e4287131b GHS: Shorten long object paths with duplicate source names
Detect when the resulting object path is too long and compute an
alternative name using a hash.
2016-05-06 08:21:05 -04:00
Kitware Robot eb27154f63 CMake Nightly Date Stamp 2016-05-06 00:01:05 -04:00
Matthew Woehlke f45c16e7ee Fix export file variable pollution
Add missing unset of scratch variables to generated export file for case
that the file was already included. We already unset these when parsing
the file normally, but the multiple inclusion case was leaving them
around.
2016-05-05 11:33:56 -04:00
Kitware Robot 8d7ef6a8b0 CMake Nightly Date Stamp 2016-05-05 00:01:08 -04:00
Kitware Robot cd0af9c5e0 CMake Nightly Date Stamp 2016-05-04 00:01:06 -04:00
Brad King 96c8a4769f Merge topic 'doc-cmake-E-updates'
960afaad Help: Improve 'cmake -E md5sum' documentation
25ee2c86 Help: Add missing space in cmake(1) manual
2016-05-03 10:17:04 -04:00
Brad King 3fc49c50b0 Merge topic 'doc-cmake-policies-manual-improvements'
5f948d2a Help: Add policy summaries to cmake-policies(7)
b74d73e5 Help: Organize cmake-policies(7) manual by version of introduction
de370656 cmRST: Parse toctree lines with Sphinx cross-reference syntax
845cb217 CMP0059: Fix typo in policy description
2016-05-03 10:17:00 -04:00
Brad King a0d31f3bb3 Merge topic 'clang-format-include-order'
54f71cd7 Source: Sort includes the way clang-format would
7b6ffa59 Source: Sort includes of sys/types.h as clang-format would
be14fe48 Source: Stabilize include order of sys/types.h before sys/stat.h
5e871f70 Tests: Sort includes of sys/types.h as clang-format would
a20d7d48 Tests: Fix Plugin test include order
2016-05-03 10:16:55 -04:00
Brad King 54f71cd72c Source: Sort includes the way clang-format would
Re-apply the approach from commit e1c77472 (Format include directive
blocks and ordering with clang-format, 2016-04-29) but this time be
more careful about exclusion of parser generator sources:

    $ git ls-files -z -- \
        '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' |
      egrep -z -v '^Source/cmCommandArgumentLexer\.' |
      egrep -z -v '^Source/cmCommandArgumentParser\.' |
      egrep -z -v '^Source/cmDependsJavaLexer\.' |
      egrep -z -v '^Source/cmDependsJavaParser\.' |
      egrep -z -v '^Source/cmExprLexer\.' |
      egrep -z -v '^Source/cmExprParser\.' |
      egrep -z -v '^Source/cmFortranLexer\.' |
      egrep -z -v '^Source/cmFortranParser\.' |
      egrep -z -v '^Source/cmListFileLexer\.' |
      egrep -z -v '^Source/cm_sha2' |
      egrep -z -v '^Source/(kwsys|CursesDialog/form)/' |
      egrep -z -v '^Utilities/(KW|cm).*/' |
      egrep -z -v '^Tests/Module/GenerateExportHeader' |
      egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' |
      xargs -0 clang-format -i

Also drop use of custom sorting for `sys/types.h`.
2016-05-03 10:08:41 -04:00
Brad King 7b6ffa59b1 Source: Sort includes of sys/types.h as clang-format would
When this header is included in blocks where order does not matter, just
place it in lexicographic order as clang-format would by default.
2016-05-03 10:08:41 -04:00
Brad King be14fe4857 Source: Stabilize include order of sys/types.h before sys/stat.h
Include the two headers in an isolated block with a comment separating
them so that tools that re-order includes do not re-order these.
2016-05-03 10:08:41 -04:00
Kitware Robot 4d59471a7e CMake Nightly Date Stamp 2016-05-03 00:01:08 -04:00
Brad King de37065661 cmRST: Parse toctree lines with Sphinx cross-reference syntax 2016-05-02 15:16:07 -04:00
Brad King 845cb217a7 CMP0059: Fix typo in policy description 2016-05-02 15:16:07 -04:00
Bartosz Kosiorek 960afaad7f Help: Improve 'cmake -E md5sum' documentation 2016-05-02 10:02:12 -04:00
Brad King 067b21b675 Merge topic 'clang-format-include-order'
e1c77472 Format include directive blocks and ordering with clang-format
180538c7 Source: Stabilize include order
0e7bca92 Utilities/Release: Stabilize include order in WiX custom action
eb817be0 Tests: Stabilize include order in MFC, VSXaml, and VSWinStorePhone
eda313b4 Tests: Stabilize include order in StringFileTest
7110b754 CursesDialog: add missing cmState include
d7a5f255 Modules: Remove unused CMakeTestWatcomVersion.c file
2016-05-02 09:24:21 -04:00
Kitware Robot 2e6684c65d CMake Nightly Date Stamp 2016-05-02 00:01:16 -04:00
Kitware Robot ffbac71e07 CMake Nightly Date Stamp 2016-05-01 00:01:05 -04:00
Kitware Robot c9423a44de CMake Nightly Date Stamp 2016-04-30 00:01:08 -04:00
Brad King e1c7747253 Format include directive blocks and ordering with clang-format
Sort include directives within each block (separated by a blank line) in
lexicographic order (except to prioritize `sys/types.h` first).  First
run `clang-format` with the config file:

    ---
    SortIncludes: false
    ...

Commit the result temporarily.  Then run `clang-format` again with:

    ---
    SortIncludes: true
    IncludeCategories:
      - Regex:    'sys/types.h'
        Priority: -1
    ...

Commit the result temporarily.  Start a new branch and cherry-pick the
second commit.  Manually resolve conflicts to preserve indentation of
re-ordered includes.  This cleans up the include ordering without
changing any other style.

Use the following command to run `clang-format`:

    $ git ls-files -z -- \
        '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' |
      egrep -z -v '(Lexer|Parser|ParserHelper)\.' |
      egrep -z -v '^Source/cm_sha2' |
      egrep -z -v '^Source/(kwsys|CursesDialog/form)/' |
      egrep -z -v '^Utilities/(KW|cm).*/' |
      egrep -z -v '^Tests/Module/GenerateExportHeader' |
      egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' |
      xargs -0 clang-format -i

This selects source files that do not come from a third-party.

Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
2016-04-29 13:58:54 -04:00
Brad King 180538c706 Source: Stabilize include order
Each source file has a logical first include file.  Include it in an
isolated block so that tools that sort includes do not move them.
2016-04-29 13:58:31 -04:00
Brad King 9d2e306e98 Merge topic 'vs71-deprecate'
ce82e0a5 Deprecate Visual Studio 7 .NET 2003 generator
6a501b65 Tests: Drop test for VS 7.0 generator deprecation warnings
2016-04-29 13:28:33 -04:00
Brad King 43e21ce923 Merge topic 'clang-tidy-argv0'
304ab71d Clang-Tidy: Give entire compiler command line to clant-tidy tool
2016-04-29 13:28:28 -04:00
Daniel Pfeifer 7110b754fe CursesDialog: add missing cmState include 2016-04-29 09:12:32 -04:00
Kitware Robot aa304cbeb2 CMake Nightly Date Stamp 2016-04-29 00:01:10 -04:00
Brad King ce82e0a53f Deprecate Visual Studio 7 .NET 2003 generator
Update documentation to mark the generator deprecated.  Add a warning at
the end of generation plus an option to turn off the warning.
2016-04-28 10:09:20 -04:00
Daniel Pfeifer 304ab71db0 Clang-Tidy: Give entire compiler command line to clant-tidy tool
The tool expects the entire compiler command, including `cc`.  It
will automatically skip that and extract the options it needs.
2016-04-28 09:42:31 -04:00
Brad King 3c189bbb33 Merge topic 'clang-tidy-output-cleanup'
04d74a7f Clang-Tidy: copy stdout to sterr; ignore original stderr
2016-04-28 09:26:03 -04:00
Kitware Robot a2de7f372c CMake Nightly Date Stamp 2016-04-28 00:01:07 -04:00
Brad King edf1c8e37d Merge topic 'ghs-duplicate-objects'
1703a6d2 GHS: Fix handling of duplicate source filenames (#16046)
2016-04-27 14:32:12 -04:00
Brad King 3c93436209 Merge topic 'autogen-message-cleanup'
9647af3f Autogen: Message tweaks: Compiler type (moc/qrc/ui) added to progress messages
9b58190c Autogen: Message cleanups: Compose messages in std::stringstream
2016-04-27 09:15:22 -04:00
Brad King 8a00c16b59 Merge topic 'vs-old-express-no-folders'
571bedec VS: Ignore USE_FOLDER property on VS versions that do not support it
0c58d2d0 VS: Detect VS 8 and 9 Express editions
2016-04-27 09:15:20 -04:00
Daniel Pfeifer 04d74a7f89 Clang-Tidy: copy stdout to sterr; ignore original stderr
Clang-Tidy writes the number of warnings, the number of suppressed
warnings, and instructions on how to suppress warnings to stderr.  Since
each source file is checked individually, this repetitive information is
disturbing and should be suppressed.

The actual warning messages are written to stdout.  Some IDEs (eg.
QtCreator) analyze only stderr for issues.  Redirecting Clang-Tidy's
stdout to stderr makes sure the warnings are correctly displayed.
2016-04-27 09:06:47 -04:00
Kitware Robot a594b79b3c CMake Nightly Date Stamp 2016-04-27 00:01:05 -04:00
Brad King 571bedec29 VS: Ignore USE_FOLDER property on VS versions that do not support it
Solution folders are supported on VS 8 and above in the full versions
and on VS 11 and above in the express versions.
2016-04-26 08:22:27 -04:00
Brad King 0c58d2d0fd VS: Detect VS 8 and 9 Express editions 2016-04-26 08:16:19 -04:00
Kitware Robot b8a8dfec36 CMake Nightly Date Stamp 2016-04-26 00:01:06 -04:00
Geoff Viola 1703a6d2c4 GHS: Fix handling of duplicate source filenames (#16046)
Green Hills MULTI project files must specify explicitly distinct object
file names for source files with the same name.
2016-04-25 10:46:09 -04:00
Sebastian Holtermann 9647af3f4c Autogen: Message tweaks: Compiler type (moc/qrc/ui) added to progress messages 2016-04-25 10:38:58 -04:00
Sebastian Holtermann 9b58190c8f Autogen: Message cleanups: Compose messages in std::stringstream
To avoid Race conditions with other processes writing to stdout/stderr compose
the whole message in a std::stringstream then submit the single complete message.
2016-04-25 10:38:58 -04:00
Kitware Robot 657a446175 CMake Nightly Date Stamp 2016-04-25 00:01:04 -04:00
Kitware Robot 4417f91379 CMake Nightly Date Stamp 2016-04-24 00:01:05 -04:00
Kitware Robot 38d1c67c4d CMake Nightly Date Stamp 2016-04-23 00:01:05 -04:00
Brad King 76e793b9ad Merge topic 'autogen-updates'
84946c73 Tests: QtAutogen: Same source name in different directories test
9c6fa684 Autogen: Generate qrc_NAME.cpp files in subdirectories
488ea8c7 Autogen: Generate not included moc files in subdirectories (#12873)
66caae45 Autogen: Check added for name collisions of generated qrc_NAME.cpp files
663d093d Autogen: Check added for name collisions of generated ui_NAME.h files
8295d437 Autogen: Check added for name collisions of generated moc files
d350308a Help: Improve AUTOMOC documentation layout
2016-04-22 09:02:03 -04:00
Brad King eb87407068 Merge topic 'xcode-c_str'
2263949b cmGlobalXCodeGenerator: do not pass char* to cmSystemTools::CollapseFullPath()
2b25ce30 make cmGlobalXCodeGenerator::XCodeEscapePath() take a std::string&
ffedf352 make cmGlobalXCodeGenerator::BuildObjectListOrString::Add() take a string&
6100bdff cmGlobalXCodeGenerator: directly call CreateString() with std::string
2016-04-22 09:01:33 -04:00
Brad King e5a9a437fb Merge topic 'addcachedefinitions-convert'
068358e1 cmMakefile::AddCacheDefinition: avoid conversions between char* and string
2016-04-22 09:01:22 -04:00
Sebastian Holtermann 9c6fa684e7 Autogen: Generate qrc_NAME.cpp files in subdirectories
A qrc_NAME.cpp file generated from NAME.qrc in the directory
CMAKE_CURRENT_SOURCE_DIR/SUBDIR
will be generated in the directory
CMAKE_CURRENT_BINARY_DIR/TARGETNAME_automoc.dir/SUBDIR
2016-04-22 08:54:25 -04:00
Sebastian Holtermann 488ea8c709 Autogen: Generate not included moc files in subdirectories (#12873)
Not included moc files generated from a source file in
CMAKE_CURRENT_SOURCE_DIR/SUBDIR
will be generated in the directory
CMAKE_CURRENT_BINARY_DIR/TARGETNAME_automoc.dir/SUBDIR/
2016-04-22 08:49:22 -04:00
Sebastian Holtermann 66caae45f6 Autogen: Check added for name collisions of generated qrc_NAME.cpp files 2016-04-22 08:49:22 -04:00
Sebastian Holtermann 663d093d45 Autogen: Check added for name collisions of generated ui_NAME.h files 2016-04-22 08:49:21 -04:00
Sebastian Holtermann 8295d43713 Autogen: Check added for name collisions of generated moc files
The test exits with an error if two or more source files
would generate the same moc file.
2016-04-22 08:49:21 -04:00
Kitware Robot 02f663f15c CMake Nightly Date Stamp 2016-04-22 00:01:05 -04:00
Kitware Robot 9b5929da22 CMake Nightly Date Stamp 2016-04-21 00:01:05 -04:00
Rolf Eike Beer 2263949b78 cmGlobalXCodeGenerator: do not pass char* to cmSystemTools::CollapseFullPath()
This takes a std::string&, so directly pass the object to it instead of
converting back and forth.
2016-04-20 23:35:01 +02:00
Rolf Eike Beer 2b25ce30ca make cmGlobalXCodeGenerator::XCodeEscapePath() take a std::string&
All callers already have one, and it was immediately converted to one
internally. Just keep the old one around, and only modify it when needed.
2016-04-20 23:35:01 +02:00
Rolf Eike Beer ffedf3527d make cmGlobalXCodeGenerator::BuildObjectListOrString::Add() take a string&
All callers already have these objects, and it is only passed to other methods
taking such, so avoid all conversions in between.
2016-04-20 23:34:57 +02:00
Rolf Eike Beer 6100bdff38 cmGlobalXCodeGenerator: directly call CreateString() with std::string
This function already takes a const std::string&, no need to convert the input
to a char* before passing it in.
2016-04-20 23:34:05 +02:00
Rolf Eike Beer 068358e1ed cmMakefile::AddCacheDefinition: avoid conversions between char* and string
Running the testsuite this function is entered more than 126,000 times. Reorder
the code flow so that a conversion from char* to std::string is only done when
the cache entry is a path one, which happens only ~50 times during the
testsuite.
2016-04-20 23:33:17 +02:00
Brad King f223652790 Merge topic 'autogen-cleanups'
840b830b Autogen: Qrc processing: Generate single map with final input / output names
bc4c7751 Autogen: Ui processing: Generate single map with final input / output names
47e60bc5 Autogen: Split out UI file generation code to dedicated method
cf679ea8 Autogen: Split out moc file generation code to dedicated method
3ea1d090 Autogen: Rename method GenerateQrc{ => Files}
8ced8bb9 Autogen: New logCommand method. It prints commands using std::cout.
95064a6d Autogen: Rename header extension Join method to JoinExts
7a73c404 Autogen: Use SystemTools string functions instead of rolling out own
2016-04-20 09:52:34 -04:00
Kitware Robot 0a05b2bd41 CMake Nightly Date Stamp 2016-04-20 00:01:05 -04:00
Sebastian Holtermann 840b830bc6 Autogen: Qrc processing: Generate single map with final input / output names 2016-04-19 12:59:13 -04:00
Sebastian Holtermann bc4c7751ab Autogen: Ui processing: Generate single map with final input / output names
The single map allows name collision testing (in a later commit)
2016-04-19 12:59:06 -04:00
Sebastian Holtermann 47e60bc5a0 Autogen: Split out UI file generation code to dedicated method 2016-04-19 12:52:36 -04:00
Sebastian Holtermann cf679ea8dc Autogen: Split out moc file generation code to dedicated method 2016-04-19 12:51:26 -04:00
Sebastian Holtermann 3ea1d09082 Autogen: Rename method GenerateQrc{ => Files} 2016-04-19 12:49:47 -04:00
Sebastian Holtermann 8ced8bb95a Autogen: New logCommand method. It prints commands using std::cout. 2016-04-19 12:49:22 -04:00
Sebastian Holtermann 95064a6d35 Autogen: Rename header extension Join method to JoinExts
While at it, simplify the signature and avoid a trailing separator.
2016-04-19 12:48:05 -04:00
Sebastian Holtermann 7a73c404dd Autogen: Use SystemTools string functions instead of rolling out own 2016-04-19 12:44:08 -04:00