9prady9
changed the title
Changes to use glbinding 3.0.2 and Forge 1.0.3
Changes to load graphics libraries at runtime
- Forge is no longer a linktime dependency - glbinding is not a dependency going forward. - glad GL loader is a compile time dependency, but not required during link-time or run-time. If forge and it's dependencies (glfw, fontconfig, freetype) are available at runtime, graphics functionality will automatically work as it should, otherwise a runtime exception is thrown. In order to make this runtime loading of graphics dependencies happen, all the graphics(forge) C++-API calls have been refactored to use C-API. An additional, miscallaneous change is that interop manager class and it's derived classes are cleaned up a bit.
Going forward from commit where graphics dependencies are loaded at runtime, all builds can be built with graphics code enabled since it is not a link time dependency. If graphics library Forge & OpenGL, and their respective dependencies are loaded successfully at runtime, then the user will be able to use graphics. Hence, the option to build with or without graphics is not needed from now on. However, a new cmake option `AF_BUILD_FORGE`, which is disabled by default, is provided to enable building forge(submodule) along with arrayfire code to help in cases where a developer chooses to use graphics functionality either for testing, debugging or packaging.
umar456 previously approved these changes Dec 19, 2018