lunes, 29 de marzo de 2010

Makefile para Fortran 95 cuando se usan módulos

En mi trabajo tengo que usar módulos de Fortran 95, y no solamente usarlos, sino a veces crearlos. Vienen a ser como las bibliotecas compartidas de C, pero su gestión es distinta. Desde unos puntos de vista, más fea y engorrosa, y desde otros, más simple y clara.

En este caso, los ficheros .mod vienen a hacer el papel de los ficheros .h de C, solo que no se pueden escribir a mano, ya que no son ficheros de texto. Se generan al compilar los ficheros fuente de Fortran que contienen módulos.

Por esa razón me ha costado un poco hacerme a trabajar con ellos, en particular en los Makefiles, pero finalmente creo que ya tengo cómo tratarlos:


testprogram : testprogram.o testmodule.o
gfortran -J. -o testprogram testprogram.o testmodule.o

%.o : %.F95
gfortran -J. -c -o $@ $<

testprogram.o : testmodule.mod

%.mod : %.o
@


Esa simple arroba hace el papel de línea de órdenes vacía que no causa errores, y, al depender el módulo del objeto, depende transitivamente de su fichero fuente, con lo que cambiar éste hace saltar la regla, se detecta que el objeto no está actualizado y se recompila, creando el módulo en el proceso. Poco importa que después la regla para el módulo vaya a ser invocada cuando ya no sea necesaria por tener ya el módulo, porque no hará nada.

No hay comentarios: