set(GEOMETRY_VERSION 785dfdf377222c45df12be0f1d2dc9890e63904b)
set(GEOMETRY_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_geometry.git")

download_project_if_needed(PROJECT         Geometry_source
                           GIT_REPOSITORY  ${GEOMETRY_SRC_URL}
                           GIT_TAG         ${GEOMETRY_VERSION}
                           SOURCE_DIR      ${CMAKE_SOURCE_DIR}/geometry
                           TEST_FILE       media.geo
                          )
If(DEFINED ENV{CHECK_GEO_HASH_CHANGE} AND DEFINED ENV{CI_MERGE_REQUEST_PROJECT_URL})
  Message( STATUS "Checking geo setup changes against $ENV{CI_MERGE_REQUEST_PROJECT_URL} "
                                                     "$ENV{CI_MERGE_REQUEST_TARGET_BRANCH_NAME}")
  execute_process(COMMAND "${CBMROOT_SOURCE_DIR}/scripts/check-geo-hash-changes.sh"
                           $ENV{CI_MERGE_REQUEST_PROJECT_URL}
                           $ENV{CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
                  WORKING_DIRECTORY ${CBMROOT_SOURCE_DIR}
                  OUTPUT_VARIABLE checks_std_out)

  ##### Strip trailing new line in output
  Strip_Trailing_Char(${checks_std_out} "\n")
  Set( checks_std_out ${_ret_val} )
  #####

  # Transform output lines into list items
  string(REPLACE "\n" ";" found_checks_exports ${checks_std_out})

  # Loop on lines, find those with the pattern "CMAKE_EXPORT XXXXX=YYYYY" and use to set CMAKE variables
  foreach(_LINE IN LISTS found_checks_exports)
    if (_LINE MATCHES "CMAKE_EXPORT (.*)$")
      string(REGEX MATCHALL "\ (.*)$" _PAIR ${_LINE})  # Cut out the token, lead space left -_-'
      string(SUBSTRING ${_PAIR} 1 -1 _PAIR)  # Remove leading space
      if (_PAIR MATCHES "^([^:]+)=(.*)$")
        #### Replace temporary : with ; to make it a CMAKE list (used to avoid CMAKE errors in previous commands)
        Strip_Trailing_Char(${CMAKE_MATCH_2} ":")
        Set( CMAKE_MATCH_2 ${_ret_val} )
        string(REPLACE ":" ";" CMAKE_MATCH_2 ${CMAKE_MATCH_2})
        ####
        # Message( STATUS "Setting: ${CMAKE_MATCH_1} to ${CMAKE_MATCH_2}")
        set("${CMAKE_MATCH_1}" ${CMAKE_MATCH_2} PARENT_SCOPE)  # Need parent scope to share it out of "add_subdirectory"
      else()
        message(FATAL_ERROR "Invalid export pair: ${_PAIR}")
      endif()
    endif()
  endforeach()
endIf()