diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index 8e0cae2..0000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-version: 1.0.{build}
-
-image: Visual Studio 2015
-
-configuration: Release
-
-# Configure both 32-bit and 64-bit builds
-environment:
-  matrix:
-  - platform: x86
-    config: Win32
-    pout: x86
-  - platform: x64
-    config: x64
-    pout: x64
-
-shallow_clone: true
-
-# Download Meson and Ninja, create install directory
-before_build:
-- mkdir build
-- mkdir libepoxy-shared-%pout%
-- cd build
-- curl -LsSO https://github.com/mesonbuild/meson/releases/download/0.47.1/meson-0.47.1.tar.gz
-- 7z x meson-0.47.1.tar.gz
-- move dist\meson-0.47.1.tar .
-- 7z x meson-0.47.1.tar
-- rmdir dist
-- del meson-0.47.1.tar meson-0.47.1.tar.gz
-- curl -LsSO https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip
-- 7z x ninja-win.zip
-- del ninja-win.zip
-- cd ..
-
-# Build and install
-build_script:
-- cd build
-- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %PLATFORM%
-- C:\Python36\python.exe meson-0.47.1\meson.py .. . --backend=ninja --prefix=%APPVEYOR_BUILD_FOLDER%\libepoxy-shared-%pout%
-- ninja
-- ninja install
-- cd ..
-
-# Copy license into install directory and create .zip file
-after_build:
-- copy COPYING libepoxy-shared-%pout%
-- dir libepoxy-shared-%pout% /s /b
-- 7z a -tzip libepoxy-shared-%pout%.zip libepoxy-shared-%pout%
-
-artifacts:
-  - path: libepoxy-shared-%pout%.zip
-    name: libepoxy-shared-%pout%
-
-test: off
-
-# Upload .zip file to GitHub release
-deploy:
-  release: $(APPVEYOR_REPO_TAG_NAME)
-  description: "Epoxy $(APPVEYOR_REPO_TAG_NAME)"
-  provider: GitHub
-  auth_token:
-    secure: X7Ro8Y2RWYo/M1AAn93f9X0dEQFvu7gPb6li2eKRtzPYLGj/JKm7MNWRw2cCcjm6
-  artifact: libepoxy-shared-$(pout)
-  draft: false
-  prerelease: false
-  on:
-    appveyor_repo_tag: true # deploy on tag push only
diff --git a/.editorconfig b/.editorconfig
index ce6000d..3473806 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -10,14 +10,6 @@
 trim_trailing_whitespace = true
 insert_final_newline = true
 
-[configure.ac]
-indent_style = tab
-indent_size = 8
-
-[Makefile.am]
-indent_style = tab
-indent_size = 8
-
 [.travis.yml]
 indent_style = space
 indent_size = 2
