#!/bin/sh #----------------------------------------------------------------------- # sh config query script for Geant4 @Geant4_VERSION@ on UNIX platforms # Autogenerated by CMake DO NOT EDIT #----------------------------------------------------------------------- #----------------------------------------------------------------------- # Determine location of this script. # NB, we don't always use the result of this calculation, but it does not # hurt to do it. Only possible error is if too long a chain of symbolic # links are used to point to the physical script. # # Resolve symbolic links to script - we should end up with a physical file script="$0" calldir=`pwd` loopcount="" while [ "x`readlink $script`" != "x" ] ; do preloc=`dirname $script` script=`readlink $script` if [ ${script##/} = ${script##~} ] ; then # The symbolic link was relative... script="$preloc/$script" fi loopcount="l$loopcount" if [ ${#loopcount} -gt 10 ] ; then echo "error: more than 10 symbolic links to geant4-config traversed." exit 1 fi done # If we still have a relative path, then it must be relative to the # calling dir. NB we don't attempt to resolve directory symbolic # links or remove '.' or '..' if [ ${script##/} = ${script##~} ] ; then script="$calldir/$script" fi #----------------------------------------------------------------------- # Finally, grab the directory in which the script is located # Used below should we be setup to be relocatable. scriptloc=`dirname $script` #----------------------------------------------------------------------- # Expansion and calculation of all needed variables # prefix=@GEANT4_CONFIG_INSTALL_PREFIX@ exec_prefix=@GEANT4_CONFIG_EXECPREFIX@ libdir=@GEANT4_CONFIG_LIBDIR@ includedirs="@GEANT4_CONFIG_INCLUDE_DIRS@" name="geant4" description="Geant4 toolkit for the simulation of the passage of particles through matter" version="@Geant4_VERSION@" # 'Requires' that may affect cflags and libs. clhep_config_exe=@CLHEP_CONFIG_EXECUTABLE@ # Basic flags and libraries for visualization vis_cflags="-DG4UI_USE_TCSH" vis_libs="-lG4Tree \ -lG4FR \ -lG4GMocren \ -lG4visHepRep \ -lG4RayTracer \ -lG4VRML \ -lG4vis_management \ -lG4modeling" #----------------------------------------------------------------------- # Core setup... # cflags="@CMAKE_CXX_FLAGS@" feature_list="" # - multithreading have_multithreading="@G4_BUILTWITH_MULTITHREADING@" feature_list="${feature_list} multithreading[${have_multithreading}]" if test "x${have_multithreading}" = "xyes" ; then cflags="${cflags} -DG4MULTITHREADED" fi # - Includes and Libs for g4incdir in ${includedirs} ; do cflags="${cflags} -I${g4incdir}" done libs="-lG4interfaces \ -lG4persistency \ -lG4analysis \ -lG4error_propagation \ -lG4readout \ -lG4physicslists \ -lG4run \ -lG4event \ -lG4tracking \ -lG4parmodels \ -lG4processes \ -lG4digits_hits \ -lG4track \ -lG4particles \ -lG4geometry \ -lG4materials \ -lG4graphics_reps \ -lG4intercoms \ -lG4global" #----------------------------------------------------------------------- # - Extra optional features that were enabled. # - ALL geant4_uses_opengl="no" geant4_uses_x11="no" # - CLHEP have_clhep="@G4_BUILTWITH_CLHEP@" feature_list="${feature_list} clhep[${have_clhep}]" if test "x${have_clhep}" = "xno" ; then cflags="${cflags} `${clhep_config_exe} --include`" libs="${libs} `${clhep_config_exe} --libs`" fi if test "x${have_clhep}" = "xyes" ; then libs="${libs} -lG4clhep" fi # - EXPAT have_expat="@G4_BUILTWITH_EXPAT@" feature_list="${feature_list} expat[${have_expat}]" if test "x${have_expat}" = "xyes" ; then libs="${libs} -lG4expat" fi # - ZLIB have_zlib="@G4_BUILTWITH_ZLIB@" feature_list="${feature_list} zlib[${have_zlib}]" if test "x${have_zlib}" = "xyes" ; then libs="${libs} -lG4zlib" fi # - GDML have_gdml="@G4_BUILTWITH_GDML@" feature_list="${feature_list} gdml[${have_gdml}]" if test "x${have_gdml}" = "xyes" ; then cflags="${cflags} @G4_XERCESC_CFLAGS@" fi # - USolids have_usolids="@G4_BUILTWITH_USOLIDS@" feature_list="${feature_list} usolids[${have_usolids}]" if test "x${have_usolids}" = "xyes" ; then cflags="-DG4GEOM_USE_USOLIDS ${cflags}" fi # - G3toG4 have_g3tog4="@G4_BUILTWITH_G3TOG4@" feature_list="${feature_list} g3tog4[${have_g3tog4}]" if test "x${have_g3tog4}" = "xyes" ; then libs="-lG3toG4 ${libs}" fi # - Qt have_qt="@G4_BUILTWITH_QT@" feature_list="${feature_list} qt[${have_qt}]" if test "x${have_qt}" = "xyes" ; then vis_cflags="${vis_cflags} \ -DG4INTY_USE_QT -DG4UI_USE_QT -DG4VIS_USE_OPENGLQT @G4_QT_CFLAGS@" geant4_uses_opengl="yes" fi # - Motif have_motif="@G4_BUILTWITH_MOTIF@" feature_list="${feature_list} motif[${have_motif}]" if test "x${have_motif}" = "xyes" ; then vis_cflags="${vis_cflags} -DG4UI_USE_XM -DG4VIS_USE_OPENGLXM" geant4_uses_x11="yes" geant4_uses_opengl="yes" fi # - RayTracerX11 have_raytracerx11="@G4_BUILTWITH_RAYTRACERX11@" feature_list="${feature_list} raytracer-x11[${have_raytracerx11}]" if test "x${have_raytracerx11}" = "xyes" ; then vis_cflags="${vis_cflags} -DG4VIS_USE_RAYTRACERX" geant4_uses_x11="yes" fi # - OpenGL with X11 have_openglx11="@G4_BUILTWITH_OPENGLX11@" feature_list="${feature_list} opengl-x11[${have_openglx11}]" if test "x${have_openglx11}" = "xyes" ; then vis_cflags="${vis_cflags} -DG4VIS_USE_OPENGLX" geant4_uses_opengl="yes" geant4_uses_x11="yes" fi # - OpenInventor # Whilst it *is* an Xt based driver, don't *think* Xt or X11 appear # in the public interface, nor do the Inventor headers... have_openinventor="@G4_BUILTWITH_INVENTOR@" feature_list="${feature_list} openinventor[${have_openinventor}]" if test "x${have_openinventor}" = "xyes" ; then vis_cflags="${vis_cflags} -DG4INTY_USE_XT -DG4VIS_USE_OI -DG4VIS_USE_OIX" vis_libs="-lG4OpenInventor ${vis_libs}" fi # - If we have any OpenGL based feature, then we need to add in the # OpenGL global define and the G4OpenGL/G4gl2ps libraries. if test "x${geant4_uses_opengl}" = "xyes" ; then vis_cflags="-DG4VIS_USE_OPENGL ${vis_cflags}" vis_libs="-lG4OpenGL -lG4gl2ps ${vis_libs}" fi # - If we have any X11 based feature, then we need the INTY_XT define and # *may* need the X11 includes if test "x${geant4_uses_x11}" = "xyes" ; then vis_cflags="-DG4INTY_USE_XT @G4_X11_CFLAGS@ ${vis_cflags}" fi #----------------------------------------------------------------------- # Datasets # - List creation for sh compatibility, see: # https://wiki.ubuntu.com/DashAsBinSh # Note however that the guide in the link uses the GNU awk extension # 'length' to find the number of elements in the array. This will fail # on other awk implementations. Use standard feature of split function # returning number of elements. dataset_url="@GEANT4_DATASETS_URL@" dataset_timeout="@GEANT4_INSTALL_DATA_TIMEOUT@" dataset_list=$(awk 'BEGIN { n = split( "@GEANT4_CONFIG_DATASET_DESCRIPTIONS@", array, ";"); for (i=1;i<=n;i++) { print array[i]; } }') #----------------------------------------------------------------------- # function print_datasets # print dataset information with one line per dataset and each # line in the format # print_datasets() { for ds in ${dataset_list} ; do dataset_name=$(echo $ds | cut -d "|" -f1) dataset_envvar=$(echo $ds | cut -d "|" -f2) dataset_path=$(echo $ds | cut -d "|" -f3) echo ${dataset_name} ${dataset_envvar} ${dataset_path} done exit 0 } #----------------------------------------------------------------------- # function check_datasets # Check whether datasets exist as directories at the expected # location. Print dataset name, path and install status # check_datasets() { for ds in ${dataset_list} ; do dataset_name=$(echo $ds | cut -d "|" -f1) dataset_path=$(echo $ds | cut -d "|" -f3) dataset_status="NOTFOUND" if test -d ${dataset_path} ; then dataset_status="INSTALLED" fi echo ${dataset_name} ${dataset_status} ${dataset_path} done } #----------------------------------------------------------------------- # function install_datasets # Download and install datasets if they are not already installed # install_datasets() { G4CURL=$(which curl) if test "x${G4CURL}" = "x" ; then echo "- error: no curl executable found" exit 1 fi if test ! -x "${G4CURL}" ; then echo "- error: curl '${G4CURL}' is not executable" exit 1 fi G4OPENSSL=$(which openssl) if test "x${G4OPENSSL}" = "x" ; then echo "- error: no openssl executable found" exit 1 fi if test ! -x "${G4OPENSSL}" ; then echo "- error: openssl '${G4OPENSSL}' is not executable" exit 1 fi G4TAR=$(which tar) if test "x${G4TAR}" = "x" ; then echo "- error: no tar executable found" exit 1 fi if test ! -x "${G4TAR}" ; then echo "- error: tar '${G4TAR}' is not executable" exit 1 fi datasets_to_install='' for ds in ${dataset_list} ; do dataset_path=$(echo $ds | cut -d "|" -f3) if test ! -d ${dataset_path} ; then datasets_to_install="${datasets_to_install} ${ds}" fi done dataset_install="ok" if test "x${datasets_to_install}" != "x" ; then # - Create download cache g4downloaddir=$(mktemp -d -t g4dlcXXXXXXXXXX) if test -d ${g4downloaddir} ; then echo "+ created download cache" else echo "- error : failed to create '${g4downloaddir}'" dataset_install="fail" break fi # - Download/install loop for ds in ${datasets_to_install} ; do # Create base path (repetitive) dataset_path=$(echo $ds | cut -d "|" -f3) mkdir -p $(dirname ${dataset_path}) if [ "$?" != "0" ] || [ ! -w $(dirname ${dataset_path}) ] ; then echo "- error : failed to create base directory '$(dirname ${dataset_path})'" dataset_install="fail" break fi # - Download bundle to cache dataset_file=$(echo $ds | cut -d "|" -f4) echo "+ downloading ${dataset_file}" ${G4CURL} -f -m ${dataset_timeout} -o ${g4downloaddir}/${dataset_file} ${dataset_url}/${dataset_file} curl_status="$?" if [ "$curl_status" != "0" ] ; then echo "- download of '${dataset_file}' failed : CURL error $?" dataset_install="fail" break fi # Validate bundle hash (basic) dataset_md5=$(echo $ds | cut -d "|" -f5) actual_md5=$(${G4OPENSSL} dgst -md5 ${g4downloaddir}/${dataset_file} | cut -d" " -f2) echo "+ checking md5 of ${dataset_file}" if [ "${actual_md5}" != "${dataset_md5}" ] ; then echo "- md5 mismatch for '${dataset_file}' : ${actual_md5}(actual) != ${dataset_md5}(expected)" dataset_install="fail" break fi # Unpack bundle echo "+ untar ${dataset_file}" ${G4TAR} -C ${g4downloaddir} -xf ${g4downloaddir}/${dataset_file} tar_status="$?" if [ "$tar_status" != "0" ] ; then echo "- untar of '${dataset_file}' failed : tar error $?" dataset_install="fail" break fi # Install bundle echo "+ installing $(basename ${dataset_path})" cp -R ${g4downloaddir}/$(basename ${dataset_path}) $(dirname ${dataset_path}) cp_status="$?" if [ "$cp_status" != "0" ] ; then echo "- copy of '$(basename ${dataset_path})' failed : cp error $?" # Extra task - remove anything copied... rm -Rf ${dataset_path} dataset_install="fail" break fi done # - Clean up download cache rm -Rf ${g4downloaddir} if test -d ${g4downloaddir} ; then echo "- failed to remove '${g4downloaddir}'" else echo "+ cleaned download cache" fi fi if [ "${dataset_install}" = "ok" ] ; then echo "+ all datasets installed" exit 0 else echo "- dataset installation failed" exit 1 fi exit 1 } #----------------------------------------------------------------------- # function help # print help on available command line arguments and enabled # and disabled features of the toolkit # help() { cat<