diff --git a/doc/ref/guile-invoke.texi b/doc/ref/guile-invoke.texi index 397bc47e4..866bf1de1 100644 --- a/doc/ref/guile-invoke.texi +++ b/doc/ref/guile-invoke.texi @@ -71,6 +71,9 @@ before any directories in the @env{GUILE_LOAD_PATH} environment variable. Paths added here are @emph{not} in effect during execution of the user's @file{.guile} file. +@item -C @var{directory} +Like @option{-L}, but adjusts the load path for @emph{compiled} files. + @item -x @var{extension} Add @var{extension} to the front of Guile's load extension list (@pxref{Load Paths, @code{%load-extensions}}). The specified extensions diff --git a/module/ice-9/command-line.scm b/module/ice-9/command-line.scm index 2aa50ec80..0211b851c 100644 --- a/module/ice-9/command-line.scm +++ b/module/ice-9/command-line.scm @@ -117,6 +117,7 @@ remaining arguments as the value of (command-line). If FILE begins with `-' the -s switch is mandatory. -L DIRECTORY add DIRECTORY to the front of the module load path + -C DIRECTORY like -L, but for compiled files -x EXTENSION add EXTENSION to the front of the load extensions -l FILE load source code from FILE -e FUNCTION after reading script, apply FUNCTION to @@ -194,6 +195,7 @@ If FILE begins with `-' the -s switch is mandatory. (script-cell #f) (entry-point #f) (user-load-path '()) + (user-load-compiled-path '()) (user-extensions '()) (interactive? #t) (inhibit-user-init? #f) @@ -264,6 +266,14 @@ If FILE begins with `-' the -s switch is mandatory. (parse (cdr args) out)) + ((string=? arg "-C") ; add to %load-compiled-path + (if (null? args) + (error "missing argument to `-C' switch")) + (set! user-load-compiled-path + (cons (car args) user-load-compiled-path)) + (parse (cdr args) + out)) + ((string=? arg "-x") ; add to %load-extensions (if (null? args) (error "missing argument to `-x' switch")) @@ -430,11 +440,15 @@ If FILE begins with `-' the -s switch is mandatory. `(set! %load-extensions (cons ,ext %load-extensions))) user-extensions) - ;; Add the user-specified load path here, so it won't be in + ;; Add the user-specified load paths here, so they won't be in ;; effect during the loading of the user's customization file. ,@(map (lambda (path) `(set! %load-path (cons ,path %load-path))) user-load-path) + ,@(map (lambda (path) + `(set! %load-compiled-path + (cons ,path %load-compiled-path))) + user-load-compiled-path) ;; Put accumulated actions in their correct order. ,@(reverse! out)