Commit Graph

27405 Commits

Author SHA1 Message Date
Stephen Kelly 8701a3f468 cmRemoveDuplicates: Partially specialize the API for pointer types.
If de-duplicating a container of pointers, there is no need to
store iterators to them, as that is just more 'pointer chasing'.

Store the pointers themselves and use API which compares the pointers
in the specialization.
2015-03-11 00:17:55 +01:00
Stephen Kelly eec7091d76 cmRemoveDuplicates: Type-parameterize all uniq-operations 2015-03-11 00:17:55 +01:00
Stephen Kelly 7cbafa8c65 cmRemoveDuplicates: Store unique iterators instead of values.
There is no need to copy all of the values in the container in
order to determine uniqueness.  Iterators can be stored instead
and can be used with standard algorithms with custom comparison
methods.

This also means that we use less space in case the value_type size
is greater than sizeof(iterator).  That is common for std::string
which may require up to 32 bytes (libstdc++ 5.0 and MSVC at least).
With libstdc++ 4.9 and older, std::string is 8 bytes, so we likely
don't gain anything here.

Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
2015-03-11 00:17:55 +01:00
Stephen Kelly 95dd238f5c cmRemoveDuplicates: Fix iterator -> const_iterator. 2015-03-11 00:17:30 +01:00
Stephen Kelly 4448f175c8 cmInstalledFile: Move Property implementation out of line.
Don't require re-building the world when changing cmAlgorithms.h.
2015-03-11 00:17:29 +01:00
Stephen Kelly 7916d7bac6 Include cmAlgorithms where it is used. 2015-03-11 00:17:29 +01:00
Stephen Kelly ec428fafcf Genex: Extend cmGeneratorExpressionContext constructor.
Initialize the members in the appropriate place.
2015-03-11 00:12:56 +01:00
Stephen Kelly 082b6a9d78 Genex: Split cmGeneratorExpressionContext into own file. 2015-03-11 00:12:56 +01:00
Stephen Kelly 9df1f0fce1 Genex: Split cmGeneratorExpressionNode into own file. 2015-03-11 00:12:56 +01:00
Stephen Kelly 3ff95f3b0b cmAlgorithms: Add early return in cmRemoveIndices.
Avoid derefencing the iterator and segfaulting if the range
is empty.
2015-03-10 21:20:58 +01:00
Stephen Kelly 80b9f0cbe2 Genex: Extract an evaluateWithContext method.
Make it easier to make modifications to the context before
evaluating with it.
2015-03-10 21:19:38 +01:00
Stephen Kelly 642048ce35 Help: Move docs of $<0:...> and $<1:...> to output section.
These are not 'logical' expressions.  They create output and are
often used together with the logical expressions.
2015-03-10 21:19:38 +01:00
Brad King 77534e84b2 Add options to build CMake without any language dialects
If CMake_NO_<LANG>_STANDARD is set, do not set CMAKE_<LANG>_STANDARD.
This will allow users to build with their own -std= flags without
CMake adding any itself.
2015-03-10 14:49:40 -04:00
Brad King 1a8e4c8692 Merge branch 'release' 2015-03-10 14:26:47 -04:00
Brad King 732d8a467a CMake 3.2.1 2015-03-10 09:15:35 -04:00
Brad King c4ffc1b8c7 Merge branch 'release' 2015-03-10 09:13:48 -04:00
Brad King ad6fbb88bb Merge topic 'target-language-genex'
232a6883 Help: Add release notes for target-language-genex.
9e168941 File(GENERATE): Process genex evaluation files for each language.
b734fa44 Genex: Allow COMPILE_LANGUAGE when processing include directories.
0b945ea9 Genex: Allow COMPILE_LANGUAGE when processing compile definitions.
5c559f11 Genex: Enable use of COMPILE_LANGUAGE for compile options.
e387ce7d Genex: Add a COMPILE_LANGUAGE generator expression.
4a0128f4 VS6: Compute CMAKE_*_FLAGS and COMPILE_DEFINITIONS* only when needed
2015-03-10 09:12:34 -04:00
Brad King cce9671b4f Merge topic 'ExternalProject-byproducts-tokens'
86032ae0 ExternalProject: Replace placeholder tokens in BYPRODUCTS
2015-03-10 09:12:32 -04:00
Brad King 976c3ccc6a Merge topic 'UseSWIG-fix-CMP0054-warnings'
458c9e95 UseSWIG: Avoid if() auto-dereferene in quoted arguments
2015-03-10 09:12:30 -04:00
Brad King 01fadeb205 Merge topic 'ninja-check-root-robustly'
a6b09085 Ninja: Improve internal check for generating at the top-level (#15436)
2015-03-10 09:12:27 -04:00
Brad King fa4617b7ea Merge topic 'configure_file-NEWLINE_STYLE-no-warn'
024e25e4 Tests: Add more signature tests to RunCMake.configure_file test
3ef776fc configure_file: Do not warn about newline style arguments
2015-03-10 09:12:24 -04:00
Stephen Kelly 232a6883a1 Help: Add release notes for target-language-genex. 2015-03-10 09:10:47 -04:00
Brad King 94887cb6f1 cmake: Teach --build to get VCExpress output (#15437)
VCExpress does not produce output if its pipes are connected to
an interactive terminal.  Add a special case to 'cmake --build'
to capture the output through a pipe and re-print it instead of
sharing output pipes with VCExpress.
2015-03-10 08:42:18 -04:00
Oyvind Jensen 18d5a4bcfd VS: Add more Fortran compiler flags to flag table (#15381)
Due to a difference in how AdditionalOptions are implemented in the
Fortran component of VS and the C/C++ component, flags that are not
listed in the flag table are at risk of being overwritten.
2015-03-10 08:40:37 -04:00
Kitware Robot a5505c4c53 CMake Nightly Date Stamp 2015-03-10 00:01:19 -04:00
Brad King 0fe4cce22f Merge branch 'UseSWIG-fix-CMP0054-warnings' into release 2015-03-09 16:38:49 -04:00
Brad King 458c9e95de UseSWIG: Avoid if() auto-dereferene in quoted arguments
Protect against variables named "CSHARP", "PERL", "PYTHON", or "UNKNOWN"
when CMP0054 is not set to NEW.

Reported-by: Tuukka Pasanen <tuukka@iocaste.ilmi.fi>
2015-03-09 16:35:08 -04:00
Stephen Kelly 9e1689413f File(GENERATE): Process genex evaluation files for each language. 2015-03-09 20:49:17 +01:00
Stephen Kelly b734fa4471 Genex: Allow COMPILE_LANGUAGE when processing include directories.
Issue an error if this is encountered by an IDE generator.
2015-03-09 20:49:17 +01:00
Stephen Kelly 0b945ea9a6 Genex: Allow COMPILE_LANGUAGE when processing compile definitions.
Issue an error if this is encountered by an IDE generator.
2015-03-09 20:49:16 +01:00
Stephen Kelly 5c559f1113 Genex: Enable use of COMPILE_LANGUAGE for compile options.
Follow-ups will allow the use of the generator expression
for compile definitions and include directories for non-IDE
generators.
2015-03-09 20:48:57 +01:00
Brad King 244e3d0fc9 Merge branch 'ninja-check-root-robustly' into release 2015-03-09 13:37:15 -04:00
Brad King a6b0908571 Ninja: Improve internal check for generating at the top-level (#15436)
Simply check for whether the local generator has a parent instead of
depending on a string comparison of directory names.
2015-03-09 13:36:46 -04:00
Gaëtan Lehmann 86032ae0eb ExternalProject: Replace placeholder tokens in BYPRODUCTS
This allows the developer to specify the byproducts relative to the
binary directory without the need to set the binary directory location
explicitly.
2015-03-09 10:04:44 -04:00
Brad King a6d488f2ce Merge topic 'cbp-unit-targets'
099b0cab CodeBlocks: Declare which source file belongs to which targets.
2015-03-09 09:45:59 -04:00
Brad King 6f28bc6b51 Merge topic 'fix-wixobj-filenames'
2e16aff1 CPackWIX: Fix .wixobj output locations and filenames.
b0852ebc CPackWIX: Support patching of root <Feature> elements.
2015-03-09 09:45:57 -04:00
Brad King 3f66bde4f7 Merge topic 'update-kwsys'
44ef4700 Merge branch 'upstream-kwsys' into update-kwsys
aa84d26e KWSys 2015-03-03 (4890f30c)
2015-03-09 09:45:54 -04:00
Brad King 387466dd95 Merge topic 'custom-command-multiple-outputs'
66a9c90c Makefile: Fix multiple custom command outputs regression (#15116)
2015-03-09 09:45:51 -04:00
Brad King 77f3804ab2 Merge branch 'configure_file-NEWLINE_STYLE-no-warn' into release 2015-03-09 09:20:58 -04:00
Brad King 024e25e485 Tests: Add more signature tests to RunCMake.configure_file test
Move the test cases from Tests/CMakeTests/ConfigureFileTest.cmake.in
over to use the RunCMake.configure_file infrastructure.  This does much
more robust verification of CMake output for each test case, and would
have caught the regression fixed in our parent commit.
2015-03-09 09:17:59 -04:00
Brad King 3ef776fc38 configure_file: Do not warn about newline style arguments
The unknown argument warning added by commit v3.2.0-rc1~452^2
(configure_file: Warn about unknown arguments, 2014-10-31) failed to
account for options handled by the NewLineStyle member instead of
directly in the main loop.  Simply whitelist them for now.
2015-03-09 09:17:59 -04:00
Nils Gladitz 242c396656 add_custom_command: Diagnose MAIN_DEPENDENCY limitation.
The new policy CMP0057 diagnoses reuse of the same MAIN_DEPENDENCY across
multiple custom commands.
2015-03-09 12:45:38 +01:00
Kitware Robot bdb00b3613 CMake Nightly Date Stamp 2015-03-09 00:01:09 -04:00
Kitware Robot 42f0cb0c10 CMake Nightly Date Stamp 2015-03-08 00:01:09 -05:00
Stephen Kelly e387ce7d68 Genex: Add a COMPILE_LANGUAGE generator expression. 2015-03-07 13:19:45 +01:00
Brad King 4a0128f42f VS6: Compute CMAKE_*_FLAGS and COMPILE_DEFINITIONS* only when needed
These placeholders are used only in the .dsp templates for targets
that actually compile sources.
2015-03-07 13:19:40 +01:00
Kitware Robot 90a051f443 CMake Nightly Date Stamp 2015-03-07 00:01:10 -05:00
Brad King cc1ee21383 Merge branch 'custom-command-multiple-outputs' into release 2015-03-06 20:00:42 -05:00
Brad King 66a9c90c4b Makefile: Fix multiple custom command outputs regression (#15116)
In commit v3.2.0-rc1~272^2~2 (Makefile: Fix rebuild with multiple custom
command outputs, 2014-12-05) we changed the generated makefile pattern
for multiple outputs from

  out1: depends...
          commands...
  out2: out1

to

  out1 out2: depends...
          commands...

This was based on the incorrect assumption that make tools would treat
this as a combined output rule and run the command(s) exactly once for
them.  It turns out that instead this new pattern is equivalent to

  out1: depends...
          commands...
  out2: depends...
          commands...

so the commands may be run more than once.

Some documents suggest using a "dedicated witness" stamp file:

  stamp: depends...
          rm -f stamp
          touch stamp.tmp
          commands...
          mv stamp.tmp stamp
  out1 out2: stamp

However, if the commands fail the error message will refer to the stamp
instead of any of the real outputs, which may be confusing to readers.
Also, this approach seems to have the same behavior of the original
approach that motiviated the above commit: multiple invocations are
needed to bring consumers of the outputs up to date.

Instead we can return to the original approach but add an explicit
touch to each extra output rule:

  out1: depends...
          commands...
  out2: out1
          touch -c out2

This causes make tools to recognize that all outputs have changed and
therefore to execute any commands that consume them.
2015-03-06 19:58:30 -05:00
Nils Gladitz 2e16aff1e2 CPackWIX: Fix .wixobj output locations and filenames.
Preserve all but the last extension when generating .wixobj output
filenames from source files and make sure they are unique.

Output .wixobj files in cpack staging area instead
of the current working directory.
2015-03-06 21:09:19 +01:00