New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
ins_make in trunk/NVTK/INSTALL/MODIPSL_FILES – NEMO

source: trunk/NVTK/INSTALL/MODIPSL_FILES/ins_make @ 1155

Last change on this file since 1155 was 1155, checked in by ctlod, 16 years ago

add svn Id

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 4.5 KB
Line 
1#!/bin/ksh
2# $Id$
3#---------------------------------------------------------------------
4#- Installation of Makefiles according to an environment
5#---------------------------------------------------------------------
6function ins_make_Usage
7{
8echo "
9ins_make install the Makefile in the directories
10
11Usage :
12  ${b_n} [-h] [-v] [-d] [-p r] [-t h] [-w w] [-m m]
13
14Options :
15  -h   : help
16  -v   : verbose mode
17  -d   : debug mode
18  -p p : int and real precision I4R4/I4R8/I8R8/4/8
19  -t h : target host_name
20  -w w : directory Where to install the Makefile (recursive)
21  -m m : mpi context choosen for the coupling MPI1/MPI2
22
23Defaults :
24   -t local_host -p I4R8
25
26Example for remote host compilation :
27  ins_make -t sx8brodie
28"
29}
30#-  dirname and  basename
31d_n=${0%/*}; b_n=${0##*/};
32#- Retrieving and validation of the options
33x_v='silencious'; x_d='normal'; x_p="??"; x_t="??"; x_w="??"; x_m='??';
34while getopts :hvdp:m:t:w: V
35  do
36   case ${V} in
37    (h)  ins_make_Usage; exit 0;;
38    (v)  x_v='verbose';;
39    (d)  x_d='debug';;
40    (p)  x_p=${OPTARG};;
41    (t)  x_t=${OPTARG};;
42    (w)  x_w=${OPTARG};;
43    (m)  x_m=${OPTARG};;
44    (:)  echo ${b_n}" : -"${OPTARG}" option : missing value" 1>&2;
45         exit 2;;
46    (\?) echo ${b_n}" : -"${OPTARG}" option : not supported" 1>&2;
47         exit 2;;
48   esac
49  done
50shift $(($OPTIND-1));
51#-
52# Treatment of the options
53#-
54# Default INTEGER and REAL precision
55case ${x_p} in
56 ( I4R4 | 4 )  x_p='I4R4'; w_ip='4'; w_rp='4';;
57 ( I4R8 | ?? ) x_p='I4R8'; w_ip='4'; w_rp='8';;
58 ( I8R8 | 8 )  x_p='I8R8'; w_ip='8'; w_rp='8';;
59 (*)
60   echo 'Invalid precision ' 1>&2;
61   echo ${x_p}' (must be I4R4, I4R8, I8R8, 4 or 8)' 1>&2;
62   exit 1;;
63esac
64#-
65# Target_Host Name
66[[ ${x_t} = '??' ]] && \
67 { x_t=$(${d_n}/w_i_h);
68   { [[ ${?} != 0 ]] && \
69      { echo "Bad installation : w_i_h/uname unreachable" 1>&2;
70        exit 1; }; } || \
71     [[ ${x_t} = "Unknown" ]] && \
72      { echo "Local_Host not supported" 1>&2; exit 1; }; }
73#-
74MKTG=${d_n}'/AA_make.gdef'
75[[ ! -f "${MKTG}" ]] && { echo "${MKTG} unreachable ..."; exit 3; }
76#-
77W_XX=$(sed -n -e "s/^#-Q-  *\([^ ]*\).*$/\1/p" ${MKTG} | \
78       sort -u | sed -e "/${x_t}/!d");
79[[ '\?'"${W_XX}" != '\?'${x_t} ]] && \
80  { echo "Target_Host  "${x_t}"  not supported" 1>&2; exit 1; }
81#-
82case ${x_m} in
83 ( mpi1 | mpi2 | MPI1 | MPI2 | ?? );;
84 (*) echo "MPI context "${x_m}" not supported" 1>&2; exit 1;;
85esac
86#-
87[[ ${x_v} = 'verbose' ]] && \
88 { echo "";
89   echo '--- Mode         : '${x_v};
90   echo '--- Compilation  : '${x_d};
91   echo '--- Precision    : '${x_p};
92   echo '--- Target       : '${x_t};
93   echo '--- MPI context  : '${x_m}; }
94#-
95if [ '\?'${x_w} = '\?' ]; then
96l_rep=$(find ${d_n}/.. -name AA_make -print)
97else
98l_rep=$(find ${d_n}/../*/${x_w} -name AA_make -print)
99fi
100#-
101W_OS=${x_t};
102echo " ";
103echo "Installation of makefiles for $W_OS";
104echo " ";
105#-
106for i in ${l_rep}
107do
108  j=${i%/AA_make};
109  echo "Installation in ${j}";
110  MKTL="${j}"'/AA_make.ldef';
111  [[ ! -f "${MKTL}" ]] && { echo "${MKTL} unreachable ..."; exit 3; }
112  MKTR="${j}"'/AA_make';
113  cat ${MKTL} ${MKTG} ${MKTR} > mk1.$$;
114  W_PR='#-Q- '; W_XX=${W_PR}${x_t};
115  sed -e "/^${W_XX} */ s///" -e "/^${W_PR}/d" mk1.$$ > mk2.$$;
116#-
117# Default INTEGER and REAL precision
118  W_PR='#-P- '; W_XX=${W_PR}${x_p};
119  sed -e "/^${W_XX} */ s///" -e "/^${W_PR}/d" mk2.$$ > mk1.$$;
120#-
121# Handle the precision module "defprec.f90" in "IOIPSL/src"
122  [[ '!!'${j##*/modeles} = '!!/IOIPSL/src' ]] && \
123   { [[ ${x_v} = 'verbose' ]] && W_XX='-v' || W_XX="";
124     ${d_n}/ins_m_prec ${W_XX} -i ${w_ip} -r ${w_rp}; r_c=${?};
125     unset w_ip w_rp;
126     [[ ${r_c} != 0 ]] && exit ${r_c}; }
127#-
128# Debug
129  W_PR='#-D- ';
130  [[ ${x_d} = 'debug' ]] && W_XX=${W_PR}'MD' || W_XX=${W_PR}'MN';
131  sed -e "/^${W_XX} */ s///" -e "/^${W_PR}/d" mk1.$$ > mk2.$$;
132#-
133# Retrieve the path of the directory
134  mk_dir=$(cd ${j};/bin/pwd;)
135  W_XX='MAKE_DIR ='
136# Update the value
137  sed -e "s!^${W_XX}.*!${W_XX} ${mk_dir}!" mk2.$$ > mk1.$$
138  unset mk_dir;
139#-
140# Choice of mpi library for the coupling
141  W_XX='LIB_MPI ='; W_XX_BIS='LIB_MPI_BIS =';
142  case ${x_m} in
143   ( mpi1 | MPI1 )
144    lib_mpi='MPI1'; lib_mpi_bis='MPI1';
145    sed -e "s!^${W_XX}.*!${W_XX} ${lib_mpi}!" \
146        -e "s!^${W_XX_BIS}.*!${W_XX_BIS} ${lib_mpi_bis}!" \
147      mk1.$$ > ${j}/Makefile;;
148   ( mpi2 | MPI2 )
149    lib_mpi='MPI2'; lib_mpi_bis='';
150    sed -e "s!^${W_XX}.*!${W_XX} ${lib_mpi}!" \
151        -e "s!^${W_XX_BIS}.*!${W_XX_BIS} ${lib_mpi_bis}!" \
152      mk1.$$ > ${j}/Makefile;;
153   (??) 
154    cp mk1.$$ ${j}/Makefile;;
155   (*) ;;
156  esac
157  unset lib_mpi lib_mpi_bis;
158done
159#-
160echo "";
161unset W_XX W_XX_BIS; rm -f mk1.$$ mk2.$$;
162#-
163exit 0;
Note: See TracBrowser for help on using the repository browser.