Re: [PATCH] libgomp: Revise libgomp/Fortran support conditionals

Peter0x44 <[email protected]> Thu, 30 Jul 2026 03:06:39 +0200
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
On 2026-07-29 10:41, Thomas Schwinge wrote:
> 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

Unfortunately, this patch doesn't seem to fix the problem in my 
circumstance. The CI run here:
https://github.com/Peter0x44/w64devkit/commit/22a780033053c041af05a6ff9c3012454ea628fe
https://github.com/Peter0x44/w64devkit/actions/runs/30501305847/job/90741350286#step:9:29


Still produces a toolchain which fails with:

gfortran bruh.f90 -fopenmp
bruh.f90:2:7:

     2 |   use omp_lib
       |       1
Fatal Error: Cannot open module file 'omp_lib.mod' for reading at (1): 
No such file or directory
compilation terminated.

 From this issue.

https://github.com/skeeto/w64devkit/issues/395