The package rpms/kitty.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=81e78947f3d2...
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=4a1520081499....
Change:
+%ifarch armv7hl i686 86_64
-%ifarch armv7hl i686 86_64
Thanks.
Full change:
============
commit 109fab5ebb061dc920de0b2fdd817e978f46f368
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:44:42 2020 +0200
Add link to upstream bug
diff --git a/kitty.spec b/kitty.spec
index 08e1366..0775721 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -6,6 +6,9 @@ Name: kitty
Version: 0.17.1
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
+
+# 0.17.1 won't compile on ppc64le arch
+# *
https://github.com/kovidgoyal/kitty/issues/2471
ExcludeArch: s390x ppc64le
# BSD: docs/_templates/searchbox.html
commit 7d0c409e8455f1e3d55070ceba679f60c1c30a0b
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:38:23 2020 +0200
Update to 0.17.1
diff --git a/.gitignore b/.gitignore
index 6778b5f..ed63750 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/kitty-0.15.1.tar.gz
/kitty-0.16.0.tar.gz
/kitty-0.17.0.tar.gz
+/kitty-0.17.1.tar.gz
diff --git a/kitty-make-kitty-build-again.patch b/kitty-make-kitty-build-again.patch
deleted file mode 100644
index a26545e..0000000
--- a/kitty-make-kitty-build-again.patch
+++ /dev/null
@@ -1,1100 +0,0 @@
-From 037111715a78a946f9913bbdecb95d3d377d73b0 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:34:29 +0530
-Subject: [PATCH 01/11] ...
-
----
- docs/layouts.rst | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/layouts.rst b/docs/layouts.rst
-index 933db11ad..c6673b724 100644
---- a/docs/layouts.rst
-+++ b/docs/layouts.rst
-@@ -24,7 +24,7 @@ other in arbitrary arrangements, based on *Layouts*, see below for
examples:
-
- There are many different layouts available. They are all enabled by default,
- you can switch layouts using :sc:`next_layout`. To control which layouts
--are available use :opt:`enabled_layouts` the first listed layout becomes
-+are available use :opt:`enabled_layouts`, the first listed layout becomes
- the default. Individual layouts and how to use them are described below.
-
- .. contents::
-
-From 33a84a609ccc5f21f487214a06b73848ea009551 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:35:34 +0530
-Subject: [PATCH 02/11] ...
-
----
- docs/changelog.rst | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index cb1283211..f89a770aa 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -7,7 +7,7 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- 0.17.0 [2020-03-24]
- --------------------
-
--- A new :ref:`splits_layout` to arrange windows in arbitrary splits
-+- :ref:`splits_layout` to arrange windows in arbitrary splits
- (:iss:`2308`)
-
- - Add support for specifying a background image, see :opt:`background_image`
-
-From c4f7c5c1cd337af14ac4a2c49ff5eeccbaec329f Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:58:30 +0530
-Subject: [PATCH 03/11] More explanation for OSC 52 extension
-
----
- docs/protocol-extensions.rst | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst
-index c91bdfc68..1a9bc0ae6 100644
---- a/docs/protocol-extensions.rst
-+++ b/docs/protocol-extensions.rst
-@@ -219,6 +219,11 @@ first, for example::
- <ESC>]52;c;!<ESC>\
-
- Here ``!`` is not valid base64 encoded text, so it clears the clipboard.
-+Further, since it is invalid, it should be ignored by terminal emulators
-+that do not support this extension, thereby making it safe to use, simply
-+always send it before starting a new OSC 52 paste, even if you aren't chunking
-+up large pastes, that way kitty wont concatenate your paste, and it will have
-+no ill-effects in other terminal emulators.
-
- In case you're using software that can't be easily adapted to this
- protocol extension, it can be disabled by specifying ``no-append`` to the
-
-From 5227b1f98b5353a1a0f4e58ae19335ffa89257e3 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 15:53:13 +0530
-Subject: [PATCH 04/11] Fix :opt:`cursor_underline_thickness` not working
-
-Fixes #2465
----
- docs/changelog.rst | 7 +++++++
- kitty/fonts.c | 2 +-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index f89a770aa..3bd8e3579 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -4,6 +4,13 @@ Changelog
- |kitty| is a feature full, cross-platform, *fast*, GPU based terminal emulator.
- To update |kitty|, :doc:`follow the instructions <binary>`.
-
-+0.17.1 [future]
-+--------------------
-+
-+- Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
-+
-+
-+- :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
- --------------------
-
-diff --git a/kitty/fonts.c b/kitty/fonts.c
-index 54e697665..b045587f5 100644
---- a/kitty/fonts.c
-+++ b/kitty/fonts.c
-@@ -1243,7 +1243,7 @@ send_prerendered_sprites(FontGroup *fg) {
- current_send_sprite_to_gpu((FONTS_DATA_HANDLE)fg, x, y, z, fg->canvas);
- do_increment(fg, &error);
- if (error != 0) { sprite_map_set_error(error); PyErr_Print();
fatal("Failed"); }
-- PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd",
fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position,
fg->underline_thickness, OPT(cursor_beam_thickness), fg->logical_dpi_x,
fg->logical_dpi_y);
-+ PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd",
fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position,
fg->underline_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness),
fg->logical_dpi_x, fg->logical_dpi_y);
- if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); }
- for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) {
- x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z =
fg->sprite_tracker.z;
-
-From 0d87b8fac5168171493cb0d8cef85d60e564c0b0 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 16:05:02 +0530
-Subject: [PATCH 05/11] Fix a regression in 0.17 that caused tab bar background
- to be rendered after the last tab as well
-
-Fixes #2464
----
- docs/changelog.rst | 3 +++
- kitty/tab_bar.py | 5 ++++-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index 3bd8e3579..e5f189f2b 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -9,6 +9,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
-
- - Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
-
-+- Fix a regression in 0.17 that caused tab bar background to be rendered after
-+ the last tab as well (:iss:`2464`)
-+
-
- - :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
-diff --git a/kitty/tab_bar.py b/kitty/tab_bar.py
-index 1b111eaa0..3d97741b9 100644
---- a/kitty/tab_bar.py
-+++ b/kitty/tab_bar.py
-@@ -66,6 +66,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData,
index: int)
-
-
- def draw_tab_with_separator(draw_data: DrawData, screen: Screen, tab: TabBarData,
before: int, max_title_length: int, index: int, is_last: bool) -> int:
-+ tab_bg = draw_data.active_bg if tab.is_active else draw_data.inactive_bg
-+ screen.cursor.bg = as_rgb(color_as_int(tab_bg))
- if draw_data.leading_spaces:
- screen.draw(' ' * draw_data.leading_spaces)
- draw_title(draw_data, screen, tab, index)
-@@ -138,6 +140,7 @@ def draw_tab_with_powerline(draw_data: DrawData, screen: Screen, tab:
TabBarData
- screen.draw(' ')
- start_draw = 1
-
-+ screen.cursor.bg = tab_bg
- if min_title_length >= max_title_length:
- screen.draw('')
- else:
-@@ -179,7 +182,7 @@ def __init__(self, os_window_id: int, opts: Options):
- s.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
- s.color_profile.set_configured_colors(
- color_as_int(opts.inactive_tab_foreground),
-- color_as_int(opts.inactive_tab_background)
-+ color_as_int(opts.background)
- )
- self.blank_rects: Tuple[Rect, ...] = ()
- sep = opts.tab_separator
-
-From b0b8222a9672bd3865d0b42f9005e797cabd570c Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:04:17 +0530
-Subject: [PATCH 06/11] ...
-
----
- docs/changelog.rst | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index e5f189f2b..e9e137b43 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -13,7 +13,6 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- the last tab as well (:iss:`2464`)
-
-
--- :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
- --------------------
-
-
-From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:07:37 +0530
-Subject: [PATCH 07/11] Fix #2466
-
----
- glfw/glfw.py | 6 +-
- kitty/glfw-wrapper.c | 1 +
- kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
- 3 files changed, 145 insertions(+), 137 deletions(-)
-
-diff --git a/glfw/glfw.py b/glfw/glfw.py
-index 77e2dee68..41c36daaa 100755
---- a/glfw/glfw.py
-+++ b/glfw/glfw.py
-@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
- self.args = [Arg('void v')]
-
- def declaration(self) -> str:
-- return 'typedef {restype} (*{name}_func)({args});\n{name}_func
{name}_impl;\n#define {name} {name}_impl'.format(
-+ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func
{name}_impl;\n#define {name} {name}_impl'.format(
- restype=self.restype,
- name=self.name,
- args=', '.join(a.type for a in self.args)
-@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
- {}
-
- typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
-@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
- f.write(header)
-
- code = '''
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
-index 1159529bf..3833977ee 100644
---- a/kitty/glfw-wrapper.c
-+++ b/kitty/glfw-wrapper.c
-@@ -1,4 +1,5 @@
-
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
-index ac4629f3a..b7a816761 100644
---- a/kitty/glfw-wrapper.h
-+++ b/kitty/glfw-wrapper.h
-@@ -9,6 +9,9 @@
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
-
-
- /*! @name GLFW version macros
-@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long
id);
- typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
- typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
- typedef int (*glfwInit_func)(monotonic_t);
--glfwInit_func glfwInit_impl;
-+GFW_EXTERN glfwInit_func glfwInit_impl;
- #define glfwInit glfwInit_impl
-
- typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
--glfwRunMainLoop_func glfwRunMainLoop_impl;
-+GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
- #define glfwRunMainLoop glfwRunMainLoop_impl
-
- typedef void (*glfwStopMainLoop_func)(void);
--glfwStopMainLoop_func glfwStopMainLoop_impl;
-+GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
- #define glfwStopMainLoop glfwStopMainLoop_impl
-
- typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void
*, GLFWuserdatafun);
--glfwAddTimer_func glfwAddTimer_impl;
-+GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
- #define glfwAddTimer glfwAddTimer_impl
-
- typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
--glfwUpdateTimer_func glfwUpdateTimer_impl;
-+GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
- #define glfwUpdateTimer glfwUpdateTimer_impl
-
- typedef void (*glfwRemoveTimer_func)(unsigned long);
--glfwRemoveTimer_func glfwRemoveTimer_impl;
-+GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
- #define glfwRemoveTimer glfwRemoveTimer_impl
-
- typedef void (*glfwTerminate_func)(void);
--glfwTerminate_func glfwTerminate_impl;
-+GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
- #define glfwTerminate glfwTerminate_impl
-
- typedef void (*glfwInitHint_func)(int, int);
--glfwInitHint_func glfwInitHint_impl;
-+GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
- #define glfwInitHint glfwInitHint_impl
-
- typedef void (*glfwGetVersion_func)(int*, int*, int*);
--glfwGetVersion_func glfwGetVersion_impl;
-+GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
- #define glfwGetVersion glfwGetVersion_impl
-
- typedef const char* (*glfwGetVersionString_func)(void);
--glfwGetVersionString_func glfwGetVersionString_impl;
-+GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
- #define glfwGetVersionString glfwGetVersionString_impl
-
- typedef int (*glfwGetError_func)(const char**);
--glfwGetError_func glfwGetError_impl;
-+GFW_EXTERN glfwGetError_func glfwGetError_impl;
- #define glfwGetError glfwGetError_impl
-
- typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
--glfwSetErrorCallback_func glfwSetErrorCallback_impl;
-+GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
- #define glfwSetErrorCallback glfwSetErrorCallback_impl
-
- typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
--glfwGetMonitors_func glfwGetMonitors_impl;
-+GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
- #define glfwGetMonitors glfwGetMonitors_impl
-
- typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
--glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
-+GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
- #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
-
- typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPos_func glfwGetMonitorPos_impl;
-+GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
- #define glfwGetMonitorPos glfwGetMonitorPos_impl
-
- typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
--glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
-+GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
- #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
-
- typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
-+GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
- #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
-
- typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
--glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
-+GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
- #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
-
- typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
--glfwGetMonitorName_func glfwGetMonitorName_impl;
-+GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
- #define glfwGetMonitorName glfwGetMonitorName_impl
-
- typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
--glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
-+GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
- #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
-
- typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
--glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
-+GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
- #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
-
- typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
--glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
-+GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
- #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
--glfwGetVideoModes_func glfwGetVideoModes_impl;
-+GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
- #define glfwGetVideoModes glfwGetVideoModes_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
--glfwGetVideoMode_func glfwGetVideoMode_impl;
-+GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
- #define glfwGetVideoMode glfwGetVideoMode_impl
-
- typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
--glfwSetGamma_func glfwSetGamma_impl;
-+GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
- #define glfwSetGamma glfwSetGamma_impl
-
- typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
--glfwGetGammaRamp_func glfwGetGammaRamp_impl;
-+GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
- #define glfwGetGammaRamp glfwGetGammaRamp_impl
-
- typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
--glfwSetGammaRamp_func glfwSetGammaRamp_impl;
-+GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
- #define glfwSetGammaRamp glfwSetGammaRamp_impl
-
- typedef void (*glfwDefaultWindowHints_func)(void);
--glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
-+GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
- #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
-
- typedef void (*glfwWindowHint_func)(int, int);
--glfwWindowHint_func glfwWindowHint_impl;
-+GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
- #define glfwWindowHint glfwWindowHint_impl
-
- typedef void (*glfwWindowHintString_func)(int, const char*);
--glfwWindowHintString_func glfwWindowHintString_impl;
-+GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
- #define glfwWindowHintString glfwWindowHintString_impl
-
- typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*,
GLFWwindow*);
--glfwCreateWindow_func glfwCreateWindow_impl;
-+GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
- #define glfwCreateWindow glfwCreateWindow_impl
-
- typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
--glfwToggleFullscreen_func glfwToggleFullscreen_impl;
-+GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
- #define glfwToggleFullscreen glfwToggleFullscreen_impl
-
- typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
--glfwDestroyWindow_func glfwDestroyWindow_impl;
-+GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
- #define glfwDestroyWindow glfwDestroyWindow_impl
-
- typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
--glfwWindowShouldClose_func glfwWindowShouldClose_impl;
-+GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
- #define glfwWindowShouldClose glfwWindowShouldClose_impl
-
- typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
--glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
-+GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
- #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
-
- typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
--glfwSetWindowTitle_func glfwSetWindowTitle_impl;
-+GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
- #define glfwSetWindowTitle glfwSetWindowTitle_impl
-
- typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
--glfwSetWindowIcon_func glfwSetWindowIcon_impl;
-+GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
- #define glfwSetWindowIcon glfwSetWindowIcon_impl
-
- typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
--glfwGetWindowPos_func glfwGetWindowPos_impl;
-+GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
- #define glfwGetWindowPos glfwGetWindowPos_impl
-
- typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
--glfwSetWindowPos_func glfwSetWindowPos_impl;
-+GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
- #define glfwSetWindowPos glfwSetWindowPos_impl
-
- typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
--glfwGetWindowSize_func glfwGetWindowSize_impl;
-+GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
- #define glfwGetWindowSize glfwGetWindowSize_impl
-
- typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
--glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
-+GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
- #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
-
- typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
--glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
-+GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
- #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
-
- typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
--glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
-+GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
- #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
-
- typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
--glfwSetWindowSize_func glfwSetWindowSize_impl;
-+GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
- #define glfwSetWindowSize glfwSetWindowSize_impl
-
- typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
--glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
-+GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
- #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
-
- typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
--glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
-+GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
- #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
-
- typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
--glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
-+GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
- #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
-
- typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
--glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
-+GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
- #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
-
- typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
--glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
-+GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
- #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
-
- typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
--glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
-+GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
- #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
-
- typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
--glfwIconifyWindow_func glfwIconifyWindow_impl;
-+GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
- #define glfwIconifyWindow glfwIconifyWindow_impl
-
- typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
--glfwRestoreWindow_func glfwRestoreWindow_impl;
-+GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
- #define glfwRestoreWindow glfwRestoreWindow_impl
-
- typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
--glfwMaximizeWindow_func glfwMaximizeWindow_impl;
-+GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
- #define glfwMaximizeWindow glfwMaximizeWindow_impl
-
- typedef void (*glfwShowWindow_func)(GLFWwindow*);
--glfwShowWindow_func glfwShowWindow_impl;
-+GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
- #define glfwShowWindow glfwShowWindow_impl
-
- typedef void (*glfwHideWindow_func)(GLFWwindow*);
--glfwHideWindow_func glfwHideWindow_impl;
-+GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
- #define glfwHideWindow glfwHideWindow_impl
-
- typedef void (*glfwFocusWindow_func)(GLFWwindow*);
--glfwFocusWindow_func glfwFocusWindow_impl;
-+GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
- #define glfwFocusWindow glfwFocusWindow_impl
-
- typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
--glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
-+GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
- #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
-
- typedef int (*glfwWindowBell_func)(GLFWwindow*);
--glfwWindowBell_func glfwWindowBell_impl;
-+GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
- #define glfwWindowBell glfwWindowBell_impl
-
- typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
--glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
-+GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
- #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
-
- typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int,
int);
--glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
-+GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
- #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
-
- typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
--glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
-+GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
- #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
-
- typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
--glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
-+GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
- #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
-
- typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
--glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
-+GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
- #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
-
- typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
--glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
-+GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
- #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
-
- typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*,
GLFWwindowposfun);
--glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
-+GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
- #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
-
- typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*,
GLFWwindowsizefun);
--glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
-+GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
- #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
-
- typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*,
GLFWwindowclosefun);
--glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
-+GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
- #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
-
- typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*,
GLFWwindowrefreshfun);
--glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
-+GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
- #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
-
- typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*,
GLFWwindowfocusfun);
--glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
-+GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
- #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
-
- typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*,
GLFWwindowocclusionfun);
--glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
-+GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
- #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
-
- typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*,
GLFWwindowiconifyfun);
--glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
-+GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
- #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
-
- typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*,
GLFWwindowmaximizefun);
--glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
-+GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
- #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
-
- typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*,
GLFWframebuffersizefun);
--glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
-+GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
- #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
-
- typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*,
GLFWwindowcontentscalefun);
--glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
-+GFW_EXTERN glfwSetWindowContentScaleCallback_func
glfwSetWindowContentScaleCallback_impl;
- #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
-
- typedef void (*glfwPostEmptyEvent_func)(void);
--glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
-+GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
- #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
-
- typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
--glfwGetInputMode_func glfwGetInputMode_impl;
-+GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
- #define glfwGetInputMode glfwGetInputMode_impl
-
- typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
--glfwSetInputMode_func glfwSetInputMode_impl;
-+GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
- #define glfwSetInputMode glfwSetInputMode_impl
-
- typedef const char* (*glfwGetKeyName_func)(int, int);
--glfwGetKeyName_func glfwGetKeyName_impl;
-+GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
- #define glfwGetKeyName glfwGetKeyName_impl
-
- typedef int (*glfwGetNativeKeyForKey_func)(int);
--glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
-+GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
- #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
-
- typedef int (*glfwGetKey_func)(GLFWwindow*, int);
--glfwGetKey_func glfwGetKey_impl;
-+GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
- #define glfwGetKey glfwGetKey_impl
-
- typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
--glfwGetMouseButton_func glfwGetMouseButton_impl;
-+GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
- #define glfwGetMouseButton glfwGetMouseButton_impl
-
- typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
--glfwGetCursorPos_func glfwGetCursorPos_impl;
-+GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
- #define glfwGetCursorPos glfwGetCursorPos_impl
-
- typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
--glfwSetCursorPos_func glfwSetCursorPos_impl;
-+GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
- #define glfwSetCursorPos glfwSetCursorPos_impl
-
- typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
--glfwCreateCursor_func glfwCreateCursor_impl;
-+GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
- #define glfwCreateCursor glfwCreateCursor_impl
-
- typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
--glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
-+GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
- #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
-
- typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
--glfwDestroyCursor_func glfwDestroyCursor_impl;
-+GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
- #define glfwDestroyCursor glfwDestroyCursor_impl
-
- typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
--glfwSetCursor_func glfwSetCursor_impl;
-+GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
- #define glfwSetCursor glfwSetCursor_impl
-
- typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
--glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
-+GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
- #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
-
- typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
--glfwUpdateIMEState_func glfwUpdateIMEState_impl;
-+GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
- #define glfwUpdateIMEState glfwUpdateIMEState_impl
-
- typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*,
GLFWmousebuttonfun);
--glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
-+GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
- #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
-
- typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*,
GLFWcursorposfun);
--glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
-+GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
- #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
-
- typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*,
GLFWcursorenterfun);
--glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
-+GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
- #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
-
- typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
--glfwSetScrollCallback_func glfwSetScrollCallback_impl;
-+GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
- #define glfwSetScrollCallback glfwSetScrollCallback_impl
-
- typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
--glfwSetDropCallback_func glfwSetDropCallback_impl;
-+GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
- #define glfwSetDropCallback glfwSetDropCallback_impl
-
- typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*,
GLFWliveresizefun);
--glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
-+GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
- #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
-
- typedef int (*glfwJoystickPresent_func)(int);
--glfwJoystickPresent_func glfwJoystickPresent_impl;
-+GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
- #define glfwJoystickPresent glfwJoystickPresent_impl
-
- typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
--glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
-+GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
- #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
-
- typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
--glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
-+GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
- #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
-
- typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
--glfwGetJoystickHats_func glfwGetJoystickHats_impl;
-+GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
- #define glfwGetJoystickHats glfwGetJoystickHats_impl
-
- typedef const char* (*glfwGetJoystickName_func)(int);
--glfwGetJoystickName_func glfwGetJoystickName_impl;
-+GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
- #define glfwGetJoystickName glfwGetJoystickName_impl
-
- typedef const char* (*glfwGetJoystickGUID_func)(int);
--glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
-+GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
- #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
-
- typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
--glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
-+GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
- #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
-
- typedef void* (*glfwGetJoystickUserPointer_func)(int);
--glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
-+GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
- #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
-
- typedef int (*glfwJoystickIsGamepad_func)(int);
--glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
-+GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
- #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
-
- typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
--glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
-+GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
- #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
-
- typedef int (*glfwUpdateGamepadMappings_func)(const char*);
--glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
-+GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
- #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
-
- typedef const char* (*glfwGetGamepadName_func)(int);
--glfwGetGamepadName_func glfwGetGamepadName_impl;
-+GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
- #define glfwGetGamepadName glfwGetGamepadName_impl
-
- typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
--glfwGetGamepadState_func glfwGetGamepadState_impl;
-+GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
- #define glfwGetGamepadState glfwGetGamepadState_impl
-
- typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
--glfwSetClipboardString_func glfwSetClipboardString_impl;
-+GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
- #define glfwSetClipboardString glfwSetClipboardString_impl
-
- typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
--glfwGetClipboardString_func glfwGetClipboardString_impl;
-+GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
- #define glfwGetClipboardString glfwGetClipboardString_impl
-
- typedef monotonic_t (*glfwGetTime_func)(void);
--glfwGetTime_func glfwGetTime_impl;
-+GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
- #define glfwGetTime glfwGetTime_impl
-
- typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
--glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
-+GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
- #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
-
- typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
--glfwGetCurrentContext_func glfwGetCurrentContext_impl;
-+GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
- #define glfwGetCurrentContext glfwGetCurrentContext_impl
-
- typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
--glfwSwapBuffers_func glfwSwapBuffers_impl;
-+GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
- #define glfwSwapBuffers glfwSwapBuffers_impl
-
- typedef void (*glfwSwapInterval_func)(int);
--glfwSwapInterval_func glfwSwapInterval_impl;
-+GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
- #define glfwSwapInterval glfwSwapInterval_impl
-
- typedef int (*glfwExtensionSupported_func)(const char*);
--glfwExtensionSupported_func glfwExtensionSupported_impl;
-+GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
- #define glfwExtensionSupported glfwExtensionSupported_impl
-
- typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
--glfwGetProcAddress_func glfwGetProcAddress_impl;
-+GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
- #define glfwGetProcAddress glfwGetProcAddress_impl
-
- typedef int (*glfwVulkanSupported_func)(void);
--glfwVulkanSupported_func glfwVulkanSupported_impl;
-+GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
- #define glfwVulkanSupported glfwVulkanSupported_impl
-
- typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
--glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
-+GFW_EXTERN glfwGetRequiredInstanceExtensions_func
glfwGetRequiredInstanceExtensions_impl;
- #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
-
- typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
--glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
-+GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
- #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
-
- typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
--glfwGetNSGLContext_func glfwGetNSGLContext_impl;
-+GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
- #define glfwGetNSGLContext glfwGetNSGLContext_impl
-
- typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
--glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
-+GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
- #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
-
- typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*,
GLFWcocoatextinputfilterfun);
--glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
-+GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
- #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
-
- typedef GLFWcocoatogglefullscreenfun
(*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
--glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
-+GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func
glfwSetCocoaToggleFullscreenIntercept_impl;
- #define glfwSetCocoaToggleFullscreenIntercept
glfwSetCocoaToggleFullscreenIntercept_impl
-
- typedef GLFWapplicationshouldhandlereopenfun
(*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
--glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
-+GFW_EXTERN glfwSetApplicationShouldHandleReopen_func
glfwSetApplicationShouldHandleReopen_impl;
- #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
-
- typedef GLFWapplicationwillfinishlaunchingfun
(*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
--glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
-+GFW_EXTERN glfwSetApplicationWillFinishLaunching_func
glfwSetApplicationWillFinishLaunching_impl;
- #define glfwSetApplicationWillFinishLaunching
glfwSetApplicationWillFinishLaunching_impl
-
- typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
--glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
-+GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
- #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
-
- typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
--glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
-+GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
- #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
-
- typedef void* (*glfwGetX11Display_func)(void);
--glfwGetX11Display_func glfwGetX11Display_impl;
-+GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
- #define glfwGetX11Display glfwGetX11Display_impl
-
- typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
--glfwGetX11Window_func glfwGetX11Window_impl;
-+GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
- #define glfwGetX11Window glfwGetX11Window_impl
-
- typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
--glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
-+GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
- #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
-
- typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
--glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
-+GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
- #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
-
- typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
--glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
-+GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
- #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
-
- typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long,
GLFWwaylandframecallbackfunc);
--glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
-+GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
- #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
-
- typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const
char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
--glfwDBusUserNotify_func glfwDBusUserNotify_impl;
-+GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
- #define glfwDBusUserNotify glfwDBusUserNotify_impl
-
- typedef void
(*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
--glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
-+GFW_EXTERN glfwDBusSetUserNotificationHandler_func
glfwDBusSetUserNotificationHandler_impl;
- #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
-
- const char* load_glfw(const char* path);
-
-From 6dbdf72f40571e8a1ed1787ada4e08597e45ac75 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:55:38 +0530
-Subject: [PATCH 08/11] CoreText: When matching fonts prefer
- non-expanded/condensed variants
-
----
- kitty/core_text.m | 13 ++++++++-----
- kitty/fast_data_types.pyi | 3 +++
- kitty/fonts/core_text.py | 5 +++--
- 3 files changed, 14 insertions(+), 7 deletions(-)
-
-diff --git a/kitty/core_text.m b/kitty/core_text.m
-index 29036ea2f..229e8dc54 100644
---- a/kitty/core_text.m
-+++ b/kitty/core_text.m
-@@ -92,10 +92,10 @@
- NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontStyleNameAttribute);
- NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontTraitsAttribute);
- unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
-- NSNumber *weightVal = traits[(id)kCTFontWeightTrait];
-- NSNumber *widthVal = traits[(id)kCTFontWidthTrait];
-+ float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
-+ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
-
-- PyObject *ans = Py_BuildValue("{ssssssss sOsOsO sfsfsI}",
-+ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
- "path", [[url path] UTF8String],
- "postscript_name", [psName UTF8String],
- "family", [family UTF8String],
-@@ -104,9 +104,12 @@
- "bold", (straits & kCTFontBoldTrait) != 0 ? Py_True :
Py_False,
- "italic", (straits & kCTFontItalicTrait) != 0 ? Py_True :
Py_False,
- "monospace", (straits & kCTFontMonoSpaceTrait) != 0 ? Py_True
: Py_False,
-+ "expanded", (straits & kCTFontExpandedTrait) != 0 ? Py_True :
Py_False,
-+ "condensed", (straits & kCTFontCondensedTrait) != 0 ? Py_True
: Py_False,
-+ "color_glyphs", (straits & kCTFontColorGlyphsTrait) != 0 ?
Py_True : Py_False,
-
-- "weight", [weightVal floatValue],
-- "width", [widthVal floatValue],
-+ "weight", weightVal,
-+ "width", widthVal,
- "traits", straits
- );
- [url release];
-diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi
-index 4749e0c50..9333a8eaa 100644
---- a/kitty/fast_data_types.pyi
-+++ b/kitty/fast_data_types.pyi
-@@ -438,6 +438,9 @@ class CoreTextFont(TypedDict):
- style: str
- bold: bool
- italic: bool
-+ expanded: bool
-+ condensed: bool
-+ color_glyphs: bool
- monospace: bool
- weight: float
- width: float
-diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py
-index 20567a3a1..5061b0fb2 100644
---- a/kitty/fonts/core_text.py
-+++ b/kitty/fonts/core_text.py
-@@ -54,12 +54,13 @@ def find_best_match(family: str, bold: bool = False, italic: bool =
False) -> Co
- q = re.sub(r'\s+', ' ', family.lower())
- font_map = all_fonts_map()
-
-- def score(candidate: CoreTextFont) -> Tuple[int, int]:
-+ def score(candidate: CoreTextFont) -> Tuple[int, int, int]:
- style_match = 1 if candidate['bold'] == bold and candidate[
- 'italic'
- ] == italic else 0
- monospace_match = 1 if candidate['monospace'] else 0
-- return style_match, monospace_match
-+ is_regular_width = not candidate['expanded'] and not
candidate['condensed']
-+ return style_match, monospace_match, 1 if is_regular_width else 0
-
- # First look for an exact match
- for selector in ('ps_map', 'full_map'):
-
-From 21c561043197f145fe7a478fdf078c4546c25914 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:02:44 +0530
-Subject: [PATCH 09/11] ...
-
----
- kitty/core_text.m | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kitty/core_text.m b/kitty/core_text.m
-index 229e8dc54..23d1bcf5b 100644
---- a/kitty/core_text.m
-+++ b/kitty/core_text.m
-@@ -92,7 +92,7 @@
- NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontStyleNameAttribute);
- NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontTraitsAttribute);
- unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
-- float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
-+ float weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
- float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
-
- PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
-
-From a07369ce69660a940431fc5297940391d23a4803 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:14:14 +0530
-Subject: [PATCH 10/11] Update changelog
-
----
- docs/changelog.rst | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index e9e137b43..c683c99ad 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -12,6 +12,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- - Fix a regression in 0.17 that caused tab bar background to be rendered after
- the last tab as well (:iss:`2464`)
-
-+- macOS: Fix a regression in 0.17 that caused incorrect variants to be
-+ automatically selected for some fonts (:iss:`2462`)
-+
-
- 0.17.0 [2020-03-24]
- --------------------
-
-From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:33:32 +0530
-Subject: [PATCH 11/11] Fix #2468
-
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 917d29e6a..350d5e1fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
- else:
- cc = 'cc'
- raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
-- ver_ = raw.split('.')[:2]
-+ ver_ = raw.strip().split('.')[:2]
- try:
-- ver = int(ver_[0]), int(ver_[1])
-+ if len(ver_) == 1:
-+ ver = int(ver_[0]), 0
-+ else:
-+ ver = int(ver_[0]), int(ver_[1])
- except Exception:
- ver = (0, 0)
- return cc, ver
diff --git a/kitty.spec b/kitty.spec
index 6e5d628..08e1366 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -3,7 +3,7 @@
%global build_ldflags %{build_ldflags} -flto
Name: kitty
-Version: 0.17.0
+Version: 0.17.1
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
ExcludeArch: s390x ppc64le
@@ -18,16 +18,6 @@ Source0:
https://github.com/kovidgoyal/kitty/archive/v%{version}/%{name}-
# *
https://github.com/kovidgoyal/kitty/pull/2088
Source1:
https://raw.githubusercontent.com/kovidgoyal/kitty/46c0951751444e4f499400...
-# Failed to compile with new GCC 10
-# *
https://github.com/kovidgoyal/kitty/issues/2466
-#
-# Build error if compile with --debug
-# *
https://github.com/kovidgoyal/kitty/issues/2468
-#
-# Some tests not passed on aarch64 and ppc64le arches
-# *
https://github.com/kovidgoyal/kitty/issues/2469
-Patch0:
https://github.com/kovidgoyal/kitty/compare/v0.17.0...master.patch#/kitty...
-
BuildRequires: desktop-file-utils
BuildRequires: gcc
BuildRequires: libappstream-glib
@@ -186,6 +176,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
+* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.1-1
+- Update to 0.17.1
+
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.0-1
- Update to 0.17.0
- Exclude arch ppc64le
diff --git a/sources b/sources
index 14af472..44d6632 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kitty-0.17.0.tar.gz) =
30718d143da7f7825f992e90cd38d2743e03821c1d0bddac3cdebb7d308848f9dd271c203e9615d9ea77c7cc0c9621dd2c53d845f19a5f1d12afe63179996dd2
+SHA512 (kitty-0.17.1.tar.gz) =
e7de00bbbba2172f3e7dba1809135b044f20f89ee156b1c6b7121a13f7589413cc9b2a264b30d2ab3e8cb9265a5291f3c932961b034e216735ec6704c5445200
commit 4a152008149967db6fa3bb2028719aac1da69fed
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:25:53 2020 +0200
Update to 0.17.0
Exclude arch ppc64le
diff --git a/compile-with-debug-fix.patch b/compile-with-debug-fix.patch
deleted file mode 100644
index b0c5304..0000000
--- a/compile-with-debug-fix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:33:32 +0530
-Subject: [PATCH] Fix #2468
-
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 917d29e6a..350d5e1fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
- else:
- cc = 'cc'
- raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
-- ver_ = raw.split('.')[:2]
-+ ver_ = raw.strip().split('.')[:2]
- try:
-- ver = int(ver_[0]), int(ver_[1])
-+ if len(ver_) == 1:
-+ ver = int(ver_[0]), 0
-+ else:
-+ ver = int(ver_[0]), int(ver_[1])
- except Exception:
- ver = (0, 0)
- return cc, ver
diff --git a/kitty-gcc10.patch b/kitty-gcc10.patch
deleted file mode 100644
index a21216f..0000000
--- a/kitty-gcc10.patch
+++ /dev/null
@@ -1,750 +0,0 @@
-From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:07:37 +0530
-Subject: [PATCH] Fix #2466
-
----
- glfw/glfw.py | 6 +-
- kitty/glfw-wrapper.c | 1 +
- kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
- 3 files changed, 145 insertions(+), 137 deletions(-)
-
-diff --git a/glfw/glfw.py b/glfw/glfw.py
-index 77e2dee68..41c36daaa 100755
---- a/glfw/glfw.py
-+++ b/glfw/glfw.py
-@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
- self.args = [Arg('void v')]
-
- def declaration(self) -> str:
-- return 'typedef {restype} (*{name}_func)({args});\n{name}_func
{name}_impl;\n#define {name} {name}_impl'.format(
-+ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func
{name}_impl;\n#define {name} {name}_impl'.format(
- restype=self.restype,
- name=self.name,
- args=', '.join(a.type for a in self.args)
-@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
- {}
-
- typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
-@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
- f.write(header)
-
- code = '''
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
-index 1159529bf..3833977ee 100644
---- a/kitty/glfw-wrapper.c
-+++ b/kitty/glfw-wrapper.c
-@@ -1,4 +1,5 @@
-
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
-index ac4629f3a..b7a816761 100644
---- a/kitty/glfw-wrapper.h
-+++ b/kitty/glfw-wrapper.h
-@@ -9,6 +9,9 @@
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
-
-
- /*! @name GLFW version macros
-@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long
id);
- typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
- typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
- typedef int (*glfwInit_func)(monotonic_t);
--glfwInit_func glfwInit_impl;
-+GFW_EXTERN glfwInit_func glfwInit_impl;
- #define glfwInit glfwInit_impl
-
- typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
--glfwRunMainLoop_func glfwRunMainLoop_impl;
-+GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
- #define glfwRunMainLoop glfwRunMainLoop_impl
-
- typedef void (*glfwStopMainLoop_func)(void);
--glfwStopMainLoop_func glfwStopMainLoop_impl;
-+GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
- #define glfwStopMainLoop glfwStopMainLoop_impl
-
- typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void
*, GLFWuserdatafun);
--glfwAddTimer_func glfwAddTimer_impl;
-+GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
- #define glfwAddTimer glfwAddTimer_impl
-
- typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
--glfwUpdateTimer_func glfwUpdateTimer_impl;
-+GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
- #define glfwUpdateTimer glfwUpdateTimer_impl
-
- typedef void (*glfwRemoveTimer_func)(unsigned long);
--glfwRemoveTimer_func glfwRemoveTimer_impl;
-+GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
- #define glfwRemoveTimer glfwRemoveTimer_impl
-
- typedef void (*glfwTerminate_func)(void);
--glfwTerminate_func glfwTerminate_impl;
-+GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
- #define glfwTerminate glfwTerminate_impl
-
- typedef void (*glfwInitHint_func)(int, int);
--glfwInitHint_func glfwInitHint_impl;
-+GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
- #define glfwInitHint glfwInitHint_impl
-
- typedef void (*glfwGetVersion_func)(int*, int*, int*);
--glfwGetVersion_func glfwGetVersion_impl;
-+GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
- #define glfwGetVersion glfwGetVersion_impl
-
- typedef const char* (*glfwGetVersionString_func)(void);
--glfwGetVersionString_func glfwGetVersionString_impl;
-+GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
- #define glfwGetVersionString glfwGetVersionString_impl
-
- typedef int (*glfwGetError_func)(const char**);
--glfwGetError_func glfwGetError_impl;
-+GFW_EXTERN glfwGetError_func glfwGetError_impl;
- #define glfwGetError glfwGetError_impl
-
- typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
--glfwSetErrorCallback_func glfwSetErrorCallback_impl;
-+GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
- #define glfwSetErrorCallback glfwSetErrorCallback_impl
-
- typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
--glfwGetMonitors_func glfwGetMonitors_impl;
-+GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
- #define glfwGetMonitors glfwGetMonitors_impl
-
- typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
--glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
-+GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
- #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
-
- typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPos_func glfwGetMonitorPos_impl;
-+GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
- #define glfwGetMonitorPos glfwGetMonitorPos_impl
-
- typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
--glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
-+GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
- #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
-
- typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
-+GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
- #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
-
- typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
--glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
-+GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
- #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
-
- typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
--glfwGetMonitorName_func glfwGetMonitorName_impl;
-+GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
- #define glfwGetMonitorName glfwGetMonitorName_impl
-
- typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
--glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
-+GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
- #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
-
- typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
--glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
-+GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
- #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
-
- typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
--glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
-+GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
- #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
--glfwGetVideoModes_func glfwGetVideoModes_impl;
-+GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
- #define glfwGetVideoModes glfwGetVideoModes_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
--glfwGetVideoMode_func glfwGetVideoMode_impl;
-+GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
- #define glfwGetVideoMode glfwGetVideoMode_impl
-
- typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
--glfwSetGamma_func glfwSetGamma_impl;
-+GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
- #define glfwSetGamma glfwSetGamma_impl
-
- typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
--glfwGetGammaRamp_func glfwGetGammaRamp_impl;
-+GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
- #define glfwGetGammaRamp glfwGetGammaRamp_impl
-
- typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
--glfwSetGammaRamp_func glfwSetGammaRamp_impl;
-+GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
- #define glfwSetGammaRamp glfwSetGammaRamp_impl
-
- typedef void (*glfwDefaultWindowHints_func)(void);
--glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
-+GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
- #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
-
- typedef void (*glfwWindowHint_func)(int, int);
--glfwWindowHint_func glfwWindowHint_impl;
-+GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
- #define glfwWindowHint glfwWindowHint_impl
-
- typedef void (*glfwWindowHintString_func)(int, const char*);
--glfwWindowHintString_func glfwWindowHintString_impl;
-+GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
- #define glfwWindowHintString glfwWindowHintString_impl
-
- typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*,
GLFWwindow*);
--glfwCreateWindow_func glfwCreateWindow_impl;
-+GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
- #define glfwCreateWindow glfwCreateWindow_impl
-
- typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
--glfwToggleFullscreen_func glfwToggleFullscreen_impl;
-+GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
- #define glfwToggleFullscreen glfwToggleFullscreen_impl
-
- typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
--glfwDestroyWindow_func glfwDestroyWindow_impl;
-+GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
- #define glfwDestroyWindow glfwDestroyWindow_impl
-
- typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
--glfwWindowShouldClose_func glfwWindowShouldClose_impl;
-+GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
- #define glfwWindowShouldClose glfwWindowShouldClose_impl
-
- typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
--glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
-+GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
- #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
-
- typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
--glfwSetWindowTitle_func glfwSetWindowTitle_impl;
-+GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
- #define glfwSetWindowTitle glfwSetWindowTitle_impl
-
- typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
--glfwSetWindowIcon_func glfwSetWindowIcon_impl;
-+GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
- #define glfwSetWindowIcon glfwSetWindowIcon_impl
-
- typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
--glfwGetWindowPos_func glfwGetWindowPos_impl;
-+GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
- #define glfwGetWindowPos glfwGetWindowPos_impl
-
- typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
--glfwSetWindowPos_func glfwSetWindowPos_impl;
-+GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
- #define glfwSetWindowPos glfwSetWindowPos_impl
-
- typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
--glfwGetWindowSize_func glfwGetWindowSize_impl;
-+GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
- #define glfwGetWindowSize glfwGetWindowSize_impl
-
- typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
--glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
-+GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
- #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
-
- typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
--glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
-+GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
- #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
-
- typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
--glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
-+GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
- #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
-
- typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
--glfwSetWindowSize_func glfwSetWindowSize_impl;
-+GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
- #define glfwSetWindowSize glfwSetWindowSize_impl
-
- typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
--glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
-+GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
- #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
-
- typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
--glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
-+GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
- #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
-
- typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
--glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
-+GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
- #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
-
- typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
--glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
-+GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
- #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
-
- typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
--glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
-+GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
- #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
-
- typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
--glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
-+GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
- #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
-
- typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
--glfwIconifyWindow_func glfwIconifyWindow_impl;
-+GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
- #define glfwIconifyWindow glfwIconifyWindow_impl
-
- typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
--glfwRestoreWindow_func glfwRestoreWindow_impl;
-+GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
- #define glfwRestoreWindow glfwRestoreWindow_impl
-
- typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
--glfwMaximizeWindow_func glfwMaximizeWindow_impl;
-+GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
- #define glfwMaximizeWindow glfwMaximizeWindow_impl
-
- typedef void (*glfwShowWindow_func)(GLFWwindow*);
--glfwShowWindow_func glfwShowWindow_impl;
-+GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
- #define glfwShowWindow glfwShowWindow_impl
-
- typedef void (*glfwHideWindow_func)(GLFWwindow*);
--glfwHideWindow_func glfwHideWindow_impl;
-+GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
- #define glfwHideWindow glfwHideWindow_impl
-
- typedef void (*glfwFocusWindow_func)(GLFWwindow*);
--glfwFocusWindow_func glfwFocusWindow_impl;
-+GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
- #define glfwFocusWindow glfwFocusWindow_impl
-
- typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
--glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
-+GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
- #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
-
- typedef int (*glfwWindowBell_func)(GLFWwindow*);
--glfwWindowBell_func glfwWindowBell_impl;
-+GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
- #define glfwWindowBell glfwWindowBell_impl
-
- typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
--glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
-+GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
- #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
-
- typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int,
int);
--glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
-+GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
- #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
-
- typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
--glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
-+GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
- #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
-
- typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
--glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
-+GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
- #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
-
- typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
--glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
-+GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
- #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
-
- typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
--glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
-+GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
- #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
-
- typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*,
GLFWwindowposfun);
--glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
-+GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
- #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
-
- typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*,
GLFWwindowsizefun);
--glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
-+GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
- #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
-
- typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*,
GLFWwindowclosefun);
--glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
-+GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
- #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
-
- typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*,
GLFWwindowrefreshfun);
--glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
-+GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
- #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
-
- typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*,
GLFWwindowfocusfun);
--glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
-+GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
- #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
-
- typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*,
GLFWwindowocclusionfun);
--glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
-+GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
- #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
-
- typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*,
GLFWwindowiconifyfun);
--glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
-+GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
- #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
-
- typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*,
GLFWwindowmaximizefun);
--glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
-+GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
- #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
-
- typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*,
GLFWframebuffersizefun);
--glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
-+GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
- #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
-
- typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*,
GLFWwindowcontentscalefun);
--glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
-+GFW_EXTERN glfwSetWindowContentScaleCallback_func
glfwSetWindowContentScaleCallback_impl;
- #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
-
- typedef void (*glfwPostEmptyEvent_func)(void);
--glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
-+GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
- #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
-
- typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
--glfwGetInputMode_func glfwGetInputMode_impl;
-+GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
- #define glfwGetInputMode glfwGetInputMode_impl
-
- typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
--glfwSetInputMode_func glfwSetInputMode_impl;
-+GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
- #define glfwSetInputMode glfwSetInputMode_impl
-
- typedef const char* (*glfwGetKeyName_func)(int, int);
--glfwGetKeyName_func glfwGetKeyName_impl;
-+GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
- #define glfwGetKeyName glfwGetKeyName_impl
-
- typedef int (*glfwGetNativeKeyForKey_func)(int);
--glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
-+GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
- #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
-
- typedef int (*glfwGetKey_func)(GLFWwindow*, int);
--glfwGetKey_func glfwGetKey_impl;
-+GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
- #define glfwGetKey glfwGetKey_impl
-
- typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
--glfwGetMouseButton_func glfwGetMouseButton_impl;
-+GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
- #define glfwGetMouseButton glfwGetMouseButton_impl
-
- typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
--glfwGetCursorPos_func glfwGetCursorPos_impl;
-+GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
- #define glfwGetCursorPos glfwGetCursorPos_impl
-
- typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
--glfwSetCursorPos_func glfwSetCursorPos_impl;
-+GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
- #define glfwSetCursorPos glfwSetCursorPos_impl
-
- typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
--glfwCreateCursor_func glfwCreateCursor_impl;
-+GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
- #define glfwCreateCursor glfwCreateCursor_impl
-
- typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
--glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
-+GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
- #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
-
- typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
--glfwDestroyCursor_func glfwDestroyCursor_impl;
-+GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
- #define glfwDestroyCursor glfwDestroyCursor_impl
-
- typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
--glfwSetCursor_func glfwSetCursor_impl;
-+GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
- #define glfwSetCursor glfwSetCursor_impl
-
- typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
--glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
-+GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
- #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
-
- typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
--glfwUpdateIMEState_func glfwUpdateIMEState_impl;
-+GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
- #define glfwUpdateIMEState glfwUpdateIMEState_impl
-
- typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*,
GLFWmousebuttonfun);
--glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
-+GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
- #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
-
- typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*,
GLFWcursorposfun);
--glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
-+GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
- #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
-
- typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*,
GLFWcursorenterfun);
--glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
-+GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
- #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
-
- typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
--glfwSetScrollCallback_func glfwSetScrollCallback_impl;
-+GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
- #define glfwSetScrollCallback glfwSetScrollCallback_impl
-
- typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
--glfwSetDropCallback_func glfwSetDropCallback_impl;
-+GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
- #define glfwSetDropCallback glfwSetDropCallback_impl
-
- typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*,
GLFWliveresizefun);
--glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
-+GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
- #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
-
- typedef int (*glfwJoystickPresent_func)(int);
--glfwJoystickPresent_func glfwJoystickPresent_impl;
-+GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
- #define glfwJoystickPresent glfwJoystickPresent_impl
-
- typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
--glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
-+GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
- #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
-
- typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
--glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
-+GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
- #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
-
- typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
--glfwGetJoystickHats_func glfwGetJoystickHats_impl;
-+GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
- #define glfwGetJoystickHats glfwGetJoystickHats_impl
-
- typedef const char* (*glfwGetJoystickName_func)(int);
--glfwGetJoystickName_func glfwGetJoystickName_impl;
-+GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
- #define glfwGetJoystickName glfwGetJoystickName_impl
-
- typedef const char* (*glfwGetJoystickGUID_func)(int);
--glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
-+GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
- #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
-
- typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
--glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
-+GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
- #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
-
- typedef void* (*glfwGetJoystickUserPointer_func)(int);
--glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
-+GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
- #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
-
- typedef int (*glfwJoystickIsGamepad_func)(int);
--glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
-+GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
- #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
-
- typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
--glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
-+GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
- #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
-
- typedef int (*glfwUpdateGamepadMappings_func)(const char*);
--glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
-+GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
- #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
-
- typedef const char* (*glfwGetGamepadName_func)(int);
--glfwGetGamepadName_func glfwGetGamepadName_impl;
-+GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
- #define glfwGetGamepadName glfwGetGamepadName_impl
-
- typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
--glfwGetGamepadState_func glfwGetGamepadState_impl;
-+GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
- #define glfwGetGamepadState glfwGetGamepadState_impl
-
- typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
--glfwSetClipboardString_func glfwSetClipboardString_impl;
-+GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
- #define glfwSetClipboardString glfwSetClipboardString_impl
-
- typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
--glfwGetClipboardString_func glfwGetClipboardString_impl;
-+GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
- #define glfwGetClipboardString glfwGetClipboardString_impl
-
- typedef monotonic_t (*glfwGetTime_func)(void);
--glfwGetTime_func glfwGetTime_impl;
-+GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
- #define glfwGetTime glfwGetTime_impl
-
- typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
--glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
-+GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
- #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
-
- typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
--glfwGetCurrentContext_func glfwGetCurrentContext_impl;
-+GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
- #define glfwGetCurrentContext glfwGetCurrentContext_impl
-
- typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
--glfwSwapBuffers_func glfwSwapBuffers_impl;
-+GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
- #define glfwSwapBuffers glfwSwapBuffers_impl
-
- typedef void (*glfwSwapInterval_func)(int);
--glfwSwapInterval_func glfwSwapInterval_impl;
-+GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
- #define glfwSwapInterval glfwSwapInterval_impl
-
- typedef int (*glfwExtensionSupported_func)(const char*);
--glfwExtensionSupported_func glfwExtensionSupported_impl;
-+GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
- #define glfwExtensionSupported glfwExtensionSupported_impl
-
- typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
--glfwGetProcAddress_func glfwGetProcAddress_impl;
-+GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
- #define glfwGetProcAddress glfwGetProcAddress_impl
-
- typedef int (*glfwVulkanSupported_func)(void);
--glfwVulkanSupported_func glfwVulkanSupported_impl;
-+GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
- #define glfwVulkanSupported glfwVulkanSupported_impl
-
- typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
--glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
-+GFW_EXTERN glfwGetRequiredInstanceExtensions_func
glfwGetRequiredInstanceExtensions_impl;
- #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
-
- typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
--glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
-+GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
- #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
-
- typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
--glfwGetNSGLContext_func glfwGetNSGLContext_impl;
-+GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
- #define glfwGetNSGLContext glfwGetNSGLContext_impl
-
- typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
--glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
-+GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
- #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
-
- typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*,
GLFWcocoatextinputfilterfun);
--glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
-+GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
- #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
-
- typedef GLFWcocoatogglefullscreenfun
(*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
--glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
-+GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func
glfwSetCocoaToggleFullscreenIntercept_impl;
- #define glfwSetCocoaToggleFullscreenIntercept
glfwSetCocoaToggleFullscreenIntercept_impl
-
- typedef GLFWapplicationshouldhandlereopenfun
(*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
--glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
-+GFW_EXTERN glfwSetApplicationShouldHandleReopen_func
glfwSetApplicationShouldHandleReopen_impl;
- #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
-
- typedef GLFWapplicationwillfinishlaunchingfun
(*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
--glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
-+GFW_EXTERN glfwSetApplicationWillFinishLaunching_func
glfwSetApplicationWillFinishLaunching_impl;
- #define glfwSetApplicationWillFinishLaunching
glfwSetApplicationWillFinishLaunching_impl
-
- typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
--glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
-+GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
- #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
-
- typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
--glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
-+GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
- #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
-
- typedef void* (*glfwGetX11Display_func)(void);
--glfwGetX11Display_func glfwGetX11Display_impl;
-+GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
- #define glfwGetX11Display glfwGetX11Display_impl
-
- typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
--glfwGetX11Window_func glfwGetX11Window_impl;
-+GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
- #define glfwGetX11Window glfwGetX11Window_impl
-
- typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
--glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
-+GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
- #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
-
- typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
--glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
-+GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
- #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
-
- typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
--glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
-+GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
- #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
-
- typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long,
GLFWwaylandframecallbackfunc);
--glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
-+GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
- #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
-
- typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const
char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
--glfwDBusUserNotify_func glfwDBusUserNotify_impl;
-+GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
- #define glfwDBusUserNotify glfwDBusUserNotify_impl
-
- typedef void
(*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
--glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
-+GFW_EXTERN glfwDBusSetUserNotificationHandler_func
glfwDBusSetUserNotificationHandler_impl;
- #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
-
- const char* load_glfw(const char* path);
diff --git a/kitty-make-kitty-build-again.patch b/kitty-make-kitty-build-again.patch
new file mode 100644
index 0000000..a26545e
--- /dev/null
+++ b/kitty-make-kitty-build-again.patch
@@ -0,0 +1,1100 @@
+From 037111715a78a946f9913bbdecb95d3d377d73b0 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:34:29 +0530
+Subject: [PATCH 01/11] ...
+
+---
+ docs/layouts.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/layouts.rst b/docs/layouts.rst
+index 933db11ad..c6673b724 100644
+--- a/docs/layouts.rst
++++ b/docs/layouts.rst
+@@ -24,7 +24,7 @@ other in arbitrary arrangements, based on *Layouts*, see below for
examples:
+
+ There are many different layouts available. They are all enabled by default,
+ you can switch layouts using :sc:`next_layout`. To control which layouts
+-are available use :opt:`enabled_layouts` the first listed layout becomes
++are available use :opt:`enabled_layouts`, the first listed layout becomes
+ the default. Individual layouts and how to use them are described below.
+
+ .. contents::
+
+From 33a84a609ccc5f21f487214a06b73848ea009551 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:35:34 +0530
+Subject: [PATCH 02/11] ...
+
+---
+ docs/changelog.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index cb1283211..f89a770aa 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -7,7 +7,7 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ 0.17.0 [2020-03-24]
+ --------------------
+
+-- A new :ref:`splits_layout` to arrange windows in arbitrary splits
++- :ref:`splits_layout` to arrange windows in arbitrary splits
+ (:iss:`2308`)
+
+ - Add support for specifying a background image, see :opt:`background_image`
+
+From c4f7c5c1cd337af14ac4a2c49ff5eeccbaec329f Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:58:30 +0530
+Subject: [PATCH 03/11] More explanation for OSC 52 extension
+
+---
+ docs/protocol-extensions.rst | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst
+index c91bdfc68..1a9bc0ae6 100644
+--- a/docs/protocol-extensions.rst
++++ b/docs/protocol-extensions.rst
+@@ -219,6 +219,11 @@ first, for example::
+ <ESC>]52;c;!<ESC>\
+
+ Here ``!`` is not valid base64 encoded text, so it clears the clipboard.
++Further, since it is invalid, it should be ignored by terminal emulators
++that do not support this extension, thereby making it safe to use, simply
++always send it before starting a new OSC 52 paste, even if you aren't chunking
++up large pastes, that way kitty wont concatenate your paste, and it will have
++no ill-effects in other terminal emulators.
+
+ In case you're using software that can't be easily adapted to this
+ protocol extension, it can be disabled by specifying ``no-append`` to the
+
+From 5227b1f98b5353a1a0f4e58ae19335ffa89257e3 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 15:53:13 +0530
+Subject: [PATCH 04/11] Fix :opt:`cursor_underline_thickness` not working
+
+Fixes #2465
+---
+ docs/changelog.rst | 7 +++++++
+ kitty/fonts.c | 2 +-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index f89a770aa..3bd8e3579 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -4,6 +4,13 @@ Changelog
+ |kitty| is a feature full, cross-platform, *fast*, GPU based terminal emulator.
+ To update |kitty|, :doc:`follow the instructions <binary>`.
+
++0.17.1 [future]
++--------------------
++
++- Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
++
++
++- :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+ --------------------
+
+diff --git a/kitty/fonts.c b/kitty/fonts.c
+index 54e697665..b045587f5 100644
+--- a/kitty/fonts.c
++++ b/kitty/fonts.c
+@@ -1243,7 +1243,7 @@ send_prerendered_sprites(FontGroup *fg) {
+ current_send_sprite_to_gpu((FONTS_DATA_HANDLE)fg, x, y, z, fg->canvas);
+ do_increment(fg, &error);
+ if (error != 0) { sprite_map_set_error(error); PyErr_Print();
fatal("Failed"); }
+- PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd",
fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position,
fg->underline_thickness, OPT(cursor_beam_thickness), fg->logical_dpi_x,
fg->logical_dpi_y);
++ PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd",
fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position,
fg->underline_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness),
fg->logical_dpi_x, fg->logical_dpi_y);
+ if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); }
+ for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) {
+ x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z =
fg->sprite_tracker.z;
+
+From 0d87b8fac5168171493cb0d8cef85d60e564c0b0 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 16:05:02 +0530
+Subject: [PATCH 05/11] Fix a regression in 0.17 that caused tab bar background
+ to be rendered after the last tab as well
+
+Fixes #2464
+---
+ docs/changelog.rst | 3 +++
+ kitty/tab_bar.py | 5 ++++-
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index 3bd8e3579..e5f189f2b 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -9,6 +9,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+
+ - Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
+
++- Fix a regression in 0.17 that caused tab bar background to be rendered after
++ the last tab as well (:iss:`2464`)
++
+
+ - :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+diff --git a/kitty/tab_bar.py b/kitty/tab_bar.py
+index 1b111eaa0..3d97741b9 100644
+--- a/kitty/tab_bar.py
++++ b/kitty/tab_bar.py
+@@ -66,6 +66,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData,
index: int)
+
+
+ def draw_tab_with_separator(draw_data: DrawData, screen: Screen, tab: TabBarData,
before: int, max_title_length: int, index: int, is_last: bool) -> int:
++ tab_bg = draw_data.active_bg if tab.is_active else draw_data.inactive_bg
++ screen.cursor.bg = as_rgb(color_as_int(tab_bg))
+ if draw_data.leading_spaces:
+ screen.draw(' ' * draw_data.leading_spaces)
+ draw_title(draw_data, screen, tab, index)
+@@ -138,6 +140,7 @@ def draw_tab_with_powerline(draw_data: DrawData, screen: Screen, tab:
TabBarData
+ screen.draw(' ')
+ start_draw = 1
+
++ screen.cursor.bg = tab_bg
+ if min_title_length >= max_title_length:
+ screen.draw('')
+ else:
+@@ -179,7 +182,7 @@ def __init__(self, os_window_id: int, opts: Options):
+ s.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
+ s.color_profile.set_configured_colors(
+ color_as_int(opts.inactive_tab_foreground),
+- color_as_int(opts.inactive_tab_background)
++ color_as_int(opts.background)
+ )
+ self.blank_rects: Tuple[Rect, ...] = ()
+ sep = opts.tab_separator
+
+From b0b8222a9672bd3865d0b42f9005e797cabd570c Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:04:17 +0530
+Subject: [PATCH 06/11] ...
+
+---
+ docs/changelog.rst | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index e5f189f2b..e9e137b43 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -13,7 +13,6 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ the last tab as well (:iss:`2464`)
+
+
+-- :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+ --------------------
+
+
+From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:07:37 +0530
+Subject: [PATCH 07/11] Fix #2466
+
+---
+ glfw/glfw.py | 6 +-
+ kitty/glfw-wrapper.c | 1 +
+ kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
+ 3 files changed, 145 insertions(+), 137 deletions(-)
+
+diff --git a/glfw/glfw.py b/glfw/glfw.py
+index 77e2dee68..41c36daaa 100755
+--- a/glfw/glfw.py
++++ b/glfw/glfw.py
+@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
+ self.args = [Arg('void v')]
+
+ def declaration(self) -> str:
+- return 'typedef {restype} (*{name}_func)({args});\n{name}_func
{name}_impl;\n#define {name} {name}_impl'.format(
++ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func
{name}_impl;\n#define {name} {name}_impl'.format(
+ restype=self.restype,
+ name=self.name,
+ args=', '.join(a.type for a in self.args)
+@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
+ #include <stdint.h>
+ #include "monotonic.h"
+
++#ifndef GFW_EXTERN
++#define GFW_EXTERN extern
++#endif
+ {}
+
+ typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
+@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
+ f.write(header)
+
+ code = '''
++#define GFW_EXTERN
+ #include "data-types.h"
+ #include "glfw-wrapper.h"
+ #include <dlfcn.h>
+diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
+index 1159529bf..3833977ee 100644
+--- a/kitty/glfw-wrapper.c
++++ b/kitty/glfw-wrapper.c
+@@ -1,4 +1,5 @@
+
++#define GFW_EXTERN
+ #include "data-types.h"
+ #include "glfw-wrapper.h"
+ #include <dlfcn.h>
+diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
+index ac4629f3a..b7a816761 100644
+--- a/kitty/glfw-wrapper.h
++++ b/kitty/glfw-wrapper.h
+@@ -9,6 +9,9 @@
+ #include <stdint.h>
+ #include "monotonic.h"
+
++#ifndef GFW_EXTERN
++#define GFW_EXTERN extern
++#endif
+
+
+ /*! @name GLFW version macros
+@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long
id);
+ typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
+ typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
+ typedef int (*glfwInit_func)(monotonic_t);
+-glfwInit_func glfwInit_impl;
++GFW_EXTERN glfwInit_func glfwInit_impl;
+ #define glfwInit glfwInit_impl
+
+ typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
+-glfwRunMainLoop_func glfwRunMainLoop_impl;
++GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
+ #define glfwRunMainLoop glfwRunMainLoop_impl
+
+ typedef void (*glfwStopMainLoop_func)(void);
+-glfwStopMainLoop_func glfwStopMainLoop_impl;
++GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
+ #define glfwStopMainLoop glfwStopMainLoop_impl
+
+ typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void
*, GLFWuserdatafun);
+-glfwAddTimer_func glfwAddTimer_impl;
++GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
+ #define glfwAddTimer glfwAddTimer_impl
+
+ typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
+-glfwUpdateTimer_func glfwUpdateTimer_impl;
++GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
+ #define glfwUpdateTimer glfwUpdateTimer_impl
+
+ typedef void (*glfwRemoveTimer_func)(unsigned long);
+-glfwRemoveTimer_func glfwRemoveTimer_impl;
++GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
+ #define glfwRemoveTimer glfwRemoveTimer_impl
+
+ typedef void (*glfwTerminate_func)(void);
+-glfwTerminate_func glfwTerminate_impl;
++GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
+ #define glfwTerminate glfwTerminate_impl
+
+ typedef void (*glfwInitHint_func)(int, int);
+-glfwInitHint_func glfwInitHint_impl;
++GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
+ #define glfwInitHint glfwInitHint_impl
+
+ typedef void (*glfwGetVersion_func)(int*, int*, int*);
+-glfwGetVersion_func glfwGetVersion_impl;
++GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
+ #define glfwGetVersion glfwGetVersion_impl
+
+ typedef const char* (*glfwGetVersionString_func)(void);
+-glfwGetVersionString_func glfwGetVersionString_impl;
++GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
+ #define glfwGetVersionString glfwGetVersionString_impl
+
+ typedef int (*glfwGetError_func)(const char**);
+-glfwGetError_func glfwGetError_impl;
++GFW_EXTERN glfwGetError_func glfwGetError_impl;
+ #define glfwGetError glfwGetError_impl
+
+ typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
+-glfwSetErrorCallback_func glfwSetErrorCallback_impl;
++GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
+ #define glfwSetErrorCallback glfwSetErrorCallback_impl
+
+ typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
+-glfwGetMonitors_func glfwGetMonitors_impl;
++GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
+ #define glfwGetMonitors glfwGetMonitors_impl
+
+ typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
+-glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
++GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
+ #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
+
+ typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
+-glfwGetMonitorPos_func glfwGetMonitorPos_impl;
++GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
+ #define glfwGetMonitorPos glfwGetMonitorPos_impl
+
+ typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
+-glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
++GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
+ #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
+
+ typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
+-glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
++GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
+ #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
+
+ typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
+-glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
++GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
+ #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
+
+ typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
+-glfwGetMonitorName_func glfwGetMonitorName_impl;
++GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
+ #define glfwGetMonitorName glfwGetMonitorName_impl
+
+ typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
+-glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
++GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
+ #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
+
+ typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
+-glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
++GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
+ #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
+
+ typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
+-glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
++GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
+ #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
+
+ typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
+-glfwGetVideoModes_func glfwGetVideoModes_impl;
++GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
+ #define glfwGetVideoModes glfwGetVideoModes_impl
+
+ typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
+-glfwGetVideoMode_func glfwGetVideoMode_impl;
++GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
+ #define glfwGetVideoMode glfwGetVideoMode_impl
+
+ typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
+-glfwSetGamma_func glfwSetGamma_impl;
++GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
+ #define glfwSetGamma glfwSetGamma_impl
+
+ typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
+-glfwGetGammaRamp_func glfwGetGammaRamp_impl;
++GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
+ #define glfwGetGammaRamp glfwGetGammaRamp_impl
+
+ typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
+-glfwSetGammaRamp_func glfwSetGammaRamp_impl;
++GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
+ #define glfwSetGammaRamp glfwSetGammaRamp_impl
+
+ typedef void (*glfwDefaultWindowHints_func)(void);
+-glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
++GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
+ #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
+
+ typedef void (*glfwWindowHint_func)(int, int);
+-glfwWindowHint_func glfwWindowHint_impl;
++GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
+ #define glfwWindowHint glfwWindowHint_impl
+
+ typedef void (*glfwWindowHintString_func)(int, const char*);
+-glfwWindowHintString_func glfwWindowHintString_impl;
++GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
+ #define glfwWindowHintString glfwWindowHintString_impl
+
+ typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*,
GLFWwindow*);
+-glfwCreateWindow_func glfwCreateWindow_impl;
++GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
+ #define glfwCreateWindow glfwCreateWindow_impl
+
+ typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
+-glfwToggleFullscreen_func glfwToggleFullscreen_impl;
++GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
+ #define glfwToggleFullscreen glfwToggleFullscreen_impl
+
+ typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
+-glfwDestroyWindow_func glfwDestroyWindow_impl;
++GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
+ #define glfwDestroyWindow glfwDestroyWindow_impl
+
+ typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
+-glfwWindowShouldClose_func glfwWindowShouldClose_impl;
++GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
+ #define glfwWindowShouldClose glfwWindowShouldClose_impl
+
+ typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
+-glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
++GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
+ #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
+
+ typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
+-glfwSetWindowTitle_func glfwSetWindowTitle_impl;
++GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
+ #define glfwSetWindowTitle glfwSetWindowTitle_impl
+
+ typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
+-glfwSetWindowIcon_func glfwSetWindowIcon_impl;
++GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
+ #define glfwSetWindowIcon glfwSetWindowIcon_impl
+
+ typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
+-glfwGetWindowPos_func glfwGetWindowPos_impl;
++GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
+ #define glfwGetWindowPos glfwGetWindowPos_impl
+
+ typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
+-glfwSetWindowPos_func glfwSetWindowPos_impl;
++GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
+ #define glfwSetWindowPos glfwSetWindowPos_impl
+
+ typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
+-glfwGetWindowSize_func glfwGetWindowSize_impl;
++GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
+ #define glfwGetWindowSize glfwGetWindowSize_impl
+
+ typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
+-glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
++GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
+ #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
+
+ typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
+-glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
++GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
+ #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
+
+ typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
+-glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
++GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
+ #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
+
+ typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
+-glfwSetWindowSize_func glfwSetWindowSize_impl;
++GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
+ #define glfwSetWindowSize glfwSetWindowSize_impl
+
+ typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
+-glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
++GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
+ #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
+
+ typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
+-glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
++GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
+ #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
+
+ typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
+-glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
++GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
+ #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
+
+ typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
+-glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
++GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
+ #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
+
+ typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
+-glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
++GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
+ #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
+
+ typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
+-glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
++GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
+ #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
+
+ typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
+-glfwIconifyWindow_func glfwIconifyWindow_impl;
++GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
+ #define glfwIconifyWindow glfwIconifyWindow_impl
+
+ typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
+-glfwRestoreWindow_func glfwRestoreWindow_impl;
++GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
+ #define glfwRestoreWindow glfwRestoreWindow_impl
+
+ typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
+-glfwMaximizeWindow_func glfwMaximizeWindow_impl;
++GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
+ #define glfwMaximizeWindow glfwMaximizeWindow_impl
+
+ typedef void (*glfwShowWindow_func)(GLFWwindow*);
+-glfwShowWindow_func glfwShowWindow_impl;
++GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
+ #define glfwShowWindow glfwShowWindow_impl
+
+ typedef void (*glfwHideWindow_func)(GLFWwindow*);
+-glfwHideWindow_func glfwHideWindow_impl;
++GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
+ #define glfwHideWindow glfwHideWindow_impl
+
+ typedef void (*glfwFocusWindow_func)(GLFWwindow*);
+-glfwFocusWindow_func glfwFocusWindow_impl;
++GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
+ #define glfwFocusWindow glfwFocusWindow_impl
+
+ typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
+-glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
++GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
+ #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
+
+ typedef int (*glfwWindowBell_func)(GLFWwindow*);
+-glfwWindowBell_func glfwWindowBell_impl;
++GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
+ #define glfwWindowBell glfwWindowBell_impl
+
+ typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
+-glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
++GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
+ #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
+
+ typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int,
int);
+-glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
++GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
+ #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
+
+ typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
+-glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
++GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
+ #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
+
+ typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
+-glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
++GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
+ #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
+
+ typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
+-glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
++GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
+ #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
+
+ typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
+-glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
++GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
+ #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
+
+ typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*,
GLFWwindowposfun);
+-glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
++GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
+ #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
+
+ typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*,
GLFWwindowsizefun);
+-glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
++GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
+ #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
+
+ typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*,
GLFWwindowclosefun);
+-glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
++GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
+ #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
+
+ typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*,
GLFWwindowrefreshfun);
+-glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
++GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
+ #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
+
+ typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*,
GLFWwindowfocusfun);
+-glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
++GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
+ #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
+
+ typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*,
GLFWwindowocclusionfun);
+-glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
++GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
+ #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
+
+ typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*,
GLFWwindowiconifyfun);
+-glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
++GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
+ #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
+
+ typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*,
GLFWwindowmaximizefun);
+-glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
++GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
+ #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
+
+ typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*,
GLFWframebuffersizefun);
+-glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
++GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
+ #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
+
+ typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*,
GLFWwindowcontentscalefun);
+-glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
++GFW_EXTERN glfwSetWindowContentScaleCallback_func
glfwSetWindowContentScaleCallback_impl;
+ #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
+
+ typedef void (*glfwPostEmptyEvent_func)(void);
+-glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
++GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
+ #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
+
+ typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
+-glfwGetInputMode_func glfwGetInputMode_impl;
++GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
+ #define glfwGetInputMode glfwGetInputMode_impl
+
+ typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
+-glfwSetInputMode_func glfwSetInputMode_impl;
++GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
+ #define glfwSetInputMode glfwSetInputMode_impl
+
+ typedef const char* (*glfwGetKeyName_func)(int, int);
+-glfwGetKeyName_func glfwGetKeyName_impl;
++GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
+ #define glfwGetKeyName glfwGetKeyName_impl
+
+ typedef int (*glfwGetNativeKeyForKey_func)(int);
+-glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
++GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
+ #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
+
+ typedef int (*glfwGetKey_func)(GLFWwindow*, int);
+-glfwGetKey_func glfwGetKey_impl;
++GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
+ #define glfwGetKey glfwGetKey_impl
+
+ typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
+-glfwGetMouseButton_func glfwGetMouseButton_impl;
++GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
+ #define glfwGetMouseButton glfwGetMouseButton_impl
+
+ typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
+-glfwGetCursorPos_func glfwGetCursorPos_impl;
++GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
+ #define glfwGetCursorPos glfwGetCursorPos_impl
+
+ typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
+-glfwSetCursorPos_func glfwSetCursorPos_impl;
++GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
+ #define glfwSetCursorPos glfwSetCursorPos_impl
+
+ typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
+-glfwCreateCursor_func glfwCreateCursor_impl;
++GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
+ #define glfwCreateCursor glfwCreateCursor_impl
+
+ typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
+-glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
++GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
+ #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
+
+ typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
+-glfwDestroyCursor_func glfwDestroyCursor_impl;
++GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
+ #define glfwDestroyCursor glfwDestroyCursor_impl
+
+ typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
+-glfwSetCursor_func glfwSetCursor_impl;
++GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
+ #define glfwSetCursor glfwSetCursor_impl
+
+ typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
+-glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
++GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
+ #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
+
+ typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
+-glfwUpdateIMEState_func glfwUpdateIMEState_impl;
++GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
+ #define glfwUpdateIMEState glfwUpdateIMEState_impl
+
+ typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*,
GLFWmousebuttonfun);
+-glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
++GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
+ #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
+
+ typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*,
GLFWcursorposfun);
+-glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
++GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
+ #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
+
+ typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*,
GLFWcursorenterfun);
+-glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
++GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
+ #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
+
+ typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
+-glfwSetScrollCallback_func glfwSetScrollCallback_impl;
++GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
+ #define glfwSetScrollCallback glfwSetScrollCallback_impl
+
+ typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
+-glfwSetDropCallback_func glfwSetDropCallback_impl;
++GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
+ #define glfwSetDropCallback glfwSetDropCallback_impl
+
+ typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*,
GLFWliveresizefun);
+-glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
++GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
+ #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
+
+ typedef int (*glfwJoystickPresent_func)(int);
+-glfwJoystickPresent_func glfwJoystickPresent_impl;
++GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
+ #define glfwJoystickPresent glfwJoystickPresent_impl
+
+ typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
+-glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
++GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
+ #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
+
+ typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
+-glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
++GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
+ #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
+
+ typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
+-glfwGetJoystickHats_func glfwGetJoystickHats_impl;
++GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
+ #define glfwGetJoystickHats glfwGetJoystickHats_impl
+
+ typedef const char* (*glfwGetJoystickName_func)(int);
+-glfwGetJoystickName_func glfwGetJoystickName_impl;
++GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
+ #define glfwGetJoystickName glfwGetJoystickName_impl
+
+ typedef const char* (*glfwGetJoystickGUID_func)(int);
+-glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
++GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
+ #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
+
+ typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
+-glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
++GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
+ #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
+
+ typedef void* (*glfwGetJoystickUserPointer_func)(int);
+-glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
++GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
+ #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
+
+ typedef int (*glfwJoystickIsGamepad_func)(int);
+-glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
++GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
+ #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
+
+ typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
+-glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
++GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
+ #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
+
+ typedef int (*glfwUpdateGamepadMappings_func)(const char*);
+-glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
++GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
+ #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
+
+ typedef const char* (*glfwGetGamepadName_func)(int);
+-glfwGetGamepadName_func glfwGetGamepadName_impl;
++GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
+ #define glfwGetGamepadName glfwGetGamepadName_impl
+
+ typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
+-glfwGetGamepadState_func glfwGetGamepadState_impl;
++GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
+ #define glfwGetGamepadState glfwGetGamepadState_impl
+
+ typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
+-glfwSetClipboardString_func glfwSetClipboardString_impl;
++GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
+ #define glfwSetClipboardString glfwSetClipboardString_impl
+
+ typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
+-glfwGetClipboardString_func glfwGetClipboardString_impl;
++GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
+ #define glfwGetClipboardString glfwGetClipboardString_impl
+
+ typedef monotonic_t (*glfwGetTime_func)(void);
+-glfwGetTime_func glfwGetTime_impl;
++GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
+ #define glfwGetTime glfwGetTime_impl
+
+ typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
+-glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
++GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
+ #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
+
+ typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
+-glfwGetCurrentContext_func glfwGetCurrentContext_impl;
++GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
+ #define glfwGetCurrentContext glfwGetCurrentContext_impl
+
+ typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
+-glfwSwapBuffers_func glfwSwapBuffers_impl;
++GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
+ #define glfwSwapBuffers glfwSwapBuffers_impl
+
+ typedef void (*glfwSwapInterval_func)(int);
+-glfwSwapInterval_func glfwSwapInterval_impl;
++GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
+ #define glfwSwapInterval glfwSwapInterval_impl
+
+ typedef int (*glfwExtensionSupported_func)(const char*);
+-glfwExtensionSupported_func glfwExtensionSupported_impl;
++GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
+ #define glfwExtensionSupported glfwExtensionSupported_impl
+
+ typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
+-glfwGetProcAddress_func glfwGetProcAddress_impl;
++GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
+ #define glfwGetProcAddress glfwGetProcAddress_impl
+
+ typedef int (*glfwVulkanSupported_func)(void);
+-glfwVulkanSupported_func glfwVulkanSupported_impl;
++GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
+ #define glfwVulkanSupported glfwVulkanSupported_impl
+
+ typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
+-glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
++GFW_EXTERN glfwGetRequiredInstanceExtensions_func
glfwGetRequiredInstanceExtensions_impl;
+ #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
+
+ typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
+-glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
++GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
+ #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
+
+ typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
+-glfwGetNSGLContext_func glfwGetNSGLContext_impl;
++GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
+ #define glfwGetNSGLContext glfwGetNSGLContext_impl
+
+ typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
+-glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
++GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
+ #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
+
+ typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*,
GLFWcocoatextinputfilterfun);
+-glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
++GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
+ #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
+
+ typedef GLFWcocoatogglefullscreenfun
(*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
+-glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
++GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func
glfwSetCocoaToggleFullscreenIntercept_impl;
+ #define glfwSetCocoaToggleFullscreenIntercept
glfwSetCocoaToggleFullscreenIntercept_impl
+
+ typedef GLFWapplicationshouldhandlereopenfun
(*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
+-glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
++GFW_EXTERN glfwSetApplicationShouldHandleReopen_func
glfwSetApplicationShouldHandleReopen_impl;
+ #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
+
+ typedef GLFWapplicationwillfinishlaunchingfun
(*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
+-glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
++GFW_EXTERN glfwSetApplicationWillFinishLaunching_func
glfwSetApplicationWillFinishLaunching_impl;
+ #define glfwSetApplicationWillFinishLaunching
glfwSetApplicationWillFinishLaunching_impl
+
+ typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
+-glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
++GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
+ #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
+
+ typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
+-glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
++GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
+ #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
+
+ typedef void* (*glfwGetX11Display_func)(void);
+-glfwGetX11Display_func glfwGetX11Display_impl;
++GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
+ #define glfwGetX11Display glfwGetX11Display_impl
+
+ typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
+-glfwGetX11Window_func glfwGetX11Window_impl;
++GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
+ #define glfwGetX11Window glfwGetX11Window_impl
+
+ typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
+-glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
++GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
+ #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
+
+ typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
+-glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
++GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
+ #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
+
+ typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
+-glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
++GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
+ #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
+
+ typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long,
GLFWwaylandframecallbackfunc);
+-glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
++GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
+ #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
+
+ typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const
char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
+-glfwDBusUserNotify_func glfwDBusUserNotify_impl;
++GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
+ #define glfwDBusUserNotify glfwDBusUserNotify_impl
+
+ typedef void
(*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
+-glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
++GFW_EXTERN glfwDBusSetUserNotificationHandler_func
glfwDBusSetUserNotificationHandler_impl;
+ #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
+
+ const char* load_glfw(const char* path);
+
+From 6dbdf72f40571e8a1ed1787ada4e08597e45ac75 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:55:38 +0530
+Subject: [PATCH 08/11] CoreText: When matching fonts prefer
+ non-expanded/condensed variants
+
+---
+ kitty/core_text.m | 13 ++++++++-----
+ kitty/fast_data_types.pyi | 3 +++
+ kitty/fonts/core_text.py | 5 +++--
+ 3 files changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/kitty/core_text.m b/kitty/core_text.m
+index 29036ea2f..229e8dc54 100644
+--- a/kitty/core_text.m
++++ b/kitty/core_text.m
+@@ -92,10 +92,10 @@
+ NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontStyleNameAttribute);
+ NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontTraitsAttribute);
+ unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
+- NSNumber *weightVal = traits[(id)kCTFontWeightTrait];
+- NSNumber *widthVal = traits[(id)kCTFontWidthTrait];
++ float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
++ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
+
+- PyObject *ans = Py_BuildValue("{ssssssss sOsOsO sfsfsI}",
++ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
+ "path", [[url path] UTF8String],
+ "postscript_name", [psName UTF8String],
+ "family", [family UTF8String],
+@@ -104,9 +104,12 @@
+ "bold", (straits & kCTFontBoldTrait) != 0 ? Py_True :
Py_False,
+ "italic", (straits & kCTFontItalicTrait) != 0 ? Py_True :
Py_False,
+ "monospace", (straits & kCTFontMonoSpaceTrait) != 0 ? Py_True
: Py_False,
++ "expanded", (straits & kCTFontExpandedTrait) != 0 ? Py_True :
Py_False,
++ "condensed", (straits & kCTFontCondensedTrait) != 0 ? Py_True
: Py_False,
++ "color_glyphs", (straits & kCTFontColorGlyphsTrait) != 0 ?
Py_True : Py_False,
+
+- "weight", [weightVal floatValue],
+- "width", [widthVal floatValue],
++ "weight", weightVal,
++ "width", widthVal,
+ "traits", straits
+ );
+ [url release];
+diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi
+index 4749e0c50..9333a8eaa 100644
+--- a/kitty/fast_data_types.pyi
++++ b/kitty/fast_data_types.pyi
+@@ -438,6 +438,9 @@ class CoreTextFont(TypedDict):
+ style: str
+ bold: bool
+ italic: bool
++ expanded: bool
++ condensed: bool
++ color_glyphs: bool
+ monospace: bool
+ weight: float
+ width: float
+diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py
+index 20567a3a1..5061b0fb2 100644
+--- a/kitty/fonts/core_text.py
++++ b/kitty/fonts/core_text.py
+@@ -54,12 +54,13 @@ def find_best_match(family: str, bold: bool = False, italic: bool =
False) -> Co
+ q = re.sub(r'\s+', ' ', family.lower())
+ font_map = all_fonts_map()
+
+- def score(candidate: CoreTextFont) -> Tuple[int, int]:
++ def score(candidate: CoreTextFont) -> Tuple[int, int, int]:
+ style_match = 1 if candidate['bold'] == bold and candidate[
+ 'italic'
+ ] == italic else 0
+ monospace_match = 1 if candidate['monospace'] else 0
+- return style_match, monospace_match
++ is_regular_width = not candidate['expanded'] and not
candidate['condensed']
++ return style_match, monospace_match, 1 if is_regular_width else 0
+
+ # First look for an exact match
+ for selector in ('ps_map', 'full_map'):
+
+From 21c561043197f145fe7a478fdf078c4546c25914 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:02:44 +0530
+Subject: [PATCH 09/11] ...
+
+---
+ kitty/core_text.m | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kitty/core_text.m b/kitty/core_text.m
+index 229e8dc54..23d1bcf5b 100644
+--- a/kitty/core_text.m
++++ b/kitty/core_text.m
+@@ -92,7 +92,7 @@
+ NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontStyleNameAttribute);
+ NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor,
kCTFontTraitsAttribute);
+ unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
+- float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
++ float weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
+ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
+
+ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
+
+From a07369ce69660a940431fc5297940391d23a4803 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:14:14 +0530
+Subject: [PATCH 10/11] Update changelog
+
+---
+ docs/changelog.rst | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index e9e137b43..c683c99ad 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -12,6 +12,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ - Fix a regression in 0.17 that caused tab bar background to be rendered after
+ the last tab as well (:iss:`2464`)
+
++- macOS: Fix a regression in 0.17 that caused incorrect variants to be
++ automatically selected for some fonts (:iss:`2462`)
++
+
+ 0.17.0 [2020-03-24]
+ --------------------
+
+From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:33:32 +0530
+Subject: [PATCH 11/11] Fix #2468
+
+---
+ setup.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 917d29e6a..350d5e1fe 100755
+--- a/setup.py
++++ b/setup.py
+@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
+ else:
+ cc = 'cc'
+ raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
+- ver_ = raw.split('.')[:2]
++ ver_ = raw.strip().split('.')[:2]
+ try:
+- ver = int(ver_[0]), int(ver_[1])
++ if len(ver_) == 1:
++ ver = int(ver_[0]), 0
++ else:
++ ver = int(ver_[0]), int(ver_[1])
+ except Exception:
+ ver = (0, 0)
+ return cc, ver
diff --git a/kitty.spec b/kitty.spec
index 0b6373e..6e5d628 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -6,9 +6,7 @@ Name: kitty
Version: 0.17.0
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
-
-#
https://pagure.io/koji/issue/1679
-ExcludeArch: s390x
+ExcludeArch: s390x ppc64le
# BSD: docs/_templates/searchbox.html
# zlib: glfw/
@@ -22,11 +20,13 @@ Source1:
https://raw.githubusercontent.com/kovidgoyal/kitty/46c0951751444
# Failed to compile with new GCC 10
# *
https://github.com/kovidgoyal/kitty/issues/2466
-Patch0:
https://github.com/kovidgoyal/kitty/commit/76a6bba64310024c2780ff26e5bbcd...
-
+#
# Build error if compile with --debug
# *
https://github.com/kovidgoyal/kitty/issues/2468
-Patch1:
https://github.com/kovidgoyal/kitty/commit/0547102bdd6ce3b71cf53f2cb75b2f...
+#
+# Some tests not passed on aarch64 and ppc64le arches
+# *
https://github.com/kovidgoyal/kitty/issues/2469
+Patch0:
https://github.com/kovidgoyal/kitty/compare/v0.17.0...master.patch#/kitty...
BuildRequires: desktop-file-utils
BuildRequires: gcc
@@ -160,13 +160,7 @@ rm %{buildroot}%{_datadir}/doc/%{name}/html/.buildinfo \
%check
-
-# Some tests not passed on aarch64 and ppc64le arches
-# *
https://github.com/kovidgoyal/kitty/issues/2469
-%ifarch armv7hl i686 86_64
%{__python3} setup.py test --prefix=%{buildroot}%{_prefix}
-%endif
-
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
@@ -194,6 +188,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.0-1
- Update to 0.17.0
+- Exclude arch ppc64le
* Mon Mar 09 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.16.0-3
- Fix AppData description - #1811657
commit 81e78947f3d251e8c9aa4b5f27adcfc0e49cc143
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 15:38:59 2020 +0200
Skip tests for armv7hl, i686, 86_64
diff --git a/kitty.spec b/kitty.spec
index 7d0eb6c..0b6373e 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -160,7 +160,13 @@ rm %{buildroot}%{_datadir}/doc/%{name}/html/.buildinfo \
%check
+
+# Some tests not passed on aarch64 and ppc64le arches
+# *
https://github.com/kovidgoyal/kitty/issues/2469
+%ifarch armv7hl i686 86_64
%{__python3} setup.py test --prefix=%{buildroot}%{_prefix}
+%endif
+
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop