Commit Graph

15847 Commits

Author SHA1 Message Date
Brad King b4aac0caca Makefile: Fix per-config linker PDB output directory
Also, now that all call sites of cmTarget::GetPDBName and
cmTarget::GetPDBDirectory pass the configuration, make the
argument non-optional.
2014-02-24 13:44:24 -05:00
Stephen Kelly f9d5b1fd0f Handle Mac OSX source flags for individual files lazily.
The actual list of files will become config dependent in a follow-up
commit.
2014-02-24 16:45:25 +01:00
Stephen Kelly 64d398416a cmGeneratorTarget: Classify sources on demand, not up front.
Implement a Visitor to hold the sequence of source file tests
for populating outputs.  Use VS 6 and 7 workaround from Brad
King for lack of partial template specialization and function
template specialization capabilities.

This will make it possible to use context dependent generator
expressions to determine the sources of a target.
2014-02-24 16:44:51 +01:00
Stephen Kelly d3682d8647 cmGeneratorTarget: Use a method to access the definition file. 2014-02-24 16:43:25 +01:00
Stephen Kelly 5771f81d91 cmTarget: Add GetTransitiveTargetClosure method.
Replace calls to GetLinkInformation with calls to a method to get only
the target closure, not the link languages etc.  The replaced calls
are used while evaluating generator expressions only.  This makes
transitive generator expression evaluation independent from
the languages of a target.  In a follow-up topic, it will be possible
to make the languages depend on generator expression evaluation, via
evaluation of the SOURCES and INTERFACE_SOURCES target properties.

Because the order of entries is not the same as the final link line,
the order of debug output is different in the RunCMake.CompatibleInterface
test, because the BOOL_PROP7 target property is evaluated first. Adjust
the test to account for that new order.
2014-02-24 16:43:24 +01:00
Stephen Kelly a6dd4990db cmTarget: Create a temporary cmTarget in checkInterfacePropertyCompatibility
This simplifies further refactoring.
2014-02-24 16:43:24 +01:00
Stephen Kelly b8b99cc1e5 cmTarget: Avoid computing languages when computing transitive targets.
For the OLD CMP0022 behavior, we need to treat the implementation
as the interface when computing the interface libraries.  Make it
possible to do that without computing the link languages by adding
a new GetLinkImplementationLibraries method.  Extend the existing
GetLinkImplementation method to populate the languages if the
libraries have already been computed and cached.

Change GetTransitivePropertyTargets to invoke GetLinkInterfaceLibraries
instead of GetLinkInterface.  This is key, as it is a method called
by cmGeneratorExpressionEvaluator.

Change the cmGeneratorExpressionEvaluator to invoke
GetLinkImplementationLibraries instead of GetLinkImplementation.
2014-02-24 16:43:24 +01:00
Stephen Kelly 01bca553b8 cmTarget: Move ComputeLinkInterface to the internal class.
In a follow-up, this will use the OptionalLinkInterface in its
API. That class is in the cmTargetInternals class.
2014-02-24 16:43:24 +01:00
Stephen Kelly d93e1af292 cmTarget: Extract a ComputeLinkInterfaceLibraries method.
When evaluating the SOURCES property, we will need to be able to access
the link libraries without accessing the link languages, as the languages
depend on the SOURCES.
2014-02-24 16:43:24 +01:00
Stephen Kelly 3bcb197c11 cmTarget: Re-arrange the ComputeLinkInterface method.
Arrange the logic so that the part which deals with libraries only is
at the top.  In a follow-up commit, this will be split into two methods.

Ensure that the explanatory CMP0022 comment is only present in one
location.
2014-02-24 16:43:24 +01:00
Stephen Kelly 326d07d27e cmTarget: Extract a ComputeLinkImplementationLanguages method. 2014-02-24 16:43:23 +01:00
Stephen Kelly 21e91350b0 cmTarget: Change GetTransitivePropertyLinkLibraries to output targets.
The callers already skip non-targets, so unify the target search.

Change supporting functions to accept a container of targets instead
of strings where possible.
2014-02-24 16:43:23 +01:00
Stephen Kelly f81eb49e8b cmTarget: Find source files on request.
In a follow-up, the list of sources will become dependent on
the config, so check for existence in cmTarget::GetSourceFiles
instead of up-front with cmGlobalGenerator::CheckTargets().
2014-02-24 16:43:23 +01:00
Stephen Kelly 84e5f5a004 cmTarget: Move SourceFileFlags to cmGeneratorTarget. 2014-02-24 16:43:23 +01:00
Brad King cf42f93d07 Merge topic 'install-FILES-genex'
6e89c8a5 install: Support generator expressions in FILES and PROGRAMS mode
f11f7b34 cmInstallFilesGenerator: Add reference to calling cmMakefile
e190236c Help: Format install() command documentation
2014-02-24 10:40:04 -05:00
Brad King b686154b61 Merge branch 'install-FILES-genex' into release 2014-02-24 09:16:36 -05:00
Kitware Robot 2f2bb105d5 CMake Nightly Date Stamp 2014-02-24 00:01:04 -05:00
Kitware Robot 01981d8e45 CMake Nightly Date Stamp 2014-02-23 00:01:05 -05:00
Kitware Robot 4e647cf6b5 CMake Nightly Date Stamp 2014-02-22 00:01:06 -05:00
Brad King 6e89c8a5f1 install: Support generator expressions in FILES and PROGRAMS mode
Teach the install(FILES) and install(PROGRAMS) commands to evaluate
generator expressions in the list of files.

Extend the ExportImport test to cover installation cases involving
generator expressions.
2014-02-21 17:05:26 -05:00
Brad King f11f7b34a8 cmInstallFilesGenerator: Add reference to calling cmMakefile
Add a Makefile member to the cmInstallFilesGenerator class and
populate it on construction.  This will be useful in a following
change to evaluate generator expressions with proper context.
2014-02-21 17:05:26 -05:00
Ben Boeckel 7c565d2fd5 cmGeneratorExpression: Improve parsing in StripEmptyListElements
The char-by-char parsing causes lots of reallocations which shouldn't be
necessary. To improve this, fast-path strings without a semicolon,
reserve space in the result, and insert into the result in chunks.
2014-02-21 16:56:06 -05:00
Ben Boeckel 68eb175744 cmGeneratorExpressionLexer: Use a switch statement to parse
Optimize cmGeneratorExpressionLexer::Tokenize to use a switch statement.
The many dereferences of the input pointer were expensive. Also remove
excess pointer arithmetic.
2014-02-21 16:56:06 -05:00
Ben Boeckel 67253133f8 ExpandListArguments: Optimize the parser
Optimize cmSystemTools::ExpandListArguments so as not to build a string
character-by-character. This avoids excess reallocations of the result
string.
2014-02-21 16:56:06 -05:00
Kitware Robot c0bbefbfe7 CMake Nightly Date Stamp 2014-02-21 00:01:11 -05:00
Kitware Robot 44e784342d CMake Nightly Date Stamp 2014-02-20 00:01:10 -05:00
Brad King 28dcccface Begin post-3.0 development 2014-02-19 09:30:37 -05:00
Brad King 7cbab17871 Change version scheme to use only two components for feature levels
Historically CMake used three version components for the feature level.
We released new features while incrementing only the third version
component.  Since commit v2.8.2~105^2~4 (New version scheme to support
branchy workflow, 2010-04-23) we used the fourth version component for
bug-fix releases and the development date:

 <major>.<minor>.<patch>[.<tweak>][-rc<n>] = Release
 <major>.<minor>.<patch>.<date>[-<id>]     = Development

This solidified use of three components for the feature level, and was
necessary to continue releasing 2.x versions because:

* Some existing projects performed floating-point comparisons of
  ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} to 2.x numbers
  so ``x`` could never be higher than 9.

* Version 2.9.<date> was used briefly in post-2.8.0 development in
  CVS prior to the transition to Git, so using it in releases may
  have caused confusion.

Now that we are moving to 3.x versions, these two restrictions go away.
Therefore we now change to use only two components for the feature
level and use the scheme:

 <major>.<minor>.<patch>[-rc<n>] = Release
 <major>.<minor>.<date>[-<id>]   = Development
2014-02-19 09:30:13 -05:00
Brad King 4bb80396e0 CMake 3.0.0-rc1 version update 2014-02-19 09:30:12 -05:00
Brad King e7d3287590 Merge topic 'minor-cleanups'
f6cae4ea Tests: Remove some trailing black lines.
c0ea4c5c Makefile: Fix comment indentation.
5e0c73c7 cmGlobalGenerator: Remove unused variable.
907c09cd include_directory: Add missing include.
a74d125a Help: Fix typo
317d8498 Small typo fix
2014-02-19 08:34:20 -05:00
Kitware Robot 0b3a792bef CMake Nightly Date Stamp 2014-02-19 00:01:07 -05:00
Kitware Robot 586d2ce8a7 CMake Nightly Date Stamp 2014-02-18 00:01:06 -05:00
Brad King b486c6d49a Merge topic 'windows-filesystem-retry-config'
7b1f966a Windows: Make file delete/rename retry configurable
2014-02-17 10:03:11 -05:00
Brad King 10623032c7 Merge topic 'INTERFACE-no-sources'
9db9c1fc cmTarget: Don't try to get sources of an INTERFACE_LIBRARY.
2014-02-17 09:59:49 -05:00
Brad King 65c74eb98f Merge topic 'KateHandleSpacesInPath'
22e5c6c2 Kate: handle spaces in build dir
2014-02-17 09:59:45 -05:00
Alex Neundorf 22e5c6c26b Kate: handle spaces in build dir
They need to be escaped in the json file... I'm quite
sure I tested this before, obviously I didn't test it
correctly.

Alex
2014-02-17 09:54:03 -05:00
Stephen Kelly c0ea4c5c6f Makefile: Fix comment indentation. 2014-02-17 11:14:18 +01:00
Stephen Kelly 5e0c73c78c cmGlobalGenerator: Remove unused variable. 2014-02-17 11:13:44 +01:00
Stephen Kelly 907c09cd31 include_directory: Add missing include.
The cmGeneratorExpression is used here, but the header for it is not
in the include heirarchy.  This would be a compile error if the file
were compiled as a standalone translation unit, but it is instead
used in a mini-unity-build by inclusion in cmCommands.cxx. The header
for cmGeneratorExpression happens to be included first, so the
compilation works fine.

