From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1499) id A90F03852A65; Mon, 12 Dec 2022 18:04:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A90F03852A65 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1670868261; bh=3Q1IYjoQO6DfqcgPSossq0f09qEpiEY00JIllkX2qo0=; h=From:To:Subject:Date:From; b=dP73BWJudydl2Mr+z6OA4M+FvqH4BPempUEu/3by3nG2nllcKOpIT5/fe5Ou7oKyU C/3R/oWTSQ8e6I+RbutYf5TKi+g5zfNsIW0sqqlNTkBqgjRhFTn7cDYbYprF47vAMn 9XOTGuqaK8KATtz3+EYaXKpFw7srj+jugLbiE6AE= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Gaius Mulley To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/modula-2] Python3 detected in gcc/configure.ac, python3 modules install.texi. X-Act-Checkin: gcc X-Git-Author: Gaius Mulley X-Git-Refname: refs/heads/devel/modula-2 X-Git-Oldrev: 5a359399d8f7f2c6fc22d69fffd428a75999e200 X-Git-Newrev: d5d3e57d33b25a5922858013e4b922e9dbc4bf27 Message-Id: <20221212180421.A90F03852A65@sourceware.org> Date: Mon, 12 Dec 2022 18:04:21 +0000 (GMT) List-Id: https://gcc.gnu.org/g:d5d3e57d33b25a5922858013e4b922e9dbc4bf27 commit d5d3e57d33b25a5922858013e4b922e9dbc4bf27 Author: Gaius Mulley Date: Mon Dec 12 18:03:31 2022 +0000 Python3 detected in gcc/configure.ac, python3 modules install.texi. This patch fixes three problems. Firstly python3 is now detected via a re-exp match python3 --version. Secondly python3 modules are described in doc/install.texi and modula-2 documentation dependency upon python3 is mentioned. Thirdly bug fixes for --enable-generated-files-in-srcdir with the modula-2 front end are made to Make-lang.in. gcc/ChangeLog: * gcc/aclocal.m4: Rebuilt. * gcc/configure: Rebuilt. * gcc/configure.ac (HAVE_PYTHON): Use ACX_CHECK_PROG_VER and re-exp to detect Python3. * doc/install.texi (GM2): New prerequisite item added. (Python3 modules) New item added. * m2/Make-lang.in: Bugfixes for --enable-generated-files-in-srcdir. Signed-off-by: Gaius Mulley Diff: --- gcc/aclocal.m4 | 286 --------------------------------------------------- gcc/configure | 236 ++++++++---------------------------------- gcc/configure.ac | 14 ++- gcc/doc/install.texi | 49 +++++++-- gcc/m2/Make-lang.in | 27 +++-- 5 files changed, 114 insertions(+), 498 deletions(-) diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4 index 52011b35cfa..6be36df5190 100644 --- a/gcc/aclocal.m4 +++ b/gcc/aclocal.m4 @@ -12,292 +12,6 @@ # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# --------------------------------------------------------------------------- -# Adds support for distributing Python modules and packages. To -# install modules, copy them to $(pythondir), using the python_PYTHON -# automake variable. To install a package with the same name as the -# automake package, install to $(pkgpythondir), or use the -# pkgpython_PYTHON automake variable. -# -# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as -# locations to install python extension modules (shared libraries). -# Another macro is required to find the appropriate flags to compile -# extension modules. -# -# If your package is configured with a different prefix to python, -# users will have to add the install directory to the PYTHONPATH -# environment variable, or create a .pth file (see the python -# documentation for details). -# -# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will -# cause an error if the version of python installed on the system -# doesn't meet the requirement. MINIMUM-VERSION should consist of -# numbers and dots only. -AC_DEFUN([AM_PATH_PYTHON], - [ - dnl Find a Python interpreter. Python versions prior to 2.0 are not - dnl supported. (2.0 was released on October 16, 2000). - dnl FIXME: Remove the need to hard-code Python versions here. - m4_define_default([_AM_PYTHON_INTERPRETER_LIST], -[python python2 python3 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 dnl - python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) - - AC_ARG_VAR([PYTHON], [the Python interpreter]) - - m4_if([$1],[],[ - dnl No version check is needed. - # Find any Python interpreter. - if test -z "$PYTHON"; then - AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) - fi - am_display_PYTHON=python - ], [ - dnl A version check is needed. - if test -n "$PYTHON"; then - # If the user set $PYTHON, use it and don't search something else. - AC_MSG_CHECKING([whether $PYTHON version is >= $1]) - AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Python interpreter is too old])]) - am_display_PYTHON=$PYTHON - else - # Otherwise, try each interpreter until we find one that satisfies - # VERSION. - AC_CACHE_CHECK([for a Python interpreter with version >= $1], - [am_cv_pathless_PYTHON],[ - for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do - test "$am_cv_pathless_PYTHON" = none && break - AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) - done]) - # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. - if test "$am_cv_pathless_PYTHON" = none; then - PYTHON=: - else - AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) - fi - am_display_PYTHON=$am_cv_pathless_PYTHON - fi - ]) - - if test "$PYTHON" = :; then - dnl Run any user-specified action, or abort. - m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) - else - - dnl Query Python for its version number. Getting [:3] seems to be - dnl the best way to do this; it's what "site.py" does in the standard - dnl library. - - AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], - [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) - AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) - - dnl Use the values of $prefix and $exec_prefix for the corresponding - dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made - dnl distinct variables so they can be overridden if need be. However, - dnl general consensus is that you shouldn't need this ability. - - AC_SUBST([PYTHON_PREFIX], ['${prefix}']) - AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) - - dnl At times (like when building shared libraries) you may want - dnl to know which OS platform Python thinks this is. - - AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], - [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) - AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) - - # Just factor out some code duplication. - am_python_setup_sysconfig="\ -import sys -# Prefer sysconfig over distutils.sysconfig, for better compatibility -# with python 3.x. See automake bug#10227. -try: - import sysconfig -except ImportError: - can_use_sysconfig = 0 -else: - can_use_sysconfig = 1 -# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: -# -try: - from platform import python_implementation - if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': - can_use_sysconfig = 0 -except ImportError: - pass" - - dnl Set up 4 directories: - - dnl pythondir -- where to install python scripts. This is the - dnl site-packages directory, not the python standard library - dnl directory like in previous automake betas. This behavior - dnl is more consistent with lispdir.m4 for example. - dnl Query distutils for this directory. - AC_CACHE_CHECK([for $am_display_PYTHON script directory], - [am_cv_python_pythondir], - [if test "x$prefix" = xNONE - then - am_py_prefix=$ac_default_prefix - else - am_py_prefix=$prefix - fi - am_cv_python_pythondir=`$PYTHON -c " -$am_python_setup_sysconfig -if can_use_sysconfig: - sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) -else: - from distutils import sysconfig - sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') -sys.stdout.write(sitedir)"` - case $am_cv_python_pythondir in - $am_py_prefix*) - am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` - am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` - ;; - *) - case $am_py_prefix in - /usr|/System*) ;; - *) - am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages - ;; - esac - ;; - esac - ]) - AC_SUBST([pythondir], [$am_cv_python_pythondir]) - - dnl pkgpythondir -- $PACKAGE directory under pythondir. Was - dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is - dnl more consistent with the rest of automake. - - AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) - - dnl pyexecdir -- directory for installing python extension modules - dnl (shared libraries) - dnl Query distutils for this directory. - AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], - [am_cv_python_pyexecdir], - [if test "x$exec_prefix" = xNONE - then - am_py_exec_prefix=$am_py_prefix - else - am_py_exec_prefix=$exec_prefix - fi - am_cv_python_pyexecdir=`$PYTHON -c " -$am_python_setup_sysconfig -if can_use_sysconfig: - sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) -else: - from distutils import sysconfig - sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') -sys.stdout.write(sitedir)"` - case $am_cv_python_pyexecdir in - $am_py_exec_prefix*) - am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` - am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` - ;; - *) - case $am_py_exec_prefix in - /usr|/System*) ;; - *) - am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages - ;; - esac - ;; - esac - ]) - AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) - - dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) - - AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) - - dnl Run any user-specified action. - $2 - fi - -]) - - -# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) -# --------------------------------------------------------------------------- -# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. -# Run ACTION-IF-FALSE otherwise. -# This test uses sys.hexversion instead of the string equivalent (first -# word of sys.version), in order to cope with versions such as 2.2c1. -# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). -AC_DEFUN([AM_PYTHON_CHECK_VERSION], - [prog="import sys -# split strings by '.' and convert to numeric. Append some zeros -# because we need at least 4 digits for the hex conversion. -# map returns an iterator in Python 3.0 and a list in 2.x -minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] -minverhex = 0 -# xrange is not present in Python 3.0 and range returns an iterator -for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] -sys.exit(sys.hexversion < minverhex)" - AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) - -# Copyright (C) 2006-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - m4_include([../libtool.m4]) m4_include([../ltoptions.m4]) m4_include([../ltsugar.m4]) diff --git a/gcc/configure b/gcc/configure index 913310c6bd2..6760ba9a6e5 100755 --- a/gcc/configure +++ b/gcc/configure @@ -805,16 +805,7 @@ am__leading_dot doc_build_sys AR NM -HAVE_PYTHON_FALSE -HAVE_PYTHON_TRUE -pkgpyexecdir -pyexecdir -pkgpythondir -pythondir -PYTHON_PLATFORM -PYTHON_EXEC_PREFIX -PYTHON_PREFIX -PYTHON_VERSION +HAVE_PYTHON PYTHON BISON FLEX @@ -1057,7 +1048,6 @@ CXXFLAGS CCC CXXCPP CPP -PYTHON GMPLIBS GMPINC ISLLIBS @@ -1899,7 +1889,6 @@ Some influential environment variables: CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor CPP C preprocessor - PYTHON the Python interpreter GMPLIBS How to link GMP GMPINC How to find GMP include files ISLLIBS How to link isl @@ -8914,35 +8903,24 @@ test -n "$BISON" || BISON="$MISSING bison" # Python3? - - - - - - # Find any Python interpreter. - if test -z "$PYTHON"; then - for ac_prog in python python2 python3 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 + # Extract the first word of "python3", so it can be a program name with args. +set dummy python3; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PYTHON+:} false; then : +if ${ac_cv_prog_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else - case $PYTHON in - [\\/]* | ?:[\\/]*) - ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + if test -n "$PYTHON"; then + ac_cv_prog_PYTHON="$PYTHON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + ac_cv_prog_PYTHON="python3" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -8950,10 +8928,9 @@ done done IFS=$as_save_IFS - ;; -esac fi -PYTHON=$ac_cv_path_PYTHON +fi +PYTHON=$ac_cv_prog_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } @@ -8963,169 +8940,42 @@ $as_echo "no" >&6; } fi - test -n "$PYTHON" && break -done -test -n "$PYTHON" || PYTHON=":" - - fi - am_display_PYTHON=python - - - if test "$PYTHON" = :; then - : - else - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 -$as_echo_n "checking for $am_display_PYTHON version... " >&6; } -if ${am_cv_python_version+:} false; then : - $as_echo_n "(cached) " >&6 -else - am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 -$as_echo "$am_cv_python_version" >&6; } - PYTHON_VERSION=$am_cv_python_version - - - - PYTHON_PREFIX='${prefix}' - - PYTHON_EXEC_PREFIX='${exec_prefix}' - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 -$as_echo_n "checking for $am_display_PYTHON platform... " >&6; } -if ${am_cv_python_platform+:} false; then : - $as_echo_n "(cached) " >&6 -else - am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 -$as_echo "$am_cv_python_platform" >&6; } - PYTHON_PLATFORM=$am_cv_python_platform - - - # Just factor out some code duplication. - am_python_setup_sysconfig="\ -import sys -# Prefer sysconfig over distutils.sysconfig, for better compatibility -# with python 3.x. See automake bug#10227. -try: - import sysconfig -except ImportError: - can_use_sysconfig = 0 -else: - can_use_sysconfig = 1 -# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: -# -try: - from platform import python_implementation - if python_implementation() == 'CPython' and sys.version[:3] == '2.7': - can_use_sysconfig = 0 -except ImportError: - pass" - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 -$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } -if ${am_cv_python_pythondir+:} false; then : + if test -n "$PYTHON"; then + # Found it, now check the version. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for modern python3" >&5 +$as_echo_n "checking for modern python3... " >&6; } +if ${gcc_cv_prog_python3_modern+:} false; then : $as_echo_n "(cached) " >&6 else - if test "x$prefix" = xNONE - then - am_py_prefix=$ac_default_prefix - else - am_py_prefix=$prefix - fi - am_cv_python_pythondir=`$PYTHON -c " -$am_python_setup_sysconfig -if can_use_sysconfig: - sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) -else: - from distutils import sysconfig - sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') -sys.stdout.write(sitedir)"` - case $am_cv_python_pythondir in - $am_py_prefix*) - am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` - am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` - ;; - *) - case $am_py_prefix in - /usr|/System*) ;; - *) - am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages - ;; - esac - ;; - esac + ac_prog_version=`eval $PYTHON --version 2>&1 | + sed -n 's/^.*Python.* \([0-9][0-9.]*\).*$/\1/p'` -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 -$as_echo "$am_cv_python_pythondir" >&6; } - pythondir=$am_cv_python_pythondir - - - - pkgpythondir=\${pythondir}/$PACKAGE - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 -$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } -if ${am_cv_python_pyexecdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$exec_prefix" = xNONE - then - am_py_exec_prefix=$am_py_prefix - else - am_py_exec_prefix=$exec_prefix - fi - am_cv_python_pyexecdir=`$PYTHON -c " -$am_python_setup_sysconfig -if can_use_sysconfig: - sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) -else: - from distutils import sysconfig - sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') -sys.stdout.write(sitedir)"` - case $am_cv_python_pyexecdir in - $am_py_exec_prefix*) - am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` - am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` - ;; - *) - case $am_py_exec_prefix in - /usr|/System*) ;; - *) - am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages - ;; - esac - ;; - esac + case $ac_prog_version in + '') gcc_cv_prog_python3_modern=no;; + 3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*) gcc_cv_prog_python3_modern=yes;; + *) gcc_cv_prog_python3_modern=no;; + esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 -$as_echo "$am_cv_python_pyexecdir" >&6; } - pyexecdir=$am_cv_python_pyexecdir - - - - pkgpyexecdir=\${pyexecdir}/$PACKAGE - - - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_prog_python3_modern" >&5 +$as_echo "$gcc_cv_prog_python3_modern" >&6; } + else + gcc_cv_prog_python3_modern=no + fi + if test $gcc_cv_prog_python3_modern = no; then + PYTHON="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing python3" fi - - if test "$PYTHON" != :; then - HAVE_PYTHON_TRUE= - HAVE_PYTHON_FALSE='#' +if test $gcc_cv_prog_python3_modern = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: +*** Python3 is missing. +*** Info documentation for modula-2 will not be built." >&5 +$as_echo "$as_me: WARNING: +*** Python3 is missing. +*** Info documentation for modula-2 will not be built." >&2;} + HAVE_PYTHON=no else - HAVE_PYTHON_TRUE='#' - HAVE_PYTHON_FALSE= + HAVE_PYTHON=yes fi @@ -19942,7 +19792,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19945 "configure" +#line 19795 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20048,7 +19898,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 20051 "configure" +#line 19901 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -32851,10 +32701,6 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs -if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then - as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi : "${CONFIG_STATUS=./config.status}" diff --git a/gcc/configure.ac b/gcc/configure.ac index 709bf5657a1..767bc92a19d 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1264,8 +1264,18 @@ AC_CHECK_PROGS([FLEX], flex, [$MISSING flex]) AC_CHECK_PROGS([BISON], bison, [$MISSING bison]) # Python3? -AM_PATH_PYTHON(,, [:]) -AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :]) +ACX_CHECK_PROG_VER(PYTHON, python3, --version, + [Python.* \([0-9][0-9.]*\)], + [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*]) +if test $gcc_cv_prog_python3_modern = no; then + AC_MSG_WARN([ +*** Python3 is missing. +*** Documentation for modula-2 will not include the library modules.]) + HAVE_PYTHON=no +else + HAVE_PYTHON=yes +fi +AC_SUBST(HAVE_PYTHON) # Binutils are not build modules, unlike bison/flex/makeinfo. So we # check for build == host before using them. diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 89ff6a6734b..bf5234a2a9c 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -308,6 +308,13 @@ On some targets, @samp{libphobos} isn't enabled by default, but compiles and works if @option{--enable-libphobos} is used. Specifics are documented for affected targets. +@item @anchor{GM2-prerequisite}GM2 + +Python3 is required if you want to build the complete modula-2 +documentation containing all the library modules and the target +@code{SYSTEM} definition module. If Python3 is unavailable the manual +page and a subset of the texinfo documentation is generated. + @item A ``working'' POSIX compatible shell, or GNU bash Necessary when running @command{configure} because some @@ -436,6 +443,34 @@ Necessary to build GCC with zstd compression used for LTO bytecode. The library is searched in your default library patch search. Alternatively, the @option{--with-zstd} configure option should be used. +@item Python3 modules + +The complete list of Python3 modules broken down by GCC subcomponent +is shown below: + +@table @asis +@item internal debugging in gdbhooks +@code{gdb}, @code{gdb.printing}, @code{gdb.types}, +@code{os.path}, @code{re}, @code{sys} and @code{tempfile}, + +@item g++ testsuite +@code{gcov}, @code{gzip}, @code{json}, @code{os} and @code{pytest}. + +@item c++ cxx api generation +@code{csv}, @code{os}, @code{sys} and @code{time}. + +@item modula-2 documentation +@code{argparse}, @code{os}, @code{pathlib}, @code{shutil} and +@code{sys}. + +@item git +@code{os} and @code{sys}. + +@item ada documentation +@code{latex_elements}, @code{os}, @code{pygments}, @code{re}, +@code{sys} and @code{time}. +@end table + @end table @heading Tools/packages necessary for modifying GCC @@ -2854,8 +2889,8 @@ version 2.21 or later). @item @samp{bootstrap-lto-noplugin} This option is similar to @code{bootstrap-lto}, but is intended for -hosts that do not support the linker plugin. Without the linker plugin -static libraries are not compiled with link-time optimizations. Since +hosts that do not support the linker plugin. Without the linker plugin +static libraries are not compiled with link-time optimizations. Since the GCC middle end and back end are in @file{libbackend.a} this means that only the front end is actually LTO optimized. @@ -3144,10 +3179,10 @@ on a simulator as described at @uref{https://gcc.gnu.org/simtest-howto.html}. In order to run sets of tests selectively, there are targets @samp{make check-gcc} and language specific @samp{make check-c}, @samp{make check-c++}, @samp{make check-d} @samp{make check-fortran}, -@samp{make check-ada}, @samp{make check-objc}, @samp{make check-obj-c++}, -@samp{make check-lto} -in the @file{gcc} subdirectory of the object directory. You can also -just run @samp{make check} in a subdirectory of the object directory. +@samp{make check-ada}, @samp{make check-m2}, @samp{make check-objc}, +@samp{make check-obj-c++}, @samp{make check-lto} in the @file{gcc} +subdirectory of the object directory. You can also just run +@samp{make check} in a subdirectory of the object directory. A more selective way to just run all @command{gcc} execute tests in the @@ -3572,7 +3607,7 @@ GNU Compiler Collection on your machine. Note that this list of install notes is @emph{not} a list of supported hosts or targets. Not all supported hosts and targets are listed here, only the ones that require host-specific or target-specific -information have to. +information have to. @ifhtml @itemize diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in index 1c31523371a..433d1f2916b 100644 --- a/gcc/m2/Make-lang.in +++ b/gcc/m2/Make-lang.in @@ -52,6 +52,23 @@ m2 modula-2 modula2: gm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) \ $(GCC_PASSES) $(GCC_PARTS) m2.serial = cc1gm2$(exeext) +m2.srcinfo: doc/m2.info + -cp -p $^ $(srcdir)/doc + +ifeq ($(HAVE_PYTHON),yes) +m2.srcextra: m2/SYSTEM-pim.texi m2/SYSTEM-iso.texi m2/gm2-libs.texi m2/gm2-ebnf.texi + -cp -p m2/SYSTEM-pim.texi $(srcdir)/m2 + -cp -p m2/SYSTEM-iso.texi $(srcdir)/m2 + -cp -p m2/gm2-libs.texi $(srcdir)/m2 + -cp -p m2/gm2-ebnf.texi $(srcdir)/m2 + find . -name '*.texi' -print +else +m2.srcextra: +endif + +m2.srcman: doc/gm2.1 + -cp -p $^ $(srcdir)/doc + # Tell GNU make to ignore these if they exist. .PHONY: m2 modula-2 modula2 @@ -123,7 +140,7 @@ m2.ps: m2.dvi m2.pdf: m2.ps gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=$@ $< -.INTERMEDIATE: gm2.pod +.INTERMEDIATE: m2.pod m2.pod: doc/gm2.texi $(TEXISRC) -$(TEXI2POD) -I $(objdir)/m2 -D m2 < $< > $@ @@ -137,13 +154,7 @@ doc/m2.info: $(TEXISRC) $(objdir)/m2/images/gnu.eps: $(srcdir)/m2/images/gnupng test -d m2/images || mkdir -p m2/images - if [ -f $(srcdir)/m2/images/gnu.eps ] ; then \ - cp $(srcdir)/m2/images/gnu.eps $@ ; \ - else \ - pngtopnm $< | pnmtops -noturn > $@ ; \ - fi - -.INTERMEDIATE: gm2.pod + cp $(srcdir)/m2/images/gnu.eps $@ # gm2-libs.texi