| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Autotools automatically adds version related linker flags on macOS that
are not related to the version information. Since we want to maintain
binary compatibility, we should do the same when building on macOS.
Fixes: #108
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These flags are mitigations against memory corruption bugs, and are
typically enabled by Linux distributions hardening rules.
We only use these flags with GCC, similarly to `-Bsymbolic`.
More information on relro is available here:
- http://tk-blog.blogspot.co.uk/2009/02/relro-not-so-well-known-memory.html
- http://mudongliang.github.io/2016/07/11/relro-a-not-so-well-known-memory-corruption-mitigation-technique.html
- https://wiki.debian.org/Hardening#DEB_BUILD_HARDENING_RELRO_.28ld_-z_relro.29
|
|\
| |
| | |
Add C++ guards around generated headers
|
|/
|
|
|
|
|
|
|
| |
Commit 0625a74d69f762df8d411bc0451927424aee1f2c moved the C++ guards
after the inclusion of the generated headers, which was an unintended
behavioural change and now requires header guards around the inclusion
of Epoxy headers.
Fixes: #106
|
| |
|
|
|
|
| |
Meson already uses /W2, like it uses -Wall with GCC.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code generation rules are explicitly built for each supported API
target, but they ought to be refactored since they are pretty much
identical.
In order to do that, we can store the arguments to the custom_target
rules inside an array and then iterate over each element.
This cuts down the complexity of the Meson build, and the chances of
getting something wrong due to duplication.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
We depend on an older version of Meson; once we can bump up the minimum
version, we'll be able to fix a couple of less than optimal uses of the
Meson API.
|
| |
| |
| |
| | |
This way, we don't have to depend on Python2 on newer OSes.
|
|/
|
|
|
|
|
|
| |
Instead of having Meson determine the invocator through the shebang
line we explicitly pass the script file to the Python interpreter.
This will allow us to either use Python3 or Python2, or whatever
Python.exe is available on Windows.
|
|
|
|
|
| |
We don't really use it, right now, but it may come in handy later, and
it doesn't cost us anything, since the whole thing is optional anyway.
|
|
|
|
| |
We don't need Doxygen to care about those.
|
|
|
|
| |
API added in 1.4 should be annotated as such.
|
|
|
|
|
| |
Like we do for the TravisCI YAML file, use the leading dot notation to
hide the Appveyor YAML file from directory listing on Unix-like OSes.
|
|
|
|
|
|
| |
GLEW has grown support for OpenGL 3.2+ core contexts over the years.
Everything else has stayed pretty much the same, though, so you should
still use Epoxy over libGLEW.
|
|
|
|
| |
Gamifying the development experience, once achievement at a time.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As libtool suggest we do; this also allows using ACLOCAL_AMFLAGS inside
build that create a separate environment with their own m4 macros, like
jhbuild and Cerberus.
In order to avoid a warning from autoreconf, we create the empty macros
directory during the autogen.sh step; aclocal would create the directory
for us anyway, but different versions of autotools may have different
behaviours.
Closes: #58
|
|\
| |
| |
| | |
Closes #95
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Appveyor is a CI infrastructure like Travis, but oriented at building on
Windows environment, as opposed to Linux and macOS.
By using Appveyor we can test changes to Epoxy and make sure that
Windows builds won't break.
Additionally, Appveyor allows to deploy build artefacts, which means we
can generate builds for Epoxy releases.
Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
|
| |
| |
| |
| |
| | |
We don't need to list the source files as we use a glob rule in the
Doxyfile itself.
|
|/
|
|
|
| |
We don't need to list the source files as we use a glob rule in the
Doxyfile itself.
|
|
|
|
|
|
| |
The khronos-registry branch contains only the registry XML files.
The debian branch contains the Debian packaging files.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Travis environment is terribly outdated, and they are not really
subtly pushing people to use Docker to set up their own containerised CI
environments instead of pulling from Ubuntu 12.04 or 14.04.
Let's try using this approach:
- create a Docker image that pulls from Debian Stretch
- set up a build and test environment
- push the image to the Docker Hub
- create a derived Docker image that copies the Epoxy repo
when running under Travis
- run the build and test script inside the derived image
This is similar to what Meson does for its CI.
|
|
|
|
|
|
|
|
|
| |
We're using a bunch of compiler arguments when building with GCC and
compilers that expose a GCC compatibility layer, but we should also have
warnings when building with MSVC.
GLib has a bunch of compiler arguments, taken from the "Win32
Programming" book, that we can reuse.
|
|
|
|
|
|
| |
The editorconfig[0] format is getting traction in various code editors.
[0]: http://editorconfig.org/
|
|
|
|
|
| |
The WGL tests should not include "config.h", since we're trying to test
the use of Epoxy, not its internals.
|
|
|
|
|
| |
MSVC does not expose GCC-compatible compiler arguments, so there's no
point in even trying.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the Visual Studio C compiler we need to annotate our public symbols
with `__declspec(dllimport)` to ensure they are visible when dynamically
linking to Epoxy's DLL.
This is needed because under Windows we use a dispatch table, instead of
wrapper functions, thus the symbol visibility rules change. Compiling
with MingW will automatically add `__declspec(dllimport)` for us.
Thanks to Nirbheek Chauhan for the help in debugging the issue.
Fixes #104
|
|
|
|
|
|
|
|
| |
This way we can take a dist tarball created through autotools, and use
Meson to build it.
Once Meson gets support for disting, we'll do the same with the
autotools build files, and call the result a "Buildoboros".
|
|
|
|
|
| |
This avoids each maintainer to transmit the knowledge orally to the next
maintainer.
|
|
|
|
|
| |
It's still a Python 2.x script, even if it's mostly compatible with
Python 3.x.
|
|
|
|
|
|
| |
PyLint raises a bunch of issues on the dispatch generation script with
regards to best practices; most of those issues are real, so let's fix
the code to be more Pythonic.
|
|\
| |
| | |
meson: Don't call find_program objects with python
|
| |
| |
| |
| |
| |
| |
| |
| | |
On UNIX-like OSes, the OS will read the shebang and use the correct
interpreter, and on Windows, Meson will read the shebang and use the
correct interpreter.
Adding it manually will cause python to try to interpret python
|
| | |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
On Linux and other Unix variants we may not have access to GLX and EGL
at run time. Dependent libraries can only discover this by using dlsym()
on various symbols, because as soon as they attempt to call those
symbols through Epoxy, Epoxy will abort. This means that a bunch of code
needs to be copy-pasted between projects, with the high chance of
somebody getting it wrong.
Epoxy already has all the internals needed to detect whether GLX and EGL
are available, so exposing a simple API is a better alternative.
Fixes #73
|
| | |
| | |
| | |
| | | |
Similar to `epoxy_has_glx()`, but for the EGL windowing system API.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Libraries and applications that depend on Epoxy currently have no way to
safely degrade functionality if they are used on a platform without GLX
support; the only way to achieve that is to perform a symbol check
themselves, by essentially copying what Epoxy already does.
By exposing `epoxy_has_glx()`, those libraries and applications now have
the chance of querying Epoxy itself and gracefully handle failure.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When checking whether GLX or EGL are available on the system, we don't
want to use the internal API that forces an exit() on missing libraries
and symbols — as that would defeat the point.
Instead, we should have safe functions to call internally that simply
return a NULL pointer, so we can bail out ourselves in a controlled
fashion.
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since X11 can be used on multiple platforms, or disabled in special
environments, we should provide a way to control whether or not Epoxy is
built with GLX support.
Fixes anholt/libepoxy#52
Fixes anholt/libepoxy#63
Closes anholt/libepoxy#80
Closes anholt/libepoxy#81
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since Epoxy can be built with different platform-specific API, having a
way for dependent projects to discover those capabilities without
necessarily crashing the minute they attempt to use them is a good
feature to have.
We strongly direct library and application developers to use pkg-config
in order to use Epoxy, so it makes sense to add variables to the
epoxy.pc file that can be easily extracted at configuration time.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
After doing this for Meson in commit fc014fa1, let's do the same dance
for the Autotools build.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently, GLX support in libepoxy at build time is hard coded, but
various platforms have expressed their preference for having a
configure-time option for it.
For instance:
- various embedded distributors do not ship with X11, but wish to use
libraries that depend on libepoxy now that Wayland is available
- distributors for macOS still wish to retain the ability to ship
their software with X11 enabled
By default, we want epoxy to build with GLX enabled pretty much
everywhere it makes sense, since it's only a build-time option and it's
not a run-time dependency.
|
| | | |
|
| | |
| | |
| | |
| | | |
It's useful for people that like rummaging inside tarballs.
|
| | |
| | |
| | |
| | | |
Both gz and bz2 tarballs are discouraged, in this day and age.
|
|/ / |
|