Subject: Fork of maxima for make it more embeddable.
From: Robert Dodier
Date: Sun, 8 Jan 2012 12:17:43 -0700
On 1/7/12, Raymond Toy <toy.raymond at gmail.com> wrote:
> I haven't tried it, but I think using asdf instead of defsystem to build
> maxima shouldn't be very hard. Switching the existing defsystems to
> asdf shouldn't be too hard either since the basic syntax is pretty much
> compatible.
Well, there exists a maxima.asd and it successfully compiles &
loads Maxima. I'll append a quick n dirty patch to get make to build
Maxima via asdf instead of defsystem. (Defsystem is also used to
generate dependencies and translate Fortran to Lisp, and maybe
other stuff, so there is some additional work to do.)
> The main issue is if asdf will work with gcl. We still build maxima
> with gcl, right? That would be a show stopper.
Well, if we can find another Lisp for Windows, we wouldn't need GCL ....
> Oh, there is one hairy issue. If you notice, make will compile maxima
> and then reload it all again into a fresh image before saving the
> image. I think James had to do this long ago because of some issues
> with compile and load order. We haven't been very good about having
> things defined before they are used. And there used to be issues with
> different files defining the same function with slightly different
> behaviors. Don't know if those exist or not anymore.
Yeah -- I guess that stuff should be cleaned up. That's independent
of asdf vs defsystem, right?
best
Robert Dodier
PS.
I built Maxima (./configure --enable cmucl && make) after making this change.
diff --git a/src/Makefile.am b/src/Makefile.am
index f94cf13..5b1d6ba 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,11 +6,10 @@ else
bin_SCRIPTS = maxima rmaxima
endif
-LOADDEFSYSTEM = (load "$(top_srcdir)/lisp-utils/defsystem.lisp")
+LOADDEFSYSTEM = (require :asdf)
LOADMAKEDEPENDS = (load "$(top_srcdir)/lisp-utils/make-depends.lisp")
-DEFSYSTEMCOMPILE = (funcall (intern (symbol-name :operate-on-system)
:mk) "maxima" :compile :verbose t)
-DEFSYSTEMLOAD = (funcall (intern (symbol-name :operate-on-system)
:mk) "maxima" :load :verbose t)
-DEFSYSTEMTESTLOAD = (funcall (intern (symbol-name :operate-on-system)
:mk) "maxima" :load :verbose t :test t)
+DEFSYSTEMCOMPILE = (funcall (intern (symbol-name :operate) :asdf)
(intern (symbol-name :compile-op) :asdf) :maxima)
+DEFSYSTEMLOAD = (funcall (intern (symbol-name :operate) :asdf)
(intern (symbol-name :load-op) :asdf) :maxima)
if CLISP
EXECUTECLISP = $(CLISP_NAME) -norc -q -x