File indexing completed on 2026-09-14 08:26:15
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 script="$0"
0016 calldir=`pwd`
0017 loopcount=""
0018
0019 while [ "x`readlink $script`" != "x" ] ; do
0020 preloc=`dirname $script`
0021 script=`readlink $script`
0022
0023 if [ ${script
0024
0025 script="$preloc/$script"
0026 fi
0027 loopcount="l$loopcount"
0028
0029 if [ ${
0030 echo "error: more than 10 symbolic links to geant4-config traversed."
0031 exit 1
0032 fi
0033 done
0034
0035
0036
0037
0038 if [ ${script
0039 script="$calldir/$script"
0040 fi
0041
0042
0043
0044
0045 scriptloc=`dirname $script`
0046
0047
0048
0049
0050 prefix=@GEANT4_CONFIG_INSTALL_PREFIX@
0051
0052 prefix=`cd "$prefix" 2>/dev/null; pwd -P`
0053
0054 exec_prefix=@GEANT4_CONFIG_EXECPREFIX@
0055 libdir=@GEANT4_CONFIG_LIBDIR@
0056 includedirs="@GEANT4_CONFIG_INCLUDE_DIRS@"
0057
0058 name="geant4"
0059 description="Geant4 toolkit for the simulation of the passage of particles through matter"
0060 version="@Geant4_VERSION@"
0061
0062
0063
0064 vis_cflags="-DG4UI_USE_TCSH"
0065
0066 vis_libs="-lG4Tree \
0067 -lG4FR \
0068 -lG4GMocren \
0069 -lG4RayTracer \
0070 -lG4VRML \
0071 -lG4ToolsSG \
0072 -lG4vis_management \
0073 -lG4modeling"
0074
0075
0076
0077
0078 cflags="@CMAKE_CXX_FLAGS@ @GEANT4_CXXSTD_FLAGS@"
0079 feature_list=""
0080
0081
0082 geant4_cxx_std="@CMAKE_CXX_STANDARD@"
0083
0084
0085 have_staticlibs="@G4_BUILTWITH_STATICLIBS@"
0086 feature_list="${feature_list} staticlibs[${have_staticlibs}]"
0087
0088
0089
0090 have_multithreading="@G4_BUILTWITH_MULTITHREADING@"
0091 feature_list="${feature_list} multithreading[${have_multithreading}]"
0092 if test "x${have_multithreading}" = "xyes" ; then
0093 geant4_tls_model="@GEANT4_BUILD_TLS_MODEL@"
0094 if test "x${geant4_tls_model}" = "xauto" ; then
0095 geant4_tls_model=""
0096 fi
0097 else
0098 geant4_tls_model=""
0099 fi
0100
0101
0102 have_smartstack="@G4_BUILTWITH_SMARTSTACK@"
0103 feature_list="${feature_list} smartstack[${have_smartstack}]"
0104 if test "x${have_smartstack}" = "xyes" ; then
0105 cflags="-DG4_USESMARTSTACK ${cflags}"
0106 fi
0107
0108
0109 have_php_as_hp="@G4_BUILTWITH_PHP_AS_HP@"
0110 feature_list="${feature_list} php_as_hp[${have_php_as_hp}]"
0111
0112
0113 for g4incdir in ${includedirs} ; do
0114 cflags="${cflags} -I${g4incdir}"
0115 done
0116
0117 libs="-lG4interfaces \
0118 -lG4geomtext \
0119 -lG4mctruth \
0120 -lG4analysis \
0121 -lG4error_propagation \
0122 -lG4readout \
0123 -lG4physicslists \
0124 -lG4run \
0125 -lG4event \
0126 -lG4tracking \
0127 -lG4parmodels \
0128 -lG4processes_hadronic \
0129 -lG4processes_core
0130 -lG4digits_hits \
0131 -lG4track \
0132 -lG4particles \
0133 -lG4geometry \
0134 -lG4materials \
0135 -lG4graphics_reps \
0136 -lG4intercoms \
0137 -lG4global \
0138 @G4_LINK_CXX_FILESYSTEM@"
0139
0140
0141
0142
0143 geant4_uses_opengl="no"
0144 geant4_uses_x11="no"
0145
0146
0147 have_clhep="@G4_BUILTWITH_CLHEP@"
0148 feature_list="${feature_list} clhep[${have_clhep}]"
0149
0150 if test "x${have_clhep}" = "xno" ; then
0151 cflags="${cflags} -I@G4_SYSTEM_CLHEP_INCLUDE_DIR@"
0152 libs="${libs} @G4_SYSTEM_CLHEP_LIBRARIES@"
0153 fi
0154 if test "x${have_clhep}" = "xyes" ; then
0155 libs="${libs} -lG4clhep"
0156 fi
0157
0158
0159 have_expat="@G4_BUILTWITH_EXPAT@"
0160 feature_list="${feature_list} expat[${have_expat}]"
0161
0162 if test "x${have_expat}" = "xyes" ; then
0163 libs="${libs} -lG4expat"
0164 fi
0165
0166
0167 have_zlib="@G4_BUILTWITH_ZLIB@"
0168 feature_list="${feature_list} zlib[${have_zlib}]"
0169
0170 if test "x${have_zlib}" = "xyes" ; then
0171 libs="${libs} -lG4zlib"
0172 fi
0173
0174
0175 have_gdml="@G4_BUILTWITH_GDML@"
0176 feature_list="${feature_list} gdml[${have_gdml}]"
0177
0178 if test "x${have_gdml}" = "xyes" ; then
0179 cflags="${cflags} @G4_XERCESC_CFLAGS@"
0180 libs="-lG4gdml ${libs}"
0181 fi
0182
0183
0184 have_ptl="@G4_BUILTWITH_PTL@"
0185 feature_list="${feature_list} ptl[${have_ptl}]"
0186
0187 if test "x${have_ptl}" = "xyes" ; then
0188 libs="${libs} -lG4ptl"
0189 fi
0190
0191
0192 have_usolids="@G4_BUILTWITH_USOLIDS@"
0193 feature_list="${feature_list} usolids[${have_usolids}]"
0194 if test "x${have_usolids}" = "xyes" ; then
0195 cflags="${cflags} @G4_USOLIDS_CFLAGS@"
0196 fi
0197
0198
0199 have_freetype="@G4_BUILTWITH_FREETYPE@"
0200 feature_list="${feature_list} freetype[${have_freetype}]"
0201
0202
0203 have_hdf5="@G4_BUILTWITH_HDF5@"
0204 feature_list="${feature_list} hdf5[${have_hdf5}]"
0205
0206
0207 have_g3tog4="@G4_BUILTWITH_G3TOG4@"
0208 feature_list="${feature_list} g3tog4[${have_g3tog4}]"
0209
0210 if test "x${have_g3tog4}" = "xyes" ; then
0211 libs="-lG3toG4 ${libs}"
0212 fi
0213
0214
0215 have_qt="@G4_BUILTWITH_QT@"
0216 feature_list="${feature_list} qt[${have_qt}]"
0217
0218 if test "x${have_qt}" = "xyes" ; then
0219 vis_cflags="${vis_cflags} \
0220 -DG4UI_USE_QT -DG4VIS_USE_OPENGLQT -DG4VIS_USE_TOOLSSG_QT_GLES @G4_QT_CFLAGS@"
0221 geant4_uses_opengl="yes"
0222 fi
0223
0224
0225 have_motif="@G4_BUILTWITH_MOTIF@"
0226 feature_list="${feature_list} motif[${have_motif}]"
0227
0228 if test "x${have_motif}" = "xyes" ; then
0229 vis_cflags="${vis_cflags} -DG4UI_USE_XM -DG4VIS_USE_OPENGLXM -DG4VIS_USE_TOOLSSG_XT_GLES"
0230 geant4_uses_x11="yes"
0231 geant4_uses_opengl="yes"
0232 fi
0233
0234
0235 have_raytracerx11="@G4_BUILTWITH_RAYTRACERX11@"
0236 feature_list="${feature_list} raytracer-x11[${have_raytracerx11}]"
0237
0238 if test "x${have_raytracerx11}" = "xyes" ; then
0239 vis_cflags="${vis_cflags} -DG4VIS_USE_RAYTRACERX"
0240 geant4_uses_x11="yes"
0241 fi
0242
0243
0244 have_openglx11="@G4_BUILTWITH_OPENGLX11@"
0245 feature_list="${feature_list} opengl-x11[${have_openglx11}]"
0246
0247 if test "x${have_openglx11}" = "xyes" ; then
0248 vis_cflags="${vis_cflags} -DG4VIS_USE_OPENGLX -DG4VIS_USE_TOOLSSG_X11_GLES"
0249 geant4_uses_opengl="yes"
0250 geant4_uses_x11="yes"
0251 fi
0252
0253
0254
0255
0256 have_openinventor="@G4_BUILTWITH_INVENTOR@"
0257 feature_list="${feature_list} openinventor[${have_openinventor}]"
0258
0259 if test "x${have_openinventor}" = "xyes" ; then
0260 vis_cflags="${vis_cflags} -DG4VIS_USE_OI -DG4VIS_USE_OIX"
0261 vis_libs="-lG4OpenInventor ${vis_libs}"
0262 fi
0263
0264
0265 have_vtk="@G4_BUILTWITH_VTK@"
0266 feature_list="${feature_list} vtk[${have_vtk}]"
0267
0268
0269
0270
0271 if test "x${geant4_uses_opengl}" = "xyes" ; then
0272 vis_cflags="-DG4VIS_USE_OPENGL ${vis_cflags}"
0273 vis_libs="-lG4OpenGL ${vis_libs}"
0274 fi
0275
0276
0277 if test "x${geant4_uses_x11}" = "xyes" ; then
0278 vis_cflags="@G4_X11_CFLAGS@ ${vis_cflags}"
0279 fi
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289 dataset_url="@GEANT4_DATASETS_URL@"
0290 dataset_timeout="@GEANT4_INSTALL_DATA_TIMEOUT@"
0291 dataset_list=$(awk 'BEGIN { n = split( "@GEANT4_CONFIG_DATASET_DESCRIPTIONS@", array, ";"); for (i=1;i<=n;i++) { print array[i]; } }')
0292
0293
0294
0295
0296
0297
0298 print_datasets()
0299 {
0300 for ds in ${dataset_list} ; do
0301 dataset_name=$(echo $ds | cut -d "|" -f1)
0302 dataset_envvar=$(echo $ds | cut -d "|" -f2)
0303 dataset_path=$(echo $ds | cut -d "|" -f3)
0304 echo ${dataset_name} ${dataset_envvar} ${dataset_path}
0305 done
0306 exit 0
0307 }
0308
0309
0310
0311
0312
0313
0314 print_datasets_sh()
0315 {
0316 for ds in ${dataset_list} ; do
0317 dataset_envvar=$(echo $ds | cut -d "|" -f2)
0318 dataset_path=$(echo $ds | cut -d "|" -f3)
0319 echo "export ${dataset_envvar}=\"${dataset_path}\""
0320 done
0321 exit 0
0322 }
0323
0324
0325
0326
0327
0328
0329 print_datasets_csh()
0330 {
0331 for ds in ${dataset_list} ; do
0332 dataset_envvar=$(echo $ds | cut -d "|" -f2)
0333 dataset_path=$(echo $ds | cut -d "|" -f3)
0334 echo "setenv ${dataset_envvar} \"${dataset_path}\";"
0335 done
0336 exit 0
0337 }
0338
0339
0340
0341
0342
0343
0344 check_datasets()
0345 {
0346 for ds in ${dataset_list} ; do
0347 dataset_name=$(echo $ds | cut -d "|" -f1)
0348 dataset_path=$(echo $ds | cut -d "|" -f3)
0349 dataset_status="NOTFOUND"
0350 if test -d ${dataset_path} ; then
0351 dataset_status="INSTALLED"
0352 fi
0353 echo ${dataset_name} ${dataset_status} ${dataset_path}
0354 done
0355 }
0356
0357
0358
0359
0360
0361 install_datasets()
0362 {
0363 G4CURL=$(which curl)
0364 if test "x${G4CURL}" = "x" ; then
0365 echo "- error: no curl executable found"
0366 exit 1
0367 fi
0368
0369 G4OPENSSL=$(which openssl)
0370 if test "x${G4OPENSSL}" = "x" ; then
0371 G4MD5SUM=$(which md5sum)
0372 if test "x${G4MD5SUM}" = "x" ; then
0373 echo "- error: no openssl or md5sum executable found"
0374 exit 1
0375 else
0376 G4MD5CMD="${G4MD5SUM}"
0377 fi
0378 else
0379 G4MD5CMD="${G4OPENSSL} dgst -md5 -r"
0380 fi
0381
0382 G4TAR=$(which tar)
0383 if test "x${G4TAR}" = "x" ; then
0384 echo "- error: no tar executable found"
0385 exit 1
0386 fi
0387
0388 datasets_to_install=''
0389 for ds in ${dataset_list} ; do
0390 dataset_path=$(echo $ds | cut -d "|" -f3)
0391 if test ! -d ${dataset_path} ; then
0392 datasets_to_install="${datasets_to_install} ${ds}"
0393 fi
0394 done
0395
0396 dataset_install="ok"
0397 if test "x${datasets_to_install}" != "x" ; then
0398
0399 g4downloaddir=$(mktemp -d -t g4dlcXXXXXXXXXX)
0400 if test -d ${g4downloaddir} ; then
0401 echo "+ created download cache"
0402 else
0403 echo "- error : failed to create '${g4downloaddir}'"
0404 dataset_install="fail"
0405 break
0406 fi
0407
0408
0409 for ds in ${datasets_to_install} ; do
0410
0411 dataset_path=$(echo $ds | cut -d "|" -f3)
0412 mkdir -p $(dirname ${dataset_path})
0413 if [ "$?" != "0" ] || [ ! -w $(dirname ${dataset_path}) ] ; then
0414 echo "- error : failed to create base directory '$(dirname ${dataset_path})'"
0415 dataset_install="fail"
0416 break
0417 fi
0418
0419
0420 dataset_file=$(echo $ds | cut -d "|" -f4)
0421 echo "+ downloading ${dataset_file}"
0422 ${G4CURL} -L -f -m ${dataset_timeout} -o ${g4downloaddir}/${dataset_file} ${dataset_url}/${dataset_file}
0423 curl_status="$?"
0424 if [ "$curl_status" != "0" ] ; then
0425 echo "- download of '${dataset_file}' failed : CURL error $?"
0426 dataset_install="fail"
0427 break
0428 fi
0429
0430
0431 dataset_md5=$(echo $ds | cut -d "|" -f5)
0432 actual_md5=$(${G4MD5CMD} ${g4downloaddir}/${dataset_file} | cut -d ' ' -f1)
0433 echo "+ checking md5 of ${dataset_file}"
0434 if [ "${actual_md5}" != "${dataset_md5}" ] ; then
0435 echo "- md5 mismatch for '${dataset_file}' : ${actual_md5}(actual) != ${dataset_md5}(expected)"
0436 dataset_install="fail"
0437 break
0438 fi
0439
0440
0441 echo "+ untar ${dataset_file}"
0442 ${G4TAR} -C ${g4downloaddir} -xf ${g4downloaddir}/${dataset_file}
0443 tar_status="$?"
0444 if [ "$tar_status" != "0" ] ; then
0445 echo "- untar of '${dataset_file}' failed : tar error $?"
0446 dataset_install="fail"
0447 break
0448 fi
0449
0450
0451 echo "+ installing $(basename ${dataset_path})"
0452 cp -R ${g4downloaddir}/$(basename ${dataset_path}) $(dirname ${dataset_path})
0453 cp_status="$?"
0454 if [ "$cp_status" != "0" ] ; then
0455 echo "- copy of '$(basename ${dataset_path})' failed : cp error $?"
0456
0457 rm -Rf ${dataset_path}
0458 dataset_install="fail"
0459 break
0460 fi
0461 done
0462
0463
0464 rm -Rf ${g4downloaddir}
0465 if test -d ${g4downloaddir} ; then
0466 echo "- failed to remove '${g4downloaddir}'"
0467 else
0468 echo "+ cleaned download cache"
0469 fi
0470 fi
0471
0472 if [ "${dataset_install}" = "ok" ] ; then
0473 echo "+ all datasets installed"
0474 exit 0
0475 else
0476 echo "- dataset installation failed"
0477 exit 1
0478 fi
0479 exit 1
0480 }
0481
0482
0483
0484
0485
0486 list_features()
0487 {
0488 cat<<EOF
0489 Known Features:
0490 EOF
0491 for f in ${feature_list} ; do
0492 echo " $f"
0493 done
0494 exit 0
0495 }
0496
0497
0498
0499
0500
0501
0502 help()
0503 {
0504 cat<<EOF
0505 Usage: geant4-config [OPTION...]
0506 --prefix output installation prefix of Geant4
0507 --version output version for Geant4
0508 --cxxstd C++ Standard compiled against
0509 --tls-model Thread Local Storage model used
0510 --libs output all linker flags
0511 --cflags output all preprocessor
0512 and compiler flags
0513
0514 --libs-without-gui output linker flags without
0515 GUI components
0516 --cflags-without-gui output preprocessor and compiler
0517 flags without GUI components
0518
0519 --has-feature FEATURE output yes if FEATURE is supported,
0520 or no if not supported
0521
0522 --features print list of features
0523
0524 --sh print shell commands required to set environment
0525 variables for Geant4, which can be evaluated in
0526 the calling shell with "eval \$(geant4-config --sh)"
0527
0528 --csh print C shell commands required to set environment
0529 variables for Geant4, which can be evaluated in
0530 the calling shell with "eval \`geant4-config --csh\`"
0531
0532 --datasets output dataset name, environment variable
0533 and path, with one line per dataset
0534
0535 --check-datasets output dataset name, installation status and
0536 expected installation location, with one line
0537 per dataset
0538
0539 --install-datasets download and install any missing datasets,
0540 requires a network connection and for the dataset
0541 path to be user writable
0542
0543 Known Features:
0544 EOF
0545 for f in ${feature_list} ; do
0546 echo " $f"
0547 done
0548
0549 cat<<EOF
0550
0551 Help options:
0552 -?, --help show this help message
0553 --usage display brief usage message
0554 EOF
0555
0556 exit 1
0557 }
0558
0559
0560
0561
0562
0563 usage()
0564 {
0565 cat<<EOF
0566 Usage: geant4-config [--prefix] [--version] [--libs] [--cflags]
0567 EOF
0568 exit 1
0569 }
0570
0571
0572
0573
0574 if test $
0575 usage
0576 fi
0577
0578 while test $
0579 case "$1" in
0580 -*=*)
0581 optflag=`echo "$1" | sed 's/=[-_a-zA-Z0-9]*//'`
0582 optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
0583 ;;
0584 *)
0585 optflag=$1
0586 optarg=
0587 ;;
0588 esac
0589
0590 case "$optflag" in
0591 --prefix)
0592 echo ${prefix}
0593 ;;
0594
0595 --version)
0596 echo ${version}
0597 ;;
0598
0599 --cxxstd)
0600 echo ${geant4_cxx_std}
0601 ;;
0602
0603 --tls-model)
0604 echo ${geant4_tls_model}
0605 ;;
0606
0607 --libs)
0608 echo "-L${libdir}" ${vis_libs} ${libs}
0609 ;;
0610
0611 --cflags)
0612 echo ${vis_cflags} ${cflags}
0613 ;;
0614
0615 --libs-without-gui)
0616 echo "-L${libdir}" ${libs}
0617 ;;
0618
0619 --cflags-without-gui)
0620 echo ${cflags}
0621 ;;
0622
0623 --has-feature)
0624 if [ x$optarg = x ]; then
0625 if [ $
0626 shift
0627 optarg=$1
0628 else
0629 echo "$optflag - missing parameter"
0630 exit 1
0631 fi
0632 fi
0633
0634 case "$optarg" in
0635 static)
0636 echo ${have_staticlibs}
0637 ;;
0638 multithreading)
0639 echo ${have_multithreading}
0640 ;;
0641 smartstack)
0642 echo ${have_smartstack}
0643 ;;
0644 clhep)
0645 echo ${have_clhep}
0646 ;;
0647 expat)
0648 echo ${have_expat}
0649 ;;
0650 zlib)
0651 echo ${have_zlib}
0652 ;;
0653 gdml)
0654 echo ${have_gdml}
0655 ;;
0656 usolids)
0657 echo ${have_usolids}
0658 ;;
0659 freetype)
0660 echo ${have_freetype}
0661 ;;
0662 hdf5)
0663 echo ${have_hdf5}
0664 ;;
0665 g3tog4)
0666 echo ${have_g3tog4}
0667 ;;
0668 qt)
0669 echo ${have_qt}
0670 ;;
0671 vtk)
0672 echo ${have_vtk}
0673 ;;
0674 motif)
0675 echo ${have_motif}
0676 ;;
0677 raytracer-x11)
0678 echo ${have_raytracerx11}
0679 ;;
0680 opengl-x11)
0681 echo ${have_openglx11}
0682 ;;
0683 openinventor)
0684 echo ${have_openinventor}
0685 ;;
0686 php_as_hp)
0687 echo ${have_php_as_hp}
0688 ;;
0689 *)
0690 echo "no"
0691 ;;
0692 esac
0693 ;;
0694
0695 --features)
0696 list_features
0697 ;;
0698
0699 --datasets)
0700 print_datasets
0701 ;;
0702
0703 --check-datasets)
0704 check_datasets
0705 ;;
0706
0707 --install-datasets)
0708 install_datasets
0709 ;;
0710
0711 --sh)
0712 print_datasets_sh
0713 ;;
0714
0715 --csh)
0716 print_datasets_csh
0717 ;;
0718
0719 -?)
0720 help
0721 ;;
0722
0723 --help)
0724 help
0725 ;;
0726
0727 --usage)
0728 usage
0729 ;;
0730
0731 *)
0732 usage
0733 ;;
0734 esac
0735
0736 shift
0737 done
0738
0739
0740 exit 0