findgeos-using-geos-config.patch

Patch with portable version of FindGEOS.cmake macro that fixes problems under OSX 10.5 - Mateusz Loskot -, 2008-08-20 07:05 PM

Download (5.15 KB)

View differences:

cmake/FindGEOS.cmake (working copy)
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 <[email protected]>
9
# (based in FindGDAL.cmake by Magnus Homann)
8 10

  
11
IF(WIN32)
9 12

  
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)
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)
23 17

  
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)
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 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)
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)
111

  
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 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)