mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			150 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
# Find PostgreSQL
 | 
						|
# ~~~~~~~~~~~~~~~
 | 
						|
# Copyright (c) 2007, Martin Dobias <wonder.sk at gmail.com>
 | 
						|
# Redistribution and use is allowed according to the terms of the BSD license.
 | 
						|
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
 | 
						|
#
 | 
						|
# CMake module to search for PostgreSQL library
 | 
						|
#
 | 
						|
# pg_config is searched for in POSTGRES_CONFIG dir,
 | 
						|
# default /usr/bin
 | 
						|
#
 | 
						|
# If it's found it sets POSTGRES_FOUND to TRUE
 | 
						|
# and following variables are set:
 | 
						|
#    POSTGRES_INCLUDE_DIR
 | 
						|
#    POSTGRES_LIBRARY
 | 
						|
 | 
						|
# First try using the cmake native FindPostgreSQL script.
 | 
						|
# For cmake < 3.20 this also requires server components.
 | 
						|
# Once the minimum cmake version for QGIS is bumped to 3.20
 | 
						|
# we can get rid of our custom script
 | 
						|
find_package(PostgreSQL)
 | 
						|
if(${PostgreSQL_FOUND})
 | 
						|
  set(POSTGRES_INCLUDE_DIR ${PostgreSQL_INCLUDE_DIRS})
 | 
						|
  set(POSTGRES_LIBRARY ${PostgreSQL_LIBRARIES})
 | 
						|
  set(POSTGRES_FOUND TRUE)
 | 
						|
  if(EXISTS "${POSTGRES_INCLUDE_DIR}/pg_config.h")
 | 
						|
    set(HAVE_PGCONFIG TRUE)
 | 
						|
  endif()
 | 
						|
  return()
 | 
						|
endif()
 | 
						|
 | 
						|
IF(ANDROID)
 | 
						|
  SET(POSTGRES_INCLUDE_DIR ${POSTGRES_INCLUDE_DIR} CACHE STRING INTERNAL)
 | 
						|
  SET(POSTGRES_LIBRARY ${PG_TMP}/libpq.so CACHE STRING INTERNAL)
 | 
						|
ENDIF(ANDROID)
 | 
						|
 | 
						|
IF(WIN32 AND NOT ANDROID)
 | 
						|
  IF (NOT POSTGRES_INCLUDE_DIR)
 | 
						|
    FIND_PATH(POSTGRES_INCLUDE_DIR libpq-fe.h 
 | 
						|
      /usr/local/include 
 | 
						|
      /usr/include 
 | 
						|
      c:/msys/local/include
 | 
						|
      "$ENV{LIB_DIR}/include/postgresql"
 | 
						|
      "$ENV{LIB_DIR}/include"
 | 
						|
      )
 | 
						|
  ENDIF (NOT POSTGRES_INCLUDE_DIR)
 | 
						|
 | 
						|
  IF (NOT POSTGRES_LIBRARY)
 | 
						|
    FIND_LIBRARY(POSTGRES_LIBRARY NAMES pq libpq libpqdll PATHS 
 | 
						|
      /usr/local/lib 
 | 
						|
      /usr/lib 
 | 
						|
      c:/msys/local/lib
 | 
						|
      "$ENV{LIB_DIR}/lib"
 | 
						|
      )
 | 
						|
  ENDIF (NOT POSTGRES_LIBRARY)
 | 
						|
 | 
						|
