mirror of
				https://github.com/Icinga/icinga2.git
				synced 2025-10-31 03:03:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			186 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| #.rst:
 | |
| # FindPostgreSQL
 | |
| # --------------
 | |
| #
 | |
| # Find the PostgreSQL installation.
 | |
| #
 | |
| # In Windows, we make the assumption that, if the PostgreSQL files are
 | |
| # installed, the default directory will be C:\Program Files\PostgreSQL.
 | |
| #
 | |
| # This module defines
 | |
| #
 | |
| # ::
 | |
| #
 | |
| #   PostgreSQL_LIBRARIES - the PostgreSQL libraries needed for linking
 | |
| #   PostgreSQL_INCLUDE_DIRS - the directories of the PostgreSQL headers
 | |
| 
 | |
| #=============================================================================
 | |
| # Copyright 2004-2009 Kitware, Inc.
 | |
| #
 | |
| # Redistribution and use in source and binary forms, with or without
 | |
| # modification, are permitted provided that the following conditions
 | |
| # are met:
 | |
| #
 | |
| # * Redistributions of source code must retain the above copyright
 | |
| #   notice, this list of conditions and the following disclaimer.
 | |
| #
 | |
| # * Redistributions in binary form must reproduce the above copyright
 | |
| #   notice, this list of conditions and the following disclaimer in the
 | |
| #   documentation and/or other materials provided with the distribution.
 | |
| #
 | |
| # * Neither the names of Kitware, Inc., the Insight Software Consortium,
 | |
| #   nor the names of their contributors may be used to endorse or promote
 | |
| #   products derived from this software without specific prior written
 | |
| #   permission.
 | |
| #
 | |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | |
| # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | |
| # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | |
| # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | |
| # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | |
| # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | |
| # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | |
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | |
| # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | |
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| #
 | |
| # 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.
 | |
| #=============================================================================
 | |
| 
 | |
| # ----------------------------------------------------------------------------
 | |
| # 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.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.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0")
 | |
| 
 | |
| # Define additional search paths for root directories.
 | |
| if ( WIN32 )
 | |
|   foreach (suffix ${PostgreSQL_KNOWN_VERSIONS} )
 | |
|     set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "C:/Program Files/PostgreSQL/${suffix}" )
 | |
|   endforeach()
 | |
| else()
 | |
|   set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "/Library/PostgreSQL/*")
 | |
| endif()
 | |
| set( PostgreSQL_ROOT_DIRECTORIES
 | |
|    ENV PostgreSQL_ROOT
 | |
|    ${PostgreSQL_ROOT}
 | |
|    ${PostgreSQL_ADDITIONAL_SEARCH_PATHS}
 | |
| )
 | |
| 
 | |
| #
 | |
| # 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
 | |
|   # 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
 | |
| )
 | |
| get_filename_component(PostgreSQL_LIBRARY_DIR ${PostgreSQL_LIBRARY} PATH)
 | |
| 
 | |
| if (PostgreSQL_INCLUDE_DIR AND EXISTS "${PostgreSQL_INCLUDE_DIR}/pg_config.h")
 | |
|   file(STRINGS "${PostgreSQL_INCLUDE_DIR}/pg_config.h" pgsql_version_str
 | |
|        REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
 | |
| 
 | |
|   string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
 | |
|          PostgreSQL_VERSION_STRING "${pgsql_version_str}")
 | |
|   set(pgsql_version_str "")
 | |
| endif()
 | |
| 
 | |
| # Did we find anything?
 | |
| include(FindPackageHandleStandardArgs)
 | |
| find_package_handle_standard_args(PostgreSQL DEFAULT_MSG
 | |
|                                   PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR)
 | |
| set( PostgreSQL_FOUND  ${POSTGRESQL_FOUND})
 | |
| 
 | |
| # Now try to get the include and library path.
 | |
| if(PostgreSQL_FOUND)
 | |
| 
 | |
|   set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} )
 | |
|   set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} )
 | |
|   set(PostgreSQL_LIBRARIES ${PostgreSQL_LIBRARY_TO_FIND})
 | |
| 
 | |
|   #message("Final PostgreSQL include dir: ${PostgreSQL_INCLUDE_DIRS}")
 | |
|   #message("Final PostgreSQL library dir: ${PostgreSQL_LIBRARY_DIRS}")
 | |
|   #message("Final PostgreSQL libraries:   ${PostgreSQL_LIBRARIES}")
 | |
| endif()
 | |
| 
 | |
| mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_LIBRARY )
 |