193 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			193 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								#.rst:
							 | 
						||
| 
								 | 
							
								# FindPostgreSQL
							 | 
						||
| 
								 | 
							
								# --------------
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Find the PostgreSQL installation.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This module defines
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ::
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   PostgreSQL_LIBRARIES - the PostgreSQL libraries needed for linking
							 | 
						||
| 
								 | 
							
								#   PostgreSQL_INCLUDE_DIRS - the directories of the PostgreSQL headers
							 | 
						||
| 
								 | 
							
								#   PostgreSQL_LIBRARY_DIRS  - the link directories for PostgreSQL libraries
							 | 
						||
| 
								 | 
							
								#   PostgreSQL_VERSION_STRING - the version of PostgreSQL found (since CMake 2.8.8)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# Copyright 2004-2009 Kitware, Inc.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Distributed under the OSI-approved BSD License (the "License");
							 | 
						||
| 
								 | 
							
								# see accompanying file Copyright.txt for details.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This software is distributed WITHOUT ANY WARRANTY; without even the
							 | 
						||
| 
								 | 
							
								# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
							 | 
						||
| 
								 | 
							
								# See the License for more information.
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# (To distribute this file outside of CMake, substitute the full
							 | 
						||
| 
								 | 
							
								#  License text for the above reference.)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# ----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# History:
							 | 
						||
| 
								 | 
							
								# This module is derived from the module originally found in the VTK source tree.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# Note:
							 | 
						||
| 
								 | 
							
								# PostgreSQL_ADDITIONAL_VERSIONS is a variable that can be used to set the
							 | 
						||
| 
								 | 
							
								# version mumber of the implementation of PostgreSQL.
							 | 
						||
| 
								 | 
							
								# In Windows the default installation of PostgreSQL uses that as part of the path.
							 | 
						||
| 
								 | 
							
								# E.g C:\Program Files\PostgreSQL\8.4.
							 | 
						||
| 
								 | 
							
								# Currently, the following version numbers are known to this module:
							 | 
						||
| 
								 | 
							
								# "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0"
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# To use this variable just do something like this:
							 | 
						||
| 
								 | 
							
								# set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4")
							 | 
						||
| 
								 | 
							
								# before calling find_package(PostgreSQL) in your CMakeLists.txt file.
							 | 
						||
| 
								 | 
							
								# This will mean that the versions you set here will be found first in the order
							 | 
						||
| 
								 | 
							
								# specified before the default ones are searched.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# You may need to manually set:
							 | 
						||
| 
								 | 
							
								#  PostgreSQL_INCLUDE_DIR  - the path to where the PostgreSQL include files are.
							 | 
						||
| 
								 | 
							
								#  PostgreSQL_LIBRARY_DIR  - The path to where the PostgreSQL library files are.
							 | 
						||
| 
								 | 
							
								# If FindPostgreSQL.cmake cannot find the include files or the library files.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# The following variables are set if PostgreSQL is found:
							 | 
						||
| 
								 | 
							
								#  PostgreSQL_FOUND         - Set to true when PostgreSQL is found.
							 | 
						||
| 
								 | 
							
								#  PostgreSQL_INCLUDE_DIRS  - Include directories for PostgreSQL
							 | 
						||
| 
								 | 
							
								#  PostgreSQL_LIBRARY_DIRS  - Link directories for PostgreSQL libraries
							 | 
						||
| 
								 | 
							
								#  PostgreSQL_LIBRARIES     - The PostgreSQL libraries.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# If you have installed PostgreSQL in a non-standard location.
							 | 
						||
| 
								 | 
							
								# (Please note that in the following comments, it is assumed that <Your Path>
							 | 
						||
| 
								 | 
							
								# points to the root directory of the include directory of PostgreSQL.)
							 | 
						||
| 
								 | 
							
								# Then you have three options.
							 | 
						||
| 
								 | 
							
								# 1) After CMake runs, set PostgreSQL_INCLUDE_DIR to <Your Path>/include and
							 | 
						||
| 
								 | 
							
								#    PostgreSQL_LIBRARY_DIR to wherever the library pq (or libpq in windows) is
							 | 
						||
| 
								 | 
							
								# 2) Use CMAKE_INCLUDE_PATH to set a path to <Your Path>/PostgreSQL<-version>. This will allow find_path()
							 | 
						||
