-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFindPostgres.cmake
134 lines (111 loc) · 3.89 KB
/
FindPostgres.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# 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
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)
SET(POSTGRES_LIBRARY ${PG_TMP}/libpq.so CACHE STRING INTERNAL)
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)