1. 24 Oct, 2013 2 commits
  2. 23 Oct, 2013 1 commit
  3. 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 and Brad King's avatar Brad King committed
      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
  4. 18 Oct, 2013 2 commits
  5. 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
  6. 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
  7. 07 Oct, 2013 2 commits
    • Stephen Kelly's avatar
      export: Add support for INTERFACE_LIBRARY targets · 435c9128
      Stephen Kelly authored and Brad King's avatar Brad King committed
      435c9128
    • Stephen Kelly's avatar
      Add the INTERFACE_LIBRARY target type. · fe732264
      Stephen Kelly authored and Brad King's avatar Brad King committed
      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
  8. 24 Sep, 2013 1 commit
  9. 17 Sep, 2013 1 commit
  10. 13 Sep, 2013 1 commit
  11. 12 Sep, 2013 1 commit
  12. 11 Sep, 2013 1 commit
  13. 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
  14. 28 Aug, 2013 1 commit
  15. 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
  16. 21 Aug, 2013 1 commit
  17. 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
  18. 31 Jul, 2013 1 commit
  19. 26 Jul, 2013 5 commits
  20. 25 Jul, 2013 1 commit
  21. 24 Jul, 2013 3 commits
  22. 18 Jul, 2013 1 commit
  23. 16 Jul, 2013 1 commit
  24. 15 Jul, 2013 1 commit
    • Brad King's avatar
      VS,Xcode: Drop incorrect legacy dependency trace (#14291) · 4bb6e248
      Brad King authored
      Drop the "vsProjectFile" argument from cmTarget::TraceDependencies.  It
      appears to be the modern equivalent to a hunk added in commit ba68f771
      (...added new custom command support, 2003-06-03):
      
       +  name = libName;
       +  name += ".dsp.cmake";
       +  srcFilesToProcess.push(name);
      
      but was broken by refactoring at some point.  The current behavior tries
      to trace dependencies on a source file named the same as a target, which
      makes no sense.  Furthermore, in code of the form
      
       add_executable(foo foo.c)
       add_custom_command(OUTPUT "${somewhere}/foo" ... DEPENDS foo)
      
      the "vsProjectFile" value "foo" matches source "${somewhere}/foo.rule"
      generated to hold the custom command and causes the command to be added
      to the "foo" target incorrectly.
      
      Simply drop the incorrect source file trace and supporting logic.
      4bb6e248
  25. 12 Jul, 2013 1 commit
    • Stephen Kelly's avatar
      Add target property debugging for COMPILE_DEFINITIONS · d7dd0108
      Stephen Kelly authored
      Use constructs similar to those for COMPILE_OPTIONS. This is a little
      different because there is a command to remove_definitions(), so
      we can't populate the equivalent target property until generate-time
      in cmGlobalGenerator.
      d7dd0108
  26. 11 Jul, 2013 2 commits
  27. 08 Jul, 2013 1 commit
    • Stephen Kelly's avatar
      TLL: Don't populate old link interface if CMP0022 is NEW. · 3e30d9ed
      Stephen Kelly authored
      Always populate the INTERFACE_LINK_LIBRARIES for interface
      entries. Don't populate the old interface properties
      matching (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?
      if CMP0022 is NEW.
      
      Because the INTERFACE_LINK_LIBRARIES property is now populated by
      the target_link_libraries when operating on a static library,
      make an equivalent change which populates the property with
      the same value when the old link_libraries() command is used. This
      silences the policy warning in that case.
      3e30d9ed