find ruby gems & make coverage conditional on BUILD_COVERAGE
Summary:
new finding tech:
- find_gem function configures gem-specific FindFoo files and wraps around find_package
- FindFoo files look for ruby and then attempt to require the gem name i.e. it checks if the gem can be successfully loaded by the interpreter
- since this is based on find_package it may be influenced in all the regular ways (e.g. forced found or disabled from finding altogether via CMAKE_DISABLE_FIND_PACKAGE_$PKGNAME)
various notes for the future:
- technically this isn't 100% correct because the require name of a gem and the gem name may not be the same. e.g. the gem docker-api has the require name docker. for all currently used gems the names are however the same and so simply requiring the gem name is expected to work
- the implementation doesn't care about versions, again because we don't need it to
- test-unit is a bundled gem, some distributions (e.g. Arch) do split it out without making suitable dependency arrangements on a package level though
the tech is heavily inspired by Aleix Pol's tech for finding QML modules
as seen in extra-cmake-modules
Test Plan:
- ruby not found: none of the modules found
- test-unit not present: error
- simplecov not prseent: never errors
- having a module installed or not is reported in the cmake output
Reviewers: Dolphin, elvisangelaccio
Reviewed By: Dolphin, elvisangelaccio
Subscribers: elvisangelaccio, kfm-devel
Tags: Dolphin
Differential Revision: https://phabricator.kde.org/D19856