source: trunk/environments/g4py/tools/g4package/g4pack @ 1337

Last change on this file since 1337 was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

  • Property svn:executable set to *
File size: 6.2 KB
Line 
1#! /bin/bash -
2# ======================================================================
3#  A script for Geant4 packaging
4#
5#  Version 2.2 Dec 2008
6#
7# ======================================================================
8export LANG=C
9
10IFS='
11         '
12
13PATH=/bin:/usr/bin
14export PATH
15
16# ======================================================================
17# testing the echo features
18# ======================================================================
19if `(echo "testing\c"; echo 1,2,3) | grep c > /dev/null` ; then
20  if `(echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn > /dev/null`; then
21    ac_n= ac_c='
22' ac_t='        '
23  else
24    ac_n=-n ac_c= ac_t=
25  fi
26else
27  ac_n= ac_c='\c' ac_t=
28fi
29
30# ======================================================================
31# help message
32# ======================================================================
33show_help() {
34cat <<EOF
35Usage: g4pack [<options>]
36
37Options:
38     --help, -h                  print this message
39
40     --with-g4system=G4SYSTEM    G4SYSTEM [\$G4SYSTEM]
41     --with-g4-dir=DIR           Geant4 dir [\$G4INSTALL]
42     --with-clhep-dir=DIR        CLHEP dir [\$CLHEP_BASE_DIR]
43
44     --with-lib-dir=DIR          G4 static granular libdir [lib]
45     --with-glib-dir=DIR         G4 global static libdir [glib]
46     --with-slib-dir=DIR         G4 global shared libdir [slib]
47
48     --with-install-dir=DIR      install path (MacOSX only)
49
50   Enable/disable options: prefix with either --enable- or --disable-
51       lib                       packing static granular lib [disable]
52       glib                      packing global static lib [enable]
53       slib                      packing global shared lib [enable]
54
55EOF
56}
57
58# ======================================================================
59# rebuild shared library (MacOSX only)
60# ======================================================================
61rebuild_sharedlib() {
62mkdir tmp
63mv lib*.dylib ./tmp
64
65liblist=lib*.a
66
67for lib in $liblist
68do
69  slibname=${lib%.*}.dylib
70
71  #check linked libraries...
72  extliblist=`otool -L tmp/$slibname | grep -v /usr/lib | grep -v $slibname | awk '{print $1}'`
73
74  ar x $lib
75  g++ -dynamiclib -single_module -undefined dynamic_lookup \
76      -install_name $install_dir/lib/$slibname \
77      $extliblist -o $slibname *.o
78  rm *.o __.SYMDEF
79
80  chmod 755 $slibname
81done
82
83rm -r tmp
84}
85
86
87# ======================================================================
88# main
89# ======================================================================
90# default values
91g4system=${G4SYSTEM:-XXX}
92g4dir=${G4INSTALL:-/zzz}
93clhepdir=${CLHEP_BASE_DIR:-/zzz}
94
95install_dir=/zzz
96
97libdir=lib
98glibdir=glib
99slibdir=slib
100
101enable_lib=0
102enable_glib=1
103enable_slib=1
104
105# parsing options
106while test $# -gt 0
107do
108  case $1 in
109    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
110    *) optarg= ;;
111  esac
112
113  case $1 in
114    --help|-h) show_help;  exit 0 ;;
115    # ---------------------------------------------------------------
116    --with-g4system=*)        g4system=$optarg     ;;
117    --with-g4-dir=*)          g4dir=$optarg        ;;
118    --with-clhep-dir=*)       clhepdir=$optarg     ;;
119    --with-lib-dir=*)         libdir=$optarg       ;;
120    --with-glib-dir=*)        glibdir=$optarg      ;;
121    --with-slib-dir=*)        slibdir=$optarg      ;;
122    --with-install-dir=*)     install_dir=$optarg  ;;
123    # ---------------------------------------------------------------
124    --enable-lib )            enable_lib=1         ;;
125    --disable-lib )           enable_lib=0         ;;
126    --enable-glib )           enable_glib=1        ;;
127    --disable-glib )          enable_glib=0        ;;
128    --enable-slib )           enable_slib=1        ;;
129    --disable-slib )          enable_slib=0        ;;
130    # ---------------------------------------------------------------
131    -*)
132      echo "Unrecognized option: $1"
133      exit -1
134      ;;
135    *)
136      echo "Invalid argument: $1"
137      exit -1
138      ;;
139  esac
140  shift
141done
142
143# check something
144shlib=so
145if [ $g4system = Darwin-g++ ]; then
146  shlib=dylib
147fi
148
149echo $ac_n "Checking for G4 dir ...$ac_c"
150if [ ! -d $g4dir ]; then
151  echo "no"
152  echo "### $g4dir does not exist."
153  exit -1
154fi
155echo $g4dir
156
157echo $ac_n "Checking for CLHEP dir ...$ac_c"
158if [ ! -d $clhepdir ]; then
159  echo "no"
160  echo "### $clhepdir does not exist."
161  exit -1
162fi
163echo $clhepdir
164
165echo $ac_n "Checking for G4SYSTEM ...$ac_c"
166if [ ! -e $g4dir/config/sys/$g4system.gmk ]; then
167  echo "no"
168  echo "### $g4system is invalid."
169  exit -1
170fi
171echo $g4system
172
173if [ $enable_lib = 1 ]; then
174  echo $ac_n "Checking for lib dir ...$ac_c"
175  if [ ! -d $g4dir/$libdir ]; then
176    echo "no"
177    echo "### $libdir is invalid."
178    exit -1
179  fi
180  echo $libdir
181fi
182
183if [ $enable_glib = 1 ]; then
184  echo $ac_n "Checking for glib dir ...$ac_c"
185  if [ ! -d $g4dir/$glibdir ]; then
186    echo "no"
187    echo "### $glibdir is invalid."
188    exit -1
189  fi
190  echo $glibdir
191fi
192
193if [ $enable_slib = 1 ]; then
194  echo $ac_n "Checking for slib dir ...$ac_c"
195  if [ ! -d $g4dir/$slibdir ]; then
196    echo "no"
197    echo "### $slibdir is invalid."
198    exit -1
199  fi
200  echo $slibdir
201fi
202
203# ----------------------------------------------------------------------
204# ok go ahead
205
206echo ""
207echo "Packing ..."
208
209g4packdir=g4
210
211if [ -d $g4packdir ]; then
212  echo "### $g4packdir/ already exist. Please move it."
213  exit -1
214fi
215
216mkdir -p $g4packdir
217mkdir -p $g4packdir/include
218mkdir -p $g4packdir/lib
219
220# CLHEP
221cp -pR $clhepdir/include/CLHEP  $g4packdir/include/
222cp -pR $clhepdir/lib/libCLHEP-[12]* $g4packdir/lib/
223
224# Geant4
225cp -pR $g4dir/include $g4packdir/include/
226mv $g4packdir/include/include $g4packdir/include/Geant4
227rm $g4packdir/include/Geant4/README
228
229if [ $enable_glib = 1 ]; then
230  cp -pR $g4dir/$glibdir/$g4system/lib* $g4packdir/lib
231fi
232
233if [ $enable_slib = 1 ]; then
234  cp -pR $g4dir/$slibdir/$g4system/lib* $g4packdir/lib
235
236  if [ $g4system = Darwin-g++ ]; then
237    if [ $enable_glib = 0 ]; then
238      echo "### gobal static library is required for the operation."
239      exit -1
240    fi
241    pushd $g4packdir/lib > /dev/null 2>&1
242    rebuild_sharedlib
243    popd > /dev/null 2>&1
244  fi
245fi
246
247if [ $enable_lib = 1 ]; then
248  cp -pR $g4dir/$libdir/$g4system/lib* $g4packdir/lib
249fi
250
251# CLHEP links
252pushd $g4packdir/lib > /dev/null 2>&1
253ln -s libCLHEP-*.a libCLHEP.a
254ln -s libCLHEP-*.$shlib libCLHEP.$shlib
255popd > /dev/null 2>&1
256
257exit 0
258
Note: See TracBrowser for help on using the repository browser.