1. 09 Jun, 2014 2 commits
  2. 05 Jun, 2014 1 commit
  3. 29 May, 2014 1 commit
  4. 21 May, 2014 1 commit
    • Stephen Kelly's avatar
      Features: Add COMPILE_FEATURES generator expression. · 0dfe395e
      Stephen Kelly authored
      Allow setting build properties based on the features available
      for a target.  The availability of features is determined at
      generate-time by evaluating the link implementation.
      
      Ensure that the <LANG>_STANDARD determined while evaluating
      COMPILE_FEATURES in the link implementation is not lower than that
      provided by the INTERFACE of the link implementation.  This is
      similar to handling of transitive properties such as
      POSITION_INDEPENDENT_CODE.
      0dfe395e
  5. 02 Apr, 2014 3 commits
    • Stephen Kelly's avatar
      cmTarget: Allow transitive evaluation of SOURCES property. · 3676fb49
      Stephen Kelly authored
      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.
      3676fb49
    • Stephen Kelly's avatar
      cmTarget: Make the source files depend on the config. · e6971df6
      Stephen Kelly authored
      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.
      e6971df6
    • Stephen Kelly's avatar
      Genex: Only evaluate TARGET_OBJECTS to determine target sources. · 5de63265
      Stephen Kelly authored
      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.
      5de63265
  6. 31 Mar, 2014 1 commit
  7. 11 Mar, 2014 1 commit
    • Stephen Kelly's avatar
      Remove some c_str() calls. · 21c573f6
      Stephen Kelly authored
      Use the clang RemoveCStrCalls tool to automatically migrate the
      code. This was only run on linux, so does not have any positive or
      negative effect on other platforms.
      21c573f6
  8. 08 Mar, 2014 3 commits
  9. 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
  10. 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
  11. 08 Jan, 2014 2 commits
  12. 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
  13. 06 Jan, 2014 5 commits
  14. 19 Dec, 2013 4 commits
  15. 27 Nov, 2013 1 commit
  16. 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
  17. 21 Nov, 2013 1 commit
  18. 09 Nov, 2013 2 commits
  19. 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
  20. 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
  21. 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
  22. 22 Oct, 2013 2 commits
  23. 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
  24. 28 Aug, 2013 1 commit