~ chicken-core (chicken-5) a0128b4afe8b385cd42ce677c763b57654eb7f0e
commit a0128b4afe8b385cd42ce677c763b57654eb7f0e
Author: felix <felix@y.(none)>
AuthorDate: Sat Mar 20 22:39:45 2010 +0100
Commit: felix <felix@y.(none)>
CommitDate: Sat Mar 20 22:39:45 2010 +0100
added register-program to setup-api
diff --git a/setup-api.scm b/setup-api.scm
index bdefd72d..95503b5a 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -61,6 +61,7 @@
remove-directory
remove-extension
read-info
+ register-program
shellpath)
(import scheme chicken foreign
@@ -71,12 +72,6 @@
(define-constant setup-file-extension "setup-info")
-(define *installed-executables*
- `(("chicken" . ,(foreign-value "C_CHICKEN_PROGRAM" c-string))
- ("csc" . ,(foreign-value "C_CSC_PROGRAM" c-string))
- ("csi" . ,(foreign-value "C_CSI_PROGRAM" c-string))
- ("chicken-bug" . ,(foreign-value "C_CHICKEN_BUG_PROGRAM" c-string))))
-
(define *cc* (foreign-value "C_TARGET_CC" c-string))
(define *cxx* (foreign-value "C_TARGET_CXX" c-string))
(define *target-cflags* (foreign-value "C_TARGET_CFLAGS" c-string))
@@ -84,6 +79,7 @@
(define *target-lib-home* (foreign-value "C_TARGET_LIB_HOME" c-string))
(define *sudo* #f)
(define *windows-shell* (foreign-value "C_WINDOWS_SHELL" bool))
+(define *registered-programs* '())
(define *windows*
(and (eq? (software-type) 'windows)
@@ -207,6 +203,31 @@
(define run-verbose (make-parameter #t))
+(define (->symbol x)
+ (cond ((symbol? x) x)
+ ((string? x) (string->symbol x))
+ (else (string->symbol (->string x)))))
+
+(define (register-program name #!optional
+ (path (make-pathname *chicken-bin-path* (->string name))))
+ (set! *registered-programs*
+ (alist-cons (->string name) path *registered-programs*)))
+
+(define (find-program name)
+ (let* ((name (->string name))
+ (a (assoc name *registered-programs*)))
+ (if a
+ (cdr a)
+ name)))
+
+(let ()
+ (define (reg name rname)
+ (register-program name (make-pathname *chicken-bin-path* rname)))
+ ;; csc is handled below
+ (reg "chicken" (foreign-value "C_CHICKEN_PROGRAM" c-string))
+ (reg "csi" (foreign-value "C_CSI_PROGRAM" c-string))
+ (reg "chicken-bug" (foreign-value "C_CHICKEN_BUG_PROGRAM" c-string)))
+
(define (fixpath prg)
(cond ((string=? prg "csc")
(string-intersperse
@@ -223,8 +244,8 @@
(if (deployment-mode) "-deployed" "")
*csc-options*)
" ") )
- ((assoc prg *installed-executables*) =>
- (lambda (a) (shellpath (make-pathname *chicken-bin-path* (cdr a)))))
+ ((assoc prg *registered-programs*) =>
+ (lambda (a) (shellpath (cdr a))))
(else prg) ) )
(define (fixmaketarget file)
Trap