diff --git a/.travis/epoxy-ci-linux.sh b/.github/scripts/epoxy-ci-linux.sh
similarity index 100%
rename from .travis/epoxy-ci-linux.sh
rename to .github/scripts/epoxy-ci-linux.sh
diff --git a/.travis/epoxy-ci-osx.sh b/.github/scripts/epoxy-ci-osx.sh
similarity index 100%
rename from .travis/epoxy-ci-osx.sh
rename to .github/scripts/epoxy-ci-osx.sh
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
new file mode 100644
index 0000000..3d71e7f
--- /dev/null
+++ b/.github/workflows/linux.yml
@@ -0,0 +1,38 @@
+name: Ubuntu
+on:
+  push:
+    branches-ignore:
+      - debian
+      - khronos-registry
+jobs:
+  build:
+    strategy:
+      matrix:
+        os: 
+          - ubuntu-18.04
+        compiler:
+          - gcc
+          - clang
+        build-opts:
+          - ''
+          - '-Dglx=no'
+          - '-Degl=no'
+          - '-Dx11=false'
+    runs-on: ${{ matrix.os }}
+    steps:
+      - uses: actions/checkout@v2
+      - run: >
+          sudo apt-get update &&
+          sudo apt-get install --no-install-recommends
+          libgl1-mesa-dev
+          libegl1-mesa-dev
+          libgles2-mesa-dev
+          libgl1-mesa-dri
+          ninja-build
+      - uses: actions/setup-python@v2
+        with:
+          python-version: 3.x
+      - run: |
+          python -m pip install --upgrade pip
+          pip3 install meson
+          /bin/sh -c "CC=${{ matrix.compiler }} .github/scripts/epoxy-ci-linux.sh ${{ matrix.build-opts }}"
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
new file mode 100644
index 0000000..c725ef1
--- /dev/null
+++ b/.github/workflows/macos.yml
@@ -0,0 +1,26 @@
+name: macOS
+on:
+  push:
+    branches-ignore:
+      - debian
+      - khronos-registry
+jobs:
+  build:
+    strategy:
+      matrix:
+        build-opts:
+          - ''
+          - '-Dglx=no'
+          - '-Degl=no'
+          - '-Dx11=false'
+    runs-on: macos-10.15
+    steps:
+      - uses: actions/checkout@v2
+      - uses: actions/setup-python@v2
+        with:
+          python-version: 3.x
+      - run: |
+          brew install ninja
+          python -m pip install --upgrade pip
+          pip3 install meson
+          /bin/sh -c "CC=clang .github/scripts/epoxy-ci-osx.sh ${{ matrix.build-opts }}"
diff --git a/.github/workflows/msvc-env.yml b/.github/workflows/msvc-env.yml
new file mode 100644
index 0000000..a4e69c8
--- /dev/null
+++ b/.github/workflows/msvc-env.yml
@@ -0,0 +1,23 @@
+name: MSVC Build
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    env:
+      PYTHONIOENCODING: "utf-8"
+    steps:
+    - uses: actions/checkout@master
+    - uses: actions/setup-python@v1
+    - uses: seanmiddleditch/gha-setup-vsdevenv@master
+    - uses: BSFishy/meson-build@v1.0.1
+      with:
+        action: test
+        directory: _build
+        options: --verbose --fatal-meson-warnings
+        meson-version: 0.54.3
diff --git a/.github/workflows/msys2.yml b/.github/workflows/msys2.yml
new file mode 100644
index 0000000..0f90a2b
--- /dev/null
+++ b/.github/workflows/msys2.yml
@@ -0,0 +1,27 @@
+name: MSYS2 Build
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    defaults:
+      run:
+        shell: msys2 {0}
+    env:
+      PYTHONIOENCODING: "utf-8"
+    steps:
+    - uses: actions/checkout@master
+    - uses: msys2/setup-msys2@v2
+      with:
+        msystem: MINGW64
+        update: true
+        install: base-devel git mingw-w64-x86_64-meson mingw-w64-x86_64-ninja mingw-w64-x86_64-pkg-config mingw-w64-x86_64-python3 mingw-w64-x86_64-python3-pip mingw-w64-x86_64-toolchain
+    - name: Build
+      run: |
+        meson setup _build
+        meson compile -C _build
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 52c043e..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-sudo: false
-
-branches:
-  except:
-    - debian
-    - khronos-registry
-
-os:
-  - linux
-  - osx
-
-compiler:
-  - gcc
-  - clang
-
-language:
-  - c
-
-services:
-  - docker
-
-matrix:
-  exclude:
-  - os: osx
-    compiler: gcc
-
-before_install:
-  - |
-    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
-      brew update
-      brew install python@3 meson
-      # Use a Ninja with QuLogic's patch: https://github.com/ninja-build/ninja/issues/1219
-      mkdir -p $HOME/tools; curl -L http://nirbheek.in/files/binaries/ninja/macos/ninja -o $HOME/tools/ninja; chmod +x $HOME/tools/ninja
-    fi
-  - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull ebassi/epoxyci ; fi
-
-before_script:
-  - |
-    if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
-      echo FROM ebassi/epoxyci > Dockerfile
-      echo ADD . /root >> Dockerfile
-      echo WORKDIR /root >> Dockerfile
-      docker build -t withgit .
-    fi
-
-env:
-  - BUILD_OPTS=""
-  - BUILD_OPTS="-Dglx=no"
-  - BUILD_OPTS="-Degl=no"
-  - BUILD_OPTS="-Dx11=false"
-
-script:
-  - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run withgit /bin/sh -c "CC=$CC .travis/epoxy-ci-linux.sh $BUILD_OPTS" ; fi
-  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then /bin/sh -c "CC=$CC .travis/epoxy-ci-osx.sh $BUILD_OPTS" ; fi
diff --git a/.travis/Dockerfile b/.travis/Dockerfile
deleted file mode 100644
index bd9b40a..0000000
--- a/.travis/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM debian:stretch-slim
-MAINTAINER Emmanuele Bassi <ebassi@gmail.com>
-
-RUN apt-get update -qq && \
-    apt-get install --no-install-recommends -qq -y \
-        ca-certificates \
-        clang \
-        gcc \
-        libgl1-mesa-dev \
-        libegl1-mesa-dev \
-        libgles1-mesa-dev \
-        libgles2-mesa-dev \
-        libgl1-mesa-dri \
-        locales \
-        ninja-build \
-        pkg-config \
-        python3 \
-        python3-pip \
-        python3-setuptools \
-        python3-wheel \
-        xvfb && \
-        rm -rf /usr/share/doc/* /usr/share/man/*
-
-RUN locale-gen C.UTF-8 && /usr/sbin/update-locale LANG=C.UTF-8
-ENV LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8
-
-RUN pip3 install meson
-
-WORKDIR /root
diff --git a/.travis/run-docker.sh b/.travis/run-docker.sh
deleted file mode 100755
index 4b3ecc7..0000000
--- a/.travis/run-docker.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-set -xe
-
-srcdir="$(pwd)/.."
-
-sudo docker build \
-        --tag "epoxyci" \
-        --file "Dockerfile" .
-sudo docker run --rm \
-        --volume "${srcdir}:/root/epoxy" \
-        --tty --interactive "epoxyci" bash
diff --git a/METADATA b/METADATA
index 4a8f3d8..f6c32f4 100644
--- a/METADATA
+++ b/METADATA
@@ -1,3 +1,7 @@
+# This project was upgraded with external_updater.
+# Usage: tools/external_updater/updater.sh update libepoxy
+# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
+
 name: "libepoxy"
 description: "Epoxy is a library for handling OpenGL function pointers"
 third_party {
@@ -5,11 +9,11 @@
     type: GIT
     value: "https://github.com/anholt/libepoxy.git"
   }
-  version: "1.5.4"
+  version: "1.5.10"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2020
-    month: 4
-    day: 9
+    year: 2022
+    month: 11
+    day: 28
   }
 }
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 8fead48..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,68 +0,0 @@
-
-# Copyright © 2013 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-ACLOCAL_AMFLAGS = -I m4
-
-SUBDIRS = include/epoxy src
-
-SUBDIRS += test
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = epoxy.pc
-
-registry_files = \
-	registry/egl.xml \
-	registry/gl.xml \
-	registry/glx.xml \
-	registry/wgl.xml \
-	$()
-
-meson_build_files = \
-	meson_options.txt \
-	meson.build \
-	include/epoxy/meson.build \
-	src/meson.build \
-	test/meson.build \
-	doc/meson.build \
-	doc/Doxyfile.in \
-	cross/fedora-mingw64.txt \
-	$()
-
-EXTRA_DIST = \
-	.dir-locals.el \
-	README.md \
-	autogen.sh \
-	epoxy.pc.in \
-	$(registry_files) \
-	$(meson_build_files) \
-	$()
-
-dist-hook:
-	@if test -d "$(top_srcdir)/.git"; then \
-	  echo Generating ChangeLog... ; \
-	  ( $(top_srcdir)/missing --run git log --stat ) > "$(top_srcdir)/ChangeLog.tmp" \
-	  && mv -f "$(top_srcdir)/ChangeLog.tmp" "$(top_distdir)/ChangeLog" \
-	  || ( rm -f "$(top_srcdir)/ChangeLog.tmp"; \
-	       echo Failed to generate ChangeLog >&2 ); \
-	else \
-	  echo A git checkout is required to generate a ChangeLog >&2; \
-	fi
diff --git a/README.md b/README.md
index 56b6a65..9d83ed9 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
-[![Build Status](https://travis-ci.org/anholt/libepoxy.svg?branch=master)](https://travis-ci.org/anholt/libepoxy)
-[![Build status](https://ci.appveyor.com/api/projects/status/xv6y5jurt5v5ngjx/branch/master?svg=true)](https://ci.appveyor.com/project/ebassi/libepoxy/branch/master)
+![Ubuntu](https://github.com/anholt/libepoxy/workflows/Ubuntu/badge.svg)
+![macOS](https://github.com/anholt/libepoxy/workflows/macOS/badge.svg)
+![MSVC Build](https://github.com/anholt/libepoxy/workflows/MSVC%20Build/badge.svg)
+![MSYS2 Build](https://github.com/anholt/libepoxy/workflows/MSYS2%20Build/badge.svg)
+[![License: MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
 
 Epoxy is a library for handling OpenGL function pointer management for
 you.
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 02b81ef..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd "$srcdir"
-
-mkdir m4 || exit 1
-
-autoreconf -v --install || exit $?
-cd "$ORIGDIR" || exit $?
-
-if test -z "$NOCONFIGURE"; then
-    exec "$srcdir/configure" "$@"
-fi
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index b0bb452..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,275 +0,0 @@
-# Copyright © 2013 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-# Initialize Autoconf
-AC_PREREQ([2.60])
-AC_INIT([libepoxy],
-        [1.5.4],
-        [https://github.com/anholt/libepoxy],
-        [libepoxy])
-AC_CONFIG_SRCDIR([Makefile.am])
-AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_MACRO_DIR([m4])
-
-# Initialize Automake
-AM_INIT_AUTOMAKE([foreign -Wno-portability dist-xz no-dist-gzip tar-ustar subdir-objects])
-
-# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
-m4_ifndef([XORG_MACROS_VERSION],
-          [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen.
-  Hint: either install from source, git://anongit.freedesktop.org/xorg/util/macros or,
-  depending on you distribution, try package 'xutils-dev' or 'xorg-x11-util-macros'])])
-
-XORG_MACROS_VERSION(1.8)
-XORG_DEFAULT_OPTIONS
-
-AC_CHECK_PROGS([PYTHON], [python3 python2 python])
-
-# Initialize libtool
-AC_DISABLE_STATIC
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
-AC_SYS_LARGEFILE
-
-AC_CHECK_HEADER([KHR/khrplatform.h],
-                [AC_DEFINE([HAVE_KHRPLATFORM_H], [1],
-                           [Define to 1 if you have <KHR/khrplatform.h> (used for tests)]
-                           )]
-               )
-
-# OS X defaults to having -Wint-conversion ("warn when passing
-# uintptr_t to a void *") by default.  Kill that.
-XORG_TESTSET_CFLAG(CWARNFLAGS, [-Wno-int-conversion])
-
-AC_ARG_ENABLE([x11],
-              [AC_HELP_STRING([--enable-x11=@<:@yes,no@:>@], [Enable X11 support @<:@default=yes@:>@])],
-              [enable_x11=$enableval],
-              [enable_x11=yes])
-
-AC_ARG_ENABLE([glx],
-              [AC_HELP_STRING([--enable-glx=@<:@auto,yes,no@:>@], [Enable GLX support @<:@default=auto@:>@])],
-              [enable_glx=$enableval],
-              [enable_glx=auto])
-
-# GLX can be used on different platforms, so we expose a
-# configure time switch to enable or disable it; in case
-# the "auto" default value is set, we only enable GLX
-# support on Linux and Unix
-AS_CASE([$enable_glx],
-  [auto], [
-    AS_CASE([$host_os],
-            [mingw*], [build_glx=no],
-            [darwin*], [build_glx=no],
-            [android*], [build_glx=no],
-            [build_glx=yes])
-  ],
-
-  [yes], [
-    build_glx=yes
-  ],
-
-  [no], [
-    build_glx=no
-  ],
-
-  [AC_MSG_ERROR([Invalid value "$enable_glx" for option "--enable-glx"])]
-])
-
-AC_ARG_ENABLE([egl],
-              [AC_HELP_STRING([--enable-egl=@<:@auto,yes,no@:>@], [Enable EGL support @<:@default=auto@:>@])],
-              [enable_egl=$enableval],
-              [enable_egl=auto])
-
-AS_CASE([$enable_egl],
-  [auto], [
-    AS_CASE([$host_os],
-            [mingw*], [build_egl=no],
-            [darwin*], [build_egl=no],
-            [build_egl=yes])
-  ],
-
-  [yes], [
-    build_egl=yes
-  ],
-
-  [no], [
-    build_egl=no
-  ],
-
-  [AC_MSG_ERROR([Invalid value "$enable_egl" for option "--enable-egl"])]
-])
-
-# The remaining platform specific API are enabled depending on the
-# platform we're building for
-AS_CASE([$host_os],
-  [mingw*], [
-    build_wgl=yes
-    has_znow=yes
-    # On windows, the DLL has to have all of its functions
-    # resolved at link time, so we have to link directly against
-    # opengl32.dll.  But that's the only GL provider, anyway.
-    EPOXY_LINK_LIBS="-lopengl32"
-
-    # Testing our built windows binaries requires that they be run
-    # under wine.  Yeah, we should be nice and autodetect, but
-    # there's lots of missing autodetection for the testsuite
-    # (like checking for EGL and GLX libs in non-windows.).
-    AC_SUBST([LOG_COMPILER], [wine])
-  ],
-
-  [darwin*], [
-    build_wgl=no
-    has_znow=no
-    EPOXY_LINK_LIBS=""
-  ],
-
-  [
-    build_wgl=no
-    has_znow=yes
-    # On platforms with dlopen, we load everything dynamically and
-    # don't link against a specific window system or GL implementation.
-    EPOXY_LINK_LIBS=""
-   ]
-)
-
-AC_SUBST(EPOXY_LINK_LIBS)
-
-if test x$enable_x11 = xno; then
-    if test x$enable_glx = xyes; then
-        AC_MSG_ERROR([GLX support is explicitly enabled, but X11 was disabled])
-    fi
-    build_glx=no
-else
-    AC_DEFINE([ENABLE_X11], [1], [Whether X11 support is enabled])
-fi
-
-AM_CONDITIONAL(BUILD_EGL, test x$build_egl = xyes)
-if test x$build_egl = xyes; then
-    PKG_CHECK_MODULES(EGL, [egl])
-    AC_DEFINE([BUILD_EGL], [1], [build EGL tests])
-    AC_DEFINE(ENABLE_EGL, [1], [Whether EGL support is enabled])
-fi
-
-AM_CONDITIONAL(BUILD_GLX, test x$build_glx = xyes)
-if test x$build_glx = xyes; then
-    AC_DEFINE([BUILD_GLX], [1], [build GLX tests])
-fi
-
-AM_CONDITIONAL(BUILD_WGL, test x$build_wgl = xyes)
-if test x$build_wgl = xyes; then
-    AC_DEFINE([BUILD_WGL], [1], [build WGL tests])
-fi
-
-AM_CONDITIONAL(HAS_ZNOW, test x$has_znow = xyes)
-
-AC_CHECK_LIB([GLESv1_CM], [glFlush], [has_gles1=yes], [has_gles1=no])
-AM_CONDITIONAL(HAS_GLES1, test x$has_gles1 = xyes)
-
-AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])
-AC_SUBST([DLOPEN_LIBS])
-
-savelibs=$LIBS
-LIBS=$DLOPEN_LIBS
-AC_CHECK_FUNCS([dlvsym], [have_dlvsym=1], [have_dlvsym=0])
-AM_CONDITIONAL(HAVE_DLVSYM, test $have_dlvsym = 1)
-LIBS=$savelibs
-
-VISIBILITY_CFLAGS=""
-AS_CASE(["$host"],
-
-  [*-*-mingw*], [
-    dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
-    AC_DEFINE([EPOXY_PUBLIC],
-              [__attribute__((visibility("default"))) __declspec(dllexport) extern],
-              [defines how to decorate public symbols while building])
-    VISIBILITY_CFLAGS="-fvisibility=hidden"
-  ],
-
-  [
-    dnl on other compilers, check if we can do -fvisibility=hidden
-    SAVED_CFLAGS="${CFLAGS}"
-    CFLAGS="-fvisibility=hidden"
-    AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
-    AC_TRY_COMPILE([], [int main (void) { return 0; }], [
-      AC_MSG_RESULT(yes)
-      enable_fvisibility_hidden=yes
-    ], [
-      AC_MSG_RESULT(no)
-      enable_fvisibility_hidden=no
-    ])
-    CFLAGS="${SAVED_CFLAGS}"
-
-    AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
-      AC_DEFINE([EPOXY_PUBLIC],
-                [__attribute__((visibility("default"))) extern],
-                [defines how to decorate public symbols while building])
-      VISIBILITY_CFLAGS="-fvisibility=hidden"
-    ])
-  ]
-)
-
-AC_SUBST([VISIBILITY_CFLAGS])
-
-if test x$enable_x11 = xyes; then
-    PKG_CHECK_MODULES(X11, [x11], [x11=yes], [x11=no])
-    if test x$x11 = xno -a x$build_glx = xyes; then
-        AC_MSG_ERROR([libX11 headers (libx11-dev) are required to build with GLX support])
-    fi
-else
-    x11=no
-fi
-
-if test x$build_glx = xyes; then
-  AC_DEFINE(ENABLE_GLX, [1], [Whether GLX support is enabled])
-fi
-
-AM_CONDITIONAL(HAVE_X11, test x$x11 = xyes)
-
-PKG_CHECK_MODULES(GL, [gl], [gl=yes], [gl=no])
-PKG_CHECK_MODULES(EGL, [egl], [egl=yes], [egl=no])
-
-GL_REQS=""
-AS_IF([test x$gl = xyes], [GL_REQS="$GL_REQS gl"])
-AS_IF([test x$build_egl = xyes && test x$egl = xyes], [GL_REQS="$GL_REQS egl"])
-AC_SUBST(GL_REQS)
-
-# Variables for the pkg-config file; AC_SUBST does not do `test` substitutions,
-# so we need to specify the boolean values here
-AS_IF([test x$build_glx = xyes], [epoxy_has_glx=1], [epoxy_has_glx=0])
-AS_IF([test x$build_egl = xyes], [epoxy_has_egl=1], [epoxy_has_egl=0])
-AS_IF([test x$build_wgl = xyes], [epoxy_has_wgl=1], [epoxy_has_wgl=0])
-AC_SUBST(epoxy_has_glx)
-AC_SUBST(epoxy_has_egl)
-AC_SUBST(epoxy_has_wgl)
-
-AC_CONFIG_FILES([
-                epoxy.pc
-                Makefile
-                include/epoxy/Makefile
-                src/Makefile
-                test/Makefile
-])
-AC_OUTPUT
-
-echo "           EGL:         $build_egl"
-echo "           GLX:         $build_glx"
-echo "           WGL:         $build_wgl"
-echo "        PYTHON:         $PYTHON"
diff --git a/epoxy.pc.in b/epoxy.pc.in
deleted file mode 100644
index cdda8d9..0000000
--- a/epoxy.pc.in
+++ /dev/null
@@ -1,16 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-epoxy_has_glx=@epoxy_has_glx@
-epoxy_has_egl=@epoxy_has_egl@
-epoxy_has_wgl=@epoxy_has_wgl@
-
-Name: epoxy
-Description: epoxy GL dispatch Library
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -lepoxy
-Libs.private: @DLOPEN_LIBS@
-Requires.private: @GL_REQS@
diff --git a/include/epoxy/Makefile.am b/include/epoxy/Makefile.am
deleted file mode 100644
index 494c96e..0000000
--- a/include/epoxy/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright © 2013 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-epoxyincludedir = $(includedir)/epoxy
-
-epoxyinclude_HEADERS = \
-	common.h \
-	gl.h \
-        $(EGL_INCLUDES) \
-        $(GLX_INCLUDES) \
-        $(WGL_INCLUDES) \
-	$()
-
-if BUILD_EGL
-EGL_INCLUDES = egl.h
-endif
-
-if BUILD_GLX
-GLX_INCLUDES = glx.h
-endif
-
-if BUILD_WGL
-WGL_INCLUDES = wgl.h
-endif
diff --git a/include/epoxy/meson.build b/include/epoxy/meson.build
index 65f83be..c679efe 100644
--- a/include/epoxy/meson.build
+++ b/include/epoxy/meson.build
@@ -25,7 +25,6 @@
                             input: registry,
                             output: [ gen_header ],
                             command: [
-                              python,
                               gen_dispatch_py,
                               '--header',
                               '--no-source',
diff --git a/meson.build b/meson.build
index 91d9792..e1d8d8b 100644
--- a/meson.build
+++ b/meson.build
@@ -1,11 +1,11 @@
-project('libepoxy', 'c', version: '1.5.4',
+project('libepoxy', 'c', version: '1.5.10',
         default_options: [
           'buildtype=debugoptimized',
           'c_std=gnu99',
           'warning_level=1',
         ],
         license: 'MIT',
-        meson_version: '>= 0.47.0')
+        meson_version: '>= 0.54.0')
 
 epoxy_version = meson.project_version().split('.')
 epoxy_major_version = epoxy_version[0].to_int()
@@ -95,6 +95,7 @@
     '-we4053', # an expression of type void was used as an operand
     '-we4071', # no function prototype given
     '-we4819', # the file contains a character that cannot be represented in the current code page
+    '/utf-8', # Set the input and exec encoding to utf-8, like is the default with GCC
   ]
 elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
   test_cflags = [
@@ -165,9 +166,11 @@
 dl_dep = cc.find_library('dl', required: false)
 gl_dep = dependency('gl', required: false)
 egl_dep = dependency('egl', required: false)
+elg_headers_dep = egl_dep.partial_dependency(compile_args: true, includes: true)
 
 # Optional dependencies for tests
 x11_dep = dependency('x11', required: false)
+x11_headers_dep = x11_dep.partial_dependency(compile_args: true, includes: true)
 
 # GLES v2 and v1 may have pkg-config files, courtesy of downstream
 # packagers; let's check those first, and fall back to find_library()
@@ -196,14 +199,8 @@
   gdi32_dep = cc.find_library('gdi32', required: true)
 endif
 
-# Python
-python = import('python3').find_python()
-if not python.found()
-  python = find_program('python', required: true)
-endif
-
 # Generates the dispatch tables
-gen_dispatch_py = files('src/gen_dispatch.py')
+gen_dispatch_py = find_program('src/gen_dispatch.py')
 
 gl_registry = files('registry/gl.xml')
 egl_registry = files('registry/egl.xml')
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index 73f7435..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,184 +0,0 @@
-# Copyright © 2013 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-AM_CPPFLAGS = \
-	-I$(top_srcdir)/include \
-	-I$(top_builddir)/include \
-	$()
-
-AM_CFLAGS = \
-	$(CWARNFLAGS) \
-	$(VISIBILITY_CFLAGS) \
-	$(X11_CFLAGS) \
-	$(EGL_CFLAGS) \
-	$()
-
-epoxyincludedir = $(includedir)/epoxy
-lib_LTLIBRARIES = libepoxy.la
-
-epoxyinclude_DATA = \
-	$(GENERATED_GL_INCLUDES) \
-	$(INSTALL_GLX_INCLUDES) \
-	$(INSTALL_EGL_INCLUDES) \
-	$(INSTALL_WGL_INCLUDES) \
-	$()
-
-if BUILD_EGL
-INSTALL_EGL_INCLUDES = $(GENERATED_EGL_INCLUDES)
-endif
-
-if BUILD_GLX
-INSTALL_GLX_INCLUDES = $(GENERATED_GLX_INCLUDES)
-endif
-
-if BUILD_WGL
-INSTALL_WGL_INCLUDES = $(GENERATED_WGL_INCLUDES)
-endif
-
-GENERATED_GL_INCLUDES = \
-	$(builddir)/../include/epoxy/gl_generated.h \
-	$()
-
-GENERATED_GLX_INCLUDES = \
-	$(builddir)/../include/epoxy/glx_generated.h \
-	$()
-
-GENERATED_EGL_INCLUDES = \
-	$(builddir)/../include/epoxy/egl_generated.h \
-	$()
-
-GENERATED_WGL_INCLUDES = \
-	$(builddir)/../include/epoxy/wgl_generated.h \
-	$()
-
-GENERATED_GL_SOURCE = gl_generated_dispatch.c
-
-GENERATED_GL = \
-	$(GENERATED_GL_SOURCE) \
-	$(GENERATED_GL_INCLUDES) \
-	$()
-
-GENERATED_GLX_SOURCE = glx_generated_dispatch.c
-
-GENERATED_GLX = \
-	$(GENERATED_GLX_SOURCE) \
-	$(GENERATED_GLX_INCLUDES) \
-	$()
-
-GENERATED_EGL_SOURCE = egl_generated_dispatch.c
-
-GENERATED_EGL = \
-	$(GENERATED_EGL_SOURCE) \
-	$(GENERATED_EGL_INCLUDES) \
-	$()
-
-GENERATED_WGL_SOURCE = wgl_generated_dispatch.c
-
-GENERATED_WGL = \
-	$(GENERATED_WGL_SOURCE) \
-	$(GENERATED_WGL_INCLUDES) \
-	$()
-
-BUILT_SOURCES = \
-	$(GENERATED_GL) \
-	$(GENERATED_GLX) \
-	$(GENERATED_EGL) \
-	$(GENERATED_WGL) \
-	$()
-CLEANFILES = $(BUILT_SOURCES)
-
-libepoxy_la_SOURCES = \
-	dispatch_common.c \
-	dispatch_common.h \
-	$(GENERATED_GL) \
-	$(BUILD_EGL_CODE) \
-	$(BUILD_GLX_CODE) \
-	$(BUILD_WGL_CODE) \
-	$()
-
-libepoxy_la_LDFLAGS = \
-	-no-undefined \
-        -Bsymbolic-functions \
-	$()
-
-libepoxy_la_LIBADD = \
-	$(EPOXY_LINK_LIBS) \
-        $(DLOPEN_LIBS) \
-	$()
-
-if BUILD_EGL
-BUILD_EGL_CODE = \
-	$(GENERATED_EGL) \
-	dispatch_egl.c \
-	$()
-endif
-
-if BUILD_GLX
-BUILD_GLX_CODE = \
-	$(GENERATED_GLX) \
-	dispatch_glx.c \
-	$()
-endif
-
-if BUILD_WGL
-BUILD_WGL_CODE = \
-	$(GENERATED_WGL) \
-	dispatch_wgl.c \
-	$()
-endif
-
-# These are generated alongside the .c file.
-$(GENERATED_GL_INCLUDES): $(GENERATED_GL_SOURCE)
-$(GENERATED_GLX_INCLUDES): $(GENERATED_GLX_SOURCE)
-$(GENERATED_EGL_INCLUDES): $(GENERATED_EGL_SOURCE)
-$(GENERATED_WGL_INCLUDES): $(GENERATED_WGL_SOURCE)
-
-$(GENERATED_GL_SOURCE): $(srcdir)/gen_dispatch.py $(top_srcdir)/registry/gl.xml
-	@$(MKDIR_P) $(top_builddir)/include/epoxy
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/gen_dispatch.py \
-		--srcdir $(top_builddir)/src \
-		--includedir $(top_builddir)/include/epoxy \
-		$(top_srcdir)/registry/gl.xml
-
-$(GENERATED_GLX_SOURCE): $(srcdir)/gen_dispatch.py $(top_srcdir)/registry/glx.xml
-	@$(MKDIR_P) $(top_builddir)/include/epoxy
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/gen_dispatch.py \
-		--srcdir $(top_builddir)/src \
-		--includedir $(top_builddir)/include/epoxy \
-		$(top_srcdir)/registry/glx.xml
-
-$(GENERATED_EGL_SOURCE): $(srcdir)/gen_dispatch.py $(top_srcdir)/registry/egl.xml
-	@$(MKDIR_P) $(top_builddir)/include/epoxy
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/gen_dispatch.py \
-		--srcdir $(top_builddir)/src \
-		--includedir $(top_builddir)/include/epoxy \
-		$(top_srcdir)/registry/egl.xml
-
-$(GENERATED_WGL_SOURCE): $(srcdir)/gen_dispatch.py $(top_srcdir)/registry/wgl.xml
-	@$(MKDIR_P) $(top_builddir)/include/epoxy
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/gen_dispatch.py \
-		--srcdir $(top_builddir)/src \
-		--includedir $(top_builddir)/include/epoxy \
-		$(top_srcdir)/registry/wgl.xml
-
-EXTRA_DIST = \
-	gen_dispatch.py \
-	$()
diff --git a/src/dispatch_common.c b/src/dispatch_common.c
index b3e4f5f..153eb7c 100644
--- a/src/dispatch_common.c
+++ b/src/dispatch_common.c
@@ -392,10 +392,10 @@
 }
 
 static int
-epoxy_internal_gl_version(GLenum version_string, int error_version)
+epoxy_internal_gl_version(GLenum version_string, int error_version, int factor)
 {
     const char *version = (const char *)glGetString(version_string);
-    GLint major, minor, factor;
+    GLint major, minor;
     int scanf_count;
 
     if (!version)
@@ -413,11 +413,6 @@
         abort();
     }
 
-    if (minor >= 10)
-        factor = 100;
-    else
-        factor = 10;
-
     return factor * major + minor;
 }
 
@@ -439,7 +434,7 @@
 int
 epoxy_gl_version(void)
 {
-    return epoxy_internal_gl_version(GL_VERSION, 0);
+    return epoxy_internal_gl_version(GL_VERSION, 0, 10);
 }
 
 int
@@ -448,7 +443,7 @@
     if (api.begin_count)
         return 100;
 
-    return epoxy_internal_gl_version(GL_VERSION, 100);
+    return epoxy_internal_gl_version(GL_VERSION, 100, 10);
 }
 
 /**
@@ -471,7 +466,7 @@
 {
     if (epoxy_gl_version() >= 20 ||
         epoxy_has_gl_extension ("GL_ARB_shading_language_100"))
-        return epoxy_internal_gl_version(GL_SHADING_LANGUAGE_VERSION, 0);
+        return epoxy_internal_gl_version(GL_SHADING_LANGUAGE_VERSION, 0, 100);
 
     return 0;
 }
@@ -675,13 +670,27 @@
     get_dlopen_handle(&api.gl_handle, OPENGL_LIB, true, true);
 #else
 
+    // Prefer GLX_LIB over OPENGL_LIB to maintain existing behavior.
+    // Using the inverse ordering OPENGL_LIB -> GLX_LIB, causes issues such as:
+    // https://github.com/anholt/libepoxy/issues/240 (apitrace missing calls)
+    // https://github.com/anholt/libepoxy/issues/252 (Xorg boot crash)
+    get_dlopen_handle(&api.glx_handle, GLX_LIB, false, true);
+    api.gl_handle = api.glx_handle;
+
 #if defined(OPENGL_LIB)
     if (!api.gl_handle)
-	get_dlopen_handle(&api.gl_handle, OPENGL_LIB, false, true);
+        get_dlopen_handle(&api.gl_handle, OPENGL_LIB, false, true);
 #endif
 
-    get_dlopen_handle(&api.glx_handle, GLX_LIB, true, true);
-    api.gl_handle = api.glx_handle;
+    if (!api.gl_handle) {
+#if defined(OPENGL_LIB)
+        fprintf(stderr, "Couldn't open %s or %s\n", GLX_LIB, OPENGL_LIB);
+#else
+        fprintf(stderr, "Couldn't open %s\n", GLX_LIB);
+#endif
+        abort();
+    }
+
 #endif
 }
 
diff --git a/src/dispatch_common.h b/src/dispatch_common.h
index a361ccc..a136943 100644
--- a/src/dispatch_common.h
+++ b/src/dispatch_common.h
@@ -47,9 +47,12 @@
 #endif
 #if PLATFORM_HAS_EGL
 # if !ENABLE_X11
-/* Mesa uses this symbol to avoid including X11 headers when including
- * EGL.h; since X11 was explicitly disabled at configuration time, we
- * should do the same
+/* Disable including X11 headers if the X11 support was disabled at
+ * configuration time
+ */
+#  define EGL_NO_X11 1
+/* Older versions of Mesa use this symbol to achieve the same result
+ * as EGL_NO_X11
  */
 #  define MESA_EGL_NO_X11_HEADERS 1
 # endif
