1. 27 Sep, 2016 1 commit
    • Brad King's avatar
      Simplify CMake per-source license notices · 86578ecc
      Brad King authored
      Per-source copyright/license notice headers that spell out copyright holder
      names and years are hard to maintain and often out-of-date or plain wrong.
      Precise contributor information is already maintained automatically by the
      version control tool.  Ultimately it is the receiver of a file who is
      responsible for determining its licensing status, and per-source notices are
      merely a convenience.  Therefore it is simpler and more accurate for
      each source to have a generic notice of the license name and references to
      more detailed information on copyright holders and full license terms.
      
      Our `Copyright.txt` file now contains a list of Contributors whose names
      appeared source-level copyright notices.  It also references version control
      history for more precise information.  Therefore we no longer need to spell
      out the list of Contributors in each source file notice.
      
      Replace CMake per-source copyright/license notice headers with a short
      description of the license and links to `Copyright.txt` and online information
      available from "https://cmake.org/licensing".  The online URL also handles
      cases of modules being copied out of our source into other projects, so we
      can drop our notices about replacing links with full license text.
      
      Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
      of the replacements mechanically.  Manually fix up shebang lines and trailing
      newlines in a few files.  Manually update the notices in a few files that the
      script does not handle.
      86578ecc
  2. 07 Sep, 2016 1 commit
    • Brad King's avatar
      ExternalData: Tolerate files duplicated across multiple targets · f9973166
      Brad King authored
      If multiple ExternalData_Target_Add calls generate the same output file
      then we need to avoid calling add_custom_command multiple times with
      that output.  This was already done within a single target by setting a
      variable in the local function scope.  This will not be visible in other
      calls though so we need to use a directory property instead to prevent
      adding a custom command multiple times for one output in a directory.
      
      Normally it is not safe to have multiple custom commands that produce
      the same output file across multiple independent targets, but since we
      use atomic replacement of outputs the resulting races should not be a
      problem.  For the convenience of projects, tolerate this instead of
      diagnosing it.  In particular, we previously allowed up to two copies
      of the custom command in one directory because CMake has a fallback
      from MAIN_DEPENDENCY to an `<output>.rule` file.
      
      While at it, add a note to the documentation that typically only one
      external data target should be needed for a project.
      Reported-by: David Manthey's avatarDavid Manthey <david.manthey@kitware.com>
      f9973166
  3. 27 Jul, 2016 1 commit
    • Daniel Pfeifer's avatar
      Use string(APPEND) in Modules · 5d0d980d
      Daniel Pfeifer authored
      Automate with:
      
      find Modules -type f -print0 | xargs -0 perl -i -0pe \
      's/set\(([a-zA-Z0-9_]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
      5d0d980d
  4. 13 Jul, 2016 1 commit
  5. 22 May, 2015 1 commit
  6. 27 Mar, 2015 2 commits
  7. 25 Feb, 2015 1 commit
    • Brad King's avatar
      ExternalData: Add support for custom algorithm-to-URL mapping · f7f4ca55
      Brad King authored
      Allow URL templates to contain a %(algo:<key>) placeholder that is
      replaced by mapping the canonical hash algorithm name through a map
      defined by the <key>.
      
      Extend the Module.ExternalData test to cover the behavior.
      Extend the RunCMake.ExternalData test to cover error cases.
      f7f4ca55
  8. 15 Jan, 2015 7 commits
  9. 05 Aug, 2014 1 commit
  10. 17 Apr, 2014 1 commit
    • Brad King's avatar
      ExternalData: Warn on missing file instead of failing · ccd29b9a
      Brad King authored
      When the primary source tree path named by a DATA{} reference does not
      exist, produce an AUTHOR_WARNING instead of a FATAL_ERROR.  This is
      useful when writing a new DATA{} reference to a test reference output
      that has not been created yet.  This way the developer can run the test,
      manually verify the output, and then copy it into place to provide the
      reference and eliminate the warning.
      
      If the named source tree path is expected to be a file but exists as a
      directory, we still need to produce a FATAL_ERROR.
      ccd29b9a
  11. 14 Apr, 2014 1 commit
  12. 13 Nov, 2013 1 commit
    • Brad King's avatar
      ExternalData: Allow local stores without any URL templates · 8eb20eea
      Brad King authored
      Allow ExternalData_URL_TEMPLATES to be empty if a value for
      ExternalData_OBJECT_STORES is provided.  Assume in this use case that
      the object stores will already contain all needed objects.  Extend the
      Module.ExternalData test to cover this case (all objects in stores).
      Extend the RunCMake.ExternalData test to cover the non-failure message
      case when stores are provided without URL templates.
      8eb20eea
  13. 12 Nov, 2013 2 commits
    • Brad King's avatar
      ExternalData: Show example network path URL template · f3883f36
      Brad King authored
      In the ExternalData_URL_TEMPLATES example, add an entry showing how to
      use the "file://" protocol with a network filesystem path.
      f3883f36
    • Brad King's avatar
      ExternalData: Format module documentation · ff6818bc
      Brad King authored
      Manually revise the .rst format of the documentation.  Use inline
      literal quotes appropriately in paragraph text.  Move the :: literal
      block openers to the end of the preceding paragraphs.  Convert the
      command signature documentation and examples to cmake code-block
      directives.
      ff6818bc
  14. 15 Oct, 2013 1 commit
  15. 02 Jun, 2013 1 commit
  16. 24 May, 2013 1 commit
    • Brad King's avatar
      ExternalData: Do not re-stage staged object files · c35961b0
      Brad King authored
      The ExternalData_LINK_CONTENT option tells ExternalData to convert real
      data files it finds into content links and to "stage" the original
      content in a ".ExternalData_<algo>_<hash>" file.  However, after a data
      object has been staged it is possible that a user-provided pattern in
      the "REGEX:" option will later match the staged object file.  We must
      not process staged object files even when a user pattern matches them.
      
      Fix the implementation to not match a staged object file as a normal
      data file for conversion.  Extend the RunCMake.ExternalData test to
      cover this case.
      c35961b0
  17. 12 Mar, 2013 1 commit
    • Brad King's avatar
      ExternalData: Preserve escaped semicolons during argument expansion · 1823ab4d
      Brad King authored
      The CMake language implicitly flattens lists so a ";" in a list element
      must be escaped with a backslash.  List expansion removes backslashes
      escaping semicolons to leave raw semicolons in the values.  Teach
      ExternalData_Add_Test and ExternalData_Expand_Arguments to re-escape
      semicolons found in list elements so the resulting argument lists work
      as if constructed directly by the set() command.
      
      For example:
      
        ExternalData_Add_Test(Data NAME test1 COMMAND ... "a\\;b")
        ExternalData_Expand_Arguments(Data args2 "c\\;d")
        add_test(NAME test2 COMMAND ... ${args2})
      
      should be equivalent to
      
        set(args1 "a\\;b")
        add_test(NAME test1 COMMAND ... ${args1})
        set(args2 "c\\;d")
        add_test(NAME test2 COMMAND ... ${args2})
      
      which is equivalent to
      
        add_test(NAME test1 COMMAND ... "a;b")
        add_test(NAME test2 COMMAND ... "c;d")
      
      Note that it is not possible to make ExternalData_Add_Test act exactly
      like add_test when quoted arguments contain semicolons because the CMake
      language flattens lists when constructing function ARGN values.  This
      re-escape approach at least allows test arguments to have semicolons.
      
      While at it, teach ExternalData APIs to not transform "DATA{...;...}"
      arguments because the contained semicolons are non-sensical.
      Suggested-by: Jean-Christophe Fillion-Robin's avatarJean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
      1823ab4d
  18. 04 Feb, 2013 1 commit
    • Brad King's avatar
      ExternalData: Attach download rules to content links in IDEs · 1fd8d017
      Brad King authored
      Each data file to be created in the build tree corresponds one-to-one with
      a raw file or content link in the source tree.  Use the MAIN_DEPENDENCY of
      add_custom_command to attach the build rule to the source tree file.  This
      looks much nicer in the IDE project file browser and avoids ".rule" files.
      1fd8d017
  19. 30 Jan, 2013 5 commits
  20. 29 Jan, 2013 1 commit
    • Brad King's avatar
      ExternalData: Improve series matching using an explicit syntax · bcd25808
      Brad King authored
      Automatic series recognition can generate false positives too easily
      when the default series configuration is flexible enough to handle
      common cases.  Avoid false positives by requiring an explicit syntax to
      activate series recognition.  Choose the syntax DATA{<name>,:} to be
      short, simple, and look like a vertical ellipsis.
      
      This allows us to improve the default series match configuration.  Allow
      series references to contain one of the numbered file names.  Allow '-'
      as a separator in addition to '.' and '_'.  Document what the default
      configuration matches.  Also provide more options to configure series
      <name> parsing.
      bcd25808
  21. 28 Jan, 2013 3 commits
  22. 24 Jan, 2013 2 commits
    • Brad King's avatar
      ExternalData: Remove compatibility with CMake < 2.8.5 · 00d801fb
      Brad King authored
      Now that the module comes in a sufficiently new CMake it does not need
      to support older versions.
      00d801fb
    • Brad King's avatar
      Add ExternalData module · ab26249d
      Brad King authored
      Take files we previously distributed in ITK 4.3.1:
      
        CMake/ExternalData.cmake
        CMake/ExternalData_config.cmake.in
      
      and add them for distribution in upstream CMake.  Update the copyright
      notice block format to follow CMake conventions.
      ab26249d