1# Hide symbols by default in shared libraries
2set(CMAKE_C_VISIBILITY_PRESET "hidden")
3
4if(UNIX)
5  set(CMAKE_C_STANDARD 11)
6  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${PG_LIBDIR}")
7  set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -L${PG_LIBDIR}")
8  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PG_CFLAGS}")
9  set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} ${PG_CPPFLAGS}")
10  set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
11endif()
12
13if(APPLE)
14  set(CMAKE_SHARED_LINKER_FLAGS
15      "${CMAKE_SHARED_LINKER_FLAGS} -multiply_defined suppress")
16  set(CMAKE_MODULE_LINKER_FLAGS
17      "${CMAKE_MODULE_LINKER_FLAGS} -multiply_defined suppress -Wl,-undefined,dynamic_lookup -bundle_loader ${PG_BINDIR}/postgres"
18  )
19elseif(WIN32)
20  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
21  set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO")
22endif()
23
24# PG_LDFLAGS can have strange values if not found, so we just add the flags if
25# they are defined.
26if(PG_LDFLAGS)
27  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PG_LDFLAGS}")
28  set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PG_LDFLAGS}")
29endif()
30
31include_directories(${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/tsl/src
32                    ${PROJECT_BINARY_DIR}/src ${PROJECT_BINARY_DIR}/tsl/src)
33
34include_directories(SYSTEM ${PG_INCLUDEDIR_SERVER})
35
36# Only Windows and FreeBSD need the base include/ dir instead of
37# include/server/, and including both causes problems on Ubuntu where they
38# frequently get out of sync
39if(WIN32 OR (CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly"))
40  include_directories(SYSTEM ${PG_INCLUDEDIR})
41endif()
42
43if(WIN32)
44  link_directories(${PROJECT_BINARY_DIR}/src)
45  set(CMAKE_MODULE_LINKER_FLAGS
46      "${CMAKE_MODULE_LINKER_FLAGS} ${PG_LIBDIR}/postgres.lib ws2_32.lib Version.lib ${PROJECT_NAME}-${PROJECT_VERSION_MOD}.lib"
47  )
48  set(CMAKE_C_FLAGS "-D_CRT_SECURE_NO_WARNINGS")
49  include_directories(SYSTEM ${PG_INCLUDEDIR_SERVER}/port/win32)
50
51  if(MSVC)
52    include_directories(SYSTEM ${PG_INCLUDEDIR_SERVER}/port/win32_msvc)
53  endif(MSVC)
54endif(WIN32)
55
56# Name of library with test-specific code
57set(TSL_TESTS_LIB_NAME ${PROJECT_NAME}-tsl-tests)
58