IDEs do not know this however, and flag the use as an error.
2014-02-17 11:08:58 +01:00
Kevin Funk 317d8498aa Small typo fix 2014-02-17 11:07:41 +01:00
Kitware Robot b1d34182b8 CMake Nightly Date Stamp 2014-02-17 00:01:07 -05:00
Kitware Robot 0c958c44af CMake Nightly Date Stamp 2014-02-16 00:01:05 -05:00
Kitware Robot 66bf178346 CMake Nightly Date Stamp 2014-02-15 00:01:11 -05:00
Stephen Kelly 9db9c1fc8b cmTarget: Don't try to get sources of an INTERFACE_LIBRARY.
An an assert to ensure this.
2014-02-14 13:53:14 +01:00
Kitware Robot 945a66a543 CMake Nightly Date Stamp 2014-02-14 00:01:05 -05:00
Brad King 79bb8cfcf3 Merge topic 'dev/ninja-speedup'
26762e16 Ninja: Cache target-level flags
2014-02-13 10:28:32 -05:00
Brad King aa23381253 Merge topic 'osx-sysroot-escape'
77b2e6f1 OS X: Escape path given to -isysroot flag
2014-02-13 10:28:29 -05:00
Ben Boeckel 26762e1681 Ninja: Cache target-level flags
Instead of figuring out target flags per-source file, cache the flags
that are being used. This results in a *much* faster generate time for
Ninja.
2014-02-13 10:20:56 -05:00
Kitware Robot c56854aa0e CMake Nightly Date Stamp 2014-02-13 00:01:07 -05:00
Brad King 54d9e01487 Merge topic 'backward-compatibility'
f2eee72f add_custom_command: Disallow use of SOURCE signatures.
c248a437 Add policy CMP0049 to avoid variable expansion in source lists
2014-02-12 11:31:30 -05:00
Brad King 764d467d24 Merge topic 'dev/fix-sublime-compile-flags'
2d9f93ab Sublime: Pass language and config properly
2014-02-12 11:31:28 -05:00
Brad King 0d177cf383 Merge topic 'cmake-devel-version-macro'
6ca6613a Export: Use the CMAKE_DEVEL_VERSION macro for build-export files.
2014-02-12 11:31:26 -05:00
Stephen Kelly f2eee72fac add_custom_command: Disallow use of SOURCE signatures.
Add CMP0050 to control this behavior.
2014-02-12 11:19:27 -05:00
Stephen Kelly c248a437c4 Add policy CMP0049 to avoid variable expansion in source lists 2014-02-12 11:17:38 -05:00
Brad King 77b2e6f1d8 OS X: Escape path given to -isysroot flag
Ensure that paths containing spaces or other special characters are
escaped correctly on the command line.
2014-02-12 10:49:10 -05:00
Brad King 7b1f966a6c Windows: Make file delete/rename retry configurable
Several CMake operations need to replace files in rapid succession.
This commonly fails on Windows due to filesystem lock behavior so
we have retry loops.  No matter how many times we retry or how long
we delay there will inevitably be someone with an environment that
needs more.  Make the retry count and delay configurable in the
Windows Registry keys:

 {HKCU,HKLM}/Software/Kitware/CMake/Config

in DWORD values

 FilesystemRetryCount = Number of tries
 FilesystemRetryDelay = Delay in milliseconds between tries

