* Making use of the builtin support in CMake 3.7, the old toolchain
files are no longer needed and thus removed.
* Switched to Clang and libc++, as it has better C++11 support. GCC
toolchain support will phase out in the following commits.
* Having only one PKGBUILD, building for Android ARM64 now.
* Updated the building docs to reflect this.
Because the library still links to the old crappy opengl32.dll, we need
to load all symbols above OpenGL 1.1, not just those that are above
OpenGL ES 2.0/3.0.
Otherwise the ANativeActivity_onCreate() won't get exported and the
app will fail to start. Of course they just don't care and produce
crappy code that apparently nobody uses in production environment.
Toggles between using CGL/GLX/WGL (requiring running graphical desktop
environment) or EGL (without display attachment) for command-line
utilities and GL tests. Also exposed to the user through
MAGNUM_TARGET_HEADLESS CMake and preprocessor variables.
Uses just EGL and no other platform toolkit, meaning that the same code
can be used on all platforms if the drivers support it. Should be
working for OpenGL ES for most drivers, however desktop OpenGL is
supported only on NVidia since version 355.
As with Corrade, this is not exactly backwards compatible, but for
common use case without OBJECT libraries this should not be a problem.
In any case, recreate the build dir and update your copy of all
Find*.cmake modules to avoid weird things happening.
User-facing changes:
* Documentation of all Find*.cmake modules converted to
reStructuredText to follow official CMake guidelines.
* The newfangled way to use the libraries is to link to Magnum::Shaders
instead of adding ${MAGNUM_SHADERS_INCLUDE_DIRS} to include path and
linking to ${MAGNUM_SHADERS_LIBRARIES}.
* The old ${MAGNUM_*_LIBRARIES} are deprecated and now just expand to
Magnum::* target. Use the target directly. These are also enabled
only when building with MAGNUM_BUILD_DEPRECATED.
* The old ${MAGNUM_*_INCLUDE_DIRS} are removed as the Magnum::* targets
cover these too.
Internal changes:
* Global state such as include_directories() was replaced with
target-specific settings.
It seems that there is no such thing as eglGetProcAddress() and thus we
are able to use only functions that are defined in the ES[23]/glext.h
header and no others. So, currently, the function loader internally
undefs all function name macros that were defined in our flextgl.h
header, then includes the Apple's glext.h header and assigns function
pointers of those extensions that are defined in the header. Apple also
has some minor differences in function signatures (different constness
of pointer-to-pointer variables) so I had to reinterpret_cast
everything.
Might seem to be uglier than including glext.h directly in our code,
but I made bad experience when doing so -- I want to depend on my
header bugs that are consistent across all platforms instead of
depending on whatever changes Apple makes in its headers. I also want to
have all functions defined and not only those that are supported on
iOS.
Phew. Thank you, flextGL, for making it way easier than it appeared to
be at first.
Unline *Application libraries, which are commonly linked only to the
final executable, the *Context libraries are often linked to
"intermediate" dynamic libs.