public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
From: "Jose E. Marchesi" <jemarch@gnu.org>
To: Tom Tromey <tom@tromey.com>
Cc: cgen@sourceware.org
Subject: Re: [PATCH] Enable the Guile compiler
Date: Tue, 22 Aug 2023 21:04:26 +0200	[thread overview]
Message-ID: <875y56gapx.fsf@gnu.org> (raw)
In-Reply-To: <20230822185153.1291550-1-tom@tromey.com> (Tom Tromey's message of "Tue, 22 Aug 2023 12:51:53 -0600")


Hi Tom.

> This patch changes cgen so that the Guile compiler can be used.
> Mainly this is done by using eval-when to ensure that files are loaded
> during the compilation process.  However, "-s" handling and
> srcdir-setting are also cleaned up, using Guile's (current-filename)
> feature.
>
> The main benefit of using the compiler is that it is much faster, once
> the scripts have been compiled.  Also it simplifies the use of cgen,
> as users don't need to remember to set an environment variable before
> invoking it.

Does this work with the current way binutils Makefiles use to invoke
cgen, or it needs an accompanying binutils patch?

> ---
>  cgen-doc.scm        | 47 +++++-------------------------
>  cgen-gas.scm        | 56 +++++++++--------------------------
>  cgen-intrinsics.scm | 47 +++++-------------------------
>  cgen-opc.scm        | 55 ++++++++---------------------------
>  cgen-sid.scm        | 51 +++++++-------------------------
>  cgen-sim.scm        | 53 +++++++--------------------------
>  cgen-stest.scm      | 57 ++++++++++--------------------------
>  cgen-testsuite.scm  | 49 +++++++------------------------
>  dev-utils.scm       |  4 +--
>  dev.scm             | 10 +++----
>  guile.scm           |  2 --
>  read.scm            | 71 +++++++++++++++++++++++----------------------
>  12 files changed, 131 insertions(+), 371 deletions(-)
>
> diff --git a/cgen-doc.scm b/cgen-doc.scm
> index 83af463..5aa751b 100644
> --- a/cgen-doc.scm
> +++ b/cgen-doc.scm
> @@ -2,18 +2,16 @@
>  ; This is invoked to build: $arch.html.
>  ; Copyright (C) 2003, 2009 Doug Evans
>  ; This file is part of CGEN.
> -;
> -; This is a standalone script, we don't load anything until we parse the
> -; -s argument (keeps reliance off of environment variables, etc.).
>  
> -; Load the various support routines.
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
>  
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/desc.scm"))
> -  (load (string-append srcdir "/desc-cpu.scm"))
> -  (load (string-append srcdir "/html.scm"))
> -)
> +	   (load-from-path "read")
> +	   (load-from-path "desc")
> +	   (load-from-path "desc-cpu")
> +	   (load-from-path "html"))
>  
>  (define doc-arguments
>    (list
> @@ -29,40 +27,11 @@
>     )
>  )
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-doc argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-gas.scm b/cgen-gas.scm
> index 3d33e92..1e12819 100644
> --- a/cgen-gas.scm
> +++ b/cgen-gas.scm
> @@ -5,19 +5,20 @@
>  ; This is invoked to build several .s files and a "build script",
>  ; which generates the .d files and .exp DejaGNU test case.
>  
> -; Load the various support routines.
> -
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/desc.scm"))
> -  (load (string-append srcdir "/desc-cpu.scm"))
> -  (load (string-append srcdir "/opcodes.scm"))
> -  (load (string-append srcdir "/opc-asmdis.scm"))
> -  (load (string-append srcdir "/opc-ibld.scm"))
> -  (load (string-append srcdir "/opc-itab.scm"))
> -  (load (string-append srcdir "/opc-opinst.scm"))
> -  (load (string-append srcdir "/gas-test.scm"))
> -)
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
> +
> +	   (load-from-path "read")
> +	   (load-from-path "desc")
> +	   (load-from-path "desc-cpu")
> +	   (load-from-path "opcodes")
> +	   (load-from-path "opc-asmdis")
> +	   (load-from-path "opc-ibld")
> +	   (load-from-path "opc-itab")
> +	   (load-from-path "opc-opinst")
> +	   (load-from-path "gas-test"))
>  
>  (define gas-arguments
>    (list
> @@ -30,40 +31,11 @@
>     )
>  )
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-gas argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-intrinsics.scm b/cgen-intrinsics.scm
> index 16e0338..1e5f882 100644
> --- a/cgen-intrinsics.scm
> +++ b/cgen-intrinsics.scm
> @@ -6,19 +6,15 @@
>  ;
>  ; Copyright (C) 2000, 2009 Red Hat, Inc.
>  ; This file is part of CGEN.
> -;
> -; This is a standalone script, we don't load anything until we parse the
> -; -s argument (keeps reliance off of environment variables, etc.).
> -
> -; Load the various support routines.
>  
> -(define (load-files srcdir)
> -  ; Fix up Scheme to be what we use (guile is always in flux).
> -  (primitive-load-path (string-append srcdir "/guile.scm"))
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
>  
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/intrinsics.scm"))
> -)
> +	   (load-from-path "guile")
> +	   (load-from-path "read")
> +	   (load-from-path "intrinsics"))
>  
>  (define intrinsics-isas '())
>  
> @@ -38,40 +34,11 @@
>     (list "-T" "file" "generate intrinsic-testsuite.c in <file>" #f
>  	 (lambda (arg) (file-write arg intrinsic-testsuite.c)))))
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-intrinsics argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-opc.scm b/cgen-opc.scm
> index 276fdb8..cac5115 100644
> --- a/cgen-opc.scm
> +++ b/cgen-opc.scm
> @@ -3,22 +3,20 @@
>  ; $arch-opc.h, $arch-opc.c, $arch-asm.in, $arch-dis.in, and $arch-ibld.[ch].
>  ; Copyright (C) 2000, 2009 Red Hat, Inc.
>  ; This file is part of CGEN.
> -;
> -; This is a standalone script, we don't load anything until we parse the
> -; -s argument (keeps reliance off of environment variables, etc.).
>  
> -; Load the various support routines.
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
>  
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/desc.scm"))
> -  (load (string-append srcdir "/desc-cpu.scm"))
> -  (load (string-append srcdir "/opcodes.scm"))
> -  (load (string-append srcdir "/opc-asmdis.scm"))
> -  (load (string-append srcdir "/opc-ibld.scm"))
> -  (load (string-append srcdir "/opc-itab.scm"))
> -  (load (string-append srcdir "/opc-opinst.scm"))
> -)
> +	   (load-from-path "read")
> +	   (load-from-path "desc")
> +	   (load-from-path "desc-cpu")
> +	   (load-from-path "opcodes")
> +	   (load-from-path "opc-asmdis")
> +	   (load-from-path "opc-ibld")
> +	   (load-from-path "opc-itab")
> +	   (load-from-path "opc-opinst"))
>  
>  (define opc-arguments
>    (list
> @@ -60,40 +58,11 @@
>  ; ((-R) (file-write *arg* cgen-reloc.c))
>  ; ((-S) (file-write *arg* cgen-bfdcpu.c))
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-opc argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-sid.scm b/cgen-sid.scm
> index bb74a7b..ab9e505 100644
> --- a/cgen-sid.scm
> +++ b/cgen-sid.scm
> @@ -3,20 +3,18 @@
>  ; semantics.cxx, sem-switch.cxx, model.h, model.cxx
>  ; Copyright (C) 2000, 2003, 2009 Red Hat, Inc.
>  ; This file is part of CGEN.
> -;
> -; This is a standalone script, we don't load anything until we parse the
> -; -s argument (keeps reliance off of environment variables, etc.).
>  
> -; Load the various support routines.
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
>  
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/utils-sim.scm"))
> -  (load (string-append srcdir "/sid.scm"))
> -  (load (string-append srcdir "/sid-cpu.scm"))
> -  (load (string-append srcdir "/sid-model.scm"))
> -  (load (string-append srcdir "/sid-decode.scm"))
> -)
> +	   (load-from-path "read")
> +	   (load-from-path "utils-sim")
> +	   (load-from-path "sid")
> +	   (load-from-path "sid-cpu")
> +	   (load-from-path "sid-model")
> +	   (load-from-path "sid-decode"))
>  
>  (define sim-arguments
>    (list
> @@ -53,40 +51,11 @@
>     )
>  )
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-sim argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-sim.scm b/cgen-sim.scm
> index 2b9f962..ec7b84c 100644
> --- a/cgen-sim.scm
> +++ b/cgen-sim.scm
> @@ -6,21 +6,19 @@
>  ;
>  ; Copyright (C) 2000, 2009 Red Hat, Inc.
>  ; This file is part of CGEN.
> -;
> -; This is a standalone script, we don't load anything until we parse the
> -; -s argument (keeps reliance off of environment variables, etc.).
>  
> -; Load the various support routines.
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
>  
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/utils-sim.scm"))
> -  (load (string-append srcdir "/sim.scm"))
> -  (load (string-append srcdir "/sim-arch.scm"))
> -  (load (string-append srcdir "/sim-cpu.scm"))
> -  (load (string-append srcdir "/sim-model.scm"))
> -  (load (string-append srcdir "/sim-decode.scm"))
> -)
> +	   (load-from-path "read")
> +	   (load-from-path "utils-sim")
> +	   (load-from-path "sim")
> +	   (load-from-path "sim-arch")
> +	   (load-from-path "sim-cpu")
> +	   (load-from-path "sim-model")
> +	   (load-from-path "sim-decode"))
>  
>  (define sim-arguments
>    (list
> @@ -81,40 +79,11 @@
>     )
>  )
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-sim argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-stest.scm b/cgen-stest.scm
> index 10f62a8..7214f82 100644
> --- a/cgen-stest.scm
> +++ b/cgen-stest.scm
> @@ -6,18 +6,22 @@
>  ; generate the .d files and .exp file.
>  ; This is invoked to build: tmp-build.sh cpu-cpu.exp
>  \f
> -; Load the various support routines
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/desc.scm"))
> -  (load (string-append srcdir "/desc-cpu.scm"))
> -  (load (string-append srcdir "/opcodes.scm"))
> -  (load (string-append srcdir "/opc-asmdis.scm"))
> -  (load (string-append srcdir "/opc-ibld.scm"))
> -  (load (string-append srcdir "/opc-itab.scm"))
> -  (load (string-append srcdir "/opc-opinst.scm"))
> -  (load (string-append srcdir "/sim-test.scm"))
> -)
> +(use-modules (ice-9 slib))
> +
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
> +
> +	   (load-from-path "read")
> +	   (load-from-path "desc")
> +	   (load-from-path "desc-cpu")
> +	   (load-from-path "opcodes")
> +	   (load-from-path "opc-asmdis")
> +	   (load-from-path "opc-ibld")
> +	   (load-from-path "opc-itab")
> +	   (load-from-path "opc-opinst")
> +	   (load-from-path "sim-test"))
>  
>  (define stest-arguments
>    (list
> @@ -30,40 +34,11 @@
>     )
>  )
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-stest argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/cgen-testsuite.scm b/cgen-testsuite.scm
> index 0c37be3..ae78cff 100644
> --- a/cgen-testsuite.scm
> +++ b/cgen-testsuite.scm
> @@ -1,18 +1,18 @@
>  ; CGEN testsuite driver.
>  ; Copyright (C) 2009 Doug Evans
>  ; This file is part of CGEN.
> -;
> -; This is a standalone script, we don't load anything until we parse the
> -; -s argument (keeps reliance off of environment variables, etc.).
>  
> -; Load the various support routines.
> +(eval-when (expand load eval)
> +	   ;; Kept global so it's available to the other .scm files.
> +	   (define srcdir (dirname (current-filename)))
> +	   (add-to-load-path srcdir)
>  
> -(define (load-files srcdir)
> -  (load (string-append srcdir "/read.scm"))
> -  (load (string-append srcdir "/desc.scm"))
> -  (load (string-append srcdir "/desc-cpu.scm"))
> -  (load (string-append srcdir "/testsuite.scm"))
> -)
> +	   (use-modules (ice-9 slib))
> +
> +	   (load-from-path "read")
> +	   (load-from-path "desc")
> +	   (load-from-path "desc-cpu")
> +	   (load-from-path "testsuite"))
>  
>  (define testsuite-arguments
>    (list
> @@ -22,40 +22,11 @@
>     )
>  )
>  
> -; Kept global so it's available to the other .scm files.
> -(define srcdir ".")
> -
> -; Scan argv for -s srcdir.
> -; We can't process any other args until we find the cgen source dir.
> -; The result is srcdir.
> -; We assume "-s" isn't the argument to another option.  Unwise, yes.
> -; Alternatives are to require it to be the first argument or at least preceed
> -; any option with a "-s" argument, or to put knowledge of the common argument
> -; set and common argument parsing code in every top level file.
> -
> -(define (find-srcdir argv)
> -  (let loop ((argv argv))
> -    (if (null? argv)
> -	(error "`-s srcdir' not present, can't load cgen"))
> -    (if (string=? "-s" (car argv))
> -	(begin
> -	  (if (null? (cdr argv))
> -	      (error "missing srcdir arg to `-s'"))
> -	  (cadr argv))
> -	(loop (cdr argv))))	
> -)
> -
>  ; Main routine, parses options and calls generators.
>  
>  (define (cgen-testsuite argv)
>    (let ()
>  
> -    ; Find and set srcdir, then load all Scheme code.
> -    ; Drop the first argument, it is the script name (i.e. argv[0]).
> -    (set! srcdir (find-srcdir (cdr argv)))
> -    (set! %load-path (cons srcdir %load-path))
> -    (load-files srcdir)
> -
>      (display-argv argv)
>  
>      (cgen #:argv argv
> diff --git a/dev-utils.scm b/dev-utils.scm
> index 89c1ee1..fe7cd7a 100644
> --- a/dev-utils.scm
> +++ b/dev-utils.scm
> @@ -6,8 +6,8 @@
>  ;; This file contains a collection of utilities for use when
>  ;; analyzing cpu files from Scheme.
>  
> -(define srcdir ".")
> -(set! %load-path (cons srcdir %load-path))
> +(define srcdir (dirname (current-filename)))
> +(add-to-load-path srcdir)
>  
>  (define (load-doc)
>    (load "read")
> diff --git a/dev.scm b/dev.scm
> index 2b31688..12be288 100644
> --- a/dev.scm
> +++ b/dev.scm
> @@ -6,11 +6,11 @@
>  ; This file is loaded in during an interactive guile session to
>  ; develop and debug CGEN.
>  
> -; First load guile.scm to coerce guile into something we've been using.
> -; Guile is always in flux.
> -(load "guile.scm")
> -
> -(load "dev-utils.scm")
> +(eval-when (expand load eval)
> +	   ;; First load guile.scm to coerce guile into something we've been using.
> +	   ;; Guile is always in flux.
> +	   (load-from-path "guile")
> +	   (load-from-path "dev-utils"))
>  
>  ; Also defined in read.scm, but we need it earlier.
>  (define APPLICATION 'UNKNOWN)
> diff --git a/guile.scm b/guile.scm
> index 5899f15..274264a 100644
> --- a/guile.scm
> +++ b/guile.scm
> @@ -6,8 +6,6 @@
>  (define (eval1 expr)
>    (eval expr (current-module)))
>  
> -(define load primitive-load-path)
> -
>  (define %stat stat)
>  
>  (debug-enable 'backtrace)
> diff --git a/read.scm b/read.scm
> index e6c2bde..392e7ba 100644
> --- a/read.scm
> +++ b/read.scm
> @@ -62,41 +62,42 @@
>  \f
>  ;; Variables representing misc. global constants.
>  
> -;; Load the base cgen files.
> -
> -(load "pmacros")
> -(load "cos")
> -(load "slib/logical")
> -(load "slib/sort")
> -;; Used to pretty-print debugging messages.
> -(load "slib/pp")
> -;; Used by pretty-print.
> -(load "slib/random")
> -(load "slib/genwrite")
> -(load "utils")
> -(load "utils-cgen")
> -(load "attr")
> -(load "enum")
> -(load "mach")
> -(load "model")
> -(load "types")
> -(load "mode")
> -(load "ifield")
> -(load "iformat")
> -(load "hardware")
> -(load "operand")
> -(load "insn")
> -(load "minsn")
> -(load "decode")
> -(load "rtl")
> -(load "rtl-traverse")
> -(load "rtl-xform")
> -(load "rtx-funcs")
> -(load "rtl-c")
> -(load "semantics")
> -(load "sem-frags")
> -(load "utils-gen")
> -(load "pgmr-tools")
> +(eval-when (expand load eval)
> +	   ;; Load the base cgen files.
> +
> +	   (load-from-path "pmacros")
> +	   (load-from-path "cos")
> +	   (load-from-path "slib/logical")
> +	   (load-from-path "slib/sort")
> +	   ;; Used to pretty-print debugging messages.
> +	   (load-from-path "slib/pp")
> +	   ;; Used by pretty-print.
> +	   (load-from-path "slib/random")
> +	   (load-from-path "slib/genwrite")
> +	   (load-from-path "utils")
> +	   (load-from-path "utils-cgen")
> +	   (load-from-path "attr")
> +	   (load-from-path "enum")
> +	   (load-from-path "mach")
> +	   (load-from-path "model")
> +	   (load-from-path "types")
> +	   (load-from-path "mode")
> +	   (load-from-path "ifield")
> +	   (load-from-path "iformat")
> +	   (load-from-path "hardware")
> +	   (load-from-path "operand")
> +	   (load-from-path "insn")
> +	   (load-from-path "minsn")
> +	   (load-from-path "decode")
> +	   (load-from-path "rtl")
> +	   (load-from-path "rtl-traverse")
> +	   (load-from-path "rtl-xform")
> +	   (load-from-path "rtx-funcs")
> +	   (load-from-path "rtl-c")
> +	   (load-from-path "semantics")
> +	   (load-from-path "sem-frags")
> +	   (load-from-path "utils-gen")
> +	   (load-from-path "pgmr-tools"))
>  \f
>  ;; A list of three numbers designating the cgen version: major minor fixlevel.
>  ;; The "50" is a generic indicator that we're between 1.1 and 1.2.

  reply	other threads:[~2023-08-22 19:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-22 18:51 Tom Tromey
2023-08-22 19:04 ` Jose E. Marchesi [this message]
2023-08-22 19:43   ` Tom Tromey
2023-08-22 19:54     ` Jose E. Marchesi
2023-08-22 20:05       ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875y56gapx.fsf@gnu.org \
    --to=jemarch@gnu.org \
    --cc=cgen@sourceware.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).