1. 08 Mar, 2014 3 commits
  2. 24 Feb, 2014 2 commits
    • Stephen Kelly's avatar
      cmTarget: Avoid computing languages when computing transitive targets. · b8b99cc1
      Stephen Kelly authored
      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.
      b8b99cc1
    • Stephen Kelly's avatar
      cmTarget: Change GetTransitivePropertyLinkLibraries to output targets. · 21e91350
      Stephen Kelly authored
      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.
      21e91350
  3. 16 Jan, 2014 1 commit
    • Rolf Eike Beer's avatar
      cmMakefile: make some methods take const std::string& instead of const char* · c768e398
      Rolf Eike Beer authored and Brad King's avatar Brad King committed
      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.
      c768e398
  4. 08 Jan, 2014 2 commits
  5. 07 Jan, 2014 1 commit
    • Stephen Kelly's avatar
      Genex: Add a nullary form for CONFIG · 3917d86b
      Stephen Kelly authored and Brad King's avatar Brad King committed
      This is consistent with other similar expressions such as PLATFORM_ID,
      and makes the CONFIGURATION expression obsolete.
      
      Fix an off-by-one error in
      GeneratorExpressionContent::EvaluateParameters exposed by a unit test.
      
      Remove the test for 'bad' nullary use of $<CONFIG>.
      
      Add a unit test to verify that $<CONFIG> and $<CONFIGURATION> have
      the same value.
      3917d86b
  6. 06 Jan, 2014 5 commits
  7. 19 Dec, 2013 4 commits
  8. 27 Nov, 2013 1 commit
  9. 25 Nov, 2013 1 commit
    • Stephen Kelly's avatar
      INTERFACE_LIBRARY: Avoid codepaths which set unneeded properties. · 0bfcb450
      Stephen Kelly authored
      As an INTERFACE_LIBRARY has no direct link dependencies, we can
      short-circuit in cmGeneratorExpressionEvaluator and
      in cmGlobalGenerator::CheckLocalGenerators.
      
      As they do not generate any output directly, any generate- or install-
      related code acn also be short-circuited. Many of the local generators
      already do this.
      
      Because only INTERFACE related properties make sense on INTERFACE_LIBRARY
      targets, avoid setting other properties, for example via defaults.
      0bfcb450
  10. 21 Nov, 2013 1 commit
  11. 09 Nov, 2013 2 commits
  12. 01 Nov, 2013 1 commit
    • Brad King's avatar
      Genex: Reject $<TARGET_FILE:...> for object libraries (#14532) · d9605897
      Brad King authored
      Teach the cmGeneratorExpressionEvaluator filesystem artifact logic
      to reject OBJECT_LIBRARY targets since they have no main artifact.
      Without the explicit rejection evaluation falls through to an
      internal CMake error message in cmTarget::GetOutputInfo.
      
      Extend the RunCMake.GeneratorExpression test to cover these cases.
      d9605897
  13. 31 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      cmTarget: Make GetProperty() const. · c4373b33
      Stephen Kelly authored
      This has follow-on effects for other methods and classes. Further
      work on making the use of const cmTarget pointers common can be
      done, particularly with a view to generate-time methods.
      c4373b33
  14. 24 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      cmTarget: Add interface for compatible numeric properties · ff6c4013
      Stephen Kelly authored
      When using the boost MPL library, one can set a define to increase
      the limit of how many variadic elements should be supported. The
      default for BOOST_MPL_LIMIT_VECTOR_SIZE is 20:
      
       http://www.boost.org/doc/libs/1_36_0/libs/mpl/doc/refmanual/limit-vector-size.html
      
      If the foo library requires that to be set to 30, and the independent
      bar library requires it to be set to 40, consumers of both need to set
      it to 40.
      
       add_library(foo INTERFACE)
       set_property(TARGET foo PROPERTY INTERFACE_boost_mpl_vector_size 30)
       set_property(TARGET foo PROPERTY COMPATIBLE_INTERFACE_NUMBER_MAX boost_mpl_vector_size)
       target_compile_definitions(foo INTERFACE BOOST_MPL_LIMIT_VECTOR_SIZE=$<TARGET_PROPERTY:boost_mpl_vector_size>)
      
       add_library(bar INTERFACE)
       set_property(TARGET bar PROPERTY INTERFACE_boost_mpl_vector_size 40)
       # Technically the next two lines are redundant, but as foo and bar are
       # independent, they both set these interfaces.
       set_property(TARGET bar PROPERTY COMPATIBLE_INTERFACE_NUMBER_MAX boost_mpl_vector_size)
       target_compile_definitions(bar INTERFACE BOOST_MPL_LIMIT_VECTOR_SIZE=$<TARGET_PROPERTY:boost_mpl_vector_size>)
      
       add_executable(user)
       target_link_libraries(user foo bar)
      
      Because the TARGET_PROPERTY reads the boost_mpl_vector_size property
      from the HEAD of the dependency graph (the user target), and because
      that property appears in the COMPATIBLE_INTERFACE_NUMBER_MAX of
      the dependencies of the user target, the maximum value for it is
      chosen for the compile definition, ie, 40.
      
      There are also use-cases for choosing the minimum value of a number.
      In Qt, deprecated API can be disabled by version. Setting the
      definition QT_DISABLE_DEPRECATED_BEFORE=0 disables no deprecated
      API. Setting it to 0x501000 disables API which was deprecated before
      Qt 5.1 etc.
      
      If two dependencies require the use of API which was deprecated in
      different Qt versions, then COMPATIBLE_INTERFACE_NUMBER_MIN can be
      used to ensure that both can compile.
      ff6c4013
  15. 22 Oct, 2013 2 commits
  16. 21 Oct, 2013 1 commit
    • Rolf Eike Beer's avatar
      use size_t for GeneratorExpressionContent::ContentLength to fix some warnings · a80fe4b1
      Rolf Eike Beer authored
      CMake/Source/cmGeneratorExpressionParser.cxx: In member function ‘void cmGeneratorExpressionParser::ParseGeneratorExpression(std::vector<cmGeneratorExpressionEvaluator*>&)’:
      CMake/Source/cmGeneratorExpressionParser.cxx:116:55: warning: conversion to ‘unsigned int’ from ‘long int’ may alter its value [-Wconversion]
      CMake/Source/cmGeneratorExpressionParser.cxx:240:39: warning: conversion to ‘int’ from ‘long int’ may alter its value [-Wconversion]
      a80fe4b1
  17. 28 Aug, 2013 1 commit
  18. 27 Aug, 2013 1 commit
    • Stephen Kelly's avatar
      Genex: Fix evaluation of MAP_IMPORTED_CONFIG_<CONFIG> · 15d98a42
      Stephen Kelly authored
      Commit 10a069b5 (Genex: Fix $<CONFIG> with IMPORTED targets and
      multiple locations., 2013-07-15) changed the logic here to include
      handling of the MAP_IMPORTED_CONFIG_<CONFIG> target property, but
      it was buggy in several ways.
      
      Uppercase the configs in all cases, and compare the mapped configs
      with the parameter to the CONFIG genex, instead of with the key of
      the mapping.
      15d98a42
  19. 02 Aug, 2013 1 commit
    • Stephen Kelly's avatar
      Add the ALIAS target concept for libraries and executables. · 370bf554
      Stephen Kelly authored
      * The ALIAS name must match a validity regex.
      * Executables and libraries may be aliased.
      * An ALIAS acts immutable. It can not be used as the lhs
        of target_link_libraries or other commands.
      * An ALIAS can be used with add_custom_command, add_custom_target,
        and add_test in the same way regular targets can.
      * The target of an ALIAS can be retrieved with the ALIASED_TARGET
        target property.
      * An ALIAS does not appear in the generated buildsystem. It
        is kept separate from cmMakefile::Targets for that reason.
      * A target may have multiple aliases.
      * An ALIAS target may not itself have an alias.
      * An IMPORTED target may not have an alias.
      * An ALIAS may not be exported or imported.
      370bf554
  20. 26 Jul, 2013 1 commit
  21. 24 Jul, 2013 2 commits
  22. 16 Jul, 2013 1 commit
  23. 11 Jul, 2013 1 commit
  24. 07 Jul, 2013 2 commits
  25. 28 Jun, 2013 1 commit