CMake: make FORCES build configuration target-centered and stop exporting OpenMP

This MR cleans up the FORCES CMake configuration so build options are owned by FORCES itself instead of a shared global helper, updates the vendored cmake/ helper subtree to cmake-fortran-scripts v3.0, aligns CI and documentation with the new option model, and makes OpenMP a private implementation detail of forces.

No Fortran API is changed. The user-visible changes are in CMake configuration and target usage requirements.

What Changed

  • Move build configuration to top-level FORCES-owned cache options such as:
    • FORCES_BUILD_TESTING
    • FORCES_WITH_COVERAGE
    • FORCES_WITH_NETCDF
    • FORCES_WITH_MPI
    • FORCES_WITH_OpenMP
    • FORCES_WITH_OPTIMIZATION
    • FORCES_ENABLE_NATIVE
  • Remove the old cmake/compileoptions.cmake indirection and resolve optional dependencies where they are actually used.
  • Make testing opt-in through FORCES_BUILD_TESTING instead of relying on generic BUILD_TESTING handling.
  • Keep pFUnit discovery non-fatal and quiet when tests are enabled but PFUNIT is not installed.
  • Switch coverage setup to target-scoped coverage flags and keep GNU-only validation at configure time.
  • Update the vendored cmake/ subtree to cmake-fortran-scripts v3.0, including newer:
    • CPM.cmake
    • version.cmake
    • fortranpreprocessor.cmake
    • CodeCoverage.cmake
    • FindYAC.cmake
    • FindESMF.cmake
    • FindNetCDF.cmake
  • Update README.md, cmake/README.md, and .gitlab-ci.yml to document and use the new FORCES_* options.
  • Change the OpenMP link on forces from PUBLIC to PRIVATE.
    • This keeps OpenMP available for final link closure of static consumers.
    • It stops downstream targets from implicitly inheriting OpenMP compile flags.
  • Leave MPI visibility unchanged in this MR.

Impact

  • Existing configure commands must use the new FORCES_* cache variables instead of the old generic CMAKE_* ones.
  • Tests are no longer configured unless FORCES_BUILD_TESTING=ON.
  • Downstream projects linking against forces will no longer compile with OpenMP unless they explicitly enable it themselves.

Merge request reports

Loading