Skip to content

Commit 3312052

Browse files
committed
Add GRASS plugin CMake macro to find extra includes of GRASS compilation
Such includes may need found again when including some GRASS headers.
1 parent c8eca29 commit 3312052

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

cmake/FindGRASS.cmake

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,33 @@
44
# Redistribution and use is allowed according to the terms of the BSD license.
55
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
66

7+
# Macro that checks for extra include directories set during GRASS compilation.
8+
# This helps for platforms where GRASS is built against dependencies in
9+
# non-standard locations; like on Mac, where the system gettext is too old and
10+
# GRASS is built off of gettext in /usr/local/opt, or some other custom prefix.
11+
# Such includes may need found again when including some GRASS headers.
12+
13+
MACRO (CHECK_GRASS_EXTRA_INCLUDE_DIRS GRASS_VERSION)
14+
SET(GRASS_EXTRA_INCLUDE_DIRS${GRASS_VERSION} ""
15+
CACHE STRING "Extra includes string used for GRASS${GRASS_VERSION}")
16+
17+
IF(UNIX AND EXISTS ${GRASS_INCLUDE_DIR${GRASS_VERSION}}/Make/Platform.make
18+
AND "${GRASS${GRASS_VERSION}_EXTRA_INCLUDE_DIRS}" STREQUAL "")
19+
20+
FILE(READ ${GRASS_INCLUDE_DIR${GRASS_VERSION}}/Make/Platform.make _platformfile)
21+
STRING(REGEX MATCH "INCLUDE_DIRS *= [^\n]*" _config_includes "${_platformfile}")
22+
IF(NOT "${_config_includes}" STREQUAL "")
23+
STRING(REGEX REPLACE "INCLUDE_DIRS *= *([^\n]*)" "\\1" _extra_includes "${_config_includes}")
24+
ENDIF()
25+
IF(NOT "${_extra_includes}" STREQUAL "")
26+
SET(GRASS_EXTRA_INCLUDE_DIRS${GRASS_VERSION} ${_extra_includes}
27+
CACHE STRING "Extra includes string used for GRASS${GRASS_VERSION}" FORCE)
28+
ENDIF()
29+
ENDIF()
30+
31+
MARK_AS_ADVANCED (GRASS_EXTRA_INCLUDE_DIRS${GRASS_VERSION})
32+
ENDMACRO (CHECK_GRASS_EXTRA_INCLUDE_DIRS GRASS_VERSION)
33+
734
# macro that checks for grass installation in specified directory
835

936
MACRO (CHECK_GRASS G_PREFIX)
@@ -108,10 +135,12 @@ MACRO (CHECK_GRASS G_PREFIX)
108135
SET(GRASS_FOUND${GRASS_FIND_VERSION} TRUE)
109136
SET(GRASS_FOUND TRUE) # GRASS_FOUND is true if at least one version was found
110137
SET(GRASS_PREFIX${GRASS_CACHE_VERSION} ${G_PREFIX})
138+
CHECK_GRASS_EXTRA_INCLUDE_DIRS(${GRASS_CACHE_VERSION})
111139
IF(GRASS_FIND_VERSION EQUAL 6)
112140
# Set also normal variable with number
113141
SET(GRASS_INCLUDE_DIR${GRASS_FIND_VERSION} ${GRASS_INCLUDE_DIR${GRASS_CACHE_VERSION}})
114142
SET(GRASS_PREFIX${GRASS_FIND_VERSION} ${G_PREFIX})
143+
CHECK_GRASS_EXTRA_INCLUDE_DIRS(${GRASS_FIND_VERSION})
115144
ENDIF(GRASS_FIND_VERSION EQUAL 6)
116145
ENDIF(GRASS_LIBRARIES_FOUND${GRASS_FIND_VERSION})
117146
ENDIF(GRASS_MAJOR_VERSION${GRASS_FIND_VERSION} EQUAL GRASS_FIND_VERSION)

src/plugins/grass/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ MACRO(ADD_GRASSPLUGIN GRASS_BUILD_VERSION)
190190
)
191191

192192
SET_TARGET_PROPERTIES(grassplugin${GRASS_BUILD_VERSION} PROPERTIES
193-
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\""
193+
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\" ${GRASS_EXTRA_INCLUDE_DIRS${GRASS_BUILD_VERSION}}"
194194
)
195195

196196
IF(MSVC)
@@ -216,7 +216,7 @@ MACRO(ADD_GRASSPLUGIN GRASS_BUILD_VERSION)
216216
ADD_EXECUTABLE(qgis.g.browser${GRASS_BUILD_VERSION} ${GRASS_BROWSER_SRCS})
217217

218218
SET_TARGET_PROPERTIES(qgis.g.browser${GRASS_BUILD_VERSION} PROPERTIES
219-
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\""
219+
COMPILE_FLAGS "-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\" ${GRASS_EXTRA_INCLUDE_DIRS${GRASS_BUILD_VERSION}}"
220220
)
221221

222222
TARGET_LINK_LIBRARIES (qgis.g.browser${GRASS_BUILD_VERSION}

0 commit comments

Comments
 (0)