1 | #!/bin/sh |
---|
2 | # BEGIN of the procédure |
---|
3 | #clear |
---|
4 | VERS=7 |
---|
5 | YNAME=`basename $0` |
---|
6 | VERELDAT="06.02.2003 (release 20.12.2006)" |
---|
7 | |
---|
8 | #_____________ Traitement des options passées en paramètre______________ |
---|
9 | #valeur d'option par defaut |
---|
10 | OHELP="0" |
---|
11 | OGENER="1" |
---|
12 | OPTCPIL="-O0" |
---|
13 | |
---|
14 | #variables intermediaires de travail |
---|
15 | #et nom du projet qui est toujours le dernier parametre |
---|
16 | if test -z $1 |
---|
17 | then |
---|
18 | echo " > missing parameter, syntaxe: $YNAME {-h, [-g][{-O0, -O1, -O2, -O3}] prj}" |
---|
19 | exit |
---|
20 | else |
---|
21 | YP1=$1 |
---|
22 | prj=$1 |
---|
23 | fi |
---|
24 | if test -z $2 |
---|
25 | then |
---|
26 | YP2="-" |
---|
27 | else |
---|
28 | YP2=$2 |
---|
29 | prj=$2 |
---|
30 | fi |
---|
31 | if test -z $3 |
---|
32 | then |
---|
33 | YP3="-" |
---|
34 | else |
---|
35 | YP3=$3 |
---|
36 | prj=$3 |
---|
37 | fi |
---|
38 | #echo "prj = " $prj |
---|
39 | #------ help required ? |
---|
40 | if test $YP1 = "-h" || test $YP2 = "-h" || test $YP3 = "-h" |
---|
41 | then |
---|
42 | OHELP="1" |
---|
43 | fi |
---|
44 | #echo "OHELP = " $OHELP |
---|
45 | #------ generation not required ? |
---|
46 | if test $YP1 = "-g" || test $YP2 = "-g" || test $YP3 = "-g" |
---|
47 | then |
---|
48 | OGENER="0" |
---|
49 | fi |
---|
50 | #echo "OGENER = " $OGENER |
---|
51 | #----- quid option d'optimisation de compilation |
---|
52 | if test $YP1 = "-O1" || test $YP2 = "-O1" || test $YP3 = "-O1" |
---|
53 | then |
---|
54 | OPTCPIL="-O1" |
---|
55 | fi |
---|
56 | if test $YP1 = "-O2" || test $YP2 = "-O2" || test $YP3 = "-O2" |
---|
57 | then |
---|
58 | OPTCPIL="-O2" |
---|
59 | fi |
---|
60 | if test $YP1 = "-O3" || test $YP2 = "-O3" || test $YP3 = "-O3" |
---|
61 | then |
---|
62 | OPTCPIL="-O3" |
---|
63 | fi |
---|
64 | #echo "optcpil = " $OPTCPIL |
---|
65 | |
---|
66 | #----- more verif |
---|
67 | if test $OGENER = "0" && test -z $2 |
---|
68 | then |
---|
69 | echo " > missing parameter; syntaxe: $YNAME {-h, [-g][{-O0, -O1, -O2, -O3}] prj}" |
---|
70 | exit |
---|
71 | fi |
---|
72 | |
---|
73 | #_______________________________________________________________________ |
---|
74 | |
---|
75 | #----------------------------------------------------------------------- |
---|
76 | #bibliothèque YAODIR (pour objets YAO et M1QN3) |
---|
77 | if test ${#YAODIR} -eq 0 |
---|
78 | then |
---|
79 | echo "YAO directory variable not declared ..." |
---|
80 | echo "current dir used" |
---|
81 | YAODIR="." |
---|
82 | fi |
---|
83 | # |
---|
84 | if test ! -d ${YAODIR} |
---|
85 | then |
---|
86 | echo "$YAODIR : invalid or unavailable YAO directory" |
---|
87 | exit |
---|
88 | fi |
---|
89 | |
---|
90 | #----------------------------------------------------------------------- |
---|
91 | case `uname -s` in |
---|
92 | Linux) ARCHI=lnx86 ;; |
---|
93 | SunOS) ARCHI=solaris ;; |
---|
94 | Darwin) ARCHI=darwin ;; |
---|
95 | *) echo "UNKNOWN LOCAL MACHINE TYPE ($(ULOCAL))"; exit;; |
---|
96 | esac |
---|
97 | #----------------------------------------------------------------------- |
---|
98 | BINDIR=${YAODIR}/yao${VERS}/product/bin/${ARCHI} |
---|
99 | INCDIR=${YAODIR}/yao${VERS}/product/include |
---|
100 | #----------------------------------------------------------------------- |
---|
101 | # Compiler Global Variables: |
---|
102 | #----------------------------------------------------------------------- |
---|
103 | CC= |
---|
104 | CFLAGS= |
---|
105 | # |
---|
106 | CXX="g++" |
---|
107 | #CXXFLAGS=" -O0 -g3 -Wall -DLINUXPC -I${INCDIR}" |
---|
108 | #CXXFLAGS=" ${OPTCPIL} -g3 -Wall -DLINUXPC -I${INCDIR}" |
---|
109 | CXXFLAGS=" ${OPTCPIL} -g3 -Wall -DLINUXPC -Wno-deprecated -I${INCDIR}" |
---|
110 | |
---|
111 | #----------------------------------------------------------------------- |
---|
112 | # LDFLAGS: |
---|
113 | # Test d'existence de la bibliotheque NetCDF |
---|
114 | NETCDFLIBDIR=/usr/lib |
---|
115 | NETCDFLIB=`echo ${NETCDFLIBDIR}/libnetcdf* | awk '{ print $1 }'` |
---|
116 | if test -e ${NETCDFLIB} |
---|
117 | then |
---|
118 | LDFLAGS=" -lm -lg2c -L${NETCDFLIBDIR} -lnetcdf" |
---|
119 | else |
---|
120 | NETCDFLIBDIR=/usr/lib/local |
---|
121 | NETCDFLIB=`echo ${NETCDFLIBDIR}/libnetcdf* | awk '{ print $1 }'` |
---|
122 | if test -e ${NETCDFLIB} |
---|
123 | then |
---|
124 | LDFLAGS=" -lm -lg2c -L${NETCDFLIBDIR} -lnetcdf" |
---|
125 | else |
---|
126 | NETCDFLIBDIR=/sw/lib |
---|
127 | NETCDFLIB=`echo ${NETCDFLIBDIR}/libnetcdf* | awk '{ print $1 }'` |
---|
128 | if test -e ${NETCDFLIB} |
---|
129 | then |
---|
130 | LDFLAGS=" -lm -lg2c -L${NETCDFLIBDIR} -lnetcdf" |
---|
131 | else |
---|
132 | LDFLAGS=" -lm -lg2c" |
---|
133 | fi |
---|
134 | fi |
---|
135 | fi |
---|
136 | #LDYM1QN3 |
---|
137 | LDYM1QN3=" -L${BINDIR} -lym1qn3 " |
---|
138 | #LDYM1QN3=" ${YAODIR}/optstp.o ${YAODIR}/scpctl.o ${YAODIR}/ctlcan.o \ |
---|
139 | # ${YAODIR}/canctl.o ${YAODIR}/m1qn3.o ${YAODIR}/ym1qn3.o" |
---|
140 | #----------------------------------------------------------------------- |
---|
141 | # |
---|
142 | FC="g77" |
---|
143 | #FFLAGS=" -Dkey_4dvar -O0 -g -Wall" |
---|
144 | FFLAGS=" -Dkey_4dvar ${OPTCPIL} -g -Wall" |
---|
145 | # |
---|
146 | CPPFLAGS= |
---|
147 | #----------------------------------------------------------------------- |
---|
148 | #----------------------------------------------------------------------- |
---|
149 | |
---|
150 | echo "////////////////////////////////////////////////////////////////////////" |
---|
151 | echo "// //" |
---|
152 | echo "// $YNAME V.$VERS : PROCEDURE DE CREATION d'UN PROJET //" |
---|
153 | echo "// $VERELDAT //" |
---|
154 | echo "// //" |
---|
155 | echo "//====================================================================//" |
---|
156 | echo |
---|
157 | # on demande juste de l'aide ------------------------------ |
---|
158 | if test $OHELP = "1" |
---|
159 | then |
---|
160 | ${BINDIR}/Yao${VERS} -h |
---|
161 | exit |
---|
162 | fi |
---|
163 | |
---|
164 | #----------------------------------------------------------------------------- |
---|
165 | echo " > lancement de la procédure $YNAME pour le projet :" $prj |
---|
166 | #noms des sources |
---|
167 | Ycpp=Y$prj.cpp |
---|
168 | Y1h=Y1$prj.h |
---|
169 | Y2h=Y2$prj.h |
---|
170 | |
---|
171 | #ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg |
---|
172 | if test $OGENER = "1"; |
---|
173 | then |
---|
174 | echo " > enter proc generation " |
---|
175 | #ggggggggggggggggggggggggggggggg |
---|
176 | |
---|
177 | # sauvegarde (mv~) des Y1prjname.h Y2prjname.h et Yprjname.cpp s'ils existent |
---|
178 | # (nb: est-ce bien utile puisqu'on les rm à la fin !?) |
---|
179 | if test -e $Y1h; |
---|
180 | then |
---|
181 | mv -f $Y1h $Y1h~ |
---|
182 | echo " > $Y1h moved as \~" |
---|
183 | fi |
---|
184 | if test -e $Y2h; |
---|
185 | then |
---|
186 | mv -f $Y2h $Y2h~ |
---|
187 | echo " > $Y2h moved as \~" |
---|
188 | fi |
---|
189 | if test -e $Ycpp; |
---|
190 | then |
---|
191 | mv -f $Ycpp $Ycpp~ |
---|
192 | echo " > $Ycpp moved as \~" |
---|
193 | fi |
---|
194 | # idem pour le .o et l'executable |
---|
195 | if test -e $prj.o; |
---|
196 | then |
---|
197 | mv -f $prj.o $prj.o~ |
---|
198 | echo " > $prj.o moved as \~" |
---|
199 | fi |
---|
200 | if test -e $prj; |
---|
201 | then |
---|
202 | mv -f $prj $prj~ |
---|
203 | echo " > $prj moved as \~" |
---|
204 | fi |
---|
205 | |
---|
206 | #----------------------------------------------------------------------- |
---|
207 | # creation des header (Y1prjname.h et Y2prjname.h) du projet : lancement de Yao1 |
---|
208 | #if Yao7 $Yd desormais, c'est Yao qui, si besoin, formatera un .d |
---|
209 | if ${BINDIR}/Yao${VERS} $prj |
---|
210 | then echo " > headers are now created, start building" |
---|
211 | else echo " > PROJECT HEADERS CREATION FAILED" |
---|
212 | exit |
---|
213 | fi |
---|
214 | #ggggggggggggggggggggggggggggg |
---|
215 | echo " > end proc generation " |
---|
216 | fi |
---|
217 | # fin de la génération |
---|
218 | #gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg |
---|
219 | |
---|
220 | #----------------------------------------------------------------------- |
---|
221 | echo " > enter proc construct " |
---|
222 | # création (i.e construction) du source complet du projet |
---|
223 | # integration du header |
---|
224 | cat ${INCDIR}/Dynamo.h > $Ycpp |
---|
225 | # |
---|
226 | # integration du projet (les 2 header créés par Yao1 et de son nom et version |
---|
227 | echo "#include \"$Y1h\" " >> $Ycpp |
---|
228 | echo "#include \"$Y2h\" " >> $Ycpp |
---|
229 | echo "#define PRJNAME \"$prj\" " >> $Ycpp |
---|
230 | echo "#define VERREF \"$YNAME V.$VERS $VERELDAT $OPTCPIL\" " >> $Ycpp |
---|
231 | # |
---|
232 | # integration du main |
---|
233 | cat ${INCDIR}/Dynamo.cpp >> $Ycpp |
---|
234 | # |
---|
235 | #ccccccccccccccccccccccccccccc |
---|
236 | echo " > end proc construction " |
---|
237 | |
---|
238 | #------------------------------------------------------------------------------ |
---|
239 | # compilation et édition des liens ============================================ |
---|
240 | echo " > start compilation " |
---|
241 | |
---|
242 | # //--------------------------------------------------------------------------- |
---|
243 | # création de l'executable |
---|
244 | # 0) on rm tous les objets précédents pour qu'il n'y ait pas de |
---|
245 | # confusion, et en attendant de bien savoir faire un make |
---|
246 | #rm -f *.o ??? |
---|
247 | |
---|
248 | #compilation du projet.c |
---|
249 | #echo "${CXX} ${CXXFLAGS} ${CPPFLAGS} -c $Ycpp" |
---|
250 | ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c $Ycpp |
---|
251 | echo " > end of compilation, start linking " |
---|
252 | |
---|
253 | # 2) link (et si ca se passe bien ayant rmé avant les .o |
---|
254 | #if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -o $prj Y$prj.o optstp.o scpctl.o ctlcan.o canctl.o m1qn3.o ym1qn3.o ${LDFLAGS} |
---|
255 | #echo "${CXX} ${CXXFLAGS} ${CPPFLAGS} -o $prj Y$prj.o ${LDYM1QN3} ${LDFLAGS}" |
---|
256 | if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -o $prj Y$prj.o ${LDYM1QN3} ${LDFLAGS} |
---|
257 | then |
---|
258 | echo |
---|
259 | echo ========================== PROJECT IS NOW READY ======================== |
---|
260 | else |
---|
261 | echo |
---|
262 | echo " > unpredictable mistakes : PROJECT BUILDING FAILED" |
---|
263 | echo |
---|
264 | exit |
---|
265 | fi |
---|
266 | # //--------------------------------------------------------------------------- |
---|
267 | # purge des fichiers intermediaires créés (transparence, transparence), et FIN |
---|
268 | #rm -f $Y1h |
---|
269 | #rm -f $Y2h |
---|
270 | #rm -f $Ycpp |
---|
271 | #rm -f Y$prj.o |
---|
272 | #rm -f *.o ??? |
---|
273 | echo "// //" |
---|
274 | echo "// $YNAME V.$VERS : END OF PROCEDURE //" |
---|
275 | echo "// $VERELDAT //" |
---|
276 | echo "// //" |
---|
277 | echo "////////////////////////////////////////////////////////////////////////" |
---|
278 | echo |
---|
279 | |
---|
280 | |
---|
281 | |
---|