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