|
7 | 7 | # macro that checks for grass installation in specified directory
|
8 | 8 |
|
9 | 9 | MACRO (CHECK_GRASS G_PREFIX)
|
| 10 | + #MESSAGE(STATUS "Find GRASS ${GRASS_FIND_VERSION} in ${G_PREFIX}") |
10 | 11 |
|
11 |
| - FIND_PATH (GRASS_INCLUDE_DIR grass/version.h ${G_PREFIX}/include) |
| 12 | + FIND_PATH(GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION} grass/version.h ${G_PREFIX}/include DOC "Path to GRASS ${GRASS_FIND_VERSION} include directory") |
12 | 13 |
|
13 |
| - IF(GRASS_INCLUDE_DIR) |
14 |
| - FILE(READ ${GRASS_INCLUDE_DIR}/grass/version.h VERSIONFILE) |
| 14 | + #MESSAGE(STATUS "GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION} = ${GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION}}") |
| 15 | + |
| 16 | + IF(GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION}) |
| 17 | + FILE(READ ${GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION}}/grass/version.h VERSIONFILE) |
15 | 18 | # We can avoid the following block using version_less version_equal and
|
16 | 19 | # version_greater. Are there compatibility problems?
|
17 |
| - STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[^ ]+" GRASS_VERSION ${VERSIONFILE}) |
18 |
| - STRING(REGEX REPLACE "^([0-9]*)\\.[0-9]*\\..*$" "\\1" GRASS_MAJOR_VERSION ${GRASS_VERSION}) |
19 |
| - STRING(REGEX REPLACE "^[0-9]*\\.([0-9]*)\\..*$" "\\1" GRASS_MINOR_VERSION ${GRASS_VERSION}) |
20 |
| - STRING(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.(.*)$" "\\1" GRASS_MICRO_VERSION ${GRASS_VERSION}) |
| 20 | + STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[^ ]+" GRASS_VERSION${GRASS_FIND_VERSION} ${VERSIONFILE}) |
| 21 | + STRING(REGEX REPLACE "^([0-9]*)\\.[0-9]*\\..*$" "\\1" GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} ${GRASS_VERSION${GRASS_FIND_VERSION}}) |
| 22 | + STRING(REGEX REPLACE "^[0-9]*\\.([0-9]*)\\..*$" "\\1" GRASS_MINOR_VERSION${GRASS_FIND_VERSION} ${GRASS_VERSION${GRASS_FIND_VERSION}}) |
| 23 | + STRING(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.(.*)$" "\\1" GRASS_MICRO_VERSION${GRASS_FIND_VERSION} ${GRASS_VERSION${GRASS_FIND_VERSION}}) |
21 | 24 | # Add micro version too?
|
22 | 25 | # How to numerize RC versions?
|
23 |
| - MATH( EXPR GRASS_NUM_VERSION "${GRASS_MAJOR_VERSION}*10000 + ${GRASS_MINOR_VERSION}*100") |
24 |
| - |
25 |
| - SET (GRASS_LIBRARIES_FOUND TRUE) |
26 |
| - SET (GRASS_LIB_NAMES gis dig2 dbmiclient dbmibase shape dgl rtree datetime linkm gproj) |
27 |
| - IF (GRASS_MAJOR_VERSION LESS 7 ) |
28 |
| - LIST(APPEND GRASS_LIB_NAMES vect) |
29 |
| - LIST(APPEND GRASS_LIB_NAMES form) |
30 |
| - ELSE (GRASS_MAJOR_VERSION LESS 7 ) |
31 |
| - LIST(APPEND GRASS_LIB_NAMES vector) |
32 |
| - LIST(APPEND GRASS_LIB_NAMES raster) |
33 |
| - ENDIF (GRASS_MAJOR_VERSION LESS 7 ) |
34 |
| - |
35 |
| - FOREACH (LIB ${GRASS_LIB_NAMES}) |
36 |
| - MARK_AS_ADVANCED ( GRASS_LIBRARY_${LIB} ) |
37 |
| - |
38 |
| - SET(LIB_PATH NOTFOUND) |
39 |
| - FIND_LIBRARY(LIB_PATH NAMES grass_${LIB} PATHS ${G_PREFIX}/lib NO_DEFAULT_PATH) |
40 |
| - |
41 |
| - IF (LIB_PATH) |
42 |
| - SET (GRASS_LIBRARY_${LIB} ${LIB_PATH}) |
43 |
| - ELSE (LIB_PATH) |
44 |
| - SET (GRASS_LIBRARY_${LIB} NOTFOUND) |
45 |
| - SET (GRASS_LIBRARIES_FOUND FALSE) |
46 |
| - ENDIF (LIB_PATH) |
47 |
| - ENDFOREACH (LIB) |
48 |
| - |
49 |
| - # LIB_PATH is only temporary variable, so hide it (is it possible to delete a variable?) |
50 |
| - UNSET(LIB_PATH CACHE) |
51 |
| - |
52 |
| - IF (GRASS_LIBRARIES_FOUND) |
53 |
| - SET (GRASS_FOUND TRUE) |
54 |
| - SET (GRASS_PREFIX ${G_PREFIX}) |
55 |
| - ENDIF (GRASS_LIBRARIES_FOUND) |
56 |
| - ENDIF( GRASS_INCLUDE_DIR ) |
57 |
| - |
58 |
| - MARK_AS_ADVANCED ( GRASS_INCLUDE_DIR ) |
| 26 | + MATH( EXPR GRASS_NUM_VERSION${GRASS_FIND_VERSION} "${GRASS_MAJOR_VERSION${GRASS_FIND_VERSION}}*10000 + ${GRASS_MINOR_VERSION${GRASS_FIND_VERSION}}*100") |
| 27 | + |
| 28 | + #MESSAGE(STATUS "GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} = ${GRASS_MAJOR_VERSION${GRASS_FIND_VERSION}}") |
| 29 | + IF(GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} EQUAL GRASS_FIND_VERSION) |
| 30 | + SET(GRASS_LIBRARIES_FOUND${GRASS_FIND_VERSION} TRUE) |
| 31 | + SET(GRASS_LIB_NAMES${GRASS_FIND_VERSION} gis dig2 dbmiclient dbmibase shape dgl rtree datetime linkm gproj) |
| 32 | + IF(GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} LESS 7 ) |
| 33 | + LIST(APPEND GRASS_LIB_NAMES${GRASS_FIND_VERSION} vect) |
| 34 | + LIST(APPEND GRASS_LIB_NAMES${GRASS_FIND_VERSION} form) |
| 35 | + ELSE(GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} LESS 7 ) |
| 36 | + LIST(APPEND GRASS_LIB_NAMES${GRASS_FIND_VERSION} vector) |
| 37 | + LIST(APPEND GRASS_LIB_NAMES${GRASS_FIND_VERSION} raster) |
| 38 | + ENDIF(GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} LESS 7 ) |
| 39 | + |
| 40 | + FOREACH(LIB ${GRASS_LIB_NAMES${GRASS_FIND_VERSION}}) |
| 41 | + MARK_AS_ADVANCED ( GRASS_LIBRARY${GRASS_FIND_VERSION}_${LIB} ) |
| 42 | + |
| 43 | + SET(LIB_PATH NOTFOUND) |
| 44 | + FIND_LIBRARY(LIB_PATH NAMES grass_${LIB} PATHS ${G_PREFIX}/lib NO_DEFAULT_PATH) |
| 45 | + |
| 46 | + IF(LIB_PATH) |
| 47 | + SET(GRASS_LIBRARY${GRASS_FIND_VERSION}_${LIB} ${LIB_PATH}) |
| 48 | + ELSE(LIB_PATH) |
| 49 | + SET(GRASS_LIBRARY${GRASS_FIND_VERSION}_${LIB} NOTFOUND) |
| 50 | + SET(GRASS_LIBRARIES_FOUND${GRASS_FIND_VERSION} FALSE) |
| 51 | + ENDIF (LIB_PATH) |
| 52 | + ENDFOREACH(LIB) |
| 53 | + |
| 54 | + # LIB_PATH is only temporary variable, so hide it (is it possible to delete a variable?) |
| 55 | + UNSET(LIB_PATH CACHE) |
| 56 | + |
| 57 | + IF(GRASS_LIBRARIES_FOUND${GRASS_FIND_VERSION}) |
| 58 | + SET(GRASS_FOUND${GRASS_FIND_VERSION} TRUE) |
| 59 | + SET(GRASS_FOUND TRUE) # GRASS_FOUND is true if at least one version was found |
| 60 | + SET(GRASS_PREFIX${GRASS_CACHE_VERSION} ${G_PREFIX}) |
| 61 | + IF(GRASS_FIND_VERSION EQUAL 6) |
| 62 | + # Set also normal variable with number |
| 63 | + SET(GRASS_INCLUDE_DIR${GRASS_FIND_VERSION} ${GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION}}) |
| 64 | + SET(GRASS_PREFIX${GRASS_FIND_VERSION} ${G_PREFIX}) |
| 65 | + ENDIF(GRASS_FIND_VERSION EQUAL 6) |
| 66 | + ENDIF(GRASS_LIBRARIES_FOUND${GRASS_FIND_VERSION}) |
| 67 | + ENDIF(GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} EQUAL GRASS_FIND_VERSION) |
| 68 | + ENDIF(GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION}) |
| 69 | + |
| 70 | + MARK_AS_ADVANCED ( GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION} ) |
59 | 71 | ENDMACRO (CHECK_GRASS)
|
60 | 72 |
|
61 | 73 | ###################################
|
62 | 74 | # search for grass installations
|
63 | 75 |
|
| 76 | +#MESSAGE(STATUS "GRASS_FIND_VERSION = ${GRASS_FIND_VERSION}") |
| 77 | + |
64 | 78 | # list of paths which to search - user's choice as first
|
65 |
| -SET (GRASS_PATHS ${GRASS_PREFIX} /usr/lib/grass /usr/lib64/grass64 /usr/lib/grass64 c:/msys/local /opt/grass $ENV{GRASS_PREFIX}) |
| 79 | +SET (GRASS_PATHS ${GRASS_PREFIX${GRASS_CACHE_VERSION}} /usr/lib/grass /opt/grass $ENV{GRASS_PREFIX${GRASS_CACHE_VERSION}}) |
| 80 | + |
| 81 | +# os specific paths |
| 82 | +IF (WIN32) |
| 83 | + LIST(APPEND GRASS_PATHS c:/msys/local) |
| 84 | +ENDIF (WIN32) |
| 85 | + |
| 86 | +IF (UNIX) |
| 87 | + IF (GRASS_FIND_VERSION EQUAL 6) |
| 88 | + LIST(APPEND GRASS_PATHS /usr/lib64/grass64 /usr/lib/grass64) |
| 89 | + ELSEIF (GRASS_FIND_VERSION EQUAL 7) |
| 90 | + LIST(APPEND GRASS_PATHS /usr/lib64/grass70 /usr/lib/grass70 /usr/lib64/grass71 /usr/lib/grass71) |
| 91 | + ENDIF () |
| 92 | +ENDIF (UNIX) |
66 | 93 |
|
67 |
| -# mac-specific path |
68 | 94 | IF (APPLE)
|
69 |
| - SET (GRASS_PATHS ${GRASS_PATHS} |
70 |
| - /Applications/GRASS-6.3.app/Contents/MacOS |
71 |
| - /Applications/GRASS-6.4.app/Contents/MacOS |
72 |
| - /Applications/GRASS.app/Contents/Resources |
73 |
| - ) |
| 95 | + IF (GRASS_FIND_VERSION EQUAL 6) |
| 96 | + LIST(APPEND GRASS_PATHS |
| 97 | + /Applications/GRASS-6.3.app/Contents/MacOS |
| 98 | + /Applications/GRASS-6.4.app/Contents/MacOS |
| 99 | + ) |
| 100 | + ELSEIF (GRASS_FIND_VERSION EQUAL 7) |
| 101 | + LIST(APPEND GRASS_PATHS |
| 102 | + /Applications/GRASS-7.0.app/Contents/MacOS |
| 103 | + /Applications/GRASS-7.1.app/Contents/MacOS |
| 104 | + ) |
| 105 | + ENDIF () |
| 106 | + LIST(APPEND GRASS_PATHS /Applications/GRASS.app/Contents/Resources) |
74 | 107 | ENDIF (APPLE)
|
75 | 108 |
|
76 |
| -IF (WITH_GRASS) |
77 |
| - |
| 109 | +IF (WITH_GRASS${GRASS_CACHE_VERSION}) |
78 | 110 | FOREACH (G_PREFIX ${GRASS_PATHS})
|
79 |
| - IF (NOT GRASS_FOUND) |
| 111 | + IF (NOT GRASS_FOUND${GRASS_FIND_VERSION}) |
80 | 112 | CHECK_GRASS(${G_PREFIX})
|
81 |
| - ENDIF (NOT GRASS_FOUND) |
| 113 | + ENDIF (NOT GRASS_FOUND${GRASS_FIND_VERSION}) |
82 | 114 | ENDFOREACH (G_PREFIX)
|
83 |
| - |
84 |
| -ENDIF (WITH_GRASS) |
| 115 | +ENDIF (WITH_GRASS${GRASS_CACHE_VERSION}) |
85 | 116 |
|
86 | 117 | ###################################
|
87 | 118 |
|
88 |
| -IF (GRASS_FOUND) |
| 119 | +IF (GRASS_FOUND${GRASS_FIND_VERSION}) |
89 | 120 | IF (NOT GRASS_FIND_QUIETLY)
|
90 |
| - MESSAGE(STATUS "Found GRASS: ${GRASS_PREFIX} (${GRASS_VERSION})") |
| 121 | + MESSAGE(STATUS "Found GRASS ${GRASS_FIND_VERSION}: ${GRASS_PREFIX${GRASS_CACHE_VERSION}} (${GRASS_VERSION${GRASS_FIND_VERSION}})") |
91 | 122 | ENDIF (NOT GRASS_FIND_QUIETLY)
|
92 | 123 |
|
93 |
| -ELSE (GRASS_FOUND) |
| 124 | +ELSE (GRASS_FOUND${GRASS_FIND_VERSION}) |
94 | 125 |
|
95 |
| - IF (WITH_GRASS) |
| 126 | + IF (WITH_GRASS${GRASS_CACHE_VERSION}) |
96 | 127 |
|
97 | 128 | IF (GRASS_FIND_REQUIRED)
|
98 |
| - MESSAGE(FATAL_ERROR "Could not find GRASS") |
| 129 | + MESSAGE(FATAL_ERROR "Could not find GRASS ${GRASS_FIND_VERSION}") |
99 | 130 | ELSE (GRASS_FIND_REQUIRED)
|
100 |
| - MESSAGE(STATUS "Could not find GRASS") |
| 131 | + MESSAGE(STATUS "Could not find GRASS ${GRASS_FIND_VERSION}") |
101 | 132 | ENDIF (GRASS_FIND_REQUIRED)
|
102 | 133 |
|
103 |
| - ENDIF (WITH_GRASS) |
| 134 | + ENDIF (WITH_GRASS${GRASS_CACHE_VERSION}) |
104 | 135 |
|
105 |
| -ENDIF (GRASS_FOUND) |
| 136 | +ENDIF (GRASS_FOUND${GRASS_FIND_VERSION}) |
0 commit comments