Philippe 23/02/2016: lfi2cdf: modif for JPHEXT/=1
[MNH-git_open_source-lfs.git] / readme / libtools.LISEZMOI
1 0) Repertoires presents dans le paquetage LIBTOOLS
2
3
4 conf/            : contient les fichiers de configuration des Makefiles 
5                    sous la forme 'config.$ARCH'.
6
7 bin/             : scripts utilises par les outils (a mettre dans le PATH)
8 bin/gmaketools   : pour recompiler un programme personnel de tools/diachro
9 bin/rmlink       : pour supprimer les liens crees par l usage de la variable
10                   DIRLFI
11 bin/tonetcdf     : appel par extractdia a ncgen pour transformer en fichier NetCDF 
12
13 lib/NEWLFI       : sources librairie LFI
14 lib/COMPRESS     : sources librairie compression
15 lib/MPIvide      : sources librairie MPIvide
16 lib/rad2         : sources librairie rayonnement
17 lib/gribex_1302b : sources librairie GRIB
18 lib/SURCOUCHE    : sources de la surcouche
19
20 tools/diachro    : outils diaprog, conv2dia, lfi2grb, extractdia, exrwdia
21 tools/fmmore     : outil fmmore
22 tools/lfi2cdf    : outils lfi2cdf/cdf2lfi
23 tools/lfiz       : outils lfiz/unlfiz
24 tools/vergrid    : outil vergrid
25
26 1) Principe de gestion avec les Makefiles :
27
28 Chaque sous-repertoire dans 'lib' et 'tools' contient un Makefile qui
29 a besoin de deux fichiers pour fonctionner :
30
31 - config.$ARCH : present dans le repertoire 'conf/' qui definit les
32                  variables CPP,F90,F77... suivant l'architecture ou l'on
33                  se trouve. Ce fichier de configuration est commun a 
34                  toutes les librairies et outils pour une architecture
35                  donnee.
36
37 - Rules.$ARCH : present dans le repertoire ou se trouve le Makefile de
38                 la librairie ou de l'outil que l'on desire generer.
39                 Il contient les variables associees aux options de
40                 compilation et directives specifiques (CPPFLAGS...)
41                 a une librairie/application donnée. 
42
43 $ARCH est le contenu de la variable d'environnement ARCH a definir
44 comme suit avant toute compilation du paquetage : 
45
46 export ARCH=LXNAGf95    sur Linux avec Fortran NAG f95
47 export ARCH=LXpgf90     sur Linux avec Fortran PGI
48 export ARCH=HPNAGf95    sur HP avec Fortran NAG f95
49 export ARCH=HPf90       sur HP avec Fortran HP f90
50 export ARCH=SGI32       sur Silicon avec gestion 32bits memoire
51 export ARCH=SGI64       sur Silicon avec gestion 64bits memoire
52 export ARCH=SX5         sur NEC SX5
53 export ARCH=VPP         sur Fujitsu VPP
54 export ARCH=AIX         sur IBM
55
56
57 Remarque : 
58
59 Dans chaque Makefile, le fichier Rules.$ARCH est inclus
60 APRES le fichier config.$ARCH. Par consequent, si une variable est
61 definie a la fois dans le fichier config.$ARCH et Rules.$ARCH par le
62 signe '=', la definition dans Rules.$ARCH ecrase la valeur de la
63 variable definie dans config.$ARCH. Il est quand meme possible de
64 conserver la valeur d'une variable definie dans config.$ARCH en
65 redefinissant la variable dans Rules.$ARCH par le signe '+=' auquel
66 cas, on concatene la valeur de la variable dans Rules.$ARCH a la
67 valeur qui etait presente dans config.$ARCH.
68
69 2) Generation des libraries :
70
71   - fixer la valeur de la variable d'environnement ARCH
72   - se placer dans le repertoire 'lib/'
73   - lancer la commande : make/gmake (GNU Make)
74     
75 Les repertoires NEWLFI,COMPRESS,MPIvide et rad2 sont alors parcourus
76 et les librairies associees sont creees. Pour creer une librairie
77 particuliere on peut, soit se placer dans le repertoire correspondant
78 (par exemple lib/NEWLFI) et lancer 'make/gmake' soit lancer la
79 commande 'make/gmake <repertoire>' dans 'lib/' pour compiler la
80 librairie du repertoire 'lib/<repertoire>'.
81
82 Noter que pour l'instant, il faut generer manuellement la librairie
83 GRIB en se placant dans le repertoire 'lib/gribex_1302b/', en fixant
84 la variable d'env. R64 et en redefinissant la variable ARCH. Il faut
85 reprendre cela pour le rendre homogene avec le reste.
86  
87
88 3) Generation des outils : identique a la generation des libraries en
89    remplacant le repertoire 'lib/' par le repertoire 'tools/'. 
90
91   - fixer la valeur de la variable d'environnement ARCH
92   - se placer dans le repertoire 'tools/'
93   - lancer la commande : make/gmake (GNU Make)
94
95 Les repertoires lfiz,lfi2cdf et diachro sont parcourus pour generer
96 les differents outils. Les outils conv2dia et diaprog sont crees l'un
97 apres l'autre dans le repertoire 'diachro'. On peut se placer dans
98 chacun des repertoires lfiz, lfi2cdf ou diaprog pour construire un
99 outil particulier ou lancer gmake <repertoire> dans 'tools' pour creer
100 les executables des outils dans <repertoire>.
101
102 Si l'on tente de generer ces outils avant de creer les librairies
103 NEWLFI et COMPRESS, ces dernieres sont automatiquement generees.
104
105 Remarque concernant le repertoire 'diachro' (conv2dia et diaprog): il
106 se peut que sur certaines architectures, on ne veuille pas generer
107 conv2dia ou diaprog. Pour cela, il faut specifier dans le fichier
108 Rules.$ARCH, la variable PROGALL et l'initialiser avec le programme
109 que l'on desire generer : 'conv2dia' ou 'diaprog' (Cf. Rules.SX5 pour
110 exemple). La variable "PROGALL=conv2dia diaprog" par defaut.
111
112 4) Ou se trouvent les libraries/executables apres compilation ?
113
114 Dans chaque sous-repertoire lib/NEWLFI...,tools/diachro,... est créé
115 un repertoire $ARCH qui contient le resultat de la compilation. 
116
117 5) Nettoyage des fichiers objets, librairies, executables : 
118
119 Se placer dans les repertoires 'lib' ou 'tools'. 
120 Il existe 2 solutions decrites ci-dessous :
121
122 - la premiere permet de supprimer les fichiers *.o cpp_*.f90 mais
123 conserve le repertoire $ARCH avec les librairies ou les executables:
124
125 make/gmake clean
126
127
128 - la seconde efface tous les repertoires $ARCH et restitue les libtools
129 tels qu'ils apparaissent a l'installation du fichier TAR :
130
131 make/gmake distclean
132
133
134 On peut egalement utiliser plus specifiquement le make/gmake
135 clean/distclean dans chacun des sous-repertoires a partir de 'lib' et
136 'tools'.
137
138 6) Quelques remarques pour la generation des outils :
139
140 - lfiz : necessite les librairies COMPRESS et NEWLFI presentes dans le
141 repertoire 'lib'. A priori, pas de pb lors de l'edition de liens.
142
143 - lfi2cdf : necessite la librairie NEWLFI ainsi que la librairie
144 NetCDF. Pour generer l'executable avec succes, il faut s'assurer que
145 le repertoire specifie dans Rules.$ARCH pour acceder a NetCDF est
146 correct (variable NETCDFHOME) sinon la commande Make echoue avec un
147 message clair a ce sujet.
148
149 - conv2dia (repertoire 'diachro') : necessite les librairies COMPRESS
150 et NEWLFI. A priori pas de pb a l'edition de lien
151
152 - diaprog (repertoire 'diachro') : necessite en plus des librairies
153 NEWLFI et COMPRESS, de libraries externes : ncar et X11. L'emplacement
154 de la librairie NCAR est definie a partir de la variable
155 d'environnment NCARG_ROOT qui doit etre valide. L'emplacement de la
156 librairie X11 est definie par la variable LIBEXT de chaque fichier
157 Rules.$ARCH dans 'diachro'.
158
159
160