summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Process the INTERFACE_PIC property from linked dependenciesStephen Kelly2013-01-1019-8/+99
| | | | | | | | | This allows a dependee to inform a target that it should have its POSITION_INDEPENDENT_CODE property set to ON, or OFF. The value of the POSITION_INDEPENDENT_CODE property, if set, must be consistent with any INTERFACE_POSITION_INDEPENDENT_CODE properties on dependees. Add a test covering the consistency checks on platforms where they run.
* Add API to calculate link-interface-dependent bool properties or error.Stephen Kelly2013-01-082-0/+131
| | | | | | | | This new method checks that the property FOO on a target is consistent with the INTERFACE_FOO properties of its dependees. If they are not the consistent, an error is reported. 'Consistent' means that iff the property is set, it must have the same boolean value as all other related properties.
* Keep track of properties used to determine linker libraries.Stephen Kelly2013-01-086-2/+73
| | | | | Those properties can't later be implicitly defined by the interface of those link libraries.
* Merge topic 'LINK_LIBRARIES-property'Brad King2013-01-0813-86/+282
|\ | | | | | | | | | | 7653862 Add LINK_LIBRARIES property for direct target link dependencies 40cf3fb Make linking APIs aware of 'head' target
| * Add LINK_LIBRARIES property for direct target link dependenciesStephen Kelly2013-01-087-17/+164
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we kept direct link dependencies in OriginalLinkLibraries. The property exposes the information in the CMake language through the get/set_property commands. We preserve the OriginalLinkLibraries value internally to support old APIs like that for CMP0003's OLD behavior, but the property is now authoritative. This follows up from commit d5cf644a (Split link information processing into two steps, 2012-11-01). This will be used later to populate the link interface properties when exporting targets, and will later allow use of generator expressions when linking to libraries with target_link_libraries. Also make targets depend on the (config-specific) union of dependencies. CMake now allows linking to dependencies or not depending on the config. However, generated build systems are not all capable of processing config-specific dependencies, so the targets depend on the union of dependencies for all configs.
| * Make linking APIs aware of 'head' targetStephen Kelly2013-01-089-70/+119
| | | | | | | | | | | | | | | | | | | | | | The 'head' is the dependent target to be linked with the current target. It will be used to evaluate generator expressions with proper handling of mapped configurations and is used as the source target of properties. This requires that memoization is done with a key of a pair of target and config, instead of just config, because now the result also depends on the target. Removing the memoization entirely is not an option because it slows cmake down considerably.
* | Merge topic 'update-kwsys'Brad King2013-01-089-600/+639
|\ \ | | | | | | | | | | | | | | | 6f6afbd Merge branch 'upstream-kwsys' into update-kwsys 495fa24 KWSys 2013-01-07 (fc60c8b8)
| * \ Merge branch 'upstream-kwsys' into update-kwsysBrad King2013-01-089-600/+639
| |\ \
| | * | KWSys 2013-01-07 (fc60c8b8)KWSys Robot2013-01-089-600/+639
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extract upstream KWSys using the following shell commands. $ git archive --prefix=upstream-kwsys/ fc60c8b8 | tar x $ git shortlog --no-merges --abbrev=8 --format='%h %s' 8ce09af5..fc60c8b8 Brad King (3): cb5f835f SystemTools: Fix MakeDirectory with colon in path 1643507a IOStream: Fix check for compiler 'long long' support 34177aec SystemTools: Fix MakeDirectory after recent cleanup Rolf Eike Beer (24): 4da9894d SystemInformation: Clean up QuerySolarisInfo() 01392358 SystemInformation: don't attribute i386 Solaris systems to Sun 3db65ac1 SystemInformation: wrap the call to CPUID in a function 61bd9b42 SystemInformation: use the __cpuid compiler intrinsic if present 5932e7c0 SystemInformation: query memory size on Cygwin using sysconf() ea5612ed SystemInformation: count memory with _SC_PAGESIZE and _SC_PHYS_PAGES 3aca6642 SystemInformation: query memory size, CPU count, and CPU speed on BSD 3572c54d SystemInformation: count CPUs on HP-UX e6771b34 SystemInformation: determine CPU type on HP-UX 640210e5 SystemInformation: use /proc/cpuinfo only when present 5bdcfd10 SystemInformation: query total memory on AIX de69d547 SystemInformation: use intrinsic for RDTSC if supported 9808d4e7 SystemInformation: get CPU speed on Windows when RDTSC fails f4c625b5 tests: avoid truncation of testSystemInformation output in CDash 03d6fbe5 SystemInformation: get x86 CPU features from /proc/cpuinfo f8e917c1 SystemInformation: remove the #define CPUID_INSTRUCTION 59c4b5c5 SystemInformation: split Windows code out of QueryMemory() 200ee91f SystemInformation: split HP-UX code out of QueryMemory() 88217703 SystemInformation: split Linux code out of QueryMemory() 9e317872 SystemInformation: split AIX code out of QueryMemory() 349cee5b SystemInformation: remove useless zeroing from QueryMemory() 7271926e SystemInformation: split Cygwin code out of QueryMemory() 6da78ad1 SystemInformation: make QueryMemory() return bool 182179e9 Haiku no longer defines __BEOS__ Stephen Kelly (1): 247b8a3c SystemTools: Rename MakeCnidentifier() to MakeCidentifier() Change-Id: Ib95b5bddab7ecc0a4025ab29792426acf57e5623
* | | | Merge topic 'include-dirs-convenience'Brad King2013-01-087-1/+64
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | 9ce1b9e Add CMAKE_BUILD_INTERFACE_INCLUDES build-variable.
| * | | | Add CMAKE_BUILD_INTERFACE_INCLUDES build-variable.Stephen Kelly2013-01-087-1/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes set(CMAKE_BUILD_INTERFACE_INCLUDES ON) add the equivalent of set_property(TARGET tgt APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}> ) to every target. If the headers are in CMAKE_CURRENT_SOURCE_DIR, and the generated headers are in CMAKE_CURRENT_BINARY_DIR, this is a convenient way to build a target bar, which depends on foo, just by using target_link_libraries() and adding the INTERFACE_INCLUDE_DIRECTORIES to the INCLUDE_DIRECTORIES of the target being linked. There will be more-convenient porcelain API to consume the property in the future.
* | | | | Merge topic 'qt4-version-openssl'Brad King2013-01-081-5/+5
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 4b9ec00 FindQt4: set QT_VERSION_* variables sooner.
| * | | | | FindQt4: set QT_VERSION_* variables sooner.Clinton Stimpson2013-01-071-5/+5
| | |/ / / | |/| | | | | | | | | | | | | | | | | | Set QT_VERSION_* variables sooner so they can be set before Qt4ConfigDependentSettings.cmake uses them.
* | | | | Merge topic 'vs11-external-object'Brad King2013-01-081-5/+20
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | b684b39 VS11: Simplify external object file handling (#13831)
| * | | | | VS11: Simplify external object file handling (#13831)Brad King2013-01-071-5/+20
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 9a6ff950 (Fix for bug where VS2010 did not use .obj files as part of the build, 2011-04-01) and commit b291d9e7 (VS10: Fix external objects generated outside target, 2012-03-19) we try to detect whether an external object file is also a custom command output in the same target. This is because VS10 includes .obj custom command outputs on the link line by default. VS 11 supports a "<LinkObjects ...>false</LinkObjects>" setting in custom command rules to tell VS not to link the outputs. From the VS help: Specify whether the Inputs and output files with specific extensions (.obj, .lib, .res, .rsc) are passed to the linker. Treat all external object files the same and add "<Object>" settings for them.
* | | | | Merge topic 'deprecate-load_command'Brad King2013-01-087-32/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 09a0da7 Revert "load_command: Deprecate and document pending removal"
| * | | | | Revert "load_command: Deprecate and document pending removal"Brad King2013-01-077-32/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d2d43986e7f5013465473a71c393fc3897cecbac. We will add a policy to remove the command more gracefully.
* | | | | | CMake Nightly Date StampKitware Robot2013-01-081-1/+1
| |_|/ / / |/| | | |
* | | | | Merge topic 'osx-implicit-link-dirs'Brad King2013-01-0713-29/+220
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cc676c3 OS X: Detect implicit linker framework search paths 2dd67c7 OS X: Detect implicit link directories on modern toolchains ba58d0c OS X: Link with all framework search paths, not just the last
| * | | | | OS X: Detect implicit linker framework search pathsBrad King2012-12-1110-22/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we hard-coded a list of implicit framework directories but did not account for CMAKE_OSX_SYSROOT or for changes to the list across OS X versions. Instead we should automatically detect the framework directories for the active toolchain. The parent commit added the "-Wl,-v" option to ask "ld" to print its implicit directories. It displays a block such as: Framework search paths: /... Parse this block to extract the list of framework directories. Detection may fail on toolchains that do not list their framework directories, such as older OS X linkers. Always treat the paths <sdk>/Library/Frameworks <sdk>/System/Library/Frameworks <sdk>/Network/Library/Frameworks # Older OS X only /System/Library/Frameworks as implicit. Note that /System/Library/Frameworks should always be considered implicit so that frameworks CMake finds there will not override the SDK copies.
| * | | | | OS X: Detect implicit link directories on modern toolchainsBrad King2012-12-115-15/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We detect the implicit link directories for the toolchain by adding a flag to get verbose output from the compiler front-end while linking the ABI detection binary. Newer OS X toolchains based on Clang do not add the implicit link directories with -L options to their internal invocation of "ld". Instead they use a linker that comes with the toolchain and is already configured with the proper directories. Add the "-Wl,-v" option to ask "ld" to print its implicit directories. It displays them in a block such as: Library search paths: /... Parse this block to extract the implicit link directories. While at it, remove the checks introduced by commit efaf335b (Skip implicit link information on Xcode, 2009-07-23) and commit 5195a664 (Skip implicit link info for multiple OS X archs, 2009-09-22). Discard the non-system link directories added by Xcode. Discard all detected implicit libraries in the multi-architecture case but keep the directories. The directories are still useful without the libraries just to suppress addition of explicit -L options for them.
| * | | | | OS X: Link with all framework search paths, not just the lastBrad King2012-12-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactoring in commit 8d674e78 (Ninja: move -LIBPATH behind -link option, 2012-09-26) accidentally added code that overwrites the framework search path flags on each iteration instead of appending. Change '=' to '+=' to fix it. This affects Makefile and Ninja generators.
* | | | | | Merge topic 'interface-includes-defines'Brad King2013-01-0726-118/+817
|\ \ \ \ \ \ | | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 894f52f Handle INTERFACE properties transitively for includes and defines. f5b1980 Populate the ExportedTargets member early in GenerateMainFile c67b812 Make cycles in target properties ignored, not an error. d0f950f Use mapped config properties to evaluate $<CONFIG> 26def17 Make all relevant targets available in the genex context. 0c657dc Add API to populate INTERFACE properties in exported targets. e04f737 Add API to extract target names from a genex string. b0c8f73 Add the TARGET_NAME generator expression. 77475fe Allow generator expressions to require literals. b2f1700 GenEx: Add expressions to specify build- or install-only values
| * | | | | Handle INTERFACE properties transitively for includes and defines.Stephen Kelly2013-01-059-2/+243
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Contextually, the behavior is as if the properties content from another target is included in the string and then the result is evaluated.
| * | | | | Populate the ExportedTargets member early in GenerateMainFileStephen Kelly2013-01-052-22/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The member variable is checked to determine whether to call HandleMissingTarget(). As that could be called during the loop in the comming commits, ensure that it contains all targets being exported.
| * | | | | Make cycles in target properties ignored, not an error.Stephen Kelly2013-01-053-11/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Constructs such as these are an error as they are direct self-references: set_property(TARGET foo APPEND PROPERTY INCLUDE_DIRECTORIES $<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>) set_property(TARGET foo APPEND PROPERTY INCLUDE_DIRECTORIES $<TARGET_PROPERTY:INCLUDE_DIRECTORIES>) However, this is an indirect self-reference in a cycle, and not an error: set_property(TARGET foo APPEND PROPERTY INCLUDE_DIRECTORIES $<TARGET_PROPERTY:bar,INCLUDE_DIRECTORIES>) set_property(TARGET bar APPEND PROPERTY INCLUDE_DIRECTORIES $<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>)
| * | | | | Use mapped config properties to evaluate $<CONFIG>Stephen Kelly2013-01-053-39/+72
| | | | | |
| * | | | | Make all relevant targets available in the genex context.Stephen Kelly2013-01-055-6/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current node being evaluated transitively in the generator expression must be available to resolve mapped configs.
| * | | | | Add API to populate INTERFACE properties in exported targets.Stephen Kelly2013-01-052-0/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The INTERFACE properties need to be preprocessed for context (build location or install location) and to extract target names etc.
| * | | | | Add API to extract target names from a genex string.Stephen Kelly2013-01-052-0/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The TARGET_NAME expression, which requires a literal, provides target names. $<TARGET_PROPERTY:tgt,prop> also provides target names in the cases where tgt is a literal, so that TARGET_NAME is not needed then in addition.
| * | | | | Add the TARGET_NAME generator expression.Stephen Kelly2013-01-058-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | It will be used as a preprocessing marker.
| * | | | | Allow generator expressions to require literals.Stephen Kelly2013-01-051-0/+17
| | | | | |
| * | | | | GenEx: Add expressions to specify build- or install-only valuesStephen Kelly2013-01-058-38/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is for specifying INCLUDE_DIRECTORIES relevant to the build-location or the install location for example: set_property(TARGET foo PROPERTY INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>" ) A 'bar' target can then use: set_property(TARGET bar PROPERTY INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>" ) and it will work whether foo is in the same project, or an imported target from an installation location, or an imported target from a build location generated by the export() command. Because the generator expressions are only evaluated at build-time, these new expressions are equivalent to the ZeroNode and OneNode. The GeneratorExpression test is split into parts. Some shells can't run the custom command as it is getting too long.
* | | | | | Merge topic 'ninja-codeblocks-gui'Brad King2013-01-071-0/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 76c4430 Ninja: fix building from Codeblocks GUI
| * | | | | | Ninja: fix building from Codeblocks GUIPeter Kümmel2013-01-051-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many thx to Chuck Frayman BUG: 13652
* | | | | | | Merge topic 'doc-Xcode-obj-lib-workaround'Brad King2013-01-071-0/+4
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 51988a4 add_library: Document object library portability suggestion
| * | | | | | | add_library: Document object library portability suggestionBrad King2013-01-041-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Xcode and VS <= 7.1 will not build targets that have no source files besides $<TARGET_OBJECTS:...>. Suggest in the documentation that projects always add at least one real source file.
* | | | | | | | Merge topic 'test-genex-custom-command'Brad King2013-01-071-0/+6
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 119bf4b Add test for custom command with a genex referring to a target.
| * | | | | | | | Add test for custom command with a genex referring to a target.Stephen Kelly2013-01-071-0/+6
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test failed before d8a59ea4 (Port cmGeneratorExpression to cmTarget from cmGeneratorTarget, 2012-10-27), and passes after.
* | | | | | | | Merge topic 'fix-genex-with-no-target'Brad King2013-01-071-0/+15
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e767ffc Don't crash when a target is expected but is not available.
| * | | | | | | | Don't crash when a target is expected but is not available.Stephen Kelly2013-01-031-0/+15
| |/ / / / / / /
* | | | | | | | Merge topic 'qt4-target-depends'Brad King2013-01-074-0/+100
|\ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | 57a67bf Qt4: Add module dependencies to the IMPORTED targets
| * | | | | | | Qt4: Add module dependencies to the IMPORTED targetsStephen Kelly2013-01-074-0/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means for example, that consumers can use: target_link_libraries(foo ${QT_QTGUI_LIBRARIES}) instead of also needing to specify all 'public' dependencies: target_link_libraries(foo ${QT_QTGUI_LIBRARIES} ${QT_QTCORE_LIBRARIES} ) when using the IMPORTED targets. Also populate the IMPORTED_LINK_DEPENDENT_LIBRARIES property so CMake can help the linker find shared library dependencies.
* | | | | | | | CMake Nightly Date StampKitware Robot2013-01-071-1/+1
| | | | | | | |
* | | | | | | | CMake Nightly Date StampKitware Robot2013-01-061-1/+1
| |_|/ / / / / |/| | | | | |
* | | | | | | CMake Nightly Date StampKitware Robot2013-01-051-1/+1
| |_|/ / / / |/| | | | |
* | | | | | CMake Nightly Date StampKitware Robot2013-01-041-1/+1
| |/ / / / |/| | | |
* | | | | Merge topic 'fix-test-warnings'Brad King2013-01-031-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | b6346f2 Tests: Fix warning about unused variable
| * | | | | Tests: Fix warning about unused variableStephen Kelly2013-01-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolve this warning: ".../Tests/CMakeCommands/target_link_libraries/depB.cpp", line 8: warning: variable "a" was declared but never referenced DepA a; ^
* | | | | | Merge topic 'FixSDLSearchPaths'Brad King2013-01-035-5/+10
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | fb864d6 FindSDL_...: Restore dropped search paths (#13819)