Inicio / Wikis / Tutoriales / Introducción a Scons - scons Howto para Fortran

Introducción a Scons - scons Howto para Fortran

Tutorial creado por Guillem Borrell. Extraido de: http://torroja.dmt.upm.es:9673/Guillem_Site/Varios/sconshowto
05 de Noviembre de 2006
GNUAdministración de sistemas

1 - scons Howto para Fortran

Para los que ya están hartos de utilizar el GNU make y sus infames makefiles os gustará saber que ya estoy utilizando su alternativa scons. He aquí unos cuantos ejemplos:

scons necesita un único archivo de configuración para compilar los archivos de código fuente llamado SConstruct. En realidad es un archivo en python que utiliza las funciones de scons que previamente ha importado por defecto. Lo único necesario es conocer unas pocas variables del sistema y algo de python (muy poco)

Por ejemplo, para compilar un pequeño archivo en Fortran 95 con el compilador gfortran basta con escribir el archivo SConstruct de la siguiente manera.

Sconstruct:
 import os
 
 # Collection of possible fortran compilers
 FC='gfortran-4.0.2'
 CC=FC
 #FC='ifort'
 
 # Optimization flags
 FFLAGS='-g'
 
 env = Environment(CC=CC,FORTRAN=FC,FORTRANFLAGS=FFLAGS,ENV=os.environ)
 env.Program('test.exe',['core_test.f95',
                         'sudoku_routines.f95',
                         'sudoku_toolkit.f95'])
 
 #object_files=env.Object(['sudoku_routines.f95',
 #                         'core_test.f95'])
 print '**********************************'
 print 'System is:',os.name
 print 'Fortran compiler is:',env['FORTRAN']
 print 'Fortran options are:',env['FORTRANFLAGS']
 print '**********************************'
 

Para compilar y crear el ejecutable...

guillem@peret ~/Workspace/Various/IPNSS $ scons
 scons: Reading SConscript files ...
 **********************************
 System is: posix
 Fortran compiler is: gfortran-4.0.2
 Fortran options are: -g
 **********************************
 scons: done reading SConscript files.
 scons: Building targets ...
 gfortran-4.0.2 -g -c -o sudoku_toolkit.o sudoku_toolkit.f95
 gfortran-4.0.2 -g -c -o sudoku_routines.o sudoku_routines.f95
 gfortran-4.0.2 -g -c -o core_test.o core_test.f95
 gfortran-4.0.2 -o test.exe core_test.o sudoku_routines.o sudoku_toolkit.o
 scons: done building targets.

Para limpiar los archivos temporales basta con utilizar el siguiente comando:

guillem@peret ~/Workspace/Various/IPNSS $ scons -c
 scons: Reading SConscript files ...
 **********************************
 System is: posix
 Fortran compiler is: gfortran-4.0.2
 Fortran options are: -g
 **********************************
 scons: done reading SConscript files.
 scons: Cleaning targets ...
 Removed sudoku_toolkit.o
 Removed sudoku_toolkit.mod
 Removed sudoku_routines.o
 Removed sudoku_routines.mod
 Removed core_test.o
 Removed test.exe
 scons: done cleaning targets.

Como el archivo SConstruct es en realidad un archivo de código en Python las capacidad de interacción con el sistema es mucho mayor. Podeis utilizar scons como interfaz para aplicaciones adicionales de un modo mucho más simple que con make. Por ejemplo, así compilo el código del canal definiendo variables adicionales para compilar con soporte para debugging y para correr el ejecutable.

Sonstruct
 import os
 
 # Collection of possible fortran compilers
 FC='ifort'
 CC=FC
 #FC='ifort'
 
 # Optimization flags
 FFLAGS='-O3 -tpp7 -parallel '
 CF='-O3 -tpp7 -parallel '
 
 env = Environment(CC=CC,
                   FORTRAN=FC,
                   FORTRANFLAGS=FFLAGS,
                   LINKFLAGS=CF,
                   LIBS=['blas'],
                   ENV=os.environ)
 
 debug = ARGUMENTS.get('debug',0)
 run = ARGUMENTS.get('run',0)
 
 if int(debug):
     env['FORTRANFLAGS'] ='-g'
     env['LINKFLAGS']='-g'
 
 if int(run):
     os.system('./chan15.exe')
 
 env.Program('chan15.exe',['abc.f',
                           'calcmax.f',
                           'cfric.f',
                           'chan15.f',
                           'constr.f',
                           'constr2.f',
                           'cpres.f',
                           'csh.f',
                           'cvmax.f',
                           'divg.f',
                           'eddyv.f',
                           'filter.f',
                           'info.f',
                           'initial.f',
                           'inivel.f',
                           'invert.f',
                           'loperator.f',
                           'noperator.f',
                           'press.f',
                           'rftsingle.f',
                           'rw.f',
                           'stats.f',
                           'trans.f',
                           'ufinal.f',
                           'uhat.f',
                           'wave.f',
                           'write_inflow.f',
                           'write_wallp.f',
                           'gstore.f'])
 
 
 print '**********************************'
 print 'System is:',os.name
 print 'Fortran compiler is:',env['FORTRAN']
 print 'Fortran options are:',env['FORTRANFLAGS']
 print 'Linker flags are:',env['LINKFLAGS']
 print 'Libraries used are:',env['LIBS']
 print '**********************************'

Puedo utilizar los siguientes comandos:

scons # compilar los archivos
 scons -c # limpiar los archivos temporales
 scons -Q debug=1 # cambia las opciones de compilación a -g (debugging)
 scons -Q run=1 # ejecuta el programa

Creo que es una opción lo suficientemente interesante como para jubilar el obsoleto make.

Valora este capítulo:
Autor y licencia de 'Introducción a Scons - scons Howto para Fortran'
Guillem Borrell Extraído de: http://torroja.dmt.upm.es:9673/Guillem_Site/Varios/sconshowto

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Introducción a Scons - scons Howto para Fortran' (0)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Introducción a Scons - scons Howto para Fortran'

Este documento pretende ser el punto de entrada de los hispanohablantes al mundo Linux, intentando... Más »
Esta guía tiene por objetivo dar respuestas muy claras y concretas a los problemas que... Más »
El Linux Benchmarking CÓMO trata sobre algunos aspectos asociados con el benchmarking en los sistemas... Más »
Este es el COMO Programar el puerto serie en Linux. Todo sobre cómo programar comunicaciones... Más »
Este COMO cubre la configuración y uso de la unidad extraíble Iomega JAZ bajo Linux... Más »
¿Estás seguro de que deseas eliminar este capítulo?