1
-
2
1
# CMake module to search for GEOS library
3
2
#
4
3
# If it's found it sets GEOS_FOUND to TRUE
5
4
# and following variables are set:
6
5
# GEOS_INCLUDE_DIR
7
6
# GEOS_LIBRARY
7
+ #
8
+ # Mateusz Loskot <mateusz@loskot.net>
9
+ # (based in FindGDAL.cmake by Magnus Homann)
10
+
11
+ IF (WIN32 )
12
+
13
+ IF (MINGW)
14
+ FIND_PATH (GEOS_INCLUDE_DIR geos_c.h /usr/local/include /usr/include c:/msys/local/include )
15
+ FIND_LIBRARY (GEOS_LIBRARY NAMES geos_c PATHS /usr/local/lib /usr/lib c:/msys/local/lib)
16
+ ENDIF (MINGW)
17
+
18
+ IF (MSVC )
19
+ SET (
20
+ GEOS_INCLUDE_DIR
21
+ "$ENV{LIB_DIR} /include"
22
+ CACHE STRING INTERNAL
23
+ )
24
+ SET (
25
+ GEOS_LIBRARY
26
+ "$ENV{LIB_DIR} /lib/geos_c.lib" ;odbc32;odbccp32
27
+ CACHE STRING INTERNAL )
28
+ ENDIF (MSVC )
29
+
30
+ ELSE (WIN32 )
31
+
32
+ IF (UNIX )
33
+
34
+ # try to use framework on mac
35
+ IF (APPLE )
36
+ SET (GEOS_MAC_PATH /Library/Frameworks/GEOS.framework /unix /bin)
37
+ ENDIF (APPLE )
38
+
39
+ SET (GEOS_CONFIG_PREFER_PATH "$ENV{GEOS_HOME} /bin" CACHE STRING "preferred path to GEOS (geos-config)" )
40
+ FIND_PROGRAM (GEOS_CONFIG geos-config
41
+ ${GEOS_CONFIG_PREFER_PATH}
42
+ ${GEOS_MAC_PATH}
43
+ /usr/local/bin/
44
+ /usr/bin/
45
+ )
46
+ #MESSAGE("DBG GEOS_CONFIG ${GEOS_CONFIG}")
47
+
48
+ IF (GEOS_CONFIG)
49
+ # set INCLUDE_DIR to prefix+include
50
+ EXEC_PROGRAM (${GEOS_CONFIG}
51
+ ARGS --prefix
52
+ OUTPUT_VARIABLE GEOS_PREFIX)
8
53
54
+ FIND_PATH (GEOS_INCLUDE_DIR
55
+ geos_c.h
56
+ ${GEOS_PREFIX} /include
57
+ /usr/local/include
58
+ /usr/include
59
+ )
60
+
61
+ ## extract link dirs for rpath
62
+ EXEC_PROGRAM (${GEOS_CONFIG}
63
+ ARGS --libs
64
+ OUTPUT_VARIABLE GEOS_CONFIG_LIBS )
65
+
66
+ ## split off the link dirs (for rpath)
67
+ ## use regular expression to match wildcard equivalent "-L*<endchar>"
68
+ ## with <endchar> is a space or a semicolon
69
+ STRING (REGEX MATCHALL "[-][L]([^ ;])+"
70
+ GEOS_LINK_DIRECTORIES_WITH_PREFIX
71
+ "${GEOS_CONFIG_LIBS} " )
72
+ #MESSAGE("DBG GEOS_LINK_DIRECTORIES_WITH_PREFIX=${GEOS_LINK_DIRECTORIES_WITH_PREFIX}")
73
+
74
+ ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
75
+
76
+ IF (GEOS_LINK_DIRECTORIES_WITH_PREFIX)
77
+ STRING (REGEX REPLACE "[-][L]" "" GEOS_LINK_DIRECTORIES ${GEOS_LINK_DIRECTORIES_WITH_PREFIX} )
78
+ ENDIF (GEOS_LINK_DIRECTORIES_WITH_PREFIX)
79
+
80
+ ### XXX - mloskot: geos-config --libs does not return -lgeos_c, so set it manually
81
+ ## split off the name
82
+ ## use regular expression to match wildcard equivalent "-l*<endchar>"
83
+ ## with <endchar> is a space or a semicolon
84
+ #STRING(REGEX MATCHALL "[-][l]([^ ;])+"
85
+ # GEOS_LIB_NAME_WITH_PREFIX
86
+ # "${GEOS_CONFIG_LIBS}" )
87
+ #MESSAGE("DBG GEOS_CONFIG_LIBS=${GEOS_CONFIG_LIBS}")
88
+ #MESSAGE("DBG GEOS_LIB_NAME_WITH_PREFIX=${GEOS_LIB_NAME_WITH_PREFIX}")
89
+ SET (GEOS_LIB_NAME_WITH_PREFIX -lgeos_c CACHE STRING INTERNAL )
90
+
91
+ ## remove prefix -l because we need the pure name
92
+
93
+ IF (GEOS_LIB_NAME_WITH_PREFIX)
94
+ STRING (REGEX REPLACE "[-][l]" "" GEOS_LIB_NAME ${GEOS_LIB_NAME_WITH_PREFIX} )
95
+ ENDIF (GEOS_LIB_NAME_WITH_PREFIX)
96
+ #MESSAGE("DBG GEOS_LIB_NAME=${GEOS_LIB_NAME}")
97
+
98
+ IF (APPLE )
99
+ SET (GEOS_LIBRARY ${GEOS_LINK_DIRECTORIES} /lib${GEOS_LIB_NAME} .dylib CACHE STRING INTERNAL )
100
+ ELSE (APPLE )
101
+ SET (GEOS_LIBRARY ${GEOS_LINK_DIRECTORIES} /lib${GEOS_LIB_NAME} .so CACHE STRING INTERNAL )
102
+ ENDIF (APPLE )
103
+ #MESSAGE("DBG GEOS_LIBRARY=${GEOS_LIBRARY}")
104
+
105
+ ELSE (GEOS_CONFIG)
106
+ MESSAGE ("FindGEOS.cmake: geos-config not found. Please set it manually. GEOS_CONFIG=${GEOS_CONFIG} " )
107
+ ENDIF (GEOS_CONFIG)
108
+
109
+ ENDIF (UNIX )
110
+ ENDIF (WIN32 )
9
111
10
- # FIND_PATH and FIND_LIBRARY normally search standard locations
11
- # before the specified paths. To search non-standard paths first,
12
- # FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
13
- # and then again with no specified paths to search the default
14
- # locations. When an earlier FIND_* succeeds, subsequent FIND_*s
15
- # searching for the same item do nothing.
16
- FIND_PATH (GEOS_INCLUDE_DIR geos_c.h
17
- "$ENV{LIB_DIR} /include"
18
- #mingw
19
- c:/msys/local/include
20
- NO_DEFAULT_PATH
21
- )
22
- FIND_PATH (GEOS_INCLUDE_DIR geos_c.h)
23
-
24
- FIND_LIBRARY (GEOS_LIBRARY NAMES geos_c PATHS
25
- "$ENV{LIB_DIR} /lib"
26
- #mingw
27
- c:/msys/local/lib
28
- NO_DEFAULT_PATH
29
- )
30
- FIND_LIBRARY (GEOS_LIBRARY NAMES geos_c)
31
112
32
113
IF (GEOS_INCLUDE_DIR AND GEOS_LIBRARY)
33
114
SET (GEOS_FOUND TRUE )
34
115
ENDIF (GEOS_INCLUDE_DIR AND GEOS_LIBRARY)
35
116
36
-
37
117
IF (GEOS_FOUND)
38
118
39
119
IF (NOT GEOS_FIND_QUIETLY)
@@ -42,8 +122,8 @@ IF (GEOS_FOUND)
42
122
43
123
ELSE (GEOS_FOUND)
44
124
45
- IF (GEOS_FIND_REQUIRED )
46
- MESSAGE (FATAL_ERROR "Could not find GEOS" )
47
- ENDIF (GEOS_FIND_REQUIRED )
125
+ MESSAGE (GEOS_INCLUDE_DIR= ${GEOS_INCLUDE_DIR} )
126
+ MESSAGE (GEOS_LIBRARY= ${GEOS_LIBRARY} )
127
+ MESSAGE (FATAL_ERROR "Could not find GEOS" )
48
128
49
129
ENDIF (GEOS_FOUND)
0 commit comments