Updates will be applied on October 27th between 12pm - 12:45pm EDT (UTC-0400). Gitlab may be slow during the maintenance window.

  1. 07 Nov, 2013 1 commit
  2. 04 Nov, 2013 2 commits
  3. 03 Nov, 2013 2 commits
    • Stephen Kelly's avatar
      cmTarget: Make some accessors const. · 6bdea066
      Stephen Kelly authored
      6bdea066
    • Brad King's avatar
      CMP0022: Warn about a given target at most once · 0a561a03
      Brad King authored
      Since cmTarget::ComputeLinkInterface is called separately for each
      "head" target that links a target, the warning we produce when
      CMP0022 is not set could be repeated.  Add explicit logic to allow
      the warning to appear at most once.  Multiple copies of the warning
      for the same target are almost always identical and therefore
      redundant.  In the rare case that two copies of the warning are
      different, the second can appear in a future run after the first
      is fixed.
      0a561a03
  4. 02 Nov, 2013 1 commit
    • Brad King's avatar
      CMP0022: Plain target_link_libraries must populate link interface · ef10b87c
      Brad King authored
      The CMP0022 NEW behavior is that the INTERFACE_LINK_LIBRARIES property
      exactly defines the link interface.  The plain target_link_libraries
      signature says linking is transitive by default, so it should populate
      the property.
      
      Teach the target_link_libraries plain signature to populate the
      INTERFACE_LINK_LIBRARIES regardless of the CMP0022 setting.  Refactor
      the cmTarget::ComputeLinkInterface checks that warn when the policy is
      not set to compare the new property to either the explicitly set old
      link interface properties or the link implementation fallback for all
      linkable target types, not just static libraries.
      
      This fixes a regression in 2.8.12.0 that caused target_link_libraries to
      not implement transitive linking in the plain signature once the policy
      CMP0022 is set to NEW.
      ef10b87c
  5. 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
  6. 30 Oct, 2013 3 commits
  7. 29 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      Remove the Location member from cmTarget. · 638843af
      Stephen Kelly authored
      It is never used. Presumably it only exists so that a const char * can
      be returned from GetLocation. However, that is getting in the way
      now, so use a static std::string instead, which is already a common
      pattern in cmake.
      638843af
  8. 27 Oct, 2013 1 commit
  9. 26 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      Don't add invalid content to static lib INTERFACE_LINK_LIBRARIES. · 239b0c6b
      Stephen Kelly authored
      Only valid target names or generator expressions may appear in
      the target field of a LINK_ONLY expression.
      
      Other content like link flags should still be added to that property
      (wrapped in config-specific generator expressions), but not wrapped
      in LINK_ONLY. Otherwise undue warnings would be issued for the
      policy CMP0022.
      
      The LINK_ONLY expression only has an effect for actual target
      names anyway, so there is no logical deficit.
      239b0c6b
  10. 24 Oct, 2013 7 commits
    • Stephen Kelly's avatar
      Add automatic rcc invocation for Qt. · 9c87d9cc
      Stephen Kelly authored
      This replaces the need to invoke qt4_add_resources by allowing
      adding the source .qrc file directly to the target sources.
      9c87d9cc
    • Stephen Kelly's avatar
      Add automatic uic invocation for Qt. · 84218e18
      Stephen Kelly authored
      The source files are already processed by cmQtAutomoc to look for
      moc includes, so extend that to also look for ui_ includes and
      find corresponding .ui files to process.
      
      This replaces the need to invoke qt4_wrap_ui().
      
      As the ui files are not likely to be part of the SOURCES of the
      target, store the options associated with them separately in the
      cmMakefile for querying during the autogen run.
      84218e18
    • 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
    • Stephen Kelly's avatar
      cmTarget: Add enumeration for consistency to expect from properties. · e4e20c1d
      Stephen Kelly authored
      The type of consistency to be expected will be extended to cover
      numeric minimum and maximum.
      e4e20c1d
    • Stephen Kelly's avatar
      cmTarget: Assign consistent content back to the property being evaluated. · 98777694
      Stephen Kelly authored
      Currently, 'consistent' means the same or not set. Soon though,
      it will be possible to choose a minimum number from an interface
      for example.
      98777694
    • Stephen Kelly's avatar
      cmTarget: Make consistentProperty return consistent content. · 816b4a8a
      Stephen Kelly authored
      Upcoming features will make use of that.
      816b4a8a
    • Stephen Kelly's avatar
      cmTarget: Add a template to create correct implied content. · 030800a7
      Stephen Kelly authored
      Otherwise, in the string case, we would get a null pointer instead
      of the implied empty string. That will become relevant when the
      comparison result is used.
      030800a7
  11. 23 Oct, 2013 2 commits
    • Brad King's avatar
      Drop compatibility with CMake < 2.4 · 7d47c693
      Brad King authored
      Drop all behavior activated by setting CMAKE_BACKWARDS_COMPATIBILITY to
      a value lower than 2.4, and generate an error when projects or the user
      attempt to do so.  In the error suggest using a CMake 2.8.x release.
      
      Teach cmake_minimum_required to warn about projects that do not require
      at least CMake 2.4.  They are not supported by CMake >= 3.0.
      
      Replace the documentation of CMAKE_BACKWARDS_COMPATIBILITY with a
      reference to policy CMP0001.
      7d47c693
    • Stephen Kelly's avatar
      CMP0022: Output link interface mismatch for static library warning · 0b3b3368
      Stephen Kelly authored
      Other warnings for the same policy already have similar output since
      commit 81d2793e (Add differing target property content to policy CMP0022
      warning, 2013-09-11).
      0b3b3368
  12. 21 Oct, 2013 2 commits
    • Stephen Kelly's avatar
      Consider targets with double colons to be IMPORTED or ALIAS targets. · f063c455
      Stephen Kelly authored
      Introduce a policy to control the behavior.
      
      The AliasTargets unit test already tests that using a
      double-semicolon in the name is not an error. Change the ExportImport
      test to use a namespace with a double-semicolon too.
      f063c455
    • Stephen Kelly's avatar
      Create make rules for INTERFACE_LIBRARY targets. · b04f3b9a
      Stephen Kelly authored
      The result is that the depends of the target are created.
      
      So,
      
       add_library(somelib foo.cpp)
       add_library(anotherlib EXCLUDE_FROM_ALL foo.cpp)
       add_library(extra EXCLUDE_FROM_ALL foo.cpp)
       target_link_libraries(anotherlib extra)
      
       add_library(iface INTERFACE)
       target_link_libraries(iface INTERFACE anotherlib)
      
      Executing 'make iface' will result in the anotherlib and extra targets
      being made.
      
      Adding a regular executable to the INTERFACE of an INTERFACE_LIBRARY
      will not result in the executable being built with 'make iface' because
      of the logic in cmComputeTargetDepends::AddTargetDepend.
      
      So far, this is implemented only for the Makefile generator. Other
      generators will follow if this feature is possible for them.
      
      Make INTERFACE_LIBRARY targets part of the all target by default.
      Test this by building the all target and making the expected library
      EXCLUDE_FROM_ALL.
      b04f3b9a
  13. 18 Oct, 2013 2 commits
  14. 16 Oct, 2013 2 commits
    • Brad King's avatar
      Drop builtin property documentation · 399e9c46
      Brad King authored
      Drop all DefineProperty calls for non-chained properties.  Drop the
      documentation from the chained ones.  The documentation for all
      properties is now in Help/prop_*/*.rst files.
      399e9c46
    • Brad King's avatar
      Teach COMPATIBLE_INTERFACE_* checks to use Help .rst documents · b336a1eb
      Brad King authored
      These checks want to know if named target properties are builtin, which
      is now known by checking the Help/prop_tgt directory.  (Previously the
      check could be confused by a define_property call in the project.)
      b336a1eb
  15. 11 Oct, 2013 2 commits
    • Stephen Kelly's avatar
      cmTarget: Deprecate the LOCATION target property with a policy. · e4e5b28c
      Stephen Kelly authored
      The final location and name of a build-target is not determined
      until generate-time. However, reading the LOCATION property from
      a target is currently allowed at configure time. Apart from creating
      possibly-erroneous results, this has an impact on the implementation
      of cmake itself, and prevents some major cleanups from being made.
      
      Disallow reading LOCATION from build-targets with a policy. Port some
      existing uses of it in CMake itself to use the TARGET_FILE generator
      expression.
      e4e5b28c
    • Stephen Kelly's avatar
      Deprecate COMPILE_FLAGS target property. · 3507d5af
      Stephen Kelly authored
      It is succeeded by COMPILE_OPTIONS, which supports generator
      expressions, is a list rather than a string, and is properly
      escaped.
      3507d5af
  16. 07 Oct, 2013 2 commits
    • Stephen Kelly's avatar
      435c9128
    • Stephen Kelly's avatar
      Add the INTERFACE_LIBRARY target type. · fe732264
      Stephen Kelly authored
      This target type only contains INTERFACE_* properties, so it can be
      used as a structural node. The target-specific commands enforce
      that they may only be used with the INTERFACE keyword when used
      with INTERFACE_LIBRARY targets. The old-style target properties
      matching LINK_INTERFACE_LIBRARIES_<CONFIG> are always ignored for
      this target type.
      
      The name of the INTERFACE_LIBRARY must match a validity generator
      expression. The validity is similar to that of an ALIAS target,
      but with the additional restriction that it may not contain
      double colons. Double colons will carry the meaning of IMPORTED
      or ALIAS targets in CMake 2.8.13.
      
      An ALIAS target may be created for an INTERFACE library.
      
      At this point it can not be exported and does not appear in the
      buildsystem and project files are not created for them. That may
      be added as a feature in a later commit.
      
      The generators need some changes to handle the INTERFACE_LIBRARY
      targets returned by cmComputeLinkInterface::GetItems. The Ninja
      generator does not use that API, so it doesn't require changes
      related to that.
      fe732264
  17. 24 Sep, 2013 1 commit
  18. 17 Sep, 2013 1 commit
  19. 13 Sep, 2013 1 commit
  20. 12 Sep, 2013 1 commit
  21. 11 Sep, 2013 1 commit
  22. 09 Sep, 2013 1 commit
    • Stephen Kelly's avatar
      Use one authorative source of the LINK_LIBRARIES property. · f01dc72c
      Stephen Kelly authored
      We populate and maintain a vector of structs to keep track of
      backtraces already, so no need to populate the Properties container
      additionally.
      
      For completeness, it is necessary to remove the condition for
      populating the vector for only valid library names and generator
      expressions. That condition is now determined when evaluating the
      generator expressions.
      f01dc72c
  23. 28 Aug, 2013 1 commit
  24. 24 Aug, 2013 1 commit
    • Stephen Kelly's avatar
      Fix OLD behavior of CMP0021. · eef6df5c
      Stephen Kelly authored
      Exclude Ninja and Xcode from the CMP0021 test
      
      They do not behave the same as the makefile generator with
      relative paths.
      
      Don't overwrite the header file for in-source builds.
      eef6df5c