Files

122 lines
4.4 KiB
Tcl

# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
name fricas
version 1.3.13
revision 1
categories math
maintainers {@pietvo vanoostrum.org:pieter} openmaintainer
license BSD
description The Fricas computer algebra system
long_description \
FriCAS is a computer algebra system. FriCAS is a fork of Axiom. \
The basic goal of FriCAS is to create a free advanced \
world-class CAS. FriCAS builds on the Axiom codebase. The FriCAS \
algebra library is one of the largest and most advanced free \
general purpose computer algebra systems -- this gives a good \
foundation to build on. Additionally, the FriCAS algebra library \
is written in a high level strongly typed language (Spad), which \
allows natural expression of mathematical algorithms. This makes \
FriCAS easier to understand and extend.
homepage http://fricas.sourceforge.net/
master_sites sourceforge:${name}/${version}
distname ${name}-${version}-full
use_bzip2 yes
worksrcdir ${name}-${version}
checksums rmd160 50a24bb983242e49fa44a58e2f3b520ad9a2b1d7 \
sha256 dd4d5e06db0ba4a43a5bfb64e94f6c8d4b10e68ac65a77556891a6b24af148a2 \
size 10997314
configure.dir ${workpath}/fricas-build
configure.cmd ${worksrcpath}/configure
pre-configure {file mkdir ${configure.dir}}
build.dir ${configure.dir}
build.args MAYBE_VIEWPORTS=viewports
test.run yes
test.target check
variant x11 description {Enable X11 support.\
Without X11, Fricas does not support graphics and hyperdoc} {
configure.args-append --with-x -x-includes=${prefix}/include \
-x-libraries=${prefix}/lib
depends_lib-append port:xorg-libX11 \
port:xpm \
port:xorg-libice \
port:xorg-libsm
}
universal_variant no
set sbcl_script {sbcl --control-stack-size 512 --dynamic-space-size 6000}
if {${build_arch} in [list ppc i386]} {
# 32bit system can't address large dynamic space, 1Gb is safe upper limit
set sbcl_script {sbcl --control-stack-size 512 --dynamic-space-size 1024}
}
set orig_sbcl_script $sbcl_script
# emulate behavior from la.lisp from hasbcl-XXX.tar
variant hunchentoot description {Include Hunchentoot into fricas} {
depends_build-append port:cl-hunchentoot
set sbcl_script ${workpath}/hsbcl
pre-configure {
set loadcmd ${orig_sbcl_script}
append loadcmd " --non-interactive"
append loadcmd " --eval '(require \"asdf\")'"
append loadcmd " --eval '(require \"hunchentoot\")'"
append loadcmd " --eval '(sb-ext::save-lisp-and-die \"${sbcl_script}\" :executable t) '"
set tempdir [mkdtemp "/tmp/fricas.XXXXXXXX"]
if { ! [catch {system -W ${tempdir} "${loadcmd} 2>&1"}] } {
file delete -force ${tempdir}
} else {
file delete -force ${tempdir}
return -code error "${loadcmd} cannot be executed"
}
}
}
variant sbcl conflicts ccl ecl \
description {Use SBCL as lisp implementation} {
depends_lib-append path:bin/sbcl:sbcl
configure.args-append --with-lisp='${sbcl_script}'
}
if { ${configure.build_arch} eq "x86_64" } {
set ccl_script ccl64
} elseif { ${configure.build_arch} eq "i386" } {
set ccl_script ccl
}
variant ccl conflicts gmp sbcl ecl \
description {Use CCL (Clozure) instead of SBCL as lisp implementation} {
depends_lib-append port:ccl
configure.args-append --with-lisp=${ccl_script}
}
variant ecl conflicts gmp sbcl ccl \
description {Use ECL instead of SBCL as lisp implementation} {
depends_lib-append path:bin/ecl:ecl
configure.args-append --with-lisp=ecl
}
# Fricas doesn't compile under GCL
# Fricas compiles under CLISP but doesn't run correctly
# So we leave these variants out until we get them working
variant gmp conflicts ccl ecl \
description {Use libgmp for faster calculations} {
configure.args-append --with-gmp=${prefix}
depends_lib-append port:gmp
}
default_variants +x11
if { ![variant_isset ccl] && ![variant_isset ecl] } {
default_variants +sbcl
}