File G4-multi.patch of Package geant4.11.2
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b2559017b..95b4cf717d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,3 +48,4 @@ set(CMAKE_MODULE_PATH
#
include(G4CMakeMain)
+add_subdirectory(G4-multi)
diff --git a/G4-multi/CMakeLists.txt b/G4-multi/CMakeLists.txt
new file mode 100644
index 0000000000..91948efe6f
--- /dev/null
+++ b/G4-multi/CMakeLists.txt
@@ -0,0 +1,72 @@
+set(_multi_g4_version ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR})
+
+set(_multi_g4_config_script ${_scriptbasename}.${_multi_g4_version})
+
+if(NOT DEFINED shells_list)
+ set(shells_list bourne;cshell)
+endif ()
+
+geant4_get_datasetnames(ALL_GEANT4_DATASETS)
+foreach(_ds ${ALL_GEANT4_DATASETS})
+ geant4_get_dataset_property(${_ds} ENVVAR ${_ds}_ENVVAR)
+ geant4_get_dataset_property(${_ds} DIRECTORY ${_ds}_DIRECTORY)
+endforeach()
+
+macro(_function_shell_setup SHELL_FAMILY)
+ if(${SHELL_FAMILY} STREQUAL "bourne")
+ set(SET_SHELL_FUNCTION "config_${_multi_g4_config_script} () {\n")
+ set(SET_SHELL_FUNCTION "${SET_SHELL_FUNCTION}\tsource ${CMAKE_INSTALL_FULL_BINDIR}/${_scriptbasename}${GEANT4_TC_SHELL_EXTENSION}")
+ set(CLOSE_SHELL_FUNCTION "}\nexport -f config_${_multi_g4_config_script}")
+ elseif(${SHELL_FAMILY} STREQUAL "cshell")
+ set(SET_SHELL_FUNCTION "alias config_${_multi_g4_config_script} \'source ${CMAKE_INSTALL_FULL_BINDIR}/${_scriptbasename}${GEANT4_TC_SHELL_EXTENSION} ;\\")
+ set(CLOSE_SHELL_FUNCTION "\'")
+ endif()
+endmacro()
+
+function(_function_setenv_command TEMPLATE_NAME SHELL_FAMILY VARIABLE_NAME VARIABLE_VALUE)
+ if(${SHELL_FAMILY} STREQUAL "bourne")
+ set(${TEMPLATE_NAME} "\tif [ -d ${VARIABLE_VALUE} ] ; then export ${VARIABLE_NAME}=${VARIABLE_VALUE} ; fi"
+ PARENT_SCOPE
+ )
+ elseif(${SHELL_FAMILY} STREQUAL "cshell")
+ set(${TEMPLATE_NAME} "\tif [ -d ${VARIABLE_VALUE} ] ; then setenv ${VARIABLE_NAME} ${VARIABLE_VALUE} ; fi ;\\"
+ PARENT_SCOPE
+ )
+ endif()
+endfunction()
+
+macro(create_multi_config_scripts SCRIPT_NAME)
+ foreach(_shell IN LISTS shells_list)
+ _g4tc_shell_setup(_shell)
+ _function_shell_setup(_shell)
+ set(_scriptfullname ${_multi_g4_config_script}${GEANT4_TC_SHELL_EXTENSION})
+
+ unset(ALL_GEANT4_ENV_DATASETS)
+ foreach(_ds ${ALL_GEANT4_DATASETS})
+ _function_setenv_command(_dssetenvcmd ${_shell} ${${_ds}_ENVVAR} "$GEANT4_DATA_DIR/${${_ds}_DIRECTORY}")
+ if(DEFINED ALL_GEANT4_ENV_DATASETS)
+ set(ALL_GEANT4_ENV_DATASETS "${ALL_GEANT4_ENV_DATASETS}\n${_dssetenvcmd}")
+ else()
+ set(ALL_GEANT4_ENV_DATASETS "${_dssetenvcmd}")
+ endif()
+ endforeach()
+
+ configure_file(
+ ${PROJECT_SOURCE_DIR}/G4-multi/${SCRIPT_NAME}-skeleton.in
+ ${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
+ @ONLY
+ )
+
+ install(FILES
+ ${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
+ DESTINATION ${CMAKE_INSTALL_BINDIR}/../../geant4-multi_config/
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE
+ GROUP_READ
+ WORLD_READ
+ COMPONENT Runtime
+ )
+ endforeach()
+endmacro()
+
+create_multi_config_scripts(${_scriptbasename}-multi)
diff --git a/G4-multi/geant4-multi-skeleton.in b/G4-multi/geant4-multi-skeleton.in
new file mode 100644
index 0000000000..9301d8dedd
--- /dev/null
+++ b/G4-multi/geant4-multi-skeleton.in
@@ -0,0 +1,3 @@
+@SET_SHELL_FUNCTION@
+@ALL_GEANT4_ENV_DATASETS@
+@CLOSE_SHELL_FUNCTION@