From 09ddbbf600f8922e890092ca43eb1632a0124fb9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 5 Jul 2022 19:18:36 +0530 Subject: [PATCH] Finish move of prewarm launcher into its own compilation unit --- launcher.c | 6 ++++-- prewarm-launcher.c | 4 +--- setup.py | 16 ++++++++++------ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/launcher.c b/launcher.c index 1875bec50..78df050ea 100644 --- a/launcher.c +++ b/launcher.c @@ -5,8 +5,6 @@ * Distributed under terms of the GPL3 license. */ -#include "prewarm-launcher.h" - #include #ifdef __APPLE__ #include @@ -15,6 +13,8 @@ #else #include #endif +#include +#include #include #include @@ -268,6 +268,8 @@ read_exe_path(char *exe, size_t buf_sz) { } #endif // }}} +extern void use_prewarmed_process(int argc, char *argv[]); + int main(int argc, char *argv[]) { if (argc < 1 || !argv) { fprintf(stderr, "Invalid argc/argv\n"); return 1; } use_prewarmed_process(argc, argv); diff --git a/prewarm-launcher.c b/prewarm-launcher.c index 31397465e..dc6b1d4d5 100644 --- a/prewarm-launcher.c +++ b/prewarm-launcher.c @@ -4,8 +4,6 @@ * Distributed under terms of the GPL3 license. */ -#pragma once - // for SA_RESTART #define _XOPEN_SOURCE 700 // for cfmakeraw @@ -510,7 +508,7 @@ check_socket_addr(char *addr) { return p + 1; } -static void +void use_prewarmed_process(int argc, char *argv[]) { char *env_addr = getenv("KITTY_PREWARM_SOCKET"); if (!env_addr || !*env_addr || !is_prewarmable(argc, argv)) return; diff --git a/setup.py b/setup.py index 2762adb2b..32593e0bb 100755 --- a/setup.py +++ b/setup.py @@ -864,13 +864,17 @@ def build_launcher(args: Options, launcher_dir: str = '.', bundle_type: str = 's # RUNPATH locations for transitive dependencies, unlike RPATH. ldflags += ['-Wl,--disable-new-dtags', '-Wl,-rpath,$ORIGIN/../lib'] os.makedirs(launcher_dir, exist_ok=True) + objects = [] + for src in ('launcher.c', 'prewarm-launcher.c'): + obj = os.path.join(build_dir, src.replace('.c', '.o')) + objects.append(obj) + cmd = env.cc + cppflags + cflags + ['-c', src, '-o', obj] + key = CompileKey('launcher.c', os.path.basename(obj)) + args.compilation_database.add_command(f'Compiling {emphasis(src)} ...', cmd, partial(newer, obj, src), key=key, keyfile=src) dest = os.path.join(launcher_dir, 'kitty') - src = 'launcher.c' - cmd = env.cc + cppflags + cflags + [ - src, '-o', dest] + ldflags + libs + pylib - key = CompileKey('launcher.c', 'kitty') - desc = f'Building {emphasis("launcher")} ...' - args.compilation_database.add_command(desc, cmd, partial(newer, dest, src, "prewarm-launcher.h"), key=key, keyfile=src) + desc = f'Linking {emphasis("launcher")} ...' + cmd = env.cc + ldflags + objects + libs + pylib + ['-o', dest] + args.compilation_database.add_command(desc, cmd, partial(newer, dest, *objects), key=CompileKey('', 'kitty')) args.compilation_database.build_all()