Open joaomas opened 5 months ago
egeon-login1: ~ $ gfortran --version GNU Fortran (GCC) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
egeon-login1: ~ $ gmake --version GNU Make 4.2.1 Built for x86_64-redhat-linux-gnu Copyright (C) 1988-2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Bug Report @luflarois
//
A rotina mpas_isobaric_diagnostics.F tem no seu início:
fortran ! Copyright (c) 2016, Los Alamos National Security, LLC (LANS) ! and the University Corporation for Atmospheric Research (UCAR). ! ! Unless noted otherwise source code is licensed under the BSD license. ! Additional copyright and license information can be found in the LICENSE file ! distributed with this code, or at http://mpas-dev.github.com/license.html ! module mpas_isobaric_diagnostics
Vemos que essa rotina depende da "VerticalInterpolation", que é parte de mpas_vertical_interpolation.F Logo há uma dependência explícita entre os dois fontes. Se a ordem de compilação não compilar mpas_vertical_interpolation.F antes vai haver um erro por falta do objeto.
Desta forma, o correto pelo padrão Fortran com o Makefile é tornar explícita a dependência. Pode ser que algum compilador "resolva" criando e resolvendo a dependência. A versão minha, GNU Fortran (GCC) 14.1.1 20240507 + a versão do GNU Make 4.4.1 não soluciona isso.
Daí a necessidade do Makefile estra com a dependência explícita. Mostrada abaixo:
makefile SUFFIXES: .F .o
#
Add new diagnostic modules to DIAGNOSTIC_MODULES
# DIAGNOSTIC_MODULES = \ mpas_atm_diagnostic_template.o \ mpas_isobaric_diagnostics.o \ mpas_cloud_diagnostics.o \ mpas_convective_diagnostics.o \ mpas_pv_diagnostics.o \ mpas_soundings.o \ mpas_vertical_interpolation.o \
mpas_isobaric_diagnostics.o: mpas_atm_diagnostics_utils.o mpas_vertical_interpolation.o
E aproveito para dizer, se é que todos lembram, a razão de eu estar tentando usar o FPM. Ele toma conta sozinho das dependências para justamente evitar isso. Eu acredito que devemos manter padronização caso continuemos a usar o make para construir o modelo. E a padronização pede dependência explícita no makefile.