source: branches/publications/ORCHIDEE_Biochar/makeorchidee_fcm @ 7442

Last change on this file since 7442 was 6242, checked in by albert.jornet, 5 years ago

New: allow JEAN-ZAY compilation files
Change: from revisions [6210/trunk/ORCHIDEE] and [5835/trunk/ORCHIDEE]

File size: 19.2 KB
Line 
1#!/bin/bash
2
3#==============================================================================================================================\n
4#  MODULE       : makeorchidee_fcm
5#
6#  CONTACT      : orchidee-help _at_ listes.ipsl.fr
7#
8#  LICENCE      : IPSL (2006)
9#  This software is governed by the CeCILL licence see ORCHIDEE/ORCHIDEE_CeCILL.LIC
10#
11# SVN     :
12# $HeadURL: svn://forge.ipsl.jussieu.fr/orchidee/trunk/ORCHIDEE/makeorchidee_fcm $
13# $Date: $
14# $Revision: $
15# \n
16####################################################################################################
17#
18# This script has several possible functions :
19#   1. Compiling ORCHIDEE
20#   2. Building of the documentation
21#
22#***************************************************************************************************
23#
24# Command lines :
25#
26#   1) makeorchidee_fcm   [ -parallel  PARALLEL_TYPE ]
27#                         [ -driver ]
28#                         [ -unittest ]
29#                         [ -otherexec ]
30#                         [ -arch XXX ]
31#                         [ -prod | -profile | -dev | -debug ]
32#
33#   2) makeorchidee_fcm   [ -clean ]
34#
35#   3) makeorchidee_fcm   [ -doc | -doc_para ] ## actually doc_para is commented
36#                         [ -rmdoc ]
37#                         [ -doc_tree ]
38#
39
40########################################################################
41#
42# 1) Set default values. Some of them can be specified using environnement variables.
43#
44
45is_driver_opt=FALSE
46is_other_opt=FALSE
47is_unittest_opt=FALSE
48clean=FALSE
49compile_flags="%PROD_FFLAGS"
50xios=FALSE
51full=""
52ext_src=""
53export P_P=""
54export SECTIONS_PARA=""
55ORCHDIR=`/bin/pwd`
56fcm_path=$ORCHDIR/tools/FCM_V1.2/bin
57compile_doc=FALSE
58
59arch_default_path="arch"
60arch_path="arch"
61
62# Path to store files produced during compilation
63# Note: config_path was previously named .config
64rel_config_path=build
65config_path=$ORCHDIR/${rel_config_path}
66
67
68# Following variables can be set as environement variables if wanted
69if [ -n "$FCM_ARCH" ]; then
70    arch="$FCM_ARCH"
71else
72    arch=NONE
73fi
74if [ -n "$FCM_PARA" ]; then
75    parallel_mode="$FCM_PARA"
76else
77    parallel_mode=seq
78fi
79if [ -n "$FCM_JOBS" ]; then
80    job="$FCM_JOBS"
81else
82    job=1
83fi
84
85
86#########################################################################
87# 2. Read arguments
88#
89while (($# > 0)) ; do
90
91  case $1 in
92    "-h")
93        print_help=TRUE ; shift ;;
94
95    "-parallel")
96        parallel_mode=$2 ; shift ; shift ;;
97
98    "-p")
99        parallel_mode=$2 ; shift ; shift ;;
100                       
101    "-driver")
102        is_driver_opt=TRUE ; shift ;;
103
104    "-otherexec")
105        is_other_opt=TRUE
106        is_driver_opt=TRUE ; shift ;;
107
108    "-unittest")
109        is_unittest_opt=TRUE
110        is_driver_opt=TRUE ; shift ;;
111
112    "-arch")
113        arch="$2" ; shift ; shift ;;
114
115    "-arch_path")
116        arch_path=$2 ; shift ; shift ;;
117
118    "-xios")
119        xios=TRUE
120        shift ;;
121
122    "-xios2")
123        xios=TRUE
124        shift ;;
125
126    "-noxios")
127        xios=FALSE
128        shift ;;
129
130    "-prod")
131        ISPROD=true
132        compile_flags="%PROD_FFLAGS" ; shift ;;
133
134    "-profile")
135        ISPROD=true
136        compile_flags="%PROFIL_FFLAGS" ; shift ;;
137
138    "-dev")
139        compile_flags="%DEV_FFLAGS" ; shift ;;
140
141    "-debug")
142        compile_flags="%DEBUG_FFLAGS" ; shift ;;
143
144     "-j")
145        job="$2" ; shift ; shift ;;
146     
147     "-full")
148        full='-full' ; shift ;;
149
150     "-clean")
151        clean=TRUE ; shift ;;
152
153     "-ext_src")
154        ext_src=$2 ; shift ; shift ;;
155
156#    "-doc_para")
157#        setenv P_P -DCPP_PARA
158#       setenv SECTIONS_PARA "-e s&ENABLED_SECTIONS\ *= &ENABLED_SECTIONS       = CPP_PARA&g"
159#       goto doc
160
161     "-doc")
162          compile_doc=TRUE ; shift ;;
163
164     "-rmdoc")
165          \rm -rf docs
166          shift ;;
167
168     "-doc_tree") 
169          cd ..
170        find ORCHIDEE \( -not -path '*.svn*' \
171                        -a \( -name '*.f90' -o -name "*.F90" -o -name "*.h" \) \) \
172                    -exec bash -c 'mkdir -p ORCHIDEE/DOC/$( dirname {} )/$( echo $( basename {} ) | sed -e "s/\..*//" )' \;
173        cd ORCHIDEE
174        shift ;;
175
176    *)
177        echo "unknown option "$1" , exiting..."
178        exit
179   esac
180done
181
182#########################################################################
183# 3. Print help documentation and exit
184#
185if [[ "$print_help" == "TRUE" ]] ; then
186  cat <<fin
187
188########################################################################
189# Usage of the script makeorchidee_fcm
190#
191# makeorchidee_fcm compiles ORCHIDEE using the Fcm a software developed
192# by the Hadley Centre. Fcm is stored in tools directory.
193# Platform specific compile options are found in the arch directory.
194########################################################################
195
196./makeorchidee_fcm [Options]
197
198Main options
199[ -h ]        : show this help
200
201[ -arch XXX ] : name of the archicture file containg platform dependent compile options.
202                The files arch/arch-XXX.fcm and arch/arch-XXX.path must exist.
203
204[ -arch_path XXX ] : directory of the archicture file containg platform dependent compile options.
205                     Default is ./arch directory. If the files are not found in the folder, the default ./arch folder will be used.
206
207[ -parallel|-p PARALLEL_TYPE ] : choose parallelization mode for ORCHIDEE :
208    PARALLEL_TYPE =
209    ( mpi | MPI )              : only MPI (Message Passing Interface)
210    ( omp | OMP )              : only OpenMP
211    ( mpi_omp | MPI_OMP )      : hybrid MPI/OpenMP mode
212    ( none | NONE | seq )      : sequential mode (default)
213
214[ -driver ]      : compilation of ORCHIDEE offline standard driver
215[ -unittest ]    : compilation of ORCHIDEE unittests
216[ -otherexec ]   : compilation of other programs: teststomate, forcesoil, testrouting.
217                   Warning! All these programs are not fully validated or maintained.
218
219Options related to cleaning
220| -clean ]       : delete all files produceed during previous compilation
221| -full ]        : activate full recompiling
222
223Options for XIOS, only choose one of the following
224[ -xios | -xios2 ] : linking with XIOS 2.0 (it is not longer possible to use XIOS1)
225[ -noxios ]        : compilation without XIOS (default)
226
227Options for optimization, choose only one of the following
228[ -prod ]        : compilation for production (all optimization)
229[ -profile ]     : compilation for profiling (all optimizations, -g and some vectorization reports)
230[ -dev ]         : compilation for development (low optimization and -g)
231[ -debug ]       : compilation for debugging (no optmization and all debug options)
232
233Option to optimize the compilation time
234[ -j x ]         : activate parallel compiling on x task, default 1 task
235
236Option to add extra source to compile
237[ -ext_src path] : path to an additional directory with fortran routines to compile with the model
238
239Options for compiling the documentation :
240[ -doc ]         : generate documentation with Doxygen (exit after doc computation)
241[ -doc_para ]    : generate documentation with Doxygen with parallelization calls
242[ -rmdoc ]       : remove documentation directory (before generate new documentation with Doxygen ?)
243[ -doc_tree ]    : generate tree of ORCHIDEE directories for each file
244
245
246Example 1 : compile at curie(TGCC) for MPI parallel run mode
247   ./makeorchidee_fcm -parallel mpi -arch X64_CURIE -driver
248
249Example 2 : compile at ada(IDRIS) for MPI-OpenMP parallel run mode
250   ./makeorchidee_fcm -parallel mpi_omp -arch X64_ADA -driver
251
252Example 3 : compile at obelix(LSCE)
253   ./makeorchidee_fcm -arch ifort_LSCE -driver
254
255Example 4 : compile using gfortran compiler for sequential run mode
256First make sure that the files arch/gfortran.fcm and arch/gfortran.path are suitable for
257your environement especially the path to netcdf library.
258   ./makeorchidee_fcm -parallel seq -arch gfortran -driver
259
260Example 5 : clean files created during previous compilation
261   ./makeorchidee_fcm -clean
262
263fin
264
265  exit
266fi
267#
268#
269#####################################################################################################
270# 4. Building the documentation:
271# ------------------------------
272# We assume to start in the ORCHIDEE directory
273#
274#****  Directory structure:
275#
276# ..                       : parent of the start dir.
277#   -- ORCHIDEE            : ($MODELPATH), start directory
278#       - src_sechiba
279#       - src_stomate
280#       + DOC
281#       + webdoc
282#   -- IOIPSL
283#       - src
284#   ++ modeles_doc         : ($SRCPATH), source files for the documentation, emptied at start, temporary
285#
286#****  gawk scripts called :
287#
288# codeinc.awk              : encaspulates code parts in Doxygen documentation
289# codedox.awk              : transforms almost all comments in Doxygen comments for documentation
290# codealgo.awk             : emphasizes main algorithm description of each routine in their Doxygen documentation
291#
292#****
293if [[ "$comple_doc" == "TRUE" ]] ; then
294
295    unalias cd
296
297    export REV=`svn info | grep vision | sed -e 's&.*vision.*: \([0-9]*\)&\1&' | head -n 1`
298    export TAG=`svn info | grep URL | sed -e 's&.*URL.*: svn://forge.ipsl.jussieu.fr/orchidee/\(.*\)&\1&' | head -n 1 | xargs dirname`
299    cd ..
300   
301    \rm -rf modeles_doc
302    export MODELPATH=${PWD}
303    \mkdir modeles_doc
304    export SRCPATH=${MODELPATH}/modeles_doc
305   
306    find IOIPSL/src \( -not -path '*.svn*' \
307        -a \( -name '*.f90' -o -name "*.F90" -o -name "*.h" \) \) \
308        -exec bash -c 'mkdir -p '${SRCPATH}'/$( dirname {} ); cp -p {} '${SRCPATH}'/$( dirname {} )' \;
309           
310    find ORCHIDEE \( -not -path '*.svn*' \
311        -a \( -name '*.f90' -o -name "*.F90" -o -name "*.h" \) \) \
312        -exec bash -c 'mkdir -p '${SRCPATH}'/$( dirname {} ); cp -p {} '${SRCPATH}'/$( dirname {} )' \;
313    cd ${SRCPATH}
314    # Use standard preprocessor to suppress all preproc directives
315    \find . -name "*.f90" -exec cpp -P -C -traditional -x assembler-with-cpp ${P_P} '{}' '{}'_ \;
316    \find . -name "*.f90" -print -exec mv -f '{}'_ '{}' \;
317
318    # use codeinc script to encaspulate code parts in Doxygen documentation
319    \find . -name "*.f90" -exec gawk -f ${MODELPATH}/ORCHIDEE/DOC/TOOLS/codeinc.awk '{}' \; > /dev/null
320    \find . -name "*.f90" -print -exec mv -f '{}'_preproc_codeinc '{}' \;
321    # use codedox script to transform almost all comments in Doxygen comments for documentation (use with care !)
322    \find . -name "*.f90" -exec gawk -f ${MODELPATH}/ORCHIDEE/DOC/TOOLS/codedox.awk '{}' \; > /dev/null
323    \find . -name "*.f90" -print -exec mv -f '{}'_preproc_codedox '{}' \;
324   
325    # use codealgo script to emphasize main algorithm description of each routine in their Doxygen documentation
326    \find . -name "*.f90" -exec gawk -f ${MODELPATH}/ORCHIDEE/DOC/TOOLS/codealgo.awk '{}' \; > /dev/null
327    \find . -name "*.f90" -print -exec mv -f '{}'_preproc_codealgo '{}' \;
328    cd ../ORCHIDEE
329    \rm -f ${MODELPATH}/ORCHIDEE/Doxyfile_ORCHIDEE
330    sed -e 's&MYPATH&'${MODELPATH}'&g' -e 's&SRCPATH&'${SRCPATH}'&g' \
331        -e 's&MYTAG&'${TAG}'&' -e 's&MYREV&'${REV}'&' ${SECTIONS_PARA} \
332        ${MODELPATH}/ORCHIDEE/Doxyfile_ORCHIDEE.init > ${MODELPATH}/ORCHIDEE/Doxyfile_ORCHIDEE
333    \rm -f ${MODELPATH}/ORCHIDEE/DOC/header.tex
334    sed -e "s&MYTAG&${TAG}&" -e "s&MYREV&${REV}&" \
335        ${MODELPATH}/ORCHIDEE/DOC/header.tex.init > ${MODELPATH}/ORCHIDEE/DOC/header.tex
336    ln -s /home/orchidee01/maignan/ORCHIDEE/DOC/IMAGES ${MODELPATH}/ORCHIDEE/DOC/IMAGES
337    gmake doc
338    gmake bib
339    gmake toc
340    \rm -rf ${MODELPATH}/ORCHIDEE/webdoc
341    \mv ${MODELPATH}/ORCHIDEE/docs/html ${MODELPATH}/ORCHIDEE/webdoc
342    gmake index
343    gmake toc
344    \rm -rf ${SRCPATH}
345    cp ${MODELPATH}/ORCHIDEE/docs/latex/refman.pdf ${MODELPATH}/ORCHIDEE/documentation.pdf
346    exit
347fi
348
349#####################################################################################################
350# 5. Clean directory from files produced during previous compilation
351# --------------------------------------
352if [[ "$clean" == "TRUE" ]] ; then
353    # Remove the whole directory created during previous compilation
354    rm -fr ${config_path}
355
356    # Clean ORCHIDEE modules in modipsl/lib folder
357    rm -f ../../lib/intersurf.mod
358    rm -f ../../lib/sechiba.mod
359    rm -f ../../lib/chemistry.mod
360    rm -f ../../lib/liborglob.a
361    rm -f ../../lib/libparallel.a
362    rm -f ../../lib/libsechiba.a
363    rm -f ../../lib/libstomate.a
364    rm -f ../../lib/libparameters.a
365    rm -f ../../lib/liborchidee_ol.a
366    rm -f ../../lib/liborchidee.a
367
368    echo Clean files created during previous compilation of ORCHIDEE done
369
370    exit
371fi
372
373#########################################################################
374# 6. Prepare compilation
375#
376# Add fcm in environement path
377export PATH=${fcm_path}:${PATH}
378
379# Define architecture files
380if [[ "$arch" != "NONE" ]] ; then
381  # First search for file in arch_path folder, if they are not there, search in arch_default_path
382  if [[ -e $arch_path/arch-${arch}.path ]] ; then
383    rm -f arch.path
384    ln -s $arch_path/arch-${arch}.path arch.path
385  elif [[ -e $arch_default_path/arch-${arch}.path ]] ; then
386    rm -f arch.path
387    ln -s $arch_default_path/arch-${arch}.path arch.path
388  fi
389       
390  if [[ -e $arch_path/arch-${arch}.fcm ]] ; then
391    rm -f arch.fcm
392    ln -s $arch_path/arch-${arch}.fcm arch.fcm
393  elif [[ -e $arch_default_path/arch-${arch}.fcm ]] ; then
394    rm -f arch.fcm
395    ln -s $arch_default_path/arch-${arch}.fcm arch.fcm
396  fi
397
398  if [[ -e $arch_path/arch-${arch}.env ]] ; then
399    rm -f arch.env
400    ln -s $arch_path/arch-${arch}.env arch.env
401  elif [[ -e $arch_default_path/arch-${arch}.env ]] ; then
402    rm -f arch.env
403    ln -s $arch_default_path/arch-${arch}.env arch.env
404  else
405    ln -s .void_file arch.env
406  fi
407  source arch.env
408  source arch.path
409else
410  echo "Warning : architecture not specified, taking default file <<arch.fcm>> and <<arch.path>>" 
411  if [[ ! -e arch.fcm ]] ; then
412    echo "architecture file : << arch.fcm >> is missing, exit now...."
413    exit
414  fi
415
416  if [[ -e arch.path ]] ; then
417    source arch.path
418  else
419    echo "architecture file : << arch.path >> is missing, exit now...."
420    exit
421  fi
422
423  if [[ -e arch.env ]] ; then
424    source arch.env
425  fi
426fi
427
428# set compiler flags
429FFLAGS="%BASE_FFLAGS"
430LD_FFLAGS="%BASE_LD"
431CPP_KEY="%FPP_DEF"
432if [ "$ISPROD" = true ] ; then
433    CPP_KEY="$CPP_KEY %FPP_DEF_PROD"
434fi
435
436# set compiler flags for optimisation
437FFLAGS=${FFLAGS}" "$compile_flags
438LD_FFLAGS=${LD_FFLAGS}" "$compile_flags
439
440# set compiler flags for parallelism
441echo "parallel_mode = "${parallel_mode}
442
443if [[ "$parallel_mode" == "mpi" ]] || [[ "$parallel_mode" == "MPI" ]] ; then
444    FFLAGS="${FFLAGS} %MPI_FFLAGS"
445    LD_FFLAGS="%MPI_LD ${LD_FFLAGS}"
446    CPP_KEY="CPP_PARA ${CPP_KEY}"
447elif [[ "$parallel_mode" == "omp" ]] || [[ "$parallel_mode" == "OMP" ]] ; then
448    FFLAGS="${FFLAGS} %OMP_FFLAGS"
449    LD_FFLAGS="%OMP_LD ${LD_FFLAGS}"
450    CPP_KEY="CPP_OMP CPP_PARA ${CPP_KEY}"
451elif [[ "$parallel_mode" == "mpi_omp" ]] || [[ "$parallel_mode" == "MPI_OMP" ]] ; then
452    FFLAGS="${FFLAGS} %MPI_FFLAGS %OMP_FFLAGS"
453    LD_FFLAGS="%MPI_LD %OMP_LD ${LD_FFLAGS}"
454    CPP_KEY="CPP_OMP CPP_PARA ${CPP_KEY}"
455elif [[ "$parallel_mode" == "none" ]] || [[ "$parallel_mode" == "NONE" ]] || [[ "$parallel_mode" == "seq" ]] ; then
456    echo "Compiling for sequential mode"
457else
458    echo "This option for parallel_mode is not implemeted. Choose between mpi, omp, mpi_omp and none."
459    exit
460fi
461
462#
463# Create some temporary variable to which we add as needed
464#
465INCDIR="$NETCDF_INCDIR $IOIPSL_INCDIR"
466LIBDIR="$NETCDF_LIBDIR $NETCDF_LIB $IOIPSL_LIBDIR $IOIPSL_LIB"
467
468# Do we need to link with XIOS
469#
470if [[ "$xios" == "TRUE" ]] ; then
471    CPP_KEY="XIOS ${CPP_KEY}"
472    INCDIR="${INCDIR} $XIOS_INCDIR"
473    LIBDIR="${LIBDIR} $XIOS_LIBDIR $XIOS_LIB"
474fi
475
476# Determine if also need to compile the OASIS driver. This is only the case if the
477# path for the libraries is provided and exists
478if [ -n "$OASIS_LIBDIR" ] ; then
479    is_oasisdriver_opt=TRUE
480    # Check also if the provided path also exist. If not, delete the option.
481    if [ ! -d ${OASIS_LIBDIR} ]; then
482        is_oasisdriver_opt=FALSE
483    fi
484else
485    is_oasisdriver_opt=FALSE
486fi
487
488# set target
489TARGET=liborchidee.a
490if [[ "$is_driver_opt" == "TRUE" ]] ; then
491    TARGET="liborchidee_ol.a dim2_driver.exe orchideedriver.exe"
492fi
493if [[ "$is_other_opt" == "TRUE" ]] ; then
494    TARGET="${TARGET} teststomate.exe forcesoil.exe testrouting.exe"
495fi
496
497if [[ "$is_oasisdriver_opt" == "TRUE" ]] ; then
498    CPP_KEY="OASIS ${CPP_KEY}"
499    TARGET="${TARGET} driver2oasis.exe orchideeoasis.exe"
500    INCDIR="${INCDIR} ${OASIS_INCDIR}/psmile.MPI1 ${OASIS_INCDIR}/scrip  ${OASIS_INCDIR}/mct"
501    LIBDIR="${LIBDIR} ${OASIS_LIBDIR} -lpsmile.MPI1 -lmct -lmpeu -lscrip"
502    echo "OASIS : ${INCDIR}"
503fi
504
505
506# build config file
507config_fcm="config.fcm"
508rm -f $config_fcm
509touch $config_fcm
510
511echo "%CONFIG_PATH   $config_path"                      >> $config_fcm 
512echo "%ARCH          $arch"                             >> $config_fcm 
513echo "%FFLAGS        $FFLAGS"                           >> $config_fcm 
514echo "%CPP_KEY       $CPP_KEY"                          >> $config_fcm
515echo "%EXEC          $TARGET"                           >> $config_fcm
516echo "%LD_FFLAGS     $LD_FFLAGS"                        >> $config_fcm
517echo "%INCDIR        ${INCDIR}"                         >> $config_fcm
518echo "%LIBDIR        ${LIBDIR}"                         >> $config_fcm
519echo "%EXT_SRC       $ext_src"                          >> $config_fcm
520
521
522# Delete interface module from modipsl/lib directory
523rm -f ../../lib/intersurf.mod
524rm -f ../../lib/sechiba.mod
525
526# Check if compiling is locked
527if [ -f ${config_path}/fcm.bld.lock ] ; then
528    echo "WARNING : build lock file exists"
529    echo "This means that either someone else is compiling this directory right now "
530    echo "or the previous compiling was interrupt abnormally."
531    echo ""
532    echo "Do you whant to remove this file and start compiling? [answer yes/no]" 
533    read answer
534    if [ $answer = "yes" ] || [ $answer = "y" ] ; then
535        rm -f ${config_path}/fcm.bld.lock
536    else
537        echo "Exit now!!!"
538        exit 1
539    fi
540fi
541
542#########################################################################
543# 7. Do the compiling
544fcm build -j $job $full
545err=$?
546
547# Check error message from fcm build
548if [ $err != 0 ] ; then 
549  # ERROR IN COMPILING
550  echo ERROR IN COMPILING ORCHIDEE : $err 
551  exit 1
552fi 
553
554# Create link to bin, lib and inc folders directly in ORCHIDEE folder
555# Use rel_config_path to create link with the relative path
556rm -f bin ; rm -f lib; rm -f inc
557ln -s ${rel_config_path}/bin bin
558ln -s ${rel_config_path}/lib lib
559ln -s ${rel_config_path}/inc inc
560 
561# Copy into modipsl/lib directory libraries and interface module needed by LMDZ
562cp ${config_path}/lib/lib*a          ../../lib/.
563cp ${config_path}/inc/intersurf.mod  ../../lib/.
564cp ${config_path}/inc/sechiba.mod    ../../lib/.
565
566# Move created executables to modipsl/bin directory
567if [ -f ${config_path}/bin/dim2_driver.exe ]    ; then cp -f ${config_path}/bin/dim2_driver.exe ../../bin/orchidee_ol ; fi
568if [ -f ${config_path}/bin/teststomate.exe ]    ; then cp -f ${config_path}/bin/teststomate.exe ../../bin/teststomate ; fi
569if [ -f ${config_path}/bin/forcesoil.exe ]      ; then cp -f ${config_path}/bin/forcesoil.exe ../../bin/forcesoil ; fi
570if [ -f ${config_path}/bin/orchideedriver.exe ] ; then cp -f ${config_path}/bin/orchideedriver.exe ../../bin/orchideedriver ; fi
571if [ -f ${config_path}/bin/testrouting.exe ]    ; then cp -f ${config_path}/bin/testrouting.exe ../../bin/testrouting ; fi
572if [ -f ${config_path}/bin/driver2oasis.exe ]   ; then cp -f ${config_path}/bin/driver2oasis.exe ../../bin/driver2oasis ; fi
573if [ -f ${config_path}/bin/orchideeoasis.exe ]  ; then cp -f ${config_path}/bin/orchideeoasis.exe ../../bin/orchideeoasis ; fi
574
575if [[ "$is_unittest_opt" == "TRUE" ]] ; then
576    cd src_tests
577    make clean && make tests.x
578    ./tests.x
579fi
Note: See TracBrowser for help on using the repository browser.