Skip to content

Bug - Monan 0.5.0 #6

@joaomas

Description

@joaomas

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

use mpas_dmpar
use mpas_kind_types
use mpas_derived_types
use mpas_pool_routines
use mpas_constants
use mpas_log, only : mpas_log_write
use VerticalInterpolation, only : VerticalInterpolation_ZGEO

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions