Commit Graph

16384 Commits

Author SHA1 Message Date
Ben Boeckel 325599caa2 cmGlobalGenerator: Store targets in hash maps 2014-05-07 15:48:32 -04:00
Ben Boeckel ac4106c69a cmMakefile: Use a hashmap for imported targets 2014-05-07 15:48:32 -04:00
Brad King 890efcb607 Merge branch 'vs-fix-MANIFESTUAC' into release 2014-05-07 15:35:32 -04:00
Eric Berge 9c7f234ceb VS: Fix /MANIFESTUAC:NO linker option mapping
There are no versions of /MANIFESTUAC:NO where addition values are
appended.  Remove both of the MANIFESTUAC:NO entries from our flag
tables and replace them with one which would set EnableUAC to false and
immediately stop processing the /MANIFESTUAC:NO option.
2014-05-07 15:24:08 -04:00
Brad King 4777e82a0a Merge topic 'dev/refactor-source-depends-in-ninja'
2583eff6 ninja: Factor out custom command order-only depends
18e478a8 ninja: Factor out target-level order-only dependencies
6fa6bedf LocalGenerator: Add a string overload for AppendFlags
01b79c63 ninja: Don't use a stringstream to build an argument list
3c640891 ninja: Use string parameters
2014-05-07 15:04:49 -04:00
Brad King 74dc1a0be6 Merge branch 'desktop-icon' into release 2014-05-07 15:04:15 -04:00
Johannes Huber 0c4c29edf2 cmake-gui: Fix desktop file icon configuration
Drop the icon file extension.  This fixes the desktop file validation
message:

 "CMakeSetup32.png" for key "Icon" in group "Desktop Entry" is an icon
 name with an extension, but there should be no extension as described in
 the Icon Theme Specification if the value is not an absolute path

Applied-by: Rolf Eike Beer <eike@sf-mail.de>
2014-05-07 15:03:05 -04:00
Ben Boeckel 2583eff6fe ninja: Factor out custom command order-only depends
This makes WebKitGTK's CMake build.ninja file go from 165M to 11M and
configure/generate in 5 seconds.
2014-05-07 14:30:31 -04:00
Ben Boeckel 18e478a860 ninja: Factor out target-level order-only dependencies
This reduces ninja file output even more for projects with lots of
libraries with entangled transitive dependencies. ParaView goes from the
previous 58M to about 45M.
2014-05-07 14:30:31 -04:00
Ben Boeckel 6fa6bedf78 LocalGenerator: Add a string overload for AppendFlags 2014-05-07 14:30:31 -04:00
Brad King 5411128645 ctest_build: Do not crash on bad generator name
If creation of the global generator fails, return early with an error
message instead of trying to use the generator and crashing.

Add a CTestTestBadGenerator test to cover this case.

Reported-by: Mathieu Malaterre <malat@debian.org>
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=747306
2014-05-07 11:02:16 -04:00
Brad King 295cf31ca6 Merge topic 'no-assert-missing-objlib'
d648c476 cmTarget: Don't assert on object libraries for configure-time location.
2014-05-07 09:18:35 -04:00
Brad King 2e095099ec Merge topic 'osx-iframework'
1bed75a5 OS X: Use -iframework for system framework directories
2014-05-07 09:13:37 -04:00
Brad King 139b86b7ed Merge topic 'update-kwsys'
edad0369 Merge branch 'upstream-kwsys' into update-kwsys
397bccba KWSys 2014-05-05 (f3a36760)
2014-05-07 09:13:28 -04:00
Mikołaj Siedlarek 1bed75a590 OS X: Use -iframework for system framework directories
Just like -I flag has its -isystem counterpart which marks an include
directory as a system directory and prevents unwanted warnings, on Apple
systems there is -iframework -- a system directory replacement for -F.
Use this flag to implement include_directories(SYSTEM) for frameworks.
2014-05-07 09:04:48 -04:00
Stephen Kelly bbfd4cd48f Features: Include the language of the compiler in error messages. 2014-05-07 12:36:22 +02:00
Stephen Kelly 205215fb8a cmTarget: Add CXX_STANDARD_REQUIRED to control decay. 2014-05-07 12:17:49 +02:00
Stephen Kelly 1df2116bfa Features: Decay language flag if requested is not available.
Use the highest standard compile flags available if requested language
version is too new.

This supports use-cases like

 set(CMAKE_CXX_STANDARD 14)

 # Compiled with -std=c++11 with GNU 4.7, which has no -std=c++14
 # or equivalent flag
 add_executable(main main.cpp)

This can be used in combination with preprocessor defines which
communicate the availability of certain language features for
optional use.
2014-05-07 12:17:49 +02:00
Kitware Robot c010e7cc80 CMake Nightly Date Stamp 2014-05-07 00:01:08 -04:00
Stephen Kelly d648c4766f cmTarget: Don't assert on object libraries for configure-time location.
Commit b8af2011 (cmTarget: Fix listing of source files at
configure-time., 2014-04-13) refactored a GetObjectLibrariesCMP0026
method out of GetLanguages.  In flight, a conditional use of a target
if available was changed to an assert-available.

