Salome HOME
merge from master
[tools/sat_salome.git] / products / patches / URANIE-FindROOT.cmake.patch
1 diff -rupN URANIE-4.5.0_ref/CmakePackage/FindROOT.cmake URANIE-4.5.0_new/CmakePackage/FindROOT.cmake
2 --- URANIE-4.5.0_ref/CmakePackage/FindROOT.cmake        2021-05-24 15:55:21.002279495 +0200
3 +++ URANIE-4.5.0_new/CmakePackage/FindROOT.cmake        2021-05-24 16:27:26.382164733 +0200
4 @@ -107,8 +107,62 @@ IF (ROOT_CONFIG_EXECUTABLE)
5      
6    ENDIF(UNIX)
7    IF(WIN32)
8 -    #Trouver un moyen de tester la version de root
9 -    SET(ROOT_FOUND TRUE)
10 +    # we need at least version 5.99/00
11 +    IF (NOT ROOT_MIN_VERSION)
12 +      SET(ROOT_MIN_VERSION "5.99/00")
13 +    ENDIF (NOT ROOT_MIN_VERSION)
14 +    
15 +    # we need at max version 6.14/14
16 +    IF (NOT ROOT_MAX_VERSION)
17 +      SET(ROOT_MAX_VERSION "6.44/00")
18 +    ENDIF (NOT ROOT_MAX_VERSION)
19 +    FIND_PROGRAM(ROOT_EXECUTABLE NAMES root PATHS ${ROOT_CONFIG_SEARCHPATH} NO_DEFAULT_PATH)
20 +    EXECUTE_PROCESS(COMMAND ${ROOT_EXECUTABLE} --version
21 +                    OUTPUT_VARIABLE ROOT_EXECUTABLE_VERSION
22 +                    ERROR_VARIABLE ROOT_EXECUTABLE_VERSION
23 +                    OUTPUT_STRIP_TRAILING_WHITESPACE)
24 +    STRING(REGEX MATCH "ROOT Version: [^ $]+" ROOTVERSION ${ROOT_EXECUTABLE_VERSION})
25 +    STRING(REGEX REPLACE "ROOT Version: " "" ROOTVERSION ${ROOTVERSION})
26 +    MESSAGE(STATUS "...ROOT Version = ${ROOTVERSION}")
27 +    EXECUTE_PROCESS(COMMAND ${ROOT_EXECUTABLE} -config
28 +                    OUTPUT_VARIABLE  ROOT_CONFIGURATION
29 +                    ERROR_VARIABLE  ROOT_CONFIGURATION
30 +                    OUTPUT_STRIP_TRAILING_WHITESPACE)
31 +    STRING(REGEX MATCH "PYTHON_VERSION_STRING=[^ $]+" ROOT_PYTHON_VERSION ${ROOT_CONFIGURATION})
32 +    STRING(REGEX REPLACE "PYTHON_VERSION_STRING=" "" ROOT_PYTHON_VERSION ${ROOT_PYTHON_VERSION})
33 +    MESSAGE(STATUS "...ROOT build based on Python version = ${ROOT_PYTHON_VERSION}")
34 +    SET(ROOT_FOUND FALSE)
35 +    STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+" "\\1" req_root_major_vers "${ROOT_MIN_VERSION}")
36 +    STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" req_root_minor_vers "${ROOT_MIN_VERSION}")
37 +    STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+)" "\\1" req_root_patch_vers "${ROOT_MIN_VERSION}")
38 +    
39 +    # now parse the parts of the user given maximum version string into variables
40 +    STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+" "\\1" max_req_root_major_vers "${ROOT_MAX_VERSION}")
41 +    STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" max_req_root_minor_vers "${ROOT_MAX_VERSION}")
42 +    STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+)" "\\1" max_req_root_patch_vers "${ROOT_MAX_VERSION}")
43 +    
44 +    # and now the version string given by qmake
45 +    STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" found_root_major_vers "${ROOTVERSION}")
46 +    STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" found_root_minor_vers "${ROOTVERSION}")
47 +    STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" found_root_patch_vers "${ROOTVERSION}")
48 +    
49 +    # compute an overall version number which can be compared at once
50 +    math(EXPR req_vers "${req_root_major_vers}*10000 + ${req_root_minor_vers}*100 + ${req_root_patch_vers}")
51 +    math(EXPR max_req_vers "${max_req_root_major_vers}*10000 + ${max_req_root_minor_vers}*100 + ${max_req_root_patch_vers}")
52 +    math(EXPR found_vers "${found_root_major_vers}*10000 + ${found_root_minor_vers}*100 + ${found_root_patch_vers}")
53 +    
54 +    IF (found_vers LESS req_vers)
55 +      MESSAGE( FATAL_ERROR "Invalid ROOT version \"${ROOTVERSION}\"found : at least \"${ROOT_MIN_VERSION}\" required.")
56 +      SET(ROOT_FOUND FALSE)
57 +      SET(ROOT_INSTALLED_VERSION_TOO_OLD TRUE)
58 +    ELSE (found_vers LESS req_vers)
59 +      IF (found_vers GREATER max_req_vers)
60 +        MESSAGE( FATAL_ERROR "Invalid ROOT version \"${ROOTVERSION}\" found : maximum \"${ROOT_MAX_VERSION}\" required.")
61 +        SET(ROOT_FOUND FALSE)
62 +      ELSE (found_vers GREATER max_req_vers)
63 +        SET(ROOT_FOUND TRUE)
64 +      ENDIF (found_vers GREATER max_req_vers)
65 +    ENDIF (found_vers LESS req_vers)
66    ENDIF(WIN32)
67    
68