diff --git a/src/gen_dispatch.py b/src/gen_dispatch.py
index f4d0f31..3daad84 100755
--- a/src/gen_dispatch.py
+++ b/src/gen_dispatch.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 
 # Copyright © 2013 Intel Corporation
@@ -466,6 +467,7 @@
                                                                     func.args_decl))
 
     def write_header_header(self, out_file):
+        self.close()
         self.out_file = open(out_file, 'w')
 
         self.outln('/* GL dispatch header.')
@@ -514,9 +516,17 @@
             self.outln('typedef uint32_t khronos_uint32_t;')
             self.outln('typedef uint64_t khronos_uint64_t;')
             self.outln('typedef float khronos_float_t;')
-            self.outln('typedef long khronos_intptr_t;')
-            self.outln('typedef long khronos_ssize_t;')
-            self.outln('typedef unsigned long khronos_usize_t;')
+            self.outln('#ifdef _WIN64')
+            self.outln('typedef signed   long long int khronos_intptr_t;')
+            self.outln('typedef unsigned long long int khronos_uintptr_t;')
+            self.outln('typedef signed   long long int khronos_ssize_t;')
+            self.outln('typedef unsigned long long int khronos_usize_t;')
+            self.outln('#else')
+            self.outln('typedef signed   long int      khronos_intptr_t;')
+            self.outln('typedef unsigned long int      khronos_uintptr_t;')
+            self.outln('typedef signed   long int      khronos_ssize_t;')
+            self.outln('typedef unsigned long int      khronos_usize_t;')
+            self.outln('#endif')
             self.outln('typedef uint64_t khronos_utime_nanoseconds_t;')
             self.outln('typedef int64_t khronos_stime_nanoseconds_t;')
             self.outln('#define KHRONOS_MAX_ENUM 0x7FFFFFFF')
