Andreas Sturmlechner <ast...@gentoo.org> writes:

> Every once in a while, a package requires a really up to date active compiler
> in order to build successfully. ecm.eclass had inherited such a mechanism,
> albeit GCC specific, from older kde* eclasses. I don't think that is a good
> place for it so I suggest to add a more universal function to
> toolchain-funcs.eclass.
>
> Similar to tc-check-openmp.

LGTM, but please CC eclass maints in future.

>
>
>  eclass/toolchain-funcs.eclass | 44 +++++++++++++++++++++++++++++++++++
>  1 file changed, 44 insertions(+)
>
> diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass
> index 2911ed66e63c..cd3dcf000db7 100644
> --- a/eclass/toolchain-funcs.eclass
> +++ b/eclass/toolchain-funcs.eclass
> @@ -647,6 +647,50 @@ _tc-has-openmp() {
>       return ${ret}
>  }
>  
> +# @FUNCTION: tc-check-min_ver
> +# @USAGE: <gcc or clang> <minimum version>
> +# @DESCRIPTION:
> +# Minimum version of active GCC or Clang to require.
> +#
> +# You should test for any necessary minimum version in pkg_pretend in order 
> to
> +# warn the user of required toolchain changes.  You must still check for it 
> at
> +# build-time, e.g.
> +# @CODE
> +# pkg_pretend() {
> +#    [[ ${MERGE_TYPE} != binary ]] && tc-check-min_ver gcc 13.2.0
> +# }
> +#
> +# pkg_setup() {
> +#    [[ ${MERGE_TYPE} != binary ]] && tc-check-min_ver gcc 13.2.0
> +# }
> +# @CODE
> +tc-check-min_ver() {
> +     do_check() {
> +             debug-print "Compiler version check for ${1}"
> +             debug-print "Detected: ${2}"
> +             debug-print "Required: ${3}"
> +             if ver_test ${2} -lt ${3}; then
> +                     eerror "Your current compiler is too old for this 
> package!"
> +                     die "Active compiler is too old for this package (found 
> ${2})."
> +             fi
> +     }
> +
> +     case ${1} in
> +             gcc)
> +                     tc-is-gcc || return
> +                     do_check GCC $(gcc-version) ${2}
> +                     ;;
> +             clang)
> +                     tc-is-clang || return
> +                     do_check Clang $(clang-version) ${2}
> +                     ;;
> +             *)
> +                     eerror "Unknown first parameter for ${FUNCNAME} - must 
> be gcc or clang"
> +                     die "${FUNCNAME}: Parameter ${1} unknown"
> +                     ;;
> +     esac
> +}
> +
>  # @FUNCTION: tc-check-openmp
>  # @DESCRIPTION:
>  # Test for OpenMP support with the current compiler and error out with

Reply via email to