This code is only used to read the LOCATION property at configure
time, when the link information is incomplete, and not all targets
are defined, so the assert is inappropriate, even though it can lead
to incorrect information being generated.  CMP0026 warns about the
potentially incorrect information anyway.
2014-05-06 21:07:40 +02:00
Brad King 8e767a27d2 Merge topic 'CMAKE_CXX_KNOWN_FEATURES-global-property'
3fdfa5d3 Features: Make CMAKE_CXX_KNOWN_FEATURES a property.
2014-05-06 13:48:42 -04:00
Brad King 8c5b9cf915 KWSys SystemInformation: Include backtrace APIs whenever we use them
Include execinfo.h, cxxabi.h, and dlfcn.h under the same conditions
under which we use the APIs from them.  Move their inclusion out of
OS-specific blocks.
2014-05-06 10:05:01 -04:00
Brad King edad036971 Merge branch 'upstream-kwsys' into update-kwsys 2014-05-06 08:46:59 -04:00
Kitware Robot f410c03142 CMake Nightly Date Stamp 2014-05-06 00:01:08 -04:00
Kitware Robot 1aed32faae CMake Nightly Date Stamp 2014-05-05 00:01:06 -04:00
Kitware Robot f16fdc0263 CMake Nightly Date Stamp 2014-05-04 00:01:09 -04:00
Kitware Robot 33696e8331 CMake Nightly Date Stamp 2014-05-03 00:01:07 -04:00
Ben Boeckel 01b79c6385 ninja: Don't use a stringstream to build an argument list
Streams are expensive to construct (looks like some locale-related
stuff), so use strings instead.
2014-05-02 13:22:19 -04:00
Ben Boeckel 3c64089117 ninja: Use string parameters 2014-05-02 13:05:44 -04:00
Stephen Kelly 3fdfa5d3fc Features: Make CMAKE_CXX_KNOWN_FEATURES a property.
As a 'built-in' variable it imposes a cost on all variable lookups
and it is expected to be rarely used.
2014-05-02 10:18:16 +02:00
Kitware Robot 2615185418 CMake Nightly Date Stamp 2014-05-02 00:01:07 -04:00
Brad King ecdc1985e3 Merge topic 'file-generate-if-different'
42e1cd13 file(GENERATE): Only write the file if content is different.
2014-05-01 09:11:23 -04:00
Kitware Robot 849d869223 CMake Nightly Date Stamp 2014-05-01 00:01:12 -04:00
Brad King d41adb440f Merge topic 'osx-init-early'
bbc358c3 Merge branch 'master' into osx-init-early
0cce556b Xcode: Use sysroot and deployment target to identify compiler
0200d0a9 OS X: Factor a Darwin-Initialize module out of Platform/Darwin
416761e3 Add platform-specific initialization step when enabling languages
2014-04-30 09:42:02 -04:00
Brad King 8535d4cf5d Merge topic 'cxx98-features'
a36b957f Features: Add cxx_template_template_parameters.
2014-04-30 09:42:00 -04:00
Stephen Kelly 42e1cd137c file(GENERATE): Only write the file if content is different.
No policy is used to control this behavior for now.
2014-04-30 15:18:13 +02:00
Kitware Robot b0e955f129 CMake Nightly Date Stamp 2014-04-30 00:01:07 -04:00
Ben Boeckel 3f51752264 StoreMatches: Minor cleanups 2014-04-29 16:00:06 -04:00
Ben Boeckel ef62fbad55 ClearMatches: Store match variable names statically
Constructing the names and then turning them into a std::string is
non-negligible in performance testing.
2014-04-29 16:00:05 -04:00
Ben Boeckel f718b30a95 ClearMatches: Only clear matches which were actually set
ClearMatches was clearing many variables which were never set in the
first place. Instead, store how many matches were made last time and
only clear those. It is moved to the cmMakefile class since it is a
common utility used by multiple commands.
2014-04-29 16:00:05 -04:00
Brad King 1b5fac4695 Merge topic 'doc-full-help'
478356e6 Restore --help-full option to output all help manuals
2014-04-29 09:58:46 -04:00
Brad King bbc358c3fc Merge branch 'master' into osx-init-early
Resolve conflict in Source/cmGlobalGenerator.cxx by integrating
changes from both sides.
2014-04-29 09:36:55 -04:00
Brad King 416761e35c Add platform-specific initialization step when enabling languages
Create a Modules/CMakeSystemSpecificInitialize.cmake module loaded after
CMakeSystem.cmake but before per-language initialization.  Use it to
load an optional Platform/<os>-Initialize.cmake module.  This will be
useful to do per-platform initialization that does not depend on the
language and use the results when enabling specific languages.
2014-04-29 09:36:14 -04:00
Kitware Robot c51d07d439 CMake Nightly Date Stamp 2014-04-29 00:01:08 -04:00
Ben Boeckel 77b3796581 cmSourceFile: Take a string 2014-04-28 21:43:40 -04:00
Ben Boeckel 7b8a990424 perf: Cache the language property string 2014-04-28 21:43:39 -04:00
Ben Boeckel 10baf00f3d cmSourceFile: Cache the isUiFile check
The filename extension call is expensive, so cache the .ui check.
2014-04-28 21:43:39 -04:00
Ben Boeckel 14e7a8ae1c cmSourceFileLocation: Return a string reference 2014-04-28 21:43:27 -04:00
Ben Boeckel b4cb543e0c cmSourceFileLocation: Save some string copies 2014-04-28 21:43:27 -04:00
Ben Boeckel e8e1f3a19f cmSourceFileLocation: Simplify logic in Matches 2014-04-28 21:43:26 -04:00
Ben Boeckel 5554910ec2 cmSourceFileLocation: Avoid string allocation in extension checking
The substr call was causing excess allocations. Swap the cheaper
character check to be before the longer string comparison, now using the
prefix checking function.
2014-04-28 21:43:09 -04:00
Kitware Robot bb1c41a085 CMake Nightly Date Stamp 2014-04-28 00:01:10 -04:00
Kitware Robot c8b76d58bd CMake Nightly Date Stamp 2014-04-27 00:01:09 -04:00
Kitware Robot 415b75ff37 CMake Nightly Date Stamp 2014-04-26 00:01:06 -04:00
Brad King 478356e6d9 Restore --help-full option to output all help manuals
This option was removed during conversion to the reStructuredText
documentation.  Restore it.  Process documentation starting at
Help/index.rst so that all manuals are included in the output.
2014-04-25 08:41:31 -04:00
Kitware Robot 041dfea55b CMake Nightly Date Stamp 2014-04-25 00:01:10 -04:00
Brad King 9b8685f7d0 Merge topic 'aix-streams'
817db64c fix compile error on AIX/gcc-2.9 because of unknown std::stringstream
2014-04-24 09:24:55 -04:00
Kitware Robot 533d10e48c CMake Nightly Date Stamp 2014-04-24 00:01:10 -04:00
Kitware Robot 608532fa2b CMake Nightly Date Stamp 2014-04-23 00:01:11 -04:00
Rolf Eike Beer 817db64c2c fix compile error on AIX/gcc-2.9 because of unknown std::stringstream 2014-04-22 22:21:31 +02:00
Brad King 72ab764582 Merge branch 'osx-CFBundle-info-plist' into release 2014-04-22 12:53:51 -04:00
Tim Blechmann 149ce5db5e 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-04-22 12:48:44 -04:00
Kitware Robot 2475acc497 CMake Nightly Date Stamp 2014-04-22 00:01:08 -04:00
Brad King b10083876c Merge topic 'feature-absence-hard-error'
8d0b1cca Features: FATAL_ERROR on compilers with no recorded features.
447fbb3f Tests: Execute compile features tests unconditionally.
597bb72e Tests: Run RunCMake.target_compile_features unconditionally.
2014-04-21 09:35:42 -04:00
Brad King 658cc11cf1 Merge topic 'fix-wix-cpack-crash'
cb59f5da CPackWIX: Delay creation of cmWIXPatch until CPack has initialized Logger
2014-04-21 09:32:33 -04:00
Brad King bb891c2ef1 Merge topic 'internal-error-backtrace'
3de4c295 cmake: Print C++ stack trace after INTERNAL_ERROR messages
2014-04-21 09:32:28 -04:00
Brad King 464c8ab3a2 Merge topic 'autorcc-target-dir'
33774ca2 QtAutogen: Put generated qrc files in a target-specific dir.
2014-04-21 09:32:27 -04:00
Kitware Robot c770d404d2 CMake Nightly Date Stamp 2014-04-21 00:01:06 -04:00
Kitware Robot bae9452200 CMake Nightly Date Stamp 2014-04-20 00:01:06 -04:00
Kitware Robot 1a4eb50946 CMake Nightly Date Stamp 2014-04-19 00:01:22 -04:00
Nils Gladitz cb59f5da97 CPackWIX: Delay creation of cmWIXPatch until CPack has initialized Logger
Without the fix CPack will crash when the cmWIXPatch class tries to issue
any diagnostics.
2014-04-18 22:45:30 +02:00
Stephen Kelly 33774ca201 QtAutogen: Put generated qrc files in a target-specific dir. 2014-04-18 16:41:13 +02:00
Kitware Robot c9d13f841e CMake Nightly Date Stamp 2014-04-18 00:01:15 -04:00
Brad King 3de4c29565 cmake: Print C++ stack trace after INTERNAL_ERROR messages
Since an INTERNAL_ERROR is always a bug, it will be useful to have the
program stack trace available in the report.
2014-04-17 11:25:19 -04:00
Stephen Kelly 8d0b1ccac1 Features: FATAL_ERROR on compilers with no recorded features.
Users of the new target_compile_features command are expected to
check the existence of the CMAKE_CXX_COMPILE_FEATURES variable before
attempting to use it to require features.
2014-04-17 16:20:50 +02:00
Brad King 2fca2b2310 Merge topic 'fix-CMP0052'
3b673586 CMP0052: Make the warning message more informative.
5baa8159 CMP0052: Test that include dirs in install locations cause no warnings.
9e0b3153 CMP0052: Do not warn when include dir is not in source or build tree
2014-04-17 09:11:10 -04:00
Brad King d9e2cd258c Merge topic 'codelite-simplify'
c8e565a0 CodeLite generator: simplify code a bit
2014-04-17 09:11:03 -04:00
Brad King 4c966d90c7 Merge topic 'vs-use-full-paths'
0d048384 VS: Use full path to sources to allow deeper trees with VS >= 10
2014-04-17 09:11:01 -04:00
Brad King c14010e4ea Merge topic 'archive-null-error'
b508de59 cmArchiveWrite: Handle NULL error string (#14882)
2014-04-17 09:10:56 -04:00
Stephen Kelly 3b673586f5 CMP0052: Make the warning message more informative.
Print the reason for the offending entry in the
INTERFACE_INCLUDE_DIRECTORIES.
2014-04-17 09:08:24 -04:00
Kitware Robot 858ed4b390 CMake Nightly Date Stamp 2014-04-17 00:01:08 -04:00
Brad King 9e0b3153fa CMP0052: Do not warn when include dir is not in source or build tree
When the policy was added by commit 783bce29 (Export: Disallow exported
interface includes in src/build tree, 2014-03-31) it accidentally left a
code path that would warn when the include dir is in the install tree
but *not* in the source or build tree.  Fix that.
2014-04-16 15:57:35 -04:00
Brad King 567e4e681c CMake 3.0.0-rc4 2014-04-16 13:24:46 -04:00
Brad King e40fbbb074 Merge branch 'archive-null-error' into release 2014-04-16 13:19:10 -04:00
Brad King b508de59e8 cmArchiveWrite: Handle NULL error string (#14882)
If archive_error_string returns NULL, use a placeholder string instead
of crashing.
2014-04-16 13:13:28 -04:00
Stephen Kelly a36b957fc4 Features: Add cxx_template_template_parameters.
Extend the existing feature infrastructure as needed to support
both C++11 and C++98 features.
2014-04-16 15:16:23 +02:00
Kitware Robot fd8bb34278 CMake Nightly Date Stamp 2014-04-16 00:01:07 -04:00
Rolf Eike Beer c8e565a06e CodeLite generator: simplify code a bit 2014-04-15 20:13:42 +02:00
Brad King 0d04838469 VS: Use full path to sources to allow deeper trees with VS >= 10
As explained in cmVisualStudio10TargetGenerator::WriteSource comments,
VS tools append relative paths to the current directory, e.g.

 c:\path\to\current\dir\..\..\..\relative\path\to\source.c

and fail if this is over 250 charaters or so.  Previously we used a full
path only if no relative path could be constructed with a leading "../"
sequence that does not escape the source or build tree.  This means that
long relative paths can be generated when the build tree is inside the
source tree, and can cause build failures due to the above path
concatenation problem.

Teach cmVisualStudio10TargetGenerator::ConvertPath to ask the Convert
method to honor CMAKE_USE_RELATIVE_PATHS.  This will cause it to use
full paths by default but still give users the option of getting the
relative paths when possible.

Suggested-by: Josh Green <inbilla@gmail.com>
2014-04-15 11:52:48 -04:00
Brad King 8472ef243f Merge topic 'cxx11-features'
60c0d2dd Features: Add cxx_defaulted_move_initializers.
c4e67235 Features: Add cxx_long_long_type.
dcaafada Features: Add cxx_func_identifier.
251a1f02 Features: Add cxx_local_type_template_args.
53fe7773 Features: Add cxx_extended_friend_declarations.
16603f7c Features: Add cxx_enum_forward_declarations.
adf22f61 Features: Add cxx_default_function_template_args.
7b3e8a05 Features: Add cxx_right_angle_brackets.
9a49fd21 Features: Add cxx_decltype_incomplete_return_types.
1889045c Features: Add cxx_sizeof_member.
ab455eba Features: Add cxx_thread_local.
300ce248 Features: Add cxx_inline_namespaces.
f9d04a96 Features: Add cxx_variadic_macros.
3d76656f Features: Add cxx_uniform_initialization.
e74b216c Features: Add cxx_generalized_initializers.
ff80c3b4 Features: Add cxx_attributes.
...
2014-04-15 10:32:13 -04:00
Brad King b56a9ae7f1 Merge topic 'target_compile_features'
9eaf3755 Export: Populate INTERFACE_COMPILE_FEATURES property.
8ed59fc2 Add target_compile_features command.
4e6ca504 cmTargetPropCommandBase: Change the interface to return bool.
5412dede cmTarget: Transitively evaluate compiler features.
baff4434 cmTarget: Allow populating COMPILE_FEATURES using generator expressions.
f97bf437 Features: Add cxx_auto_type.
03355d6b cmTarget: Add COMPILE_FEATURES target property.
faeddf64 project: Add infrastructure for recording CXX compiler features
913394af cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
8238a6cd Add some COMPILE_OPTIONS for specifying C++ dialect.
892243fc Tests: Require CMake 3.0 for the SystemInformation test.
59b5fdd3 Don't load Clang-CXX from AppleClang-CXX.
2014-04-15 10:32:11 -04:00
Brad King 593b69c9dc Merge topic 'aix-no-sstream'
941a1404 AIX: fix compilation error because of missing <sstream>
2014-04-15 10:22:41 -04:00
Brad King fc65bbdb70 Merge topic 'openbsd-sign-warning'
3022f2a1 cmELF: fix signedness warning on OpenBSD
2014-04-15 10:22:38 -04:00
Brad King 18aaed77c0 Merge topic 'matches-cleanup'
f21ac16e Replace MATCHES test on numbers with EQUAL test
7eacbaed Replace MATCHES ".+" tests with NOT STREQUAL ""
3a71d34c Use CMAKE_SYSTEM_NAME instead of CMAKE_SYSTEM where sufficient
b0b4b460 Remove .* expressions from beginning and end of MATCHES regexs
5bd48ac5 Replace string(REGEX REPLACE) with string(REPLACE) where possible
2622bc3f Clean up usage of if(... MATCHES regex) followed string(REGEX REPLACE regex)
2014-04-15 10:22:34 -04:00
Brad King 60d1882a67 Merge topic 'ninja-link-with-compile-flags'
97f2b7f5 Ninja: set correct LANGUAGE_COMPILE_FLAGS when linking
49fcffc6 Ninja: cmake formatting, make code more readable
b735c8cb MinGW: link like on Unix and use compile flags when linking
2014-04-15 10:22:32 -04:00
Brad King cb101b95f9 Merge topic 'ninja-win-link-path'
504bb62d Ninja: replace \ in LINK_PATH for MinGW
2014-04-15 10:22:24 -04:00
Brad King 851a202d33 Merge topic 'fix-SourceFiles-configure-time'
b8af2011 cmTarget: Fix listing of source files at configure-time.
2014-04-15 10:22:22 -04:00
Peter Kümmel 97f2b7f5ab Ninja: set correct LANGUAGE_COMPILE_FLAGS when linking 2014-04-15 10:17:06 -04:00
Peter Kümmel 49fcffc6cc Ninja: cmake formatting, make code more readable 2014-04-15 10:17:06 -04:00
Peter Kümmel 504bb62d99 Ninja: replace \ in LINK_PATH for MinGW 2014-04-15 10:14:50 -04:00
Kitware Robot dd3a80b718 CMake Nightly Date Stamp 2014-04-15 00:01:09 -04:00
Rolf Eike Beer 941a14042a AIX: fix compilation error because of missing <sstream>
Replace it by cmStandardIncludes.h which drags in the proper header depending
on what the compiler provides to fix this error:

CMake/Source/cmExtraCodeLiteGenerator.cxx:27: sstream: No such file or directory
2014-04-14 23:07:58 +02:00
Rolf Eike Beer 3022f2a1ef cmELF: fix signedness warning on OpenBSD
OpenBSD defines Elf64_Dyn::d_tag to be of an unsigned type, which differs from
what most other platforms do and what is the case for 32 bit. To have the tag
as unsigned makes sense, but this causes a compilation warning:

/.../CMake/Source/cmELF.cxx: In member function 'const cmELF::StringEntry* cmELFInternalImpl<Types>::GetDynamicSectionString(int) [with Types = cmELFTypes64]':
/.../CMake/Source/cmELF.cxx:945:   instantiated from here
/.../CMake/Source/cmELF.cxx:668: warning: comparison between signed and unsigned integer expressions

Add an explicit typedef to cast the value to for 32 and 64 bit. That type is
unsigned and has the proper length for both platforms so no information is
lost. Explicitely cast both arguments before comparing them to avoid the
warning in all situations.
2014-04-14 20:43:10 +02:00
Rolf Eike Beer 2622bc3f65 Clean up usage of if(... MATCHES regex) followed string(REGEX REPLACE regex)
The matches have already been calculated and can simply be taken from
CMAKE_MATCH_n variables. This avoids multiple compilations of the same or very
similar regular expressions.
2014-04-14 18:16:58 +02:00
Kitware Robot b8fd66f31c CMake Nightly Date Stamp 2014-04-14 00:01:05 -04:00
Stephen Kelly b8af201168 cmTarget: Fix listing of source files at configure-time.
Since commit e5da9e51 (cmTarget: Allow any generator expression in
SOURCES property., 2014-03-18), source files are computed by
true evaluation of generator expressions, including TARGET_OBJECTS.
This evaluation requires the presence of cmGeneratorTarget objects
since commit bf98cc25 (Genex: Evaluate TARGET_OBJECTS as a normal
expression., 2014-02-26).

Ensure that we don't attempt to evaluate the TARGET_OBJECTS generator
expression at configure-time, as can happen if CMP0024 or CMP0026
are OLD.  Use old-style parsing of the source item to extract
object target names in that case.

Avoid calling GetProperty("SOURCES") to bypass warnings from CMP0051.
Refactor existing logic in GetLanguages which is similar in intent to
the new GetSourceFiles code.
2014-04-13 10:59:50 +02:00
Kitware Robot 99514c7e9c CMake Nightly Date Stamp 2014-04-13 00:01:07 -04:00
Kitware Robot 973b3e7dcd CMake Nightly Date Stamp 2014-04-12 00:01:13 -04:00
Brad King 0c08da9912 Merge topic 'watcom-link-quoting'
cb9b1e13 Watcom: Use single quote for all file/path items in wlink command
2014-04-11 09:13:07 -04:00
Kitware Robot 6736b3e746 CMake Nightly Date Stamp 2014-04-11 00:01:09 -04:00
Brad King 5c63c13190 Merge topic 'install-prefix-in-interface'
783bce29 Export: Disallow exported interface includes in src/build tree (#14592).
c869984e RunCMake: Allow specifying the source dir and file to test.
2014-04-10 09:53:13 -04:00
Brad King e983ed7c9a Merge topic 'suppress-warning-in-comment'
a9fe65c3 cmSystemTools: Remove unreachable return on HP compiler
72e137ea Re-word comment on unreachable return statements
2014-04-10 09:53:11 -04:00
Brad King 9ac73a8c03 Merge topic 'update-kwsys'
f401b925 Merge branch 'upstream-kwsys' into update-kwsys
c54be583 KWSys 2014-04-07 (8b085635)
2014-04-10 09:53:10 -04:00
Brad King 5e6f279411 Merge topic 'aix-compile'
539b6c58 Fix build on AIX failing because of access to string elements
2014-04-10 09:53:08 -04:00
Brad King c590889310 Merge topic 'optimize-source-file-processing'
4f1c71fd cmTarget: Add all sources traced from custom commands at once.
b1c3ae33 cmTarget: Short-circuit language computation if context independent.
2014-04-10 09:53:05 -04:00
Kitware Robot 22018b6e93 CMake Nightly Date Stamp 2014-04-10 00:01:06 -04:00
Stephen Kelly 783bce295b Export: Disallow exported interface includes in src/build tree (#14592).
Allow directories in the source tree or build tree only if the
install tree is a subdirectory of the source tree or build tree,
as appropriate.

Re-use the test files in the RunCMake.include_directories test
to run in multiple scenarios.  Bump the required CMake version
in the test to 3.0 to ensure that the new policy warnings are
emitted correctly.
2014-04-09 10:38:49 +02:00
Stephen Kelly 4f1c71fdd2 cmTarget: Add all sources traced from custom commands at once.
The AddSource method accepts one file and tries to avoiding adding
it to the sources-list of the target if it already exists.  This
involves creating many cmSourceFileLocation objects for matching
on existing files, which is an expensive operation.

Avoid the searching algorithm by appending the new sources as one
group.  Generate-time processing of source files will ensure
uniqueness.

Add a new AddTracedSources for this purpose.  The existing
AddSources method must process the input for policy CMP0049, but
as these source filenames come from cmSourceFile::GetFullPath(),
we can forego that extra processing.
2014-04-09 10:37:00 +02:00
Stephen Kelly b1c3ae33ea cmTarget: Short-circuit language computation if context independent.
Computing the language involves computing the source files, which
is an expensive operation.  It requires calling
cmMakefile::GetOrCreateSource many times, which involves creating
and matching on many cmSourceFileLocation objects.

Source files of a target may depend on the head-target and the
config as of commit e6971df6 (cmTarget: Make the source files depend
on the config., 2014-02-13).  The results are cached for each context
as of commit c5b26f3b (cmTarget: Cache the cmSourceFiles in
GetSourceFiles., 2014-04-05).

Each target in the build graph causes language computation of all
of its dependents with itself as the head-target.  This means that
for 'core' libraries on which everything depends, the source files
are computed once for every transitive target-level-dependee and
the result is not cached because the head-target is different. This
was observed in the VTK buildsystem.

Short circuit the computation for targets which have a source-list
that is independent of the head-target.  If the source-list has
already been computed and the generator expression evaluation
reports that it was context-independent, return the only source-list
already cached for the target.  Reset the short-circuit logic when
sources are added and when the link libraries are re-computed.
2014-04-09 10:37:00 +02:00
Kitware Robot 8512bb4fff CMake Nightly Date Stamp 2014-04-09 00:01:06 -04:00
Jiri Malak cb9b1e13e4 Watcom: Use single quote for all file/path items in wlink command
Watcom Linker use single quote if necessary for quoting target name,
libraries names and libraries search path.  Object names were already
fixed.
2014-04-08 13:28:54 -04:00
Brad King f401b925cf Merge branch 'upstream-kwsys' into update-kwsys 2014-04-08 13:06:14 -04:00
Brad King a9fe65c316 cmSystemTools: Remove unreachable return on HP compiler
Follow up commit 1de08685 (cmSystemTools: Restore unreachable return to
silence warnings, 2014-04-02) by excluding the unreachable return on the
HP compiler as well as Clang.  Both recognize that it is unreachable and
warn.
2014-04-08 08:48:08 -04:00
Stephen Kelly 60c0d2dd81 Features: Add cxx_defaulted_move_initializers. 2014-04-08 11:05:58 +02:00
Stephen Kelly c4e672358c Features: Add cxx_long_long_type. 2014-04-08 11:05:58 +02:00
Stephen Kelly dcaafada0e Features: Add cxx_func_identifier. 2014-04-08 11:05:57 +02:00
Stephen Kelly 251a1f02a0 Features: Add cxx_local_type_template_args. 2014-04-08 11:05:57 +02:00
Stephen Kelly 53fe7773e6 Features: Add cxx_extended_friend_declarations. 2014-04-08 11:05:57 +02:00
Stephen Kelly 16603f7cdb Features: Add cxx_enum_forward_declarations. 2014-04-08 11:05:57 +02:00
Stephen Kelly adf22f611e Features: Add cxx_default_function_template_args. 2014-04-08 11:05:57 +02:00
Stephen Kelly 7b3e8a0534 Features: Add cxx_right_angle_brackets. 2014-04-08 11:05:57 +02:00
Stephen Kelly 9a49fd21be Features: Add cxx_decltype_incomplete_return_types. 2014-04-08 11:05:57 +02:00
Stephen Kelly 1889045ca6 Features: Add cxx_sizeof_member. 2014-04-08 11:05:57 +02:00
Stephen Kelly ab455ebafd Features: Add cxx_thread_local. 2014-04-08 11:05:57 +02:00
Stephen Kelly 300ce2481e Features: Add cxx_inline_namespaces. 2014-04-08 11:05:57 +02:00
Stephen Kelly f9d04a96b5 Features: Add cxx_variadic_macros. 2014-04-08 11:05:57 +02:00
Stephen Kelly 3d76656fb3 Features: Add cxx_uniform_initialization. 2014-04-08 11:05:56 +02:00
Stephen Kelly e74b216c90 Features: Add cxx_generalized_initializers. 2014-04-08 11:05:56 +02:00
Stephen Kelly ff80c3b420 Features: Add cxx_attributes. 2014-04-08 11:05:56 +02:00
Stephen Kelly 7605fee593 Features: Add cxx_alignof. 2014-04-08 11:05:56 +02:00
Stephen Kelly e7d6e1f44f Features: Add cxx_alignas.
cxx_alignof will be a separate feature known to CMake, because
both can be implemented with separate backward compatibility
versions.
2014-04-08 11:05:56 +02:00
Stephen Kelly 32c2acd65c Features: Add cxx_extern_templates. 2014-04-08 11:05:56 +02:00
Stephen Kelly 9064f78b0c Features: Add cxx_unrestricted_unions. 2014-04-08 11:05:56 +02:00
Stephen Kelly 3322b393a2 Features: Add cxx_unicode_literals. 2014-04-08 11:05:56 +02:00
Stephen Kelly 04c5b99f38 Features: Add cxx_user_literals. 2014-04-08 11:05:56 +02:00
Stephen Kelly e1e292cd06 Features: Add cxx_alias_templates. 2014-04-08 11:05:56 +02:00
Stephen Kelly 3300f78310 Features: Add cxx_rvalue_references. 2014-04-08 11:05:55 +02:00
Stephen Kelly b1c5bd5314 Features: Add cxx_reference_qualified_functions. 2014-04-08 11:05:55 +02:00
Stephen Kelly ea9c445f06 Features: Add cxx_raw_string_literals. 2014-04-08 11:05:55 +02:00
Stephen Kelly 735adf2c94 Features: Add cxx_range_for. 2014-04-08 11:05:55 +02:00
Stephen Kelly 0fa9bbf1fa Features: Add cxx_nullptr. 2014-04-08 11:05:55 +02:00
Stephen Kelly 8149fc909f Features: Add cxx_noexcept. 2014-04-08 11:05:55 +02:00
Stephen Kelly bd2a025eb0 Features: Add cxx_nonstatic_member_init. 2014-04-08 11:05:55 +02:00
Stephen Kelly 15cdf6f51d Features: Add cxx_lambdas. 2014-04-08 11:05:55 +02:00
Stephen Kelly a579a0aab4 Features: Add cxx_inheriting_constructors. 2014-04-08 11:05:55 +02:00
Stephen Kelly ebab2015f9 Features: Add cxx_explicit_conversions. 2014-04-08 11:05:55 +02:00
Stephen Kelly ac3a1b14c0 Features: Add cxx_deleted_functions. 2014-04-08 11:05:55 +02:00
Stephen Kelly 91f3699000 Features: Add cxx_defaulted_functions. 2014-04-08 11:05:54 +02:00
Stephen Kelly 7e748417bc Features: Add cxx_decltype. 2014-04-08 11:05:54 +02:00
Stephen Kelly 8d3467636c Features: Add cxx_strong_enums. 2014-04-08 11:05:54 +02:00
Stephen Kelly 0caf08e43e Features: Add cxx_auto_function. 2014-04-08 11:05:54 +02:00
Stephen Kelly 0685ac6edc Features: Add cxx_override. 2014-04-08 11:05:54 +02:00
Stephen Kelly 57ac6a905c Features: Add cxx_final. 2014-04-08 11:05:54 +02:00
Stephen Kelly 88542a6101 Features: Add cxx_static_assert. 2014-04-08 11:05:54 +02:00
Stephen Kelly 91289312fa Features: Add cxx_constexpr. 2014-04-08 11:05:54 +02:00
Stephen Kelly 10f33eee1d Features: Add cxx_variadic_templates.
Expect cxx_variadic_templates to implement N2555.

N2555 is essentially a bugfix and predates most compiler releases which
aimed to experimentally support variadic templates.
2014-04-08 11:05:54 +02:00
Stephen Kelly 750dfee29c Features: Add cxx_delegating_constructors. 2014-04-08 11:05:54 +02:00
Stephen Kelly 9eaf375598 Export: Populate INTERFACE_COMPILE_FEATURES property. 2014-04-08 11:05:07 +02:00
Kitware Robot 9b1abc543e CMake Nightly Date Stamp 2014-04-08 00:01:05 -04:00
Stephen Kelly 8ed59fc207 Add target_compile_features command.
This can be used to set the compiler features required by particular
targets. An error is issued at CMake time if the compiler does not
support the required feature. If a language dialect flag is required
by the features used, that will be added automatically.

Base the target_compile_features command on cmTargetPropCommandBase. This
gives us 'free' handling of IMPORTED, ALIAS, INTERFACE, non-compilable
and missing targets.
2014-04-07 18:11:18 +02:00
Stephen Kelly 4e6ca50445 cmTargetPropCommandBase: Change the interface to return bool.
This is needed for the target_compile_features command, which
may fail at configure time if an invalid feature is specified.
2014-04-07 18:11:18 +02:00
Stephen Kelly 5412deded1 cmTarget: Transitively evaluate compiler features.
Extend the interface of the target_compile_features command with
PUBLIC and INTERFACE keywords. Populate the INTERFACE_COMPILER_FEATURES
target property if they are set. Consume the INTERFACE_COMPILER_FEATURES
target property from linked dependent targets to determine the final
required compiler features and the compile flag, if needed.

Use the same pattern of origin-debugging which is used for other
build properties.
2014-04-07 18:11:18 +02:00
Stephen Kelly baff44345c cmTarget: Allow populating COMPILE_FEATURES using generator expressions.
Delay validation of the content as a feature if it contains a
generator expression. It will be checked again at generate-time
after evaluation.
2014-04-07 18:11:18 +02:00
Stephen Kelly f97bf4370c Features: Add cxx_auto_type.
Record the availability of this feature for GNU 4.8 on (UNIX AND
NOT APPLE) only.  In the future, availability can be recorded for
earlier GNU, for other platforms and for other compilers. Initially
the affected configurations are as restricted as possible to allow
for easy testing while extending the features vector in only one
dimension.

The error message when using the set_property API directly is not
very good, but follow up commits will provide origin debugging of
the property and a target_compile_features command which will
provide a configure-time backtrace when possible.
2014-04-07 18:11:18 +02:00
Stephen Kelly 03355d6b5b cmTarget: Add COMPILE_FEATURES target property.
Use the contents of it to upgrade the CXX_STANDARD target property,
if appropriate.  This will have the effect of adding the -std=c++11
compile flag or other language specification on GNU when that is
needed for the feature.
2014-04-07 16:52:22 +02:00
Stephen Kelly 913394af24 cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
These are used to determine whether to add -std=c++11, -std=gnu++11
etc flags on the compile line.
2014-04-07 16:48:44 +02:00
Brad King 7f7d6a4030 Merge topic 'optimize-source-file-processing'
a4e6bf8e cmTarget: Make GetSourceFiles string overload private.
92e2fbe1 cmGeneratorTarget: Trace cmSourceFile objects instead of strings.
c5b26f3b cmTarget: Cache the cmSourceFiles in GetSourceFiles.
eb163f37 cmTarget: Extract a ProcessSourceItemCMP0049 method.
19b7c22d Ninja: Query custom commands once per target, not once per file.
2014-04-07 10:14:23 -04:00
Brad King 72e137ea7d Re-word comment on unreachable return statements
Do not use the word "warning" in the comment because CTest launchers
match it and CTestCustom.cmake.in does not suppress it.
2014-04-07 10:10:04 -04:00
Kitware Robot 4023bd7b11 CMake Nightly Date Stamp 2014-04-07 00:01:06 -04:00
Stephen Kelly a4e6bf8e36 cmTarget: Make GetSourceFiles string overload private.
Consumers should use the cmSourceFile overload, which is now
always the case.
2014-04-06 10:02:34 +02:00
Stephen Kelly 92e2fbe103 cmGeneratorTarget: Trace cmSourceFile objects instead of strings.
This reverses the decision in commit d38423ec (cmTarget: Add a
method to obtain list of filenames for sources., 2014-03-17).  The
cmSourceFile based API is preferred because that avoids creation of
many cmSourceFileLocation objects for matching strings, and the
result is cached by cmTarget.
2014-04-06 10:02:34 +02:00
Stephen Kelly c5b26f3bec cmTarget: Cache the cmSourceFiles in GetSourceFiles.
Avoid calling GetSourceFiles with the same result container multiple
times when tracing target dependencies.  The result from the previous
configuration is cached and used later otherwise.
2014-04-06 10:02:34 +02:00
Stephen Kelly eb163f37d4 cmTarget: Extract a ProcessSourceItemCMP0049 method.
Avoid calling AddSource for each src filename.  That involves
checking each entry for uniqueness and creating a separate
generator expression for each one.

Instead, add a single entry for the list of sources.  The source
files are passed through a uniqueness filter at generate-time, so
duplicates don't matter so much.
2014-04-06 10:02:34 +02:00
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