@@ -525,7 +535,6 @@
             self.outln('    KHRONOS_TRUE  = 1,')
             self.outln('    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM')
             self.outln('} khronos_boolean_enum_t;')
-            self.outln('typedef uintptr_t khronos_uintptr_t;')
 
         if self.target == "glx":
             self.outln('#include <X11/Xlib.h>')
@@ -756,6 +765,7 @@
         self.outln('')
 
     def write_source(self, f):
+        self.close()
         self.out_file = open(f, 'w')
 
         self.outln('/* GL dispatch code.')
@@ -848,6 +858,12 @@
         for func in self.sorted_functions:
             self.write_function_pointer(func)
 
+    def close(self):
+        if self.out_file:
+            self.out_file.close()
+            self.out_file = None
+
+
 argparser = argparse.ArgumentParser(description='Generate GL dispatch wrappers.')
 argparser.add_argument('files', metavar='file.xml', nargs='+', help='GL API XML files to be parsed')
 argparser.add_argument('--outputdir', metavar='dir', required=False, help='Destination directory for files (default to current dir)')
@@ -912,3 +928,5 @@
         generator.write_header(os.path.join(includedir, name + '_generated.h'))
     if build_source:
         generator.write_source(os.path.join(srcdir, name + '_generated_dispatch.c'))
