This repository has been archived by the owner on Apr 12, 2021. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Install the `kitty` command-line utility and the `kitty.app` macOS application. * Prefer libicns (png2icns) over Apple's non-free iconutil. * Work around warnings from Apple headers by disabling -pedantic-errors and -Werror. * Work around ld not support LLVM-LTO by disabling LTO. * Make Kitty and glfw compile for macOS 10.11 (and macOS 10.10).
- Loading branch information
Showing
6 changed files
with
223 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
commit 749772b8b8179eb3b71e542fd9ed5621feb578f5 | ||
Author: Matthew Glazar <strager.nds@gmail.com> | ||
Date: Thu Feb 28 22:01:32 2019 -0800 | ||
|
||
Support macOS 10.11 | ||
|
||
Allow Kitty to run on macOS 10.11 El Capitan. | ||
|
||
diff --git a/glfw/cocoa_init.m b/glfw/cocoa_init.m | ||
index 1e719d2e..05a680e4 100644 | ||
--- a/glfw/cocoa_init.m | ||
+++ b/glfw/cocoa_init.m | ||
@@ -30,6 +30,10 @@ | ||
#define NSEventMaskKeyUp NSKeyUpMask | ||
#define NSEventMaskKeyDown NSKeyDownMask | ||
#define NSEventModifierFlagCommand NSCommandKeyMask | ||
+ #define NSEventModifierFlagControl NSControlKeyMask | ||
+ #define NSEventModifierFlagDeviceIndependentFlagsMask NSDeviceIndependentModifierFlagsMask | ||
+ #define NSEventModifierFlagShift NSShiftKeyMask | ||
+ #define NSEventTypeApplicationDefined NSApplicationDefined | ||
#endif | ||
|
||
// Change to our application bundle's resources directory, if present | ||
diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m | ||
index 1ce79b56..fd2255fc 100644 | ||
--- a/glfw/cocoa_window.m | ||
+++ b/glfw/cocoa_window.m | ||
@@ -41,6 +41,7 @@ | ||
#define NSWindowStyleMaskTitled NSTitledWindowMask | ||
#define NSEventModifierFlagCommand NSCommandKeyMask | ||
#define NSEventModifierFlagControl NSControlKeyMask | ||
+ #define NSEventModifierFlagNumericPad NSNumericPadKeyMask | ||
#define NSEventModifierFlagOption NSAlternateKeyMask | ||
#define NSEventModifierFlagShift NSShiftKeyMask | ||
#define NSEventModifierFlagCapsLock NSAlphaShiftKeyMask | ||
diff --git a/kitty/cocoa_window.m b/kitty/cocoa_window.m | ||
index 5e9252ba..99eb3352 100644 | ||
--- a/kitty/cocoa_window.m | ||
+++ b/kitty/cocoa_window.m | ||
@@ -15,6 +15,9 @@ | ||
#include <objc/runtime.h> | ||
|
||
#if (MAC_OS_X_VERSION_MAX_ALLOWED < 101200) | ||
+typedef NSUInteger NSWindowStyleMask; | ||
+#define NSWindowStyleMaskBorderless NSBorderlessWindowMask | ||
+#define NSWindowStyleMaskFullScreen NSFullScreenWindowMask | ||
#define NSWindowStyleMaskResizable NSResizableWindowMask | ||
#define NSEventModifierFlagOption NSAlternateKeyMask | ||
#define NSEventModifierFlagCommand NSCommandKeyMask | ||
diff --git a/kitty/logging.c b/kitty/logging.c | ||
index 45c88174..1ec9f1b0 100644 | ||
--- a/kitty/logging.c | ||
+++ b/kitty/logging.c | ||
@@ -5,12 +5,21 @@ | ||
* Distributed under terms of the GPL3 license. | ||
*/ | ||
|
||
+#ifdef __APPLE__ | ||
+#include <AvailabilityMacros.h> | ||
+#endif | ||
+#if defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12 | ||
+#define USE_APPLE_OS_LOG 1 | ||
+#else | ||
+#define USE_APPLE_OS_LOG 0 | ||
+#endif | ||
+ | ||
#include "data-types.h" | ||
#include <stdlib.h> | ||
#include <stdarg.h> | ||
#include <time.h> | ||
#include <sys/time.h> | ||
-#ifdef __APPLE__ | ||
+#if USE_APPLE_OS_LOG | ||
#include <os/log.h> | ||
#endif | ||
|
||
@@ -21,7 +30,7 @@ void | ||
log_error(const char *fmt, ...) { | ||
va_list ar; | ||
struct timeval tv; | ||
-#ifdef __APPLE__ | ||
+#if USE_APPLE_OS_LOG | ||
// Apple does not provide a varargs style os_logv | ||
char logbuf[16 * 1024] = {0}; | ||
#else | ||
@@ -44,7 +53,7 @@ log_error(const char *fmt, ...) { | ||
if (use_os_log) { bufprint(vsnprintf, fmt, ar); } | ||
else vfprintf(stderr, fmt, ar); | ||
va_end(ar); | ||
-#ifdef __APPLE__ | ||
+#if USE_APPLE_OS_LOG | ||
if (use_os_log) os_log(OS_LOG_DEFAULT, "%{public}s", logbuf); | ||
#endif | ||
if (!use_os_log) fprintf(stderr, "\n"); | ||
@@ -66,7 +75,7 @@ static PyMethodDef module_methods[] = { | ||
bool | ||
init_logging(PyObject *module) { | ||
if (PyModule_AddFunctions(module, module_methods) != 0) return false; | ||
-#ifdef __APPLE__ | ||
+#if USE_APPLE_OS_LOG | ||
if (getenv("KITTY_LAUNCHED_BY_LAUNCH_SERVICES") != NULL) use_os_log = true; | ||
#endif | ||
return true; | ||
diff --git a/setup.py b/setup.py | ||
index f8643fce..55a96e73 100755 | ||
--- a/setup.py | ||
+++ b/setup.py | ||
@@ -711,7 +711,7 @@ Categories=System;TerminalEmulator; | ||
CFBundlePackageType='APPL', | ||
CFBundleSignature='????', | ||
CFBundleExecutable=appname, | ||
- LSMinimumSystemVersion='10.12.0', | ||
+ LSMinimumSystemVersion='10.11.0', | ||
LSRequiresNativeExecution=True, | ||
NSAppleScriptEnabled=False, | ||
# Needed for dark mode in Mojave when linking against older SDKs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
--- a/setup.py | ||
+++ b/setup.py | ||
@@ -223,9 +223,6 @@ def init_env( | ||
cppflags += shlex.split(os.environ.get('CPPFLAGS', '')) | ||
cflags += shlex.split(os.environ.get('CFLAGS', '')) | ||
ldflags += shlex.split(os.environ.get('LDFLAGS', '')) | ||
- if not debug and not sanitize: | ||
- # See https://github.com/google/sanitizers/issues/647 | ||
- cflags.append('-flto'), ldflags.append('-flto') | ||
|
||
if profile: | ||
cppflags.append('-DWITH_PROFILER') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- a/setup.py | ||
+++ b/setup.py | ||
@@ -202,7 +202,7 @@ def init_env( | ||
cflags = os.environ.get( | ||
'OVERRIDE_CFLAGS', ( | ||
'-Wextra -Wno-missing-field-initializers -Wall -std=c11' | ||
- ' -pedantic-errors -Werror {} {} -fwrapv {} {} -pipe {} -fvisibility=hidden' | ||
+ ' {} {} -fwrapv {} {} -pipe {} -fvisibility=hidden' | ||
).format( | ||
optimize, | ||
' '.join(sanitize_args), |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- a/setup.py | ||
+++ b/setup.py | ||
@@ -744,9 +744,15 @@ Categories=System;TerminalEmulator; | ||
if not os.path.exists(logo_dir): | ||
raise SystemExit('The kitty logo has not been generated, you need to run logo/make.py') | ||
subprocess.check_call([ | ||
- 'iconutil', '-c', 'icns', logo_dir, '-o', | ||
+ 'png2icns', | ||
os.path.join('Resources', os.path.basename(logo_dir).partition('.')[0] + '.icns') | ||
- ]) | ||
+ ] + [os.path.join(logo_dir, logo) for logo in ( | ||
+ 'icon_128x128.png', | ||
+ 'icon_16x16.png', | ||
+ 'icon_256x256.png', | ||
+ 'icon_32x32.png', | ||
+ 'icon_512x512.png', | ||
+ )]) | ||
# }}} | ||
# }}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters