Updated third party dependency support#3031
Conversation
…s change is to make dependencies more explicit and provide the consumer with detailed information. Also, to make it easier for us to add new dependencies in the future. * highs_extras is now always built, but with optional features (like HIPO) * Each project (app, libhighs, high_extras) has a file that defines its dependencies * Added --notice to app that prints list of dependencies and their version/license info * Moved all dependencies into extern directory * Refactored FindHipoDeps into cmake functions * Refactored highs_extras CMakeLists, for easier maintenance * Improved naming to closer align to HiGHS standards * Added HighsDynamicLibrary for portable dynamic library loading. Can also be used for future CUDA support via Driver API * Added simple string join and table rendering * Added README documentation for the new features/structure
… type deduction) Fixed BUILD_OPENBLAS issue not identifying version/license information
…ass member initializers
…n order Fixed include issues with HighsDynamicLibrary
…arty methods (even when not used). Also fixed minor meson build error.
… clang and HIPO=OFF. Basically, even though the external methods were never used the debug build still wanted to link to them. So now, we explicitly separate the interface definition and the binding step. Slight code redundancy, but seems unavoidable. Also fixed code coverage workflow with corrected extern paths.
…de/HiGHS into third-party-dependencies
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## latest #3031 +/- ##
==========================================
+ Coverage 72.81% 72.94% +0.13%
==========================================
Files 417 425 +8
Lines 102150 102181 +31
Branches 16463 16443 -20
==========================================
+ Hits 74378 74535 +157
+ Misses 27496 27370 -126
Partials 276 276 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@galabovaa and @filikat - I'd appreciate if you could have a look! Apologies, it turned out to be a much larger change than I originally intended. Happy to discuss. |
Significantly improve macos build times (i.e., github actions)
I have had a look, and did not spot anything I would disagree with. Thank you again for this! |
|
The details are well beyond what I can comfortably understand in cpp, but it looks great! |
This PR makes several changes to improve external dependency support in HiGHS.
isAvailable<Feature1, Feature2>()supporthipo = require<amd, blas, ...>isAvailable<hipo, require<require<...>, ...>app,libhighs, orhighs_extras, but still use the same APIhighs_extrasAPI, so that adding new features is easier and more consistentgetThirdPartyNotice()and--noticeto get current list of enabled dependencies (with version and license info)HighsDynamicLibrary, which can be used in the near future for dynamic CUDA supportblascmake routines andhighs_extrascmake for increased maintainabilityREADME.mdwith details on how to add new dependencies and how the system worksExample of output: