toolchain.eclass: fix ada build with lto
[gentoo.git] / eclass / common-lisp-3.eclass
index f0f0b0dac83eb151b1428cb590691d74423d4506..65ad5a58a343a4d17cf201467f951fbdefc0571e 100644 (file)
 
 inherit eutils
 
-# CL packages in the overlay don't have their tarballs on the mirrors
-# so it's useless to mirror them
-RESTRICT="mirror"
+# @ECLASS-VARIABLE: CLIMPLEMENTATIONS
+# @DESCRIPTION:
+# Common Lisp implementations
+CLIMPLEMENTATIONS="sbcl clisp clozurecl cmucl ecls gcl abcl"
 
 # @ECLASS-VARIABLE: CLSOURCEROOT
 # @DESCRIPTION:
@@ -74,6 +75,7 @@ common-lisp-install-one-source() {
 }
 
 # @FUNCTION: lisp-file-p
+# @USAGE: <file>
 # @DESCRIPTION:
 # Returns true if ${1} is lisp source file.
 lisp-file-p() {
@@ -83,6 +85,7 @@ lisp-file-p() {
 }
 
 # @FUNCTION: common-lisp-get-fpredicate
+# @USAGE: <type>
 # @DESCRIPTION:
 # Outputs the corresponding predicate to check files of type ${1}.
 common-lisp-get-fpredicate() {
@@ -97,7 +100,7 @@ common-lisp-get-fpredicate() {
 }
 
 # @FUNCTION: common-lisp-install-sources
-# @USAGE: common-lisp-install-sources path [<other_paths>...]
+# @USAGE: <path> [...]
 # @DESCRIPTION:
 # Recursively install lisp sources of type ${2} if ${1} is -t or
 # Lisp by default. When given a directory, it will be recursively
@@ -125,6 +128,7 @@ common-lisp-install-sources() {
 }
 
 # @FUNCTION: common-lisp-install-one-asdf
+# @USAGE: <file>
 # @DESCRIPTION:
 # Installs ${1} asdf file in CLSOURCEROOT/CLPACKAGE and symlinks it in
 # CLSYSTEMROOT.
@@ -139,7 +143,7 @@ common-lisp-install-one-asdf() {
 }
 
 # @FUNCTION: common-lisp-install-asdf
-# @USAGE: common-lisp-install-asdf path [<other_paths>...]
+# @USAGE: <path> [...]
 # @DESCRIPTION:
 # Installs all ASDF files and creates symlinks in CLSYSTEMROOT.
 # When given a directory, it will be recursively scanned for ASDF
@@ -165,11 +169,22 @@ common-lisp-3_src_install() {
        done
 }
 
+# @FUNCTION: common-lisp-find-lisp-impl
+# @DESCRIPTION:
+# Outputs an installed Common Lisp implementation. Transverses
+# CLIMPLEMENTATIONS to find it.
+common-lisp-find-lisp-impl() {
+       for lisp in ${CLIMPLEMENTATIONS} ; do
+               [[ "$(best_version dev-lisp/${lisp})" ]] && echo "${lisp}" && return
+       done
+       die "No CommonLisp implementation found"
+}
+
 # @FUNCTION: common-lisp-export-impl-args
-# @USAGE: common-lisp-export-impl-args <lisp-implementation>
+# @USAGE: <lisp-implementation>
 # @DESCRIPTION:
-#   Export a few variables containing the switches necessary
-#   to make the CL implementation perform basic functions:
+# Export a few variables containing the switches necessary
+# to make the CL implementation perform basic functions:
 #   * CL_BINARY: Common Lisp implementation
 #   * CL_NORC: don't load syste-wide or user-specific initfiles
 #   * CL_LOAD: load a certain file
@@ -181,6 +196,11 @@ common-lisp-export-impl-args() {
        fi
        CL_BINARY="${1}"
        case "${CL_BINARY}" in
+               sbcl)
+                       CL_NORC="--sysinit /dev/null --userinit /dev/null"
+                       CL_LOAD="--load"
+                       CL_EVAL="--eval"
+                       ;;
                clisp)
                        CL_NORC="-norc"
                        CL_LOAD="-i"
@@ -203,8 +223,8 @@ common-lisp-export-impl-args() {
                        CL_LOAD="-load"
                        CL_EVAL="-eval"
                        ;;
-               sbcl)
-                       CL_NORC="--sysinit /dev/null --userinit /dev/null"
+               abcl)
+                       CL_NORC="--noinit"
                        CL_LOAD="--load"
                        CL_EVAL="--eval"
                        ;;