From 4a152008149967db6fa3bb2028719aac1da69fed Mon Sep 17 00:00:00 2001 From: Artem Polishchuk Date: Mar 24 2020 14:25:53 +0000 Subject: 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 -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 -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 - #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 -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 -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 - #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 +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 +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 `. + 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 +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:: + ]52;c;!\ + + 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 +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 `. + ++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 +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 `. + + - 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 +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 `. + 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 +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 + #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 +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 +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 + #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 +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 +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 +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 `. + - 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 +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/76a6bba64310024c2780ff26e5bbcd3f8b520b38.patch#/kitty-gcc10.patch - +# # Build error if compile with --debug # * https://github.com/kovidgoyal/kitty/issues/2468 -Patch1: https://github.com/kovidgoyal/kitty/commit/0547102bdd6ce3b71cf53f2cb75b2f85692789f5.patch#/compile-with-debug-fix.patch +# +# 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-make-kitty-build-again.patch 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 - 0.17.0-1 - Update to 0.17.0 +- Exclude arch ppc64le * Mon Mar 09 2020 Artem Polishchuk - 0.16.0-3 - Fix AppData description - #1811657