comparison Resources/CMake/PostgreSQLConfiguration.cmake @ 172:8c7bb94adff7

trying upgrade from libpq 9.6.1 to 13.1
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 11 Dec 2020 12:49:33 +0100
parents abba5165f24e
children 30d3f68631d2
comparison
equal deleted inserted replaced
170:e712ff3eede3 172:8c7bb94adff7
19 19
20 ##################################################################### 20 #####################################################################
21 ## PostgreSQL 21 ## PostgreSQL
22 ##################################################################### 22 #####################################################################
23 23
24 INCLUDE(CheckTypeSize)
25 INCLUDE(CheckCSourceCompiles) 24 INCLUDE(CheckCSourceCompiles)
26 INCLUDE(CheckFunctionExists) 25 INCLUDE(CheckFunctionExists)
26 INCLUDE(CheckIncludeFiles)
27 INCLUDE(CheckStructHasMember) 27 INCLUDE(CheckStructHasMember)
28 INCLUDE(CheckTypeSize)
29
30
31 macro(PrepareCMakeConfigurationFile Source Target)
32 execute_process(
33 COMMAND
34 ${PYTHON_EXECUTABLE}
35 "${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/PrepareCMakeConfigurationFile.py" "${Source}" "${Target}"
36 ERROR_VARIABLE tmp
37 OUTPUT_VARIABLE out
38 )
39
40 if (tmp)
41 message(FATAL_ERROR "Cannot find ${Source}")
42 endif()
43 endmacro()
28 44
29 45
30 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBPQ) 46 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBPQ)
31 add_definitions(-DORTHANC_POSTGRESQL_STATIC=1) 47 add_definitions(-DORTHANC_POSTGRESQL_STATIC=1)
32 48
33 SET(LIBPQ_MAJOR 9) 49 SET(LIBPQ_MAJOR 13)
34 SET(LIBPQ_MINOR 6) 50 SET(LIBPQ_MINOR 1)
35 SET(LIBPQ_REVISION 1) 51 SET(LIBPQ_VERSION ${LIBPQ_MAJOR}.${LIBPQ_MINOR})
36 SET(LIBPQ_VERSION ${LIBPQ_MAJOR}.${LIBPQ_MINOR}.${LIBPQ_REVISION})
37 52
38 SET(LIBPQ_SOURCES_DIR ${CMAKE_BINARY_DIR}/postgresql-${LIBPQ_VERSION}) 53 SET(LIBPQ_SOURCES_DIR ${CMAKE_BINARY_DIR}/postgresql-${LIBPQ_VERSION})
39 DownloadPackage( 54 DownloadPackage(
40 "eaa7e267e89ea1ed2693d2b88d3cd290" 55 "551302a823a1ab48b4ed14166beebba9"
41 "http://orthanc.osimis.io/ThirdPartyDownloads/postgresql-${LIBPQ_VERSION}.tar.gz" 56 "http://orthanc.osimis.io/ThirdPartyDownloads/postgresql-${LIBPQ_VERSION}.tar.gz"
42 "${LIBPQ_SOURCES_DIR}") 57 "${LIBPQ_SOURCES_DIR}")
43 58
44 59
45 ## 60 ##
57 COPYONLY) 72 COPYONLY)
58 73
59 elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") 74 elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
60 add_definitions( 75 add_definitions(
61 -D_GNU_SOURCE 76 -D_GNU_SOURCE
62 -D_THREAD_SAFE
63 -D_POSIX_PTHREAD_SEMANTICS
64 ) 77 )
65 78
66 configure_file( 79 configure_file(
67 ${LIBPQ_SOURCES_DIR}/src/include/port/linux.h 80 ${LIBPQ_SOURCES_DIR}/src/include/port/linux.h
68 ${AUTOGENERATED_DIR}/pg_config_os.h 81 ${AUTOGENERATED_DIR}/pg_config_os.h
132 145
133 elseif(CROSS_COMPILING) 146 elseif(CROSS_COMPILING)
134 message(FATAL_ERROR "Cannot auto-generate the configuration file cross-compiling") 147 message(FATAL_ERROR "Cannot auto-generate the configuration file cross-compiling")
135 148
136 else() 149 else()
137 configure_file( 150 set(PG_VERSION "\"${LIBPQ_MAJOR}.${LIBPQ_MINOR}\"")
138 ${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/pg_config_ext.h 151 math(EXPR PG_VERSION_NUM "${LIBPQ_MAJOR} * 10000 + ${LIBPQ_MINOR}")
139 ${AUTOGENERATED_DIR}/pg_config_ext.h
140 COPYONLY
141 )
142
143 set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h;netdb.h;sys/types.h")
144 152
145 include(${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/func_accept_args.cmake) 153 include(${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/func_accept_args.cmake)
146 set(ACCEPT_TYPE_ARG3 ${ACCEPT_TYPE_ARG3}) 154 include(${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/CheckTypeAlignment.cmake)
147 155
148 check_type_size("long int" SIZE_LONG_INT) 156 check_include_file("execinfo.h" HAVE_EXECINFO_H)
149 if (SIZE_LONG_INT EQUAL 8) 157 check_include_file("getopt.h" HAVE_GETOPT_H)
158 check_include_file("ifaddrs.h" HAVE_IFADDRS_H)
159 check_include_file("inttypes.h" HAVE_INTTYPES_H)
160 check_include_file("langinfo.h" HAVE_LANGINFO_H)
161 check_include_file("memory.h" HAVE_MEMORY_H)
162 check_include_file("netinet/tcp.h" HAVE_NETINET_TCP_H)
163 check_include_file("readline/history.h" HAVE_READLINE_HISTORY_H)
164 check_include_file("readline/readline.h" HAVE_READLINE_READLINE_H)
165 check_include_file("stdbool.h" HAVE_STDBOOL_H)
166 check_include_file("stdlib.h" HAVE_STDLIB_H)
167 check_include_file("string.h" HAVE_STRING_H)
168 check_include_file("strings.h" HAVE_STRINGS_H)
169 check_include_file("sys/epoll.h" HAVE_SYS_EPOLL_H)
170 check_include_file("sys/event.h" HAVE_SYS_EVENT_H)
171 check_include_file("sys/ipc.h" HAVE_SYS_IPC_H)
172 check_include_file("sys/prctl.h" HAVE_SYS_PRCTL_H)
173 check_include_file("sys/resource.h" HAVE_SYS_RESOURCE_H)
174 check_include_file("sys/select.h" HAVE_SYS_SELECT_H)
175 check_include_file("sys/sem.h" HAVE_SYS_SEM_H)
176 check_include_file("sys/shm.h" HAVE_SYS_SHM_H)
177 check_include_file("sys/stat.h" HAVE_SYS_STAT_H)
178 check_include_file("sys/termios.h" HAVE_SYS_TERMIOS_H)
179 check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
180 check_include_file("sys/un.h" HAVE_SYS_UN_H)
181 check_include_file("termios.h" HAVE_TERMIOS_H)
182 check_include_file("unistd.h" HAVE_UNISTD_H)
183 check_include_file("wctype.h" HAVE_WCTYPE_H)
184
185 check_type_size("long long int" SIZEOF_LONG_LONG_INT)
186 if (SIZEOF_LONG_LONG_INT EQUAL 8)
187 set(HAVE_LONG_LONG_INT_64 1)
188 set(PG_INT64_TYPE "long long int")
189 endif()
190
191 check_type_size("long int" SIZEOF_LONG_INT)
192 if (SIZEOF_LONG_INT EQUAL 8)
150 set(HAVE_LONG_INT_64 1) 193 set(HAVE_LONG_INT_64 1)
151 endif() 194 set(PG_INT64_TYPE "long int")
152 195 endif()
153 check_type_size("long long int" SIZE_LONG_LONG_INT) 196
154 if (SIZE_LONG_LONG_INT EQUAL 8) 197 if (CMAKE_COMPILER_IS_GNUCXX OR
155 set(HAVE_LONG_LONG_INT_64 1) 198 "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
156 endif() 199 set(PG_PRINTF_ATTRIBUTE "gnu_printf")
157 200 set(pg_restrict "__restrict")
158 file(READ ${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/c_flexmember.c SOURCE)
159 check_c_source_compiles("${SOURCE}" c_flexmember)
160 if (c_flexmember)
161 set(FLEXIBLE_ARRAY_MEMBER "/**/")
162 endif()
163
164 if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR
165 CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
166 CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
167 set(PG_PRINTF_ATTRIBUTE "printf")
168 else() 201 else()
169 file(READ ${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/printf_archetype.c SOURCE) 202 set(pg_restrict "")
170 check_c_source_compiles("${SOURCE}" printf_archetype) 203 endif()
171 if (printf_archetype) 204
172 set(PG_PRINTF_ATTRIBUTE "gnu_printf") 205 check_type_alignment(double ALIGNOF_DOUBLE)
173 else() 206 check_type_alignment(int ALIGNOF_INT)
174 set(PG_PRINTF_ATTRIBUTE "printf") 207 check_type_alignment(long ALIGNOF_LONG)
175 endif() 208 check_type_alignment("long long int" ALIGNOF_LONG_LONG_INT)
176 endif() 209 check_type_alignment(short ALIGNOF_SHORT)
177 210
178 check_function_exists("isinf" HAVE_ISINF) 211 set(MAXIMUM_ALIGNOF ${ALIGNOF_LONG})
179 check_function_exists("getaddrinfo" HAVE_GETADDRINFO) 212 if (MAXIMUM_ALIGNOF LESS ALIGNOF_DOUBLE)
180 check_function_exists("gettimeofday" HAVE_GETTIMEOFDAY) 213 set(MAXIMUM_ALIGNOF ${ALIGNOF_DOUBLE})
181 check_function_exists("snprintf" HAVE_DECL_SNPRINTF) 214 endif()
182 check_function_exists("srandom" HAVE_SRANDOM) 215 if (HAVE_LONG_LONG_INT_64 AND (MAXIMUM_ALIGNOF LESS HAVE_LONG_LONG_INT_64))
183 check_function_exists("strlcat" HAVE_DECL_STRLCAT) 216 set(MAXIMUM_ALIGNOF ${HAVE_LONG_LONG_INT_64})
184 check_function_exists("strlcpy" HAVE_DECL_STRLCPY) 217 endif()
185 check_function_exists("unsetenv" HAVE_UNSETENV) 218
186 check_function_exists("vsnprintf" HAVE_DECL_VSNPRINTF) 219 set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h;netdb.h")
187 220 check_type_size("struct addrinfo" HAVE_STRUCT_ADDRINFO)
188 check_type_size("struct addrinfo" SIZE_STRUCT_ADDRINFO) 221 check_type_size("struct sockaddr_storage" HAVE_STRUCT_SOCKADDR_STORAGE)
189 if (HAVE_SIZE_STRUCT_ADDRINFO) 222 check_struct_has_member("struct sockaddr_storage" ss_family
190 set(HAVE_STRUCT_ADDRINFO 1) 223 "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY)
191 endif() 224 check_function_exists(unsetenv HAVE_UNSETENV)
192 225 check_function_exists(strchrnul HAVE_STRCHRNUL)
193 check_type_size("struct sockaddr_storage" SIZE_STRUCT_SOCKADDR_STORAGE) 226 check_function_exists(random HAVE_RANDOM)
194 if (HAVE_SIZE_STRUCT_SOCKADDR_STORAGE) 227 check_function_exists(srandom HAVE_SRANDOM)
195 set(HAVE_STRUCT_SOCKADDR_STORAGE 1) 228
196 endif() 229 # Hardcoded stuff from "./configure" of libpq
197 230 set(MEMSET_LOOP_LIMIT 1024)
198 set(MEMSET_LOOP_LIMIT 1024) # This is hardcoded in "postgresql-9.6.1/configure" 231 set(BLCKSZ 8192)
199 set(DEF_PGPORT 5432) # Default port number of PostgreSQL 232 set(XLOG_BLCKSZ 8192)
200 set(DEF_PGPORT_STR "\"5432\"") # Same as above, as a string 233 set(DEF_PGPORT 5432)
201 set(PG_VERSION "\"${LIBPQ_VERSION}\"") # Version of PostgreSQL, as a string 234 set(DEF_PGPORT_STR "\"${DEF_PGPORT}\"")
202 235 set(PG_KRB_SRVNAM "\"postgres\"")
203 # Version of PostgreSQL, as a number 236
204 math(EXPR PG_VERSION_NUM "${LIBPQ_MAJOR} * 10000 + ${LIBPQ_MINOR} * 100 + ${LIBPQ_REVISION}") 237 # Assume that zlib and openssl are always present
205 238 set(HAVE_LIBZ 1)
206 set(HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1) # TODO Autodetection 239 set(HAVE_LIBSSL 1)
207 240 set(HAVE_OPENSSL_INIT_SSL 1)
208 # Compute maximum alignment of any basic type. 241 set(USE_OPENSSL 1)
209 # We assume long's alignment is at least as strong as char, short, or int; 242 set(USE_OPENSSL_RANDOM 1)
210 # but we must check long long (if it exists) and double. 243
211 check_type_size("long" SIZE_LONG) 244 PrepareCMakeConfigurationFile(
212 check_type_size("long long" SIZE_LONG_LONG) 245 ${LIBPQ_SOURCES_DIR}/src/include/pg_config_ext.h.in
213 check_type_size("double" SIZE_DOUBLE) 246 ${AUTOGENERATED_DIR}/pg_config_ext.h.in)
214 set(MAXIMUM_ALIGNOF ${SIZE_LONG}) 247
215 if(SIZE_LONG_LONG AND SIZE_LONG_LONG GREATER MAXIMUM_ALIGNOF) 248 PrepareCMakeConfigurationFile(
216 set(MAXIMUM_ALIGNOF ${SIZE_LONG_LONG}) 249 ${LIBPQ_SOURCES_DIR}/src/include/pg_config.h.in
217 endif() 250 ${AUTOGENERATED_DIR}/pg_config.h.in)
218 if(SIZE_DOUBLE GREATER MAXIMUM_ALIGNOF) 251
219 set(MAXIMUM_ALIGNOF ${SIZE_DOUBLE}) 252 configure_file(
220 endif() 253 ${AUTOGENERATED_DIR}/pg_config_ext.h.in
221 254 ${AUTOGENERATED_DIR}/pg_config_ext.h)
222 check_include_file("poll.h" HAVE_POLL_H) 255
223 check_include_file("net/if.h" HAVE_NET_IF_H)
224 check_include_file("netinet/in.h" HAVE_NETINET_IN_H)
225 check_include_file("netinet/tcp.h" HAVE_NETINET_TCP_H)
226 check_include_file("sys/ioctl.h" HAVE_SYS_IOCTL_H)
227 check_include_file("sys/un.h" HAVE_SYS_UN_H)
228
229 If (NOT HAVE_NET_IF_H) # This is the case of OpenBSD
230 unset(HAVE_NET_IF_H CACHE)
231 check_include_files("sys/socket.h;net/if.h" HAVE_NET_IF_H)
232 endif()
233
234 if (NOT HAVE_NETINET_TCP_H) # This is the case of OpenBSD
235 unset(HAVE_NETINET_TCP_H CACHE)
236 check_include_files("sys/socket.h;netinet/tcp.h" HAVE_NETINET_TCP_H)
237 endif()
238
239 if (ENABLE_SSL)
240 set(HAVE_LIBSSL 1)
241 set(HAVE_SSL_GET_CURRENT_COMPRESSION 1)
242 set(USE_OPENSSL 1)
243 endif()
244
245 execute_process(
246 COMMAND
247 ${PYTHON_EXECUTABLE}
248 "${CMAKE_CURRENT_LIST_DIR}/../PostgreSQL/PrepareCMakeConfigurationFile.py"
249 "${LIBPQ_SOURCES_DIR}/src/include/pg_config.h.in"
250 "${AUTOGENERATED_DIR}/pg_config.h.in"
251 ERROR_VARIABLE NO_PG_CONFIG
252 OUTPUT_VARIABLE out
253 )
254
255 if (NO_PG_CONFIG)
256 message(FATAL_ERROR "Cannot find pg_config.h.in")
257 endif()
258
259 configure_file( 256 configure_file(
260 ${AUTOGENERATED_DIR}/pg_config.h.in 257 ${AUTOGENERATED_DIR}/pg_config.h.in
261 ${AUTOGENERATED_DIR}/pg_config.h) 258 ${AUTOGENERATED_DIR}/pg_config.h)
259
262 endif() 260 endif()
263 261
264 262
265 263
266 ## 264 ##
270 file(WRITE 268 file(WRITE
271 ${AUTOGENERATED_DIR}/pg_config_paths.h 269 ${AUTOGENERATED_DIR}/pg_config_paths.h
272 "") 270 "")
273 271
274 add_definitions( 272 add_definitions(
275 -D_REENTRANT
276 -DFRONTEND 273 -DFRONTEND
277 -DUNSAFE_STAT_OK
278 -DSYSCONFDIR="" 274 -DSYSCONFDIR=""
279 -DTCP_NODELAY 275 -DTCP_NODELAY # For performance
276
277 # Must be set for OpenSSL 1.1, not for OpenSSL 1.0??
278 -DHAVE_BIO_GET_DATA=1
279 -DHAVE_BIO_METH_NEW=1
280 ) 280 )
281 281
282 include_directories( 282 include_directories(
283 ${LIBPQ_SOURCES_DIR}/src/backend
283 ${LIBPQ_SOURCES_DIR}/src/include 284 ${LIBPQ_SOURCES_DIR}/src/include
284 ${LIBPQ_SOURCES_DIR}/src/include/libpq 285 ${LIBPQ_SOURCES_DIR}/src/include/libpq
285 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq 286 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq
286 ) 287 )
287 288
288 set(LIBPQ_SOURCES 289 set(LIBPQ_SOURCES
289 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth.c 290 # Don't use files from the "src/backend/" folder
291 ${LIBPQ_SOURCES_DIR}/src/common/base64.c
292 ${LIBPQ_SOURCES_DIR}/src/common/encnames.c
293 ${LIBPQ_SOURCES_DIR}/src/common/ip.c
294 ${LIBPQ_SOURCES_DIR}/src/common/link-canary.c
295 ${LIBPQ_SOURCES_DIR}/src/common/md5.c
296 ${LIBPQ_SOURCES_DIR}/src/common/saslprep.c
297 ${LIBPQ_SOURCES_DIR}/src/common/scram-common.c
298 ${LIBPQ_SOURCES_DIR}/src/common/sha2_openssl.c
299 ${LIBPQ_SOURCES_DIR}/src/common/string.c
300 ${LIBPQ_SOURCES_DIR}/src/common/unicode_norm.c
301 ${LIBPQ_SOURCES_DIR}/src/common/wchar.c
302 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth-scram.c
303 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth.c
290 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-connect.c 304 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-connect.c
291 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-exec.c 305 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-exec.c
292 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-lobj.c 306 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-lobj.c
293 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-misc.c 307 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-misc.c
294 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-print.c 308 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-print.c
295 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol2.c 309 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol2.c
296 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol3.c 310 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol3.c
311 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-common.c
312 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-openssl.c
297 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure.c 313 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure.c
298 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/libpq-events.c 314 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/libpq-events.c
299 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/pqexpbuffer.c 315 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/pqexpbuffer.c
300
301 # libpgport C files we always use
302 ${LIBPQ_SOURCES_DIR}/src/port/chklocale.c 316 ${LIBPQ_SOURCES_DIR}/src/port/chklocale.c
317 ${LIBPQ_SOURCES_DIR}/src/port/explicit_bzero.c
318 ${LIBPQ_SOURCES_DIR}/src/port/getaddrinfo.c
303 ${LIBPQ_SOURCES_DIR}/src/port/inet_net_ntop.c 319 ${LIBPQ_SOURCES_DIR}/src/port/inet_net_ntop.c
304 ${LIBPQ_SOURCES_DIR}/src/port/noblock.c 320 ${LIBPQ_SOURCES_DIR}/src/port/noblock.c
321 ${LIBPQ_SOURCES_DIR}/src/port/pg_strong_random.c
305 ${LIBPQ_SOURCES_DIR}/src/port/pgstrcasecmp.c 322 ${LIBPQ_SOURCES_DIR}/src/port/pgstrcasecmp.c
306 ${LIBPQ_SOURCES_DIR}/src/port/pqsignal.c 323 ${LIBPQ_SOURCES_DIR}/src/port/pqsignal.c
324 ${LIBPQ_SOURCES_DIR}/src/port/snprintf.c
325 ${LIBPQ_SOURCES_DIR}/src/port/strerror.c
307 ${LIBPQ_SOURCES_DIR}/src/port/thread.c 326 ${LIBPQ_SOURCES_DIR}/src/port/thread.c
308
309 ${LIBPQ_SOURCES_DIR}/src/backend/libpq/ip.c
310 ${LIBPQ_SOURCES_DIR}/src/backend/libpq/md5.c
311 ${LIBPQ_SOURCES_DIR}/src/backend/utils/mb/encnames.c
312 ${LIBPQ_SOURCES_DIR}/src/backend/utils/mb/wchar.c
313 ) 327 )
314
315 if (ENABLE_SSL)
316 list(APPEND LIBPQ_SOURCES
317 ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-openssl.c
318 )
319 endif()
320
321 328
322 if (CMAKE_SYSTEM_NAME STREQUAL "Linux") 329 if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
323 LIST(APPEND LIBPQ_SOURCES 330 LIST(APPEND LIBPQ_SOURCES
324 ${LIBPQ_SOURCES_DIR}/src/port/strlcpy.c 331 ${LIBPQ_SOURCES_DIR}/src/port/strlcpy.c
325 ) 332 )