[Bug libfortran/104006] [12 regression] power-ieee128 merge breaks Solaris build

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 14 11:19:58 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104006

--- Comment #27 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:ac6a1181209b756882f89cdba6128565fad1a56e

commit r12-6580-gac6a1181209b756882f89cdba6128565fad1a56e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Jan 14 12:11:00 2022 +0100

    libgfortran: Partly revert my r12-6498 change to fix Solaris build
[PR104006]

    In r12-6498 I've added $(version_dep) to BUILT_SOURCES, previously
version_dep
    on Linux used to be a file in $(srcdir), but with my changes it is a
generated
    file in the object directory (preprocessed version of the $(srcdir) file)
    and I thought generated files belong to BUILT_SOURCES so that they are
    cleaned up etc.
    For Linux that is fine, but it broke parallel builds on Solaris.
    BUILT_SOURCES is a special variable for automake where automake ensures
    that for make all, make check and make install all those $(BUILT_SOURCES)
    are generated before actually starting building in parallel the various
    object files.  That way we can avoid hacks like:
    $(patsubst %.F90,%.lo,$(notdir $(filter %.F90,$(prereq_SRC)))): kinds.inc
c99_protos.inc
    $(patsubst %.c,%.lo,$(notdir $(filter %.c,$(prereq_SRC)))): kinds.h
    $(patsubst %.f90,%.lo,selected_real_kind.f90): selected_real_kind.inc
    $(patsubst %.f90,%.lo,selected_int_kind.f90): selected_int_kind.inc
    $(patsubst %.F90,%.lo,ieee_exceptions.F90): fpu-target.inc
    $(patsubst %.F90,%.lo,ieee_arithmetic.F90): fpu-target.inc
ieee_exceptions.lo
    $(patsubst %.c,%.lo,fpu.c): fpu-target.h
    which makes those dependencies explicit but hides it from automake, so that
it
    doesn't throw away its rules for those object files.
    On Solaris, $(version_dep) contains gfortran.ver and gfortran.ver-sun.
    gfortran.ver is like on Linux, it can be in $(BUILT_SOURCES), but
unfortunately
    gfortran.ver-sun depends on all the object files being compiled already,
    so if gfortran.ver-sun appears in $(BUILT_SOURCES), the BUILT_SOURCES
function
    of ensuring the generated files are generated before building object files
    is gone, almost everything is built before all-am is entered and there
    are no explicit dependencies that e.g. *.F90 files depend on
    kinds.inc etc.

    So, this change reverts that mistake and instead adds $(version_dep) to
    what is removed during make clean (clean-local in particular).

    2022-01-14  Jakub Jelinek  <jakub@redhat.com>

            PR libfortran/104006
            * Makefile.am (BUILT_SOURCES): Don't include $(version_dep).
            (clean-local): Remove $(version_dep).
            * Makefile.in: Regenerated.


More information about the Gcc-bugs mailing list