Hi!

Attached is a signed off version of your patch, which appears quite
useful to me. Thanks, Alexey!


cheers,
felix
From acba11870a698872ff08a4de2c906dacaa4d8e82 Mon Sep 17 00:00:00 2001
From: felix <[email protected]>
Date: Tue, 30 Dec 2025 14:28:24 +0100
Subject: [PATCH] Allow specifying a hardcoded repository path

(Patch by Alexey Egorov)

Signed-off-by: felix <[email protected]>
---
 chicken.h |  6 ++++--
 csc.scm   | 12 +++++++++++-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/chicken.h b/chicken.h
index f6403c40..765f7763 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1591,8 +1591,10 @@ typedef void (C_ccall *C_proc)(C_word, C_word *) C_noret;
 #define C_ub_i_pointer_f32_set(p, n)    (*((float *)(p)) = (n))
 #define C_ub_i_pointer_f64_set(p, n)    (*((double *)(p)) = (n))
 
-#ifdef C_PRIVATE_REPOSITORY
-# define C_private_repository()         C_use_private_repository(C_executable_dirname())
+#ifdef C_PRIVATE_REPOSITORY_PATH
+# define C_private_repository()		C_use_private_repository(C_text(C_PRIVATE_REPOSITORY_PATH))
+#elif defined(C_PRIVATE_REPOSITORY)
+# define C_private_repository()		C_use_private_repository(C_executable_dirname())
 #else
 # define C_private_repository()
 #endif
diff --git a/csc.scm b/csc.scm
index 90f95d4f..65a84b0c 100644
--- a/csc.scm
+++ b/csc.scm
@@ -502,7 +502,9 @@ Usage: #{csc} [OPTION ...] [FILENAME ...]
     -keep-shadowed-macros          do not remove shadowed macro
     -host                          compile for host when configured for
                                     cross-compiling
-    -private-repository            load extensions from executable path
+    -private-repository            load extensions at run-timefrom path where
+                                    executable is located
+    -private-repository-path PATH  load extensions at run-time from hardcoded PATH
     -deployed                      link support file to be used from a deployed
                                     executable (sets `rpath' accordingly, if supported
                                     on this platform)
@@ -549,6 +551,10 @@ EOF
   (define (use-private-repository)
     (set! compile-options (cons "-DC_PRIVATE_REPOSITORY" compile-options)))
 
+  (define (use-private-repository-path path)
+    (set! compile-options
+      (cons (sprintf "-DC_PRIVATE_REPOSITORY_PATH=\"~A\"" path) compile-options)))
+
   (define (generate-target-filename source-filename)
     (pathname-replace-extension
      source-filename
@@ -678,6 +684,10 @@ EOF
 		(set! rest (cdr rest)) ]
 	       ((-private-repository)
 		(use-private-repository))
+           ((-private-repository-path)
+            (check s rest)
+            (use-private-repository-path (car rest))
+            (set! rest (cdr rest)))
 	       ((-ignore-repository)
 		(set! ignore-repository #t)
 		(t-options arg))
-- 
2.50.1

Reply via email to