Skip to content
  • Christian Heimlich's avatar
    FindDoxygen: Implement more complete version checking · eaec9cf6
    Christian Heimlich authored
    The foundation of the Doxygen Find Module's detection methodology
    is the command `find_program`, which has inhibited the module from
    properly handling user version restrictions when provided.
    
    Because `find_program` historically has always returned after the first
    match and does not consider version constraints, users of this module
    are inadvertently at the mercy of the command's search procedure.
    Essentially, `find_package(Doxygen ...)` will always provide the first
    Doxygen build found through said procedure, even if it conflicts with
    the user's version requirements, and even if another build exists on
    the system that would satisfy those requirements (i.e. shadowing).
    
    Utilizes the new `VALIDATOR` option of `find_program` to ensure all
    otherwise detectable builds of Doxygen on a given system are evaluated
    and that only a build in compliance with `Doxygen_FIND_VERSION`
    et. al., when defined, will be matched against.
    
    Also enables handling of version ranges specified within `find_package`
    via the **FindPackageHandleStandardArgs** module.
    
    Finally, ensures that only the major, minor, and patch components of
    Doxygen's `--version` output are captured for comparison in cases where
    it contains additional information, such as a git commit hash.
    
    Fixes: #23692
    eaec9cf6