+
+    generator.close()
diff --git a/src/meson.build b/src/meson.build
index fe092d1..e19a918 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -33,7 +33,6 @@
                             input: registry,
                             output: [ gen_source ],
                             command: [
-                              python,
                               gen_dispatch_py,
                               '--source',
                               '--no-header',
@@ -54,19 +53,24 @@
 endif
 
 # Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108
-if host_system == 'darwin'
-  common_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ]
-endif
+darwin_versions = [1, '1.0']
 
 epoxy_deps = [ dl_dep, ]
 if host_system == 'windows'
   epoxy_deps += [ opengl32_dep, gdi32_dep ]
 endif
+if enable_x11
+  epoxy_deps += [ x11_headers_dep, ]
+endif
+if build_egl
+  epoxy_deps += [ elg_headers_dep, ]
+endif
 
 libepoxy = library(
   'epoxy',
   sources: epoxy_sources + epoxy_headers,
   version: '0.0.0',
+  darwin_versions: darwin_versions,
   install: true,
   dependencies: epoxy_deps,
   include_directories: libepoxy_inc,
@@ -74,17 +78,22 @@
   link_args: common_ldflags,
 )
 
+epoxy_has_glx = build_glx ? '1' : '0'
+epoxy_has_egl = build_egl ? '1' : '0'
+epoxy_has_wgl = build_wgl ? '1' : '0'
+
 libepoxy_dep = declare_dependency(
   link_with: libepoxy,
   include_directories: libepoxy_inc,
   dependencies: epoxy_deps,
   sources: epoxy_headers,
+  variables: {
+    'epoxy_has_glx': epoxy_has_glx,
+    'epoxy_has_egl': epoxy_has_egl,
+    'epoxy_has_wgl': epoxy_has_wgl,
+  },
 )
 
