11
2+ # macro that checks for grass installation in specified directory
23
3- SET (GRASS_PREFIX "/usr" CACHE PATH "Path to GRASS base directory" )
4-
4+ MACRO (CHECK_GRASS G_PREFIX)
55
6- FIND_PATH (GRASS_INCLUDE_DIR grass/gis.h ${GRASS_PREFIX } /include )
6+ FIND_PATH (GRASS_INCLUDE_DIR grass/gis.h ${G_PREFIX } /include )
77
8- SET (GRASS_LIB_NAMES gis vect dig2 dbmiclient dbmibase shape dgl rtree datetime linkm form gproj)
8+ SET (GRASS_LIB_NAMES gis vect dig2 dbmiclient dbmibase shape dgl rtree datetime linkm form gproj)
99
10- SET (GRASS_LIBRARIES "" )
10+ SET (GRASS_LIBRARIES "" )
1111
12- FOREACH (LIB ${GRASS_LIB_NAMES} )
13- SET (LIB_PATH NOTFOUND )
14- FIND_LIBRARY (LIB_PATH grass_${LIB} PATHS ${GRASS_PREFIX } /lib)
12+ FOREACH (LIB ${GRASS_LIB_NAMES} )
13+ SET (LIB_PATH NOTFOUND )
14+ FIND_LIBRARY (LIB_PATH grass_${LIB} PATHS ${G_PREFIX } /lib)
1515
16- IF (LIB_PATH)
17- IF (NOT GRASS_LIBRARIES STREQUAL NOTFOUND )
18- SET (GRASS_LIBRARIES ${GRASS_LIBRARIES} ${LIB_PATH} )
19- ENDIF (NOT GRASS_LIBRARIES STREQUAL NOTFOUND )
20- ELSE (LIB_PATH)
21- SET (GRASS_LIBRARIES NOTFOUND )
22- ENDIF (LIB_PATH)
16+ IF (LIB_PATH)
17+ IF (NOT GRASS_LIBRARIES STREQUAL NOTFOUND )
18+ SET (GRASS_LIBRARIES ${GRASS_LIBRARIES} ${LIB_PATH} )
19+ ENDIF (NOT GRASS_LIBRARIES STREQUAL NOTFOUND )
20+ ELSE (LIB_PATH)
21+ SET (GRASS_LIBRARIES NOTFOUND )
22+ ENDIF (LIB_PATH)
2323
24- ENDFOREACH (LIB)
24+ ENDFOREACH (LIB)
2525
26- IF (GRASS_INCLUDE_DIR AND GRASS_LIBRARIES)
27- SET (GRASS_FOUND TRUE )
28- ENDIF (GRASS_INCLUDE_DIR AND GRASS_LIBRARIES)
26+ IF (GRASS_INCLUDE_DIR AND GRASS_LIBRARIES)
27+ SET (GRASS_FOUND TRUE )
28+ SET (GRASS_PREFIX ${G_PREFIX} )
29+ ENDIF (GRASS_INCLUDE_DIR AND GRASS_LIBRARIES)
2930
31+ ENDMACRO (CHECK_GRASS)
32+
33+ ###################################
34+ # search for grass installations
35+
36+ # try to build with GRASS by default
37+ SET (WITH_GRASS "ON" CACHE BOOL "Determines whether GRASS plugin should be built" )
38+
39+ SET (GRASS_PREFIX "" CACHE PATH "Path to GRASS base directory" )
40+
41+ # list of paths which to search - user's choice as first
42+ SET (GRASS_PATHS ${GRASS_PREFIX} /usr/lib/grass)
43+
44+ IF (WITH_GRASS)
45+
46+ FOREACH (G_PREFIX ${GRASS_PATHS} )
47+ IF (NOT GRASS_FOUND)
48+ CHECK_GRASS(${G_PREFIX} )
49+ ENDIF (NOT GRASS_FOUND)
50+ ENDFOREACH (G_PREFIX)
51+
52+ ENDIF (WITH_GRASS)
53+
54+ ###################################
3055
3156IF (GRASS_FOUND)
3257
58+ # read grass version number and remove trailing newline
59+ FILE (READ ${GRASS_PREFIX} /etc/VERSIONNUMBER GRASS_VERSION)
60+ STRING (REPLACE "\n " "" GRASS_VERSION ${GRASS_VERSION} )
61+
3362 IF (NOT GRASS_FIND_QUIETLY)
34- MESSAGE (STATUS "Found GRASS: ${GRASS_PREFIX} " )
63+ MESSAGE (STATUS "Found GRASS: ${GRASS_PREFIX} ( ${GRASS_VERSION} ) " )
3564 ENDIF (NOT GRASS_FIND_QUIETLY)
3665
3766 # openpty is currently needed for GRASS shell
@@ -48,10 +77,14 @@ IF (GRASS_FOUND)
4877
4978ELSE (GRASS_FOUND)
5079
51- IF (GRASS_FIND_REQUIRED)
52- MESSAGE (FATAL_ERROR "Could not find GRASS" )
53- ELSE (GRASS_FIND_REQUIRED)
54- MESSAGE (STATUS "Could not find GRASS" )
55- ENDIF (GRASS_FIND_REQUIRED)
80+ IF (WITH_GRASS)
81+
82+ IF (GRASS_FIND_REQUIRED)
83+ MESSAGE (FATAL_ERROR "Could not find GRASS" )
84+ ELSE (GRASS_FIND_REQUIRED)
85+ MESSAGE (STATUS "Could not find GRASS" )
86+ ENDIF (GRASS_FIND_REQUIRED)
87+
88+ ENDIF (WITH_GRASS)
5689
5790ENDIF (GRASS_FOUND)
0 commit comments