Leave the feature undocumented for now to see how it goes.
2014-02-12 09:55:41 -05:00
Kitware Robot 5104f55d3f CMake Nightly Date Stamp 2014-02-12 00:01:06 -05:00
Ben Boeckel 2d9f93ab24 Sublime: Pass language and config properly 2014-02-11 14:41:43 -05:00
Stephen Kelly 6ca6613ab8 Export: Use the CMAKE_DEVEL_VERSION macro for build-export files.
Move the macro definition to the cmExportBuildFileGenerator.h header
to share it.
2014-02-11 16:31:53 +01:00
Brad King 418a155be7 Merge topic 'cmake-devel-version-macro'
9bcc1b21 Export: Fix internal CMake version test logic
d2059d25 cmVersion: Fix CMake_VERSION_ENCODE for date in patch level
28805109 cmStandardIncludes: Include cmIML/INT.h for portable integer types
2014-02-11 09:16:09 -05:00
Brad King cef89d4a1c Merge topic 'backward-compatibility'
37e1894d cmTarget: Remove TODO comment.
2014-02-11 09:16:06 -05:00
Brad King e44bbec013 Merge topic 'eclipse-hotfix'
311c0b98 Eclipse: Skip generator expressions in COMPILE_DEFINITIONS (#14722)
2014-02-11 09:16:04 -05:00
Brad King a12dd791dd Merge topic 'graphviz-one-file'
18bef4cd graphviz: allow to disable per target graphs (#14746)
2014-02-11 09:16:02 -05:00
Stephen Kelly 37e1894d32 cmTarget: Remove TODO comment.
The current behavior is desirable because while it is common to
set a per-config suffix on libraries, it is not common for exexutables.
2014-02-11 11:05:01 +01:00
Kitware Robot ab6231f37c CMake Nightly Date Stamp 2014-02-11 00:01:05 -05:00
Brad King 9bcc1b21f0 Export: Fix internal CMake version test logic
Fix the internal DEVEL_CMAKE_VERSION macro to use CMake_VERSION_ENCODE
to compare version component-wise.  Otherwise an old invocation of the
macro may be tricked into using the current version when the requested
major version is smaller than the current version but the requested
minor version is larger.  It should use the requested (old) version in
that case.
2014-02-10 15:32:33 -05:00
Brad King d2059d2511 cmVersion: Fix CMake_VERSION_ENCODE for date in patch level
Use a uint64_t to store encoded version numbers so we have plenty of
bits available.  Encode with room for up to 1000 minor releases between
major releases and to encode dates until the year 10000 in the patch
level.  This is necessary because CMake development versions prior to
release 2.8.0 used the date in the patch level, and this practice may be
restored after the 3.0 release.
2014-02-10 15:32:32 -05:00
Brad King 28805109bc cmStandardIncludes: Include cmIML/INT.h for portable integer types
Also teach the bootstrap script to configure the needed headers.
2014-02-10 15:31:40 -05:00
Brad King d7133c0288 Merge topic 'cmake-devel-version-macro'
eaf703f1 Export: Use a macro to ensure minimum development version requirement
2014-02-10 11:25:08 -05:00
Brad King 7b38931a08 Merge topic 'generate-cmCommands-file'
23d3d38a CMakeLists: Generate the cmCommands.cxx file.
2014-02-10 11:25:04 -05:00
Brad King cdcf23bde2 Merge topic 'fix-CMP0028-iface'
b2915238 CMP0028: Trigger on libraries from INTERFACE of dependencies.
2014-02-10 11:25:02 -05:00
Brad King 27d3974c66 Merge topic 'wix_desktop'
b78d74de CPackWiX: Add support for CPACK_CREATE_DESKTOP_LINKS
2014-02-10 11:24:56 -05:00
Brad King 6e149e1591 Merge topic 'interface-library-signatures'
6d85a6a6 add_library: Issue better diagnostic for INTERFACE GLOBAL signature.
770245e9 add_library: Test invalid GLOBAL INTERFACE signature.
2014-02-10 11:24:54 -05:00
Daniel Pfeifer 18bef4cd66 graphviz: allow to disable per target graphs (#14746)
In CMakeGraphVizOptions.cmake, allow the options GRAPHVIZ_GENERATE_PER_TARGET
and GRAPHVIZ_GENERATE_DEPENDERS to enable the generation of per target graphs
and subgraphs respectively. Both options are TRUE per default to maintain
current behavior.
2014-02-10 10:30:50 -05:00
Kitware Robot c1166395b0 CMake Nightly Date Stamp 2014-02-10 00:01:06 -05:00
Stephen Kelly 311c0b9897 Eclipse: Skip generator expressions in COMPILE_DEFINITIONS (#14722)
This is a hot-fix for the bug. It seems like a good idea to generally
reform the generator to care about targets instead of directories,
but this patch at least makes the reported error go away.
2014-02-09 23:44:21 +01:00
Stephen Kelly eaf703f160 Export: Use a macro to ensure minimum development version requirement
Use the version number of the specified release, or of the current
development version if the release is not yet made.
2014-02-09 22:30:30 +01:00
Stephen Kelly 23d3d38a31 CMakeLists: Generate the cmCommands.cxx file.
Define the list of commands in the CMakeLists.txt file. List the
sources in the CMakeLib target, but mark them as HEADER_FILE_ONLY.
This has the effect that IDEs will show the files, though they
will not be built again.

Add a cmCommandsForBootstrap.cxx file for bootstrapping purposes.

Rename the cmExportLibraryDependencies file to match the common
pattern.
2014-02-09 22:02:37 +01:00
Stephen Kelly b29152387d CMP0028: Trigger on libraries from INTERFACE of dependencies. 2014-02-09 15:35:28 +01:00
Kitware Robot 1cc3e9f2e7 CMake Nightly Date Stamp 2014-02-09 00:01:05 -05:00
Timo Rothenpieler b78d74de64 CPackWiX: Add support for CPACK_CREATE_DESKTOP_LINKS 2014-02-08 19:19:33 +01:00
Kitware Robot d582809497 CMake Nightly Date Stamp 2014-02-08 00:01:06 -05:00
Stephen Kelly 6d85a6a64c add_library: Issue better diagnostic for INTERFACE GLOBAL signature. 2014-02-07 15:49:15 +01:00
Kitware Robot 53cffda228 CMake Nightly Date Stamp 2014-02-07 00:01:05 -05:00
Brad King d5c54d0069 Merge topic 'fix-Qt-autogen'
8f8edeb0 QtAutogen: Only add source files to the target if AUTORCC is ON.
2014-02-06 11:10:18 -05:00
Kitware Robot 5f7d7bdd67 CMake Nightly Date Stamp 2014-02-06 00:01:06 -05:00
Brad King 4e4104c4dd Merge topic 'no-policy-tweak-version'
101057b5 Drop tweak version component from CMake Policies
2014-02-05 09:34:34 -05:00
Brad King 43a78f5b29 Merge topic 'FeatureSummary-no-transitive'
a6971f65 FeatureSummary: Don't list transitive package dependencies
2014-02-05 09:34:23 -05:00
Stephen Kelly 8f8edeb09b QtAutogen: Only add source files to the target if AUTORCC is ON.
The qtx_add_resources() macro adds the resource file to the output list
to maintain file-level dependencies.  Having the qrc file in a target
sources is a precondition for AUTORCC to function.

When processing the source files of a target, only add the generated
qrc_<file>.cpp to the target sources if AUTORCC is ON.  This avoids
pre-porting conflict with the macro.

Reported-by: Micha Hergarden
2014-02-05 10:13:39 +01:00
Kitware Robot 2233ddf5ae CMake Nightly Date Stamp 2014-02-05 00:01:06 -05:00
Brad King 101057b500 Drop tweak version component from CMake Policies
Since commit v2.8.2~105^2~2 (Teach CMake Policies about tweak version
component, 2010-04-23), cmPolicies has known how to handle a policy
introduced in a tweak version.  This was done back when we introduced
policies with the current development date version and later updated it
to the release version.  Now we always introduce policies using the next
expected release version and explicitly set the policy to test the NEW
behavior.

CMake Policies (or any other features) should never be introduced in a
tweak (bugfix) release, so drop the infrastructure that allows this.
2014-02-04 16:14:26 -05:00
Brad King f748b59e20 Merge topic 'fix-Qt-autogen'
6053ce22 QtAutogen: Make uic work even when the source is in a subdir.
1fc9ecfa FindQt4: Make AUTOMOC work regardless which order Qt 4/5 is found.
2014-02-04 13:34:54 -05:00
Brad King 01a41bc98c Merge topic 'osx-rpath-unique'
028a5285 OS X: Make sure RPATHs are unique to avoid possible corruption.
2014-02-04 13:34:52 -05:00
Stephen Kelly 6053ce22f6 QtAutogen: Make uic work even when the source is in a subdir.
Modify the includedUis to store the path to the file which includes
the ui file. Reuse that path to generate the output file from the
uic process.
2014-02-04 13:21:43 -05:00
Kitware Robot 5414b0e919 CMake Nightly Date Stamp 2014-02-04 00:01:05 -05:00
Stephen Kelly a6971f6510 FeatureSummary: Don't list transitive package dependencies
Set a global property in the find_package implementation.  Track and
reset that property in the find_dependency macro.  Read the property
in FeatureSummary when determining whether to print output.

This means that packages which are found only as dependencies are not
listed by FeatureSummary, but if a project uses find_package elsewhere
directly, then it will be listed by FeatureSummary.

Suggested-by: Alex Merry

 http://thread.gmane.org/gmane.comp.kde.devel.frameworks/10640
2014-02-03 20:20:42 +01:00
Brad King e863496aca Merge topic 'minor-cleanups'
dcd443d4 cmTarget: Clean up the InsertCompileDefinition implementation.
2014-02-03 11:11:16 -05:00
Brad King 6e43138c3f Merge topic 'constify'
f054201d cmMakefile: Return containers by const reference.
d1ac6ffd cmMakefile: Fix minor indentation inconsistency.
2014-02-03 11:11:13 -05:00
Brad King cdadec9f24 Merge topic 'fix-visibility-inlines-hidden'
efdcebdd VisibilityInlinesHidden: only apply -fvisibility-inlines-hidden to C++ sources
2014-02-03 11:11:11 -05:00
Brad King 7ab204509e Merge topic 'codelite-generator-multi-jobs-bug-fix'
75c05113 CodeLite: Use make -jN switch when generating Unix/MinGW makefiles
2014-02-03 11:11:09 -05:00
Brad King a7f5a6ee12 Merge topic 'project-version-variables'
41d2f2c4 write_basic_package_version_file: use PROJECT_VERSION
7e142c5a project: Manage VERSION variables
16d040c9 project: Add optional LANGUAGES keyword
00007dcc Help: Format project command and variable documentation
2014-02-03 11:10:58 -05:00
Eran Ifrah 75c051139a CodeLite: Use make -jN switch when generating Unix/MinGW makefiles 2014-02-03 10:56:48 -05:00
Clinton Stimpson 028a5285d8 OS X: Make sure RPATHs are unique to avoid possible corruption.
When using link_directories() and including CMAKE_CFG_INTDIR,
one can end up with duplicate RPATHs in the binary which
install_name_tool cannot fix without corrupting the binary.
Also, the cmake_install.cmake file has been fixed to correctly
handle these generator specific variables.
2014-02-03 07:04:54 -07:00
Kitware Robot ee8e63d0c4 CMake Nightly Date Stamp 2014-02-03 00:01:05 -05:00
Stephen Kelly dcd443d4aa cmTarget: Clean up the InsertCompileDefinition implementation.
It accepts a before parameter but is never called with before=true.

compile definitions are sorted by std::set, so it wouldn't make sense
to allow user sorting.
2014-02-02 22:15:07 +01:00
Stephen Kelly f054201d12 cmMakefile: Return containers by const reference.
They are not implicitly shared.
2014-02-02 10:52:35 +01:00
Stephen Kelly d1ac6ffd4a cmMakefile: Fix minor indentation inconsistency. 2014-02-02 10:49:33 +01:00
Kitware Robot cd711ed052 CMake Nightly Date Stamp 2014-02-02 00:01:08 -05:00
Nils Gladitz efdcebddbd VisibilityInlinesHidden: only apply -fvisibility-inlines-hidden to C++ sources 2014-02-01 09:55:24 +01:00
Kitware Robot 6385c71516 CMake Nightly Date Stamp 2014-02-01 00:01:05 -05:00
Kitware Robot f35c01e2a5 CMake Nightly Date Stamp 2014-01-31 00:01:05 -05:00
Kitware Robot 078e9e2c39 CMake Nightly Date Stamp 2014-01-30 00:01:06 -05:00
Brad King bbc82d85e5 Merge topic 'fix-Qt-autogen'
f7ae1d8a QtAutogen: Short-circut some logic when moc is not available.
4b989d5f QtAutogen: Separate source file processing from AUTOMOC.
c48d877d QtAutogen: Make some methods appropriately file-static.
394e86df QtAutogen: Fix autouic target options in the presence of a config.
964d7f2a QtAutogen: Remove unused variables.
0d934efd QtAutogen: Remove read of SKIP_AUTOUIC target property.
321e348e QtAutogen: Use Qt 4 IMPORTED targets to find executable locations.
e96683b0 Qt4: Use IMPORTED executable names with custom commands.
e6182f5d Qt4: Create IMPORTED executable targets for all Qt executables.
2014-01-29 10:05:04 -05:00
Brad King 7e142c5ac2 project: Manage VERSION variables
Teach the project() command to set variables

  {PROJECT,<PROJECT-NAME>}_VERSION{,_MAJOR,_MINOR,_PATCH,_TWEAK}

holding the project version number and its components.  Add project()
command option "VERSION" to specify the version explicitly, and default
to the empty string when it is not given.

Since this clears variables when no VERSION is given, this may change
behavior for existing projects that set the version variables themselves
prior to calling project().  Add policy CMP0048 for compatibility.

Suggested-by: Alex Neundorf <neundorf@kde.org>
2014-01-29 09:45:18 -05:00
Brad King 16d040c958 project: Add optional LANGUAGES keyword
Teach the project() command to recognize an optional "LANGUAGES"
keyword after the project name and prior to the list of languages.
Do not allow multiple copies of the keyword.  If the keyword is
specified and no languages are listed, imply NONE.
2014-01-29 09:40:51 -05:00
Kitware Robot 5d08ba94cf CMake Nightly Date Stamp 2014-01-29 00:01:08 -05:00
Stephen Kelly f7ae1d8ad6 QtAutogen: Short-circut some logic when moc is not available.
This is the case when AUTOMOC is false.  This prevents creating rules
to moc the files in the absense of moc.
2014-01-28 21:04:40 +01:00
Stephen Kelly 4b989d5f15 QtAutogen: Separate source file processing from AUTOMOC.
This will allow using AUTOUIC without using AUTOMOC for example.
2014-01-28 21:04:40 +01:00
Stephen Kelly c48d877d31 QtAutogen: Make some methods appropriately file-static. 2014-01-28 21:04:11 +01:00
Stephen Kelly 394e86df2a QtAutogen: Fix autouic target options in the presence of a config.
Read the correct variable.  Add scopes to prevent escape of variables.
2014-01-28 21:04:10 +01:00
Stephen Kelly 964d7f2ae9 QtAutogen: Remove unused variables. 2014-01-28 21:04:10 +01:00
Stephen Kelly 0d934efd59 QtAutogen: Remove read of SKIP_AUTOUIC target property.
Skipping AUTOUIC for a target is achieved by setting the AUTOUIC
target property go OFF.
2014-01-28 21:04:10 +01:00
Stephen Kelly 321e348e13 QtAutogen: Use Qt 4 IMPORTED targets to find executable locations.
Avoid using the moc from Qt 5 with Qt 4 based targets. Moc generates
a version check to ensure that such generated code does not compile.

The Qt4And5Automoc unit test should have been testing this, but it
was not because the test was broken. In that unit test, moc was run
on trivial files which have no significant content, and in particular
no Q_OBJECT macro.  Therefore moc was generating empty files which
do not even contain the version check.  Fix this by generating files
for input to moc at cmake time.
2014-01-28 21:04:10 +01:00
Kitware Robot 2dfb517f73 CMake Nightly Date Stamp 2014-01-28 00:01:05 -05:00
Brad King ddb792daab Merge topic 'constify'
bde0dab1 cmMakefile: Make ConfigureString const.
bf1e1bf1 cmMakefile: Make FindSourceGroup const.
01d7ceda cmMakefile: Trivially constify some methods.
9073318f cmMakefile: Remove non-const version of method
9b05bc4f cmMakefile: Remove method declarations with no implementation.
c6c0bd9d cmMakefile: Consify custom command API.
d6d4eaac cmMakefile: Constify policies accessors.
2a6e56e0 cmCacheManager: Consify version accessors.
5cc9fb02 cmSourceGroup: Fix method name capitalization.
fe8b0330 cmMakefile: Constify some cmSourceGroup related code.
e68a3ead cmSourceFile: Use a const cmMakefile.
b6292402 cmSourceFileLocation: Use a const cmMakefile.
b33ea578 cmMakefile: Make GetProperty const.
2014-01-27 13:03:39 -05:00
Brad King 5781842bc2 Merge topic 'ctest-update-p4-unknown-revision'
243cfc2f ctest_update: Handle P4 unknown revisions more robustly
2014-01-27 13:03:37 -05:00
Brad King adf309cd0d Merge topic 'ninja-normalize-cmake-rerun-deps'
2c426bfb Ninja: Normalize paths of CMake re-run rule dependencies
2014-01-27 13:03:35 -05:00
Brad King 20263b719f Merge topic 'robust-ep-download-verify'
a432b93b file DOWNLOAD: Display the curl result status when a hash mismatch occurs.
1cb9ef81 file DOWNLOAD: Test non-zero return status.
f73f0fb3 file DOWNLOAD: Add test for bad hash.
b5e2265f ExternalProject: Reattempt download when verification fails.
2014-01-27 13:03:33 -05:00
Kitware Robot d31e68a26e CMake Nightly Date Stamp 2014-01-27 00:01:05 -05:00
Kitware Robot c6d20adaf2 CMake Nightly Date Stamp 2014-01-26 00:01:05 -05:00
Kitware Robot 68beeb34f5 CMake Nightly Date Stamp 2014-01-25 00:01:05 -05:00
Kitware Robot 0183ede2cc CMake Nightly Date Stamp 2014-01-24 00:01:05 -05:00
Kitware Robot 558a779123 CMake Nightly Date Stamp 2014-01-23 00:01:07 -05:00
Stephen Kelly bde0dab15d cmMakefile: Make ConfigureString const. 2014-01-22 21:28:42 +01:00
Stephen Kelly bf1e1bf1d0 cmMakefile: Make FindSourceGroup const.
Return a pointer instead of a reference.  This allows making the accessor
const with the least impact.
2014-01-22 21:28:41 +01:00
Stephen Kelly 01d7ceda5d cmMakefile: Trivially constify some methods. 2014-01-22 15:16:53 +01:00
Stephen Kelly 9073318fc4 cmMakefile: Remove non-const version of method
The const version suffices.
2014-01-22 15:16:41 +01:00
Stephen Kelly 9b05bc4fcc cmMakefile: Remove method declarations with no implementation. 2014-01-22 15:16:40 +01:00
Stephen Kelly c6c0bd9d2f cmMakefile: Consify custom command API. 2014-01-22 15:16:40 +01:00
Stephen Kelly d6d4eaac06 cmMakefile: Constify policies accessors. 2014-01-22 15:16:40 +01:00
Stephen Kelly 2a6e56e078 cmCacheManager: Consify version accessors. 2014-01-22 15:16:40 +01:00
Stephen Kelly 5cc9fb0234 cmSourceGroup: Fix method name capitalization.
Adhere to the dominant style.
2014-01-22 15:16:40 +01:00
Stephen Kelly fe8b0330eb cmMakefile: Constify some cmSourceGroup related code. 2014-01-22 15:16:40 +01:00
Stephen Kelly e68a3eadff cmSourceFile: Use a const cmMakefile. 2014-01-22 15:16:40 +01:00
Stephen Kelly b629240236 cmSourceFileLocation: Use a const cmMakefile. 2014-01-22 15:16:40 +01:00
Stephen Kelly b33ea5783a cmMakefile: Make GetProperty const. 2014-01-22 15:16:40 +01:00
Brad King 0bd4157886 Merge topic 'cmake-rerun-depends'
82d43175 Allow projects to specify extra inputs to CMake
1ef444d6 Add test case to verify CMake does not re-run on first build
2014-01-22 08:47:59 -05:00
Brad King d8d3e9241e Merge topic 'cmake-E-sleep'
94389f63 cmake: Add '-E sleep' command
2014-01-22 08:47:57 -05:00
Brad King 1021ad80f9 Merge topic 'qcc-id'
e00db59d QNX: Introduce QCC compiler id for that QNX platform compiler.
d2dea79b CMakeDetermine*Compiler: Fix typo 'lile' => 'like'
2014-01-22 08:47:55 -05:00
Stephen Kelly e00db59d6c QNX: Introduce QCC compiler id for that QNX platform compiler.
Introduce policy CMP0047 to control resetting the id for
compatibility.

De-duplicate content in the QNX platform file by including the GNU
one. QNX is a form of GNU platform.

Do not clear CMAKE_SHARED_LIBRARY_${lang}_FLAGS variables.  They
are populated again later by the Compiler/GNU.cmake file anyway.

Modify the CMAKE_CXX_COMPILE_OBJECT variable only when the QCC
compiler id is in use, and the language is CXX.  Use the QNX
recommended flag for QCC instead of the gcc compatible -x flag.

Populate new module files to handle system includes and depfiles
when using the QCC compiler.

Remove code which unsets the system include and depfiles related
variables.  When a GNU driver is used instead of the QCC one, the
appropriate flags will be used.  These variables were previously
cleared for lowest-common-denominator compatibility with both
drivers.
2014-01-22 08:47:32 -05:00
Pedro Navarro 243cfc2f6f ctest_update: Handle P4 unknown revisions more robustly
Mark unknown revisions as such and fail instead of reporting revision 0.
Otherwise CTest reports massive file updates between revisions when the
server timeouts while trying to fetch the current revision number.
2014-01-22 08:33:33 -05:00
Kitware Robot 041690c42c CMake Nightly Date Stamp 2014-01-22 00:01:06 -05:00
Brad King 2c426bfb2d Ninja: Normalize paths of CMake re-run rule dependencies
Send all implicit dependencies through ConvertToNinjaPath.
Add CMakeCache.txt before uniquifying the list.
2014-01-21 14:29:55 -05:00
Brad King 82d4317503 Allow projects to specify extra inputs to CMake
Define a new 'CMAKE_CONFIGURE_DEPENDS' directory property that projects
can use to specify input files to the CMake configuration process.
Extend the RunCMake.Configure test to verify that the build system
re-runs CMake when this input changes.
2014-01-21 14:14:49 -05:00
Brad King 94389f6388 cmake: Add '-E sleep' command
Add a cmake command-line interface to provide a cross-platform 'sleep'.
2014-01-21 13:50:49 -05:00
Brad King a86865e96c Merge topic 'cmake-E-symlink-replace-dangling'
e0228e2b cmake: Improve '-E create_symlink' edge case handling (#14713)
2014-01-21 08:51:39 -05:00
Kitware Robot 1eb4d035c0 CMake Nightly Date Stamp 2014-01-21 00:01:06 -05:00
Brad King e0228e2b04 cmake: Improve '-E create_symlink' edge case handling (#14713)
The logic added by commit ffc0b5e4 (Overwrite the symlink if it already
exists, 2007-02-15) does not recognize and remove existing broken links
before replacing them.  Improve the logic to remove any existing
destination file or link (but not directory).  On failure, report an
error message explaining why the existing path could not be removed or
the new one could not be created.

Add a RunCMake.CommandLine test to cover 'cmake -E' cases.  Start with
test cases covering 'cmake -E create_symlink' behavior on UNIX platforms.
2014-01-20 14:02:21 -05:00
Brad King 325f851403 Merge topic 'KateDontRequireVariable'
e02cdba0 Kate: use cmMakefile::GetSafeDefinition() for a not-required variable
2014-01-20 10:59:21 -05:00
Kitware Robot 1b3958130e CMake Nightly Date Stamp 2014-01-20 00:01:05 -05:00
Kitware Robot dfec274bdf CMake Nightly Date Stamp 2014-01-19 00:01:04 -05:00
Kitware Robot 434fe2baa2 CMake Nightly Date Stamp 2014-01-18 00:01:06 -05:00
Brad King e046e2c67d Merge topic 'xcode-storyboard-view'
1ce02ebf Xcode: Fix storyboard view
d9f1f917 Xcode: Remove dead code
2014-01-17 09:24:57 -05:00
Brad King 62ebff26a7 Merge topic 'cmmakefile-const'
c768e398 cmMakefile: make some methods take const std::string& instead of const char*
2014-01-17 09:24:54 -05:00
Alex Neundorf e02cdba054 Kate: use cmMakefile::GetSafeDefinition() for a not-required variable
...otherwise the generator failed in embedded projects via
externalproject(), since there CMAKE_KATE_MAKE_ARGUMENT is not set.
Using GetSafeDefinition() is good enough to protect against
NULL-pointers.

Alex
2014-01-17 14:04:33 +01:00
Kitware Robot 9f0270aaae CMake Nightly Date Stamp 2014-01-17 00:01:08 -05:00
Ruslan Baratov 1ce02ebfd5 Xcode: Fix storyboard view
Images and xib files must have 'lastKnownFileType' attribute to be
displayed correctly. If xib file has attribute 'explicitFileType' it is
displayed as raw xml. If static image has attribute 'explicitFileType'
it is displayed as question mark on storyboard.
2014-01-16 13:46:21 -05:00
Ruslan Baratov d9f1f917c4 Xcode: Remove dead code
Variable 'ext' already checked for equality to "xib" so remove the
branch that will never be executed.
2014-01-16 13:43:47 -05:00
Rolf Eike Beer c768e398f9 cmMakefile: make some methods take const std::string& instead of const char*
Most callers already have a std::string, on which they called c_str() to pass it
into these methods, which internally converted it back to std::string. Pass a
std::string directly to these methods now, avoiding all these conversions.
Those methods that only pass in a const char* will get the conversion to
std::string now only once.
2014-01-16 09:28:29 -05:00
Brad King 9465242d01 Merge topic 'ninja_fix_rerun'
20e595ab Revert "Ninja: Track configured files so we can regenerate them."
2014-01-16 09:24:15 -05:00
Brad King ce362f27d6 Merge topic 'revert-ninja_fix_rerun'
79859689 Revert "Ninja: Avoid re-running CMake on next build after regeneration"
2014-01-16 09:24:13 -05:00
Brad King 2d5d690ea6 Merge topic 'var-type-autofill'
cfec180d cmake-gui: Remember variable type in Add Entry
2014-01-16 09:24:11 -05:00
Sergey Zolotarev cfec180d66 cmake-gui: Remember variable type in Add Entry
Store variable types together with their names in the variable completion
list so that the type is automatically recovered when you select a variable.

Keep variable names and types in separate lists.  This removes the :TYPE
string from completion list and the Name field and makes variable search
easier.  The variable names and types are now kept in two different
settings - AddVariableNames and AddVariableTypes.  Drop the old
AddVariableCompletionEntries setting.
2014-01-16 09:23:36 -05:00
Kitware Robot 4e4951c9fc CMake Nightly Date Stamp 2014-01-16 00:01:08 -05:00
Matt McCormick a432b93b79 file DOWNLOAD: Display the curl result status when a hash mismatch occurs. 2014-01-15 20:08:44 -05:00
Brad King 20e595aba8 Revert "Ninja: Track configured files so we can regenerate them."
Revert commit 4a6397a7 (Ninja: Track configured files so we can
regenerate them, 2013-06-17).  The files reported by the method
cmMakefile::GetOutputFiles() must cause CMake to re-run only if they are
missing and without considering a timestamp.  This is not the meaning of
the implicit dependencies field so Ninja re-runs CMake too often.

Another solution will have to be found to the original problem.
2014-01-15 16:37:25 -05:00
Brad King 7985968900 Revert "Ninja: Avoid re-running CMake on next build after regeneration"
Revert commit 6fac24d7 (Ninja: Avoid re-running CMake on next build
after regeneration, 2014-01-09).  The files reported by the method
cmMakefile::GetOutputFiles() must cause CMake to re-run only if they are
missing and without considering a timestamp.  Therefore they cannot be
listed as outputs of the re-run rule or Ninja will re-run CMake every
time because the timestamp of configure_file outputs does not change.

Another solution will have to be found to the original problem.
2014-01-15 16:33:22 -05:00
Brad King c4e5e17f38 Merge topic 'skip-return-code'
3a0d164b allow to mark a test as "Not Run" with a specific return code (#8466)
2014-01-15 10:12:04 -05:00
Kitware Robot 556b16db9c CMake Nightly Date Stamp 2014-01-15 00:01:05 -05:00
Rolf Eike Beer 3a0d164bb2 allow to mark a test as "Not Run" with a specific return code (#8466) 2014-01-14 23:57:40 +01:00
Brad King d5639044d3 Merge topic 'fix-cb-nmake-quotes'
f2b47197 CodeBlocks: fix unescaped command quotes when used with nmake
2014-01-14 08:56:05 -05:00
Kitware Robot 31e1c39c57 CMake Nightly Date Stamp 2014-01-14 00:01:07 -05:00
Nils Gladitz f2b47197dc CodeBlocks: fix unescaped command quotes when used with nmake 2014-01-13 23:15:26 +01:00
Brad King 071005add1 Merge topic 'support-codelite-ide-generator'
0c4e8c70 Add support for codelite IDE project fles
2014-01-13 10:28:37 -05:00
Brad King cb8c9dd01b Merge topic 'missing-dependency-error'
0bf6f13b AddDependencies: new policy requires dependencies to exist
2014-01-13 10:25:33 -05:00
Brad King 8d989d1788 Merge topic 'constify'
2cbf0311 cmGlobalGenerator: Make SelectMakeProgram const.
b4ff38a5 cmGlobalGenerator: Make CheckALLOW_DUPLICATE_CUSTOM_TARGETS const
8aeddf1f cmGlobalGenerator: Make some API const.
8fd0f2a7 cmGeneratorTarget: Hold a const global generator.
46315320 cmComputeLinkDepends: Hold a const global generator.
2014-01-13 10:25:32 -05:00
Brad King b003f56f85 Merge topic 'fix-find-package-mode'
a7f393dc cmake: Future-proof --find-package mode.
2014-01-13 10:25:30 -05:00
Brad King 020006f936 Merge topic 'ninja_fix_rerun'
6fac24d7 Ninja: Avoid re-running CMake on next build after regeneration
2014-01-13 10:23:23 -05:00
Robert Maynard 6fac24d750 Ninja: Avoid re-running CMake on next build after regeneration
In commit 4a6397a7 (Ninja: Track configured files so we can regenerate
them, 2013-06-17) we accidentally started listing files generated by
CMake as inputs to the configuration process instead of outputs from it.
Move the list of files generated by CMake to the regeneration rule
outputs section and tell Ninja to restat after running it.
2014-01-13 10:09:48 -05:00
Stephen Kelly a7f393dc49 cmake: Future-proof --find-package mode.
Create cmGeneratorTargets before generating generate-time information.
C++ interfaces for querying build information is increasingly only
available at generate time through the cmGeneratorTarget class.  Ensure
that the required cmGeneratorTarget instances are created.  Use the
cmGlobalGenerator access API to access the relevant cmGeneratorTarget
instead of creating a temporary one on the stack.
2014-01-13 16:09:15 +01:00
Kitware Robot 9f6b633f37 CMake Nightly Date Stamp 2014-01-13 00:01:06 -05:00
Stephen Kelly 2cbf031190 cmGlobalGenerator: Make SelectMakeProgram const. 2014-01-12 20:18:11 +01:00
Stephen Kelly b4ff38a5ef cmGlobalGenerator: Make CheckALLOW_DUPLICATE_CUSTOM_TARGETS const 2014-01-12 20:18:11 +01:00
Stephen Kelly 8aeddf1f03 cmGlobalGenerator: Make some API const. 2014-01-12 20:18:11 +01:00
Stephen Kelly 8fd0f2a718 cmGeneratorTarget: Hold a const global generator. 2014-01-12 20:18:11 +01:00
Stephen Kelly 46315320ab cmComputeLinkDepends: Hold a const global generator. 2014-01-12 20:18:10 +01:00
Nils Gladitz 0bf6f13b1d AddDependencies: new policy requires dependencies to exist
Added new policy CMP0046 which requires dependencies added by
add_dependencies() to actually exist.
2014-01-12 12:58:04 +01:00
Kitware Robot 325ca1f253 CMake Nightly Date Stamp 2014-01-12 00:01:04 -05:00
Kitware Robot cb7af7af44 CMake Nightly Date Stamp 2014-01-11 00:01:24 -05:00
Eran Ifrah 0c4e8c70a0 Add support for codelite IDE project fles 2014-01-10 09:20:11 +02:00