| 
								 | 
							
								#    to locate PostgreSQL_INCLUDE_DIR by utilizing the PATH_SUFFIXES option. e.g. In your CMakeLists.txt file
							 | 
						||
| 
								 | 
							
								#    set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "<Your Path>/include")
							 | 
						||
| 
								 | 
							
								# 3) Set an environment variable called ${PostgreSQL_ROOT} that points to the root of where you have
							 | 
						||
| 
								 | 
							
								#    installed PostgreSQL, e.g. <Your Path>.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# ----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_INCLUDE_PATH_DESCRIPTION "top-level directory containing the PostgreSQL include directories. E.g /usr/local/include/PostgreSQL/8.4 or C:/Program Files/PostgreSQL/8.4/include")
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_INCLUDE_DIR_MESSAGE "Set the PostgreSQL_INCLUDE_DIR cmake cache entry to the ${PostgreSQL_INCLUDE_PATH_DESCRIPTION}")
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_LIBRARY_PATH_DESCRIPTION "top-level directory containing the PostgreSQL libraries.")
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_LIBRARY_DIR_MESSAGE "Set the PostgreSQL_LIBRARY_DIR cmake cache entry to the ${PostgreSQL_LIBRARY_PATH_DESCRIPTION}")
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_ROOT_DIR_MESSAGE "Set the PostgreSQL_ROOT system variable to where PostgreSQL is found on the machine E.g C:/Program Files/PostgreSQL/8.4")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS}
							 | 
						||
| 
								 | 
							
								    "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Define additional search paths for root directories.
							 | 
						||
| 
								 | 
							
								set( PostgreSQL_ROOT_DIRECTORIES
							 | 
						||
| 
								 | 
							
								   ENV PostgreSQL_ROOT
							 | 
						||
| 
								 | 
							
								   ${PostgreSQL_ROOT}
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								foreach(suffix ${PostgreSQL_KNOWN_VERSIONS})
							 | 
						||
| 
								 | 
							
								  if(WIN32)
							 | 
						||
| 
								 | 
							
								    list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES
							 | 
						||
| 
								 | 
							
								        "PostgreSQL/${suffix}/lib")
							 | 
						||
| 
								 | 
							
								    list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES
							 | 
						||
| 
								 | 
							
								        "PostgreSQL/${suffix}/include")
							 | 
						||
| 
								 | 
							
								    list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES
							 | 
						||
| 
								 | 
							
								        "PostgreSQL/${suffix}/include/server")
							 | 
						||
| 
								 | 
							
								  endif()
							 | 
						||
| 
								 | 
							
								  if(UNIX)
							 | 
						||
| 
								 | 
							
								    list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES
							 | 
						||
| 
								 | 
							
								        "postgresql/${suffix}/server")
							 | 
						||
| 
								 | 
							
								  endif()
							 | 
						||
