[PATCH] libgomp: Revise libgomp/Fortran support conditionals
Thomas Schwinge <[email protected]> Wed, 29 Jul 2026 10:41:37 +0200
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <[email protected]> |
Subversion r152931 (Git commit 0046b1a727f73f0848733e28219069426b2dc218) "Fix libgomp without --enable-languages=fortran", and its follow-up Subversion r156232 (Git commit d0709b6aeec6b00e71011502fa311751fc138147) "configure.ac: Test for executability of GFORTRAN", Subversion r156264 (Git commit 2122aa973ed2c829caee5b010a60ad01922a3650) "configure.ac: Test for executability of _the first word_ of GFORTRAN" fixed the libgomp target library build in case that '--enable-languages=fortran' was not in effect: in that case, disable libgomp/Fortran support. These changes certainly do the right thing in GCC configurations where '$GFORTRAN' would be expected to be "just compiled" (built with the GCC top-level build system). However, in case that it's "pre-installed" (provided externally, as determined by the GCC top-level build system), these changes didn't work, and instead kept libgomp/Fortran support disabled, instead of enabling it. "Pre-installed" 'GFORTRAN="x86_64-w64-mingw32-gfortran [...]"' is not accepted by the current 'test -x [...]' check, for instance, as discussed in "libgomp: Fix gfortran detection when program is found via PATH", <https://inbox.sourceware.org/[email protected]> <https://forge.sourceware.org/gcc/gcc/pulls/172>, <https://inbox.sourceware.org/bmm.hj9f44xa6a.gcc.gcc-TEST.Peter0x44.172.1.0@forge-stage.sourceware.org>. That proposed "libgomp: Fix gfortran detection when program is found via PATH" patch has the issue that it picks up the "gfortran [...] found via PATH" also in the case when GCC is configured without '--enable-languages=fortran' in effect, and it then still builds and installs the libgomp/Fortran support files in GCC configurations without Fortran support enabled. Instead of "libgomp: Fix gfortran detection when program is found via PATH" as proposed, we may revise libgomp/Fortran support conditionals generally, and handle that in a conceptually simpler way: revert the three aforementioned commits (in other words: simply again assign 'FC="$GFORTRAN"' (like 'libgfortran/configure.ac' also is doing), and conditionalize 'USE_FORTRAN' on whether '--enable-languages=fortran' is in effect. In other words: in case that '--enable-languages=fortran' is in effect, assume that the 'GFORTRAN=[...]' passed to the libgomp build is functional -- no matter where it's coming from: "just compiled" or "pre-installed". PR libgomp/41418 libgomp/ * configure.ac (FC): Revert ealier changes; just set to '"$GFORTRAN"'. (USE_FORTRAN): Conditionalize on '--enable-languages=fortran' being in effect. * configure: Regenerate. Reported-by: Peter Damianov <[email protected]> --- libgomp/configure | 50 +++++++++++++++++++++----------------------- libgomp/configure.ac | 24 ++++++++++----------- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/libgomp/configure b/libgomp/configure index 2f395a883f2..6ff3899df15 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -649,8 +649,6 @@ OMP_NEST_LOCK_SIZE OMP_LOCK_ALIGN OMP_LOCK_SIZE INTPTR_T_KIND -USE_FORTRAN_FALSE -USE_FORTRAN_TRUE link_gomp tmake_file XLDFLAGS @@ -677,6 +675,8 @@ offload_targets offload_plugins DL_LIBS libtool_VERSION +USE_FORTRAN_FALSE +USE_FORTRAN_TRUE ac_ct_FC FCFLAGS FC @@ -12265,17 +12265,7 @@ FCFLAGS="$FCFLAGS -L." # We need gfortran to compile parts of the library # We can't use AC_PROG_FC because it expects a fully working gfortran. #AC_PROG_FC(gfortran) -case `echo $GFORTRAN` in - -* | no* ) - FC=no ;; - *) - set dummy $GFORTRAN; ac_word=$2 - if test -x "$ac_word"; then - FC="$GFORTRAN" - else - FC=no - fi ;; -esac +FC="$GFORTRAN" ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' @@ -15241,6 +15231,23 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu FCFLAGS="$FCFLAGS -Wall -L../libgfortran" +case ,${enable_languages}, in + *,fortran,* ) + use_fortran=true + ;; + * ) + use_fortran=false + ;; +esac + if "$use_fortran"; then + USE_FORTRAN_TRUE= + USE_FORTRAN_FALSE='#' +else + USE_FORTRAN_TRUE='#' + USE_FORTRAN_FALSE= +fi + + # For libtool versioning info, format is CURRENT:REVISION:AGE libtool_VERSION=1:0:0 @@ -17351,15 +17358,6 @@ else fi - if test "$ac_cv_fc_compiler_gnu" = yes; then - USE_FORTRAN_TRUE= - USE_FORTRAN_FALSE='#' -else - USE_FORTRAN_TRUE='#' - USE_FORTRAN_FALSE= -fi - - # ??? 2006-01-24: Paulo committed to asking autoconf folk to document # and export AC_COMPUTE_INT. If that happens, then we'll need to remove # the underscore here and update the PREREQ. If it doesn't, then we'll @@ -17646,6 +17644,10 @@ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USE_FORTRAN_TRUE}" && test -z "${USE_FORTRAN_FALSE}"; then + as_fn_error $? "conditional \"USE_FORTRAN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${PLUGIN_NVPTX_TRUE}" && test -z "${PLUGIN_NVPTX_FALSE}"; then as_fn_error $? "conditional \"PLUGIN_NVPTX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -17666,10 +17668,6 @@ if test -z "${LIBGOMP_BUILD_VERSIONED_SHLIB_SUN_TRUE}" && test -z "${LIBGOMP_BUI as_fn_error $? "conditional \"LIBGOMP_BUILD_VERSIONED_SHLIB_SUN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${USE_FORTRAN_TRUE}" && test -z "${USE_FORTRAN_FALSE}"; then - as_fn_error $? "conditional \"USE_FORTRAN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 diff --git a/libgomp/configure.ac b/libgomp/configure.ac index 057debe9214..9ebac1fc336 100644 --- a/libgomp/configure.ac +++ b/libgomp/configure.ac @@ -159,20 +159,20 @@ FCFLAGS="$FCFLAGS -L." # We need gfortran to compile parts of the library # We can't use AC_PROG_FC because it expects a fully working gfortran. #AC_PROG_FC(gfortran) -case `echo $GFORTRAN` in - -* | no* ) - FC=no ;; - *) - set dummy $GFORTRAN; ac_word=$2 - if test -x "$ac_word"; then - FC="$GFORTRAN" - else - FC=no - fi ;; -esac +FC="$GFORTRAN" AC_PROG_FC(gfortran) FCFLAGS="$FCFLAGS -Wall -L../libgfortran" +case ,${enable_languages}, in + *,fortran,* ) + use_fortran=true + ;; + * ) + use_fortran=false + ;; +esac +AM_CONDITIONAL([USE_FORTRAN], ["$use_fortran"]) + # For libtool versioning info, format is CURRENT:REVISION:AGE libtool_VERSION=1:0:0 AC_SUBST(libtool_VERSION) @@ -427,8 +427,6 @@ else fi AC_SUBST(link_gomp) -AM_CONDITIONAL([USE_FORTRAN], [test "$ac_cv_fc_compiler_gnu" = yes]) - # ??? 2006-01-24: Paulo committed to asking autoconf folk to document # and export AC_COMPUTE_INT. If that happens, then we'll need to remove # the underscore here and update the PREREQ. If it doesn't, then we'll -- 2.53.0