-epoxy_has_glx = build_glx ? '1' : '0'
-epoxy_has_egl = build_egl ? '1' : '0'
-epoxy_has_wgl = build_wgl ? '1' : '0'
-
 # We don't want to add these dependencies to the library, as they are
 # not needed when building Epoxy; we do want to add them to the generated
 # pkg-config file, for consumers of Epoxy
diff --git a/test/.gitignore b/test/.gitignore
deleted file mode 100644
index 78919f3..0000000
--- a/test/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-egl_and_glx_different_pointers_egl
-egl_and_glx_different_pointers_egl_glx
-egl_and_glx_different_pointers_glx
-egl_has_extension_nocontext
-egl_gl
-egl_gles1_without_glx
-egl_gles2_without_glx
-glx_alias_prefer_same_name
-glx_beginend
-glx_gles2
-glx_glxgetprocaddress_nocontext
-glx_has_extension_nocontext
-glx_public_api
-glx_public_api_core
-glx_shared_znow
-glx_static
-headerguards
-khronos_typedefs
-miscdefines
-wgl_core_and_exts
-wgl_usefontbitmaps
-wgl_usefontbitmaps_unicode
-*.log
-*.trs
diff --git a/test/Makefile.am b/test/Makefile.am
deleted file mode 100644
index fc3ffcd..0000000
--- a/test/Makefile.am
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright © 2013 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-EPOXY = $(builddir)/../src/libepoxy.la
-
-check_LTLIBRARIES = \
-	$(EGL_UTIL_LIB) \
-	$(GLX_UTIL_LIB) \
-	$(WGL_UTIL_LIB) \
-	$()
-
-libegl_common_la_SOURCES = \
-	egl_common.c \
-	egl_common.h
-	$()
-
-libglx_common_la_SOURCES = \
-	glx_common.c \
-	glx_common.h
-	$()
-
-libwgl_common_la_SOURCES = \
-	wgl_common.c \
-	wgl_common.h
-	$()
-libwgl_common_la_LIBADD = $(EPOXY)
-
-AM_CPPFLAGS = \
-	-I$(top_srcdir)/include \
-	-I$(top_builddir)/include \
-	$(X11_CFLAGS) \
-	$(EGL_CFLAGS) \
-	$()
-
-AM_CFLAGS = $(CWARNFLAGS)
-
-TESTS = \
-	$(EGL_TESTS) \
-	$(GLX_TESTS) \
-	$(EGL_AND_GLX_TESTS) \
-	$(WGL_TESTS) \
-	gl_version$(EXEEXT) \
-	headerguards$(EXEEXT) \
-	miscdefines$(EXEEXT) \
-	khronos_typedefs$(EXEEXT) \
-	$()
-
-check_BINARIES = $(EGL_AND_GLX_BIN)
-
-XFAIL_TESTS = \
-	$()
-
-check_PROGRAMS = $(TESTS)
-
-if BUILD_EGL
-EGL_TESTS = \
-	$()
-
-if HAVE_X11
-EGL_TESTS += \
-	egl_has_extension_nocontext \
-	egl_epoxy_api \
-	egl_gles2_without_glx \
-	$()
-
-if HAS_GLES1
-EGL_TESTS += egl_gles1_without_glx
-endif
-
-EGL_UTIL_LIB = libegl_common.la
-endif
-endif
-
-if BUILD_GLX
-if HAS_ZNOW
-GLX_SHARED_ZNOW = glx_shared_znow
-endif
-
-if BUILD_EGL
-if BUILD_GLX
-if HAVE_DLVSYM
-EGL_AND_GLX_TESTS = \
-	egl_gl \
-        $()
-endif
-endif
-endif
-
-if HAVE_DLVSYM
-GLX_DLVSYM_TESTS = \
-	glx_alias_prefer_same_name \
-	glx_gles2 \
-        $()
-endif
-
-GLX_TESTS = \
-	glx_beginend \
-	glx_public_api \
-	glx_public_api_core \
-	glx_glxgetprocaddress_nocontext \
-	glx_has_extension_nocontext \
-	glx_static \
-        $(GLX_SHARED_ZNOW) \
-        $(GLX_DLVSYM_TESTS) \
-	$()
-
-GLX_UTIL_LIB = libglx_common.la
-endif
-
-if BUILD_WGL
-WGL_TESTS = \
-	wgl_core_and_exts$(EXEEXT) \
-	wgl_per_context_funcptrs$(EXEEXT) \
-	wgl_usefontbitmaps$(EXEEXT) \
-	wgl_usefontbitmaps_unicode$(EXEEXT) \
-	$()
-
-WGL_UTIL_LIB = libwgl_common.la
-endif
-
-egl_has_extension_nocontext_LDADD = $(EPOXY) libegl_common.la $(X11_LIBS)
-
-egl_epoxy_api_LDADD = $(EPOXY) libegl_common.la $(X11_LIBS)
-
-egl_gl_LDADD = $(EPOXY) $(DLOPEN_LIBS) libegl_common.la $(X11_LIBS)
-
-egl_gles1_without_glx_CPPFLAGS = $(AM_CPPFLAGS) -DGLES_VERSION=1
-egl_gles1_without_glx_SOURCES = egl_without_glx.c
-egl_gles1_without_glx_LDADD = $(EPOXY) $(DLOPEN_LIBS) libegl_common.la $(X11_LIBS)
-
-egl_gles2_without_glx_CPPFLAGS = $(AM_CPPFLAGS) -DGLES_VERSION=2
-egl_gles2_without_glx_SOURCES = egl_without_glx.c
-egl_gles2_without_glx_LDADD = $(EPOXY) $(DLOPEN_LIBS) libegl_common.la $(X11_LIBS)
-
-glx_alias_prefer_same_name_SOURCES = glx_alias_prefer_same_name.c dlwrap.c dlwrap.h
-glx_alias_prefer_same_name_LDFLAGS = -rdynamic
-glx_alias_prefer_same_name_LDADD = $(EPOXY) libglx_common.la $(X11_LIBS) $(DLOPEN_LIBS)
-
-glx_beginend_LDADD = $(EPOXY) libglx_common.la $(GL_LIBS) $(X11_LIBS)
-
-glx_gles2_SOURCES = glx_gles2.c dlwrap.c dlwrap.h
-glx_gles2_LDFLAGS = -rdynamic
-glx_gles2_LDADD = $(EPOXY) libglx_common.la $(X11_LIBS) $(DLOPEN_LIBS)
-
-glx_public_api_LDADD = $(EPOXY) libglx_common.la $(X11_LIBS)
-
-glx_public_api_core_LDADD = $(EPOXY) libglx_common.la $(X11_LIBS)
-
-glx_glxgetprocaddress_nocontext_LDADD = $(EPOXY) libglx_common.la $(X11_LIBS)
-
-glx_has_extension_nocontext_LDADD = $(EPOXY) libglx_common.la $(X11_LIBS)
-
-glx_static_CFLAGS = -DNEEDS_TO_BE_STATIC
-glx_static_LDADD = $(DLOPEN_LIBS) $(EPOXY) libglx_common.la $(X11_LIBS)
-glx_static_LDFLAGS = -static
-
-glx_shared_znow_SOURCES = glx_static.c
-glx_shared_znow_LDADD = $(DLOPEN_LIBS) $(EPOXY) libglx_common.la $(X11_LIBS)
-glx_shared_znow_LDFLAGS = -Wl,-z,now
-
-khronos_typedefs_SOURCES = \
-	khronos_typedefs.c \
-	khronos_typedefs.h \
-	khronos_typedefs_nonepoxy.c \
-	$()
-
-wgl_core_and_exts_LDADD = $(EPOXY) libwgl_common.la -lgdi32
-
-wgl_per_context_funcptrs_LDADD = $(EPOXY) libwgl_common.la -lgdi32
-
-wgl_usefontbitmaps_LDADD = $(EPOXY) libwgl_common.la -lgdi32
-wgl_usefontbitmaps_unicode_SOURCES = wgl_usefontbitmaps.c
-wgl_usefontbitmaps_unicode_LDADD = $(EPOXY) libwgl_common.la -lgdi32
-wgl_usefontbitmaps_unicode_CPPFLAGS = $(AM_CPPFLAGS) -DUNICODE
diff --git a/test/gl_version.c b/test/gl_version.c
index 9ab0080..8873ef7 100644
--- a/test/gl_version.c
+++ b/test/gl_version.c
@@ -29,7 +29,7 @@
 const char *mock_gl_version;
 const char *mock_glsl_version;
 
-static const GLubyte *override_glGetString(GLenum name)
+static const GLubyte * EPOXY_CALLSPEC override_glGetString(GLenum name)
 {
     switch (name) {
     case GL_VERSION:
@@ -80,6 +80,8 @@
 
     pass = pass && test_version("3.0 Mesa 13.0.6", 30,
                                 "1.30", 130);
+    pass = pass && test_version("OpenGL ES 2.0 Mesa 20.1.0-devel (git-4bb19a330e)", 20,
+                                "OpenGL ES GLSL ES 1.0.16", 100);
     pass = pass && test_version("OpenGL ES 3.2 Mesa 18.3.0-devel", 32,
                                 "OpenGL ES GLSL ES 3.20", 320);
     pass = pass && test_version("4.5.0 NVIDIA 384.130", 45,