| 
								 | 
							
								endforeach()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Look for an installation.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								find_path(PostgreSQL_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								  NAMES libpq-fe.h
							 | 
						||
| 
								 | 
							
								  PATHS
							 | 
						||
| 
								 | 
							
								   # Look in other places.
							 | 
						||
| 
								 | 
							
								   ${PostgreSQL_ROOT_DIRECTORIES}
							 | 
						||
| 
								 | 
							
								  PATH_SUFFIXES
							 | 
						||
| 
								 | 
							
								    pgsql
							 | 
						||
| 
								 | 
							
								    postgresql
							 | 
						||
| 
								 | 
							
								    include
							 | 
						||
| 
								 | 
							
								    ${PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES}
							 | 
						||
| 
								 | 
							
								  # Help the user find it if we cannot.
							 | 
						||
| 
								 | 
							
								  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_path(PostgreSQL_TYPE_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								  NAMES catalog/pg_type.h
							 | 
						||
| 
								 | 
							
								  PATHS
							 | 
						||
| 
								 | 
							
								   # Look in other places.
							 | 
						||
| 
								 | 
							
								   ${PostgreSQL_ROOT_DIRECTORIES}
							 | 
						||
| 
								 | 
							
								  PATH_SUFFIXES
							 | 
						||
| 
								 | 
							
								    postgresql
							 | 
						||
| 
								 | 
							
								    pgsql/server
							 | 
						||
| 
								 | 
							
								    postgresql/server
							 | 
						||
| 
								 | 
							
								    include/server
							 | 
						||
| 
								 | 
							
								    ${PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES}
							 | 
						||
| 
								 | 
							
								  # Help the user find it if we cannot.
							 | 
						||
| 
								 | 
							
								  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The PostgreSQL library.
							 | 
						||
| 
								 | 
							
								set (PostgreSQL_LIBRARY_TO_FIND pq)
							 | 
						||
| 
								 | 
							
								# Setting some more prefixes for the library
							 | 
						||
| 
								 | 
							
								set (PostgreSQL_LIB_PREFIX "")
							 | 
						||
| 
								 | 
							
								if ( WIN32 )
							 | 
						||
| 
								 | 
							
								  set (PostgreSQL_LIB_PREFIX ${PostgreSQL_LIB_PREFIX} "lib")
							 | 
						||
| 
								 | 
							
								  set (PostgreSQL_LIBRARY_TO_FIND ${PostgreSQL_LIB_PREFIX}${PostgreSQL_LIBRARY_TO_FIND})
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_library(PostgreSQL_LIBRARY
							 | 
						||
| 
								 | 
							
								 NAMES ${PostgreSQL_LIBRARY_TO_FIND}
							 | 
						||
| 
								 | 
							
								 PATHS
							 | 
						||
| 
								 | 
							
								   ${PostgreSQL_ROOT_DIRECTORIES}
							 | 
						||
| 
								 | 
							
								 PATH_SUFFIXES
							 | 
						||
| 
								 | 
							
								   lib
							 | 
						||
| 
								 | 
							
								   ${PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES}
							 | 
						||
| 
								 | 
							
								 # Help the user find it if we cannot.
							 | 
						||
| 
								 | 
							
								 DOC "The ${PostgreSQL_LIBRARY_DIR_MESSAGE}"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								get_filename_component(PostgreSQL_LIBRARY_DIR ${PostgreSQL_LIBRARY} PATH)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (PostgreSQL_INCLUDE_DIR)
							 | 
						||
| 
								 | 
							
								  # Some platforms include multiple pg_config.hs for multi-lib configurations
							 | 
						||
| 
								 | 
							
								  # This is a temporary workaround.  A better solution would be to compile
							 | 
						||
| 
								 | 
							
								  # a dummy c file and extract the value of the symbol.
							 | 
						||
| 
								 | 
							
								  file(GLOB _PG_CONFIG_HEADERS "${PostgreSQL_INCLUDE_DIR}/pg_config*.h")
							 | 
						||
| 
								 | 
							
								  foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
							 | 
						||
| 
								 | 
							
								    if(EXISTS "${_PG_CONFIG_HEADER}")
							 | 
						||
| 
								 | 
							
								      file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
							 | 
						||
| 
								 | 
							
								           REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
							 | 
						||
| 
								 | 
							
								      if(pgsql_version_str)
							 | 
						||
| 
								 | 
							
								        string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*"
							 | 
						||
| 
								 | 
							
								               "\\1" PostgreSQL_VERSION_STRING "${pgsql_version_str}")
							 | 
						||
| 
								 | 
							
								        break()
							 | 
						||
| 
								 | 
							
								      endif()
							 | 
						||
| 
								 | 
							
								    endif()
							 | 
						||
| 
								 | 
							
								  endforeach()
							 | 
						||
| 
								 | 
							
								  unset(pgsql_version_str)
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Did we find anything?
							 | 
						||
| 
								 | 
							
								#nclude(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
							 | 
						||
| 
								 | 
							
								find_package_handle_standard_args(PostgreSQL
							 | 
						||
| 
								 | 
							
								                                  REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								                                  VERSION_VAR PostgreSQL_VERSION_STRING)
							 | 
						||
| 
								 | 
							
								set(PostgreSQL_FOUND  ${POSTGRESQL_FOUND})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Now try to get the include and library path.
							 | 
						||
| 
								 | 
							
								if(PostgreSQL_FOUND)
							 | 
						||
| 
								 | 
							
								  set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} ${PostgreSQL_TYPE_INCLUDE_DIR} )
							 | 
						||
| 
								 | 
							
								  set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} )
							 | 
						||
| 
								 | 
							
								  set(PostgreSQL_LIBRARIES ${PostgreSQL_LIBRARY_TO_FIND})
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR PostgreSQL_LIBRARY )
							 |