ELSE(WIN32)
 | 
						|
  IF(UNIX) 
 | 
						|
 | 
						|
    SET(POSTGRES_CONFIG_PREFER_PATH "$ENV{POSTGRES_HOME}/bin" CACHE STRING "preferred path to PG (pg_config)")
 | 
						|
    FIND_PROGRAM(POSTGRES_CONFIG pg_config
 | 
						|
      ${POSTGRES_CONFIG_PREFER_PATH}
 | 
						|
      /usr/local/pgsql/bin/
 | 
						|
      /usr/local/bin/
 | 
						|
      /usr/bin/
 | 
						|
      )
 | 
						|
    # MESSAGE("DBG POSTGRES_CONFIG ${POSTGRES_CONFIG}")
 | 
						|
    
 | 
						|
    IF (POSTGRES_CONFIG) 
 | 
						|
      # set INCLUDE_DIR
 | 
						|
      EXEC_PROGRAM(${POSTGRES_CONFIG}
 | 
						|
        ARGS --includedir
 | 
						|
        OUTPUT_VARIABLE PG_TMP)
 | 
						|
      SET(POSTGRES_INCLUDE_DIR ${PG_TMP} CACHE STRING INTERNAL)
 | 
						|
 | 
						|
      # set LIBRARY_DIR
 | 
						|
      EXEC_PROGRAM(${POSTGRES_CONFIG}
 | 
						|
        ARGS --libdir
 | 
						|
        OUTPUT_VARIABLE PG_TMP)
 | 
						|
      IF (APPLE)
 | 
						|
        SET(POSTGRES_LIBRARY ${PG_TMP}/libpq.dylib CACHE STRING INTERNAL)
 | 
						|
      ELSEIF (CYGWIN)
 | 
						|
        EXEC_PROGRAM(${POSTGRES_CONFIG}
 | 
						|
        ARGS --libs
 | 
						|
        OUTPUT_VARIABLE PG_TMP)
 | 
						|
 | 
						|
        STRING(REGEX MATCHALL "[-][L]([^ ;])+" _LDIRS "${PG_TMP}")
 | 
						|
        STRING(REGEX MATCHALL "[-][l]([^ ;])+" _LLIBS "${PG_TMP}")
 | 
						|
 | 
						|
        FIND_LIBRARY(POSTGRES_LIBRARY NAMES pq PATHS /usr/lib /usr/local/lib)
 | 
						|
 | 
						|
        SET(_DIRS)
 | 
						|
        FOREACH(_DIR ${_LDIRS})
 | 
						|
          STRING(REPLACE "-L" "" _DIR ${_DIR})
 | 
						|
          SET(_DIRS ${_DIRS} ${_DIR})
 | 
						|
        ENDFOREACH(_DIR ${_LDIRS})
 | 
						|
 | 
						|
        SET(_LIBS)
 | 
						|
        FOREACH(_LIB ${_LLIBS})
 | 
						|
          STRING(REPLACE "-l" "" _LIB ${_LIB})
 | 
						|
          SET(_LIBS ${_LIBS} ${_LIB})
 | 
						|
        ENDFOREACH(_LIB ${_LDIRS})
 | 
						|
 | 
						|
        FOREACH(_LIBNAME ${_LIBS})
 | 
						|
	  UNSET(PG_LIB CACHE)
 | 
						|
          FIND_LIBRARY(PG_LIB NAMES ${_LIBNAME} PATHS ${_DIRS} /usr/lib /usr/local/lib)
 | 
						|
	  IF(NOT PG_LIB)
 | 
						|
	    MESSAGE(FATAL "PostgreSQL dependency library ${_LIBNAME} not found")
 | 
						|
	  ENDIF(NOT PG_LIB)
 | 
						|
          SET(POSTGRES_LIBRARY ${POSTGRES_LIBRARY} ${PG_LIB})
 | 
						|
        ENDFOREACH(_LIBNAME ${_LIBS})
 | 
						|
 | 
						|
      ELSE (CYGWIN)
 | 
						|
        FIND_LIBRARY(POSTGRES_LIBRARY NAMES pq libpq libpqdll PATHS ${PG_TMP}/lib)
 | 
						|
      ENDIF (APPLE)
 | 
						|
    ENDIF(POSTGRES_CONFIG)
 | 
						|
 | 
						|
  ENDIF(UNIX)
 | 
						|
ENDIF(WIN32 AND NOT ANDROID)
 | 
						|
 | 
						|
 | 
						|
IF (POSTGRES_INCLUDE_DIR AND POSTGRES_LIBRARY)
 | 
						|
   SET(POSTGRES_FOUND TRUE)
 | 
						|
   IF(EXISTS "${POSTGRES_INCLUDE_DIR}/pg_config.h")
 | 
						|
     SET(HAVE_PGCONFIG TRUE)
 | 
						|
   ELSE(EXISTS "${POSTGRES_INCLUDE_DIR}/pg_config.h")
 | 
						|
     SET(HAVE_PGCONFIG FALSE)
 | 
						|
   ENDIF(EXISTS "${POSTGRES_INCLUDE_DIR}/pg_config.h")
 | 
						|
ENDIF (POSTGRES_INCLUDE_DIR AND POSTGRES_LIBRARY)
 | 
						|
 | 
						|
 | 
						|
IF (POSTGRES_FOUND)
 | 
						|
 | 
						|
   IF (NOT POSTGRES_FIND_QUIETLY)
 | 
						|
      MESSAGE(STATUS "Found PostgreSQL: ${POSTGRES_LIBRARY}")
 | 
						|
   ENDIF (NOT POSTGRES_FIND_QUIETLY)
 | 
						|
 | 
						|
ELSE (POSTGRES_FOUND)
 | 
						|
 | 
						|
   #SET (POSTGRES_INCLUDE_DIR "")
 | 
						|
   #SET (POSTGRES_LIBRARY "")
 | 
						|
 | 
						|
   IF (POSTGRES_FIND_REQUIRED)
 | 
						|
      MESSAGE(FATAL_ERROR "Could not find PostgreSQL")
 | 
						|
   ELSE (POSTGRES_FIND_REQUIRED)
 | 
						|
      MESSAGE(STATUS "Could not find PostgreSQL")
 | 
						|
   ENDIF (POSTGRES_FIND_REQUIRED)
 | 
						|
 | 
						|
ENDIF (POSTGRES_FOUND)
 |