<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libepoxy.git/src/meson.build, branch macos-version-info</title>
<subtitle>github.com: anholt/libepoxy.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/'/>
<entry>
<title>Add explicit version flags for macOS builds</title>
<updated>2017-03-07T11:52:26+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-03-07T11:52:26+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=aaf73b43a3b54ba1f879f6bfc71f3f822384df76'/>
<id>aaf73b43a3b54ba1f879f6bfc71f3f822384df76</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>Add z,relro and z,now to the GCC linker flags</title>
<updated>2017-03-03T16:58:46+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-03-03T16:58:46+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=f19f943a6699d771ef85402998a56743d6dfa3d9'/>
<id>f19f943a6699d771ef85402998a56743d6dfa3d9</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify the code generation rules for Meson</title>
<updated>2017-03-01T12:36:00+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-03-01T12:36:00+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=3eaddbef62ae83561417e6216cc72eeba98162f2'/>
<id>3eaddbef62ae83561417e6216cc72eeba98162f2</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove the shebang from gen_dispatch.py</title>
<updated>2017-02-15T14:09:01+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-02-13T09:26:57+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=89f9aa044fbca703670cbaa037716112c7f7fefb'/>
<id>89f9aa044fbca703670cbaa037716112c7f7fefb</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #100 from centricular/fix-find_program</title>
<updated>2017-02-08T12:57:47+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gmail.com</email>
</author>
<published>2017-02-08T12:57:47+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=5c4a907687991596c9983a69f43365c3c182bfc3'/>
<id>5c4a907687991596c9983a69f43365c3c182bfc3</id>
<content type='text'>
meson: Don't call find_program objects with python</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
meson: Don't call find_program objects with python</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'symbol-visibility'</title>
<updated>2017-01-31T18:09:34+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-01-31T18:09:34+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=5bcc550a6c85e7db4a8564aa292113e32d9993f0'/>
<id>5bcc550a6c85e7db4a8564aa292113e32d9993f0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>meson: Don't call find_program objects with python</title>
<updated>2017-01-28T01:24:10+00:00</updated>
<author>
<name>Nirbheek Chauhan</name>
<email>nirbheek@centricular.com</email>
</author>
<published>2017-01-28T01:22:15+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=d82bedc2273cdd885c7d8d6d4d9b0b0b72278f9c'/>
<id>d82bedc2273cdd885c7d8d6d4d9b0b0b72278f9c</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>build: Clean up some Meson usage</title>
<updated>2017-01-28T00:13:48+00:00</updated>
<author>
<name>Patrick Griffis</name>
<email>tingping@tingping.se</email>
</author>
<published>2017-01-28T00:13:48+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=61dac912e612aadc9458f890b76ab394b32c6056'/>
<id>61dac912e612aadc9458f890b76ab394b32c6056</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve consistency of the symbol visibility</title>
<updated>2017-01-25T12:43:17+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-01-24T17:43:59+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=7a06803465dd07e152de1b30763d6bea0d3fcc93'/>
<id>7a06803465dd07e152de1b30763d6bea0d3fcc93</id>
<content type='text'>
To avoid a symbols file on Windows, Epoxy annotates all the publicly
visible symbols directly in the source, but uses the default symbol
visibility everywhere else. This means that only some symbols are
annotated as `EPOXY_IMPORTEXPORT`, and generally only on Windows.
Additionally, Epoxy has a private 'PUBLIC' pre-processor macro for
internal use, which duplicates the `EPOXY_IMPORTEXPORT` but contains
more logic to detect GCC, in case we're building with GCC on Windows.

This would be enough, except that EGL is also available on Windows,
which means we'd have to annotate the exported `epoxy_*` API inside
epoxy/egl.h as well. At that point, though, we should probably avoid
any confusion, and adopt a single symbol visibility policy across the
board.

This requires some surgery of the generated and common dispatch sources,
but cuts down the overall complexity:

 - there is only one annotation, `EPOXY_PUBLIC`, used everywhere
 - the annotation detection is done at Epoxy configuration time
 - only annotated symbols are public, on every platform
 - annotated symbols are immediately visible from the header
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To avoid a symbols file on Windows, Epoxy annotates all the publicly
visible symbols directly in the source, but uses the default symbol
visibility everywhere else. This means that only some symbols are
annotated as `EPOXY_IMPORTEXPORT`, and generally only on Windows.
Additionally, Epoxy has a private 'PUBLIC' pre-processor macro for
internal use, which duplicates the `EPOXY_IMPORTEXPORT` but contains
more logic to detect GCC, in case we're building with GCC on Windows.

This would be enough, except that EGL is also available on Windows,
which means we'd have to annotate the exported `epoxy_*` API inside
epoxy/egl.h as well. At that point, though, we should probably avoid
any confusion, and adopt a single symbol visibility policy across the
board.

This requires some surgery of the generated and common dispatch sources,
but cuts down the overall complexity:

 - there is only one annotation, `EPOXY_PUBLIC`, used everywhere
 - the annotation detection is done at Epoxy configuration time
 - only annotated symbols are public, on every platform
 - annotated symbols are immediately visible from the header
</pre>
</div>
</content>
</entry>
<entry>
<title>build: Explicitly link against gdi32</title>
<updated>2017-01-25T12:41:02+00:00</updated>
<author>
<name>Emmanuele Bassi</name>
<email>ebassi@gnome.org</email>
</author>
<published>2017-01-19T18:41:40+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libepoxy.git/commit/?id=ba2e7b151bb0ee97c136a44c62555a1b7be80371'/>
<id>ba2e7b151bb0ee97c136a44c62555a1b7be80371</id>
<content type='text'>
We need to explicitly link against gdi32 in order to access
SetPixelFormat and ChoosetPixelFormat, and the order of the linking is
relevant when using static libraries. This is a slight workaround to the
order of compiler arguments generated by Meson, and it's supposed to go
away in the near future.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We need to explicitly link against gdi32 in order to access
SetPixelFormat and ChoosetPixelFormat, and the order of the linking is
relevant when using static libraries. This is a slight workaround to the
order of compiler arguments generated by Meson, and it's supposed to go
away in the near future.
</pre>
</div>
</content>
</entry>
</feed>
