Maxima 5.31.0 release



Aleksej Saushev <asau at inbox.ru> writes:
> It doesn't change anything in this respect, the only difference is that
> object directories are created for all cases. The problem is solved
> much easier if you don't try to make Make go beyond what it is designed for.
> (This applies to autotools too.)
>
> Basically, what you're trying to do is to build multiple configurations.
> Canonical approach is not to do that. With autoconf you're supposed to use
> separate build directories:
>
> for l in sbcl gcl; do (mkdir obj.$l; cd $l; ../configure --with-$l); done

Maybe, but I guess that's not how we're doing things (which dates to
long before me!). Since it's possible to do everything in subdirectories
of src/, I see no reason to change that.

> If you really want to do that in autoconf correctly, you have to create
> additional layer that does something like this:
>
> --- configure.in.orig	2013-09-03 07:11:06.000000000 +0400
> +++ configure.in	2013-09-08 01:35:48.000000000 +0400
> @@ -33,6 +33,7 @@
>  AM_CONDITIONAL(WIN32, test x$win32 = xtrue)
>  
>  explicit_lisp=false
> +lisps_enabled=""
>  
>  dnl n.b. clisp_default_name is hardcoded in "with" message
>  clisp_default_name=clisp
> @@ -40,6 +41,7 @@
>  	[  --enable-clisp               Use clisp],
>       	[case "${enableval}" in
>         		yes) clisp=true 
> +		     lisps_enabled="${lisps_enabled} clisp"
>                       explicit_lisp=true ;;
>         		no)  clisp=false ;;

<snip: same for other lisps>

Hmm, you can also use += in Makefile.am, which seems slightly easier to
understand (to me, at least). For example, the EXTRA_SCRIPTS and various
install targets variables in src/Makefile.am. My motivation was that
Autoconf is pretty horrible to read, so making configure.in as simple as
possible made sense...

> --- src/Makefile.am.orig	2013-08-30 07:45:02.000000000 +0400
> +++ src/Makefile.am	2013-09-08 01:15:33.000000000 +0400
> @@ -72,8 +72,10 @@
>  ## A rule to build binary directories of the form binary-<lispname>
>  ## and subdirectories ./numerical and ./numerical/slatec
>  binary_subdirs = / /numerical /numerical/slatec
> -bd_%:
> -	$(MKDIR_P) $(addprefix $(subst bd_,binary-,$@),$(binary_subdirs))
> +lisps_enabled = @lisps_enabled@
> +.PHONY: bd
> +bd:
> +	for l in $(lisps_enabled); do for d in $(binary_subdirs); do $(MKDIR_P) binary-$$l$$d; done; done
>  
>  ## Some hunks of lisp that get used by more than one implementation
>  LOADDEFSYSTEM = (load "$(top_srcdir)/lisp-utils/defsystem.lisp")
> @@ -122,7 +124,7 @@
>  clisp: $(CLISP_MAXIMA)
>  
>  $(CLISP_MAXIMA):
> -	$(MAKE) bd_clisp
> +	$(MAKE) bd

<snip: same for other lisps>

Yep, that makes sense. Robert: would you prefer we did it like this? I
(wrongly?) thought that the build failed spectacularly elsewhere if Make
!= GNU Make. If not, I can make the changes easily enough. (Or, of
course, anyone else can!)



Rupert
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 315 bytes
Desc: not available
URL: <http://www.math.utexas.edu/pipermail/maxima/attachments/20130908/e75e239f/attachment.pgp>;