@@ -38,98 +38,112 @@ ELSE(WIN32)
3838 IF (UNIX )
3939
4040 # try to use framework on mac
41+ # want clean framework path, not unix compatibility path
4142 IF (APPLE )
42- SET (GDAL_MAC_PATH /Library/Frameworks/GDAL.framework /Programs)
43+ IF (CMAKE_FIND_FRAMEWORK MATCHES "FIRST"
44+ OR CMAKE_FRAMEWORK_PATH MATCHES "ONLY"
45+ OR NOT CMAKE_FIND_FRAMEWORK)
46+ SET (CMAKE_FIND_FRAMEWORK_save ${CMAKE_FIND_FRAMEWORK} CACHE STRING "" FORCE)
47+ SET (CMAKE_FIND_FRAMEWORK "ONLY" CACHE STRING "" FORCE)
48+ FIND_LIBRARY (GDAL_LIBRARY GDAL)
49+ IF (GDAL_LIBRARY)
50+ # they're all the same in a framework
51+ SET (GDAL_INCLUDE_DIR ${GDAL_LIBRARY} /Headers CACHE PATH "Path to a file." )
52+ SET (GDAL_CONFIG ${GDAL_LIBRARY} /Programs/geos-config CACHE FILEPATH "Path to a program." )
53+ ENDIF (GDAL_LIBRARY)
54+ SET (CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE)
55+ ENDIF ()
4356 ENDIF (APPLE )
4457
45- SET (GDAL_CONFIG_PREFER_PATH "$ENV{GDAL_HOME} /bin" CACHE STRING "preferred path to GDAL (gdal-config)" )
46- SET (GDAL_CONFIG_PREFER_FWTOOLS_PATH "$ENV{FWTOOLS_HOME} /bin_safe" CACHE STRING "preferred path to GDAL (gdal-config) from FWTools" )
47- FIND_PROGRAM (GDAL_CONFIG gdal-config
48- ${GDAL_CONFIG_PREFER_PATH}
49- ${GDAL_CONFIG_PREFER_FWTOOLS_PATH}
50- ${GDAL_MAC_PATH}
51- /usr/local/bin/
52- /usr/bin/
53- )
54- # MESSAGE("DBG GDAL_CONFIG ${GDAL_CONFIG}")
58+ IF (NOT GDAL_INCLUDE_DIR AND NOT GDAL_LIBRARY AND NOT GDAL_CONFIG)
59+ # didn't find OS X framework, and was not set by user
60+ SET (GDAL_CONFIG_PREFER_PATH "$ENV{GDAL_HOME} /bin" CACHE STRING "preferred path to GDAL (gdal-config)" )
61+ SET (GDAL_CONFIG_PREFER_FWTOOLS_PATH "$ENV{FWTOOLS_HOME} /bin_safe" CACHE STRING "preferred path to GDAL (gdal-config) from FWTools" )
62+ FIND_PROGRAM (GDAL_CONFIG gdal-config
63+ ${GDAL_CONFIG_PREFER_PATH}
64+ ${GDAL_CONFIG_PREFER_FWTOOLS_PATH}
65+ /usr/local/bin/
66+ /usr/bin/
67+ )
68+ # MESSAGE("DBG GDAL_CONFIG ${GDAL_CONFIG}")
5569
56- IF (GDAL_CONFIG)
57-
58- ## extract gdal version
59- EXEC_PROGRAM (${GDAL_CONFIG}
60- ARGS --version
61- OUTPUT_VARIABLE GDAL_VERSION )
62- STRING (REGEX REPLACE "([0-9]+)\\ .([0-9]+)\\ .([0-9]+)" "\\ 1" GDAL_VERSION_MAJOR "${GDAL_VERSION} " )
63- STRING (REGEX REPLACE "([0-9]+)\\ .([0-9]+)\\ .([0-9]+)" "\\ 2" GDAL_VERSION_MINOR "${GDAL_VERSION} " )
70+ IF (GDAL_CONFIG)
71+
72+ ## extract gdal version
73+ EXEC_PROGRAM (${GDAL_CONFIG}
74+ ARGS --version
75+ OUTPUT_VARIABLE GDAL_VERSION )
76+ STRING (REGEX REPLACE "([0-9]+)\\ .([0-9]+)\\ .([0-9]+)" "\\ 1" GDAL_VERSION_MAJOR "${GDAL_VERSION} " )
77+ STRING (REGEX REPLACE "([0-9]+)\\ .([0-9]+)\\ .([0-9]+)" "\\ 2" GDAL_VERSION_MINOR "${GDAL_VERSION} " )
6478
65- # MESSAGE("DBG GDAL_VERSION ${GDAL_VERSION}")
66- # MESSAGE("DBG GDAL_VERSION_MAJOR ${GDAL_VERSION_MAJOR}")
67- # MESSAGE("DBG GDAL_VERSION_MINOR ${GDAL_VERSION_MINOR}")
79+ # MESSAGE("DBG GDAL_VERSION ${GDAL_VERSION}")
80+ # MESSAGE("DBG GDAL_VERSION_MAJOR ${GDAL_VERSION_MAJOR}")
81+ # MESSAGE("DBG GDAL_VERSION_MINOR ${GDAL_VERSION_MINOR}")
6882
69- # check for gdal version
70- # version 1.2.5 is known NOT to be supported (missing CPL_STDCALL macro)
71- # According to INSTALL, 1.4.0+ is required
72- IF (GDAL_VERSION_MAJOR LESS 1 OR GDAL_VERSION_MINOR LESS 4)
83+ # check for gdal version
84+ # version 1.2.5 is known NOT to be supported (missing CPL_STDCALL macro)
85+ # According to INSTALL, 1.4.0+ is required
86+ IF (GDAL_VERSION_MAJOR LESS 1 OR GDAL_VERSION_MINOR LESS 4)
7387 MESSAGE (FATAL_ERROR "GDAL version is too old (${GDAL_VERSION} ). Use 1.4.0 or higher." )
74- ENDIF (GDAL_VERSION_MAJOR LESS 1 OR GDAL_VERSION_MINOR LESS 4)
75-
76- # set INCLUDE_DIR to prefix+include
77- EXEC_PROGRAM (${GDAL_CONFIG}
78- ARGS --prefix
79- OUTPUT_VARIABLE GDAL_PREFIX)
80- #SET(GDAL_INCLUDE_DIR ${GDAL_PREFIX}/include CACHE STRING INTERNAL)
81- FIND_PATH (GDAL_INCLUDE_DIR
82- gdal.h
83- ${GDAL_PREFIX} /include /gdal
84- ${GDAL_PREFIX} /include
85- /usr/local/include
86- /usr/include
87- )
88-
89- ## extract link dirs for rpath
90- EXEC_PROGRAM (${GDAL_CONFIG}
91- ARGS --libs
92- OUTPUT_VARIABLE GDAL_CONFIG_LIBS )
93-
94- ## split off the link dirs (for rpath)
95- ## use regular expression to match wildcard equivalent "-L*<endchar>"
96- ## with <endchar> is a space or a semicolon
97- STRING (REGEX MATCHALL "[-][L]([^ ;])+"
98- GDAL_LINK_DIRECTORIES_WITH_PREFIX
99- "${GDAL_CONFIG_LIBS} " )
88+ ENDIF (GDAL_VERSION_MAJOR LESS 1 OR GDAL_VERSION_MINOR LESS 4)
89+
90+ # set INCLUDE_DIR to prefix+include
91+ EXEC_PROGRAM (${GDAL_CONFIG}
92+ ARGS --prefix
93+ OUTPUT_VARIABLE GDAL_PREFIX)
94+ #SET(GDAL_INCLUDE_DIR ${GDAL_PREFIX}/include CACHE STRING INTERNAL)
95+ FIND_PATH (GDAL_INCLUDE_DIR
96+ gdal.h
97+ ${GDAL_PREFIX} /include /gdal
98+ ${GDAL_PREFIX} /include
99+ /usr/local/include
100+ /usr/include
101+ )
102+
103+ ## extract link dirs for rpath
104+ EXEC_PROGRAM (${GDAL_CONFIG}
105+ ARGS --libs
106+ OUTPUT_VARIABLE GDAL_CONFIG_LIBS )
107+
108+ ## split off the link dirs (for rpath)
109+ ## use regular expression to match wildcard equivalent "-L*<endchar>"
110+ ## with <endchar> is a space or a semicolon
111+ STRING (REGEX MATCHALL "[-][L]([^ ;])+"
112+ GDAL_LINK_DIRECTORIES_WITH_PREFIX
113+ "${GDAL_CONFIG_LIBS} " )
100114 # MESSAGE("DBG GDAL_LINK_DIRECTORIES_WITH_PREFIX=${GDAL_LINK_DIRECTORIES_WITH_PREFIX}")
101115
102- ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
116+ ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
103117
104- IF (GDAL_LINK_DIRECTORIES_WITH_PREFIX)
105- STRING (REGEX REPLACE "[-][L]" "" GDAL_LINK_DIRECTORIES ${GDAL_LINK_DIRECTORIES_WITH_PREFIX} )
106- ENDIF (GDAL_LINK_DIRECTORIES_WITH_PREFIX)
107-
108- ## split off the name
109- ## use regular expression to match wildcard equivalent "-l*<endchar>"
110- ## with <endchar> is a space or a semicolon
111- STRING (REGEX MATCHALL "[-][l]([^ ;])+"
112- GDAL_LIB_NAME_WITH_PREFIX
113- "${GDAL_CONFIG_LIBS} " )
118+ IF (GDAL_LINK_DIRECTORIES_WITH_PREFIX)
119+ STRING (REGEX REPLACE "[-][L]" "" GDAL_LINK_DIRECTORIES ${GDAL_LINK_DIRECTORIES_WITH_PREFIX} )
120+ ENDIF (GDAL_LINK_DIRECTORIES_WITH_PREFIX)
121+
122+ ## split off the name
123+ ## use regular expression to match wildcard equivalent "-l*<endchar>"
124+ ## with <endchar> is a space or a semicolon
125+ STRING (REGEX MATCHALL "[-][l]([^ ;])+"
126+ GDAL_LIB_NAME_WITH_PREFIX
127+ "${GDAL_CONFIG_LIBS} " )
114128 # MESSAGE("DBG GDAL_LIB_NAME_WITH_PREFIX=${GDAL_LIB_NAME_WITH_PREFIX}")
115129
116130
117- ## remove prefix -l because we need the pure name
131+ ## remove prefix -l because we need the pure name
118132
119- IF (GDAL_LIB_NAME_WITH_PREFIX)
120- STRING (REGEX REPLACE "[-][l]" "" GDAL_LIB_NAME ${GDAL_LIB_NAME_WITH_PREFIX} )
121- ENDIF (GDAL_LIB_NAME_WITH_PREFIX)
122-
123- IF (APPLE )
124- SET (GDAL_LIBRARY ${GDAL_LINK_DIRECTORIES} /lib${GDAL_LIB_NAME} .dylib CACHE STRING INTERNAL )
125- ELSE (APPLE )
126- SET (GDAL_LIBRARY ${GDAL_LINK_DIRECTORIES} /lib${GDAL_LIB_NAME} .so CACHE STRING INTERNAL )
127- ENDIF (APPLE )
133+ IF (GDAL_LIB_NAME_WITH_PREFIX)
134+ STRING (REGEX REPLACE "[-][l]" "" GDAL_LIB_NAME ${GDAL_LIB_NAME_WITH_PREFIX} )
135+ ENDIF (GDAL_LIB_NAME_WITH_PREFIX)
136+
137+ IF (APPLE )
138+ SET (GDAL_LIBRARY ${GDAL_LINK_DIRECTORIES} /lib${GDAL_LIB_NAME} .dylib CACHE STRING INTERNAL )
139+ ELSE (APPLE )
140+ SET (GDAL_LIBRARY ${GDAL_LINK_DIRECTORIES} /lib${GDAL_LIB_NAME} .so CACHE STRING INTERNAL )
141+ ENDIF (APPLE )
128142
129- ELSE (GDAL_CONFIG)
130- MESSAGE ("FindGDAL.cmake: gdal-config not found. Please set it manually. GDAL_CONFIG=${GDAL_CONFIG} " )
131- ENDIF (GDAL_CONFIG)
132-
143+ ELSE (GDAL_CONFIG)
144+ MESSAGE ("FindGDAL.cmake: gdal-config not found. Please set it manually. GDAL_CONFIG=${GDAL_CONFIG} " )
145+ ENDIF (GDAL_CONFIG)
146+ ENDIF ( NOT GDAL_INCLUDE_DIR AND NOT GDAL_LIBRARY AND NOT GDAL_CONFIG)
133147 ENDIF (UNIX )
134148ENDIF (WIN32 )
135149
0 commit comments