Commit Graph

16151 Commits

Author SHA1 Message Date
Kitware Robot e6aace96eb CMake Nightly Date Stamp 2014-04-06 00:01:08 -04:00
Stephen Kelly 19b7c22d02 Ninja: Query custom commands once per target, not once per file.
Computing the source files is now more expensive, so the Ninja
generator became very slow with a large number of files.
2014-04-05 14:22:48 +02:00
Kitware Robot d5a32737cf CMake Nightly Date Stamp 2014-04-05 00:01:06 -04:00
Rolf Eike Beer 539b6c58f5 Fix build on AIX failing because of access to string elements
The compilation failed with this error message:

.../Source/cmCryptoHash.cxx: In method `string cmCryptoHash::HashString (const string &)':
.../Source/cmCryptoHash.cxx:41: non-lvalue in unary `&'

This was introduced in 77f60392d9 (stringapi:
Accept strings when MD5 hashing data).
2014-04-04 23:25:33 +02:00
Brad King 079153e98e Merge topic 'compiler-warning-cleanup'
6c190245 Remove extra semicolons from C++ code.
4bef02e7 cmTypeMacro: Add a class to eat the semicolon following the macro use.
ff710539 Remove default labels from fully covered switch statements.
2014-04-04 11:38:06 -04:00
Brad King aeb930fcce Merge topic 'remove-stray-aborts'
c4059a21 cmTarget: Remove abort() after INTERNAL_ERROR reports
2014-04-04 11:38:04 -04:00
Brad King 84487e9159 Merge topic 'update-kwsys'
23b4abb2 Merge branch 'upstream-kwsys' into update-kwsys
eccc425a KWSys 2014-04-02 (39f98b5d)
2014-04-04 11:38:01 -04:00
Brad King 4a227d280b Merge topic 'cmMakefile_IsOn_fix_comment'
a40f57e4 cmMakefile: Revise comment describing IsOn()
2014-04-04 11:37:59 -04:00
Daniele E. Domenichelli a40f57e485 cmMakefile: Revise comment describing IsOn() 2014-04-04 11:36:14 -04:00
Kitware Robot ce0aae7039 CMake Nightly Date Stamp 2014-04-04 00:01:07 -04:00
Stephen Kelly 6c19024570 Remove extra semicolons from C++ code.
Clang based tools running over the code complain about these,
but clang has a fixit for removing them.
2014-04-03 21:53:14 +02:00
Stephen Kelly 4bef02e7aa cmTypeMacro: Add a class to eat the semicolon following the macro use.
Apply the same workaround to the cmCPackTypeMacro. Additionally
change that macro to not use 'class' as a macro parameter.
2014-04-03 21:53:13 +02:00
Stephen Kelly ff710539ab Remove default labels from fully covered switch statements.
Allow compilers to warn when new enum values are added, making
switches no-longer fully-covered.
2014-04-03 21:53:13 +02:00
Brad King c4059a21a9 cmTarget: Remove abort() after INTERNAL_ERROR reports
After reporting an internal error we should continue rather than
aborting.  Remove such statements that are left from debugging.
2014-04-03 14:05:03 -04:00
Brad King 5376151aa1 Merge topic 'target-transitive-sources'
9407174b target_sources: New command to add sources to target.
81ad69e0 Make the SOURCES target property writable.
6e636f2e cmTarget: Make the SOURCES origin tracable.
3676fb49 cmTarget: Allow transitive evaluation of SOURCES property.
e6971df6 cmTarget: Make the source files depend on the config.
df753df9 cmGeneratorTarget: Don't add computed sources to the target.
869328aa cmComputeTargetDepends: Use valid config to compute target depends.
2014-04-03 12:51:53 -04:00
Brad King 93054aa84f Merge topic 'target-sources-refactor'
5de63265 Genex: Only evaluate TARGET_OBJECTS to determine target sources.
aa0a3562 cmGeneratorTarget: Compute target objects on demand
042c1c83 cmTarget: Compute languages from object libraries on demand.
fdcefe3c cmGeneratorTarget: Compute consumed object libraries on demand.
c355d108 cmComputeTargetDepends: Track object library depends.
e5da9e51 cmTarget: Allow any generator expression in SOURCES property.
5702e106 cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.
857d30b5 cmGlobalGenerator: Add interface to call ForceLinkerLanguages
28e1d2f8 cmStringCommand: Add GENEX_STRIP subcommand.
bf98cc25 Genex: Evaluate TARGET_OBJECTS as a normal expression.
8cd113ad cmTarget: Store strings instead of cmSourceFile* to represent SOURCES.
4959f341 cmSourceFileLocation: Collapse full path for directory comparisons.
fcc92878 cmSourceFileLocation: Remove unused Update method.
59e8740a cmTarget: Remove AddSourceFile method
26d494ba cmTarget: Use string API to add sources to cmTarget objects.
d38423ec cmTarget: Add a method to obtain list of filenames for sources.
...
2014-04-03 12:51:51 -04:00
Brad King 1d4366ffac Merge topic 'revise-compiler-id-policies'
13684e2b cmMakefile: Port PolicyOptionalWarningEnabled to string APIs
8018fcca Merge branch 'master' into revise-compiler-id-policies
a41c0a9d Do not warn by default when policy CMP0025 or CMP0047 is not set
d339653e Help: Revise and format policy CMP0025 and CMP0047 docs
2014-04-03 12:51:49 -04:00
Brad King f92f7e8d23 Merge topic 'clang-warnings'
1de08685 cmSystemTools: Restore unreachable return to silence warnings
2014-04-03 12:51:45 -04:00
Brad King 3e87d7cbd0 Merge topic 'simplify-multi-config'
936e00b9 Simplify multiple config handling.
2014-04-03 12:51:42 -04:00
Brad King 8acd2b3ab4 Merge topic 'vs-flag-with-following-value'
e8633e66 VS: Fix /analyze:log flag mapping (#14858)
650199e7 VS: Support mapping flags with values following separately (#14858)
f2a3dd9d cmIDEOptions: Factor FlagMap update out to separate method
2014-04-03 12:51:40 -04:00
Brad King 23b4abb260 Merge branch 'upstream-kwsys' into update-kwsys 2014-04-03 08:43:51 -04:00
Kitware Robot 9f69a34f99 CMake Nightly Date Stamp 2014-04-03 00:01:06 -04:00
Stephen Kelly 9407174b1a target_sources: New command to add sources to target. 2014-04-02 23:14:02 +02:00
Stephen Kelly 81ad69e056 Make the SOURCES target property writable. 2014-04-02 23:14:02 +02:00
Stephen Kelly 6e636f2eba cmTarget: Make the SOURCES origin tracable. 2014-04-02 23:14:02 +02:00
Stephen Kelly 3676fb4963 cmTarget: Allow transitive evaluation of SOURCES property.
Extend the cmGeneratorExpressionDAGChecker with an interface
returning the name of the top target.  Use that to determine
when there is a DAG violation, as required by the RunCMake.Languages
tests.
2014-04-02 23:14:02 +02:00
Stephen Kelly e6971df6ab cmTarget: Make the source files depend on the config.
Disallow the use of config-specific source files with
the Visual Studio and Xcode generators. They don't have
any way to represent the condition currently.

Use the same common-config API in cmQtAutoGenerators. While
it accepts config-specific files, it doesn't have to support
multiple configurations yet.

Loop over the configs in cmTargetTraceDependencies
and cmGlobalGenerator::WriteSummary and consume all source
files.

Loop over the configs in cmComputeTargetDepends and compute the
object library dependencies for each config.
2014-04-02 23:14:02 +02:00
Stephen Kelly df753df94b cmGeneratorTarget: Don't add computed sources to the target.
When config-specifig generator expressions are supported, a target
may have SOURCES:

 src1.cpp $<$<CONFIG:Debug>:src2.cpp> $<$<CONFIG:Release>:src3.cpp>

and computation in cmTargetTraceDependencies would add each of the
src2.cpp and src3.cpp sources back to the target without a
config-guard.  That would make the sources be used later when
generating the buildsystem, regardless of the configuration.

Avoid calling AddSource on the target with the result of the
GetSourceFiles call.
2014-04-02 23:14:02 +02:00
Stephen Kelly 869328aac3 cmComputeTargetDepends: Use valid config to compute target depends.
If CMAKE_BUILD_TYPE is set, and user code contains:

 target_link_libraries(myexe prefix_$<$<CONFIG:Debug>:debug>)

then the computation with an empty config was computing a target-level
dependency on a target or library called prefix_, and a dependency
on a target or library called prefix_debug (as expected).

The existing logic skips 'prefix_' because it is not a known target,
and defers to the link-dependencies logic to find the library. The
link-dependencies logic does not incorrectly handle the config as
cmComputeTargetDepends did, and so did not encounter 'prefix_'
during its computation. This likely had no effect on the generated
buildsystem.
2014-04-02 23:14:02 +02:00
Stephen Kelly 5de63265e3 Genex: Only evaluate TARGET_OBJECTS to determine target sources.
The output of this expression may contain macros for IDEs to replace
such as $(Configuration), $(CURRENT_ARCH) etc.  To avoid generating
content which is not usable in other contexts, report an error if
there is an attempt to use it in other contexts.

This commit may be reverted in the future if a solution to the
above difference is implemented.
2014-04-02 23:12:57 +02:00
Stephen Kelly aa0a3562dd cmGeneratorTarget: Compute target objects on demand
Add a ComputeObjectMapping method to compute the object
names.  It takes mapping to populate as an out-parameter so
that it can be extended in the future with parameters
relevant to generator expression evaluation.

Remove the supporting cmGeneratorTarget::AddObject method. It is
no longer needed as the container member is populated directly.

The ComputeObjectMapping method is called whenever objects are
requested from the cmGeneratorTarget.  Because the Xcode generator
makes no such request, explicitly invoke the method from that
generator so that the logic of checking for bad sources in object
libraries is executed.

In a follow-up, the UseObjectLibraries usage may be replaced by a
true generator expression evaluator for TARGET_OBJECTS. That
will require generators to use cmGeneratorTarget::GetExternalObjects
which is not currently the case for Xcode and VS generators.
2014-04-02 23:12:57 +02:00
Stephen Kelly 042c1c834e cmTarget: Compute languages from object libraries on demand. 2014-04-02 23:12:56 +02:00
Stephen Kelly fdcefe3c42 cmGeneratorTarget: Compute consumed object libraries on demand.
Remove up-front object library computation from cmGlobalGenerator.

Adjust tests for message coming from the generator expression
evaluation.
2014-04-02 23:12:56 +02:00
Stephen Kelly c355d10865 cmComputeTargetDepends: Track object library depends.
Relieve cmGeneratorTarget of that responsibility.
2014-04-02 23:12:56 +02:00
Stephen Kelly e5da9e51d0 cmTarget: Allow any generator expression in SOURCES property.
Remove use of UseObjectLibraries from Makefile and Ninja generators. It
is not needed now because those generators use GetExternalObjects
which already contains the objects from object libraries.

The VS10 generator calls both the UseObjectLibraries and the GetExternalObjects
methods. Ensure that duplicates are not created by skipping objects
from object libraries in handling of GetExternalObjects.

Similarly, fix VS6, VS7 and Xcode object handling by skipping
external objects from OBJECT_LIBRARY usage as appropriate.

The error message in the BadSourceExpression1 test is now reported
by the generator expression evaluator, so it has different text.
2014-04-02 23:12:56 +02:00
Stephen Kelly 5702e10677 cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.
Add policy CMP0051 to control this behavior.
2014-04-02 23:12:56 +02:00
Brad King 97243c22b2 Merge branch 'revise-compiler-id-policies' into release 2014-04-02 14:54:17 -04:00
Brad King 13684e2b78 cmMakefile: Port PolicyOptionalWarningEnabled to string APIs
This method was added in a commit based on a release branch that
pre-dated the std::string API changes.  Port the implementation to use
the string APIs instead of c_str().
2014-04-02 14:44:45 -04:00
Brad King 8018fcca6e Merge branch 'master' into revise-compiler-id-policies 2014-04-02 14:44:35 -04:00
Brad King a41c0a9dcb Do not warn by default when policy CMP0025 or CMP0047 is not set
These policies are triggered by the use of a particular compiler rather
than outdated CMake code in a project.  Avoid warning in every project
that enables a language by not displaying the policy warning by default.
Add variable CMAKE_POLICY_WARNING_CMP<NNNN> to control the warning
explicitly; otherwise enable the warning with --debug-output or --trace.

This breaks with strict policy convention because it does not provide
developers with any warning about the behavior change by default.
Existing projects will continue to build without a warning or change in
behavior.  When a developer changes the minimum required version of
CMake in a project to a sufficiently high value (3.0), the project will
suddenly get the new compiler id and may break, but at least the
breakage comes with a change to the project rather than the version of
CMake used to build it.

Breaking strict policy convention is worthwhile in this case because
very few projects will be affected by the behavior change but every
project would have to see the warning if it were enabled by default.
2014-04-02 14:43:54 -04:00
Brad King 1de086855c cmSystemTools: Restore unreachable return to silence warnings
Some compilers do not recognize that the end of copy_data cannot
be reached and complain that there is no return statement.  Clang
warns that there is an unreachable return statement if it appears.
Conditionally add the return statement when not building with Clang.
2014-04-02 09:35:36 -04:00
Stephen Kelly 936e00b92c Simplify multiple config handling.
Use conventional pattern of not repeating the loop body for empty
config.
2014-04-02 12:29:33 +02:00
Kitware Robot 5ada4be81b CMake Nightly Date Stamp 2014-04-02 00:01:06 -04:00
Brad King e8633e6678 VS: Fix /analyze:log flag mapping (#14858)
Fix the VS 11 and VS 12 flag table entries for this flag.  It requires
a value in the following argument.  Also drop the general "/analyze:"
flag table entry so that such flags will be passed through as plain
additional options.  This is necessary because some such options have
following values and some do not but not all have .vcxproj elements
to hold the values.
2014-04-01 14:59:20 -04:00
Brad King 650199e7ca VS: Support mapping flags with values following separately (#14858)
Add a "UserFollowing" special flag table entry indicator to say that a
flag expects a value in a following argument.  Teach cmIDEOptions to
handle such flags.
2014-04-01 14:56:08 -04:00
Brad King f2a3dd9d1a cmIDEOptions: Factor FlagMap update out to separate method
This will allow it to be re-used in other code paths.
2014-04-01 14:54:28 -04:00
Brad King 780f81b9e7 Merge topic 'simplify-ninja-linker-command'
2b896752 Ninja: Simplify code for linker commands
2014-04-01 11:06:19 -04:00
Brad King f70b2253f6 Merge topic 'fix_policy_diagnostics'
77b581c2 Policies: omit warnings about unset policies when they are actually set to NEW
2014-04-01 11:06:17 -04:00
Brad King 242e13bfe6 Merge topic 'clang-warnings'
8c9c4fe1 Remove 'return' statements that can never be reached
50ca77f4 create_test_sourcelist: Initialize variable at declaration
2014-04-01 11:06:15 -04:00
Brad King a5a6d53782 Merge topic 'cmake-gui-symlinks'
480be00b cmake-gui: Don't resolve symlinks with using file dialog.
2014-04-01 11:06:14 -04:00
Brad King 382c9ee859 Merge topic 'link-line-quoting'
423009c1 Makefile: Generate single-quoted object lists for Watcom
a863a8fe cmLocalUnixMakefileGenerator3: Re-organize ConvertToQuotedOutputPath
2014-04-01 11:06:08 -04:00
Jiri Malak 2b89675256 Ninja: Simplify code for linker commands
Use GetCreateRuleVariable function instead of redundant code for Rule
variable name.  Use temporary variables to improve code.
2014-04-01 10:58:58 -04:00
Kitware Robot e3e1ba3f78 CMake Nightly Date Stamp 2014-04-01 00:01:05 -04:00
Stephen Kelly 857d30b52e cmGlobalGenerator: Add interface to call ForceLinkerLanguages
Avoid calling it too early when cmGeneratorTarget instances don't
yet exist.
2014-03-31 23:18:44 +02:00
Stephen Kelly 28e1d2f8fc cmStringCommand: Add GENEX_STRIP subcommand.
Strip out any generator expressions in the input string.
2014-03-31 23:18:44 +02:00
Stephen Kelly bf98cc252f Genex: Evaluate TARGET_OBJECTS as a normal expression. 2014-03-31 23:18:44 +02:00
Stephen Kelly 8cd113ad1d cmTarget: Store strings instead of cmSourceFile* to represent SOURCES.
This will allow the strings to contain generator expressions.

At this point, generator expressions are still not part of the
SOURCES property when it is read.
2014-03-31 23:18:44 +02:00
Stephen Kelly 4959f3413c cmSourceFileLocation: Collapse full path for directory comparisons.
Otherwise Matches() ends up doing a comparison of
the directories

 /path/to/dir/subdir/..

and

 /path/to/dir

as strings and not matching where it should.
2014-03-31 23:18:43 +02:00
Stephen Kelly fcc9287897 cmSourceFileLocation: Remove unused Update method.
The string overload is never called. This allows the removal of
the unused UpdateDirectory method.
2014-03-31 23:18:43 +02:00
Stephen Kelly 59e8740aca cmTarget: Remove AddSourceFile method
It is no longer used.
2014-03-31 23:18:43 +02:00
Stephen Kelly 26d494ba01 cmTarget: Use string API to add sources to cmTarget objects.
Continue to call GetOrCreateSource where necessary to create
cmSourceFile objects which have the GENERATED attribute set.
2014-03-31 23:18:43 +02:00
Stephen Kelly d38423ecc4 cmTarget: Add a method to obtain list of filenames for sources. 2014-03-31 23:18:43 +02:00
Stephen Kelly b1cbba68ce cmSourceFileLocation: Make copyable and assignable.
This allows using it in containers and algorithms.
2014-03-31 23:18:43 +02:00
Stephen Kelly 0ed5ce4cd8 cmTarget: Rename AddSource method for backward compatibility.
Add a new AddSource method for future use.
2014-03-31 23:18:43 +02:00
Stephen Kelly 99a9c51f1a cmTarget: Use GetSourceFiles for languages. 2014-03-31 23:18:43 +02:00
Stephen Kelly beaa7e0377 cmGeneratorTarget: Compute the object directory early.
Ensure it is populated before tracing dependencies.
2014-03-31 23:18:43 +02:00
Nils Gladitz 77b581c2f0 Policies: omit warnings about unset policies when they are actually set to NEW 2014-03-31 09:45:10 -04:00
Sean McBride 8c9c4fe1a6 Remove 'return' statements that can never be reached
Clang -Wunreachable-code-return warns otherwise.
2014-03-31 09:41:05 -04:00
Kitware Robot 521b930bf4 CMake Nightly Date Stamp 2014-03-31 00:01:05 -04:00
Clinton Stimpson 480be00bfa cmake-gui: Don't resolve symlinks with using file dialog.
This fixes bug #14274 where a clang++ symlink was resolved to
a clang executable.
2014-03-29 22:41:44 -06:00
Kitware Robot 9298987a82 CMake Nightly Date Stamp 2014-03-30 00:01:06 -04:00
Kitware Robot 5bad8ae342 CMake Nightly Date Stamp 2014-03-29 00:01:05 -04:00
Kitware Robot cab2e31443 CMake Nightly Date Stamp 2014-03-28 00:01:05 -04:00
Jiri Malak 423009c17f Makefile: Generate single-quoted object lists for Watcom
Drop the CMAKE_NO_QUOTED_OBJECTS internal variable from the Makefile
generators.  The underlying problem is with the Watcom linker, not with
WMake.  The Watcom linker wants object files to be single-quoted.  Add
<LINK-RULE>_USE_WATCOM_QUOTE platform information variables to tell the
generators to use Watcom-style single quotes for object files on link
lines.

On Windows, Watcom uses the GetCommandLine API to get the original
command-line string and do custom parsing that expects single quotes.
On POSIX systems, Watcom approximates the original command line by
joining all argv[] entries separated by a single space.  Therefore we
need to double-quote the single-quoted arguments so that the shell does
not consume them and they are available for the parser to see.
2014-03-27 13:45:29 -04:00
Jiri Malak a863a8fecd cmLocalUnixMakefileGenerator3: Re-organize ConvertToQuotedOutputPath
Use one code path whether the components list is empty or not.
Fix indentation accordingly.
2014-03-27 13:45:27 -04:00
Brad King ede0419a37 Merge topic 'osx-CFBundle-info-plist'
90e22f8f OS X: Fix Info.plist placement in a CFBundle
2014-03-27 11:12:10 -04:00
Kitware Robot e03ac807cf CMake Nightly Date Stamp 2014-03-27 00:01:18 -04:00
Brad King edb506b862 Merge topic 'fix-Qt-Autogen'
71a11252 QtAutogen: Fix use of multiple ui files in a single target.
261acd91 QtAutogen: Use the basename for resource files.
2014-03-26 13:24:43 -04:00
Brad King a11d1c6135 Merge topic 'dev/custom-ninja-deptypes'
9523d2a5 ninja: Add support for custom depfile formats
2014-03-26 13:24:39 -04:00
Brad King f04e217cc1 Merge topic 'remove-CMakeFiles-advice'
bccc056b cmake: Advise user to remove CMakeFiles with CMakeCache.txt (#14820)
2014-03-26 13:24:37 -04:00
Brad King 06c9f55449 Merge topic 'haiku-updates'
0cc42b87 Haiku: Fix compiler detection when using distcc
84603d80 Haiku: Enable CMake builtin ELF editor
2014-03-26 13:24:36 -04:00
Brad King 9b536b914b Merge topic 'report-INTERFACE-type-in-conflict'
f1fd3714 cmMakefile: Report type of INTERFACE library in conflict.
2014-03-26 13:24:33 -04:00
Brad King 5ae8f33617 Merge topic 'update-kwsys'
ed6ddb89 Merge branch 'upstream-kwsys' into update-kwsys
12faf00d KWSys 2014-03-19 (a8aa1014)
2014-03-26 13:24:30 -04:00
Tim Blechmann 90e22f8f71 OS X: Fix Info.plist placement in a CFBundle
Fix cmOSXBundleGenerator::CreateCFBundle to place Info.plist under the
same root directory as the rest of the bundle.  Without this, Info.plist
was placed into CMAKE_BINARY_DIR, not CMAKE_CURRENT_BINARY_DIR because
the target path was not generated correctly.
2014-03-26 10:52:23 -04:00
Kitware Robot a29ea834de CMake Nightly Date Stamp 2014-03-26 00:01:05 -04:00
Kitware Robot a56a8f9536 CMake Nightly Date Stamp 2014-03-25 00:01:06 -04:00
Stephen Kelly 71a11252e9 QtAutogen: Fix use of multiple ui files in a single target.
Don't store a mapping of the directory to the ui file. The directory
will be a unique key, allowing only one ui file to be specified.
Use the source file name instead as the mapping key.
2014-03-25 01:39:03 +01:00
Stephen Kelly 261acd9109 QtAutogen: Use the basename for resource files.
The rcc tool generates a cpp file with a symbol called qInitResources
or called qInitResources_${name}, if the name is passed. The
qInitResources symbol clashes if multiple qrc files are used in
one target.

Always pass the name to ensure that the symbol is unique. This is also
the behavior of the qtx_add_resource macros.
2014-03-25 01:16:49 +01:00
Kitware Robot 8a306d68e0 CMake Nightly Date Stamp 2014-03-24 00:01:06 -04:00
Ben Boeckel 9523d2a55c ninja: Add support for custom depfile formats
Not everything that isn't MSVC is GCC. I have support for LDC's depfile
format on its way upstream[1], but its future is uncertain. CMake should
at least support this for future depfile formats.

[1]https://github.com/martine/ninja/pull/721
2014-03-23 23:54:13 -04:00
Kitware Robot 6f39a6ff32 CMake Nightly Date Stamp 2014-03-23 00:01:06 -04:00
Kitware Robot d514e41118 CMake Nightly Date Stamp 2014-03-22 00:01:05 -04:00
Brad King bccc056ba8 cmake: Advise user to remove CMakeFiles with CMakeCache.txt (#14820) 2014-03-21 08:28:37 -04:00
Adrien Destugues 84603d804c Haiku: Enable CMake builtin ELF editor
Co-Author: Brad King <brad.king@kitware.com>
2014-03-21 08:19:09 -04:00
Kitware Robot 6373e08d43 CMake Nightly Date Stamp 2014-03-21 00:01:16 -04:00
Stephen Kelly f1fd3714a4 cmMakefile: Report type of INTERFACE library in conflict. 2014-03-20 22:09:32 +01:00
Brad King ed6ddb89bf Merge branch 'upstream-kwsys' into update-kwsys 2014-03-20 09:42:27 -04:00
Brad King a48de7d850 CMake 3.0.0-rc3 2014-03-20 09:26:39 -04:00
Brad King d8fb08a391 Merge topic 'watcom-updates'
64c2342a Watcom: Enable 'WMake Makefiles' generator on Linux
5d9aa66c Watcom: Introduce OpenWatcom compiler id and fix compiler version
9292d3b8 Watcom: Detect compiler target architecture and platform
fbc883c9 Watcom: Add one blank line to Makefile for better readability
2014-03-20 09:22:30 -04:00
Brad King 565213c1fd Merge topic 'configure_file-unicode'
98383f80 Unicode: check encoding of files given to configure_file.
2014-03-20 09:22:28 -04:00
Brad King c79d98b457 Merge topic 'file-DOWNLOAD-cap-progress'
413282c0 file: Avoid runaway DOWNLOAD/UPLOAD progress reports (#14807)
2014-03-20 09:22:21 -04:00
Brad King 9c609db988 Merge topic 'minor_cleanups'
19012b46 cmMakefile: Fix style.
10e6f1e7 cmMakefile: Fix typo in comment.
c3a2f78b Makefiles: Remove duplicate code.
2e0611f9 cmGeneratorExpression: Remove unused include.
d83ef53a Rename local 'dir_max' variables to 'dir'
2014-03-20 09:22:20 -04:00
Brad King e1c1f18e39 Merge topic 'add_custom_command-DEPENDS-genex'
bbffccca add_custom_command: Evaluate generator expressions in DEPENDS
2014-03-20 09:22:17 -04:00
Brad King 86b003c3c6 Merge topic 'add_custom_command-no-INTERFACE-lib'
2600e923 Disallow INTERFACE libraries with add_custom_command(TARGET).
2014-03-20 09:22:12 -04:00
Brad King 7bf8a549f9 Merge topic 'fix-Qt5-non-Windows'
5f210672 QtDialog: Fix Qt 5 build on non-Windows.
2014-03-20 09:22:10 -04:00
Stephen Kelly bbffccca42 add_custom_command: Evaluate generator expressions in DEPENDS
Rely on evaluation in cmCustomCommandGenerator for the generators.

When tracing target dependencies, depend on the union of dependencies
for all configurations.
2014-03-20 09:21:56 -04:00
Kitware Robot f039a3a78e CMake Nightly Date Stamp 2014-03-20 00:01:05 -04:00
Brad King 6a85d624a8 Merge branch 'add_custom_command-no-INTERFACE-lib' into release 2014-03-19 10:57:04 -04:00
Stephen Kelly 2600e923a6 Disallow INTERFACE libraries with add_custom_command(TARGET).
Don't attempt to trace their dependencies.
2014-03-19 15:51:21 +01:00
Stephen Kelly 5f210672da QtDialog: Fix Qt 5 build on non-Windows.
The Qt5Core_QTMAIN_LIBRARIES variable is defined to the Qt5::WinMain
target on Windows, and undefined elsewhere.
2014-03-19 15:38:02 +01:00
Kitware Robot 8b8691adca CMake Nightly Date Stamp 2014-03-19 00:01:09 -04:00
Kitware Robot 2c5e78fa5d CMake Nightly Date Stamp 2014-03-18 00:01:09 -04:00
Clinton Stimpson 98383f802a Unicode: check encoding of files given to configure_file.
UTF-16 and UTF-32 files are rejected.
2014-03-17 14:01:55 -06:00
Jiri Malak 64c2342a8d Watcom: Enable 'WMake Makefiles' generator on Linux 2014-03-17 15:04:05 -04:00
Jiri Malak 5d9aa66c91 Watcom: Introduce OpenWatcom compiler id and fix compiler version
Distinguish "Open Watcom" from old "Watcom" by introducing a new
"OpenWatcom" compiler id.  The __WATCOMC__ format is "VVRP" for Watcom
and "VVRP + 1100" for Open Watcom.
2014-03-17 15:00:59 -04:00
Brad King 0f4e8fd0e9 CMake 3.0.0-rc2 2014-03-17 13:14:27 -04:00
Brad King 413282c0cf file: Avoid runaway DOWNLOAD/UPLOAD progress reports (#14807)
Curl makes progress callbacks frequently but we round to the nearest
percent and report only when that changes so that we make at most 101
progress reports.  However, when unexpected data beyond the total are
transferred the progress can get beyond 100% and lead to unlimited
reports.  Avoid this case by capping the reported progress to 100%.
2014-03-17 11:05:34 -04:00
Stephen Kelly 19012b4652 cmMakefile: Fix style.
Use this-> for member access.
2014-03-17 15:34:53 +01:00
Stephen Kelly 10e6f1e716 cmMakefile: Fix typo in comment. 2014-03-17 15:33:54 +01:00
Stephen Kelly c3a2f78b5a Makefiles: Remove duplicate code.
The cmGlobalUnixMakefileGenerator3::ProgressMapCompare struct is
logically equivalent to cmStrictTargetComparison.
2014-03-17 15:32:19 +01:00
Stephen Kelly 2e0611f981 cmGeneratorExpression: Remove unused include. 2014-03-17 15:29:49 +01:00
Stephen Kelly d83ef53a12 Rename local 'dir_max' variables to 'dir'
The code is not computing the maximum length directory, as is the
case in cmLocalVisualStudioGenerator::ComputeLongestObjectDirectory.
2014-03-17 15:27:01 +01:00
Jiri Malak fbc883c942 Watcom: Add one blank line to Makefile for better readability 2014-03-17 10:23:52 -04:00
Brad King b16f26f5f9 Merge topic 'target-objects-refactor'
6c9dd0ec cmGlobalGenerator: Make ComputeTargetObjects non-virtual
c481fadc cmGeneratorTarget: Don't store ObjectSources for object libraries.
f6da0440 cmLocalGenerator: Add ComputeObjectFilenames interface.
9ad804ac cmGeneratorTarget: Constify cmSourceFile* in containers.
c725bb3c Constify some APIs in generators.
dcfcd23e cmGeneratorTarget: Make GetSourceDepends const.
04cf50ff cmOSXBundleGenerator: Make MacOSXContentGeneratorType arg const.
6132d979 cmGeneratorTarget: Constify the AddExplicitObjectName API.
bc512211 cmGeneratorTarget: Constify the AddObject API.
cd43433d cmGlobalGenerator: Extract a ComputeTargetObjectDirectory interface.
d5b2e33b Makefiles: Compute local object files on demand.
2014-03-17 10:00:43 -04:00
Brad King 6aaaa6d0bd Merge topic 'CONFIG-LOCATION-CMP0026'
ea17a03b cmTarget: Port <CONFIG>_LOCATION support to updated string APIs
6e466c6f Merge branch 'master' into CONFIG-LOCATION-CMP0026
c903b531 cmTarget: Restore <CONFIG>_LOCATION to CMP0026 OLD behavior (#14808)
2014-03-17 09:49:56 -04:00
Brad King 5a21cbc96b Merge topic 'unicode-vs-projects'
ee8cef87 Encoding: If configured, write Visual Studio project files as UTF-8.
91fd99b8 Encoding: Provide option to configure CMake to use UTF-8 encoding.
2014-03-17 09:49:54 -04:00
Brad King 223b05a80c Merge topic 'fix-Qt5-windows-build'
61c60b23 QtDialog: Avoid linking to Qt4 WinMain when using Qt 5.
2014-03-17 09:49:52 -04:00
Brad King 4a7eb0cdec Merge branch 'CONFIG-LOCATION-CMP0026' into release 2014-03-17 09:35:30 -04:00
Stephen Kelly ea17a03be5 cmTarget: Port <CONFIG>_LOCATION support to updated string APIs 2014-03-17 09:31:58 -04:00
Brad King 6e466c6f2e Merge branch 'master' into CONFIG-LOCATION-CMP0026 2014-03-17 09:31:21 -04:00
Stephen Kelly c903b5319b cmTarget: Restore <CONFIG>_LOCATION to CMP0026 OLD behavior (#14808)
Restore support for the undocumented <CONFIG>_LOCATION target property
removed by commit v3.0.0-rc1~175^2 (cmTarget: Remove support for
<CONFIG>_LOCATION property, 2013-12-30) as part of the CMP0026 OLD
behavior.
2014-03-17 09:30:39 -04:00
Brad King 43b39b1c36 Merge branch 'fix-Qt5-windows-build' into release 2014-03-17 09:24:12 -04:00
Stephen Kelly 61c60b239c QtDialog: Avoid linking to Qt4 WinMain when using Qt 5.
Override the QT_QTMAIN_LIBRARY cache variable with a regular
variable in the Qt 5 configuration. This avoids linking with the
Qt 4 version of the WinMain library.
2014-03-17 14:15:14 +01:00
Kitware Robot 6313be44aa CMake Nightly Date Stamp 2014-03-17 00:01:05 -04:00
Kitware Robot 2eb158caf0 CMake Nightly Date Stamp 2014-03-16 00:01:05 -04:00
Stephen Kelly 6c9dd0ec7b cmGlobalGenerator: Make ComputeTargetObjects non-virtual
Implement it in terms of the ComputeObjectFilenames virtual method
on the local generators.

Remove the reimplementation from the global generators which are
now all functionally identical.
2014-03-15 09:30:24 +01:00
Stephen Kelly c481fadc07 cmGeneratorTarget: Don't store ObjectSources for object libraries.
Compute them on demand instead.
2014-03-15 09:29:44 +01:00
Kitware Robot 3c6943eb9d CMake Nightly Date Stamp 2014-03-15 00:01:11 -04:00
Clinton Stimpson ee8cef8725 Encoding: If configured, write Visual Studio project files as UTF-8. 2014-03-14 08:48:42 -06:00
Clinton Stimpson 91fd99b865 Encoding: Provide option to configure CMake to use UTF-8 encoding. 2014-03-14 08:48:18 -06:00
Brad King 3d89b36415 Merge topic 'ctest-intel-coverage'
3a7501d9 Help: Add release notes for topic 'ctest-intel-coverage'
9840320d CTest: Add support for Intel coverage files
2014-03-14 10:35:42 -04:00
Brad King dafa80ecc0 Merge topic 'cpack-deb-compression-types'
13778cd3 CPackDeb: Add option to set compression type
2014-03-14 09:30:29 -04:00
Brad King 67a0d5e4c4 Merge topic 'unicode-cmake-gui'
c34216cf cmake-gui: Fix compile with Qt5 using UTF-8 internal encoding.
2014-03-14 09:30:26 -04:00
Sean D'Epagnier 13778cd3be CPackDeb: Add option to set compression type
Add a CPACK_DEBIAN_COMPRESSION_TYPE option to set the compression type.
Default to 'gzip' to preserve existing behavior.  Use "cmake -E tar"
for 'gzip', 'bzip2', and 'none'.  Use system "tar" for 'lzma' and 'xz'.
2014-03-14 09:29:54 -04:00
Kitware Robot 9a026b902b CMake Nightly Date Stamp 2014-03-14 00:01:14 -04:00
Volkan Gezer 9840320dff CTest: Add support for Intel coverage files
By default, Intel compiler coverage tools generate HTML files as
reports, but the option -txtlcov can be given to codecov to output a
coverage file with LCov format.

To use Intel coverage:

* build the project with coverage flags
* run the application
* run profmerge
* run codecov

The output file will be "build_dir/CodeCoverage/SRCFILEDIR.LCOV".

Ask users to compile with -prof-dir${BUILD_DIR} instead of searching
the entire build tree recursively to find coverage files.
2014-03-13 16:18:10 -04:00
Stephen Kelly f6da044080 cmLocalGenerator: Add ComputeObjectFilenames interface.
Implement it in the local generators and use it in the global
generators.
2014-03-13 15:28:02 +01:00
Stephen Kelly 9ad804ac7b cmGeneratorTarget: Constify cmSourceFile* in containers.
Some of them will be used with other APIs which require value_type
to be cmSourceFile const*.
2014-03-13 15:27:23 +01:00
Stephen Kelly c725bb3cbd Constify some APIs in generators. 2014-03-13 15:27:23 +01:00
Stephen Kelly dcfcd23ed5 cmGeneratorTarget: Make GetSourceDepends const. 2014-03-13 15:27:23 +01:00
Stephen Kelly 04cf50ff62 cmOSXBundleGenerator: Make MacOSXContentGeneratorType arg const. 2014-03-13 15:27:23 +01:00
Stephen Kelly 6132d979d9 cmGeneratorTarget: Constify the AddExplicitObjectName API.
The storage is already const.
2014-03-13 15:27:23 +01:00
Stephen Kelly bc51221164 cmGeneratorTarget: Constify the AddObject API.
The storage is already const.
2014-03-13 15:27:23 +01:00
Stephen Kelly cd43433de5 cmGlobalGenerator: Extract a ComputeTargetObjectDirectory interface.
Make it public for future external calls.
2014-03-13 15:27:23 +01:00
Stephen Kelly d5b2e33be2 Makefiles: Compute local object files on demand.
Don't compute them up front.
2014-03-13 15:27:23 +01:00
Brad King 7477f01ebd Merge topic 'generalize-cmCustomCommandGenerator'
bc993f27 Generalize cmCustomCommandGenerator to more fields
9a5c5544 cmGlobalXCodeGenerator: Simplify handling of multiple outputs
d45e7f34 cmCustomCommand: Return std::string from GetWorkingDirectory
2014-03-13 09:36:10 -04:00
Brad King 5ef2bb4b86 Merge topic 'string-apis-fix-cmake-gui'
ae32622b cmake-gui: Fix handling of missing CMAKE_EXTRA_GENERATOR (#14804)
2014-03-13 09:36:08 -04:00
Brad King e1a671c7d8 Merge topic 'fix-CMP0046-warning'
d83245a3 cmTarget: Don't create duplicate backtraces in CMP0046 warning
2014-03-13 09:36:06 -04:00
Kitware Robot 4a6a59a120 CMake Nightly Date Stamp 2014-03-13 00:01:10 -04:00
Clinton Stimpson c34216cf8a cmake-gui: Fix compile with Qt5 using UTF-8 internal encoding.
Because we already call [to|from]Local8Bit() with C strings where we are supposed to,
we do not need to specify UTF-8 encoding when converting C strings to QString.
2014-03-12 20:48:46 -06:00
Stephen Kelly d83245a34f cmTarget: Don't create duplicate backtraces in CMP0046 warning 2014-03-12 18:01:26 +01:00
Brad King bc993f277e Generalize cmCustomCommandGenerator to more fields
Until now the cmCustomCommandGenerator was used only to compute the
command lines of a custom command.  Generalize it to get the comment,
working directory, dependencies, and outputs of custom commands.  Update
use in all generators to support this.
2014-03-12 10:44:01 -04:00
Brad King 9a5c554414 cmGlobalXCodeGenerator: Simplify handling of multiple outputs
Make the multiple output pair map more local.  Generate it where we
have the current configuration available.
2014-03-12 10:44:00 -04:00
Brad King d45e7f3461 cmCustomCommand: Return std::string from GetWorkingDirectory 2014-03-12 10:44:00 -04:00
Brad King cb8f87f622 Merge topic 'remove-c_str-calls'
3be265b3 Workaround Sun C++ 5.9 compiler crash
af8a1643 Remove c_str calls when using stream APIs.
21c573f6 Remove some c_str() calls.
2014-03-12 10:42:38 -04:00
Brad King 3be265b304 Workaround Sun C++ 5.9 compiler crash
Adjust whitespace in Source/CPack/cpack.cxx to avoid a strange
internal compiler crash.
2014-03-12 10:40:45 -04:00
Brad King 85ffb02919 Merge topic 'unicode-cmake-gui'
649789a7 Unicode: cmake-gui encoding now matches KWSys encoding.
2014-03-12 10:13:18 -04:00
Brad King ae32622bcf cmake-gui: Fix handling of missing CMAKE_EXTRA_GENERATOR (#14804)
Since commit 1a1b737c (stringapi: Use strings for generator names,
2014-02-24) cmExternalMakefileProjectGenerator::CreateFullGeneratorName
expects a std::string instead of const char*.  When no extra generator
name is available, pass an empty string to avoid NULL dereference.
2014-03-12 09:55:23 -04:00
Kitware Robot c4c6427ed6 CMake Nightly Date Stamp 2014-03-12 00:01:12 -04:00
Stephen Kelly af8a1643c1 Remove c_str calls when using stream APIs.
Use an ad-hoc clang tool for matching the calls which should be
ported.
2014-03-11 15:03:50 +01:00
Stephen Kelly 21c573f682 Remove some c_str() calls.
Use the clang RemoveCStrCalls tool to automatically migrate the
code. This was only run on linux, so does not have any positive or
negative effect on other platforms.
2014-03-11 15:03:50 +01:00
Brad King b801205dad Merge topic 'ctest-coverage-extra'
93d5c4dc Help: Add release notes for topic 'ctest-coverage-extra'
ef1c1153 CTest: Teach ctest_coverage() to read CTEST_COVERAGE_EXTRA_FLAGS
2014-03-11 09:18:28 -04:00
Brad King 1b809c09ff Merge topic 'watcom-VERBOSE-and-ERROR'
f1b689b6 Makefile: Improve handling of WMake verbose output and errors
2014-03-11 09:14:07 -04:00
Brad King 8559c326c4 Merge topic 'cmELF-typo'
172d8d94 cmELF: Fix typo in comment, 32-bit => 64-bit (#14799)
2014-03-11 09:14:05 -04:00
Brad King 312a6b7bde Merge topic 'ninja-command-line-length-haiku'
6c90f0a6 Ninja: Detect command-line length limit on Haiku
2014-03-11 09:14:03 -04:00
Brad King 510ceb19ed Merge topic 'fix-AUTOGEN-custom-command-depends'
112cba92 QtAutogen: Fix AUTOGEN depends on custom command output with VS.
2014-03-11 09:13:58 -04:00
Kitware Robot 64b93354dc CMake Nightly Date Stamp 2014-03-11 00:01:07 -04:00
Clinton Stimpson 649789a736 Unicode: cmake-gui encoding now matches KWSys encoding.
A UTF-8 QTextCodec is used with QString when KWSys is
configured to treat strings as UTF-8.
This means QString::toLocal8Bit() will convert to UTF-8.
2014-03-10 21:08:43 -06:00
Jiri Malak f1b689b64a Makefile: Improve handling of WMake verbose output and errors
* The '-e' option has nothing to do with verbose output.
  It is now properly handled by .ERASE directive in make file

* The '-s' option sets silent output globally, it cannot be switched off.
  It is now handled only by .SILENT directive in make file directive
  is simply controlled by a conditonal block.

Remove SilentNoColon member variable as it is no longer needed.
2014-03-10 11:15:12 -04:00
Ryo ONODERA 172d8d94f4 cmELF: Fix typo in comment, 32-bit => 64-bit (#14799) 2014-03-10 11:05:26 -04:00
Volkan Gezer ef1c1153d3 CTest: Teach ctest_coverage() to read CTEST_COVERAGE_EXTRA_FLAGS
Use it to set the CoverageExtraFlags value just as COVERAGE_EXTRA_FLAGS
does in the CTest module for creating DartConfiguration.tcl.
2014-03-10 09:54:27 -04:00
Adrien Destugues 6c90f0a693 Ninja: Detect command-line length limit on Haiku 2014-03-10 09:42:38 -04:00
Brad King ebaa5a6410 Merge branch 'fix-AUTOGEN-custom-command-depends' into release 2014-03-10 09:38:52 -04:00
Brad King 98e3831a67 Merge branch 'fix-policy-scopes' into release 2014-03-10 09:36:28 -04:00
Brad King 7b0efcded3 Merge topic 'fix-policy-scopes'
50fd0a33 Tests: Simplify and document policy scopes in RunCMake.CMP* tests
b1bbee3e Record more policies on targets when created
2014-03-10 09:33:25 -04:00
Stephen Kelly 112cba927a QtAutogen: Fix AUTOGEN depends on custom command output with VS.
Visual Studio is handled as a special case for autogen depends. However,
the special handling works only for target dependencies, not file
dependencies output by a custom command.

Use a PRE_BUILD step only if all depends are targets.
2014-03-10 13:01:29 +01:00
Kitware Robot 4d8260921f CMake Nightly Date Stamp 2014-03-10 00:01:06 -04:00
Brad King ad9f0d831e Merge topic 'dev/string-apis'
b633b263 CPackWiX: Fix test to build with expected config
191f25e2 stringapi: Prevent a NULL dereference in WiX
219d6ad6 speedup: Avoid excess iterator dereferences
caaad357 speedup: Cache strings for comparisons
7abf4e31 stringapi: Use strings for dependency information
94fc63e2 stringapi: Use strings for cache iterator values
85fc9f26 stringapi: Command names
6557382d stringapi: Use strings for program paths
1a1b737c stringapi: Use strings for generator names
24b5e93d stringapi: Use strings for directories
11ed3e2c stringapi: Add string overload for the Def struct
b3bf31a5 stringapi: Miscellaneous char* parameters
5af95c39 typo: Match argument name with the header
2b17626e stringapi: Pass strings as install directories in CPack
3def29da stringapi: Use strings for feature arguments
acb116e3 stringapi: Return a string reference for the configuration
...
2014-03-09 10:29:02 -04:00
Kitware Robot 6aad93f407 CMake Nightly Date Stamp 2014-03-09 00:01:06 -05:00
Ben Boeckel 191f25e2bd stringapi: Prevent a NULL dereference in WiX 2014-03-08 13:05:40 -05:00
Ben Boeckel 219d6ad610 speedup: Avoid excess iterator dereferences 2014-03-08 13:05:40 -05:00
Ben Boeckel caaad35759 speedup: Cache strings for comparisons 2014-03-08 13:05:39 -05:00
Ben Boeckel 7abf4e313d stringapi: Use strings for dependency information 2014-03-08 13:05:39 -05:00
Ben Boeckel 94fc63e2d5 stringapi: Use strings for cache iterator values 2014-03-08 13:05:39 -05:00
Ben Boeckel 85fc9f26a7 stringapi: Command names 2014-03-08 13:05:39 -05:00
Ben Boeckel 6557382dcf stringapi: Use strings for program paths 2014-03-08 13:05:38 -05:00
Ben Boeckel 1a1b737c99 stringapi: Use strings for generator names 2014-03-08 13:05:38 -05:00
Ben Boeckel 24b5e93de2 stringapi: Use strings for directories 2014-03-08 13:05:38 -05:00
Ben Boeckel 11ed3e2cfe stringapi: Add string overload for the Def struct 2014-03-08 13:05:38 -05:00
Ben Boeckel b3bf31a548 stringapi: Miscellaneous char* parameters 2014-03-08 13:05:37 -05:00