Last active
October 9, 2017 23:22
-
-
Save stalkerg/9da894195628d24b3cf25f399af3714e to your computer and use it in GitHub Desktop.
cmake_10_v2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/CMakeLists.txt b/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..795f34db48 | |
--- /dev/null | |
+++ b/CMakeLists.txt | |
@@ -0,0 +1,1429 @@ | |
+cmake_minimum_required(VERSION 2.8.4) | |
+ | |
+project(Postgres C) | |
+ | |
+include(CheckTypeSize) | |
+include(CheckSymbolExists) | |
+include(CheckFunctionExists) | |
+include(CheckIncludeFiles) | |
+include(CheckCSourceCompiles) | |
+include(CheckCSourceRuns) | |
+include(TestBigEndian) | |
+include(CheckStructHasMember) | |
+ | |
+if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) | |
+ message(STATUS "${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}") | |
+ message(FATAL_ERROR "You must use another folder for build PostgreSQL") | |
+endif() | |
+ | |
+set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) | |
+ | |
+set(POSTGRES_MAJOR_VERSION 10) | |
+set(POSTGRES_MINOR_VERSION 0) | |
+set(POSTGRES_PATCH_VERSION 0) | |
+set(POSTGRES_VERSION | |
+ ${POSTGRES_MAJOR_VERSION}.${POSTGRES_MINOR_VERSION}.${POSTGRES_PATCH_VERSION}) | |
+ | |
+set(PG_VERSION "10.0") | |
+set(PG_VERSION_NUM 100000) | |
+set(PACKAGE_BUGREPORT "[email protected]") | |
+ | |
+ # Offer the user the choice of overriding the installation directories | |
+set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries") | |
+set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables") | |
+set(INSTALL_INCLUDE_DIR include CACHE PATH | |
+ "Installation directory for header files") | |
+ | |
+if(NOT PGBINDIR) | |
+ set(PGBINDIR "${CMAKE_INSTALL_PREFIX}/bin") | |
+endif(NOT PGBINDIR) | |
+ | |
+if(NOT PGSHAREDIR) | |
+ set(PGSHAREDIR "${CMAKE_INSTALL_PREFIX}/share/postgresql") | |
+endif(NOT PGSHAREDIR) | |
+ | |
+if(NOT SYSCONFDIR) | |
+ set(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc") | |
+endif(NOT SYSCONFDIR) | |
+ | |
+if(NOT INCLUDEDIR) | |
+ set(INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include") | |
+endif(NOT INCLUDEDIR) | |
+ | |
+if(NOT PKGINCLUDEDIR) | |
+ set(PKGINCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include") | |
+endif(NOT PKGINCLUDEDIR) | |
+ | |
+if(NOT INCLUDEDIRSERVER) | |
+ set(INCLUDEDIRSERVER "${CMAKE_INSTALL_PREFIX}/include/server") | |
+endif(NOT INCLUDEDIRSERVER) | |
+ | |
+if(MSVC) | |
+ if(NOT LIBDIR) | |
+ set(LIBDIR "${CMAKE_INSTALL_PREFIX}/bin") | |
+ endif(NOT LIBDIR) | |
+ | |
+ if(NOT PKGLIBDIR) | |
+ set(PKGLIBDIR "${CMAKE_INSTALL_PREFIX}/bin") | |
+ endif(NOT PKGLIBDIR) | |
+else() | |
+ if(NOT LIBDIR) | |
+ set(LIBDIR "${CMAKE_INSTALL_PREFIX}/lib") | |
+ endif(NOT LIBDIR) | |
+ | |
+ if(NOT PKGLIBDIR) | |
+ set(PKGLIBDIR "${CMAKE_INSTALL_PREFIX}/lib") | |
+ endif(NOT PKGLIBDIR) | |
+endif() | |
+ | |
+if(NOT LOCALEDIR) | |
+ set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale") | |
+endif(NOT LOCALEDIR) | |
+ | |
+if(NOT DOCDIR) | |
+ set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/") | |
+endif(NOT DOCDIR) | |
+ | |
+if(NOT HTMLDIR) | |
+ set(HTMLDIR "${CMAKE_INSTALL_PREFIX}/share/doc/") | |
+endif(NOT HTMLDIR) | |
+ | |
+if(NOT MANDIR) | |
+ set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man") | |
+endif(NOT MANDIR) | |
+ | |
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") | |
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -multiply_defined suppress -undefined dynamic_lookup") | |
+ set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -multiply_defined suppress -undefined dynamic_lookup") | |
+endif() | |
+ | |
+if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|OpenBSD") | |
+ set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-x,-soname,") | |
+endif() | |
+ | |
+set(PLUGIN_TYPE MODULE) | |
+ | |
+if(MSVC) | |
+ # Try hide warnings | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS ") | |
+ option(USE_FP_STRICT "use strict mode for float and double in MSVC" ON) | |
+ if (USE_FP_STRICT) | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:strict") | |
+ endif() | |
+ # We can't use MODULE because CMake get export symbols only for SHARED. | |
+ set(PLUGIN_TYPE SHARED) | |
+endif() | |
+ | |
+if(CMAKE_SYSTEM_NAME STREQUAL "AIX" AND "${CMAKE_C_FLAGS}" MATCHES "aix64") | |
+ SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> <LINK_FLAGS> -X64 cr <TARGET> <OBJECTS>") | |
+ SET(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> <LINK_FLAGS> -X64 r <TARGET> <OBJECTS>") | |
+endif() | |
+ | |
+test_big_endian(WORDS_BIGENDIAN) | |
+set(FIND_LIBRARY_USE_LIB64_PATHS ON) | |
+ | |
+find_package(Perl REQUIRED) | |
+option(WITH_PERL "libperl is optional" OFF) | |
+if(WITH_PERL) | |
+ find_package(PerlLibs) | |
+endif() | |
+if(PERLLIBS_FOUND) | |
+ EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ccopts OUTPUT_VARIABLE PERL_CFLAGS) | |
+ EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ldopts OUTPUT_VARIABLE PERL_LDFLAGS) | |
+ STRING(REGEX REPLACE "[\r\n]" " " PERL_CFLAGS ${PERL_CFLAGS}) | |
+ STRING(REGEX REPLACE " +$" "" PERL_CFLAGS ${PERL_CFLAGS}) | |
+ STRING(STRIP "${PERL_CFLAGS}" PERL_CFLAGS) | |
+ STRING(REGEX REPLACE "[\r\n]" " " PERL_LDFLAGS ${PERL_LDFLAGS}) | |
+ STRING(REGEX REPLACE " +$" "" PERL_LDFLAGS ${PERL_LDFLAGS}) | |
+ STRING(REGEX REPLACE "-lperl" "" PERL_LDFLAGS ${PERL_LDFLAGS}) | |
+ if(MINGW AND NOT MSYS) | |
+ STRING(REGEX REPLACE "\\\\" "/" PERL_LDFLAGS ${PERL_LDFLAGS}) | |
+ endif() | |
+ STRING(STRIP "${PERL_LDFLAGS}" PERL_LDFLAGS) | |
+endif() | |
+ | |
+option(WITH_TAP "try enable TAP tests" OFF) | |
+# It's really pain to use the TAP tests without env cmake command | |
+if (CMAKE_VERSION VERSION_GREATER "3.2.0") | |
+ find_program(PROVE prove) | |
+endif() | |
+if(NOT WITH_TAP) | |
+ set(PROVE "") | |
+endif() | |
+ | |
+find_package(BISON REQUIRED) | |
+find_package(FLEX REQUIRED) | |
+find_package(Threads) | |
+ | |
+option(WITH_OPENSSL "OPENSSL is optional" OFF) | |
+if(WITH_OPENSSL) | |
+ find_package(OpenSSL) | |
+endif() | |
+find_package(ZLIB) | |
+ | |
+option(WITH_PYTHON "Python is optional" OFF) | |
+if(WITH_PYTHON) | |
+ find_package(PythonInterp) | |
+ find_package(PythonLibs) | |
+endif() | |
+find_package(SELinux) | |
+ | |
+option(WITH_LIBXML "LIBXML is optional" OFF) | |
+if(WITH_LIBXML) | |
+ find_package(LibXml2) | |
+ find_package(LibXslt) | |
+endif() | |
+ | |
+option(WITH_TCL "TCL is optional" OFF) | |
+if(WITH_TCL) | |
+ find_package(TCL) | |
+endif() | |
+find_package(LibSocket) | |
+ | |
+option(WITH_ICU "ICU is optional" OFF) | |
+if(WITH_ICU) | |
+ find_package(ICU 4.0 COMPONENTS i18n REQUIRED) | |
+endif() | |
+if(ICU_FOUND) | |
+ set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${ICU_INCLUDE_DIRS}") | |
+ check_include_files(unicode/ucol.h HAVE_UCOL_H) | |
+ if(NOT HAVE_UCOL_H) | |
+ message(FATAL_ERROR "unicode/ucol.h not found") | |
+ endif() | |
+ set(USE_ICU 1) | |
+endif() | |
+option(USE_PAM "build with PAM support" OFF) | |
+if(USE_PAM) | |
+ find_library(PAM_LIB pam) | |
+ if(NOT PAM_LIB) | |
+ message(ERROR "library 'pam' is required for PAM") | |
+ endif() | |
+endif() | |
+ | |
+option(USE_LDAP "build with LDAP support" OFF) | |
+if(USE_LDAP) | |
+ find_package(LDAP REQUIRED) | |
+endif() | |
+ | |
+if(WIN32 OR MINGW) | |
+ set(NEED_REPL_SNPRINTF ON) | |
+else() | |
+ set(NEED_REPL_SNPRINTF OFF) | |
+endif() | |
+ | |
+option(ENABLE_NLS "Define if you want National Language Support" OFF) | |
+if(ENABLE_NLS) | |
+ include(MakeNLS) | |
+ find_package(Gettext REQUIRED) | |
+ find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext) | |
+ if(NOT GETTEXT_XGETTEXT_EXECUTABLE) | |
+ message(FATAL_ERROR "xgettext not found") | |
+ endif(NOT GETTEXT_XGETTEXT_EXECUTABLE) | |
+ if(NOT NLS_LANGUAGES) | |
+ set(NLS_LANGUAGES "ko;cs;pt_BR;zh_CN;ru;fr;de;es;it;tr;ja;pl;zh_TW") | |
+ endif() | |
+ | |
+ if(NOT NEED_REPL_SNPRINTF) | |
+ check_c_source_runs(" | |
+ #include <stdio.h> | |
+ #include <string.h> | |
+ | |
+ int main() | |
+ { | |
+ char buf[100]; | |
+ | |
+ /* can it swap arguments? */ | |
+ snprintf(buf, 100, \"%2\$d %1\$d\", 3, 4); | |
+ if (strcmp(buf, \"4 3\") != 0) | |
+ return 1; | |
+ return 0; | |
+ } | |
+ " SNPRINTF_ARG_CONTROL) | |
+ if(NOT SNPRINTF_ARG_CONTROL) | |
+ set(NEED_REPL_SNPRINTF ON) | |
+ endif() | |
+ endif() | |
+endif() | |
+ | |
+option(ENABLE_GSS "Define to build with GSSAPI support." OFF) | |
+if(ENABLE_GSS) | |
+ check_include_files(gssapi/gssapi.h HAVE_GSSAPI_GSSAPI_H) | |
+ check_include_files(gssapi.h HAVE_GSSAPI_H) | |
+ set(PG_KRB_SRVTAB "FILE:${SYSCONFDIR}/krb5.keytab") | |
+ if(WIN32) | |
+ SET(GSS_LIBS "-lgssapi32") | |
+ else() | |
+ set(CMAKE_REQUIRED_LIBRARIES_OLD ${CMAKE_REQUIRED_LIBRARIES}) | |
+ set(CMAKE_REQUIRED_LIBRARIES "-lgssapi_krb5") | |
+ check_function_exists(gss_init_sec_context HAVE_GSS_INIT) | |
+ if(NOT HAVE_GSS_INIT) | |
+ set(CMAKE_REQUIRED_LIBRARIES "-lgss") | |
+ check_function_exists(gss_init_sec_context HAVE_GSS_INIT) | |
+ if(NOT HAVE_GSS_INIT) | |
+ set(CMAKE_REQUIRED_LIBRARIES "-lgssapi -lkrb5 -lcrypto") | |
+ check_function_exists(gss_init_sec_context HAVE_GSS_INIT) | |
+ endif(NOT HAVE_GSS_INIT) | |
+ endif(NOT HAVE_GSS_INIT) | |
+ if(HAVE_GSS_INIT) | |
+ set(GSS_LIBS ${CMAKE_REQUIRED_LIBRARIES}) | |
+ else() | |
+ message(FATAL_ERROR "Not found gss_init_sec_context function for GSSAPI") | |
+ endif() | |
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_OLD}) | |
+ endif() | |
+else() | |
+ set(GSS_LIBS "") | |
+endif() | |
+ | |
+option(USE_SYSTEMD "Define to build with systemd support" OFF) | |
+option(USE_BSD_AUTH "Define to build with BSD Authentication support" OFF) | |
+option(USE_ASSERT_CHECKING "Define to build with assertion checks." OFF) | |
+option(USE_BONJOUR "Define to build with Bonjour support." OFF) | |
+if(USE_BONJOUR) | |
+ check_include_files(dns_sd.h HAVE_DNS_SD_H) | |
+ if(NOT HAVE_DNS_SD_H) | |
+ message(FATAL_ERROR "header file <dns_sd.h> is required for Bonjour") | |
+ endif() | |
+endif() | |
+ | |
+option(STRONG_RANDOM "Strong random number source" ON) | |
+option(STRONG_RANDOM_SOURCE "which random number source to use - openssl, win32, dev" OFF) | |
+if(STRONG_RANDOM) | |
+ if(NOT STRONG_RANDOM_SOURCE) | |
+ if(WITH_OPENSSL) | |
+ set(STRONG_RANDOM_SOURCE "openssl") | |
+ elseif(WIN32) | |
+ set(STRONG_RANDOM_SOURCE "win32") | |
+ elseif(EXISTS "/dev/urandom") | |
+ set(STRONG_RANDOM_SOURCE "dev") | |
+ endif() | |
+ endif() | |
+ if(STRONG_RANDOM_SOURCE STREQUAL "openssl") | |
+ set(USE_OPENSSL_RANDOM 1) | |
+ elseif(STRONG_RANDOM_SOURCE STREQUAL "win32") | |
+ set(USE_WIN32_RANDOM 1) | |
+ elseif(STRONG_RANDOM_SOURCE STREQUAL "dev") | |
+ set(USE_DEV_URANDOM 1) | |
+ else() | |
+ message(ERROR "no source of strong random numbers was found | |
+PostgreSQL can use OpenSSL or /dev/urandom as a source of random numbers, | |
+for authentication protocols. You can use -DSTRONG_RANDOM=OFF to use of a built-in | |
+pseudo random number generator, but that may be insecure.") | |
+ endif() | |
+ | |
+ set(HAVE_STRONG_RANDOM 1) | |
+else() | |
+ message(WARNING "Not using a strong random number source may be insecure.") | |
+endif() | |
+ | |
+if(NOT MSVC) | |
+ find_library(DL_LIBRARIES NAMES dl) | |
+ find_library(M_LIB m) | |
+ if(NOT M_LIB) | |
+ set(M_LIB "") | |
+ endif() | |
+endif() | |
+ | |
+if(NOT DL_LIBRARIES) | |
+ set(DL_LIBRARIES "") | |
+endif() | |
+ | |
+if(LIBXML2_FOUND) | |
+ set(HAVE_LIBXML2 1) | |
+ set(USE_LIBXML 1) | |
+endif() | |
+ | |
+if(LIBXSLT_FOUND) | |
+ set(HAVE_LIBXSLT 1) | |
+ set(USE_LIBXSLT 1) | |
+endif() | |
+ | |
+if(ZLIB_FOUND) | |
+ set(HAVE_LIBZ 1) | |
+endif() | |
+ | |
+if(NOT CMAKE_C_FLAGS) | |
+ set(CMAKE_C_FLAGS "-O2") | |
+endif() | |
+ | |
+if(CMAKE_COMPILER_IS_GNUCC) | |
+ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.3 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 3.3) | |
+ # Disable strict-aliasing rules; needed for gcc 3.3+ | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") | |
+ endif() | |
+ | |
+ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.4 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 3.4) | |
+ # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fwrapv") | |
+ endif() | |
+ | |
+ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.5 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 4.5) | |
+ # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexcess-precision=standard") | |
+ endif() | |
+ | |
+ # Optimization flags for specific files that benefit from vectorization | |
+ set(CFLAGS_VECTOR "${CFLAGS_VECTOR} -funroll-loops") | |
+ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.5 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 4.5) | |
+ set(CFLAGS_VECTOR "${CFLAGS_VECTOR} -ftree-vectorize") | |
+ endif() | |
+ | |
+ option(PROFILE_PID_DIR "Enable to allow profiling output to be saved separately for each process." OFF) | |
+endif() | |
+ | |
+if(CMAKE_C_COMPILER_ID MATCHES "Clang") | |
+ # Disable strict-aliasing rules; needed for gcc 3.3+ | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") | |
+ # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fwrapv") | |
+ | |
+ # Optimization flags for specific files that benefit from vectorization | |
+ set(CFLAGS_VECTOR "${CFLAGS_VECTOR} -funroll-loops") | |
+ set(CFLAGS_VECTOR "${CFLAGS_VECTOR} -ftree-vectorize") | |
+endif() | |
+ | |
+if(CMAKE_C_COMPILER_ID STREQUAL "Intel") | |
+ # Intel's compiler has a bug/misoptimization in checking for | |
+ # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mp1") | |
+ # Make sure strict aliasing is off (though this is said to be the default) | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") | |
+endif() | |
+ | |
+check_symbol_exists(strlcpy "stdio.h;string.h" HAVE_DECL_STRLCPY) | |
+if(NOT HAVE_DECL_STRLCPY) | |
+ set(HAVE_DECL_STRLCPY 0) | |
+endif() | |
+check_symbol_exists(strlcat "stdio.h;string.h" HAVE_DECL_STRLCAT) | |
+if(NOT HAVE_DECL_STRLCAT) | |
+ set(HAVE_DECL_STRLCAT 0) | |
+endif() | |
+check_symbol_exists(snprintf "stdio.h;string.h" HAVE_DECL_SNPRINTF) | |
+if(NOT HAVE_DECL_SNPRINTF) | |
+ set(HAVE_DECL_SNPRINTF 0) | |
+endif() | |
+check_symbol_exists(vsnprintf "stdio.h;string.h" HAVE_DECL_VSNPRINTF) | |
+if(NOT HAVE_DECL_VSNPRINTF) | |
+ set(HAVE_DECL_VSNPRINTF 0) | |
+endif() | |
+check_symbol_exists(unsetenv "stdlib.h" HAVE_UNSETENV) | |
+check_symbol_exists(srandom "stdlib.h" HAVE_SRANDOM) | |
+ | |
+# Test math functions | |
+check_symbol_exists(rint "math.h" HAVE_RINT) | |
+ | |
+if(WIN32 AND NOT MINGW) | |
+ set(LIB_M "") | |
+else() | |
+ set(LIB_M m) | |
+endif() | |
+set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} ${LIB_M}") | |
+check_c_source_runs(" | |
+ #include <math.h> | |
+ int main(void){ | |
+#ifdef _MSC_VER | |
+ return isinf(INFINITY) ? 0 : 1; | |
+#else | |
+ return isinf(1.0/0.0) ? 0 : 1; | |
+#endif | |
+ } | |
+" HAVE_ISINF) | |
+ | |
+# Check common include files | |
+ | |
+check_include_files(ieeefp.h HAVE_IEEEFP_H) | |
+if(NOT HAVE_IEEEFP_H) | |
+ set(HAVE_IEEEFP_H 0) | |
+else() | |
+ set(HAVE_IEEEFP_H 1) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};ieeefp.h") | |
+endif() | |
+ | |
+check_include_files(fp_class.h HAVE_FP_CLASS_H) | |
+if (HAVE_FP_CLASS_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};fp_class.h") | |
+endif() | |
+set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};float.h;math.h") | |
+ | |
+check_include_files(sys/un.h HAVE_SYS_UN_H) | |
+check_include_files(ucred.h HAVE_UCRED_H) | |
+check_include_files(sys/ucred.h HAVE_SYS_UCRED_H) | |
+check_include_files(sys/types.h HAVE_SYS_TYPES_H) | |
+check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) | |
+check_include_files(sys/sockio.h HAVE_SYS_SOCKIO_H) | |
+check_include_files(stdint.h HAVE_STDINT_H) | |
+ | |
+check_include_files(sys/select.h HAVE_SYS_SELECT_H) | |
+check_include_files(sys/poll.h HAVE_SYS_POLL_H) | |
+check_include_files(sys/epoll.h HAVE_SYS_EPOLL_H) | |
+check_include_files(sys/pstat.h HAVE_SYS_PSTAT_H) | |
+check_include_files(sys/tas.h HAVE_SYS_TAS_H) | |
+check_include_files(dld.h HAVE_DLD_H) | |
+check_include_files(langinfo.h HAVE_LANGINFO_H) | |
+check_include_files(poll.h HAVE_POLL_H) | |
+ | |
+check_include_files(wchar.h HAVE_WCHAR_H) | |
+check_include_files(wctype.h HAVE_WCTYPE_H) | |
+check_include_files(winldap.h HAVE_WINLDAP_H) | |
+check_include_files(pwd.h HAVE_PWD_H) | |
+check_include_files(crtdefs.h HAVE_CRTDEFS_H) | |
+ | |
+check_include_files(nbtool_config.h HAVE_NBTOOL_CONFIG_H) | |
+ | |
+check_include_files(mbarrier.h HAVE_MBARRIER_H) | |
+check_include_files(atomic.h HAVE_ATOMIC_H) | |
+ | |
+check_include_files(netinet/tcp.h HAVE_NETINET_TCP_H) | |
+check_include_files(net/if.h HAVE_NET_IF_H) | |
+ | |
+check_include_files(pam/pam_appl.h HAVE_PAM_PAM_APPL_H) | |
+check_include_files(security/pam_appl.h HAVE_SECURITY_PAM_APPL_H) | |
+if(USE_PAM AND NOT (HAVE_PAM_PAM_APPL_H OR HAVE_SECURITY_PAM_APPL_H)) | |
+ message(FATAL_ERROR "header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.") | |
+endif() | |
+ | |
+check_include_files(syslog.h HAVE_SYSLOG) | |
+check_include_files(termios.h HAVE_TERMIOS_H) | |
+ | |
+check_include_files("sys/ipc.h" HAVE_SYS_IPC_H) | |
+check_include_files("sys/sem.h" HAVE_SYS_SEM_H) | |
+check_include_files("sys/shm.h" HAVE_SYS_SHM_H) | |
+check_include_files("sys/ioctl.h" HAVE_SYS_IOCTL_H) | |
+ | |
+check_include_files(ifaddrs.h HAVE_IFADDRS_H) | |
+check_include_files(crypt.h HAVE_CRYPT_H) | |
+check_include_files(unistd.h HAVE_UNISTD_H) | |
+ | |
+check_include_files("locale.h" HAVE_LOCALE_H) | |
+check_include_files("xlocale.h" HAVE_XLOCALE_H) | |
+ | |
+check_include_files(bsd_auth.h HAVE_BSD_AUTH_H) | |
+check_include_files(strings.h HAVE_STRINGS_H) | |
+check_include_files(string.h HAVE_STRING_H) | |
+check_include_files(getopt.h HAVE_GETOPT_H) | |
+check_include_files(sys/mman.h HAVE_SYS_MMAN_H) | |
+check_include_files(sys/time.h HAVE_SYS_TIME_H) | |
+check_include_files(sys/resource.h HAVE_SYS_RESOURCE_H) | |
+check_include_files(utime.h HAVE_UTIME_H) | |
+ | |
+# Check functions | |
+ | |
+check_function_exists(fpclass HAVE_FPCLASS) # Need for isinf implementation | |
+check_function_exists(fp_class HAVE_FP_CLASS) | |
+check_function_exists(fp_class_d HAVE_FP_CLASS_D) | |
+check_function_exists(class HAVE_CLASS) | |
+ | |
+check_function_exists(getpeereid HAVE_GETPEEREID) | |
+check_function_exists(getpeerucred HAVE_GETPEERUCRED) | |
+check_function_exists(memmove HAVE_MEMMOVE) | |
+if(MSVC) | |
+ check_function_exists(_mbstowcs_l HAVE_MBSTOWCS_L) | |
+else() | |
+ check_function_exists(mbstowcs_l HAVE_MBSTOWCS_L) | |
+endif() | |
+ | |
+check_function_exists(towlower HAVE_TOWLOWER) | |
+check_function_exists(wcstombs HAVE_WCSTOMBS) | |
+ | |
+check_function_exists(mkdtemp HAVE_MKDTEMP) | |
+check_function_exists(mkstemp HAVE_MKSTEMP) | |
+check_function_exists(poll HAVE_POLL) | |
+ | |
+check_function_exists(getrlimit HAVE_GETRLIMIT) | |
+check_function_exists(readlink HAVE_READLINK) | |
+check_function_exists(cbrt HAVE_CBRT) | |
+check_function_exists(pthread_is_threaded_np HAVE_PTHREAD_IS_THREADED_NP) | |
+check_function_exists(random HAVE_RANDOM) | |
+check_function_exists(sync_file_range HAVE_SYNC_FILE_RANGE) | |
+ | |
+#So strange | |
+check_function_exists(pstat HAVE_PSTAT) | |
+ | |
+if(HAVE_IFADDRS_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};ifaddrs.h") | |
+endif() | |
+check_function_exists(getifaddrs HAVE_GETIFADDRS) | |
+ | |
+if(MSVC) | |
+ set(HAVE_MINIDUMP_TYPE 1) | |
+endif() | |
+ | |
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS") | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};fcntl.h") | |
+ check_function_exists(posix_fadvise HAVE_DECL_POSIX_FADVISE) | |
+ if(HAVE_DECL_POSIX_FADVISE) | |
+ set(HAVE_POSIX_FADVISE 1) | |
+ endif() | |
+endif() | |
+ | |
+find_library(CRYPT_LIB crypt) | |
+if(CRYPT_LIB) | |
+ set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} ${CRYPT_LIB}") | |
+endif() | |
+ | |
+if(HAVE_CRYPT_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};crypt.h") | |
+endif() | |
+check_function_exists(crypt HAVE_CRYPT) | |
+ | |
+if(HAVE_UNISTD_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};unistd.h") | |
+endif() | |
+check_function_exists(fdatasync HAVE_DECL_FDATASYNC) | |
+check_function_exists(sys_siglist HAVE_DECL_FDATASYNC) | |
+check_function_exists(setproctitle HAVE_SETPROCTITLE) | |
+check_function_exists(setsid HAVE_SETSID) | |
+if(HAVE_UNISTD_H) | |
+ check_symbol_exists(sys_siglist "signal.h;unistd.h" HAVE_DECL_SYS_SIGLIST) | |
+ check_symbol_exists(opterr "unistd.h" HAVE_INT_OPTERR) | |
+ check_symbol_exists(optreset "unistd.h" HAVE_INT_OPTRESET) | |
+else() | |
+ check_symbol_exists(sys_siglist "signal.h" HAVE_DECL_SYS_SIGLIST) | |
+endif() | |
+ | |
+set(CMAKE_MACOSX_RPATH 1) | |
+#set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | |
+ | |
+if(MSVC) | |
+ check_function_exists(_fseeki64 HAVE_FSEEKO) | |
+else() | |
+ check_function_exists(fseeko HAVE_FSEEKO) | |
+endif() | |
+ | |
+if(NOT MSVC) | |
+ check_include_files(dlfcn.h HAVE_DLFCN_H) | |
+ if(HAVE_DLFCN_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};dlfcn.h") | |
+ endif() | |
+ set(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARIES}) | |
+ check_function_exists(dlopen HAVE_DLOPEN) | |
+endif() | |
+ | |
+set(CMAKE_REQUIRED_LIBRARIES "") | |
+ | |
+if(HAVE_STRINGS_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};strings.h") | |
+endif() | |
+if(HAVE_STRING_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};string.h") | |
+endif() | |
+check_function_exists(fls HAVE_FLS) | |
+ | |
+if(HAVE_GETOPT_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};getopt.h") | |
+endif() | |
+ | |
+check_function_exists(strtoll HAVE_STRTOLL) | |
+check_function_exists(strtoq HAVE_STRTOQ) | |
+check_function_exists(strtoull HAVE_STRTOULL) | |
+check_function_exists(strtouq HAVE_STRTOUQ) | |
+ | |
+check_type_size("struct option" HAVE_STRUCT_OPTION) | |
+check_function_exists(getopt HAVE_GETOPT) | |
+check_function_exists(getopt_long HAVE_GETOPT_LONG) | |
+check_function_exists(gethostbyname_r HAVE_GETHOSTBYNAME_R) | |
+check_function_exists(getpwuid_r HAVE_GETPWUID_R) | |
+check_function_exists(strerror_r HAVE_STRERROR_R) | |
+check_function_exists(strerror HAVE_STRERROR) | |
+#I am not sure about this code. | |
+check_c_source_runs(" | |
+#include <string.h> | |
+int main(void){ | |
+#ifndef _AIX | |
+int strerror_r(int, char *, size_t); | |
+#else | |
+/* Older AIX has 'int' for the third argument so we don't test the args. */ | |
+int strerror_r(); | |
+#endif | |
+return 0; | |
+} | |
+" STRERROR_R_INT) | |
+ | |
+check_c_source_runs(" | |
+int main(void){ | |
+int a = 0; int *p = &a; int r; | |
+ __asm__ __volatile__ (\" lwarx %0,0,%1,1\n\" : \"=&r\"(r) : \"r\"(p)); | |
+return 0; | |
+} | |
+" HAVE_PPC_LWARX_MUTEX_HINT) | |
+ | |
+check_c_source_runs(" | |
+#include <machine/vmparam.h> | |
+#include <sys/exec.h> | |
+int main(void){ | |
+PS_STRINGS->ps_nargvstr = 1; | |
+PS_STRINGS->ps_argvstr = \"foo\"; | |
+return 0; | |
+} | |
+" HAVE_PS_STRINGS) | |
+ | |
+if(HAVE_SYS_MMAN_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};sys/mman.h") | |
+endif() | |
+if(CMAKE_SYSTEM_NAME STREQUAL "Linux") | |
+ set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} -lrt") | |
+endif(CMAKE_SYSTEM_NAME STREQUAL "Linux") | |
+check_function_exists(shm_open HAVE_SHM_OPEN) | |
+ | |
+ | |
+if(HAVE_SYS_TIME_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};sys/time.h") | |
+endif() | |
+if(HAVE_SYS_RESOURCE_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};sys/resource.h") | |
+endif() | |
+check_function_exists(getrusage HAVE_GETRUSAGE) | |
+check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) | |
+ | |
+if(HAVE_UTIME_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};utime.h") | |
+endif() | |
+check_function_exists(utime HAVE_UTIME) | |
+check_function_exists(utimes HAVE_UTIMES) | |
+ | |
+set(OLD_INCLUDES "${CMAKE_EXTRA_INCLUDE_FILES}") | |
+set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};netinet/in.h;arpa/inet.h") | |
+check_function_exists(inet_aton HAVE_INET_ATON) | |
+set(CMAKE_EXTRA_INCLUDE_FILES "${OLD_INCLUDES}") | |
+ | |
+if(OPENSSL_FOUND) | |
+ set(USE_OPENSSL 1) | |
+ set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${OPENSSL_INCLUDE_DIR}") | |
+ set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) | |
+ check_function_exists(SSL_get_current_compression HAVE_SSL_GET_CURRENT_COMPRESSION) | |
+endif(OPENSSL_FOUND) | |
+ | |
+if(USE_SYSTEMD) | |
+ check_include_files(systemd/sd-daemon.h HAVE_SYSTEMD_SD_DAEMON_H) | |
+ if(NOT HAVE_SYSTEMD_SD_DAEMON_H) | |
+ message(FATAL_ERROR "header file <systemd/sd-daemon.h> is required for systemd support") | |
+ endif() | |
+endif() | |
+ | |
+ | |
+if(USE_BSD_AUTH AND NOT HAVE_BSD_AUTH_H) | |
+ message(FATAL_ERROR "header file <bsd_auth.h> is required for BSD Authentication support") | |
+endif() | |
+ | |
+# Check ReadLine includes | |
+option(WITH_READLINE "do not use GNU Readline nor BSD Libedit for editing" ON) | |
+if(WITH_READLINE AND NOT MSVC) | |
+ find_package(Readline) | |
+ if(READLINE_FOUND) | |
+ #Sometimes for redline need curses | |
+ message(STATUS "Found Readline: ${READLINE_LIBRARY}") | |
+ find_package(Curses) | |
+ if(NOT CURSES_FOUND) | |
+ set(CURSES_NEED_NCURSES TRUE) | |
+ endif() | |
+ find_package(Curses) | |
+ check_include_files("stdio.h;readline.h" HAVE_READLINE_H) | |
+ check_include_files("stdio.h;history.h" HAVE_HISTORY_H) | |
+ check_include_files("stdio.h;readline/history.h" HAVE_READLINE_HISTORY_H) | |
+ check_include_files("stdio.h;readline/readline.h" HAVE_READLINE_READLINE_H) | |
+ check_include_files("stdio.h;editline/history.h" HAVE_EDITLINE_HISTORY_H) | |
+ check_include_files("stdio.h;editline/readline.h" HAVE_EDITLINE_READLINE_H) | |
+ | |
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${READLINE_LIBRARY}) | |
+ if(CURSES_FOUND) | |
+ set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${CURSES_LIBRARIES}) | |
+ set(READLINE_LIBRARY ${READLINE_LIBRARY} ${CURSES_LIBRARIES}) | |
+ endif() | |
+ check_function_exists(rl_completion_append_character HAVE_RL_COMPLETION_APPEND_CHARACTER) | |
+ check_function_exists(rl_completion_matches HAVE_RL_COMPLETION_MATCHES) | |
+ check_function_exists(rl_filename_completion_function HAVE_RL_FILENAME_COMPLETION_FUNCTION) | |
+ check_function_exists(rl_reset_screen_size HAVE_RL_RESET_SCREEN_SIZE) | |
+ check_function_exists(append_history HAVE_APPEND_HISTORY) | |
+ check_function_exists(history_truncate_file HAVE_HISTORY_TRUNCATE_FILE) | |
+ endif(READLINE_FOUND) | |
+endif() | |
+ | |
+if(READLINE_FOUND) | |
+ set(HAVE_LIBREADLINE TRUE) | |
+else() | |
+ set(READLINE_LIBRARY "") | |
+ set(HAVE_LIBREADLINE FALSE) | |
+endif() | |
+ | |
+# Check if _GNU_SOURCE is available. | |
+check_symbol_exists(__GNU_LIBRARY__ "features.h" _GNU_SOURCE) | |
+check_symbol_exists(F_FULLFSYNC "fcntl.h" HAVE_DECL_F_FULLFSYNC) | |
+ | |
+include(ReplacePython) | |
+include(CheckCpuID) | |
+include(CheckSSE42) | |
+ | |
+if(MSVC) | |
+ if(HAVE__GET_CPUID OR HAVE__CPUID) | |
+ set(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK 1) | |
+ endif() | |
+else() | |
+ if(HAVE_SSE42 AND HAVE_SSE42_INTRINSICS) | |
+ set(USE_SSE42_CRC32C 1) | |
+ elseif(HAVE_SSE42_INTRINSICS AND (HAVE__GET_CPUID OR HAVE__CPUID)) | |
+ set(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK 1) | |
+ else() | |
+ set(USE_SLICING_BY_8_CRC32C 1) | |
+ endif() | |
+endif() | |
+ | |
+include(FuncAcceptArgtypes) | |
+include(CheckTypeAlignment) | |
+check_type_alignment(double ALIGNOF_DOUBLE) | |
+check_type_alignment(int ALIGNOF_INT) | |
+check_type_alignment(long ALIGNOF_LONG) | |
+check_type_alignment("long long int" ALIGNOF_LONG_LONG_INT) | |
+check_type_alignment(short ALIGNOF_SHORT) | |
+ | |
+check_type_size(int64 HAVE_INT64) | |
+check_type_size(uint64 HAVE_UINT64) | |
+check_type_size(int8 HAVE_INT8) | |
+check_type_size(uint8 HAVE_UINT8) | |
+check_type_size("void *" VOID_POINTER_SIZE) | |
+math(EXPR VOID_POINTER_SIZE_BIT "${VOID_POINTER_SIZE}*8") | |
+check_type_size("long int" LONG_INT_SIZE) | |
+check_type_size("long long int" HAVE_LONG_LONG_INT) | |
+check_type_size("long" SIZEOF_LONG) | |
+check_type_size("size_t" SIZEOF_SIZE_T) | |
+check_type_size(__int128 PG_INT128_TYPE) | |
+if(PG_INT128_TYPE AND NOT WIN32) | |
+ set(HAVE_INT128 1) | |
+ set(PG_INT128_TYPE __int128) | |
+endif() | |
+ | |
+ | |
+if(HAVE_LOCALE_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};locale.h") | |
+endif() | |
+check_type_size("locale_t" HAVE_LOCALE_T) | |
+if(NOT HAVE_LOCALE_T AND HAVE_XLOCALE_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};xlocale.h") | |
+ check_type_size("locale_t" HAVE_LOCALE_T) | |
+ if(HAVE_LOCALE_T) | |
+ set(LOCALE_T_IN_XLOCALE 1) | |
+ else() | |
+ set(LOCALE_T_IN_XLOCALE 0) | |
+ endif() | |
+else() | |
+ set(LOCALE_T_IN_XLOCALE 0) | |
+endif() | |
+ | |
+check_type_size("wcstombs_l" HAVE_WCSTOMBS_L) | |
+#check_function_exists(wcstombs_l HAVE_WCSTOMBS_L) | |
+if(NOT HAVE_WCSTOMBS_L AND HAVE_XLOCALE_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES};xlocale.h") | |
+ check_type_size("wcstombs_l" HAVE_WCSTOMBS_L) | |
+ if(HAVE_WCSTOMBS_L) | |
+ set(WCSTOMBS_L_IN_XLOCALE 1) | |
+ else() | |
+ set(WCSTOMBS_L_IN_XLOCALE 0) | |
+ endif() | |
+else() | |
+ set(WCSTOMBS_L_IN_XLOCALE 0) | |
+endif() | |
+ | |
+if(LONG_INT_SIZE EQUAL 8) | |
+ set(PG_INT64_TYPE "long int") | |
+ set(HAVE_LONG_INT_64 ${LONG_INT_SIZE}) | |
+else(LONG_INT_SIZE EQUAL 8) | |
+ if(HAVE_LONG_LONG_INT EQUAL 8) | |
+ set(PG_INT64_TYPE "long long int") | |
+ set(HAVE_LONG_LONG_INT_64 1) | |
+ else() | |
+ message(FATAL_ERROR "Cannot find a working 64-bit integer type.") | |
+ endif() | |
+endif(LONG_INT_SIZE EQUAL 8) | |
+ | |
+message(STATUS "PG_INT64_TYPE: ${PG_INT64_TYPE} HAVE_LONG_INT_64: ${HAVE_LONG_INT_64}") | |
+# Compute maximum alignment of any basic type. | |
+# We assume long's alignment is at least as strong as char, short, or int; | |
+# but we must check long long (if it exists) and double. | |
+ | |
+if(NOT MAXIMUM_ALIGNOF) | |
+ set(MAX_ALIGNOF ${ALIGNOF_LONG}) | |
+ if(MAX_ALIGNOF LESS ALIGNOF_DOUBLE) | |
+ set(MAX_ALIGNOF ${ALIGNOF_DOUBLE}) | |
+ endif(MAX_ALIGNOF LESS ALIGNOF_DOUBLE) | |
+ if(HAVE_LONG_LONG_INT_64 AND MAX_ALIGNOF LESS HAVE_LONG_LONG_INT_64) | |
+ set(MAX_ALIGNOF ${HAVE_LONG_LONG_INT_64}) | |
+ endif(HAVE_LONG_LONG_INT_64 AND MAX_ALIGNOF LESS HAVE_LONG_LONG_INT_64) | |
+ if(MAX_ALIGNOF) | |
+ set(MAXIMUM_ALIGNOF ${MAX_ALIGNOF}) | |
+ endif(MAX_ALIGNOF) | |
+endif(NOT MAXIMUM_ALIGNOF) | |
+message(STATUS "MAXIMUM_ALIGNOF ${MAXIMUM_ALIGNOF}") | |
+ | |
+if(HAVE_LONG_LONG_INT_64) | |
+ if(NOT NEED_REPL_SNPRINTF) | |
+ include(CheckSnprintfLongLongIntModifier) | |
+ if(NOT LONG_LONG_INT_MODIFIER) | |
+ set(LONG_LONG_INT_MODIFIER "ll") | |
+ set(NEED_REPL_SNPRINTF ON) | |
+ endif(NOT LONG_LONG_INT_MODIFIER) | |
+ else(NOT NEED_REPL_SNPRINTF) | |
+ set(LONG_LONG_INT_MODIFIER "ll") | |
+ endif(NOT NEED_REPL_SNPRINTF) | |
+else(HAVE_LONG_LONG_INT_64) | |
+ set(LONG_LONG_INT_MODIFIER "l") | |
+endif(HAVE_LONG_LONG_INT_64) | |
+ | |
+if(HAVE_LONG_LONG_INT_64) | |
+ message(STATUS "HAVE_LONG_LONG_INT_64 ${HAVE_LONG_LONG_INT_64}") | |
+endif() | |
+if(HAVE_LONG_LONG_INT_64) | |
+ include(CheckLLConstants) | |
+endif() | |
+ | |
+#TODO: some strange here | |
+option(USE_FLOAT4_BYVAL "float4 values are passed by value" ON) | |
+if(USE_FLOAT4_BYVAL) | |
+ set(FLOAT4PASSBYVAL 1) | |
+else(USE_FLOAT4_BYVAL) | |
+ set(FLOAT4PASSBYVAL 0) | |
+endif(USE_FLOAT4_BYVAL) | |
+ | |
+if(VOID_POINTER_SIZE EQUAL 8) | |
+ option(USE_FLOAT8_BYVAL "float8 values are passed by value" ON) | |
+else() | |
+ option(USE_FLOAT8_BYVAL "float8 values are passed by value" OFF) | |
+endif() | |
+if(USE_FLOAT8_BYVAL AND NOT (VOID_POINTER_SIZE EQUAL 8)) | |
+ message(FATAL_ERROR "USE_FLOAT8_BYVAL is not supported on 32-bit platforms.") | |
+elseif(USE_FLOAT8_BYVAL AND VOID_POINTER_SIZE EQUAL 8) | |
+ set(FLOAT8PASSBYVAL 1) | |
+ set(USE_FLOAT8_BYVAL 1) | |
+else() | |
+ set(FLOAT8PASSBYVAL 0) | |
+ set(USE_FLOAT8_BYVAL 0) | |
+endif(USE_FLOAT8_BYVAL AND NOT (VOID_POINTER_SIZE EQUAL 8)) | |
+ | |
+if (_GNU_SOURCE) | |
+ add_definitions(-D_GNU_SOURCE) | |
+endif() | |
+if(Threads_FOUND) | |
+ set(ENABLE_THREAD_SAFETY 1) | |
+ set(THREADS_PREFER_PTHREAD_FLAG ON) | |
+ set(PTHREAD_CFLAGS "-D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS") | |
+ if(THREADS_HAVE_PTHREAD_ARG) | |
+ set(PTHREAD_CFLAGS "${PTHREAD_CFLAGS} -pthread") | |
+ endif() | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PTHREAD_CFLAGS}") | |
+endif() | |
+ | |
+set(PORT_DIR "${PROJECT_SOURCE_DIR}/src/port") | |
+set(PQ_BACKEND_DIR "${PROJECT_SOURCE_DIR}/src/backend/libpq") | |
+set(MB_UTILS_BACKEND_DIR "${PROJECT_SOURCE_DIR}/src/backend/utils/mb") | |
+ | |
+ | |
+set(fallback_SRCS "") | |
+ | |
+if(NOT HAVE_DECL_STRLCPY) | |
+ set(fallback_SRCS ${fallback_SRCS} "${PORT_DIR}/strlcpy.c") | |
+endif(NOT HAVE_DECL_STRLCPY) | |
+ | |
+if(NOT HAVE_DECL_STRLCAT) | |
+ set(fallback_SRCS ${fallback_SRCS} "${PORT_DIR}/strlcat.c") | |
+endif(NOT HAVE_DECL_STRLCAT) | |
+ | |
+if(NOT HAVE_GETPEEREID) | |
+ set(fallback_SRCS ${fallback_SRCS} "${PORT_DIR}/getpeereid.c") | |
+endif(NOT HAVE_GETPEEREID) | |
+ | |
+set(TABLE_BLOCKSIZE 8 CACHE STRING "set table block size in kB") | |
+ | |
+if(TABLE_BLOCKSIZE EQUAL 1) | |
+ set(BLCKSZ 1024) | |
+elseif(TABLE_BLOCKSIZE EQUAL 2) | |
+ set(BLCKSZ 2048) | |
+elseif(TABLE_BLOCKSIZE EQUAL 4) | |
+ set(BLCKSZ 4096) | |
+elseif(TABLE_BLOCKSIZE EQUAL 8) | |
+ set(BLCKSZ 8192) | |
+elseif(TABLE_BLOCKSIZE EQUAL 16) | |
+ set(BLCKSZ 16384) | |
+elseif(TABLE_BLOCKSIZE EQUAL 32) | |
+ set(BLCKSZ 32768) | |
+else(TABLE_BLOCKSIZE EQUAL 1) | |
+ message(FATAL_ERROR "Invalid block size. Allowed values are 1,2,4,8,16,32.") | |
+endif(TABLE_BLOCKSIZE EQUAL 1) | |
+ | |
+message(STATUS "BLCKSZ - ${BLCKSZ}") | |
+ | |
+set(SEGSIZE 1 CACHE STRING "set table segment size in GB") | |
+math(EXPR RELSEG_SIZE "(1024 / ${TABLE_BLOCKSIZE}) * ${SEGSIZE} * 1024") | |
+ | |
+set(WAL_BLOCKSIZE 8 CACHE STRING "set WAL block size in kB") | |
+ | |
+if(WAL_BLOCKSIZE EQUAL 1) | |
+ set(XLOG_BLCKSZ 1024) | |
+elseif(WAL_BLOCKSIZE EQUAL 2) | |
+ set(XLOG_BLCKSZ 2048) | |
+elseif(WAL_BLOCKSIZE EQUAL 4) | |
+ set(XLOG_BLCKSZ 4096) | |
+elseif(WAL_BLOCKSIZE EQUAL 8) | |
+ set(XLOG_BLCKSZ 8192) | |
+elseif(WAL_BLOCKSIZE EQUAL 16) | |
+ set(XLOG_BLCKSZ 16384) | |
+elseif(WAL_BLOCKSIZE EQUAL 32) | |
+ set(XLOG_BLCKSZ 32768) | |
+elseif(WAL_BLOCKSIZE EQUAL 64) | |
+ set(XLOG_BLCKSZ 65536) | |
+else(WAL_BLOCKSIZE EQUAL 1) | |
+ message(FATAL_ERROR "Invalid WAL block size. Allowed values are 1,2,4,8,16,32,64.") | |
+endif(WAL_BLOCKSIZE EQUAL 1) | |
+ | |
+message(STATUS "XLOG_BLCKSZ - ${XLOG_BLCKSZ}") | |
+ | |
+set(WAL_SEGSIZE 16 CACHE STRING "set WAL segment size in MB") | |
+ | |
+if (";1;2;4;8;16;32;64;" MATCHES ";${WAL_SEGSIZE};") | |
+ math(EXPR XLOG_SEG_SIZE "${WAL_SEGSIZE} * 1024 * 1024") | |
+else() | |
+ message(FATAL_ERROR "${WAL_SEGSIZE} Invalid WAL segment size. Allowed values are 1,2,4,8,16,32,64.") | |
+endif() | |
+ | |
+message(STATUS "XLOG_SEG_SIZE - ${XLOG_SEG_SIZE}") | |
+ | |
+option(HAVE_ATOMICS "Define to ON if you want to use atomics if available." ON) | |
+ | |
+if(HAVE_ATOMICS) | |
+ check_c_source_compiles(" | |
+ int main(void){ | |
+ char lock = 0; | |
+ __sync_lock_test_and_set(&lock, 1); | |
+ __sync_lock_release(&lock); | |
+ return 0; | |
+ } | |
+ " HAVE_GCC__SYNC_CHAR_TAS) | |
+ | |
+ check_c_source_compiles(" | |
+ int main(void){ | |
+ int lock = 0; | |
+ __sync_lock_test_and_set(&lock, 1); | |
+ __sync_lock_release(&lock); | |
+ return 0; | |
+ } | |
+ " HAVE_GCC__SYNC_INT32_TAS) | |
+ | |
+ check_c_source_compiles(" | |
+ int main(void){ | |
+ int val = 0; | |
+ __sync_val_compare_and_swap(&val, 0, 37); | |
+ return 0; | |
+ } | |
+ " HAVE_GCC__SYNC_INT32_CAS) | |
+ | |
+ check_c_source_compiles(" | |
+ int main(void){ | |
+ ${PG_INT64_TYPE} lock = 0; | |
+ __sync_val_compare_and_swap(&lock, 0, (${PG_INT64_TYPE}) 37); | |
+ return 0; | |
+ } | |
+ " HAVE_GCC__SYNC_INT64_CAS) | |
+ | |
+ check_c_source_compiles(" | |
+ int main(void){ | |
+ int val = 0; | |
+ int expect = 0; | |
+ __atomic_compare_exchange_n(&val, &expect, 37, 0, __ATOMIC_SEQ_CST, __ATOMIC_RELAXED); | |
+ return 0; | |
+ } | |
+ " HAVE_GCC__ATOMIC_INT32_CAS) | |
+ | |
+ check_c_source_compiles(" | |
+ int main(void){ | |
+ ${PG_INT64_TYPE} val = 0; | |
+ ${PG_INT64_TYPE} expect = 0; | |
+ __atomic_compare_exchange_n(&val, &expect, 37, 0, __ATOMIC_SEQ_CST, __ATOMIC_RELAXED); | |
+ return 0; | |
+ } | |
+ " HAVE_GCC__ATOMIC_INT64_CAS) | |
+endif(HAVE_ATOMICS) | |
+ | |
+check_c_source_runs(" | |
+ int main(void){ | |
+ static unsigned long int x = __builtin_bswap32(0xaabbccdd); | |
+ return 0; | |
+ } | |
+" HAVE__BUILTIN_BSWAP32) | |
+ | |
+check_c_source_runs(" | |
+ int main(void){ | |
+ static unsigned long int x = __builtin_bswap64(0xaabbccddeeff0011); | |
+ return 0; | |
+ } | |
+" HAVE__BUILTIN_BSWAP64) | |
+ | |
+check_c_source_runs(" | |
+ int main(void){ | |
+ static int x; static int y[__builtin_constant_p(x) ? x : 1]; | |
+ return 0; | |
+ } | |
+" HAVE__BUILTIN_CONSTANT_P) | |
+ | |
+check_c_source_runs(" | |
+ int main(void){ | |
+ int x; static int y[__builtin_types_compatible_p(__typeof__(x), int)]; | |
+ return 0; | |
+ } | |
+" HAVE__BUILTIN_TYPES_COMPATIBLE_P) | |
+ | |
+check_c_source_runs(" | |
+ int main(void){ | |
+ __builtin_unreachable(); | |
+ return 0; | |
+ } | |
+" HAVE__BUILTIN_UNREACHABLE) | |
+ | |
+check_c_source_runs(" | |
+ int main(void){ | |
+ { _Static_assert(1, \"foo\"); } | |
+ return 0; | |
+ } | |
+" HAVE__STATIC_ASSERT) | |
+ | |
+if(NOT PGPORT) | |
+ set(PGPORT 5432) | |
+endif(NOT PGPORT) | |
+ | |
+include(CheckFlexibleArray) | |
+ | |
+check_c_source_compiles(" | |
+ #include <sys/time.h> | |
+ int main(void){ | |
+ struct timeval *tp; | |
+ struct timezone *tzp; | |
+ gettimeofday(tp,tzp); | |
+ return 0; | |
+ } | |
+" GETTIMEOFDAY_2ARG) | |
+ | |
+if(NOT GETTIMEOFDAY_2ARG) | |
+ set(GETTIMEOFDAY_1ARG 1) | |
+endif(NOT GETTIMEOFDAY_2ARG) | |
+ | |
+check_c_source_compiles(" | |
+ #include <time.h> | |
+ int main(void){ | |
+ int res; | |
+ #ifndef __CYGWIN__ | |
+ res = timezone / 60; | |
+ #else | |
+ res = _timezone / 60; | |
+ #endif | |
+ return 0; | |
+ } | |
+" HAVE_INT_TIMEZONE) | |
+ | |
+check_c_source_compiles(" | |
+ #include <stdio.h> | |
+ int main(void){ | |
+ printf(\"%s\", __func__); | |
+ return 0; | |
+ } | |
+" HAVE_FUNCNAME__FUNC) | |
+ | |
+check_c_source_compiles(" | |
+ #include <stdio.h> | |
+ int main(void){ | |
+ printf(\"%s\", __FUNCTION__); | |
+ return 0; | |
+ } | |
+" HAVE_FUNCNAME__FUNCTION) | |
+ | |
+check_c_source_compiles(" | |
+ #include <stdio.h> | |
+ int main(void){ | |
+ #define debug(...) fprintf(stderr, __VA_ARGS__) | |
+ debug(\"%s\", \"blarg\"); | |
+ return 0; | |
+ } | |
+" HAVE__VA_ARGS) | |
+ | |
+check_struct_has_member("struct tm" tm_zone "sys/types.h;time.h" HAVE_TM_ZONE LANGUAGE C) | |
+check_struct_has_member("struct tm" tm_gmtoff "sys/types.h;time.h" HAVE_STRUCT_TM_TM_ZONE LANGUAGE C) | |
+set(CMAKE_EXTRA_INCLUDE_FILES "time.h") | |
+check_type_size("*tzname" HAVE_TZNAME) | |
+ | |
+if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") | |
+ set(CMAKE_REQUIRED_FLAGS "-Werror") | |
+endif() | |
+check_c_source_compiles(" | |
+ extern int pgac_write(int ignore, const char *fmt,...) __attribute__((format(gnu_printf, 2, 3))); | |
+ int main(void){return 0;} | |
+" PG_PRINTF_ATTRIBUTE) | |
+ | |
+if(PG_PRINTF_ATTRIBUTE) | |
+ set(PG_PRINTF_ATTRIBUTE gnu_printf) | |
+else(PG_PRINTF_ATTRIBUTE) | |
+ set(PG_PRINTF_ATTRIBUTE printf) | |
+endif(PG_PRINTF_ATTRIBUTE) | |
+ | |
+if(NOT MEMSET_LOOP_LIMIT) | |
+ set(MEMSET_LOOP_LIMIT 1024) | |
+endif(NOT MEMSET_LOOP_LIMIT) | |
+ | |
+ | |
+if(WIN32 OR MINGW) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "sys/types.h;winsock2.h;ws2tcpip.h") | |
+else() | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "sys/types.h;sys/socket.h;netdb.h") | |
+endif() | |
+ | |
+check_type_size("struct addrinfo" HAVE_STRUCT_ADDRINFO) | |
+check_type_size("struct cmsgcred" HAVE_STRUCT_CMSGCRED) | |
+if(HAVE_STRUCT_ADDRINFO) | |
+ CHECK_STRUCT_HAS_MEMBER("struct addrinfo" sa_len "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_STRUCT_SOCKADDR_SA_LEN LANGUAGE C) | |
+ if(NOT (WIN32 OR MINGW)) | |
+ set(HAVE_GETADDRINFO 1) | |
+ endif() | |
+endif(HAVE_STRUCT_ADDRINFO) | |
+ | |
+check_type_size("struct sockaddr_storage" HAVE_STRUCT_SOCKADDR_STORAGE) | |
+if(HAVE_STRUCT_SOCKADDR_STORAGE) | |
+ CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" ss_family "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY LANGUAGE C) | |
+ CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" __ss_family "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY LANGUAGE C) | |
+ CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" ss_len "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN LANGUAGE C) | |
+ CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" __ss_len "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN LANGUAGE C) | |
+endif(HAVE_STRUCT_SOCKADDR_STORAGE) | |
+ | |
+# If `struct sockaddr_un' exists, define HAVE_UNIX_SOCKETS. | |
+if(HAVE_SYS_UN_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "sys/types.h;sys/un.h") | |
+else(HAVE_SYS_UN_H) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "sys/types.h") | |
+endif(HAVE_SYS_UN_H) | |
+check_type_size("struct sockaddr_un" HAVE_UNIX_SOCKETS) | |
+ | |
+if(WIN32) | |
+ set(HAVE_IPV6 1) | |
+else() | |
+ set(CMAKE_EXTRA_INCLUDE_FILES "netinet/in.h") | |
+ check_type_size("struct sockaddr_in6" HAVE_IPV6) | |
+endif() | |
+ | |
+set(CMAKE_EXTRA_INCLUDE_FILES "sys/types.h;sys/ipc.h;sys/sem.h") | |
+check_type_size("union semun" HAVE_UNION_SEMUN) | |
+ | |
+check_include_file("sys/stat.h" HAVE_SYS_STAT_H) | |
+ | |
+check_symbol_exists(fdatasync "unistd.h" HAVE_FDATASYNC) | |
+ | |
+if(WIN32 OR MINGW) | |
+ set(USE_WIN32_SEMAPHORES 1) | |
+ set(SEMA_IMPLEMENTATION "${PROJECT_SOURCE_DIR}/src/backend/port/win32_sema.c") | |
+else(WIN32 OR MINGW) | |
+ if(USE_NAMED_POSIX_SEMAPHORES) | |
+ set(USE_NAMED_POSIX_SEMAPHORES 1) | |
+ set(SEMA_IMPLEMENTATION "${PROJECT_SOURCE_DIR}/src/backend/port/posix_sema.c") | |
+ elseif(USE_UNNAMED_POSIX_SEMAPHORES) | |
+ set(USE_UNNAMED_POSIX_SEMAPHORES 1) | |
+ set(SEMA_IMPLEMENTATION "${PROJECT_SOURCE_DIR}/src/backend/port/posix_sema.c") | |
+ else(USE_NAMED_POSIX_SEMAPHORES) | |
+ set(USE_SYSV_SEMAPHORES 1) | |
+ set(SEMA_IMPLEMENTATION "${PROJECT_SOURCE_DIR}/src/backend/port/sysv_sema.c") | |
+ endif(USE_NAMED_POSIX_SEMAPHORES) | |
+endif(WIN32 OR MINGW) | |
+ | |
+#Realy bad name for win32 | |
+set(USE_SYSV_SHARED_MEMORY 1) | |
+if(WIN32 OR MINGW) | |
+ set(SHMEM_IMPLEMENTATION "${PROJECT_SOURCE_DIR}/src/backend/port/win32_shmem.c") | |
+else(WIN32 OR MINGW) | |
+ set(SHMEM_IMPLEMENTATION "${PROJECT_SOURCE_DIR}/src/backend/port/sysv_shmem.c") | |
+endif(WIN32 OR MINGW) | |
+ | |
+option(HAVE_SPINLOCKS "Define to ON if you have spinlocks." ON) | |
+ | |
+ | |
+option(USE_INTEGER_DATETIMES "Define to ON if you want 64-bit integer timestamp and interval support." ON) | |
+ | |
+if(WIN32) | |
+ option(HAVE_SYMLINK "Define to ON if you have the `symlink' function." ON) | |
+else(WIN32) | |
+ set(HAVE_SYMLINK 1) | |
+endif(WIN32) | |
+ | |
+option(PG_KRB_SRVNAM "Define to the name of the default PostgreSQL service principal in Kerberos (GSSAPI)." "postgres") | |
+ | |
+#TODO: Need test this | |
+if(CMAKE_C_COMPILER_ID STREQUAL "SunPro") | |
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") | |
+ set(TAS sunstudio_sparc.s) | |
+ else(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") | |
+ set(TAS sunstudio_x86.s) | |
+ endif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") | |
+elseif(CMAKE_C_COMPILER_ID STREQUAL "HP-UX") | |
+ set(TAS hpux_hppa.s) | |
+else(CMAKE_C_COMPILER_ID STREQUAL "SunPro") | |
+ set(TAS dummy.s) | |
+endif(CMAKE_C_COMPILER_ID STREQUAL "SunPro") | |
+ | |
+if(WIN32 OR MINGW) | |
+ set(CMAKE_EXTRA_INCLUDE_FILES | |
+ ${CMAKE_EXTRA_INCLUDE_FILES} | |
+ windows.h | |
+ string.h | |
+ dbghelp.h | |
+ ) | |
+ set(CMAKE_REQUIRED_DEFINITIONS "WIN32_LEAN_AND_MEAN") | |
+ check_type_size(MINIDUMP_TYPE NAVE_MINIDUMP_TYPE) | |
+endif(WIN32 OR MINGW) | |
+ | |
+set(WIN32_STACK_RLIMIT 4194304) | |
+if(WIN32) | |
+ add_definitions(-DWIN32_STACK_RLIMIT=${WIN32_STACK_RLIMIT}) | |
+endif() | |
+ | |
+if(NEED_REPL_SNPRINTF) | |
+ option(USE_REPL_SNPRINTF "Use replacement snprintf() functions." ON) | |
+endif() | |
+ | |
+find_program(SED_EXECUTABLE sed) | |
+if(NOT SED_EXECUTABLE) | |
+ message(FATAL_ERROR "sed programm not found") | |
+endif(NOT SED_EXECUTABLE) | |
+ | |
+include(GenDef) | |
+#Not work correctly for postgres see bug: | |
+#https://gitlab.kitware.com/cmake/cmake/issues/16161 | |
+#set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) | |
+ | |
+include(RegressCheck) | |
+ | |
+# Need add sco and unixware? | |
+if(WIN32 OR MINGW) | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/win32.h) | |
+elseif(APPLE) | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/darwin.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/linux.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "HP-UX") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/hpux.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/freebsd.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/openbsd.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/newtbsd.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/solaris.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "AIX") | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/aix.h) | |
+elseif(CYGWIN) | |
+ set(pgos_include_SRCS ${PROJECT_SOURCE_DIR}/src/include/port/cygwin.h) | |
+else(WIN32 OR MINGW) | |
+ message(WARNING "${CMAKE_SYSTEM_NAME}") | |
+endif(WIN32 OR MINGW) | |
+ | |
+# Try make fake host tuple for regress and isolation tests | |
+if(MINGW AND VOID_POINTER_SIZE EQUAL 8) | |
+ set(HOST_TUPLE "x86_64-w64-mingw32") | |
+elseif(MINGW AND VOID_POINTER_SIZE EQUAL 4) | |
+ set(HOST_TUPLE "i686-pc-mingw32") | |
+elseif(CYGWIN) | |
+ set(HOST_TUPLE "i686-pc-cygwin") | |
+elseif(MSVC AND VOID_POINTER_SIZE EQUAL 4) | |
+ set(HOST_TUPLE "i686-pc-win32vc") | |
+else() | |
+ set(HOST_TUPLE ${CMAKE_HOST_SYSTEM}) | |
+endif() | |
+ | |
+set(WITH_UUID "OFF" CACHE STRING "type of uuid lib [bsd, e2fs, ossp]") | |
+if(WITH_UUID) | |
+ find_package(LibUUID) | |
+ | |
+ if(WITH_UUID STREQUAL "bsd") | |
+ set(HAVE_UUID_BSD 1) | |
+ set(UUID_EXTRA_OBJS | |
+ ${PROJECT_SOURCE_DIR}/contrib/pgcrypto/md5.c | |
+ ${PROJECT_SOURCE_DIR}/contrib/pgcrypto/sha1.c | |
+ ) | |
+ elseif(WITH_UUID STREQUAL "e2fs") | |
+ set(HAVE_UUID_E2FS 1) | |
+ set(UUID_EXTRA_OBJS | |
+ ${PROJECT_SOURCE_DIR}/contrib/pgcrypto/md5.c | |
+ ${PROJECT_SOURCE_DIR}/contrib/pgcrypto/sha1.c | |
+ ) | |
+ elseif(WITH_UUID STREQUAL "ossp") | |
+ set(HAVE_UUID_OSSP 1) | |
+ set(UUID_EXTRA_OBJS "") | |
+ else() | |
+ message(WARNING "Not correct type of uuid lib:${WITH_UUID}") | |
+ endif() | |
+endif() | |
+ | |
+#file(REMOVE ${PROJECT_SOURCE_DIR}/src/include/pg_config_os.h) | |
+file(GENERATE OUTPUT ${PROJECT_SOURCE_DIR}/src/include/pg_config_os.h | |
+ INPUT ${pgos_include_SRCS}) | |
+ | |
+if(MINGW OR MSVC) | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include/port/win32") | |
+endif() | |
+ | |
+if(MSVC) | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include/port/win32_msvc") | |
+endif() | |
+ | |
+configure_file( | |
+ "${PROJECT_SOURCE_DIR}/src/include/pg_config_cmake.in" | |
+ "${PROJECT_SOURCE_DIR}/src/include/pg_config.h" | |
+) | |
+ | |
+configure_file( | |
+ "${PROJECT_SOURCE_DIR}/src/include/pg_config_ext_cmake.in" | |
+ "${PROJECT_SOURCE_DIR}/src/include/pg_config_ext.h" | |
+) | |
+ | |
+configure_file( | |
+ "${PROJECT_SOURCE_DIR}/src/include/pg_config_paths_cmake.in" | |
+ "${PROJECT_SOURCE_DIR}/src/port/pg_config_paths.h" | |
+) | |
+ | |
+configure_file( | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include/ecpg_config_cmake.in" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include/ecpg_config.h" | |
+) | |
+ | |
+configure_file( | |
+ "${PROJECT_SOURCE_DIR}/PGXS.cmake.in" | |
+ "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PGXS.cmake" | |
+ @ONLY | |
+) | |
+ | |
+install(FILES ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PGXS.cmake | |
+ DESTINATION ${LIBDIR}/cmake) | |
+ | |
+ | |
+option(CMAKE_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON) | |
+mark_as_advanced(CMAKE_USE_FOLDERS) | |
+ | |
+macro(CMAKE_SET_TARGET_FOLDER tgt folder) | |
+ if(CMAKE_USE_FOLDERS) | |
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON) | |
+ if(MSVC AND TARGET ${tgt}) | |
+ set_property(TARGET "${tgt}" PROPERTY FOLDER "${folder}") | |
+ endif() | |
+ else() | |
+ set_property(GLOBAL PROPERTY USE_FOLDERS OFF) | |
+ endif() | |
+endmacro() | |
+ | |
+# Add sub-directories | |
+add_subdirectory(src) | |
+add_subdirectory(contrib) | |
+ | |
+message(STATUS "------------------") | |
+message(STATUS " Conclusion") | |
+message(STATUS "Host tuple: ${HOST_TUPLE}") | |
+message(STATUS "OpenSSL: ${OPENSSL_FOUND} version: ${OPENSSL_VERSION} libs: ${OPENSSL_LIBRARIES} include: ${OPENSSL_INCLUDE_DIR}") | |
+message(STATUS "Python: ${PYTHONINTERP_FOUND}") | |
+message(STATUS "PythonLibs: ${PYTHONLIBS_FOUND}") | |
+message(STATUS "PerlLibs: ${PERLLIBS_FOUND}") | |
+message(STATUS "LibXML2: ${LIBXML2_FOUND}") | |
+message(STATUS "LibXslt: ${LIBXSLT_FOUND}") | |
+message(STATUS "TCL: ${TCL_FOUND}") | |
+message(STATUS "PAM: ${PAM_LIB}") | |
+message(STATUS "PROVE (TAP tests): ${PROVE}") | |
+message(STATUS "Strong random source: ${STRONG_RANDOM_SOURCE}") | |
+message(STATUS "------------------") | |
diff --git a/PGXS.cmake.in b/PGXS.cmake.in | |
new file mode 100644 | |
index 0000000000..c8bb151fed | |
--- /dev/null | |
+++ b/PGXS.cmake.in | |
@@ -0,0 +1,48 @@ | |
+cmake_minimum_required(VERSION 2.8) | |
+ | |
+set(POSTGRES_MAJOR_VERSION "@POSTGRES_MAJOR_VERSION@") | |
+set(POSTGRES_MINOR_VERSION "@POSTGRES_MINOR_VERSION@") | |
+set(POSTGRES_PATCH_VERSION "@POSTGRES_MINOR_VERSION@") | |
+set(POSTGRES_VERSION "@POSTGRES_VERSION@") | |
+set(PG_VERSION "10.0") | |
+set(PG_VERSION_NUM 100000) | |
+ | |
+set(PGBINDIR "@PGBINDIR@") | |
+set(PGSHAREDIR "@PGSHAREDIR@") | |
+set(SYSCONFDIR "@SYSCONFDIR@") | |
+set(INCLUDEDIR "@INCLUDEDIR@") | |
+set(PKGINCLUDEDIR "@PKGINCLUDEDIR@") | |
+set(INCLUDEDIRSERVER "@INCLUDEDIRSERVER@") | |
+set(LIBDIR "@LIBDIR@") | |
+set(PKGLIBDIR "@PKGLIBDIR@") | |
+set(LOCALEDIR "@LOCALEDIR@") | |
+set(DOCDIR "@DOCDIR@") | |
+set(HTMLDIR "@HTMLDIR@") | |
+set(MANDIR "@MANDIR@") | |
+ | |
+ | |
+set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) | |
+set(CMAKE_MACOSX_RPATH 1) | |
+ | |
+set(CMAKE_CXX_FLAGS "@CMAKE_CXX_FLAGS@") | |
+set(CMAKE_C_FLAGS "@CMAKE_C_FLAGS@") | |
+set(CMAKE_SHARED_LINKER_FLAGS "@CMAKE_SHARED_LINKER_FLAGS@") | |
+set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "@CMAKE_SHARED_LIBRARY_SONAME_C_FLAG@") | |
+set(CMAKE_SHARED_LINKER_FLAGS "@CMAKE_SHARED_LINKER_FLAGS@") | |
+ | |
+include_directories(${INCLUDEDIRSERVER}) | |
+link_directories(${LIBDIR}) | |
+ | |
+if(WIN32) | |
+ set(contrib_libs | |
+ port | |
+ pgcommon | |
+ ) | |
+endif() | |
+ | |
+if(MSVC) | |
+ set(contrib_libs | |
+ ${contrib_libs} | |
+ postgres | |
+ ) | |
+endif() | |
diff --git a/README.cmake b/README.cmake | |
new file mode 100644 | |
index 0000000000..615a80e2ac | |
--- /dev/null | |
+++ b/README.cmake | |
@@ -0,0 +1,245 @@ | |
+Requirements | |
+============ | |
+For Unix system you can build postgres with CMake 3.0 and higher. | |
+For Windows build you must use CMake 3.7.1 and higher. | |
+If you don't have CMake on your system (Solaris, AIX or old Linux), | |
+you can build it from source without any problems. | |
+ | |
+ | |
+Basic commands | |
+============== | |
+Full documentations you can find here: | |
+https://cmake.org/cmake/help/latest/ | |
+and small but usefull tutorial here: | |
+https://cmake.org/cmake-tutorial/ | |
+ | |
+Very basic usage in Unix systems: | |
+cmake .. | |
+ | |
+where .. is path to postgres source dir. To use Ninja instead | |
+of GNU Make you must write: | |
+ | |
+cmake .. -G "Ninja" | |
+ | |
+To explore other generators use: | |
+cmake .. -G help | |
+ | |
+Once you have generated Makefile or Ninja you should run | |
+make or ninja commands to build postgres. If you want to show all compiler | |
+option you must set env variable VERBOSE. Example: | |
+VERBOSE=1 make | |
+ | |
+Choose configure options | |
+======================== | |
+All options can be set via -DNAME_OPTION=(ON|OFF|NUMBER|STRING) param in command line. | |
+Example: | |
+cmake .. -DCMAKE_INSTALL_PREFIX="/usr/local" -DWITH_LIBXML=ON | |
+ | |
+here we set install prefix and enable build with libXML. | |
+ | |
+Set CFLAGS or LDFLAGS | |
+===================== | |
+CFLAGS or LDFLAGS you can set only on the generation stage as | |
+environment variable. Example: | |
+CFLAGS="-s -O2" cmake .. | |
+ | |
+you can't change CFLAGS if project has been generated. | |
+This example won't work: | |
+CFLAGS="-s -O3" make | |
+ | |
+You must remove cache and generate project again: | |
+rm ./CMakeCache.txt | |
+CFLAGS="-s -O3" cmake .. | |
+ | |
+Targets | |
+======= | |
+In CMake you can have only one main target other targets cannot be installed. | |
+Also we have only one enter point to the project. | |
+To build postgres input: | |
+make | |
+ | |
+or | |
+make all | |
+ | |
+All test targets implemented as optional targets: | |
+make check | |
+make isolation_check | |
+make contrib_check | |
+make ecpg_check | |
+make modules_check | |
+ | |
+also you can use installcheck insted check in target name to run tests for installed postgres. | |
+Example: | |
+make installcheck | |
+make isolation_installcheck | |
+ | |
+Some tests we can run only if corresponding option is enabled: | |
+make plperl_check | |
+make pltcl_check | |
+make plpython_check | |
+ | |
+And experemental TAP tests: | |
+make commit_ts_tap_check | |
+make bloom_tap_check | |
+make initdb_tap_check | |
+make pg_basebackup_tap_check | |
+make pg_config_tap_check | |
+make pg_controldata_tap_check | |
+make pg_ctl_tap_check | |
+make pg_dump_tap_check | |
+make pg_rewind_tap_check | |
+make pgbench_tap_check | |
+make scripts_tap_check | |
+make test_pg_dump_tap_check | |
+make recovery_tap_check | |
+make ssl_tap_check | |
+ | |
+Postgres CMake build options | |
+============================ | |
+**-DWITH_PERL** default OFF, optional | |
+ | |
+**-DWITH_OPENSSL** default OFF, optional | |
+ | |
+**-DOPENSSL_ROOT_DIR** Set this variable to the root installation of OpenSSL | |
+ | |
+**-DWITH_PYTHON** default OFF, optional | |
+ | |
+**-DWITH_LIBXML** default OFF, optional | |
+ | |
+**-DWITH_TCL** default OFF, optional | |
+ | |
+**-DWITH_ICU** default OFF, optional | |
+ | |
+**-DENABLE_NLS** default OFF | |
+ | |
+**-DENABLE_GSS** default OFF | |
+ | |
+**-DUSE_PAM** default OFF | |
+ | |
+**-DUSE_ASSERT_CHECKING** default OFF | |
+ | |
+**-DUSE_BONJOUR** default OFF | |
+ | |
+**-DUSE_SYSTEMD** default OFF | |
+ | |
+**-DUSE_BSD_AUTH** default OFF | |
+ | |
+**-DUSE_LDAP** default OFF | |
+ | |
+**-DPROFILE_PID_DIR** default OFF, only for GCC, enable to allow profiling output to be saved separately for each process | |
+ | |
+**-DUSE_FLOAT4_BYVAL** default ON | |
+ | |
+**-DUSE_FLOAT8_BYVAL** default ON for 64bit system | |
+ | |
+**-DHAVE_ATOMICS** default ON | |
+ | |
+**-DHAVE_SPINLOCKS** default ON | |
+ | |
+**-DUSE_INTEGER_DATETIMES** default ON, 64-bit integer timestamp and interval support | |
+ | |
+**-DHAVE_SYMLINK** only for WIN32, default ON | |
+ | |
+**-DPG_KRB_SRVNAM** default 'postgres', the name of the default PostgreSQL service principal in Kerberos (GSSAPI) | |
+ | |
+**-DCMAKE_USE_FOLDERS** default ON, folder grouping of projects in IDEs, actual for MSVC | |
+ | |
+**-DUSE_REPL_SNPRINTF** default not use but if ON you can switch OFF | |
+ | |
+**-DWITH_TAP** default OFF, experemental support TAP tests | |
+ | |
+**-DSTRONG_RANDOM** default ON, strong random number source | |
+ | |
+**-DSTRONG_RANDOM_SOURCE** default OFF (autodetect), which random number source to use - openssl, win32, dev | |
+ | |
+Only **MSVC** options: | |
+ | |
+**-DUSE_FP_STRICT** default ON, if we use /fp:stirct compiler option we much closer to C99 standart in float part | |
+ | |
+CMake options for modules | |
+========================= | |
+To find some libraries we use standard CMake modules and you can read documentation | |
+on the CMake site. | |
+ | |
+For example setup for python2.7: | |
+-DPython_ADDITIONAL_VERSIONS=2.7 -DPYTHON_EXECUTABLE=/usr/bin/python2.7 | |
+ | |
+For details you can read: | |
+Python lib options: https://cmake.org/cmake/help/latest/module/FindPythonLibs.html | |
+Python interpreter options: https://cmake.org/cmake/help/latest/module/FindPythonInterp.html | |
+Perl libs: https://cmake.org/cmake/help/latest/module/FindPerlLibs.html | |
+OpenSSL: https://cmake.org/cmake/help/latest/module/FindOpenSSL.html | |
+Curses: https://cmake.org/cmake/help/latest/module/FindCurses.htm | |
+ | |
+Uncommon CMake Examples | |
+======================= | |
+ | |
+Solaris 10, Sun-Fire-V210: | |
+CFLAGS="-m64 -mcpu=v9" cmake .. -DFIND_LIBRARY_USE_LIB64_PATHS=ON -DCURSES_LIBRARY=/usr/ccs/lib/sparcv9/libcurses.so -DCURSES_FORM_LIBRARY=/usr/ccs/lib/sparcv9/libform.so -DCMAKE_INSTALL_PREFIX="/home/stalkerg/postgresql_bin" | |
+ | |
+AIX 7.1, Power8, gcc 4.8: | |
+CFLAGS="-std=c11 -mcpu=power8 -mtune=power8 -mveclibabi=mass -maix64" LDFLAGS="-Wl,-bbigtoc" cmake .. | |
+ | |
+ | |
+CMake build and test howto | |
+========================== | |
+git clone https://github.com/stalkerg/postgres_cmake.git | |
+cd ./postgres_cmake | |
+#build dir is optional but best way for CMake | |
+mkdir build | |
+cd build | |
+CFLAGS="-s -O2" cmake .. -DCMAKE_INSTALL_PREFIX="/usr/local" -DWITH_PERL=ON -DWITH_LIBXML=ON | |
+#strip binary + O2 optimisation, for CLang you must use -strip-all insted -s | |
+#also you can use -G Ninja for Ninja make system | |
+make -j2 | |
+make check | |
+make isolation_check | |
+make contrib_check | |
+ | |
+#Optional: | |
+make ecpg_check | |
+make modules_check | |
+make plperl_check | |
+make pltcl_check | |
+ | |
+#For example setup for python2.7: | |
+#-DPython_ADDITIONAL_VERSIONS=2.7 -DPYTHON_EXECUTABLE=/usr/bin/python2.7 | |
+make plpython_check | |
+ | |
+#TAP tests (experimental): | |
+make commit_ts_tap_check | |
+make bloom_tap_check | |
+make initdb_tap_check | |
+make pg_basebackup_tap_check | |
+make pg_config_tap_check | |
+make pg_controldata_tap_check | |
+make pg_ctl_tap_check | |
+make pg_dump_tap_check | |
+make pg_rewind_tap_check | |
+make pgbench_tap_check | |
+make scripts_tap_check | |
+make test_pg_dump_tap_check | |
+make recovery_tap_check | |
+make ssl_tap_check | |
+ | |
+make install | |
+make installcheck | |
+ | |
+Minimal build for Windows 7/10 with VisualStudio 2015/2017 | |
+========================================================== | |
+ | |
+First, you should install next programms: | |
+CMake - https://cmake.org/ (64 bit if you have 64 bit windows) | |
+Perl - https://www.activestate.com/activeperl/downloads (not forget add perl to %PATH% in options, 64 bit for build 64 bit Postgres with Perl) | |
+Bison and Flex - https://sourceforge.net/projects/winflexbison/ (after unzip to folder please add this folder to %PATH%) | |
+Sed - http://gnuwin32.sourceforge.net/packages/sed.htm | |
+Diff - http://gnuwin32.sourceforge.net/packages/diffutils.htm | |
+ | |
+After installing Sed and Diff please add "C:/Program Files (x86)/GnuWin32/bin/" to %PATH% . | |
+How change %PATH% on windows? Look here https://www.computerhope.com/issues/ch000549.htm . | |
+Now you can clone our repo create "build" dir inside and open CMake GUI. | |
+In CMake GUI you should choose current repo folder and new "build" as for build and click "Configure". | |
+After this process, you should change CMAKE_INSTALL_PREFIX variable to something like "C:\\postgres_bin" (and create this folder). | |
+Now you can click on "Generate" for generation MSVC solution and after you can open this solution in your MSVC. | |
+In MSVC important find ALL_BUILD "project" and build this target. After complete, you should build INSTALL. | |
+Also, after all, that you can run build "insatllcheck". | |
diff --git a/cmake/CheckCpuID.cmake b/cmake/CheckCpuID.cmake | |
new file mode 100644 | |
index 0000000000..3346302361 | |
--- /dev/null | |
+++ b/cmake/CheckCpuID.cmake | |
@@ -0,0 +1,17 @@ | |
+CHECK_C_SOURCE_COMPILES(" | |
+ #include <cpuid.h> | |
+ int main() { | |
+ unsigned int exx[4] = {0, 0, 0, 0}; | |
+ __get_cpuid(1, &exx[0], &exx[1], &exx[2], &exx[3]); | |
+ return 0; | |
+ } | |
+" HAVE__GET_CPUID) | |
+ | |
+CHECK_C_SOURCE_COMPILES(" | |
+ #include <intrin.h> | |
+ int main() { | |
+ unsigned int exx[4] = {0, 0, 0, 0}; | |
+ __cpuid(exx[0], 1); | |
+ return 0; | |
+ } | |
+" HAVE__CPUID) | |
diff --git a/cmake/CheckFlexibleArray.cmake b/cmake/CheckFlexibleArray.cmake | |
new file mode 100644 | |
index 0000000000..ce57aa4f65 | |
--- /dev/null | |
+++ b/cmake/CheckFlexibleArray.cmake | |
@@ -0,0 +1,37 @@ | |
+set(C99_C_FLAG_CANDIDATES | |
+ " " | |
+ "-std=c99" | |
+ "-std=gnu99" | |
+ "-c99" | |
+ "-AC99" | |
+ "-xc99=all" | |
+ "-qlanglvl=extc99" | |
+) | |
+ | |
+message(STATUS "Check flexible array support") | |
+if(NOT MSVC) | |
+ foreach(FLAG ${C99_C_FLAG_CANDIDATES}) | |
+ set(CMAKE_REQUIRED_FLAGS "${FLAG}") | |
+ unset(FLEXIBLE_ARRAY_MEMBER CACHE) | |
+ CHECK_C_SOURCE_COMPILES(" | |
+ int main(void){ | |
+ int x = 10; | |
+ int y[x]; | |
+ return 0; | |
+ } | |
+ " FLEXIBLE_ARRAY_MEMBER) | |
+ if(FLEXIBLE_ARRAY_MEMBER) | |
+ set(C99_C_FLAGS_INTERNAL "${FLAG}") | |
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG}") | |
+ break() | |
+ endif(FLEXIBLE_ARRAY_MEMBER) | |
+ endforeach(FLAG ${C99_C_FLAG_CANDIDATES}) | |
+endif() | |
+ | |
+if(FLEXIBLE_ARRAY_MEMBER) | |
+ message(STATUS "Check flexible array support - yes with ${C99_C_FLAGS_INTERNAL}") | |
+ set(FLEXIBLE_ARRAY_MEMBER "") | |
+else(FLEXIBLE_ARRAY_MEMBER) | |
+ message(STATUS "Check flexible array support - no") | |
+ set(FLEXIBLE_ARRAY_MEMBER 1) | |
+endif(FLEXIBLE_ARRAY_MEMBER) | |
\ No newline at end of file | |
diff --git a/cmake/CheckLLConstants.cmake b/cmake/CheckLLConstants.cmake | |
new file mode 100644 | |
index 0000000000..68bf65fd02 | |
--- /dev/null | |
+++ b/cmake/CheckLLConstants.cmake | |
@@ -0,0 +1,9 @@ | |
+CHECK_C_SOURCE_COMPILES(" | |
+ main() { | |
+ #define INT64CONST(x) x##LL | |
+ long long int foo = INT64CONST(0x1234567890123456); | |
+ return 0; | |
+ } | |
+" HAVE_LL_CONSTANTS) | |
+ | |
+message(STATUS "HAVE_LL_CONSTANTS ${HAVE_LL_CONSTANTS}") | |
\ No newline at end of file | |
diff --git a/cmake/CheckSSE42.cmake b/cmake/CheckSSE42.cmake | |
new file mode 100644 | |
index 0000000000..3fee3b4641 | |
--- /dev/null | |
+++ b/cmake/CheckSSE42.cmake | |
@@ -0,0 +1,30 @@ | |
+foreach(FLAG ";-msse4.2") | |
+ unset(HAVE_SSE42_INTRINSICS CACHE) | |
+ set(CMAKE_REQUIRED_FLAGS ${FLAG}) | |
+ check_c_source_runs(" | |
+ #include <nmmintrin.h> | |
+ int main(void) { | |
+ unsigned int crc = 0; | |
+ crc = _mm_crc32_u8(crc, 0); | |
+ crc = _mm_crc32_u32(crc, 0); | |
+ /* return computed value, to prevent the above being optimized away */ | |
+ return !(crc == 0); | |
+ } | |
+ " HAVE_SSE42_INTRINSICS) | |
+ if (HAVE_SSE42_INTRINSICS) | |
+ set(CFLAGS_SSE42 ${FLAG}) | |
+ break() | |
+ endif() | |
+endforeach() | |
+ | |
+message(STATUS "SSE4.2 flags: ${CFLAGS_SSE42}") | |
+set(CMAKE_REQUIRED_FLAGS ${CFLAGS_SSE42}) | |
+check_c_source_compiles(" | |
+ #ifndef __SSE4_2__ | |
+ #error __SSE4_2__ not defined | |
+ #endif | |
+ int main(void){ | |
+ return 0; | |
+ } | |
+" HAVE_SSE42) | |
+set(CMAKE_REQUIRED_FLAGS "") | |
diff --git a/cmake/CheckSnprintfLongLongIntModifier.cmake b/cmake/CheckSnprintfLongLongIntModifier.cmake | |
new file mode 100644 | |
index 0000000000..f07623890a | |
--- /dev/null | |
+++ b/cmake/CheckSnprintfLongLongIntModifier.cmake | |
@@ -0,0 +1,31 @@ | |
+set(CMAKE_REQUIRED_INCLUDES "stdio.h") | |
+foreach(pgac_modifier "ll" "q" "I64") | |
+ unset(LONG_LONG_INT_MODIFIER CACHE) | |
+ CHECK_C_SOURCE_COMPILES(" | |
+ typedef long long int ac_int64; | |
+ | |
+ ac_int64 a = 20000001; | |
+ ac_int64 b = 40000005; | |
+ | |
+ int does_int64_snprintf_work() { | |
+ ac_int64 c; | |
+ char buf[100]; | |
+ if (sizeof(ac_int64) != 8) | |
+ return 0; /* doesn't look like the right size */ | |
+ | |
+ c = a * b; | |
+ snprintf(buf, 100, \"%${pgac_modifier}d\", c); | |
+ if (strcmp(buf, \"800000140000005\") != 0) | |
+ return 0; /* either multiply or snprintf is busted */ | |
+ return 1; | |
+ } | |
+ main() { | |
+ exit(! does_int64_snprintf_work()); | |
+ } | |
+ " LONG_LONG_INT_MODIFIER) | |
+ if(LONG_LONG_INT_MODIFIER) | |
+ set(LONG_LONG_INT_MODIFIER ${pgac_modifier}) | |
+ break() | |
+ endif(LONG_LONG_INT_MODIFIER) | |
+endforeach(pgac_modifier) | |
+message(STATUS "LONG_LONG_INT_MODIFIER ${LONG_LONG_INT_MODIFIER}") | |
\ No newline at end of file | |
diff --git a/cmake/CheckTypeAlignment.cmake b/cmake/CheckTypeAlignment.cmake | |
new file mode 100644 | |
index 0000000000..37cbb580d3 | |
--- /dev/null | |
+++ b/cmake/CheckTypeAlignment.cmake | |
@@ -0,0 +1,29 @@ | |
+macro(CHECK_TYPE_ALIGNMENT TYPE NAME) | |
+ if(NOT ${NAME}) | |
+ message(STATUS "Check alignment of ${TYPE}") | |
+ | |
+ set(INCLUDE_HEADERS "#include <stddef.h> | |
+ #include <stdio.h> | |
+ #include <stdlib.h>") | |
+ | |
+ if(HAVE_STDINT_H) | |
+ set(INCLUDE_HEADERS "${INCLUDE_HEADERS}\n#include <stdint.h>\n") | |
+ endif(HAVE_STDINT_H) | |
+ | |
+ file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_${NAME}_alignment.c" | |
+ "${INCLUDE_HEADERS} | |
+ int main(){ | |
+ char diff; | |
+ struct foo {char a; ${TYPE} b;}; | |
+ struct foo *p = (struct foo *) malloc(sizeof(struct foo)); | |
+ diff = ((char *)&p->b) - ((char *)&p->a); | |
+ return diff;} | |
+ ") | |
+ | |
+ try_run(${NAME} COMPILE_RESULT "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/" | |
+ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_${NAME}_alignment.c") | |
+ | |
+ message(STATUS "Check alignment of ${TYPE} - ${${NAME}}") | |
+ | |
+ endif(NOT ${NAME}) | |
+endmacro(CHECK_TYPE_ALIGNMENT TYPE NAME ALIGNOF_TYPE) | |
\ No newline at end of file | |
diff --git a/cmake/FindICU.cmake b/cmake/FindICU.cmake | |
new file mode 100644 | |
index 0000000000..59dd891afa | |
--- /dev/null | |
+++ b/cmake/FindICU.cmake | |
@@ -0,0 +1,690 @@ | |
+# This module can find the International Components for Unicode (ICU) libraries | |
+# | |
+# Requirements: | |
+# - CMake >= 2.8.3 (for new version of find_package_handle_standard_args) | |
+# | |
+# The following variables will be defined for your use: | |
+# - ICU_FOUND : were all of your specified components found? | |
+# - ICU_INCLUDE_DIRS : ICU include directory | |
+# - ICU_LIBRARIES : ICU libraries | |
+# - ICU_VERSION : complete version of ICU (x.y.z) | |
+# - ICU_VERSION_MAJOR : major version of ICU | |
+# - ICU_VERSION_MINOR : minor version of ICU | |
+# - ICU_VERSION_PATCH : patch version of ICU | |
+# - ICU_<COMPONENT>_FOUND : were <COMPONENT> found? (FALSE for non specified component if it is not a dependency) | |
+# | |
+# For windows or non standard installation, define ICU_ROOT_DIR variable to point to the root installation of ICU. Two ways: | |
+# - run cmake with -DICU_ROOT_DIR=<PATH> | |
+# - define an environment variable with the same name before running cmake | |
+# With cmake-gui, before pressing "Configure": | |
+# 1) Press "Add Entry" button | |
+# 2) Add a new entry defined as: | |
+# - Name: ICU_ROOT_DIR | |
+# - Type: choose PATH in the selection list | |
+# - Press "..." button and select the root installation of ICU | |
+# | |
+# Example Usage: | |
+# | |
+# 1. Copy this file in the root of your project source directory | |
+# 2. Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt: | |
+# set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) | |
+# 3. Finally call find_package() once, here are some examples to pick from | |
+# | |
+# Require ICU 4.4 or later | |
+# find_package(ICU 4.4 REQUIRED) | |
+# | |
+# if(ICU_FOUND) | |
+# add_executable(myapp myapp.c) | |
+# include_directories(${ICU_INCLUDE_DIRS}) | |
+# target_link_libraries(myapp ${ICU_LIBRARIES}) | |
+# # with CMake >= 3.0.0, the last two lines can be replaced by the following | |
+# target_link_libraries(myapp ICU::ICU) | |
+# endif(ICU_FOUND) | |
+ | |
+########## <ICU finding> ########## | |
+ | |
+find_package(PkgConfig QUIET) | |
+ | |
+########## Private ########## | |
+if(NOT DEFINED ICU_PUBLIC_VAR_NS) | |
+ set(ICU_PUBLIC_VAR_NS "ICU") # Prefix for all ICU relative public variables | |
+endif(NOT DEFINED ICU_PUBLIC_VAR_NS) | |
+if(NOT DEFINED ICU_PRIVATE_VAR_NS) | |
+ set(ICU_PRIVATE_VAR_NS "_${ICU_PUBLIC_VAR_NS}") # Prefix for all ICU relative internal variables | |
+endif(NOT DEFINED ICU_PRIVATE_VAR_NS) | |
+if(NOT DEFINED PC_ICU_PRIVATE_VAR_NS) | |
+ set(PC_ICU_PRIVATE_VAR_NS "_PC${ICU_PRIVATE_VAR_NS}") # Prefix for all pkg-config relative internal variables | |
+endif(NOT DEFINED PC_ICU_PRIVATE_VAR_NS) | |
+ | |
+set(${ICU_PRIVATE_VAR_NS}_HINTS ) | |
+# <deprecated> | |
+# for future removal | |
+if(DEFINED ENV{ICU_ROOT}) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "$ENV{ICU_ROOT}") | |
+ message(AUTHOR_WARNING "ENV{ICU_ROOT} is deprecated in favor of ENV{ICU_ROOT_DIR}") | |
+endif(DEFINED ENV{ICU_ROOT}) | |
+if (DEFINED ICU_ROOT) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "${ICU_ROOT}") | |
+ message(AUTHOR_WARNING "ICU_ROOT is deprecated in favor of ICU_ROOT_DIR") | |
+endif(DEFINED ICU_ROOT) | |
+# </deprecated> | |
+if(DEFINED ENV{ICU_ROOT_DIR}) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "$ENV{ICU_ROOT_DIR}") | |
+endif(DEFINED ENV{ICU_ROOT_DIR}) | |
+if (DEFINED ICU_ROOT_DIR) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS "${ICU_ROOT_DIR}") | |
+endif(DEFINED ICU_ROOT_DIR) | |
+ | |
+set(${ICU_PRIVATE_VAR_NS}_COMPONENTS ) | |
+# <icu component name> <library name 1> ... <library name N> | |
+macro(_icu_declare_component _NAME) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_COMPONENTS ${_NAME}) | |
+ set("${ICU_PRIVATE_VAR_NS}_COMPONENTS_${_NAME}" ${ARGN}) | |
+endmacro(_icu_declare_component) | |
+ | |
+_icu_declare_component(data icudata) | |
+_icu_declare_component(uc icuuc) # Common and Data libraries | |
+_icu_declare_component(i18n icui18n icuin) # Internationalization library | |
+_icu_declare_component(io icuio ustdio) # Stream and I/O Library | |
+_icu_declare_component(le icule) # Layout library | |
+_icu_declare_component(lx iculx) # Paragraph Layout library | |
+ | |
+########## Public ########## | |
+set(${ICU_PUBLIC_VAR_NS}_FOUND FALSE) | |
+set(${ICU_PUBLIC_VAR_NS}_LIBRARIES ) | |
+set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS ) | |
+set(${ICU_PUBLIC_VAR_NS}_C_FLAGS "") | |
+set(${ICU_PUBLIC_VAR_NS}_CXX_FLAGS "") | |
+set(${ICU_PUBLIC_VAR_NS}_CPP_FLAGS "") | |
+set(${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS "") | |
+set(${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS "") | |
+set(${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS "") | |
+ | |
+foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS}) | |
+ string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT) | |
+ set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) # may be done in the _icu_declare_component macro | |
+endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT) | |
+ | |
+# Check components | |
+if(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) # uc required at least | |
+ set(${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc) | |
+else(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) | |
+ list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc) | |
+ list(REMOVE_DUPLICATES ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) | |
+ foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS}) | |
+ if(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) | |
+ message(FATAL_ERROR "Unknown ICU component: ${${ICU_PRIVATE_VAR_NS}_COMPONENT}") | |
+ endif(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) | |
+ endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT) | |
+endif(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) | |
+ | |
+# if pkg-config is available check components dependencies and append `pkg-config icu-<component> --variable=prefix` to hints | |
+if(PKG_CONFIG_FOUND) | |
+ set(${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS}) | |
+ foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP}) | |
+ pkg_check_modules(${PC_ICU_PRIVATE_VAR_NS} "icu-${${ICU_PRIVATE_VAR_NS}_COMPONENT}" QUIET) | |
+ | |
+ if(${PC_ICU_PRIVATE_VAR_NS}_FOUND) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS ${${PC_ICU_PRIVATE_VAR_NS}_PREFIX}) | |
+ foreach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY ${${PC_ICU_PRIVATE_VAR_NS}_LIBRARIES}) | |
+ string(REGEX REPLACE "^icu" "" ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY ${${PC_ICU_PRIVATE_VAR_NS}_LIBRARY}) | |
+ if(NOT ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY STREQUAL "data") | |
+ list(FIND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY} ${ICU_PRIVATE_VAR_NS}_COMPONENT_INDEX) | |
+ if(${ICU_PRIVATE_VAR_NS}_COMPONENT_INDEX EQUAL -1) | |
+ message(WARNING "Missing component dependency: ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY}. Add it to your find_package(ICU) line as COMPONENTS to fix this warning.") | |
+ list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY}) | |
+ endif(${ICU_PRIVATE_VAR_NS}_COMPONENT_INDEX EQUAL -1) | |
+ endif(NOT ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY STREQUAL "data") | |
+ endforeach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY) | |
+ endif(${PC_ICU_PRIVATE_VAR_NS}_FOUND) | |
+ endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT) | |
+endif(PKG_CONFIG_FOUND) | |
+# list(APPEND ${ICU_PRIVATE_VAR_NS}_HINTS ENV ICU_ROOT_DIR) | |
+# message("${ICU_PRIVATE_VAR_NS}_HINTS = ${${ICU_PRIVATE_VAR_NS}_HINTS}") | |
+ | |
+# Includes | |
+find_path( | |
+ ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR | |
+ NAMES unicode/utypes.h utypes.h | |
+ HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS} | |
+ PATH_SUFFIXES "include" | |
+ DOC "Include directories for ICU" | |
+) | |
+ | |
+if(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR) | |
+ ########## <part to keep synced with tests/version/CMakeLists.txt> ########## | |
+ if(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uvernum.h") # ICU >= 4.4 | |
+ file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uvernum.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS) | |
+ elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uversion.h") # ICU [2;4.4[ | |
+ file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/uversion.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS) | |
+ elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/utypes.h") # ICU [1.4;2[ | |
+ file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/unicode/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS) | |
+ elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/utypes.h") # ICU 1.3 | |
+ file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS) | |
+ else() | |
+ message(FATAL_ERROR "ICU version header not found") | |
+ endif() | |
+ | |
+ if(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *ICU_VERSION *\"([0-9]+)\".*") # ICU 1.3 | |
+ # [1.3;1.4[ as #define ICU_VERSION "3" (no patch version, ie all 1.3.X versions will be detected as 1.3.0) | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "1") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${CMAKE_MATCH_1}") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "0") | |
+ elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION_MAJOR_NUM *([0-9]+).*") | |
+ # | |
+ # Since version 4.9.1, ICU release version numbering was totaly changed, see: | |
+ # - http://site.icu-project.org/download/49 | |
+ # - http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU | |
+ # | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "${CMAKE_MATCH_1}") | |
+ string(REGEX REPLACE ".*# *define *U_ICU_VERSION_MINOR_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}") | |
+ string(REGEX REPLACE ".*# *define *U_ICU_VERSION_PATCHLEVEL_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}") | |
+ elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION *\"(([0-9]+)(\\.[0-9]+)*)\".*") # ICU [1.4;1.8[ | |
+ # [1.4;1.8[ as #define U_ICU_VERSION "1.4.1.2" but it seems that some 1.4.[12](?:\.\d)? have releasing error and appears as 1.4.0 | |
+ set(${ICU_PRIVATE_VAR_NS}_FULL_VERSION "${CMAKE_MATCH_1}") # copy CMAKE_MATCH_1, no longer valid on the following if | |
+ if(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "${CMAKE_MATCH_1}") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${CMAKE_MATCH_2}") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "0") | |
+ elseif(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR "${CMAKE_MATCH_1}") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_MINOR "${CMAKE_MATCH_2}") | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION_PATCH "${CMAKE_MATCH_3}") | |
+ endif() | |
+ else() | |
+ message(FATAL_ERROR "failed to detect ICU version") | |
+ endif() | |
+ set(${ICU_PUBLIC_VAR_NS}_VERSION "${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}.${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}.${${ICU_PUBLIC_VAR_NS}_VERSION_PATCH}") | |
+ ########## </part to keep synced with tests/version/CMakeLists.txt> ########## | |
+endif(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR) | |
+ | |
+# Check libraries | |
+if(MSVC) | |
+ include(SelectLibraryConfigurations) | |
+endif(MSVC) | |
+foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS}) | |
+ string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT) | |
+ if(MSVC) | |
+ set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES ) | |
+ set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES ) | |
+ foreach(${ICU_PRIVATE_VAR_NS}_BASE_NAME ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}) | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}") | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}d") | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}") | |
+ list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}d") | |
+ endforeach(${ICU_PRIVATE_VAR_NS}_BASE_NAME) | |
+ | |
+ find_library( | |
+ ${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE | |
+ NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES} | |
+ HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS} | |
+ DOC "Release library for ICU ${${ICU_PRIVATE_VAR_NS}_COMPONENT} component" | |
+ ) | |
+ find_library( | |
+ ${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG | |
+ NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES} | |
+ HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS} | |
+ DOC "Debug library for ICU ${${ICU_PRIVATE_VAR_NS}_COMPONENT} component" | |
+ ) | |
+ | |
+ select_library_configurations("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}") | |
+ list(APPEND ${ICU_PUBLIC_VAR_NS}_LIBRARY ${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}) | |
+ else(MSVC) | |
+ find_library( | |
+ ${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY | |
+ NAMES ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}} | |
+ PATHS ${${ICU_PRIVATE_VAR_NS}_HINTS} | |
+ DOC "Library for ICU ${${ICU_PRIVATE_VAR_NS}_COMPONENT} component" | |
+ ) | |
+ | |
+ if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY) | |
+ set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" TRUE) | |
+ list(APPEND ${ICU_PUBLIC_VAR_NS}_LIBRARY ${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}) | |
+ endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY) | |
+ endif(MSVC) | |
+endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT) | |
+ | |
+# Try to find out compiler flags | |
+find_program(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE icu-config HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS}) | |
+if(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE) | |
+ execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) | |
+ execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) | |
+ execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) | |
+ | |
+ execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) | |
+ execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) | |
+ execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) | |
+endif(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE) | |
+ | |
+# Check find_package arguments | |
+include(FindPackageHandleStandardArgs) | |
+if(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY) | |
+ find_package_handle_standard_args( | |
+ ${ICU_PUBLIC_VAR_NS} | |
+ REQUIRED_VARS ${ICU_PUBLIC_VAR_NS}_LIBRARY ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR | |
+ VERSION_VAR ${ICU_PUBLIC_VAR_NS}_VERSION | |
+ ) | |
+else(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY) | |
+ find_package_handle_standard_args(${ICU_PUBLIC_VAR_NS} "Could NOT find ICU" ${ICU_PUBLIC_VAR_NS}_LIBRARY ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR) | |
+endif(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY) | |
+ | |
+if(${ICU_PUBLIC_VAR_NS}_FOUND) | |
+ # <deprecated> | |
+ # for compatibility with previous versions, alias old ICU_(MAJOR|MINOR|PATCH)_VERSION to ICU_VERSION_$1 | |
+ set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION ${${ICU_PUBLIC_VAR_NS}_VERSION_MAJOR}) | |
+ set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION ${${ICU_PUBLIC_VAR_NS}_VERSION_MINOR}) | |
+ set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION ${${ICU_PUBLIC_VAR_NS}_VERSION_PATCH}) | |
+ # </deprecated> | |
+ set(${ICU_PUBLIC_VAR_NS}_LIBRARIES ${${ICU_PUBLIC_VAR_NS}_LIBRARY}) | |
+ set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS ${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}) | |
+ | |
+ if(NOT CMAKE_VERSION VERSION_LESS "3.0.0") | |
+ if(NOT TARGET ICU::ICU) | |
+ add_library(ICU::ICU INTERFACE IMPORTED) | |
+ endif(NOT TARGET ICU::ICU) | |
+ set_target_properties(ICU::ICU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}") | |
+ foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS}) | |
+ string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT) | |
+ add_library("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" UNKNOWN IMPORTED) | |
+ if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE) | |
+ set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |
+ set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_RELEASE "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE}") | |
+ endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE) | |
+ if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG) | |
+ set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) | |
+ set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_DEBUG "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG}") | |
+ endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG) | |
+ if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY) | |
+ set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}") | |
+ endif(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY) | |
+ set_property(TARGET ICU::ICU APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}") | |
+# set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}") | |
+ endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT) | |
+ endif(NOT CMAKE_VERSION VERSION_LESS "3.0.0") | |
+endif(${ICU_PUBLIC_VAR_NS}_FOUND) | |
+ | |
+mark_as_advanced( | |
+ ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR | |
+ ${ICU_PUBLIC_VAR_NS}_LIBRARY | |
+) | |
+ | |
+########## </ICU finding> ########## | |
+ | |
+########## <resource bundle support> ########## | |
+ | |
+########## Private ########## | |
+function(_icu_extract_locale_from_rb _BUNDLE_SOURCE _RETURN_VAR_NAME) | |
+ file(READ "${_BUNDLE_SOURCE}" _BUNDLE_CONTENTS) | |
+ string(REGEX REPLACE "//[^\n]*\n" "" _BUNDLE_CONTENTS_WITHOUT_COMMENTS ${_BUNDLE_CONTENTS}) | |
+ string(REGEX REPLACE "[ \t\n]" "" _BUNDLE_CONTENTS_WITHOUT_COMMENTS_AND_SPACES ${_BUNDLE_CONTENTS_WITHOUT_COMMENTS}) | |
+ string(REGEX MATCH "^([a-zA-Z_-]+)(:table)?{" LOCALE_FOUND ${_BUNDLE_CONTENTS_WITHOUT_COMMENTS_AND_SPACES}) | |
+ set("${_RETURN_VAR_NAME}" "${CMAKE_MATCH_1}" PARENT_SCOPE) | |
+endfunction(_icu_extract_locale_from_rb) | |
+ | |
+########## Public ########## | |
+ | |
+# | |
+# Prototype: | |
+# icu_generate_resource_bundle([NAME <name>] [PACKAGE] [DESTINATION <location>] [FILES <list of files>]) | |
+# | |
+# Common arguments: | |
+# - NAME <name> : name of output package and to create dummy targets | |
+# - FILES <file 1> ... <file N> : list of resource bundles sources | |
+# - DEPENDS <target1> ... <target N> : required to package as library (shared or static), a list of cmake parent targets to link to | |
+# Note: only (PREVIOUSLY DECLARED) add_executable and add_library as dependencies | |
+# - DESTINATION <location> : optional, directory where to install final binary file(s) | |
+# - FORMAT <name> : optional, one of none (ICU4C binary format, default), java (plain java) or xliff (XML), see below | |
+# | |
+# Arguments depending on FORMAT: | |
+# - none (default): | |
+# * PACKAGE : if present, package all resource bundles together. Default is to stop after building individual *.res files | |
+# * TYPE <name> : one of : | |
+# + common or archive (default) : archive all ressource bundles into a single .dat file | |
+# + library or dll : assemble all ressource bundles into a separate and loadable library (.dll/.so) | |
+# + static : integrate all ressource bundles to targets designed by DEPENDS parameter (as a static library) | |
+# * NO_SHARED_FLAGS : only with TYPE in ['library', 'dll', 'static'], do not append ICU_C(XX)_SHARED_FLAGS to targets given as DEPENDS argument | |
+# - JAVA: | |
+# * BUNDLE <name> : required, prefix for generated classnames | |
+# - XLIFF: | |
+# (none) | |
+# | |
+ | |
+# | |
+# For an archive, the idea is to generate the following dependencies: | |
+# | |
+# root.txt => root.res \ | |
+# | | |
+# en.txt => en.res | | |
+# | => pkglist.txt => application.dat | |
+# fr.txt => fr.res | | |
+# | | |
+# and so on / | |
+# | |
+# Lengend: 'A => B' means B depends on A | |
+# | |
+# Steps (correspond to arrows): | |
+# 1) genrb (from .txt to .res) | |
+# 2) generate a file text (pkglist.txt) with all .res files to put together | |
+# 3) build final archive (from *.res/pkglist.txt to .dat) | |
+# | |
+ | |
+function(icu_generate_resource_bundle) | |
+ | |
+ ##### <check for pkgdata/genrb availability> ##### | |
+ find_program(${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE genrb HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS}) | |
+ find_program(${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE pkgdata HINTS ${${ICU_PRIVATE_VAR_NS}_HINTS}) | |
+ | |
+ if(NOT ${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE) | |
+ message(FATAL_ERROR "genrb not found") | |
+ endif(NOT ${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE) | |
+ if(NOT ${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE) | |
+ message(FATAL_ERROR "pkgdata not found") | |
+ endif(NOT ${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE) | |
+ ##### </check for pkgdata/genrb availability> ##### | |
+ | |
+ ##### <constants> ##### | |
+ set(TARGET_SEPARATOR "+") | |
+ set(__FUNCTION__ "icu_generate_resource_bundle") | |
+ set(PACKAGE_TARGET_PREFIX "ICU${TARGET_SEPARATOR}PKG") | |
+ set(RESOURCE_TARGET_PREFIX "ICU${TARGET_SEPARATOR}RB") | |
+ ##### </constants> ##### | |
+ | |
+ ##### <hash constants> ##### | |
+ # filename extension of built resource bundle (without dot) | |
+ set(BUNDLES__SUFFIX "res") | |
+ set(BUNDLES_JAVA_SUFFIX "java") | |
+ set(BUNDLES_XLIFF_SUFFIX "xlf") | |
+ # alias: none (default) = common = archive ; dll = library ; static | |
+ set(PKGDATA__ALIAS "") | |
+ set(PKGDATA_COMMON_ALIAS "") | |
+ set(PKGDATA_ARCHIVE_ALIAS "") | |
+ set(PKGDATA_DLL_ALIAS "LIBRARY") | |
+ set(PKGDATA_LIBRARY_ALIAS "LIBRARY") | |
+ set(PKGDATA_STATIC_ALIAS "STATIC") | |
+ # filename prefix of built package | |
+ set(PKGDATA__PREFIX "") | |
+ set(PKGDATA_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}") | |
+ set(PKGDATA_STATIC_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}") | |
+ # filename extension of built package (with dot) | |
+ set(PKGDATA__SUFFIX ".dat") | |
+ set(PKGDATA_LIBRARY_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}") | |
+ set(PKGDATA_STATIC_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}") | |
+ # pkgdata option mode specific | |
+ set(PKGDATA__OPTIONS "-m" "common") | |
+ set(PKGDATA_STATIC_OPTIONS "-m" "static") | |
+ set(PKGDATA_LIBRARY_OPTIONS "-m" "library") | |
+ # cmake library type for output package | |
+ set(PKGDATA_LIBRARY__TYPE "") | |
+ set(PKGDATA_LIBRARY_STATIC_TYPE STATIC) | |
+ set(PKGDATA_LIBRARY_LIBRARY_TYPE SHARED) | |
+ ##### </hash constants> ##### | |
+ | |
+ include(CMakeParseArguments) | |
+ cmake_parse_arguments( | |
+ PARSED_ARGS # output variable name | |
+ # options (true/false) (default value: false) | |
+ "PACKAGE;NO_SHARED_FLAGS" | |
+ # univalued parameters (default value: "") | |
+ "NAME;DESTINATION;TYPE;FORMAT;BUNDLE" | |
+ # multivalued parameters (default value: "") | |
+ "FILES;DEPENDS" | |
+ ${ARGN} | |
+ ) | |
+ | |
+ # assert(${PARSED_ARGS_NAME} != "") | |
+ if(NOT PARSED_ARGS_NAME) | |
+ message(FATAL_ERROR "${__FUNCTION__}(): no name given, NAME parameter missing") | |
+ endif(NOT PARSED_ARGS_NAME) | |
+ | |
+ # assert(length(PARSED_ARGS_FILES) > 0) | |
+ list(LENGTH PARSED_ARGS_FILES PARSED_ARGS_FILES_LEN) | |
+ if(PARSED_ARGS_FILES_LEN LESS 1) | |
+ message(FATAL_ERROR "${__FUNCTION__}() expects at least 1 resource bundle as FILES argument, 0 given") | |
+ endif(PARSED_ARGS_FILES_LEN LESS 1) | |
+ | |
+ string(TOUPPER "${PARSED_ARGS_FORMAT}" UPPER_FORMAT) | |
+ # assert(${UPPER_FORMAT} in ['', 'java', 'xlif']) | |
+ if(NOT DEFINED BUNDLES_${UPPER_FORMAT}_SUFFIX) | |
+ message(FATAL_ERROR "${__FUNCTION__}(): unknown FORMAT '${PARSED_ARGS_FORMAT}'") | |
+ endif(NOT DEFINED BUNDLES_${UPPER_FORMAT}_SUFFIX) | |
+ | |
+ if(UPPER_FORMAT STREQUAL "JAVA") | |
+ # assert(${PARSED_ARGS_BUNDLE} != "") | |
+ if(NOT PARSED_ARGS_BUNDLE) | |
+ message(FATAL_ERROR "${__FUNCTION__}(): java bundle name expected, BUNDLE parameter missing") | |
+ endif(NOT PARSED_ARGS_BUNDLE) | |
+ endif(UPPER_FORMAT STREQUAL "JAVA") | |
+ | |
+ if(PARSED_ARGS_PACKAGE) | |
+ # assert(${PARSED_ARGS_FORMAT} == "") | |
+ if(PARSED_ARGS_FORMAT) | |
+ message(FATAL_ERROR "${__FUNCTION__}(): packaging is only supported for binary format, not xlif neither java outputs") | |
+ endif(PARSED_ARGS_FORMAT) | |
+ | |
+ string(TOUPPER "${PARSED_ARGS_TYPE}" UPPER_MODE) | |
+ # assert(${UPPER_MODE} in ['', 'common', 'archive', 'dll', library']) | |
+ if(NOT DEFINED PKGDATA_${UPPER_MODE}_ALIAS) | |
+ message(FATAL_ERROR "${__FUNCTION__}(): unknown TYPE '${PARSED_ARGS_TYPE}'") | |
+ else(NOT DEFINED PKGDATA_${UPPER_MODE}_ALIAS) | |
+ set(TYPE "${PKGDATA_${UPPER_MODE}_ALIAS}") | |
+ endif(NOT DEFINED PKGDATA_${UPPER_MODE}_ALIAS) | |
+ | |
+ # Package name: strip file extension if present | |
+ get_filename_component(PACKAGE_NAME_WE ${PARSED_ARGS_NAME} NAME_WE) | |
+ # Target name to build package | |
+ set(PACKAGE_TARGET_NAME "${PACKAGE_TARGET_PREFIX}${TARGET_SEPARATOR}${PACKAGE_NAME_WE}") | |
+ # Target name to build intermediate list file | |
+ set(PACKAGE_LIST_TARGET_NAME "${PACKAGE_TARGET_NAME}${TARGET_SEPARATOR}PKGLIST") | |
+ # Directory (absolute) to set as "current directory" for genrb (does not include package directory, -p) | |
+ # We make our "cook" there to prevent any conflict | |
+ if(DEFINED CMAKE_PLATFORM_ROOT_BIN) # CMake < 2.8.10 | |
+ set(RESOURCE_GENRB_CHDIR_DIR "${CMAKE_PLATFORM_ROOT_BIN}/${PACKAGE_TARGET_NAME}.dir/") | |
+ else(DEFINED CMAKE_PLATFORM_ROOT_BIN) # CMake >= 2.8.10 | |
+ set(RESOURCE_GENRB_CHDIR_DIR "${CMAKE_PLATFORM_INFO_DIR}/${PACKAGE_TARGET_NAME}.dir/") | |
+ endif(DEFINED CMAKE_PLATFORM_ROOT_BIN) | |
+ # Directory (absolute) where resource bundles are built: concatenation of RESOURCE_GENRB_CHDIR_DIR and package name | |
+ set(RESOURCE_OUTPUT_DIR "${RESOURCE_GENRB_CHDIR_DIR}/${PACKAGE_NAME_WE}/") | |
+ # Output (relative) path for built package | |
+ if(MSVC AND TYPE STREQUAL PKGDATA_LIBRARY_ALIAS) | |
+ set(PACKAGE_OUTPUT_PATH "${RESOURCE_GENRB_CHDIR_DIR}/${PACKAGE_NAME_WE}/${PKGDATA_${TYPE}_PREFIX}${PACKAGE_NAME_WE}${PKGDATA_${TYPE}_SUFFIX}") | |
+ else(MSVC AND TYPE STREQUAL PKGDATA_LIBRARY_ALIAS) | |
+ set(PACKAGE_OUTPUT_PATH "${RESOURCE_GENRB_CHDIR_DIR}/${PKGDATA_${TYPE}_PREFIX}${PACKAGE_NAME_WE}${PKGDATA_${TYPE}_SUFFIX}") | |
+ endif(MSVC AND TYPE STREQUAL PKGDATA_LIBRARY_ALIAS) | |
+ # Output (absolute) path for the list file | |
+ set(PACKAGE_LIST_OUTPUT_PATH "${RESOURCE_GENRB_CHDIR_DIR}/pkglist.txt") | |
+ | |
+ file(MAKE_DIRECTORY "${RESOURCE_OUTPUT_DIR}") | |
+ else(PARSED_ARGS_PACKAGE) | |
+ set(RESOURCE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/") | |
+# set(RESOURCE_GENRB_CHDIR_DIR "UNUSED") | |
+ endif(PARSED_ARGS_PACKAGE) | |
+ | |
+ set(TARGET_RESOURCES ) | |
+ set(COMPILED_RESOURCES_PATH ) | |
+ set(COMPILED_RESOURCES_BASENAME ) | |
+ foreach(RESOURCE_SOURCE ${PARSED_ARGS_FILES}) | |
+ _icu_extract_locale_from_rb(${RESOURCE_SOURCE} RESOURCE_NAME_WE) | |
+ get_filename_component(SOURCE_BASENAME ${RESOURCE_SOURCE} NAME) | |
+ get_filename_component(ABSOLUTE_SOURCE ${RESOURCE_SOURCE} ABSOLUTE) | |
+ | |
+ if(UPPER_FORMAT STREQUAL "XLIFF") | |
+ if(RESOURCE_NAME_WE STREQUAL "root") | |
+ set(XLIFF_LANGUAGE "en") | |
+ else(RESOURCE_NAME_WE STREQUAL "root") | |
+ string(REGEX REPLACE "[^a-z].*$" "" XLIFF_LANGUAGE "${RESOURCE_NAME_WE}") | |
+ endif(RESOURCE_NAME_WE STREQUAL "root") | |
+ endif(UPPER_FORMAT STREQUAL "XLIFF") | |
+ | |
+ ##### <templates> ##### | |
+ set(RESOURCE_TARGET_NAME "${RESOURCE_TARGET_PREFIX}${TARGET_SEPARATOR}${PARSED_ARGS_NAME}${TARGET_SEPARATOR}${RESOURCE_NAME_WE}") | |
+ | |
+ set(RESOURCE_OUTPUT__PATH "${RESOURCE_NAME_WE}.res") | |
+ if(RESOURCE_NAME_WE STREQUAL "root") | |
+ set(RESOURCE_OUTPUT_JAVA_PATH "${PARSED_ARGS_BUNDLE}.java") | |
+ else(RESOURCE_NAME_WE STREQUAL "root") | |
+ set(RESOURCE_OUTPUT_JAVA_PATH "${PARSED_ARGS_BUNDLE}_${RESOURCE_NAME_WE}.java") | |
+ endif(RESOURCE_NAME_WE STREQUAL "root") | |
+ set(RESOURCE_OUTPUT_XLIFF_PATH "${RESOURCE_NAME_WE}.xlf") | |
+ | |
+ set(GENRB__OPTIONS "") | |
+ set(GENRB_JAVA_OPTIONS "-j" "-b" "${PARSED_ARGS_BUNDLE}") | |
+ set(GENRB_XLIFF_OPTIONS "-x" "-l" "${XLIFF_LANGUAGE}") | |
+ ##### </templates> ##### | |
+ | |
+ # build <locale>.txt from <locale>.res | |
+ if(PARSED_ARGS_PACKAGE) | |
+ add_custom_command( | |
+ OUTPUT "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}" | |
+ COMMAND ${CMAKE_COMMAND} -E chdir ${RESOURCE_GENRB_CHDIR_DIR} ${${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE} ${GENRB_${UPPER_FORMAT}_OPTIONS} -d ${PACKAGE_NAME_WE} ${ABSOLUTE_SOURCE} | |
+ DEPENDS ${RESOURCE_SOURCE} | |
+ ) | |
+ else(PARSED_ARGS_PACKAGE) | |
+ add_custom_command( | |
+ OUTPUT "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}" | |
+ COMMAND ${${ICU_PUBLIC_VAR_NS}_GENRB_EXECUTABLE} ${GENRB_${UPPER_FORMAT}_OPTIONS} -d ${RESOURCE_OUTPUT_DIR} ${ABSOLUTE_SOURCE} | |
+ DEPENDS ${RESOURCE_SOURCE} | |
+ ) | |
+ endif(PARSED_ARGS_PACKAGE) | |
+ # dummy target (ICU+RB+<name>+<locale>) for each locale to build the <locale>.res file from its <locale>.txt by the add_custom_command above | |
+ add_custom_target( | |
+ "${RESOURCE_TARGET_NAME}" ALL | |
+ COMMENT "" | |
+ DEPENDS "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}" | |
+ SOURCES ${RESOURCE_SOURCE} | |
+ ) | |
+ | |
+ if(PARSED_ARGS_DESTINATION AND NOT PARSED_ARGS_PACKAGE) | |
+ install(FILES "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}" DESTINATION ${PARSED_ARGS_DESTINATION} PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) | |
+ endif(PARSED_ARGS_DESTINATION AND NOT PARSED_ARGS_PACKAGE) | |
+ | |
+ list(APPEND TARGET_RESOURCES "${RESOURCE_TARGET_NAME}") | |
+ list(APPEND COMPILED_RESOURCES_PATH "${RESOURCE_OUTPUT_DIR}${RESOURCE_OUTPUT_${UPPER_FORMAT}_PATH}") | |
+ list(APPEND COMPILED_RESOURCES_BASENAME "${RESOURCE_NAME_WE}.${BUNDLES_${UPPER_FORMAT}_SUFFIX}") | |
+ endforeach(RESOURCE_SOURCE) | |
+ # convert semicolon separated list to a space separated list | |
+ # NOTE: if the pkglist.txt file starts (or ends?) with a whitespace, pkgdata add an undefined symbol (named <package>_) for it | |
+ string(REPLACE ";" " " COMPILED_RESOURCES_BASENAME "${COMPILED_RESOURCES_BASENAME}") | |
+ | |
+ if(PARSED_ARGS_PACKAGE) | |
+ # create a text file (pkglist.txt) with the list of the *.res to package together | |
+ add_custom_command( | |
+ OUTPUT "${PACKAGE_LIST_OUTPUT_PATH}" | |
+ COMMAND ${CMAKE_COMMAND} -E echo "${COMPILED_RESOURCES_BASENAME}" > "${PACKAGE_LIST_OUTPUT_PATH}" | |
+ DEPENDS ${COMPILED_RESOURCES_PATH} | |
+ ) | |
+ # run pkgdata from pkglist.txt | |
+ add_custom_command( | |
+ OUTPUT "${PACKAGE_OUTPUT_PATH}" | |
+ COMMAND ${CMAKE_COMMAND} -E chdir ${RESOURCE_GENRB_CHDIR_DIR} ${${ICU_PUBLIC_VAR_NS}_PKGDATA_EXECUTABLE} -F ${PKGDATA_${TYPE}_OPTIONS} -s ${PACKAGE_NAME_WE} -p ${PACKAGE_NAME_WE} ${PACKAGE_LIST_OUTPUT_PATH} | |
+ DEPENDS "${PACKAGE_LIST_OUTPUT_PATH}" | |
+ VERBATIM | |
+ ) | |
+ if(PKGDATA_LIBRARY_${TYPE}_TYPE) | |
+ # assert(${PARSED_ARGS_DEPENDS} != "") | |
+ if(NOT PARSED_ARGS_DEPENDS) | |
+ message(FATAL_ERROR "${__FUNCTION__}(): static and library mode imply a list of targets to link to, DEPENDS parameter missing") | |
+ endif(NOT PARSED_ARGS_DEPENDS) | |
+ add_library(${PACKAGE_TARGET_NAME} ${PKGDATA_LIBRARY_${TYPE}_TYPE} IMPORTED) | |
+ if(MSVC) | |
+ string(REGEX REPLACE "${PKGDATA_LIBRARY_SUFFIX}\$" "${CMAKE_IMPORT_LIBRARY_SUFFIX}" PACKAGE_OUTPUT_LIB "${PACKAGE_OUTPUT_PATH}") | |
+ set_target_properties(${PACKAGE_TARGET_NAME} PROPERTIES IMPORTED_LOCATION ${PACKAGE_OUTPUT_PATH} IMPORTED_IMPLIB ${PACKAGE_OUTPUT_LIB}) | |
+ else(MSVC) | |
+ set_target_properties(${PACKAGE_TARGET_NAME} PROPERTIES IMPORTED_LOCATION ${PACKAGE_OUTPUT_PATH}) | |
+ endif(MSVC) | |
+ foreach(DEPENDENCY ${PARSED_ARGS_DEPENDS}) | |
+ target_link_libraries(${DEPENDENCY} ${PACKAGE_TARGET_NAME}) | |
+ if(NOT PARSED_ARGS_NO_SHARED_FLAGS) | |
+ get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) | |
+ list(LENGTH "${ENABLED_LANGUAGES}" ENABLED_LANGUAGES_LENGTH) | |
+ if(ENABLED_LANGUAGES_LENGTH GREATER 1) | |
+ message(WARNING "Project has more than one language enabled, skip automatic shared flags appending") | |
+ else(ENABLED_LANGUAGES_LENGTH GREATER 1) | |
+ set_property(TARGET "${DEPENDENCY}" APPEND PROPERTY COMPILE_FLAGS "${${ICU_PUBLIC_VAR_NS}_${ENABLED_LANGUAGES}_SHARED_FLAGS}") | |
+ endif(ENABLED_LANGUAGES_LENGTH GREATER 1) | |
+ endif(NOT PARSED_ARGS_NO_SHARED_FLAGS) | |
+ endforeach(DEPENDENCY) | |
+ # http://www.mail-archive.com/[email protected]/msg01135.html | |
+ set(PACKAGE_INTERMEDIATE_TARGET_NAME "${PACKAGE_TARGET_NAME}${TARGET_SEPARATOR}DUMMY") | |
+ # dummy intermediate target (ICU+PKG+<name>+DUMMY) to link the package to the produced library by running pkgdata (see add_custom_command above) | |
+ add_custom_target( | |
+ ${PACKAGE_INTERMEDIATE_TARGET_NAME} | |
+ COMMENT "" | |
+ DEPENDS "${PACKAGE_OUTPUT_PATH}" | |
+ ) | |
+ add_dependencies("${PACKAGE_TARGET_NAME}" "${PACKAGE_INTERMEDIATE_TARGET_NAME}") | |
+ else(PKGDATA_LIBRARY_${TYPE}_TYPE) | |
+ # dummy target (ICU+PKG+<name>) to run pkgdata (see add_custom_command above) | |
+ add_custom_target( | |
+ "${PACKAGE_TARGET_NAME}" ALL | |
+ COMMENT "" | |
+ DEPENDS "${PACKAGE_OUTPUT_PATH}" | |
+ ) | |
+ endif(PKGDATA_LIBRARY_${TYPE}_TYPE) | |
+ # dummy target (ICU+PKG+<name>+PKGLIST) to build the file pkglist.txt | |
+ add_custom_target( | |
+ "${PACKAGE_LIST_TARGET_NAME}" ALL | |
+ COMMENT "" | |
+ DEPENDS "${PACKAGE_LIST_OUTPUT_PATH}" | |
+ ) | |
+ # package => pkglist.txt | |
+ add_dependencies("${PACKAGE_TARGET_NAME}" "${PACKAGE_LIST_TARGET_NAME}") | |
+ # pkglist.txt => *.res | |
+ add_dependencies("${PACKAGE_LIST_TARGET_NAME}" ${TARGET_RESOURCES}) | |
+ | |
+ if(PARSED_ARGS_DESTINATION) | |
+ install(FILES "${PACKAGE_OUTPUT_PATH}" DESTINATION ${PARSED_ARGS_DESTINATION} PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) | |
+ endif(PARSED_ARGS_DESTINATION) | |
+ endif(PARSED_ARGS_PACKAGE) | |
+ | |
+endfunction(icu_generate_resource_bundle) | |
+ | |
+########## </resource bundle support> ########## | |
+ | |
+########## <debug> ########## | |
+ | |
+if(${ICU_PUBLIC_VAR_NS}_DEBUG) | |
+ | |
+ function(icudebug _VARNAME) | |
+ if(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME}) | |
+ message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = ${${ICU_PUBLIC_VAR_NS}_${_VARNAME}}") | |
+ else(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME}) | |
+ message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>") | |
+ endif(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME}) | |
+ endfunction(icudebug) | |
+ | |
+ # IN (args) | |
+ icudebug("FIND_COMPONENTS") | |
+ icudebug("FIND_REQUIRED") | |
+ icudebug("FIND_QUIETLY") | |
+ icudebug("FIND_VERSION") | |
+ | |
+ # OUT | |
+ # Found | |
+ icudebug("FOUND") | |
+ # Flags | |
+ icudebug("C_FLAGS") | |
+ icudebug("CPP_FLAGS") | |
+ icudebug("CXX_FLAGS") | |
+ icudebug("C_SHARED_FLAGS") | |
+ icudebug("CPP_SHARED_FLAGS") | |
+ icudebug("CXX_SHARED_FLAGS") | |
+ # Linking | |
+ icudebug("INCLUDE_DIRS") | |
+ icudebug("LIBRARIES") | |
+ # Version | |
+ icudebug("VERSION_MAJOR") | |
+ icudebug("VERSION_MINOR") | |
+ icudebug("VERSION_PATCH") | |
+ icudebug("VERSION") | |
+ # <COMPONENT>_(FOUND|LIBRARY) | |
+ set(${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLES "FOUND" "LIBRARY" "LIBRARY_RELEASE" "LIBRARY_DEBUG") | |
+ foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS}) | |
+ string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT) | |
+ foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLE ${${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLES}) | |
+ icudebug("${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_${${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLE}") | |
+ endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT_VARIABLE) | |
+ endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT) | |
+ | |
+endif(${ICU_PUBLIC_VAR_NS}_DEBUG) | |
+ | |
+########## </debug> ########## | |
diff --git a/cmake/FindLDAP.cmake b/cmake/FindLDAP.cmake | |
new file mode 100644 | |
index 0000000000..8a5bc6315f | |
--- /dev/null | |
+++ b/cmake/FindLDAP.cmake | |
@@ -0,0 +1,41 @@ | |
+# - Try to find the LDAP client libraries | |
+# Once done this will define | |
+# | |
+# LDAP_FOUND - system has libldap | |
+# LDAP_INCLUDE_DIR - the ldap include directory | |
+# LDAP_LIBRARIES - libldap + liblber (if found) library | |
+# LBER_LIBRARIES - liblber library | |
+ | |
+if(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES) | |
+ # Already in cache, be silent | |
+ set(Ldap_FIND_QUIETLY TRUE) | |
+endif(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES) | |
+ | |
+if(UNIX) | |
+ FIND_PATH(LDAP_INCLUDE_DIR ldap.h) | |
+ FIND_LIBRARY(LDAP_LIBRARIES NAMES ldap) | |
+ FIND_LIBRARY(LBER_LIBRARIES NAMES lber) | |
+ | |
+else(UNIX) | |
+ FIND_PATH(LDAP_INCLUDE_DIR winldap.h) | |
+ FIND_LIBRARY(LDAP_LIBRARIES NAMES wldap32) | |
+endif(UNIX) | |
+ | |
+if(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES) | |
+ set(LDAP_FOUND TRUE) | |
+ if(LBER_LIBRARIES) | |
+ set(LDAP_LIBRARIES ${LDAP_LIBRARIES} ${LBER_LIBRARIES}) | |
+ endif(LBER_LIBRARIES) | |
+endif(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES) | |
+ | |
+if(LDAP_FOUND) | |
+ if(NOT Ldap_FIND_QUIETLY) | |
+ message(STATUS "Found ldap: ${LDAP_LIBRARIES}") | |
+ endif(NOT Ldap_FIND_QUIETLY) | |
+else(LDAP_FOUND) | |
+ if (Ldap_FIND_REQUIRED) | |
+ message(FATAL_ERROR "Could NOT find ldap") | |
+ endif (Ldap_FIND_REQUIRED) | |
+endif(LDAP_FOUND) | |
+ | |
+MARK_AS_ADVANCED(LDAP_INCLUDE_DIR LDAP_LIBRARIES LBER_LIBRARIES) | |
diff --git a/cmake/FindLibSocket.cmake b/cmake/FindLibSocket.cmake | |
new file mode 100644 | |
index 0000000000..148f4ec296 | |
--- /dev/null | |
+++ b/cmake/FindLibSocket.cmake | |
@@ -0,0 +1,11 @@ | |
+find_library( LIBSOCKET_LIBRARY NAMES libsocket socket ) | |
+mark_as_advanced( LIBSOCKET_LIBRARY ) | |
+ | |
+# handle the QUIETLY and REQUIRED arguments and set LIBSOCKET_FOUND to TRUE if | |
+# all listed variables are TRUE | |
+include( FindPackageHandleStandardArgs ) | |
+FIND_PACKAGE_HANDLE_STANDARD_ARGS( LIBSOCKET DEFAULT_MSG LIBSOCKET_LIBRARY ) | |
+ | |
+if( LIBSOCKET_FOUND ) | |
+ set( LIBSOCKET_LIBRARIES ${LIBSOCKET_LIBRARY} ) | |
+endif( LIBSOCKET_FOUND ) | |
diff --git a/cmake/FindLibUUID.cmake b/cmake/FindLibUUID.cmake | |
new file mode 100644 | |
index 0000000000..10626c54b2 | |
--- /dev/null | |
+++ b/cmake/FindLibUUID.cmake | |
@@ -0,0 +1,50 @@ | |
+# - Try to find LIBUUID | |
+# Find LIBUUID headers, libraries and the answer to all questions. | |
+# | |
+# LIBUUID_FOUND True if libuuid got found | |
+# LIBUUID_INCLUDE_DIRS Location of libuuid headers | |
+# LIBUUID_LIBRARIES List of libraries to use libuuid | |
+# | |
+# Copyright (c) 2008 Bjoern Ricks <[email protected]> | |
+# | |
+# Redistribution and use is allowed according to the terms of the New | |
+# BSD license. | |
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file. | |
+# | |
+ | |
+INCLUDE(FindPkgConfig) | |
+ | |
+IF(LibUUID_FIND_REQUIRED) | |
+ SET(_pkgconfig_REQUIRED "REQUIRED") | |
+ELSE(LibUUID_FIND_REQUIRED) | |
+ SET(_pkgconfig_REQUIRED "") | |
+ENDIF (LibUUID_FIND_REQUIRED) | |
+ | |
+IF(LIBUUID_MIN_VERSION) | |
+ PKG_SEARCH_MODULE(LIBUUID ${_pkgconfig_REQUIRED} uuid>=${LIBUUID_MIN_VERSION}) | |
+ELSE(LIBUUID_MIN_VERSION) | |
+ PKG_SEARCH_MODULE(LIBUUID ${_pkgconfig_REQUIRED} uuid) | |
+ENDIF(LIBUUID_MIN_VERSION) | |
+ | |
+IF(NOT LIBUUID_FOUND) | |
+ FIND_PATH(LIBUUID_INCLUDE_DIRS uuid/uuid.h) | |
+ FIND_LIBRARY(LIBUUID_LIBRARIES uuid) | |
+ | |
+ # Report results | |
+ IF(LIBUUID_LIBRARIES AND LIBUUID_INCLUDE_DIRS) | |
+ SET(LIBUUID_FOUND 1) | |
+ IF(NOT LIBUUID_FIND_QUIETLY) | |
+ MESSAGE(STATUS "Found libuuid: ${LIBUUID_LIBRARIES}") | |
+ ENDIF(NOT LIBUUID_FIND_QUIETLY) | |
+ ELSE(LIBUUID_LIBRARIES AND LIBUUID_INCLUDE_DIRS) | |
+ IF(LIBUUID_FIND_REQUIRED) | |
+ MESSAGE(SEND_ERROR "Could NOT find libuuid") | |
+ ELSE(LIBUUID_FIND_REQUIRED) | |
+ IF(NOT LIBUUID_FIND_QUIETLY) | |
+ MESSAGE(STATUS "Could NOT find libuuid") | |
+ ENDIF(NOT LIBUUID_FIND_QUIETLY) | |
+ ENDIF (LIBUUID_FIND_REQUIRED) | |
+ ENDIF (LIBUUID_LIBRARIES AND LIBUUID_INCLUDE_DIRS) | |
+ENDIF(NOT LIBUUID_FOUND) | |
+ | |
+MARK_AS_ADVANCED(LIBUUID_LIBRARIES LIBUUID_INCLUDE_DIRS) | |
diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake | |
new file mode 100644 | |
index 0000000000..6603dbeb97 | |
--- /dev/null | |
+++ b/cmake/FindReadline.cmake | |
@@ -0,0 +1,22 @@ | |
+# from http://websvn.kde.org/trunk/KDE/kdeedu/cmake/modules/FindReadline.cmake | |
+# http://websvn.kde.org/trunk/KDE/kdeedu/cmake/modules/COPYING-CMAKE-SCRIPTS | |
+# --> BSD licensed | |
+# | |
+# GNU Readline library finder | |
+ | |
+ | |
+if(READLINE_INCLUDE_DIR AND READLINE_LIBRARY) | |
+ set(READLINE_FOUND TRUE) | |
+else(READLINE_INCLUDE_DIR AND READLINE_LIBRARY) | |
+ FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h | |
+ /usr/include/readline | |
+ ) | |
+ | |
+ FIND_LIBRARY(READLINE_LIBRARY NAMES readline PATHS | |
+ /opt/csw/lib/64/ | |
+ ) | |
+ include(FindPackageHandleStandardArgs) | |
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG READLINE_INCLUDE_DIR READLINE_LIBRARY ) | |
+ | |
+ MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY) | |
+endif(READLINE_INCLUDE_DIR AND READLINE_LIBRARY) | |
diff --git a/cmake/FindSELinux.cmake b/cmake/FindSELinux.cmake | |
new file mode 100644 | |
index 0000000000..dd6e3ca425 | |
--- /dev/null | |
+++ b/cmake/FindSELinux.cmake | |
@@ -0,0 +1,55 @@ | |
+# - Try to find the SELinux library | |
+# Once done this will define | |
+# | |
+# SELINUX_FOUND - System has selinux | |
+# SELINUX_INCLUDE_DIR - The selinux include directory | |
+# SELINUX_LIBRARIES - The libraries needed to use selinux | |
+# SELINUX_DEFINITIONS - Compiler switches required for using selinux | |
+ | |
+#============================================================================= | |
+# Copyright 2010 Michael Leupold <[email protected]> | |
+# | |
+# Distributed under the OSI-approved BSD License (the "License"); | |
+# see accompanying file Copyright.txt for details. | |
+# | |
+# This software is distributed WITHOUT ANY WARRANTY; without even the | |
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
+# See the License for more information. | |
+#============================================================================= | |
+ | |
+IF (SELINUX_INCLUDE_DIR AND SELINUX_LIBRARIES) | |
+ # in cache already | |
+ SET (SELinux_FIND_QUIETLY TRUE) | |
+ENDIF (SELINUX_INCLUDE_DIR AND SELINUX_LIBRARIES) | |
+ | |
+# TODO: This should be restricted to Linux only | |
+IF (NOT WIN32) | |
+ # use pkg-config to get the directories | |
+ FIND_PACKAGE (PkgConfig) | |
+ PKG_CHECK_MODULES (PC_SELINUX libselinux) | |
+ SET (SELINUX_DEFINITIONS ${PC_SELINUX_CFLAGS_OTHER}) | |
+ | |
+ FIND_PATH (SELINUX_INCLUDE_DIR selinux/selinux.h | |
+ HINTS | |
+ ${PC_SELINUX_INCLUDEDIR} | |
+ ${PC_SELINUX_INCLUDE_DIRS} | |
+ ) | |
+ | |
+ FIND_LIBRARY (SELINUX_LIBRARIES selinux libselinux | |
+ HINTS | |
+ ${PC_SELINUX_LIBDIR} | |
+ ${PC_SELINUX_LIBRARY_DIRS} | |
+ ) | |
+ | |
+ INCLUDE (FindPackageHandleStandardArgs) | |
+ | |
+ # handle the QUIETLY and REQUIRED arguments and set SELINUX_FOUND | |
+ # to TRUE if all listed variables are TRUE | |
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS (SELinux DEFAULT_MSG | |
+ SELINUX_INCLUDE_DIR | |
+ SELINUX_LIBRARIES | |
+ ) | |
+ | |
+ MARK_AS_ADVANCED (SELINUX_INCLUDE_DIR SELINUX_LIBRARIES) | |
+ | |
+ENDIF (NOT WIN32) | |
diff --git a/cmake/FuncAcceptArgtypes.cmake b/cmake/FuncAcceptArgtypes.cmake | |
new file mode 100644 | |
index 0000000000..e333d69aea | |
--- /dev/null | |
+++ b/cmake/FuncAcceptArgtypes.cmake | |
@@ -0,0 +1,52 @@ | |
+if(HAVE_SYS_TYPES_H) | |
+ set(INCLUDE_SYS_TYPES_H "#include <sys/types.h>") | |
+endif(HAVE_SYS_TYPES_H) | |
+ | |
+if(HAVE_SYS_SOCKET_H) | |
+ set(INCLUDE_SYS_SOCKET_H "#include <sys/socket.h>") | |
+endif(HAVE_SYS_SOCKET_H) | |
+ | |
+ | |
+message(STATUS "Looking for accept function args") | |
+set(CMAKE_REQUIRED_QUIET 1) | |
+foreach(ac_cv_func_accept_return "int" "unsigned int PASCAL" "SOCKET WSAAPI") | |
+ foreach(ac_cv_func_accept_arg1 "unsigned int" "int" "SOCKET") | |
+ foreach(ac_cv_func_accept_arg2 "struct sockaddr *" "const struct sockaddr *" "void *") | |
+ foreach(ac_cv_func_accept_arg3 "int" "size_t" "socklen_t" "unsigned int" "void") | |
+ unset(AC_FUNC_ACCEPT CACHE) | |
+ CHECK_C_SOURCE_COMPILES(" | |
+ ${INCLUDE_SYS_TYPES_H} | |
+ ${INCLUDE_SYS_SOCKET_H} | |
+ extern ${ac_cv_func_accept_return} accept (${ac_cv_func_accept_arg1}, ${ac_cv_func_accept_arg2}, ${ac_cv_func_accept_arg3} *); | |
+ int main(void){return 0;} | |
+ " AC_FUNC_ACCEPT) | |
+ if(AC_FUNC_ACCEPT) | |
+ set(ACCEPT_TYPE_RETURN ${ac_cv_func_accept_return}) | |
+ set(ACCEPT_TYPE_ARG1 ${ac_cv_func_accept_arg1}) | |
+ set(ACCEPT_TYPE_ARG2 ${ac_cv_func_accept_arg2}) | |
+ set(ACCEPT_TYPE_ARG3 ${ac_cv_func_accept_arg3}) | |
+ break() | |
+ endif(AC_FUNC_ACCEPT) | |
+ endforeach(ac_cv_func_accept_arg3) | |
+ if(AC_FUNC_ACCEPT) | |
+ break() | |
+ endif(AC_FUNC_ACCEPT) | |
+ endforeach(ac_cv_func_accept_arg2) | |
+ if(AC_FUNC_ACCEPT) | |
+ break() | |
+ endif(AC_FUNC_ACCEPT) | |
+ endforeach(ac_cv_func_accept_arg1) | |
+ if(AC_FUNC_ACCEPT) | |
+ break() | |
+ endif(AC_FUNC_ACCEPT) | |
+endforeach(ac_cv_func_accept_return) | |
+unset(CMAKE_REQUIRED_QUIET) | |
+ | |
+if(NOT AC_FUNC_ACCEPT) | |
+ message(ERROR "could not determine argument types") | |
+endif(NOT AC_FUNC_ACCEPT) | |
+if(ACCEPT_TYPE_ARG3 STREQUAL "void") | |
+ set(ACCEPT_TYPE_ARG3 "int") | |
+endif() | |
+ | |
+message(STATUS "Looking for accept function args - found ${ACCEPT_TYPE_RETURN}, ${ACCEPT_TYPE_ARG1}, ${ACCEPT_TYPE_ARG2}, ${ACCEPT_TYPE_ARG3} *") | |
diff --git a/cmake/GenDef.cmake b/cmake/GenDef.cmake | |
new file mode 100644 | |
index 0000000000..cacc4ceb21 | |
--- /dev/null | |
+++ b/cmake/GenDef.cmake | |
@@ -0,0 +1,32 @@ | |
+if(CMAKE_SYSTEM_NAME STREQUAL "AIX") | |
+ find_program(NM_EXECUTABLE nm) | |
+endif() | |
+ | |
+macro(GEN_DEF NAME) | |
+ if(MSVC) | |
+ set_target_properties(${NAME} PROPERTIES ENABLE_EXPORTS 1) | |
+ set_target_properties(${NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) | |
+ #SET_TARGET_PROPERTIES(${NAME} PROPERTIES LINK_FLAGS "/DEF:\"${CMAKE_CURRENT_BINARY_DIR}/${NAME}.def\" ") | |
+ #add_custom_command( | |
+ # TARGET ${NAME} | |
+ # PRE_LINK | |
+ # #COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.def | |
+ # #OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.def | |
+ # COMMAND ${PERL_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/tools/msvc/gendef.pl ${CMAKE_CURRENT_BINARY_DIR}/$<$<BOOL:${CMAKE_BUILD_TYPE}>:${CMAKE_FILES_DIRECTORY}>${NAME}.dir/${CMAKE_CFG_INTDIR} ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.def ${CMAKE_VS_PLATFORM_NAME} | |
+ # COMMENT " Gen defs " | |
+ #) | |
+ #set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.def) | |
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "AIX" AND CMAKE_C_COMPILER_ID MATCHES "xlc") | |
+ # TODO for xls | |
+ SET_TARGET_PROPERTIES(${NAME} PROPERTIES LINK_FLAGS "-Wl,-bE:${CMAKE_CURRENT_BINARY_DIR}/${NAME}.exp") | |
+ if("${CMAKE_C_FLAGS}" MATCHES "aix64") | |
+ set(FLAG_64 "-X64") | |
+ endif() | |
+ add_custom_command( | |
+ TARGET ${NAME} | |
+ PRE_LINK | |
+ COMMAND ${NM_EXECUTABLE} ${FLAG_64} -BCg ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${NAME}.dir/*.o | egrep ' [TDB] ' | sed -e 's/.* //' | egrep -v '\\$$' | sed -e 's/^[.]//' | sort | uniq > ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.exp | |
+ COMMENT " Gen exports " | |
+ ) | |
+ endif() | |
+endmacro(GEN_DEF NAME) | |
diff --git a/cmake/MakeNLS.cmake b/cmake/MakeNLS.cmake | |
new file mode 100644 | |
index 0000000000..c6db90d85f | |
--- /dev/null | |
+++ b/cmake/MakeNLS.cmake | |
@@ -0,0 +1,21 @@ | |
+macro(MAKE_MO BIN_NAME LANGUAGES) | |
+ set(gmo_files "") | |
+ foreach(lang ${LANGUAGES}) | |
+ if (NOT ";${NLS_LANGUAGES};" MATCHES ";${lang};") | |
+ continue() | |
+ endif() | |
+ set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.gmo) | |
+ add_custom_command(OUTPUT ${_gmoFile} | |
+ COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} po/${lang}.po | |
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" | |
+ DEPENDS po/${lang}.po | |
+ ) | |
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${lang}.gmo DESTINATION share/locale/${lang}/LC_MESSAGES/ RENAME ${BIN_NAME}-${POSTGRES_MAJOR_VERSION}.${POSTGRES_MINOR_VERSION}.mo) | |
+ if(NOT TARGET pofiles) | |
+ add_custom_target(pofiles) | |
+ endif() | |
+ add_custom_target(${BIN_NAME}-mofile-${lang} ALL DEPENDS ${_gmoFile}) | |
+ add_dependencies(pofiles ${BIN_NAME}-mofile-${lang}) | |
+ set(gmo_files "${gmo_files};${_gmoFile}") | |
+ endforeach() | |
+endmacro() | |
diff --git a/cmake/RegressCheck.cmake b/cmake/RegressCheck.cmake | |
new file mode 100644 | |
index 0000000000..0c16d2176d | |
--- /dev/null | |
+++ b/cmake/RegressCheck.cmake | |
@@ -0,0 +1,284 @@ | |
+set(tmp_check_folder ${CMAKE_BINARY_DIR}/src/test/regress/tmp_install) | |
+ | |
+if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") | |
+ set(env_cmd | |
+ ${CMAKE_COMMAND} -E env | |
+ "DYLD_LIBRARY_PATH=$ENV{DESTDIR}${LIBDIR}:$$DYLD_LIBRARY_PATH" | |
+ "PATH=$ENV{DESTDIR}${PGBINDIR}:$$PATH" | |
+ ) | |
+ set(tmp_env_cmd | |
+ ${CMAKE_COMMAND} -E env | |
+ "DYLD_LIBRARY_PATH=${tmp_check_folder}${LIBDIR}:$$DYLD_LIBRARY_PATH" | |
+ "PATH=${tmp_check_folder}${PGBINDIR}:$$PATH" | |
+ ) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "AIX") | |
+ set(env_cmd | |
+ ${CMAKE_COMMAND} -E env | |
+ "LIBPATH=$ENV{DESTDIR}${LIBDIR}:$LIBPATH" | |
+ "PATH=$ENV{DESTDIR}${PGBINDIR}:$$PATH" | |
+ ) | |
+ set(tmp_env_cmd | |
+ ${CMAKE_COMMAND} -E env | |
+ "LIBPATH=${tmp_check_folder}${LIBDIR}:$LIBPATH" | |
+ "PATH=${tmp_check_folder}${PGBINDIR}:$$PATH" | |
+ ) | |
+elseif(MSVC) | |
+ # We really need add PATH but only for ecpg | |
+ set(env_cmd "") | |
+else() | |
+ if (CMAKE_VERSION VERSION_GREATER "3.2.0") | |
+ set(env_cmd | |
+ ${CMAKE_COMMAND} -E env | |
+ "LD_LIBRARY_PATH=$ENV{DESTDIR}${LIBDIR}:$$LD_LIBRARY_PATH" | |
+ "PATH=$ENV{DESTDIR}${PGBINDIR}:$$PATH" | |
+ ) | |
+ set(tmp_env_cmd | |
+ ${CMAKE_COMMAND} -E env | |
+ "LD_LIBRARY_PATH=${tmp_check_folder}${LIBDIR}:$$LD_LIBRARY_PATH" | |
+ "PATH=${tmp_check_folder}${PGBINDIR}:$$PATH" | |
+ ) | |
+ else() | |
+ set(env_cmd | |
+ export "LD_LIBRARY_PATH=$ENV{DESTDIR}${LIBDIR}:$$LD_LIBRARY_PATH" | |
+ "PATH=$ENV{DESTDIR}${PGBINDIR}:$$PATH" && | |
+ ) | |
+ set(tmp_env_cmd | |
+ export "LD_LIBRARY_PATH=${tmp_check_folder}${LIBDIR}:$$LD_LIBRARY_PATH" | |
+ "PATH=${tmp_check_folder}${PGBINDIR}:$$PATH" && | |
+ ) | |
+ endif() | |
+endif() | |
+ | |
+if(MSVC OR MSYS OR MINGW OR CMAKE_GENERATOR STREQUAL Xcode) | |
+ #Need rewrite | |
+ set(pre_pg_regress_check | |
+ ${PGBINDIR}/pg_regress${CMAKE_EXECUTABLE_SUFFIX} | |
+ --inputdir="${CMAKE_SOURCE_DIR}/src/test/regress" | |
+ --temp-instance="tmp_check" | |
+ --encoding=UTF8 | |
+ --no-locale | |
+ ) | |
+ set(pre_pg_isolation_regress_check | |
+ ${PGBINDIR}/pg_isolation_regress${CMAKE_EXECUTABLE_SUFFIX} | |
+ --inputdir="${CMAKE_SOURCE_DIR}/src/test/isolation" | |
+ --temp-instance="tmp_check" | |
+ --encoding=UTF8 | |
+ --no-locale | |
+ ) | |
+else() | |
+ set(pre_pg_regress_check | |
+ ${CMAKE_BINARY_DIR}/src/test/regress/${CMAKE_INSTALL_CONFIG_NAME}/pg_regress${CMAKE_EXECUTABLE_SUFFIX} | |
+ --inputdir="${CMAKE_SOURCE_DIR}/src/test/regress" | |
+ --temp-instance="tmp_check" | |
+ --encoding=UTF8 | |
+ --no-locale | |
+ ) | |
+ set(pre_pg_isolation_regress_check | |
+ ${CMAKE_BINARY_DIR}/src/test/isolation/${CMAKE_INSTALL_CONFIG_NAME}/pg_isolation_regress${CMAKE_EXECUTABLE_SUFFIX} | |
+ --inputdir="${CMAKE_SOURCE_DIR}/src/test/isolation" | |
+ --temp-instance="tmp_check" | |
+ --encoding=UTF8 | |
+ --no-locale | |
+ ) | |
+ set(pre_pg_ecpg_regress_check | |
+ ${CMAKE_BINARY_DIR}/src/interfaces/ecpg/test/${CMAKE_INSTALL_CONFIG_NAME}/pg_ecpg_regress${CMAKE_EXECUTABLE_SUFFIX} | |
+ --inputdir="${CMAKE_BINARY_DIR}/src/interfaces/ecpg/test" | |
+ --temp-instance="tmp_check" | |
+ --encoding=UTF8 | |
+ --no-locale | |
+ ) | |
+endif() | |
+ | |
+set(pg_regress_check | |
+ ${env_cmd} | |
+ ${pre_pg_regress_check} | |
+ --bindir=$ENV{DESTDIR}${PGBINDIR} | |
+) | |
+ | |
+set(pg_regress_check_tmp | |
+ ${tmp_env_cmd} | |
+ ${pre_pg_regress_check} | |
+ --bindir=${tmp_check_folder}${PGBINDIR} | |
+) | |
+ | |
+set(pg_isolation_regress_check | |
+ ${env_cmd} | |
+ ${pre_pg_isolation_regress_check} | |
+ --bindir=$ENV{DESTDIR}${PGBINDIR} | |
+) | |
+ | |
+set(pg_isolation_regress_check_tmp | |
+ ${tmp_env_cmd} | |
+ ${pre_pg_isolation_regress_check} | |
+ --bindir=${tmp_check_folder}${PGBINDIR} | |
+) | |
+ | |
+set(pg_ecpg_regress_check | |
+ ${env_cmd} | |
+ ${pre_pg_ecpg_regress_check} | |
+ --bindir=$ENV{DESTDIR}${PGBINDIR} | |
+) | |
+ | |
+set(pg_ecpg_regress_check_tmp | |
+ ${tmp_env_cmd} | |
+ ${pre_pg_ecpg_regress_check} | |
+ --bindir=${tmp_check_folder}${PGBINDIR} | |
+) | |
+ | |
+if(MAX_CONNECTIONS) | |
+ set(MAXCONNOPT "${MAXCONNOPT} --max-connections=${MAX_CONNECTIONS}") | |
+endif() | |
+ | |
+if(TEMP_CONFIG) | |
+ set(TEMP_CONF "${TEMP_CONF} --temp-config=${TEMP_CONFIG}") | |
+endif() | |
+ | |
+ | |
+set(TAP_FLAGS "-I;${CMAKE_SOURCE_DIR}/src/test/perl/;--verbose") | |
+ | |
+if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ set(check_make_command "ninja") | |
+else() | |
+ set(check_make_command ${CMAKE_MAKE_PROGRAM}) | |
+endif() | |
+ | |
+macro(REGRESS_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ add_custom_target(${TARGET_NAME}_installcheck_tmp | |
+ COMMAND ${pg_regress_check_tmp} --inputdir="${CMAKE_CURRENT_SOURCE_DIR}" --dbname=${TARGET_NAME}_regress ${REGRESS_OPTS} --dlpath=${tmp_check_folder}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${REGRESS_FILES} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ add_custom_target(${TARGET_NAME}_installcheck | |
+ COMMAND ${pg_regress_check} --inputdir="${CMAKE_CURRENT_SOURCE_DIR}" --dbname=${TARGET_NAME}_regress ${REGRESS_OPTS} --dlpath=$ENV{DESTDIR}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${REGRESS_FILES} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(${TARGET_NAME}_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} install | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} ${TARGET_NAME}_installcheck_tmp | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+ else() | |
+ add_custom_target(${TARGET_NAME}_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} ${TARGET_NAME}_installcheck_tmp DESTDIR=${tmp_check_folder} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+ endif() | |
+ | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_installcheck_tmp tests/tmp) | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_installcheck "tests/install") | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_check tests) | |
+endmacro(REGRESS_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ | |
+macro(ISOLATION_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ add_custom_target(${TARGET_NAME}_isolation_installcheck_tmp | |
+ COMMAND ${pg_isolation_regress_check_tmp} --inputdir="${CMAKE_CURRENT_SOURCE_DIR}" --dbname=${TARGET_NAME}_regress ${REGRESS_OPTS} --dlpath=${tmp_check_folder}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${REGRESS_FILES} | |
+ DEPENDS pg_isolation_regress | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ add_custom_target(${TARGET_NAME}_isolation_installcheck | |
+ COMMAND ${pg_isolation_regress_check} --inputdir="${CMAKE_CURRENT_SOURCE_DIR}" --dbname=${TARGET_NAME}_regress ${REGRESS_OPTS} --dlpath==$ENV{DESTDIR}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${REGRESS_FILES} | |
+ DEPENDS pg_isolation_regress | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ add_custom_target(${TARGET_NAME}_isolation_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} ${TARGET_NAME}_isolation_installcheck_tmp DESTDIR=${tmp_check_folder} | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_isolation_installcheck_tmp tests/tmp) | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_check tests) | |
+endmacro(ISOLATION_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ | |
+macro(TAP_CHECK TARGET_NAME OPTS REGRESS_FILES) | |
+ set(TAP_TMP_CMD | |
+ ${CMAKE_COMMAND} -E env | |
+ TESTDIR="${CMAKE_CURRENT_SOURCE_DIR}" PGPORT="65432" PG_REGRESS="${CMAKE_BINARY_DIR}/src/test/regress/${CMAKE_INSTALL_CONFIG_NAME}/pg_regress${CMAKE_EXECUTABLE_SUFFIX}" | |
+ ${PROVE} | |
+ ) | |
+ set(TAP_CMD | |
+ ${CMAKE_COMMAND} -E env | |
+ PATH="$ENV{DESTDIR}${BINDIR}:$$PATH" TESTDIR="${CMAKE_CURRENT_SOURCE_DIR}" PGPORT="65432" PG_REGRESS="${CMAKE_BINARY_DIR}/src/test/regress/${CMAKE_INSTALL_CONFIG_NAME}/pg_regress${CMAKE_EXECUTABLE_SUFFIX}" | |
+ ${PROVE} | |
+ ) | |
+ add_custom_target(${TARGET_NAME}_installcheck_tmp | |
+ COMMAND ${tmp_env_cmd} ${TAP_TMP_CMD} ${OPTS} ${REGRESS_FILES} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ add_custom_target(${TARGET_NAME}_installcheck | |
+ COMMAND ${env_cmd} ${TAP_CMD} ${OPTS} ${REGRESS_FILES} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(${TARGET_NAME}_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} install | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} ${TARGET_NAME}_installcheck_tmp | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+ else() | |
+ add_custom_target(${TARGET_NAME}_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} ${TARGET_NAME}_installcheck_tmp DESTDIR=${tmp_check_folder} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+ endif() | |
+ | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_installcheck_tmp tests/tmp) | |
+ CMAKE_SET_TARGET_FOLDER(${TARGET_NAME}_check tests) | |
+endmacro(TAP_CHECK TARGET_NAME OPTS REGRESS_FILES) | |
+ | |
+# Contrib macros | |
+macro(CONTRIB_REGRESS_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ set(contrib_check_targets ${contrib_check_targets} ${TARGET_NAME}_installcheck_tmp PARENT_SCOPE) | |
+ set(contrib_installcheck_targets ${contrib_installcheck_targets} ${TARGET_NAME}_installcheck PARENT_SCOPE) | |
+ REGRESS_CHECK("${TARGET_NAME}" "${REGRESS_OPTS}" "${REGRESS_FILES}") | |
+endmacro(CONTRIB_REGRESS_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ | |
+macro(CONTRIB_ISOLATION_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ set(contrib_check_targets ${contrib_check_targets} ${TARGET_NAME}_isolation_installcheck_tmp PARENT_SCOPE) | |
+ set(contrib_installcheck_targets ${contrib_installcheck_targets} ${TARGET_NAME}_isolation_installcheck PARENT_SCOPE) | |
+ ISOLATION_CHECK("${TARGET_NAME}" "${REGRESS_OPTS}" "${REGRESS_FILES}") | |
+endmacro(CONTRIB_ISOLATION_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ | |
+macro(CONTRIB_TAP_CHECK TARGET_NAME OPTS REGRESS_FILES) | |
+ set(contrib_check_targets ${contrib_check_targets} ${TARGET_NAME}_tap_installcheck_tmp PARENT_SCOPE) | |
+ set(contrib_installcheck_targets ${contrib_installcheck_targets} ${TARGET_NAME}_tap_installcheck PARENT_SCOPE) | |
+ TAP_CHECK("${TARGET_NAME}_tap" "${OPTS}" "${REGRESS_FILES}") | |
+endmacro(CONTRIB_TAP_CHECK TARGET_NAME OPTS REGRESS_FILES) | |
+ | |
+ | |
+# Modules macros | |
+macro(MODULES_REGRESS_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ set(modules_check_targets ${modules_check_targets} ${TARGET_NAME}_installcheck_tmp PARENT_SCOPE) | |
+ set(modules_installcheck_targets ${modules_installcheck_targets} ${TARGET_NAME}_installcheck PARENT_SCOPE) | |
+ REGRESS_CHECK("${TARGET_NAME}" "${REGRESS_OPTS}" "${REGRESS_FILES}") | |
+endmacro(MODULES_REGRESS_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ | |
+macro(MODULES_ISOLATION_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ set(modules_check_targets ${modules_check_targets} ${TARGET_NAME}_isolation_installcheck_tmp PARENT_SCOPE) | |
+ set(modules_installcheck_targets ${modules_installcheck_targets} ${TARGET_NAME}_isolation_installcheck PARENT_SCOPE) | |
+ ISOLATION_CHECK("${TARGET_NAME}" "${REGRESS_OPTS}" "${REGRESS_FILES}") | |
+endmacro(MODULES_ISOLATION_CHECK TARGET_NAME REGRESS_OPTS REGRESS_FILES) | |
+ | |
+macro(MODULES_TAP_CHECK TARGET_NAME OPTS REGRESS_FILES) | |
+ set(modules_check_targets ${modules_check_targets} ${TARGET_NAME}_tap_installcheck_tmp PARENT_SCOPE) | |
+ set(modules_installcheck_targets ${modules_installcheck_targets} ${TARGET_NAME}_tap_installcheck PARENT_SCOPE) | |
+ TAP_CHECK("${TARGET_NAME}_tap" "${OPTS}" "${REGRESS_FILES}") | |
+endmacro(MODULES_TAP_CHECK TARGET_NAME OPTS REGRESS_FILES) | |
diff --git a/cmake/ReplacePython.cmake b/cmake/ReplacePython.cmake | |
new file mode 100644 | |
index 0000000000..f7683072f1 | |
--- /dev/null | |
+++ b/cmake/ReplacePython.cmake | |
@@ -0,0 +1,79 @@ | |
+macro(replace_python2 input_file output_file) | |
+ file(READ ${input_file} tmp_string) | |
+ string(REGEX REPLACE | |
+ "except \([a-zA-Z\\.]*\), *\([a-zA-Z]*\):" | |
+ "except \\1 as \\2:" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "<type 'exceptions\\.\([a-zA-Z]*\)'>" "<class '\\1'>" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "<type 'long'>" "<class 'int'>" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "\([0-9][0-9]*\)L" "\\1" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "\([ [{]\)u\"" "\\1\"" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "\([ [{]\)u'" "\\1'" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "def next" "def __next__" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "LANGUAGE plpythonu" "LANGUAGE plpython3u" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "LANGUAGE plpython2u" "LANGUAGE plpython3u" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "EXTENSION \([^ ]*_\)+plpythonu" "EXTENSION \\1plpython3u" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "EXTENSION plpythonu" "EXTENSION plpython3u" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "EXTENSION \([^ ]*_\)+plpython2u" "EXTENSION \\1plpython3u" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "EXTENSION plpython2u" "EXTENSION plpython3u" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ string(REGEX REPLACE | |
+ "installing required extension \"plpython2u\"" | |
+ "installing required extension \"plpython3u\"" | |
+ tmp_string | |
+ "${tmp_string}") | |
+ file(WRITE ${output_file} "${tmp_string}") | |
+endmacro() | |
+ | |
+macro(replace_python_files r_regress_files) | |
+ file(MAKE_DIRECTORY sql/python3 expected/python3 results/python3) | |
+ set(adition_clean "") | |
+ set(regress_files3 "") | |
+ foreach(rfile ${r_regress_files}) | |
+ replace_python2("sql/${rfile}.sql" "sql/python3/${rfile}.sql") | |
+ if(rfile STREQUAL "plpython_types") | |
+ replace_python2("expected/plpython_types_3.out" "expected/python3/${rfile}.out") | |
+ else() | |
+ replace_python2("expected/${rfile}.out" "expected/python3/${rfile}.out") | |
+ endif() | |
+ set(adition_clean "${adition_clean};sql/python3/${rfile}.sql;expected/python3/${rfile}.out;") | |
+ set(regress_files3 "${regress_files3};python3/${rfile}") | |
+ endforeach(rfile) | |
+ SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${adition_clean}") | |
+endmacro() | |
diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..71a2d77a79 | |
--- /dev/null | |
+++ b/contrib/CMakeLists.txt | |
@@ -0,0 +1,123 @@ | |
+set(contrib_libs postgres) | |
+ | |
+#TODO: need test under mingw or cygwin | |
+if(WIN32) | |
+ set(contrib_libs | |
+ pgport | |
+ pgcommon | |
+ ) | |
+endif() | |
+ | |
+if(MSVC OR MINGW) | |
+ set(contrib_libs | |
+ pgport | |
+ postgres | |
+ pgcommon_srv | |
+ ) | |
+endif() | |
+ | |
+set(contrib_check_targets "") | |
+set(contrib_installcheck_targets "") | |
+ | |
+# Tests | |
+add_subdirectory(adminpack) | |
+add_subdirectory(auth_delay) | |
+add_subdirectory(auto_explain) | |
+add_subdirectory(btree_gin) | |
+add_subdirectory(btree_gist) | |
+add_subdirectory(bloom) | |
+add_subdirectory(chkpass) | |
+add_subdirectory(citext) | |
+add_subdirectory(cube) | |
+add_subdirectory(dblink) | |
+add_subdirectory(dict_int) | |
+add_subdirectory(dict_xsyn) | |
+add_subdirectory(earthdistance) | |
+add_subdirectory(file_fdw) | |
+add_subdirectory(fuzzystrmatch) | |
+add_subdirectory(hstore) | |
+if(PERLLIBS_FOUND) | |
+ add_subdirectory(hstore_plperl) | |
+endif() | |
+if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND) | |
+ add_subdirectory(hstore_plpython) | |
+endif() | |
+add_subdirectory(intarray) | |
+add_subdirectory(isn) | |
+add_subdirectory(lo) | |
+add_subdirectory(ltree) | |
+if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND) | |
+ add_subdirectory(ltree_plpython) | |
+endif() | |
+add_subdirectory(oid2name) | |
+add_subdirectory(pageinspect) | |
+add_subdirectory(passwordcheck) | |
+add_subdirectory(pg_buffercache) | |
+add_subdirectory(pg_freespacemap) | |
+add_subdirectory(pg_prewarm) | |
+add_subdirectory(pg_standby) | |
+add_subdirectory(pg_stat_statements) | |
+add_subdirectory(pg_trgm) | |
+add_subdirectory(pg_visibility) | |
+add_subdirectory(pgcrypto) | |
+add_subdirectory(pgrowlocks) | |
+add_subdirectory(pgstattuple) | |
+add_subdirectory(postgres_fdw) | |
+add_subdirectory(seg) | |
+if(SELINUX_LIBRARIES) | |
+ add_subdirectory(sepgsql) | |
+endif() | |
+add_subdirectory(spi) | |
+if(OPENSSL_FOUND) | |
+ add_subdirectory(sslinfo) | |
+endif() | |
+add_subdirectory(tablefunc) | |
+add_subdirectory(tcn) | |
+add_subdirectory(tsm_system_rows) | |
+add_subdirectory(tsm_system_time) | |
+add_subdirectory(unaccent) | |
+if(WITH_UUID) | |
+ add_subdirectory(uuid-ossp) | |
+endif() | |
+add_subdirectory(vacuumlo) | |
+if(LIBXML2_FOUND) | |
+ add_subdirectory(xml2) | |
+endif() | |
+ | |
+add_subdirectory(test_decoding) | |
+add_subdirectory(amcheck) | |
+ | |
+if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(contrib_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} install | |
+ COMMAND DESTDIR=${tmp_check_folder} -j1 ${check_make_command} ${contrib_check_targets} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+else() | |
+ add_custom_target(contrib_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} ${contrib_check_targets} DESTDIR=${tmp_check_folder} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+endif() | |
+# Make chain for run tests in strict order | |
+# TODO: we can't run tests separately now | |
+set(first_element "") | |
+list(GET contrib_installcheck_targets 0 first_element) | |
+add_custom_target(contrib_installcheck | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ DEPENDS tablespace-setup ${first_element} | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+) | |
+ | |
+set(last_element OFF) | |
+foreach(loop_var IN ITEMS ${contrib_installcheck_targets}) | |
+ if(last_element) | |
+ add_dependencies(${last_element} ${loop_var}) | |
+ endif() | |
+ set(last_element ${loop_var}) | |
+endforeach() | |
diff --git a/contrib/adminpack/CMakeLists.txt b/contrib/adminpack/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..f43c1ff6c8 | |
--- /dev/null | |
+++ b/contrib/adminpack/CMakeLists.txt | |
@@ -0,0 +1,27 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name adminpack) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
diff --git a/contrib/amcheck/CMakeLists.txt b/contrib/amcheck/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c6c0058a62 | |
--- /dev/null | |
+++ b/contrib/amcheck/CMakeLists.txt | |
@@ -0,0 +1,34 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name amcheck) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ verify_nbtree.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+SET(regress_files | |
+ check | |
+ check_btree | |
+) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/auth_delay/CMakeLists.txt b/contrib/auth_delay/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..e1961b088f | |
--- /dev/null | |
+++ b/contrib/auth_delay/CMakeLists.txt | |
@@ -0,0 +1,27 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ if(OPENSSL_FOUND) | |
+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR}) | |
+ endif() | |
+endif() | |
+ | |
+set(extension_name auth_delay) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/contrib/auto_explain/CMakeLists.txt b/contrib/auto_explain/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..27d8a3e440 | |
--- /dev/null | |
+++ b/contrib/auto_explain/CMakeLists.txt | |
@@ -0,0 +1,18 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name auto_explain) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
diff --git a/contrib/bloom/CMakeLists.txt b/contrib/bloom/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..793ce3f79c | |
--- /dev/null | |
+++ b/contrib/bloom/CMakeLists.txt | |
@@ -0,0 +1,38 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name bloom) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ blcost.c | |
+ blinsert.c | |
+ blscan.c | |
+ blutils.c | |
+ blvacuum.c | |
+ blvalidate.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "bloom") | |
+if(PROVE) | |
+ CONTRIB_TAP_CHECK(${extension_name} "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/contrib/btree_gin/CMakeLists.txt b/contrib/btree_gin/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..00fed89747 | |
--- /dev/null | |
+++ b/contrib/btree_gin/CMakeLists.txt | |
@@ -0,0 +1,53 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name btree_gin) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension | |
+) | |
+ | |
+set(regres_files | |
+ install_btree_gin | |
+ int2 | |
+ int4 | |
+ int8 | |
+ float4 | |
+ float8 | |
+ money | |
+ oid | |
+ timestamp | |
+ timestamptz | |
+ time | |
+ timetz | |
+ date | |
+ interval | |
+ macaddr | |
+ inet | |
+ cidr | |
+ text | |
+ varchar | |
+ char | |
+ bytea | |
+ bit | |
+ varbit | |
+ numeric | |
+) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regres_files}") | |
diff --git a/contrib/btree_gist/CMakeLists.txt b/contrib/btree_gist/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..7ea9cfd903 | |
--- /dev/null | |
+++ b/contrib/btree_gist/CMakeLists.txt | |
@@ -0,0 +1,79 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name btree_gist) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ ${extension_name}.c | |
+ btree_utils_num.c | |
+ btree_utils_var.c | |
+ btree_int2.c | |
+ btree_int4.c | |
+ btree_int8.c | |
+ btree_float4.c | |
+ btree_float8.c | |
+ btree_cash.c | |
+ btree_oid.c | |
+ btree_ts.c | |
+ btree_time.c | |
+ btree_date.c | |
+ btree_interval.c | |
+ btree_macaddr.c | |
+ btree_macaddr8.c | |
+ btree_inet.c | |
+ btree_text.c | |
+ btree_bytea.c | |
+ btree_bit.c | |
+ btree_numeric.c | |
+ btree_uuid.c | |
+ btree_enum.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs} ${LIB_M}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+gen_def(${extension_name}) | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.4--1.5.sql | |
+ ${extension_name}--1.3--1.4.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+ | |
+set(regres_files | |
+ init | |
+ int2 | |
+ int4 | |
+ int8 | |
+ float4 | |
+ float8 | |
+ cash | |
+ oid | |
+ timestamp | |
+ timestamptz | |
+ time | |
+ timetz | |
+ date | |
+ interval | |
+ macaddr | |
+ inet | |
+ cidr | |
+ text | |
+ varchar | |
+ char | |
+ bytea | |
+ bit | |
+ varbit | |
+ numeric | |
+ not_equal | |
+) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regres_files}") | |
diff --git a/contrib/chkpass/CMakeLists.txt b/contrib/chkpass/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1265b65d2a | |
--- /dev/null | |
+++ b/contrib/chkpass/CMakeLists.txt | |
@@ -0,0 +1,22 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name chkpass) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+if(CRYPT_LIB) | |
+ target_link_libraries(${extension_name} ${CRYPT_LIB}) | |
+endif() | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control ${extension_name}--1.0.sql ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/citext/CMakeLists.txt b/contrib/citext/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..4d33eb6a72 | |
--- /dev/null | |
+++ b/contrib/citext/CMakeLists.txt | |
@@ -0,0 +1,28 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name citext) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.4.sql | |
+ ${extension_name}--1.3--1.4.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "citext") | |
diff --git a/contrib/cube/CMakeLists.txt b/contrib/cube/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..b5d1a2b03a | |
--- /dev/null | |
+++ b/contrib/cube/CMakeLists.txt | |
@@ -0,0 +1,34 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name cube) | |
+ | |
+bison_target(CUBE_PARSER cubeparse.y ${CMAKE_CURRENT_SOURCE_DIR}/cubeparse.c) | |
+flex_target(CUBE_SCANNER cubescan.l ${CMAKE_CURRENT_SOURCE_DIR}/cubescan.c) | |
+add_flex_bison_dependency(CUBE_SCANNER CUBE_PARSER) | |
+set_source_files_properties(${BISON_CUBE_PARSER_OUTPUTS} PROPERTIES OBJECT_DEPENDS ${FLEX_CUBE_SCANNER_OUTPUTS}) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ ${extension_name}.c | |
+ ${BISON_CUBE_PARSER_OUTPUTS} | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "cube") | |
diff --git a/contrib/dblink/CMakeLists.txt b/contrib/dblink/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..7e6184c7ed | |
--- /dev/null | |
+++ b/contrib/dblink/CMakeLists.txt | |
@@ -0,0 +1,30 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+ | |
+set(extension_name dblink) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs} pq) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files paths dblink) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/dict_int/CMakeLists.txt b/contrib/dict_int/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c9fac9d5bf | |
--- /dev/null | |
+++ b/contrib/dict_int/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name dict_int) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files dict_int) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/dict_xsyn/CMakeLists.txt b/contrib/dict_xsyn/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..a2e26908d9 | |
--- /dev/null | |
+++ b/contrib/dict_xsyn/CMakeLists.txt | |
@@ -0,0 +1,28 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name dict_xsyn) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+install(FILES | |
+ xsyn_sample.rules | |
+ DESTINATION ${PGSHAREDIR}/tsearch_data) | |
+ | |
+set(regress_files dict_xsyn) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/earthdistance/CMakeLists.txt b/contrib/earthdistance/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c46b122039 | |
--- /dev/null | |
+++ b/contrib/earthdistance/CMakeLists.txt | |
@@ -0,0 +1,27 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name earthdistance) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+ set_target_properties(${extension_name} PROPERTIES C_FLAGS " /fp:precise") | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files earthdistance) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/file_fdw/CMakeLists.txt b/contrib/file_fdw/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..8eec7a569a | |
--- /dev/null | |
+++ b/contrib/file_fdw/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name file_fdw) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files file_fdw) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/fuzzystrmatch/CMakeLists.txt b/contrib/fuzzystrmatch/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..107941c202 | |
--- /dev/null | |
+++ b/contrib/fuzzystrmatch/CMakeLists.txt | |
@@ -0,0 +1,23 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name fuzzystrmatch) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c dmetaphone.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/hstore/CMakeLists.txt b/contrib/hstore/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..b75ff4d3ad | |
--- /dev/null | |
+++ b/contrib/hstore/CMakeLists.txt | |
@@ -0,0 +1,38 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name hstore) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ hstore_io.c | |
+ hstore_op.c | |
+ hstore_gist.c | |
+ hstore_gin.c | |
+ hstore_compat.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(MINGW) | |
+ set_target_properties(${extension_name} PROPERTIES LINK_FLAGS -Wl,--out-implib=libmin${extension_name}.dll.a) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.4.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.3--1.4.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files hstore) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/hstore_plperl/CMakeLists.txt b/contrib/hstore_plperl/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..399c1ab021 | |
--- /dev/null | |
+++ b/contrib/hstore_plperl/CMakeLists.txt | |
@@ -0,0 +1,38 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/pl/plperl" | |
+ "${PROJECT_SOURCE_DIR}/contrib/hstore" | |
+ ${PERL_INCLUDE_PATH} | |
+) | |
+ | |
+if(MINGW) | |
+ link_directories("${PROJECT_BINARY_DIR}/contrib/hstore") | |
+endif() | |
+set(extension_name hstore_plperl) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs} ${PERL_LIBRARY} ${PERL_LDFLAGS}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(MINGW) | |
+ target_link_libraries(${extension_name} minhstore) | |
+ target_compile_definitions(${extension_name} PRIVATE -DPLPERL_HAVE_UID_GID) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}u.control | |
+ ${extension_name}u--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files hstore_plperl) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/hstore_plpython/CMakeLists.txt b/contrib/hstore_plpython/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..8e4909829c | |
--- /dev/null | |
+++ b/contrib/hstore_plpython/CMakeLists.txt | |
@@ -0,0 +1,58 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/pl/plpython" | |
+ "${PROJECT_SOURCE_DIR}/contrib/hstore" | |
+ ${PYTHON_INCLUDE_DIRS} | |
+) | |
+ | |
+if(MINGW) | |
+ link_directories( | |
+ "${PROJECT_BINARY_DIR}/contrib/hstore" | |
+ "${PROJECT_BINARY_DIR}/src/pl/plpython" | |
+ ) | |
+endif() | |
+ | |
+set(extension_name hstore_plpython) | |
+ | |
+add_library(${extension_name}${PYTHON_VERSION_MAJOR} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name}${PYTHON_VERSION_MAJOR} ${contrib_libs} ${PYTHON_LIBRARIES}) | |
+set_target_properties(${extension_name}${PYTHON_VERSION_MAJOR} PROPERTIES PREFIX "") | |
+target_compile_definitions(${extension_name}${PYTHON_VERSION_MAJOR} PRIVATE -DPLPYTHON_LIBNAME="plpython${PYTHON_VERSION_MAJOR}") | |
+add_dependencies(${extension_name}${PYTHON_VERSION_MAJOR} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(MINGW) | |
+ target_link_libraries(${extension_name}${PYTHON_VERSION_MAJOR} minhstore minplpython${PYTHON_VERSION_MAJOR}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name}${PYTHON_VERSION_MAJOR} contrib) | |
+endif() | |
+install(TARGETS ${extension_name}${PYTHON_VERSION_MAJOR} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}u.control | |
+ ${extension_name}u--1.0.sql | |
+ ${extension_name}2u.control | |
+ ${extension_name}2u--1.0.sql | |
+ ${extension_name}3u.control | |
+ ${extension_name}3u--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files hstore_plpython) | |
+ | |
+if(PYTHON_VERSION_MAJOR EQUAL 3) | |
+ replace_python_files("${regress_files}") | |
+ set(regress_options | |
+ "--load-extension=hstore" | |
+ ) | |
+ CONTRIB_REGRESS_CHECK(${extension_name} "${regress_options}" "${regress_files3}") | |
+else() | |
+ set(regress_options | |
+ "--load-extension=hstore" | |
+ "--load-extension=plpythonu" | |
+ "--load-extension=hstore_plpythonu" | |
+ ) | |
+ CONTRIB_REGRESS_CHECK(${extension_name} "${regress_options}" "${regress_files}") | |
+endif() | |
diff --git a/contrib/intarray/CMakeLists.txt b/contrib/intarray/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..be696c21c6 | |
--- /dev/null | |
+++ b/contrib/intarray/CMakeLists.txt | |
@@ -0,0 +1,36 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name intarray) | |
+set(extension_lib_name _int) | |
+ | |
+add_library(${extension_lib_name} ${PLUGIN_TYPE} | |
+ _int_bool.c | |
+ _int_gist.c | |
+ _int_op.c | |
+ _int_tool.c | |
+ _intbig_gist.c | |
+ _int_gin.c | |
+ _int_selfuncs.c | |
+) | |
+target_link_libraries(${extension_lib_name} ${contrib_libs}) | |
+set_target_properties(${extension_lib_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_lib_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_lib_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_lib_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files ${extension_lib_name}) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/isn/CMakeLists.txt b/contrib/isn/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..6180d4e955 | |
--- /dev/null | |
+++ b/contrib/isn/CMakeLists.txt | |
@@ -0,0 +1,26 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name isn) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files isn) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/lo/CMakeLists.txt b/contrib/lo/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..9f63d58ed5 | |
--- /dev/null | |
+++ b/contrib/lo/CMakeLists.txt | |
@@ -0,0 +1,23 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name lo) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/ltree/CMakeLists.txt b/contrib/ltree/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..66f02565e4 | |
--- /dev/null | |
+++ b/contrib/ltree/CMakeLists.txt | |
@@ -0,0 +1,37 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name ltree) | |
+add_definitions(-DLOWER_NODE) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ ltree_io.c | |
+ ltree_op.c | |
+ lquery_op.c | |
+ _ltree_op.c | |
+ crc32.c | |
+ ltxtquery_io.c | |
+ ltxtquery_op.c | |
+ ltree_gist.c | |
+ _ltree_gist.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files ltree) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/ltree_plpython/CMakeLists.txt b/contrib/ltree_plpython/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..f6868526df | |
--- /dev/null | |
+++ b/contrib/ltree_plpython/CMakeLists.txt | |
@@ -0,0 +1,50 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/pl/plpython" | |
+ "${PROJECT_SOURCE_DIR}/contrib/ltree" | |
+ ${PYTHON_INCLUDE_DIRS} | |
+) | |
+ | |
+set(extension_name ltree_plpython) | |
+ | |
+add_library(${extension_name}${PYTHON_VERSION_MAJOR} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name}${PYTHON_VERSION_MAJOR} ${contrib_libs} ${PYTHON_LIBRARIES}) | |
+set_target_properties(${extension_name}${PYTHON_VERSION_MAJOR} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name}${PYTHON_VERSION_MAJOR} postgres) | |
+target_compile_definitions(${extension_name}${PYTHON_VERSION_MAJOR} PRIVATE -DPLPYTHON_LIBNAME="plpython${PYTHON_VERSION_MAJOR}") | |
+if (MSVC) | |
+ gen_def(${extension_name}${PYTHON_VERSION_MAJOR}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name}${PYTHON_VERSION_MAJOR} contrib) | |
+endif() | |
+install(TARGETS ${extension_name}${PYTHON_VERSION_MAJOR} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}u.control | |
+ ${extension_name}u--1.0.sql | |
+ ${extension_name}2u.control | |
+ ${extension_name}2u--1.0.sql | |
+ ${extension_name}3u.control | |
+ ${extension_name}3u--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files ltree_plpython) | |
+ | |
+ | |
+if(PYTHON_VERSION_MAJOR EQUAL 3) | |
+ replace_python_files("${regress_files}") | |
+ set(regress_options | |
+ "--load-extension=ltree" | |
+ ) | |
+ CONTRIB_REGRESS_CHECK(${extension_name} "${regress_options}" "${regress_files3}") | |
+else() | |
+ set(regress_options | |
+ "--load-extension=hstore" | |
+ "--load-extension=plpythonu" | |
+ "--load-extension=ltree" | |
+ "--load-extension=ltree_plpythonu" | |
+ ) | |
+ CONTRIB_REGRESS_CHECK(${extension_name} "${regress_options}" "${regress_files}") | |
+endif() | |
diff --git a/contrib/oid2name/CMakeLists.txt b/contrib/oid2name/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..f644a49cb6 | |
--- /dev/null | |
+++ b/contrib/oid2name/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+ | |
+set(extension_name oid2name) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+ | |
+if(MSVC OR MINGW) | |
+ target_link_libraries(${extension_name} pgcommon pq) | |
+endif() | |
+ | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/contrib/pageinspect/CMakeLists.txt b/contrib/pageinspect/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..bc8110aaeb | |
--- /dev/null | |
+++ b/contrib/pageinspect/CMakeLists.txt | |
@@ -0,0 +1,45 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pageinspect) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ rawpage.c | |
+ heapfuncs.c | |
+ btreefuncs.c | |
+ fsmfuncs.c | |
+ brinfuncs.c | |
+ ginfuncs.c | |
+ hashfuncs.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.5.sql | |
+ ${extension_name}--1.5--1.6.sql | |
+ ${extension_name}--1.4--1.5.sql | |
+ ${extension_name}--1.3--1.4.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regres_files | |
+ page | |
+ btree | |
+ brin | |
+ gin | |
+ hash | |
+) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regres_files}") | |
diff --git a/contrib/passwordcheck/CMakeLists.txt b/contrib/passwordcheck/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1503cf0baf | |
--- /dev/null | |
+++ b/contrib/passwordcheck/CMakeLists.txt | |
@@ -0,0 +1,17 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name passwordcheck) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/contrib/pg_buffercache/CMakeLists.txt b/contrib/pg_buffercache/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..407cfe2128 | |
--- /dev/null | |
+++ b/contrib/pg_buffercache/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_buffercache) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}_pages.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/pg_freespacemap/CMakeLists.txt b/contrib/pg_freespacemap/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..11924cf9b6 | |
--- /dev/null | |
+++ b/contrib/pg_freespacemap/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_freespacemap) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/pg_prewarm/CMakeLists.txt b/contrib/pg_prewarm/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..d5fc677f5a | |
--- /dev/null | |
+++ b/contrib/pg_prewarm/CMakeLists.txt | |
@@ -0,0 +1,22 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_prewarm) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/pg_standby/CMakeLists.txt b/contrib/pg_standby/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..f2a406b8c7 | |
--- /dev/null | |
+++ b/contrib/pg_standby/CMakeLists.txt | |
@@ -0,0 +1,14 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_standby) | |
+ | |
+add_executable(${extension_name} ${extension_name}.c) | |
+target_link_libraries(${extension_name} pgport pgcommon pq) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/contrib/pg_stat_statements/CMakeLists.txt b/contrib/pg_stat_statements/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..81df5bb3a4 | |
--- /dev/null | |
+++ b/contrib/pg_stat_statements/CMakeLists.txt | |
@@ -0,0 +1,37 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_stat_statements) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.4.sql | |
+ ${extension_name}--1.4--1.5.sql | |
+ ${extension_name}--1.3--1.4.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regres_files | |
+ ${extension_name} | |
+) | |
+set(REGRESS_OPTS | |
+ --temp-config ${PROJECT_SOURCE_DIR}/contrib/pg_stat_statements/pg_stat_statements.conf | |
+) | |
+# Only for make check and not for installcheck | |
+set(contrib_check_targets ${contrib_check_targets} ${extension_name}_installcheck_tmp PARENT_SCOPE) | |
+REGRESS_CHECK("${extension_name}" "${REGRESS_OPTS}" "${regres_files}") | |
diff --git a/contrib/pg_trgm/CMakeLists.txt b/contrib/pg_trgm/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..ad8c93c618 | |
--- /dev/null | |
+++ b/contrib/pg_trgm/CMakeLists.txt | |
@@ -0,0 +1,33 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_trgm) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ trgm_op.c | |
+ trgm_gist.c | |
+ trgm_gin.c | |
+ trgm_regexp.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.3.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files pg_trgm pg_word_trgm) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/pg_visibility/CMakeLists.txt b/contrib/pg_visibility/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..5919f425a1 | |
--- /dev/null | |
+++ b/contrib/pg_visibility/CMakeLists.txt | |
@@ -0,0 +1,28 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pg_visibility) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regres_files | |
+ ${extension_name} | |
+) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regres_files}") | |
diff --git a/contrib/pgcrypto/CMakeLists.txt b/contrib/pgcrypto/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..bd524776bc | |
--- /dev/null | |
+++ b/contrib/pgcrypto/CMakeLists.txt | |
@@ -0,0 +1,131 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+) | |
+if(ZLIB_FOUND) | |
+ include_directories(BEFORE ${ZLIB_INCLUDE_DIRS}) | |
+endif() | |
+ | |
+set(extension_name pgcrypto) | |
+ | |
+set(pgcrypto_src | |
+ pgcrypto.c | |
+ px.c | |
+ px-hmac.c | |
+ px-crypt.c | |
+ crypt-gensalt.c | |
+ crypt-blowfish.c | |
+ crypt-des.c | |
+ crypt-md5.c | |
+ mbuf.c | |
+ pgp.c | |
+ pgp-armor.c | |
+ pgp-cfb.c | |
+ pgp-compress.c | |
+ pgp-decrypt.c | |
+ pgp-encrypt.c | |
+ pgp-info.c | |
+ pgp-mpi.c | |
+ pgp-pubdec.c | |
+ pgp-pubenc.c | |
+ pgp-pubkey.c | |
+ pgp-s2k.c | |
+ pgp-pgsql.c | |
+) | |
+ | |
+set(regress_files | |
+ init | |
+ md5 | |
+ sha1 | |
+ hmac-md5 | |
+ hmac-sha1 | |
+ blowfish | |
+ rijndael | |
+ crypt-des | |
+ crypt-md5 | |
+ crypt-blowfish | |
+ crypt-xdes | |
+ pgp-armor | |
+ pgp-decrypt | |
+ pgp-encrypt | |
+ pgp-pubkey-decrypt | |
+ pgp-pubkey-encrypt | |
+ pgp-info | |
+) | |
+ | |
+if(OPENSSL_FOUND) | |
+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR}) | |
+ set(pgcrypto_src ${pgcrypto_src} openssl.c pgp-mpi-openssl.c) | |
+ set(regress_files ${regress_files} | |
+ sha2 | |
+ des | |
+ 3des | |
+ cast5 | |
+ ) | |
+else() | |
+ add_executable(gen-rtab rijndael.c) | |
+ target_link_libraries(gen-rtab pgport) | |
+ target_compile_definitions(gen-rtab PRIVATE -DPRINT_TABS) | |
+ | |
+ add_custom_command( | |
+ DEPENDS gen-rtab | |
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/rijndael.tbl | |
+ COMMAND gen-rtab > rijndael.tbl | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ | |
+ set(pgcrypto_src ${pgcrypto_src} | |
+ md5.c | |
+ sha1.c | |
+ internal.c | |
+ internal-sha2.c | |
+ blf.c | |
+ rijndael.tbl | |
+ rijndael.c | |
+ pgp-mpi-internal.c | |
+ imath.c | |
+ ) | |
+ set(regress_files ${regress_files} sha2) | |
+endif() | |
+ | |
+if(ZLIB_FOUND) | |
+ set(regress_files ${regress_files} pgp-compression) | |
+endif() | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${pgcrypto_src}) | |
+target_link_libraries(${extension_name} | |
+ ${contrib_libs} | |
+) | |
+if(OPENSSL_FOUND) | |
+ target_link_libraries(${extension_name} ${OPENSSL_LIBRARIES}) | |
+endif() | |
+if(CRYPT_LIB) | |
+ target_link_libraries(${extension_name} ${CRYPT_LIB}) | |
+endif() | |
+if(ZLIB_FOUND) | |
+ target_link_libraries(${extension_name} ${ZLIB_LIBRARIES}) | |
+endif() | |
+if(WIN32) | |
+ target_link_libraries(${extension_name} ws2_32) | |
+endif() | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.3.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+ | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/pgcrypto/rijndael.c b/contrib/pgcrypto/rijndael.c | |
index 4c074efbc0..0c44a04af9 100644 | |
--- a/contrib/pgcrypto/rijndael.c | |
+++ b/contrib/pgcrypto/rijndael.c | |
@@ -78,8 +78,9 @@ static void gen_tabs(void); | |
#endif | |
#ifdef PRE_CALC_TABLES | |
- | |
-#include "rijndael.tbl" | |
+/* WRAP_INCLUDE for remove CMake circular dependency */ | |
+#define WRAP_INCLUDE(x) x | |
+#include WRAP_INCLUDE("rijndael.tbl") | |
#define tab_gen 1 | |
#else /* !PRE_CALC_TABLES */ | |
diff --git a/contrib/pgcrypto/rijndael.tbl b/contrib/pgcrypto/rijndael.tbl | |
index c7610c0134..bc0a3822cc 100644 | |
--- a/contrib/pgcrypto/rijndael.tbl | |
+++ b/contrib/pgcrypto/rijndael.tbl | |
@@ -1133,6 +1133,7 @@ static const u4byte il_tab[4][256] = { | |
}; | |
static const u4byte rco_tab[10] = { | |
- 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, | |
+ 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, | |
0x00000020, 0x00000040, 0x00000080, 0x0000001b, 0x00000036 | |
}; | |
+ | |
diff --git a/contrib/pgrowlocks/CMakeLists.txt b/contrib/pgrowlocks/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..d7c9a16edb | |
--- /dev/null | |
+++ b/contrib/pgrowlocks/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pgrowlocks) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/pgstattuple/CMakeLists.txt b/contrib/pgstattuple/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..217f6f8243 | |
--- /dev/null | |
+++ b/contrib/pgstattuple/CMakeLists.txt | |
@@ -0,0 +1,34 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name pgstattuple) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ ${extension_name}.c | |
+ pgstatindex.c | |
+ pgstatapprox.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.4.sql | |
+ ${extension_name}--1.4--1.5.sql | |
+ ${extension_name}--1.3--1.4.sql | |
+ ${extension_name}--1.2--1.3.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files pgstattuple) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/postgres_fdw/CMakeLists.txt b/contrib/postgres_fdw/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..fd7ef3ec18 | |
--- /dev/null | |
+++ b/contrib/postgres_fdw/CMakeLists.txt | |
@@ -0,0 +1,33 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+ | |
+set(extension_name postgres_fdw) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ ${extension_name}.c | |
+ option.c | |
+ deparse.c | |
+ connection.c | |
+ shippable.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs} pq) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files postgres_fdw) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/seg/CMakeLists.txt b/contrib/seg/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c07a1e6718 | |
--- /dev/null | |
+++ b/contrib/seg/CMakeLists.txt | |
@@ -0,0 +1,34 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name seg) | |
+ | |
+bison_target(CUBE_PARSER segparse.y ${CMAKE_CURRENT_SOURCE_DIR}/segparse.c) | |
+flex_target(CUBE_SCANNER segscan.l ${CMAKE_CURRENT_SOURCE_DIR}/segscan.c) | |
+add_flex_bison_dependency(CUBE_SCANNER CUBE_PARSER) | |
+set_source_files_properties(${BISON_CUBE_PARSER_OUTPUTS} PROPERTIES OBJECT_DEPENDS ${FLEX_CUBE_SCANNER_OUTPUTS}) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ ${extension_name}.c | |
+ ${BISON_CUBE_PARSER_OUTPUTS} | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files seg) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/sepgsql/CMakeLists.txt b/contrib/sepgsql/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..4b16b30c14 | |
--- /dev/null | |
+++ b/contrib/sepgsql/CMakeLists.txt | |
@@ -0,0 +1,45 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name sepgsql) | |
+ | |
+set(sepgsql_sql_output | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/sepgsql.sql | |
+) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/sepgsql.sql.in | |
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/sepgsql.sql | |
+ COMMAND sed 's,MODULE_PATHNAME,$$libdir/${extension_name},g' sepgsql.sql.in > ${CMAKE_CURRENT_SOURCE_DIR}/sepgsql.sql | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ hooks.c | |
+ selinux.c | |
+ uavc.c | |
+ label.c | |
+ dml.c | |
+ database.c | |
+ schema.c | |
+ relation.c | |
+ proc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/sepgsql.sql | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs} ${SELINUX_LIBRARIES}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/sepgsql.sql | |
+ DESTINATION ${PGSHAREDIR}/contrib) | |
+ | |
+#set(regress_files seg) | |
+#CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/spi/CMakeLists.txt b/contrib/spi/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1e95e7c4aa | |
--- /dev/null | |
+++ b/contrib/spi/CMakeLists.txt | |
@@ -0,0 +1,29 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+ | |
+set(modules_list | |
+ autoinc | |
+ insert_username | |
+ moddatetime | |
+ refint | |
+ timetravel | |
+) | |
+ | |
+foreach(loop_var IN ITEMS ${modules_list}) | |
+ add_library(${loop_var} ${PLUGIN_TYPE} ${loop_var}.c) | |
+ target_compile_definitions(${loop_var} PRIVATE -DREFINT_VERBOSE) | |
+ target_link_libraries(${loop_var} ${contrib_libs}) | |
+ set_target_properties(${loop_var} PROPERTIES PREFIX "") | |
+ add_dependencies(${loop_var} postgres) | |
+ if(MSVC) | |
+ gen_def(${loop_var}) | |
+ endif() | |
+ if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${loop_var} contrib/spi) | |
+ endif() | |
+ install(TARGETS ${loop_var} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ install(FILES ${loop_var}.control ${loop_var}--1.0.sql ${loop_var}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+endforeach(loop_var) | |
diff --git a/contrib/sslinfo/CMakeLists.txt b/contrib/sslinfo/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..4fe9796f8f | |
--- /dev/null | |
+++ b/contrib/sslinfo/CMakeLists.txt | |
@@ -0,0 +1,30 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ ${OPENSSL_INCLUDE_DIR} | |
+) | |
+ | |
+set(extension_name sslinfo) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs} ${OPENSSL_LIBRARIES}) | |
+if(CRYPT_LIB) | |
+ target_link_libraries(${extension_name} ${CRYPT_LIB}) | |
+endif() | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.2.sql | |
+ ${extension_name}--1.1--1.2.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/tablefunc/CMakeLists.txt b/contrib/tablefunc/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..a324993315 | |
--- /dev/null | |
+++ b/contrib/tablefunc/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name tablefunc) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files tablefunc) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/tcn/CMakeLists.txt b/contrib/tcn/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..6c0f7b05df | |
--- /dev/null | |
+++ b/contrib/tcn/CMakeLists.txt | |
@@ -0,0 +1,21 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name tcn) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
diff --git a/contrib/test_decoding/CMakeLists.txt b/contrib/test_decoding/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..96f5d26c55 | |
--- /dev/null | |
+++ b/contrib/test_decoding/CMakeLists.txt | |
@@ -0,0 +1,62 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_decoding) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ test_decoding.c | |
+) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+set(regerss_checks | |
+ ddl | |
+ xact | |
+ rewrite | |
+ toast | |
+ permissions | |
+ decoding_in_xact | |
+ decoding_into_rel | |
+ binary | |
+ prepared | |
+ replorigin | |
+ time | |
+ messages | |
+ slot | |
+) | |
+ | |
+set(regress_options | |
+ --temp-config ${CMAKE_SOURCE_DIR}/contrib/test_decoding/logical.conf | |
+) | |
+ | |
+set(isolation_checks | |
+ mxact | |
+ delayed_startup | |
+ ondisk_startup | |
+ concurrent_ddl_dml | |
+) | |
+ | |
+# Don't add tests to installcheck | |
+REGRESS_CHECK(${extension_name} "${regress_options}" "${regerss_checks}") | |
+ISOLATION_CHECK(${extension_name} "${regress_options}" "${isolation_checks}") | |
+set(contrib_check_targets | |
+ ${contrib_check_targets} | |
+ ${extension_name}_installcheck_tmp | |
+ ${extension_name}_isolation_installcheck_tmp | |
+PARENT_SCOPE) | |
diff --git a/contrib/tsm_system_rows/CMakeLists.txt b/contrib/tsm_system_rows/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..5dad7075e8 | |
--- /dev/null | |
+++ b/contrib/tsm_system_rows/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name tsm_system_rows) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files tsm_system_rows) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/tsm_system_time/CMakeLists.txt b/contrib/tsm_system_time/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..825847ab78 | |
--- /dev/null | |
+++ b/contrib/tsm_system_time/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name tsm_system_time) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs} ${LIB_M}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files tsm_system_time) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/unaccent/CMakeLists.txt b/contrib/unaccent/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..7f325672d6 | |
--- /dev/null | |
+++ b/contrib/unaccent/CMakeLists.txt | |
@@ -0,0 +1,29 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(extension_name unaccent) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c) | |
+target_link_libraries(${extension_name} ${contrib_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+install(FILES | |
+ ${extension_name}.rules | |
+ DESTINATION ${PGSHAREDIR}/tsearch_data) | |
+ | |
+set(regress_files unaccent) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/uuid-ossp/CMakeLists.txt b/contrib/uuid-ossp/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..4f38f75723 | |
--- /dev/null | |
+++ b/contrib/uuid-ossp/CMakeLists.txt | |
@@ -0,0 +1,27 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+include_directories(${LIBUUID_INCLUDE_DIRS}) | |
+include_directories("${PROJECT_SOURCE_DIR}/contrib/pgcrypto") | |
+ | |
+set(extension_name uuid-ossp) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} ${extension_name}.c ${UUID_EXTRA_OBJS}) | |
+target_link_libraries(${extension_name} ${contrib_libs} ${LIBUUID_LIBRARIES}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files uuid_ossp) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c | |
index 55bc609415..db1f6b2b2f 100644 | |
--- a/contrib/uuid-ossp/uuid-ossp.c | |
+++ b/contrib/uuid-ossp/uuid-ossp.c | |
@@ -29,16 +29,7 @@ | |
* builtins.h; we #define it out of the way. | |
*/ | |
#define uuid_hash bsd_uuid_hash | |
- | |
-#if defined(HAVE_UUID_H) | |
#include <uuid.h> | |
-#elif defined(HAVE_OSSP_UUID_H) | |
-#include <ossp/uuid.h> | |
-#elif defined(HAVE_UUID_UUID_H) | |
-#include <uuid/uuid.h> | |
-#else | |
-#error "please use configure's --with-uuid switch to select a UUID library" | |
-#endif | |
#undef uuid_hash | |
diff --git a/contrib/vacuumlo/CMakeLists.txt b/contrib/vacuumlo/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..5070bd84a0 | |
--- /dev/null | |
+++ b/contrib/vacuumlo/CMakeLists.txt | |
@@ -0,0 +1,17 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+ | |
+set(extension_name vacuumlo) | |
+ | |
+add_executable(${extension_name} ${extension_name}.c) | |
+target_link_libraries(${extension_name} pgport pgcommon pq) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_name} postgres) | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/contrib/xml2/CMakeLists.txt b/contrib/xml2/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..14d86aeb6c | |
--- /dev/null | |
+++ b/contrib/xml2/CMakeLists.txt | |
@@ -0,0 +1,40 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include" | |
+ ${LIBXML2_INCLUDE_DIR} | |
+) | |
+ | |
+if(LIBXSLT_FOUND) | |
+ include_directories(BEFORE ${LIBXSLT_INCLUDE_DIR}) | |
+endif() | |
+ | |
+set(extension_name xml2) | |
+set(extension_lib_name pgxml) | |
+ | |
+add_library(${extension_lib_name} ${PLUGIN_TYPE} xpath.c xslt_proc.c) | |
+target_link_libraries(${extension_lib_name} | |
+ ${contrib_libs} | |
+ ${LIBXML2_LIBRARIES} | |
+) | |
+if(LIBXSLT_FOUND) | |
+ target_link_libraries(${extension_lib_name} ${LIBXSLT_LIBRARIES}) | |
+endif() | |
+set_target_properties(${extension_lib_name} PROPERTIES PREFIX "") | |
+add_dependencies(${extension_lib_name} postgres) | |
+if(MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} contrib) | |
+endif() | |
+install(TARGETS ${extension_lib_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.1.sql | |
+ ${extension_name}--1.0--1.1.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(regress_files xml2) | |
+CONTRIB_REGRESS_CHECK(${extension_name} "" "${regress_files}") | |
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1791e0dac5 | |
--- /dev/null | |
+++ b/src/CMakeLists.txt | |
@@ -0,0 +1,91 @@ | |
+include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+ | |
+set(gen_errorcodes_depend | |
+ ${PROJECT_SOURCE_DIR}/src/backend/utils/errcodes.txt | |
+ ${PROJECT_SOURCE_DIR}/src/backend/utils/generate-errcodes.pl | |
+) | |
+set(gen_errorcodes_output | |
+ ${PROJECT_SOURCE_DIR}/src/include/utils/errcodes.h | |
+) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY ${gen_errorcodes_depend} | |
+ DEPENDS ${gen_errorcodes_depend} | |
+ OUTPUT ${gen_errorcodes_output} | |
+ COMMAND ${PERL_EXECUTABLE} generate-errcodes.pl errcodes.txt > ${gen_errorcodes_output} | |
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/backend/utils | |
+) | |
+ | |
+add_custom_target(gen_errorcodes DEPENDS ${gen_errorcodes_output}) | |
+ | |
+set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${gen_errorcodes_output}) | |
+ | |
+set(PARSER_SCAN_FLEX_FLAGS, "-Cfe -p -p") | |
+bison_target(PARSER_GRAM | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.y | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.c | |
+) | |
+flex_target(PARSER_SCAN | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/scan.l | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/scan.c | |
+ ${PARSER_SCAN_FLEX_FLAGS} | |
+) | |
+ | |
+set_source_files_properties(${BISON_PARSER_GRAM_OUTPUTS} | |
+ PROPERTIES OBJECT_DEPENDS ${FLEX_PARSER_SCAN_OUTPUTS}) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY ${BISON_PARSER_GRAM_OUTPUTS} | |
+ OUTPUT ${PROJECT_SOURCE_DIR}/src/include/parser/gram.h | |
+ COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.h ${PROJECT_SOURCE_DIR}/src/include/parser/gram.h | |
+) | |
+ | |
+add_custom_target(generate_parser_gram_h DEPENDS ${PROJECT_SOURCE_DIR}/src/include/parser/gram.h) | |
+ | |
+add_subdirectory(include) | |
+add_subdirectory(port) | |
+add_subdirectory(common) | |
+add_subdirectory(fe_utils) | |
+add_subdirectory(interfaces/libpq) | |
+add_subdirectory(interfaces/ecpg/pgtypeslib) | |
+add_subdirectory(interfaces/ecpg/ecpglib) | |
+add_subdirectory(interfaces/ecpg/compatlib) | |
+add_subdirectory(interfaces/ecpg/include) | |
+add_subdirectory(interfaces/ecpg/preproc) | |
+add_subdirectory(interfaces/ecpg/test) | |
+ | |
+add_subdirectory(backend) | |
+add_subdirectory(timezone) | |
+add_subdirectory(test/regress) | |
+add_subdirectory(test/isolation) | |
+add_subdirectory(test/modules) | |
+add_subdirectory(test/recovery) | |
+add_subdirectory(test/ssl) | |
+ | |
+add_subdirectory(pl/plpgsql/src) | |
+if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND) | |
+ add_subdirectory(pl/plpython) | |
+endif() | |
+if(PERLLIBS_FOUND) | |
+ add_subdirectory(pl/plperl) | |
+endif() | |
+if(TCL_FOUND) | |
+ add_subdirectory(pl/tcl) | |
+endif() | |
+ | |
+add_subdirectory(bin/initdb) | |
+add_subdirectory(bin/pg_archivecleanup) | |
+add_subdirectory(bin/pg_basebackup) | |
+add_subdirectory(bin/pg_config) | |
+add_subdirectory(bin/pg_controldata) | |
+add_subdirectory(bin/pg_ctl) | |
+add_subdirectory(bin/pg_dump) | |
+add_subdirectory(bin/pg_resetwal) | |
+add_subdirectory(bin/pg_rewind) | |
+add_subdirectory(bin/pg_test_fsync) | |
+add_subdirectory(bin/pg_test_timing) | |
+add_subdirectory(bin/pg_upgrade) | |
+add_subdirectory(bin/pg_waldump) | |
+add_subdirectory(bin/pgbench) | |
+add_subdirectory(bin/psql) | |
+add_subdirectory(bin/scripts) | |
diff --git a/src/backend/CMakeLists.txt b/src/backend/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..fcdf74aacd | |
--- /dev/null | |
+++ b/src/backend/CMakeLists.txt | |
@@ -0,0 +1,1175 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+set(postgres_include_catalog "${PROJECT_SOURCE_DIR}/src/include/catalog") | |
+ | |
+set(gen_fmgrtab_depend | |
+ utils/Gen_fmgrtab.pl | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/catalog/Catalog.pm | |
+ ${postgres_include_catalog}/pg_proc.h | |
+) | |
+set(gen_fmgrtab_output | |
+ ${PROJECT_SOURCE_DIR}/src/include/utils/fmgroids.h | |
+ ${PROJECT_SOURCE_DIR}/src/include/utils/fmgrprotos.h | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/fmgrtab.c | |
+) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY ${gen_fmgrtab_depend} | |
+ OUTPUT ${gen_fmgrtab_output} | |
+ COMMAND ${PERL_EXECUTABLE} -I${CMAKE_CURRENT_SOURCE_DIR}/catalog Gen_fmgrtab.pl ${postgres_include_catalog}/pg_proc.h | |
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/utils/fmgroids.h ${PROJECT_SOURCE_DIR}/src/include/utils/fmgroids.h | |
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/utils/fmgrprotos.h ${PROJECT_SOURCE_DIR}/src/include/utils/fmgrprotos.h | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utils | |
+) | |
+ | |
+set(gen_probe_depend | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/Gen_dummy_probes.sed | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/probes.d | |
+) | |
+ | |
+set(gen_probe_output | |
+ ${PROJECT_SOURCE_DIR}/src/include/utils/probes.h | |
+) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY ${gen_probe_depend} | |
+ OUTPUT ${gen_probe_output} | |
+ COMMAND ${SED_EXECUTABLE} -f Gen_dummy_probes.sed probes.d > ${gen_probe_output} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utils | |
+) | |
+ | |
+flex_target(GUC_SCANNER utils/misc/guc-file.l ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/guc-file.c) | |
+set_source_files_properties(utils/misc/guc.c PROPERTIES OBJECT_DEPENDS ${FLEX_GUC_SCANNER_OUTPUTS}) | |
+ | |
+if(WIN32 OR MINGW) | |
+ set(dynloader_SRCS port/dynloader/win32.c) | |
+ set(dynloader_H port/dynloader/win32.h) | |
+elseif(CYGWIN) | |
+ set(dynloader_SRCS port/dynloader/cygwin.c) | |
+ set(dynloader_H port/dynloader/cygwin.h) | |
+elseif(APPLE) | |
+ set(dynloader_SRCS port/dynloader/darwin.c) | |
+ set(dynloader_H port/dynloader/darwin.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") | |
+ set(dynloader_SRCS port/dynloader/linux.c) | |
+ set(dynloader_H port/dynloader/linux.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "HP-UX") | |
+ set(dynloader_SRCS port/dynloader/hpux.c) | |
+ set(dynloader_H port/dynloader/hpux.h) | |
+#TODO: FreeBSD, OpenBSD, NetBSD is equal loader | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") | |
+ set(dynloader_SRCS port/dynloader/freebsd.c) | |
+ set(dynloader_H port/dynloader/freebsd.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | |
+ set(dynloader_SRCS port/dynloader/openbsd.c) | |
+ set(dynloader_H port/dynloader/openbsd.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD") | |
+ set(dynloader_SRCS port/dynloader/netbsd.c) | |
+ set(dynloader_H port/dynloader/netbsd.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS") | |
+ set(dynloader_SRCS port/dynloader/solaris.c) | |
+ set(dynloader_H port/dynloader/solaris.h) | |
+elseif(CMAKE_SYSTEM_NAME STREQUAL "AIX") | |
+ set(dynloader_SRCS port/dynloader/aix.c) | |
+ set(dynloader_H port/dynloader/aix.h) | |
+else(WIN32 OR MINGW) | |
+ message(WARNING "${CMAKE_SYSTEM_NAME}") | |
+endif(WIN32 OR MINGW) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${dynloader_H}" | |
+ OUTPUT "${PROJECT_SOURCE_DIR}/src/include/dynloader.h" | |
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${dynloader_H} ${PROJECT_SOURCE_DIR}/src/include/dynloader.h | |
+) | |
+ | |
+#Need for bin/pg_xlogdump | |
+set(access_rmgrdesc_SRC | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/brindesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/clogdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/committsdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/dbasedesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/gindesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/gistdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/hashdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/heapdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/mxactdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/nbtdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/relmapdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/replorigindesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/seqdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/smgrdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/spgdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/standbydesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/tblspcdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/xactdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/xlogdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/genericdesc.c | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/access/rmgrdesc/logicalmsgdesc.c | |
+) | |
+ | |
+set(rmgrdesc_SRC | |
+ ${access_rmgrdesc_SRC} | |
+ PARENT_SCOPE | |
+) | |
+ | |
+set(access_SRCS | |
+ ${gen_fmgrtab_output} | |
+ ${gen_probe_output} | |
+ ${PROJECT_SOURCE_DIR}/src/include/dynloader.h | |
+ ${access_rmgrdesc_SRC} | |
+ | |
+ access/brin/brin.c | |
+ access/brin/brin_pageops.c | |
+ access/brin/brin_revmap.c | |
+ access/brin/brin_tuple.c | |
+ access/brin/brin_xlog.c | |
+ access/brin/brin_minmax.c | |
+ access/brin/brin_inclusion.c | |
+ access/brin/brin_validate.c | |
+ | |
+ access/common/bufmask.c | |
+ access/common/heaptuple.c | |
+ access/common/indextuple.c | |
+ access/common/printtup.c | |
+ access/common/printsimple.c | |
+ access/common/reloptions.c | |
+ access/common/scankey.c | |
+ access/common/tupconvert.c | |
+ access/common/tupdesc.c | |
+ | |
+ access/gin/ginutil.c | |
+ access/gin/gininsert.c | |
+ access/gin/ginxlog.c | |
+ access/gin/ginentrypage.c | |
+ access/gin/gindatapage.c | |
+ access/gin/ginbtree.c | |
+ access/gin/ginscan.c | |
+ access/gin/ginget.c | |
+ access/gin/ginvacuum.c | |
+ access/gin/ginarrayproc.c | |
+ access/gin/ginbulk.c | |
+ access/gin/ginfast.c | |
+ access/gin/ginpostinglist.c | |
+ access/gin/ginlogic.c | |
+ access/gin/ginvalidate.c | |
+ | |
+ access/gist/gist.c | |
+ access/gist/gistutil.c | |
+ access/gist/gistxlog.c | |
+ access/gist/gistvacuum.c | |
+ access/gist/gistget.c | |
+ access/gist/gistscan.c | |
+ access/gist/gistproc.c | |
+ access/gist/gistsplit.c | |
+ access/gist/gistbuild.c | |
+ access/gist/gistbuildbuffers.c | |
+ access/gist/gistvalidate.c | |
+ | |
+ access/hash/hash.c | |
+ access/hash/hashfunc.c | |
+ access/hash/hashinsert.c | |
+ access/hash/hashovfl.c | |
+ access/hash/hashpage.c | |
+ access/hash/hashsearch.c | |
+ access/hash/hashsort.c | |
+ access/hash/hashutil.c | |
+ access/hash/hashvalidate.c | |
+ access/hash/hash_xlog.c | |
+ | |
+ access/heap/heapam.c | |
+ access/heap/hio.c | |
+ access/heap/pruneheap.c | |
+ access/heap/rewriteheap.c | |
+ access/heap/syncscan.c | |
+ access/heap/tuptoaster.c | |
+ access/heap/visibilitymap.c | |
+ | |
+ access/index/genam.c | |
+ access/index/indexam.c | |
+ access/index/amapi.c | |
+ access/index/amvalidate.c | |
+ | |
+ access/nbtree/nbtcompare.c | |
+ access/nbtree/nbtinsert.c | |
+ access/nbtree/nbtpage.c | |
+ access/nbtree/nbtree.c | |
+ access/nbtree/nbtsearch.c | |
+ access/nbtree/nbtutils.c | |
+ access/nbtree/nbtsort.c | |
+ access/nbtree/nbtxlog.c | |
+ access/nbtree/nbtvalidate.c | |
+ | |
+ access/spgist/spgutils.c | |
+ access/spgist/spginsert.c | |
+ access/spgist/spgscan.c | |
+ access/spgist/spgvacuum.c | |
+ access/spgist/spgdoinsert.c | |
+ access/spgist/spgxlog.c | |
+ access/spgist/spgtextproc.c | |
+ access/spgist/spgquadtreeproc.c | |
+ access/spgist/spgkdtreeproc.c | |
+ access/spgist/spgvalidate.c | |
+ | |
+ access/tablesample/bernoulli.c | |
+ access/tablesample/system.c | |
+ access/tablesample/tablesample.c | |
+ | |
+ access/transam/clog.c | |
+ access/transam/commit_ts.c | |
+ access/transam/multixact.c | |
+ access/transam/generic_xlog.c | |
+ access/transam/parallel.c | |
+ access/transam/rmgr.c | |
+ access/transam/slru.c | |
+ access/transam/subtrans.c | |
+ access/transam/timeline.c | |
+ access/transam/transam.c | |
+ access/transam/twophase.c | |
+ access/transam/twophase_rmgr.c | |
+ access/transam/varsup.c | |
+ access/transam/xact.c | |
+ access/transam/xlog.c | |
+ access/transam/xlogarchive.c | |
+ access/transam/xlogfuncs.c | |
+ access/transam/xloginsert.c | |
+ access/transam/xlogreader.c | |
+ access/transam/xlogutils.c | |
+) | |
+ | |
+bison_target(BOOTSTRAP_PARSER bootstrap/bootparse.y ${CMAKE_CURRENT_SOURCE_DIR}/bootstrap/bootparse.c) | |
+flex_target(BOOTSTRAP_SCANNER bootstrap/bootscanner.l ${CMAKE_CURRENT_SOURCE_DIR}/bootstrap/bootscanner.c) | |
+add_flex_bison_dependency(BOOTSTRAP_SCANNER BOOTSTRAP_PARSER) | |
+ | |
+set_source_files_properties(bootstrap/bootparse.c PROPERTIES OBJECT_DEPENDS ${FLEX_BOOTSTRAP_SCANNER_OUTPUTS}) | |
+ | |
+set(bootstrap_SRCS | |
+ bootstrap/bootstrap.c | |
+ ${BISON_BOOTSTRAP_PARSER_OUTPUTS} | |
+) | |
+ | |
+set_source_files_properties( | |
+ ${BISON_BOOTSTRAP_PARSER_OUTPUTS} | |
+ PROPERTIES GENERATED TRUE | |
+) | |
+ | |
+set(POSTGRES_BKI_SRCS | |
+ ${postgres_include_catalog}/pg_proc.h | |
+ ${postgres_include_catalog}/pg_type.h | |
+ ${postgres_include_catalog}/pg_attribute.h | |
+ ${postgres_include_catalog}/pg_class.h | |
+ ${postgres_include_catalog}/pg_attrdef.h | |
+ ${postgres_include_catalog}/pg_constraint.h | |
+ ${postgres_include_catalog}/pg_inherits.h | |
+ ${postgres_include_catalog}/pg_index.h | |
+ ${postgres_include_catalog}/pg_operator.h | |
+ ${postgres_include_catalog}/pg_opfamily.h | |
+ ${postgres_include_catalog}/pg_opclass.h | |
+ ${postgres_include_catalog}/pg_am.h | |
+ ${postgres_include_catalog}/pg_amop.h | |
+ ${postgres_include_catalog}/pg_amproc.h | |
+ ${postgres_include_catalog}/pg_language.h | |
+ ${postgres_include_catalog}/pg_largeobject_metadata.h | |
+ ${postgres_include_catalog}/pg_largeobject.h | |
+ ${postgres_include_catalog}/pg_aggregate.h | |
+ ${postgres_include_catalog}/pg_statistic.h | |
+ ${postgres_include_catalog}/pg_rewrite.h | |
+ ${postgres_include_catalog}/pg_trigger.h | |
+ ${postgres_include_catalog}/pg_event_trigger.h | |
+ ${postgres_include_catalog}/pg_description.h | |
+ ${postgres_include_catalog}/pg_cast.h | |
+ ${postgres_include_catalog}/pg_enum.h | |
+ ${postgres_include_catalog}/pg_namespace.h | |
+ ${postgres_include_catalog}/pg_conversion.h | |
+ ${postgres_include_catalog}/pg_depend.h | |
+ ${postgres_include_catalog}/pg_database.h | |
+ ${postgres_include_catalog}/pg_db_role_setting.h | |
+ ${postgres_include_catalog}/pg_tablespace.h | |
+ ${postgres_include_catalog}/pg_pltemplate.h | |
+ ${postgres_include_catalog}/pg_authid.h | |
+ ${postgres_include_catalog}/pg_auth_members.h | |
+ ${postgres_include_catalog}/pg_shdepend.h | |
+ ${postgres_include_catalog}/pg_shdescription.h | |
+ ${postgres_include_catalog}/pg_ts_config.h | |
+ ${postgres_include_catalog}/pg_ts_config_map.h | |
+ ${postgres_include_catalog}/pg_ts_dict.h | |
+ ${postgres_include_catalog}/pg_ts_parser.h | |
+ ${postgres_include_catalog}/pg_ts_template.h | |
+ ${postgres_include_catalog}/pg_extension.h | |
+ ${postgres_include_catalog}/pg_foreign_data_wrapper.h | |
+ ${postgres_include_catalog}/pg_foreign_server.h | |
+ ${postgres_include_catalog}/pg_user_mapping.h | |
+ ${postgres_include_catalog}/pg_foreign_table.h | |
+ ${postgres_include_catalog}/pg_policy.h | |
+ ${postgres_include_catalog}/pg_replication_origin.h | |
+ ${postgres_include_catalog}/pg_default_acl.h | |
+ ${postgres_include_catalog}/pg_init_privs.h | |
+ ${postgres_include_catalog}/pg_seclabel.h | |
+ ${postgres_include_catalog}/pg_shseclabel.h | |
+ ${postgres_include_catalog}/pg_statistic_ext.h | |
+ ${postgres_include_catalog}/pg_subscription_rel.h | |
+ ${postgres_include_catalog}/pg_collation.h | |
+ ${postgres_include_catalog}/pg_partitioned_table.h | |
+ ${postgres_include_catalog}/pg_range.h | |
+ ${postgres_include_catalog}/pg_transform.h | |
+ ${postgres_include_catalog}/pg_sequence.h | |
+ ${postgres_include_catalog}/pg_publication.h | |
+ ${postgres_include_catalog}/pg_publication_rel.h | |
+ ${postgres_include_catalog}/pg_subscription.h | |
+ ${postgres_include_catalog}/toasting.h | |
+ ${postgres_include_catalog}/indexing.h | |
+) | |
+ | |
+set(catalog_SRCS | |
+ catalog/catalog.c | |
+ catalog/dependency.c | |
+ catalog/heap.c | |
+ catalog/index.c | |
+ catalog/indexing.c | |
+ catalog/namespace.c | |
+ catalog/aclchk.c | |
+ catalog/objectaccess.c | |
+ catalog/objectaddress.c | |
+ catalog/pg_aggregate.c | |
+ catalog/pg_collation.c | |
+ catalog/pg_constraint.c | |
+ catalog/pg_conversion.c | |
+ catalog/pg_depend.c | |
+ catalog/pg_enum.c | |
+ catalog/pg_inherits.c | |
+ catalog/pg_largeobject.c | |
+ catalog/pg_namespace.c | |
+ catalog/pg_operator.c | |
+ catalog/pg_proc.c | |
+ catalog/pg_publication.c | |
+ catalog/pg_subscription.c | |
+ catalog/pg_range.c | |
+ catalog/pg_db_role_setting.c | |
+ catalog/pg_shdepend.c | |
+ catalog/pg_type.c | |
+ catalog/storage.c | |
+ catalog/toasting.c | |
+ catalog/partition.c | |
+) | |
+ | |
+set(catalog_include | |
+ "-I${PROJECT_SOURCE_DIR}/src/backend/catalog" | |
+ "-I${PROJECT_SOURCE_DIR}/src/include/catalog" | |
+) | |
+ | |
+add_custom_command( | |
+ DEPENDS ${POSTGRES_BKI_SRCS} | |
+ OUTPUT ${PROJECT_SOURCE_DIR}/src/include/catalog/schemapg.h | |
+ COMMAND ${PERL_EXECUTABLE} -I${CMAKE_CURRENT_SOURCE_DIR}/catalog genbki.pl ${catalog_include} --set-version=${POSTGRES_MAJOR_VERSION} ${POSTGRES_BKI_SRCS} | |
+ COMMAND ${CMAKE_COMMAND} -E copy schemapg.h ${PROJECT_SOURCE_DIR}/src/include/catalog/schemapg.h | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/catalog | |
+) | |
+ | |
+set_source_files_properties(utils/cache/relcache.c | |
+ PROPERTIES OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/src/include/catalog/schemapg.h) | |
+ | |
+set(commands_SRCS | |
+ commands/aggregatecmds.c | |
+ commands/alter.c | |
+ commands/analyze.c | |
+ commands/async.c | |
+ commands/amcmds.c | |
+ commands/cluster.c | |
+ commands/comment.c | |
+ commands/collationcmds.c | |
+ commands/constraint.c | |
+ commands/conversioncmds.c | |
+ commands/copy.c | |
+ commands/createas.c | |
+ commands/dbcommands.c | |
+ commands/define.c | |
+ commands/discard.c | |
+ commands/dropcmds.c | |
+ commands/event_trigger.c | |
+ commands/explain.c | |
+ commands/extension.c | |
+ commands/foreigncmds.c | |
+ commands/functioncmds.c | |
+ commands/indexcmds.c | |
+ commands/lockcmds.c | |
+ commands/matview.c | |
+ commands/operatorcmds.c | |
+ commands/opclasscmds.c | |
+ commands/policy.c | |
+ commands/portalcmds.c | |
+ commands/prepare.c | |
+ commands/proclang.c | |
+ commands/publicationcmds.c | |
+ commands/schemacmds.c | |
+ commands/seclabel.c | |
+ commands/sequence.c | |
+ commands/statscmds.c | |
+ commands/subscriptioncmds.c | |
+ commands/tablecmds.c | |
+ commands/tablespace.c | |
+ commands/trigger.c | |
+ commands/tsearchcmds.c | |
+ commands/typecmds.c | |
+ commands/user.c | |
+ commands/vacuum.c | |
+ commands/vacuumlazy.c | |
+ commands/variable.c | |
+ commands/view.c | |
+) | |
+ | |
+set(executor_SRCS | |
+ executor/execAmi.c | |
+ executor/execCurrent.c | |
+ executor/execGrouping.c | |
+ executor/execIndexing.c | |
+ executor/execJunk.c | |
+ executor/execMain.c | |
+ executor/execProcnode.c | |
+ executor/execParallel.c | |
+ executor/execScan.c | |
+ executor/execTuples.c | |
+ executor/execUtils.c | |
+ executor/execExpr.c | |
+ executor/execExprInterp.c | |
+ executor/execReplication.c | |
+ executor/execSRF.c | |
+ executor/functions.c | |
+ executor/instrument.c | |
+ executor/tqueue.c | |
+ executor/nodeAppend.c | |
+ executor/nodeAgg.c | |
+ executor/nodeBitmapAnd.c | |
+ executor/nodeBitmapOr.c | |
+ executor/nodeBitmapHeapscan.c | |
+ executor/nodeBitmapIndexscan.c | |
+ executor/nodeCustom.c | |
+ executor/nodeHash.c | |
+ executor/nodeHashjoin.c | |
+ executor/nodeIndexscan.c | |
+ executor/nodeIndexonlyscan.c | |
+ executor/nodeLimit.c | |
+ executor/nodeLockRows.c | |
+ executor/nodeMaterial.c | |
+ executor/nodeMergeAppend.c | |
+ executor/nodeMergejoin.c | |
+ executor/nodeModifyTable.c | |
+ executor/nodeNestloop.c | |
+ executor/nodeFunctionscan.c | |
+ executor/nodeRecursiveunion.c | |
+ executor/nodeResult.c | |
+ executor/nodeSamplescan.c | |
+ executor/nodeSeqscan.c | |
+ executor/nodeSetOp.c | |
+ executor/nodeSort.c | |
+ executor/nodeUnique.c | |
+ executor/nodeValuesscan.c | |
+ executor/nodeCtescan.c | |
+ executor/nodeWorktablescan.c | |
+ executor/nodeGroup.c | |
+ executor/nodeGather.c | |
+ executor/nodeSubplan.c | |
+ executor/nodeSubqueryscan.c | |
+ executor/nodeTidscan.c | |
+ executor/nodeForeignscan.c | |
+ executor/nodeWindowAgg.c | |
+ executor/nodeGatherMerge.c | |
+ executor/nodeNamedtuplestorescan.c | |
+ executor/nodeProjectSet.c | |
+ executor/nodeTableFuncscan.c | |
+ executor/tstoreReceiver.c | |
+ executor/spi.c | |
+) | |
+ | |
+set(lib_SRCS | |
+ lib/binaryheap.c | |
+ lib/bipartite_match.c | |
+ lib/hyperloglog.c | |
+ lib/ilist.c | |
+ lib/pairingheap.c | |
+ lib/rbtree.c | |
+ lib/stringinfo.c | |
+ lib/knapsack.c | |
+) | |
+ | |
+if(OPENSSL_FOUND) | |
+ set(libpq_ssl_SRCS libpq/be-secure-openssl.c) | |
+endif(OPENSSL_FOUND) | |
+ | |
+set(libpq_SRCS | |
+ libpq/be-fsstubs.c | |
+ libpq/be-secure.c | |
+ libpq/auth.c | |
+ libpq/crypt.c | |
+ libpq/hba.c | |
+ libpq/pqcomm.c | |
+ libpq/pqformat.c | |
+ libpq/pqmq.c | |
+ libpq/pqsignal.c | |
+ libpq/ifaddr.c | |
+ libpq/auth-scram.c | |
+ ${libpq_ssl_SRCS} | |
+) | |
+ | |
+set(utils_SRCS | |
+ utils/error/assert.c | |
+ utils/error/elog.c | |
+ utils/cache/attoptcache.c | |
+ utils/cache/catcache.c | |
+ utils/cache/evtcache.c | |
+ utils/cache/inval.c | |
+ utils/cache/plancache.c | |
+ utils/cache/relcache.c | |
+ utils/cache/relmapper.c | |
+ utils/cache/relfilenodemap.c | |
+ utils/cache/spccache.c | |
+ utils/cache/syscache.c | |
+ utils/cache/lsyscache.c | |
+ utils/cache/typcache.c | |
+ utils/cache/ts_cache.c | |
+ utils/mmgr/aset.c | |
+ utils/mmgr/dsa.c | |
+ utils/mmgr/mcxt.c | |
+ utils/mmgr/portalmem.c | |
+ utils/mmgr/freepage.c | |
+ utils/mmgr/memdebug.c | |
+ utils/mmgr/slab.c | |
+ utils/adt/acl.c | |
+ utils/adt/arrayfuncs.c | |
+ utils/adt/array_expanded.c | |
+ utils/adt/array_selfuncs.c | |
+ utils/adt/array_typanalyze.c | |
+ utils/adt/array_userfuncs.c | |
+ utils/adt/arrayutils.c | |
+ utils/adt/ascii.c | |
+ utils/adt/bool.c | |
+ utils/adt/cash.c | |
+ utils/adt/char.c | |
+ utils/adt/date.c | |
+ utils/adt/datetime.c | |
+ utils/adt/datum.c | |
+ utils/adt/dbsize.c | |
+ utils/adt/domains.c | |
+ utils/adt/encode.c | |
+ utils/adt/enum.c | |
+ utils/adt/expandeddatum.c | |
+ utils/adt/float.c | |
+ utils/adt/format_type.c | |
+ utils/adt/formatting.c | |
+ utils/adt/genfile.c | |
+ utils/adt/geo_ops.c | |
+ utils/adt/geo_selfuncs.c | |
+ utils/adt/geo_spgist.c | |
+ utils/adt/inet_cidr_ntop.c | |
+ utils/adt/inet_net_pton.c | |
+ utils/adt/int.c | |
+ utils/adt/int8.c | |
+ utils/adt/json.c | |
+ utils/adt/jsonb.c | |
+ utils/adt/jsonb_gin.c | |
+ utils/adt/jsonb_op.c | |
+ utils/adt/jsonb_util.c | |
+ utils/adt/jsonfuncs.c | |
+ utils/adt/like.c | |
+ #utils/adt/like_match.c | |
+ utils/adt/lockfuncs.c | |
+ utils/adt/mac.c | |
+ utils/adt/misc.c | |
+ utils/adt/nabstime.c | |
+ utils/adt/name.c | |
+ utils/adt/network.c | |
+ utils/adt/network_gist.c | |
+ utils/adt/network_selfuncs.c | |
+ utils/adt/numeric.c | |
+ utils/adt/numutils.c | |
+ utils/adt/oid.c | |
+ utils/adt/oracle_compat.c | |
+ utils/adt/orderedsetaggs.c | |
+ utils/adt/pg_locale.c | |
+ utils/adt/pg_lsn.c | |
+ utils/adt/pg_upgrade_support.c | |
+ utils/adt/pgstatfuncs.c | |
+ utils/adt/pseudotypes.c | |
+ utils/adt/quote.c | |
+ utils/adt/rangetypes.c | |
+ utils/adt/rangetypes_gist.c | |
+ utils/adt/rangetypes_selfuncs.c | |
+ utils/adt/rangetypes_spgist.c | |
+ utils/adt/rangetypes_typanalyze.c | |
+ utils/adt/regexp.c | |
+ utils/adt/regproc.c | |
+ utils/adt/ri_triggers.c | |
+ utils/adt/rowtypes.c | |
+ utils/adt/ruleutils.c | |
+ utils/adt/selfuncs.c | |
+ utils/adt/tid.c | |
+ utils/adt/timestamp.c | |
+ utils/adt/trigfuncs.c | |
+ utils/adt/tsginidx.c | |
+ utils/adt/tsgistidx.c | |
+ utils/adt/tsquery.c | |
+ utils/adt/tsquery_cleanup.c | |
+ utils/adt/tsquery_gist.c | |
+ utils/adt/tsquery_op.c | |
+ utils/adt/tsquery_rewrite.c | |
+ utils/adt/tsquery_util.c | |
+ utils/adt/tsrank.c | |
+ utils/adt/tsvector.c | |
+ utils/adt/tsvector_op.c | |
+ utils/adt/tsvector_parser.c | |
+ utils/adt/txid.c | |
+ utils/adt/uuid.c | |
+ utils/adt/varbit.c | |
+ utils/adt/varchar.c | |
+ utils/adt/varlena.c | |
+ utils/adt/amutils.c | |
+ utils/adt/version.c | |
+ utils/adt/windowfuncs.c | |
+ utils/adt/xid.c | |
+ utils/adt/xml.c | |
+ utils/adt/network_spgist.c | |
+ utils/adt/mac8.c | |
+ utils/fmgr/dfmgr.c | |
+ utils/fmgr/fmgr.c | |
+ utils/fmgr/funcapi.c | |
+ utils/hash/dynahash.c | |
+ utils/hash/hashfn.c | |
+ utils/hash/pg_crc.c | |
+ utils/init/globals.c | |
+ utils/init/miscinit.c | |
+ utils/init/postinit.c | |
+ utils/resowner/resowner.c | |
+ utils/sort/logtape.c | |
+ utils/sort/sortsupport.c | |
+ utils/sort/tuplesort.c | |
+ utils/sort/tuplestore.c | |
+ utils/time/combocid.c | |
+ utils/time/tqual.c | |
+ utils/time/snapmgr.c | |
+ utils/misc/guc.c | |
+ utils/misc/help_config.c | |
+ utils/misc/pg_rusage.c | |
+ utils/misc/pg_controldata.c | |
+ utils/misc/pg_config.c | |
+ utils/misc/ps_status.c | |
+ utils/misc/rls.c | |
+ utils/misc/sampling.c | |
+ utils/misc/superuser.c | |
+ utils/misc/timeout.c | |
+ utils/misc/tzparser.c | |
+ utils/misc/backend_random.c | |
+ utils/misc/queryenvironment.c | |
+ utils/mb/encnames.c | |
+ utils/mb/conv.c | |
+ utils/mb/mbutils.c | |
+ utils/mb/wchar.c | |
+ utils/mb/wstrcmp.c | |
+ utils/mb/wstrncmp.c | |
+) | |
+ | |
+set(nodes_SRCS | |
+ nodes/nodeFuncs.c | |
+ nodes/nodes.c | |
+ nodes/list.c | |
+ nodes/bitmapset.c | |
+ nodes/tidbitmap.c | |
+ nodes/copyfuncs.c | |
+ nodes/equalfuncs.c | |
+ nodes/makefuncs.c | |
+ nodes/outfuncs.c | |
+ nodes/readfuncs.c | |
+ nodes/print.c | |
+ nodes/read.c | |
+ nodes/params.c | |
+ nodes/value.c | |
+ nodes/extensible.c | |
+) | |
+ | |
+set(optimizer_SRCS | |
+ optimizer/geqo/geqo_copy.c | |
+ optimizer/geqo/geqo_eval.c | |
+ optimizer/geqo/geqo_main.c | |
+ optimizer/geqo/geqo_misc.c | |
+ optimizer/geqo/geqo_mutation.c | |
+ optimizer/geqo/geqo_pool.c | |
+ optimizer/geqo/geqo_random.c | |
+ optimizer/geqo/geqo_recombination.c | |
+ optimizer/geqo/geqo_selection.c | |
+ optimizer/geqo/geqo_erx.c | |
+ optimizer/geqo/geqo_pmx.c | |
+ optimizer/geqo/geqo_cx.c | |
+ optimizer/geqo/geqo_px.c | |
+ optimizer/geqo/geqo_ox1.c | |
+ optimizer/geqo/geqo_ox2.c | |
+ optimizer/path/allpaths.c | |
+ optimizer/path/clausesel.c | |
+ optimizer/path/costsize.c | |
+ optimizer/path/equivclass.c | |
+ optimizer/path/indxpath.c | |
+ optimizer/path/joinpath.c | |
+ optimizer/path/joinrels.c | |
+ optimizer/path/pathkeys.c | |
+ optimizer/path/tidpath.c | |
+ optimizer/plan/analyzejoins.c | |
+ optimizer/plan/createplan.c | |
+ optimizer/plan/initsplan.c | |
+ optimizer/plan/planagg.c | |
+ optimizer/plan/planmain.c | |
+ optimizer/plan/planner.c | |
+ optimizer/plan/setrefs.c | |
+ optimizer/plan/subselect.c | |
+ optimizer/prep/prepjointree.c | |
+ optimizer/prep/prepqual.c | |
+ optimizer/prep/preptlist.c | |
+ optimizer/prep/prepunion.c | |
+ optimizer/util/clauses.c | |
+ optimizer/util/joininfo.c | |
+ optimizer/util/orclauses.c | |
+ optimizer/util/pathnode.c | |
+ optimizer/util/placeholder.c | |
+ optimizer/util/plancat.c | |
+ optimizer/util/predtest.c | |
+ optimizer/util/relnode.c | |
+ optimizer/util/restrictinfo.c | |
+ optimizer/util/tlist.c | |
+ optimizer/util/var.c | |
+) | |
+ | |
+set(rewrite_SRCS | |
+ rewrite/rewriteRemove.c | |
+ rewrite/rewriteDefine.c | |
+ rewrite/rewriteHandler.c | |
+ rewrite/rewriteManip.c | |
+ rewrite/rewriteSupport.c | |
+ rewrite/rowsecurity.c | |
+) | |
+ | |
+set(parser_SRCS | |
+ parser/analyze.c | |
+ #parser/gram.c | |
+ parser/parser.c | |
+ parser/parse_agg.c | |
+ parser/parse_clause.c | |
+ parser/parse_coerce.c | |
+ parser/parse_collate.c | |
+ parser/parse_cte.c | |
+ parser/parse_expr.c | |
+ parser/parse_func.c | |
+ parser/parse_node.c | |
+ parser/parse_oper.c | |
+ parser/parse_param.c | |
+ parser/parse_relation.c | |
+ parser/parse_target.c | |
+ parser/parse_type.c | |
+ parser/parse_utilcmd.c | |
+ parser/parse_enr.c | |
+ parser/scansup.c | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.c | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/scan.c | |
+) | |
+ | |
+set_source_files_properties( | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.c | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/scan.c | |
+ PROPERTIES GENERATED TRUE | |
+) | |
+ | |
+set(tcop_SRCS | |
+ tcop/dest.c | |
+ tcop/fastpath.c | |
+ tcop/postgres.c | |
+ tcop/pquery.c | |
+ tcop/utility.c | |
+) | |
+ | |
+set(tsearch_SRCS | |
+ tsearch/ts_locale.c | |
+ tsearch/ts_parse.c | |
+ tsearch/wparser.c | |
+ tsearch/wparser_def.c | |
+ tsearch/dict.c | |
+ tsearch/dict_simple.c | |
+ tsearch/dict_synonym.c | |
+ tsearch/dict_thesaurus.c | |
+ tsearch/dict_ispell.c | |
+ tsearch/regis.c | |
+ tsearch/spell.c | |
+ tsearch/to_tsany.c | |
+ tsearch/ts_selfuncs.c | |
+ tsearch/ts_typanalyze.c | |
+ tsearch/ts_utils.c | |
+) | |
+ | |
+install(FILES | |
+ tsearch/dicts/ispell_sample.dict | |
+ tsearch/dicts/ispell_sample.affix | |
+ tsearch/dicts/hunspell_sample.affix | |
+ tsearch/dicts/hunspell_sample_long.affix | |
+ tsearch/dicts/hunspell_sample_long.dict | |
+ tsearch/dicts/hunspell_sample_num.affix | |
+ tsearch/dicts/hunspell_sample_num.dict | |
+ tsearch/dicts/synonym_sample.syn | |
+ tsearch/dicts/thesaurus_sample.ths | |
+ DESTINATION ${PGSHAREDIR}/tsearch_data) | |
+ | |
+set(regex_SRCS | |
+ regex/regcomp.c | |
+ regex/regerror.c | |
+ regex/regexec.c | |
+ regex/regfree.c | |
+ regex/regprefix.c | |
+ regex/regexport.c | |
+) | |
+ | |
+set(postmaster_SRCS | |
+ postmaster/autovacuum.c | |
+ postmaster/bgworker.c | |
+ postmaster/bgwriter.c | |
+ postmaster/checkpointer.c | |
+ postmaster/fork_process.c | |
+ postmaster/pgarch.c | |
+ postmaster/pgstat.c | |
+ postmaster/postmaster.c | |
+ postmaster/startup.c | |
+ postmaster/syslogger.c | |
+ postmaster/walwriter.c | |
+) | |
+ | |
+if(WIN32 OR CYGWIN OR MINGW) | |
+ set(backend_port_win32_SRC | |
+ port/win32/timer.c | |
+ port/win32/socket.c | |
+ port/win32/signal.c | |
+ # I hope it is not necessary for modern MinGW | |
+ #port/win32/mingwcompat.c | |
+ port/win32/crashdump.c | |
+ ) | |
+ if(NAVE_MINIDUMP_TYPE) | |
+ set(backend_port_win32_SRC | |
+ ${backend_port_win32_SRC} | |
+ port/win32/crashdump.c | |
+ ) | |
+ endif(NAVE_MINIDUMP_TYPE) | |
+endif() | |
+ | |
+set(gen_lwlocknames_depend | |
+ ${PROJECT_SOURCE_DIR}/src/backend/storage/lmgr/generate-lwlocknames.pl | |
+ ${PROJECT_SOURCE_DIR}/src/backend/storage/lmgr/lwlocknames.txt | |
+) | |
+ | |
+set(gen_lwlocknames_output | |
+ ${PROJECT_SOURCE_DIR}/src/backend/storage/lmgr/lwlocknames.c | |
+ ${PROJECT_SOURCE_DIR}/src/backend/storage/lmgr/lwlocknames.h | |
+ ${PROJECT_SOURCE_DIR}/src/include/storage/lwlocknames.h | |
+) | |
+ | |
+ | |
+add_custom_command( | |
+ OUTPUT ${gen_lwlocknames_output} | |
+ MAIN_DEPENDENCY ${gen_lwlocknames_depend} | |
+ COMMAND ${PERL_EXECUTABLE} generate-lwlocknames.pl lwlocknames.txt | |
+ COMMAND ${CMAKE_COMMAND} -E copy lwlocknames.h ${PROJECT_SOURCE_DIR}/src/include/storage/lwlocknames.h | |
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/backend/storage/lmgr | |
+) | |
+ | |
+set(backend_port_SRCS | |
+ port/atomics.c | |
+ port/tas/${TAS} | |
+ ${backend_port_win32_SRC} | |
+ ${backend_port_darwin_SRC} | |
+ ${dynloader_SRCS} | |
+ ${SEMA_IMPLEMENTATION} | |
+ ${SHMEM_IMPLEMENTATION} | |
+) | |
+ | |
+ | |
+set(storage_SRCS | |
+ ${gen_lwlocknames_output} | |
+ storage/buffer/buf_table.c | |
+ storage/buffer/buf_init.c | |
+ storage/buffer/bufmgr.c | |
+ storage/buffer/freelist.c | |
+ storage/buffer/localbuf.c | |
+ storage/file/fd.c | |
+ storage/file/buffile.c | |
+ storage/file/copydir.c | |
+ storage/file/reinit.c | |
+ storage/freespace/freespace.c | |
+ storage/freespace/fsmpage.c | |
+ storage/freespace/indexfsm.c | |
+ storage/ipc/dsm_impl.c | |
+ storage/ipc/dsm.c | |
+ storage/ipc/ipc.c | |
+ storage/ipc/ipci.c | |
+ storage/ipc/pmsignal.c | |
+ storage/ipc/procarray.c | |
+ storage/ipc/procsignal.c | |
+ storage/ipc/shmem.c | |
+ storage/ipc/shmqueue.c | |
+ storage/ipc/shm_mq.c | |
+ storage/ipc/shm_toc.c | |
+ storage/ipc/sinval.c | |
+ storage/ipc/sinvaladt.c | |
+ storage/ipc/standby.c | |
+ storage/ipc/latch.c | |
+ storage/large_object/inv_api.c | |
+ storage/lmgr/lmgr.c # Need some for check s_lock | |
+ storage/lmgr/lock.c | |
+ storage/lmgr/proc.c | |
+ storage/lmgr/deadlock.c | |
+ storage/lmgr/lwlock.c | |
+ storage/lmgr/spin.c | |
+ storage/lmgr/s_lock.c | |
+ storage/lmgr/predicate.c | |
+ storage/lmgr/condition_variable.c | |
+ storage/page/bufpage.c | |
+ storage/page/checksum.c | |
+ storage/page/itemptr.c | |
+ storage/smgr/md.c | |
+ storage/smgr/smgr.c | |
+ storage/smgr/smgrtype.c | |
+) | |
+ | |
+if(NOT MSVC) | |
+ set_source_files_properties(storage/page/checksum.c | |
+ PROPERTIES COMPILE_FLAGS ${CFLAGS_VECTOR}) | |
+endif() | |
+bison_target(REPL_GRAM | |
+ replication/repl_gram.y | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/replication/repl_gram.c | |
+) | |
+flex_target(REPL_SCAN | |
+ replication/repl_scanner.l | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/replication/repl_scanner.c | |
+) | |
+set_source_files_properties(${BISON_REPL_GRAM_OUTPUTS} | |
+ PROPERTIES OBJECT_DEPENDS ${FLEX_REPL_SCAN_OUTPUTS}) | |
+ | |
+bison_target(SYNC_GRAM | |
+ replication/syncrep_gram.y | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/replication/syncrep_gram.c | |
+) | |
+flex_target(SYNC_SCAN | |
+ replication/syncrep_scanner.l | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/replication/syncrep_scanner.c | |
+) | |
+set_source_files_properties(${BISON_SYNC_GRAM_OUTPUTS} | |
+ PROPERTIES OBJECT_DEPENDS ${FLEX_SYNC_SCAN_OUTPUTS}) | |
+ | |
+ | |
+set(replication_SRCS | |
+ replication/walsender.c | |
+ replication/walreceiverfuncs.c | |
+ replication/walreceiver.c | |
+ replication/basebackup.c | |
+ replication/slot.c | |
+ replication/slotfuncs.c | |
+ replication/syncrep.c | |
+ replication/logical/decode.c | |
+ replication/logical/logical.c | |
+ replication/logical/logicalfuncs.c | |
+ replication/logical/reorderbuffer.c | |
+ replication/logical/origin.c | |
+ replication/logical/snapbuild.c | |
+ replication/logical/message.c | |
+ replication/logical/launcher.c | |
+ replication/logical/proto.c | |
+ replication/logical/relation.c | |
+ replication/logical/tablesync.c | |
+ replication/logical/worker.c | |
+ | |
+ ${BISON_REPL_GRAM_OUTPUTS} | |
+ ${BISON_SYNC_GRAM_OUTPUTS} | |
+) | |
+ | |
+set(timezone_SRCS | |
+ ${PROJECT_SOURCE_DIR}/src/timezone/localtime.c | |
+ ${PROJECT_SOURCE_DIR}/src/timezone/strftime.c | |
+ ${PROJECT_SOURCE_DIR}/src/timezone/pgtz.c | |
+) | |
+ | |
+set(statistics_SRCS | |
+ statistics/extended_stats.c | |
+ statistics/dependencies.c | |
+ statistics/mvdistinct.c | |
+) | |
+ | |
+add_custom_command( | |
+ OUTPUT "${PROJECT_SOURCE_DIR}/src/backend/utils/sort/qsort_tuple.c" | |
+ #MAIN_DEPENDENCY gen_qsort_tuple.pl | |
+ COMMAND ${PERL_EXECUTABLE} "gen_qsort_tuple.pl" > "${PROJECT_SOURCE_DIR}/src/backend/utils/sort/qsort_tuple.c" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utils/sort | |
+) | |
+ | |
+set_source_files_properties(utils/sort/tuplesort.c | |
+ PROPERTIES OBJECT_DEPENDS "${PROJECT_SOURCE_DIR}/src/backend/utils/sort/qsort_tuple.c") | |
+ | |
+set(postgres_SRCS | |
+ ${access_SRCS} | |
+ ${storage_SRCS} | |
+ ${bootstrap_SRCS} | |
+ ${commands_SRCS} | |
+ ${catalog_SRCS} | |
+ ${executor_SRCS} | |
+ foreign/foreign.c | |
+ ${utils_SRCS} | |
+ ${lib_SRCS} | |
+ ${libpq_SRCS} | |
+ ${nodes_SRCS} | |
+ ${optimizer_SRCS} | |
+ ${rewrite_SRCS} | |
+ ${parser_SRCS} | |
+ ${tcop_SRCS} | |
+ ${tsearch_SRCS} | |
+ ${regex_SRCS} | |
+ ${postmaster_SRCS} | |
+ ${backend_port_SRCS} | |
+ ${replication_SRCS} | |
+ ${timezone_SRCS} | |
+ ${statistics_SRCS} | |
+ main/main.c | |
+) | |
+ | |
+if(OPENSSL_FOUND) | |
+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR}) | |
+endif() | |
+if(LIBXML2_FOUND) | |
+ include_directories(BEFORE ${LIBXML2_INCLUDE_DIR}) | |
+endif() | |
+if(ICU_FOUND) | |
+ include_directories(BEFORE ${ICU_INCLUDE_DIRS}) | |
+endif() | |
+#include_directories(BEFORE | |
+# ${OPENSSL_INCLUDE_DIR} | |
+# ${LIBXML2_INCLUDE_DIR} | |
+#) | |
+ | |
+if(MSVC) | |
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:${WIN32_STACK_RLIMIT}") | |
+endif() | |
+ | |
+if(MINGW OR CYGWIN) | |
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,${WIN32_STACK_RLIMIT} -Wl,--export-all-symbols") | |
+endif() | |
+ | |
+add_executable(postgres | |
+ ${postgres_SRCS} | |
+) | |
+ | |
+target_link_libraries(postgres | |
+ pgcommon_srv | |
+ pgport_srv | |
+ pq | |
+ ${READLINE_LIBRARY} | |
+ ${CMAKE_THREAD_LIBS_INIT} | |
+ ${DL_LIBRARIES} | |
+ ${LIB_M} | |
+ ${GSS_LIBS} | |
+ ${ICU_LIBRARIES} | |
+) | |
+ | |
+if(OPENSSL_FOUND) | |
+ target_link_libraries(postgres ${OPENSSL_LIBRARIES}) | |
+endif() | |
+ | |
+if(LIBXML2_FOUND) | |
+ target_link_libraries(postgres ${LIBXML2_LIBRARIES}) | |
+endif() | |
+ | |
+if(USE_PAM) | |
+ target_link_libraries(postgres ${PAM_LIB}) | |
+endif() | |
+ | |
+if(LDAP_FOUND) | |
+ target_link_libraries(postgres ${LBER_LIBRARIES}) | |
+endif() | |
+ | |
+add_dependencies(postgres gen_errorcodes generate_parser_gram_h) | |
+ | |
+if(UNIX AND NOT APPLE) | |
+ target_link_libraries(postgres rt) | |
+endif() | |
+ | |
+ | |
+target_compile_definitions(postgres PRIVATE -DPG_KRB_SRVTAB="${PG_KRB_SRVTAB}") | |
+ | |
+if(WIN32) | |
+ target_compile_definitions(postgres PRIVATE -DBUILDING_DLL -DEXEC_BACKEND) | |
+endif() | |
+ | |
+if(MINGW) | |
+ set_target_properties(postgres PROPERTIES LINK_FLAGS -Wl,--out-implib=libpostgres.dll.a) | |
+endif() | |
+ | |
+set_target_properties(postgres PROPERTIES ENABLE_EXPORTS 1) | |
+set_target_properties(postgres PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) | |
+#Realy need? | |
+add_custom_target(duplicate_oids | |
+ COMMAND ${PERL_EXECUTABLE} ./duplicate_oids | |
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/include/catalog | |
+) | |
+ | |
+add_library(pqwalreceiver ${PLUGIN_TYPE} | |
+ ${PROJECT_SOURCE_DIR}/src/include/storage/lwlocknames.h | |
+ ${PROJECT_SOURCE_DIR}/src/include/utils/fmgrprotos.h | |
+ replication/libpqwalreceiver/libpqwalreceiver.c | |
+ ${backend_port_win32_SRC} | |
+ ${backend_port_darwin_SRC} | |
+) | |
+set_target_properties(pqwalreceiver PROPERTIES PREFIX "lib") | |
+ | |
+add_library(pgoutput ${PLUGIN_TYPE} | |
+ ${gen_lwlocknames_output} | |
+ replication/pgoutput/pgoutput.c | |
+ ${backend_port_win32_SRC} | |
+ ${backend_port_darwin_SRC} | |
+) | |
+ | |
+if(MSVC) | |
+ gen_def(pqwalreceiver) | |
+ gen_def(pgoutput) | |
+ gen_def(postgres) | |
+endif() | |
+ | |
+if(WIN32) | |
+ target_link_libraries(pqwalreceiver postgres) | |
+ target_link_libraries(pgoutput postgres) | |
+endif() | |
+ | |
+#Strange logic | |
+if(MINGW) | |
+ target_compile_definitions(pqwalreceiver PRIVATE -DBUILDING_DLL) | |
+ target_compile_definitions(pgoutput PRIVATE -DBUILDING_DLL) | |
+endif() | |
+ | |
+target_link_libraries(pqwalreceiver pq) | |
+target_link_libraries(pgoutput pq) | |
+ | |
+install(TARGETS postgres pqwalreceiver | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+install(TARGETS postgres pgoutput | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+install(FILES | |
+ catalog/postgres.bki | |
+ catalog/postgres.description | |
+ catalog/postgres.shdescription | |
+ catalog/information_schema.sql | |
+ catalog/sql_features.txt | |
+ catalog/system_views.sql | |
+ libpq/pg_hba.conf.sample | |
+ libpq/pg_ident.conf.sample | |
+ utils/misc/postgresql.conf.sample | |
+DESTINATION ${PGSHAREDIR}) | |
+ | |
+add_subdirectory(utils/mb/conversion_procs) | |
+add_subdirectory(snowball) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(postgres "de;es;fr;id;it;ja;pl;pt_BR;ru;zh_CN;ko") | |
+endif() | |
diff --git a/src/backend/snowball/CMakeLists.txt b/src/backend/snowball/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..d39cac1cb5 | |
--- /dev/null | |
+++ b/src/backend/snowball/CMakeLists.txt | |
@@ -0,0 +1,126 @@ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include/snowball" | |
+ "${PROJECT_SOURCE_DIR}/src/include/snowball/libstemmer" | |
+) | |
+ | |
+set(snow_languages | |
+ "danish\;danish" | |
+ "dutch\;dutch" | |
+ "english\;english" | |
+ "finnish\;finnish" | |
+ "french\;french" | |
+ "german\;german" | |
+ "hungarian\;hungarian" | |
+ "italian\;italian" | |
+ "norwegian\;norwegian" | |
+ "portuguese\;portuguese" | |
+ "romanian\;romanian" | |
+ "russian\;english" | |
+ "spanish\;spanish" | |
+ "swedish\;swedish" | |
+ "turkish\;turkish" | |
+) | |
+ | |
+#Create snowball_create.sql | |
+file(STRINGS snowball.sql.in snowball_sql_tmpl NEWLINE_CONSUME) | |
+file(STRINGS snowball_func.sql.in snowball_func_sql_tmpl NEWLINE_CONSUME) | |
+ | |
+file(WRITE "snowball_create.sql" ${snowball_func_sql_tmpl}) | |
+ | |
+foreach(pair_language ${snow_languages}) | |
+ LIST(GET pair_language 0 lang) | |
+ LIST(GET pair_language 1 ascii_lang) | |
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/stopwords/${lang}.stop") | |
+ set(stopwords ", StopWords=${lang}") | |
+ else() | |
+ set(stopwords "") | |
+ endif() | |
+ string(REPLACE "_LANGNAME_" | |
+ "${lang}" out_string | |
+ "${snowball_sql_tmpl}") | |
+ string(REPLACE "_DICTNAME_" | |
+ "${lang}_stem" out_string | |
+ "${out_string}") | |
+ string(REPLACE "_CFGNAME_" | |
+ "${lang}" out_string | |
+ "${out_string}") | |
+ string(REPLACE "_ASCDICTNAME_" | |
+ "${ascii_lang}_stem" out_string | |
+ "${out_string}") | |
+ string(REPLACE "_NONASCDICTNAME_" | |
+ "${lang}_stem" out_string | |
+ "${out_string}") | |
+ string(REPLACE "_STOPWORDS_" | |
+ "${stopwords}" out_string | |
+ "${out_string}") | |
+ file(APPEND "snowball_create.sql" ${out_string}) | |
+endforeach() | |
+ | |
+ | |
+set(snowball_SRCS | |
+ dict_snowball.c | |
+ libstemmer/api.c | |
+ libstemmer/utilities.c | |
+ libstemmer/stem_ISO_8859_1_danish.c | |
+ libstemmer/stem_ISO_8859_1_dutch.c | |
+ libstemmer/stem_ISO_8859_1_english.c | |
+ libstemmer/stem_ISO_8859_1_finnish.c | |
+ libstemmer/stem_ISO_8859_1_french.c | |
+ libstemmer/stem_ISO_8859_1_german.c | |
+ libstemmer/stem_ISO_8859_1_hungarian.c | |
+ libstemmer/stem_ISO_8859_1_italian.c | |
+ libstemmer/stem_ISO_8859_1_norwegian.c | |
+ libstemmer/stem_ISO_8859_1_porter.c | |
+ libstemmer/stem_ISO_8859_1_portuguese.c | |
+ libstemmer/stem_ISO_8859_1_spanish.c | |
+ libstemmer/stem_ISO_8859_1_swedish.c | |
+ libstemmer/stem_ISO_8859_2_romanian.c | |
+ libstemmer/stem_KOI8_R_russian.c | |
+ libstemmer/stem_UTF_8_danish.c | |
+ libstemmer/stem_UTF_8_dutch.c | |
+ libstemmer/stem_UTF_8_english.c | |
+ libstemmer/stem_UTF_8_finnish.c | |
+ libstemmer/stem_UTF_8_french.c | |
+ libstemmer/stem_UTF_8_german.c | |
+ libstemmer/stem_UTF_8_hungarian.c | |
+ libstemmer/stem_UTF_8_italian.c | |
+ libstemmer/stem_UTF_8_norwegian.c | |
+ libstemmer/stem_UTF_8_porter.c | |
+ libstemmer/stem_UTF_8_portuguese.c | |
+ libstemmer/stem_UTF_8_romanian.c | |
+ libstemmer/stem_UTF_8_russian.c | |
+ libstemmer/stem_UTF_8_spanish.c | |
+ libstemmer/stem_UTF_8_swedish.c | |
+ libstemmer/stem_UTF_8_turkish.c | |
+) | |
+ | |
+add_library(dict_snowball ${PLUGIN_TYPE} ${snowball_SRCS}) | |
+target_link_libraries(dict_snowball postgres) | |
+if (MSVC) | |
+ gen_def(dict_snowball) | |
+ target_link_libraries(dict_snowball pgcommon pgport) | |
+endif() | |
+set_target_properties(dict_snowball PROPERTIES PREFIX "") | |
+install(TARGETS dict_snowball | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+install(FILES snowball_create.sql | |
+ DESTINATION ${PGSHAREDIR}) | |
+ | |
+install(FILES | |
+ stopwords/danish.stop | |
+ stopwords/dutch.stop | |
+ stopwords/english.stop | |
+ stopwords/finnish.stop | |
+ stopwords/french.stop | |
+ stopwords/german.stop | |
+ stopwords/hungarian.stop | |
+ stopwords/italian.stop | |
+ stopwords/norwegian.stop | |
+ stopwords/portuguese.stop | |
+ stopwords/russian.stop | |
+ stopwords/spanish.stop | |
+ stopwords/swedish.stop | |
+ stopwords/turkish.stop | |
+ DESTINATION ${PGSHAREDIR}/tsearch_data) | |
diff --git a/src/backend/utils/mb/conversion_procs/CMakeLists.txt b/src/backend/utils/mb/conversion_procs/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1ffd417056 | |
--- /dev/null | |
+++ b/src/backend/utils/mb/conversion_procs/CMakeLists.txt | |
@@ -0,0 +1,201 @@ | |
+set(procs_list | |
+ ascii_and_mic | |
+ cyrillic_and_mic | |
+ euc_cn_and_mic | |
+ euc_jp_and_sjis | |
+ euc_kr_and_mic | |
+ euc_tw_and_big5 | |
+ latin2_and_win1250 | |
+ latin_and_mic | |
+ utf8_and_ascii | |
+ utf8_and_big5 | |
+ utf8_and_cyrillic | |
+ utf8_and_euc_cn | |
+ utf8_and_euc_jp | |
+ utf8_and_euc_kr | |
+ utf8_and_euc_tw | |
+ utf8_and_gb18030 | |
+ utf8_and_gbk | |
+ utf8_and_iso8859 | |
+ utf8_and_iso8859_1 | |
+ utf8_and_johab | |
+ utf8_and_sjis | |
+ utf8_and_win | |
+ utf8_and_uhc | |
+ utf8_and_euc2004 | |
+ utf8_and_sjis2004 | |
+ euc2004_sjis2004 | |
+) | |
+ | |
+# conversion_name source_encoding destination_encoding function object | |
+set(conversions_list | |
+ "ascii_to_mic\;SQL_ASCII\;MULE_INTERNAL\;ascii_to_mic\;ascii_and_mic" | |
+ "mic_to_ascii\;MULE_INTERNAL\;SQL_ASCII\;mic_to_ascii\;ascii_and_mic" | |
+ "koi8_r_to_mic\;KOI8R\;MULE_INTERNAL\;koi8r_to_mic\;cyrillic_and_mic" | |
+ "mic_to_koi8_r\;MULE_INTERNAL\;KOI8R\;mic_to_koi8r\;cyrillic_and_mic" | |
+ "iso_8859_5_to_mic\;ISO-8859-5\;MULE_INTERNAL\;iso_to_mic\;cyrillic_and_mic" | |
+ "mic_to_iso_8859_5\;MULE_INTERNAL\;ISO-8859-5\;mic_to_iso\;cyrillic_and_mic" | |
+ "windows_1251_to_mic\;WIN1251\;MULE_INTERNAL\;win1251_to_mic\;cyrillic_and_mic" | |
+ "mic_to_windows_1251\;MULE_INTERNAL\;WIN1251\;mic_to_win1251\;cyrillic_and_mic" | |
+ "windows_866_to_mic\;WIN866\;MULE_INTERNAL\;win866_to_mic\;cyrillic_and_mic" | |
+ "mic_to_windows_866\;MULE_INTERNAL\;WIN866\;mic_to_win866\;cyrillic_and_mic" | |
+ "koi8_r_to_windows_1251\;KOI8R\;WIN1251\;koi8r_to_win1251\;cyrillic_and_mic" | |
+ "windows_1251_to_koi8_r\;WIN1251\;KOI8R\;win1251_to_koi8r\;cyrillic_and_mic" | |
+ "koi8_r_to_windows_866\;KOI8R\;WIN866\;koi8r_to_win866\;cyrillic_and_mic" | |
+ "windows_866_to_koi8_r\;WIN866\;KOI8R\;win866_to_koi8r\;cyrillic_and_mic" | |
+ "windows_866_to_windows_1251\;WIN866\;WIN1251\;win866_to_win1251\;cyrillic_and_mic" | |
+ "windows_1251_to_windows_866\;WIN1251\;WIN866\;win1251_to_win866\;cyrillic_and_mic" | |
+ "iso_8859_5_to_koi8_r\;ISO-8859-5\;KOI8R\;iso_to_koi8r\;cyrillic_and_mic" | |
+ "koi8_r_to_iso_8859_5\;KOI8R\;ISO-8859-5\;koi8r_to_iso\;cyrillic_and_mic" | |
+ "iso_8859_5_to_windows_1251\;ISO-8859-5\;WIN1251\;iso_to_win1251\;cyrillic_and_mic" | |
+ "windows_1251_to_iso_8859_5\;WIN1251\;ISO-8859-5\;win1251_to_iso\;cyrillic_and_mic" | |
+ "iso_8859_5_to_windows_866\;ISO-8859-5\;WIN866\;iso_to_win866\;cyrillic_and_mic" | |
+ "windows_866_to_iso_8859_5\;WIN866\;ISO-8859-5\;win866_to_iso\;cyrillic_and_mic" | |
+ "euc_cn_to_mic\;EUC_CN\;MULE_INTERNAL\;euc_cn_to_mic\;euc_cn_and_mic" | |
+ "mic_to_euc_cn\;MULE_INTERNAL\;EUC_CN\;mic_to_euc_cn\;euc_cn_and_mic" | |
+ "euc_jp_to_sjis\;EUC_JP\;SJIS\;euc_jp_to_sjis\;euc_jp_and_sjis" | |
+ "sjis_to_euc_jp\;SJIS\;EUC_JP\;sjis_to_euc_jp\;euc_jp_and_sjis" | |
+ "euc_jp_to_mic\;EUC_JP\;MULE_INTERNAL\;euc_jp_to_mic\;euc_jp_and_sjis" | |
+ "sjis_to_mic\;SJIS\;MULE_INTERNAL\;sjis_to_mic\;euc_jp_and_sjis" | |
+ "mic_to_euc_jp\;MULE_INTERNAL\;EUC_JP\;mic_to_euc_jp\;euc_jp_and_sjis" | |
+ "mic_to_sjis\;MULE_INTERNAL\;SJIS\;mic_to_sjis\;euc_jp_and_sjis" | |
+ "euc_kr_to_mic\;EUC_KR\;MULE_INTERNAL\;euc_kr_to_mic\;euc_kr_and_mic" | |
+ "mic_to_euc_kr\;MULE_INTERNAL\;EUC_KR\;mic_to_euc_kr\;euc_kr_and_mic" | |
+ "euc_tw_to_big5\;EUC_TW\;BIG5\;euc_tw_to_big5\;euc_tw_and_big5" | |
+ "big5_to_euc_tw\;BIG5\;EUC_TW\;big5_to_euc_tw\;euc_tw_and_big5" | |
+ "euc_tw_to_mic\;EUC_TW\;MULE_INTERNAL\;euc_tw_to_mic\;euc_tw_and_big5" | |
+ "big5_to_mic\;BIG5\;MULE_INTERNAL\;big5_to_mic\;euc_tw_and_big5" | |
+ "mic_to_euc_tw\;MULE_INTERNAL\;EUC_TW\;mic_to_euc_tw\;euc_tw_and_big5" | |
+ "mic_to_big5\;MULE_INTERNAL\;BIG5\;mic_to_big5\;euc_tw_and_big5" | |
+ "iso_8859_2_to_mic\;LATIN2\;MULE_INTERNAL\;latin2_to_mic\;latin2_and_win1250" | |
+ "mic_to_iso_8859_2\;MULE_INTERNAL\;LATIN2\;mic_to_latin2\;latin2_and_win1250" | |
+ "windows_1250_to_mic\;WIN1250\;MULE_INTERNAL\;win1250_to_mic\;latin2_and_win1250" | |
+ "mic_to_windows_1250\;MULE_INTERNAL\;WIN1250\;mic_to_win1250\;latin2_and_win1250" | |
+ "iso_8859_2_to_windows_1250\;LATIN2\;WIN1250\;latin2_to_win1250\;latin2_and_win1250" | |
+ "windows_1250_to_iso_8859_2\;WIN1250\;LATIN2\;win1250_to_latin2\;latin2_and_win1250" | |
+ "iso_8859_1_to_mic\;LATIN1\;MULE_INTERNAL\;latin1_to_mic\;latin_and_mic" | |
+ "mic_to_iso_8859_1\;MULE_INTERNAL\;LATIN1\;mic_to_latin1\;latin_and_mic" | |
+ "iso_8859_3_to_mic\;LATIN3\;MULE_INTERNAL\;latin3_to_mic\;latin_and_mic" | |
+ "mic_to_iso_8859_3\;MULE_INTERNAL\;LATIN3\;mic_to_latin3\;latin_and_mic" | |
+ "iso_8859_4_to_mic\;LATIN4\;MULE_INTERNAL\;latin4_to_mic\;latin_and_mic" | |
+ "mic_to_iso_8859_4\;MULE_INTERNAL\;LATIN4\;mic_to_latin4\;latin_and_mic" | |
+ "ascii_to_utf8\;SQL_ASCII\;UTF8\;ascii_to_utf8\;utf8_and_ascii" | |
+ "utf8_to_ascii\;UTF8\;SQL_ASCII\;utf8_to_ascii\;utf8_and_ascii" | |
+ "big5_to_utf8\;BIG5\;UTF8\;big5_to_utf8\;utf8_and_big5" | |
+ "utf8_to_big5\;UTF8\;BIG5\;utf8_to_big5\;utf8_and_big5" | |
+ "utf8_to_koi8_r\;UTF8\;KOI8R\;utf8_to_koi8r\;utf8_and_cyrillic" | |
+ "koi8_r_to_utf8\;KOI8R\;UTF8\;koi8r_to_utf8\;utf8_and_cyrillic" | |
+ "utf8_to_koi8_u\;UTF8\;KOI8U\;utf8_to_koi8u\;utf8_and_cyrillic" | |
+ "koi8_u_to_utf8\;KOI8U\;UTF8\;koi8u_to_utf8\;utf8_and_cyrillic" | |
+ "utf8_to_windows_866\;UTF8\;WIN866\;utf8_to_win\;utf8_and_win" | |
+ "windows_866_to_utf8\;WIN866\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_874\;UTF8\;WIN874\;utf8_to_win\;utf8_and_win" | |
+ "windows_874_to_utf8\;WIN874\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1250\;UTF8\;WIN1250\;utf8_to_win\;utf8_and_win" | |
+ "windows_1250_to_utf8\;WIN1250\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1251\;UTF8\;WIN1251\;utf8_to_win\;utf8_and_win" | |
+ "windows_1251_to_utf8\;WIN1251\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1252\;UTF8\;WIN1252\;utf8_to_win\;utf8_and_win" | |
+ "windows_1252_to_utf8\;WIN1252\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1253\;UTF8\;WIN1253\;utf8_to_win\;utf8_and_win" | |
+ "windows_1253_to_utf8\;WIN1253\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1254\;UTF8\;WIN1254\;utf8_to_win\;utf8_and_win" | |
+ "windows_1254_to_utf8\;WIN1254\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1255\;UTF8\;WIN1255\;utf8_to_win\;utf8_and_win" | |
+ "windows_1255_to_utf8\;WIN1255\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1256\;UTF8\;WIN1256\;utf8_to_win\;utf8_and_win" | |
+ "windows_1256_to_utf8\;WIN1256\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1257\;UTF8\;WIN1257\;utf8_to_win\;utf8_and_win" | |
+ "windows_1257_to_utf8\;WIN1257\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "utf8_to_windows_1258\;UTF8\;WIN1258\;utf8_to_win\;utf8_and_win" | |
+ "windows_1258_to_utf8\;WIN1258\;UTF8\;win_to_utf8\;utf8_and_win" | |
+ "euc_cn_to_utf8\;EUC_CN\;UTF8\;euc_cn_to_utf8\;utf8_and_euc_cn" | |
+ "utf8_to_euc_cn\;UTF8\;EUC_CN\;utf8_to_euc_cn\;utf8_and_euc_cn" | |
+ "euc_jp_to_utf8\;EUC_JP\;UTF8\;euc_jp_to_utf8\;utf8_and_euc_jp" | |
+ "utf8_to_euc_jp\;UTF8\;EUC_JP\;utf8_to_euc_jp\;utf8_and_euc_jp" | |
+ "euc_kr_to_utf8\;EUC_KR\;UTF8\;euc_kr_to_utf8\;utf8_and_euc_kr" | |
+ "utf8_to_euc_kr\;UTF8\;EUC_KR\;utf8_to_euc_kr\;utf8_and_euc_kr" | |
+ "euc_tw_to_utf8\;EUC_TW\;UTF8\;euc_tw_to_utf8\;utf8_and_euc_tw" | |
+ "utf8_to_euc_tw\;UTF8\;EUC_TW\;utf8_to_euc_tw\;utf8_and_euc_tw" | |
+ "gb18030_to_utf8\;GB18030\;UTF8\;gb18030_to_utf8\;utf8_and_gb18030" | |
+ "utf8_to_gb18030\;UTF8\;GB18030\;utf8_to_gb18030\;utf8_and_gb18030" | |
+ "gbk_to_utf8\;GBK\;UTF8\;gbk_to_utf8\;utf8_and_gbk" | |
+ "utf8_to_gbk\;UTF8\;GBK\;utf8_to_gbk\;utf8_and_gbk" | |
+ "utf8_to_iso_8859_2\;UTF8\;LATIN2\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_2_to_utf8\;LATIN2\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_3\;UTF8\;LATIN3\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_3_to_utf8\;LATIN3\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_4\;UTF8\;LATIN4\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_4_to_utf8\;LATIN4\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_9\;UTF8\;LATIN5\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_9_to_utf8\;LATIN5\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_10\;UTF8\;LATIN6\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_10_to_utf8\;LATIN6\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_13\;UTF8\;LATIN7\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_13_to_utf8\;LATIN7\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_14\;UTF8\;LATIN8\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_14_to_utf8\;LATIN8\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_15\;UTF8\;LATIN9\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_15_to_utf8\;LATIN9\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_16\;UTF8\;LATIN10\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_16_to_utf8\;LATIN10\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_5\;UTF8\;ISO-8859-5\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_5_to_utf8\;ISO-8859-5\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_6\;UTF8\;ISO-8859-6\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_6_to_utf8\;ISO-8859-6\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_7\;UTF8\;ISO-8859-7\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_7_to_utf8\;ISO-8859-7\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "utf8_to_iso_8859_8\;UTF8\;ISO-8859-8\;utf8_to_iso8859\;utf8_and_iso8859" | |
+ "iso_8859_8_to_utf8\;ISO-8859-8\;UTF8\;iso8859_to_utf8\;utf8_and_iso8859" | |
+ "iso_8859_1_to_utf8\;LATIN1\;UTF8\;iso8859_1_to_utf8\;utf8_and_iso8859_1" | |
+ "utf8_to_iso_8859_1\;UTF8\;LATIN1\;utf8_to_iso8859_1\;utf8_and_iso8859_1" | |
+ "johab_to_utf8\;JOHAB\;UTF8\;johab_to_utf8\;utf8_and_johab" | |
+ "utf8_to_johab\;UTF8\;JOHAB\;utf8_to_johab\;utf8_and_johab" | |
+ "sjis_to_utf8\;SJIS\;UTF8\;sjis_to_utf8\;utf8_and_sjis" | |
+ "utf8_to_sjis\;UTF8\;SJIS\;utf8_to_sjis\;utf8_and_sjis" | |
+ "uhc_to_utf8\;UHC\;UTF8\;uhc_to_utf8\;utf8_and_uhc" | |
+ "utf8_to_uhc\;UTF8\;UHC\;utf8_to_uhc\;utf8_and_uhc" | |
+ "euc_jis_2004_to_utf8\;EUC_JIS_2004\;UTF8\;euc_jis_2004_to_utf8\;utf8_and_euc2004" | |
+ "utf8_to_euc_jis_2004\;UTF8\;EUC_JIS_2004\;utf8_to_euc_jis_2004\;utf8_and_euc2004" | |
+ "shift_jis_2004_to_utf8\;SHIFT_JIS_2004\;UTF8\;shift_jis_2004_to_utf8\;utf8_and_sjis2004" | |
+ "utf8_to_shift_jis_2004\;UTF8\;SHIFT_JIS_2004\;utf8_to_shift_jis_2004\;utf8_and_sjis2004" | |
+ "euc_jis_2004_to_shift_jis_2004\;EUC_JIS_2004\;SHIFT_JIS_2004\;euc_jis_2004_to_shift_jis_2004\;euc2004_sjis2004" | |
+ "shift_jis_2004_to_euc_jis_2004\;SHIFT_JIS_2004\;EUC_JIS_2004\;shift_jis_2004_to_euc_jis_2004\;euc2004_sjis2004" | |
+) | |
+ | |
+file(WRITE "conversion_create.sql" "") | |
+foreach(pair_conversion ${conversions_list}) | |
+ LIST(GET pair_conversion 0 con_name) | |
+ LIST(GET pair_conversion 1 se) | |
+ LIST(GET pair_conversion 2 de) | |
+ LIST(GET pair_conversion 3 func) | |
+ LIST(GET pair_conversion 4 obj) | |
+ | |
+ file(APPEND "conversion_create.sql" "-- ${se} --> ${de}\n") | |
+ file(APPEND "conversion_create.sql" "CREATE OR REPLACE FUNCTION ${func} (INTEGER, INTEGER, CSTRING, INTERNAL, INTEGER) RETURNS VOID AS '$libdir/${obj}', '${func}' LANGUAGE C STRICT;\n") | |
+ file(APPEND "conversion_create.sql" "COMMENT ON FUNCTION ${func}(INTEGER, INTEGER, CSTRING, INTERNAL, INTEGER) IS 'internal conversion function for ${se} to ${de}';\n") | |
+ file(APPEND "conversion_create.sql" "DROP CONVERSION pg_catalog.${con_name};\n") | |
+ file(APPEND "conversion_create.sql" "CREATE DEFAULT CONVERSION pg_catalog.${con_name} FOR '${se}' TO '${de}' FROM ${func};\n") | |
+ file(APPEND "conversion_create.sql" "COMMENT ON CONVERSION pg_catalog.${con_name} IS 'conversion for ${se} to ${de}';\n") | |
+endforeach() | |
+ | |
+foreach(loop_var IN ITEMS ${procs_list}) | |
+ if(loop_var STREQUAL "euc_tw_and_big5") | |
+ add_library(${loop_var} ${PLUGIN_TYPE} ${loop_var}/${loop_var}.c ${loop_var}/big5.c) | |
+ else() | |
+ add_library(${loop_var} ${PLUGIN_TYPE} ${loop_var}/${loop_var}.c) | |
+ endif() | |
+ set_target_properties(${loop_var} PROPERTIES PREFIX "") | |
+ add_dependencies(${loop_var} gen_errorcodes) | |
+ target_link_libraries(${loop_var} postgres) | |
+ if(MSVC) | |
+ gen_def(${loop_var}) | |
+ endif() | |
+ CMAKE_SET_TARGET_FOLDER(${loop_var} conversion_procs) | |
+ install(TARGETS ${loop_var} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+endforeach(loop_var) | |
+ | |
+install(FILES conversion_create.sql | |
+ DESTINATION ${PGSHAREDIR}) | |
diff --git a/src/bin/initdb/CMakeLists.txt b/src/bin/initdb/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..8ab4cd31e4 | |
--- /dev/null | |
+++ b/src/bin/initdb/CMakeLists.txt | |
@@ -0,0 +1,39 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/timezone" | |
+) | |
+ | |
+add_executable(initdb | |
+ initdb.c | |
+ findtimezone.c | |
+ "${PROJECT_SOURCE_DIR}/src/timezone/localtime.c" | |
+ "${PROJECT_SOURCE_DIR}/src/backend/utils/mb/encnames.c" | |
+) | |
+ | |
+target_link_libraries(initdb | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+ ${GSS_LIBS} | |
+) | |
+ | |
+if(UNIX AND NOT APPLE) | |
+ target_link_libraries(initdb rt) | |
+endif() | |
+ | |
+target_compile_definitions(initdb PRIVATE -DFRONTEND) | |
+CMAKE_SET_TARGET_FOLDER(initdb bin) | |
+ | |
+install(TARGETS initdb | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(initdb "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;sv;zh_CN;he") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("initdb_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/pg_archivecleanup/CMakeLists.txt b/src/bin/pg_archivecleanup/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..38e99e9802 | |
--- /dev/null | |
+++ b/src/bin/pg_archivecleanup/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_archivecleanup pg_archivecleanup.c) | |
+ | |
+target_link_libraries(pg_archivecleanup | |
+ pgcommon | |
+ pgport | |
+ ${M_LIB} | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_archivecleanup bin) | |
+ | |
+install(TARGETS pg_archivecleanup | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(initdb "de;es;fr;pl;ru;sv;") | |
+endif() | |
diff --git a/src/bin/pg_basebackup/CMakeLists.txt b/src/bin/pg_basebackup/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..5752f42459 | |
--- /dev/null | |
+++ b/src/bin/pg_basebackup/CMakeLists.txt | |
@@ -0,0 +1,54 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+ ${ZLIB_INCLUDE_DIRS} | |
+) | |
+if(ZLIB_FOUND) | |
+ include_directories(BEFORE ${ZLIB_INCLUDE_DIRS}) | |
+endif() | |
+ | |
+ | |
+add_library(common_basebackup STATIC | |
+ receivelog.c | |
+ streamutil.c | |
+ walmethods.c | |
+) | |
+ | |
+target_link_libraries(common_basebackup | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+set(basebackup_list | |
+ pg_basebackup | |
+ pg_receivewal | |
+ pg_recvlogical | |
+) | |
+ | |
+foreach(loop_var IN ITEMS ${basebackup_list}) | |
+ add_executable(${loop_var} ${loop_var}.c) | |
+ | |
+ target_link_libraries(${loop_var} | |
+ common_basebackup | |
+ ${M_LIB} | |
+ ) | |
+ CMAKE_SET_TARGET_FOLDER(${loop_var} bin) | |
+ if(ZLIB_FOUND) | |
+ target_link_libraries(${loop_var} ${ZLIB_LIBRARIES}) | |
+ endif() | |
+endforeach() | |
+ | |
+install(TARGETS ${basebackup_list} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_basebackup "de;es;fr;it;ko;pl;pt_BR;ru;zh_CN;he") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pg_basebackup_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/pg_config/CMakeLists.txt b/src/bin/pg_config/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..86b0028d98 | |
--- /dev/null | |
+++ b/src/bin/pg_config/CMakeLists.txt | |
@@ -0,0 +1,28 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_config | |
+ pg_config.c | |
+) | |
+ | |
+target_link_libraries(pg_config | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_config bin) | |
+ | |
+install(TARGETS pg_config | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_config "cs;de;es;fr;it;ja;ko;nb;pl;pt_BR;ro;ru;sv;ta;tr;zh_CN;zh_TW;he") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pg_config_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/pg_controldata/CMakeLists.txt b/src/bin/pg_controldata/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1823fbc596 | |
--- /dev/null | |
+++ b/src/bin/pg_controldata/CMakeLists.txt | |
@@ -0,0 +1,28 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_controldata | |
+ pg_controldata.c | |
+) | |
+ | |
+target_link_libraries(pg_controldata | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_controldata bin) | |
+ | |
+install(TARGETS pg_controldata | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_controldata "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;sv;zh_CN") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pg_controldata_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/pg_ctl/CMakeLists.txt b/src/bin/pg_ctl/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..ef4f26730d | |
--- /dev/null | |
+++ b/src/bin/pg_ctl/CMakeLists.txt | |
@@ -0,0 +1,29 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_ctl | |
+ pg_ctl.c | |
+) | |
+ | |
+target_link_libraries(pg_ctl | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_ctl bin) | |
+ | |
+install(TARGETS pg_ctl | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_ctl "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;sv;zh_CN;he") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pg_ctl_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/pg_dump/CMakeLists.txt b/src/bin/pg_dump/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..0687ad79e3 | |
--- /dev/null | |
+++ b/src/bin/pg_dump/CMakeLists.txt | |
@@ -0,0 +1,93 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+ ${ZLIB_INCLUDE_DIRS} | |
+) | |
+ | |
+if(ZLIB_FOUND) | |
+ include_directories(BEFORE ${ZLIB_INCLUDE_DIRS}) | |
+endif() | |
+ | |
+add_library(libdump STATIC | |
+ pg_backup_archiver.c | |
+ pg_backup_db.c | |
+ pg_backup_custom.c | |
+ pg_backup_null.c | |
+ pg_backup_tar.c | |
+ pg_backup_directory.c | |
+ pg_backup_utils.c | |
+ parallel.c | |
+ compress_io.c | |
+ dumputils.c | |
+) | |
+ | |
+add_executable(pg_dump | |
+ pg_dump.c | |
+ common.c | |
+ pg_dump_sort.c | |
+) | |
+ | |
+target_link_libraries(pg_dump | |
+ libdump | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_dump bin) | |
+ | |
+if(ZLIB_FOUND) | |
+ target_link_libraries(pg_dump ${ZLIB_LIBRARIES}) | |
+endif() | |
+ | |
+add_executable(pg_restore | |
+ pg_restore.c | |
+) | |
+ | |
+target_link_libraries(pg_restore | |
+ libdump | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_restore bin) | |
+ | |
+if(ZLIB_FOUND) | |
+ target_link_libraries(pg_restore ${ZLIB_LIBRARIES}) | |
+endif() | |
+ | |
+add_executable(pg_dumpall | |
+ pg_dumpall.c | |
+ dumputils.c | |
+) | |
+ | |
+target_link_libraries(pg_dumpall | |
+ libdump | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_dumpall bin) | |
+ | |
+if(ZLIB_FOUND) | |
+ target_link_libraries(pg_dumpall ${ZLIB_LIBRARIES}) | |
+endif() | |
+ | |
+install(TARGETS pg_dump pg_restore pg_dumpall | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_dump "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;zh_CN;sv") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pg_dump_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
+ | |
diff --git a/src/bin/pg_resetwal/CMakeLists.txt b/src/bin/pg_resetwal/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..47a8ca3a17 | |
--- /dev/null | |
+++ b/src/bin/pg_resetwal/CMakeLists.txt | |
@@ -0,0 +1,24 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_resetwal | |
+ pg_resetwal.c | |
+) | |
+ | |
+target_link_libraries(pg_resetwal | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_resetwal bin) | |
+ | |
+install(TARGETS pg_resetwal | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_resetwal "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;sv;zh_CN") | |
+endif() | |
diff --git a/src/bin/pg_rewind/CMakeLists.txt b/src/bin/pg_rewind/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..43b7023483 | |
--- /dev/null | |
+++ b/src/bin/pg_rewind/CMakeLists.txt | |
@@ -0,0 +1,41 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_rewind | |
+ pg_rewind.c | |
+ parsexlog.c | |
+ datapagemap.c | |
+ timeline.c | |
+ fetch.c | |
+ file_ops.c | |
+ copy_fetch.c | |
+ libpq_fetch.c | |
+ filemap.c | |
+ logging.c | |
+ ${PROJECT_SOURCE_DIR}/src/backend/access/transam/xlogreader.c | |
+) | |
+ | |
+target_link_libraries(pg_rewind | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+target_compile_definitions(pg_rewind PRIVATE -DFRONTEND) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_rewind bin) | |
+ | |
+install(TARGETS pg_rewind | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_rewind "de;es;fr;it;ko;pl;ru;zh_CN;ja;pt_BR;sv") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pg_rewind_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/pg_test_fsync/CMakeLists.txt b/src/bin/pg_test_fsync/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..a461259d71 | |
--- /dev/null | |
+++ b/src/bin/pg_test_fsync/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_test_fsync | |
+ pg_test_fsync.c | |
+ | |
+) | |
+ | |
+target_link_libraries(pg_test_fsync | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_test_fsync bin) | |
+ | |
+install(TARGETS pg_test_fsync | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_rewind "es;fr;pl;ru;sv") | |
+endif() | |
diff --git a/src/bin/pg_test_timing/CMakeLists.txt b/src/bin/pg_test_timing/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..1dd0edbf28 | |
--- /dev/null | |
+++ b/src/bin/pg_test_timing/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_test_timing | |
+ pg_test_timing.c | |
+ | |
+) | |
+ | |
+target_link_libraries(pg_test_timing | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_test_timing bin) | |
+ | |
+install(TARGETS pg_test_timing | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_rewind "de;es;fr;pl;ru;sv") | |
+endif() | |
diff --git a/src/bin/pg_upgrade/CMakeLists.txt b/src/bin/pg_upgrade/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..7aec060d91 | |
--- /dev/null | |
+++ b/src/bin/pg_upgrade/CMakeLists.txt | |
@@ -0,0 +1,41 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_upgrade | |
+ check.c | |
+ controldata.c | |
+ dump.c | |
+ exec.c | |
+ file.c | |
+ function.c | |
+ info.c | |
+ option.c | |
+ parallel.c | |
+ pg_upgrade.c | |
+ relfilenode.c | |
+ server.c | |
+ tablespace.c | |
+ util.c | |
+ version.c | |
+) | |
+ | |
+target_link_libraries(pg_upgrade | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_upgrade bin) | |
+ | |
+install(TARGETS pg_upgrade | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_rewind "fr;ru") | |
+endif() | |
+ | |
diff --git a/src/bin/pg_waldump/CMakeLists.txt b/src/bin/pg_waldump/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..b23d7b34ad | |
--- /dev/null | |
+++ b/src/bin/pg_waldump/CMakeLists.txt | |
@@ -0,0 +1,31 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_waldump | |
+ ${PROJECT_SOURCE_DIR}/src/backend/access/transam/xlogreader.c | |
+ pg_waldump.c | |
+ compat.c | |
+ rmgrdesc.c | |
+ ${rmgrdesc_SRC} | |
+) | |
+ | |
+target_link_libraries(pg_waldump | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+target_compile_definitions(pg_waldump PRIVATE -DFRONTEND) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_waldump bin) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pg_waldump "es;fr;sv") | |
+endif() | |
+ | |
+install(TARGETS pg_waldump | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/src/bin/pgbench/CMakeLists.txt b/src/bin/pgbench/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..e60b7c7421 | |
--- /dev/null | |
+++ b/src/bin/pgbench/CMakeLists.txt | |
@@ -0,0 +1,36 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+bison_target(PGBENCH_PARSER exprparse.y ${PROJECT_SOURCE_DIR}/src/bin/pgbench/exprparse.c) | |
+flex_target(PGBENCH_SCANNER exprscan.l ${PROJECT_SOURCE_DIR}/src/bin/pgbench/exprscan.c) | |
+add_flex_bison_dependency(PGBENCH_SCANNER PGBENCH_PARSER) | |
+ | |
+set_source_files_properties(exprparse.c PROPERTIES OBJECT_DEPENDS ${FLEX_PGBENCH_SCANNER_OUTPUTS}) | |
+ | |
+add_executable(pgbench | |
+ pgbench.c | |
+ ${BISON_PGBENCH_PARSER_OUTPUTS} | |
+) | |
+ | |
+target_link_libraries(pgbench | |
+ pgfeutils | |
+ pgport | |
+ pq | |
+ pgcommon | |
+ ${M_LIB} | |
+) | |
+ | |
+add_dependencies(pgbench postgres) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pgbench bin) | |
+ | |
+install(TARGETS pgbench | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("pgbench_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/bin/psql/CMakeLists.txt b/src/bin/psql/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c62ae23997 | |
--- /dev/null | |
+++ b/src/bin/psql/CMakeLists.txt | |
@@ -0,0 +1,73 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_custom_command( | |
+ MAIN_DEPENDENCY create_help.pl | |
+ OUTPUT ${PROJECT_SOURCE_DIR}/src/bin/psql/sql_help.c ${PROJECT_SOURCE_DIR}/src/bin/psql/sql_help.h | |
+ COMMAND ${PERL_EXECUTABLE} create_help.pl ../../../doc/src/sgml/ref sql_help | |
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/bin/psql | |
+) | |
+ | |
+flex_target(SCANSLASH_SCAN | |
+ psqlscanslash.l | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/psqlscanslash.c | |
+) | |
+ | |
+set(psql_SRCS | |
+ command.c | |
+ common.c | |
+ conditional.c | |
+ help.c | |
+ help.h | |
+ input.c | |
+ stringutils.c | |
+ mainloop.c | |
+ copy.c | |
+ copy.h | |
+ startup.c | |
+ prompt.c | |
+ variables.c | |
+ large_obj.c | |
+ describe.c | |
+ tab-complete.c | |
+ ../pg_dump/dumputils.c | |
+ sql_help.c | |
+ crosstabview.c | |
+ ${FLEX_SCANSLASH_SCAN_OUTPUTS} | |
+) | |
+ | |
+add_executable(psql | |
+ ${psql_SRCS} | |
+) | |
+ | |
+target_link_libraries(psql | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+ ${READLINE_LIBRARY} | |
+ ${CMAKE_THREAD_LIBS_INIT} | |
+) | |
+ | |
+if(OPENSSL_FOUND) | |
+ target_link_libraries(psql ${OPENSSL_LIBRARIES}) | |
+endif() | |
+if(NOT MSVC) | |
+ target_link_libraries(psql m) | |
+endif() | |
+ | |
+add_dependencies(psql postgres) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(psql bin) | |
+ | |
+install(TARGETS psql | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pslq "cs;de;es;fr;it;ja;pl;pt_BR;ru;zh_CN;zh_TW;he;ko;sv") | |
+endif() | |
+ | |
diff --git a/src/bin/scripts/CMakeLists.txt b/src/bin/scripts/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..451e716f47 | |
--- /dev/null | |
+++ b/src/bin/scripts/CMakeLists.txt | |
@@ -0,0 +1,71 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/psql" | |
+) | |
+ | |
+add_library(common_dump STATIC | |
+ common.c | |
+ ${PROJECT_SOURCE_DIR}/src/bin/pg_dump/dumputils.c | |
+) | |
+ | |
+add_library(common_print STATIC | |
+ common.c | |
+) | |
+ | |
+set(common_libs | |
+ pgfeutils | |
+ pgcommon | |
+ pgport | |
+ pq | |
+ ${LIB_M} | |
+) | |
+ | |
+add_executable(pg_isready | |
+ pg_isready.c | |
+ common.c | |
+) | |
+ | |
+target_link_libraries(pg_isready | |
+ ${common_libs} | |
+) | |
+ | |
+CMAKE_SET_TARGET_FOLDER(pg_isready bin) | |
+ | |
+set(dump_modules_list | |
+ createdb | |
+ createuser | |
+ dropdb | |
+ dropuser | |
+ clusterdb | |
+ vacuumdb | |
+ reindexdb | |
+) | |
+ | |
+foreach(loop_var IN ITEMS ${dump_modules_list}) | |
+ add_executable(${loop_var} | |
+ ${loop_var}.c | |
+ ${dump_parser_src} | |
+ ) | |
+ | |
+ target_link_libraries(${loop_var} | |
+ common_dump | |
+ ${common_libs} | |
+ ) | |
+ | |
+ CMAKE_SET_TARGET_FOLDER(${loop_var} bin) | |
+endforeach() | |
+ | |
+ | |
+install(TARGETS ${dump_modules_list} pg_isready | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pgscripts "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;sv;zh_CN;he") | |
+endif() | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("scripts_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..dd36783445 | |
--- /dev/null | |
+++ b/src/common/CMakeLists.txt | |
@@ -0,0 +1,62 @@ | |
+if(OPENSSL_FOUND) | |
+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR}) | |
+endif() | |
+ | |
+set(pgcommon_srv_SRCS | |
+ exec.c | |
+ pg_lzcompress.c | |
+ pgfnames.c | |
+ psprintf.c | |
+ relpath.c | |
+ rmtree.c | |
+ string.c | |
+ username.c | |
+ wait_error.c | |
+ controldata_utils.c | |
+ config_info.c | |
+ keywords.c | |
+ md5.c | |
+ ip.c | |
+ base64.c | |
+ saslprep.c | |
+ scram-common.c | |
+) | |
+ | |
+if(OPENSSL_FOUND) | |
+ set(pgcommon_srv_SRCS ${pgcommon_srv_SRCS} sha2_openssl.c) | |
+else() | |
+ set(pgcommon_srv_SRCS ${pgcommon_srv_SRCS} sha2.c) | |
+endif() | |
+ | |
+set(pgcommon_SRCS | |
+ ${pgcommon_srv_SRCS} | |
+ fe_memutils.c | |
+ file_utils.c | |
+ restricted_token.c | |
+ ${PROJECT_SOURCE_DIR}/src/include/parser/gram.h | |
+) | |
+ | |
+add_library(pgcommon_srv STATIC ${pgcommon_srv_SRCS}) | |
+add_library(pgcommon STATIC ${pgcommon_SRCS}) | |
+ | |
+set_source_files_properties( | |
+ ${PROJECT_SOURCE_DIR}/src/include/parser/gram.h | |
+ PROPERTIES GENERATED TRUE | |
+) | |
+ | |
+add_dependencies(pgcommon_srv generate_parser_gram_h) | |
+add_dependencies(pgcommon_srv gen_errorcodes) | |
+add_dependencies(pgcommon gen_errorcodes) | |
+ | |
+target_compile_definitions(pgcommon PRIVATE -DFRONTEND) | |
+ | |
+target_compile_definitions(pgcommon PRIVATE -DVAL_CPPFLAGS="${CMAKE_CXX_FLAGS}") | |
+target_compile_definitions(pgcommon PRIVATE -DVAL_CFLAGS="${CMAKE_C_FLAGS} ${COMPILE_DEFINITIONS}") | |
+target_compile_definitions(pgcommon PRIVATE -DVAL_CC="${CMAKE_C_COMPILER}") | |
+target_compile_definitions(pgcommon PRIVATE -DVAL_LDFLAGS="${CMAKE_SHARED_LINKER_FLAGS}") | |
+ | |
+# because port used in shared libraries | |
+set_property(TARGET pgcommon PROPERTY POSITION_INDEPENDENT_CODE TRUE) | |
+ | |
+install(TARGETS pgcommon | |
+ ARCHIVE DESTINATION ${LIBDIR}) | |
diff --git a/src/fe_utils/CMakeLists.txt b/src/fe_utils/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..6bf3fd3e35 | |
--- /dev/null | |
+++ b/src/fe_utils/CMakeLists.txt | |
@@ -0,0 +1,23 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/psql" | |
+) | |
+ | |
+set(psqlscan_flags, "-Cfe -p -p") | |
+ | |
+flex_target(psqlscan | |
+ psqlscan.l | |
+ "${CMAKE_CURRENT_SOURCE_DIR}/psqlscan.c" | |
+ ${psqlscan_flags} | |
+) | |
+ | |
+add_library(pgfeutils STATIC | |
+ mbprint.c | |
+ print.c | |
+ psqlscan.c | |
+ simple_list.c | |
+ string_utils.c | |
+ ${FLEX_psqlscan_OUTPUTS} | |
+) | |
diff --git a/src/include/CMakeLists.txt b/src/include/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c084822505 | |
--- /dev/null | |
+++ b/src/include/CMakeLists.txt | |
@@ -0,0 +1,78 @@ | |
+set(INCLUDEDIR_INTERNAL ${PKGINCLUDEDIR}/internal) | |
+ | |
+# These headers are needed by the public headers of the interfaces. | |
+install(FILES | |
+ postgres_ext.h | |
+ pg_config.h | |
+ pg_config_ext.h | |
+ pg_config_os.h | |
+ pg_config_manual.h | |
+ DESTINATION ${INCLUDEDIR}) | |
+install(FILES | |
+ libpq/libpq-fs.h | |
+ DESTINATION ${INCLUDEDIR}/libpq) | |
+ | |
+# These headers are needed by the not-so-public headers of the interfaces. | |
+install(FILES | |
+ c.h | |
+ port.h | |
+ postgres_fe.h | |
+ DESTINATION ${INCLUDEDIR_INTERNAL}) | |
+install(FILES | |
+ libpq/pqcomm.h | |
+ DESTINATION ${INCLUDEDIR_INTERNAL}/libpq) | |
+ | |
+# These headers are needed for server-side development | |
+set(SUBDIRS | |
+ access | |
+ bootstrap | |
+ catalog | |
+ commands | |
+ common | |
+ datatype | |
+ executor | |
+ foreign | |
+ lib | |
+ libpq | |
+ mb | |
+ nodes | |
+ optimizer | |
+ parser | |
+ postmaster | |
+ regex | |
+ replication | |
+ rewrite | |
+ storage | |
+ tcop | |
+ snowball | |
+ tsearch | |
+ utils | |
+ port | |
+ portability | |
+) | |
+ | |
+install(FILES | |
+ c.h | |
+ dynloader.h | |
+ fmgr.h | |
+ funcapi.h | |
+ getaddrinfo.h | |
+ getopt_long.h | |
+ miscadmin.h | |
+ pg_config_ext.h | |
+ pg_config.h | |
+ pg_config_manual.h | |
+ pg_config_os.h | |
+ pg_getopt.h | |
+ pgstat.h | |
+ pgtar.h | |
+ pgtime.h | |
+ pg_trace.h | |
+ port.h | |
+ postgres_ext.h | |
+ postgres_fe.h | |
+ postgres.h | |
+ rusagestub.h | |
+ windowapi.h | |
+ DESTINATION ${INCLUDEDIRSERVER}) | |
+install(DIRECTORY ${SUBDIRS} DESTINATION ${INCLUDEDIRSERVER}) | |
diff --git a/src/include/c.h b/src/include/c.h | |
index 016fc9b900..7f689532ad 100644 | |
--- a/src/include/c.h | |
+++ b/src/include/c.h | |
@@ -72,6 +72,10 @@ | |
#undef errcode | |
#endif | |
+#if _MSC_VER >= 1800 && defined(USE_FP_STRICT) | |
+#pragma fenv_access (off) | |
+#endif | |
+ | |
/* | |
* We have to include stdlib.h here because it defines many of these macros | |
* on some platforms, and we only want our definitions used if stdlib.h doesn't | |
@@ -315,8 +319,7 @@ typedef unsigned long long int uint64; | |
* There currently is only a limited support for the type. E.g. 128bit | |
* literals and snprintf are not supported; but math is. | |
*/ | |
-#if defined(PG_INT128_TYPE) | |
-#define HAVE_INT128 | |
+#if defined(HAVE_INT128) | |
typedef PG_INT128_TYPE int128; | |
typedef unsigned PG_INT128_TYPE uint128; | |
#endif | |
diff --git a/src/include/pg_config_cmake.in b/src/include/pg_config_cmake.in | |
new file mode 100644 | |
index 0000000000..616067a57e | |
--- /dev/null | |
+++ b/src/include/pg_config_cmake.in | |
@@ -0,0 +1,947 @@ | |
+#ifndef AUTO_CONFIG_H | |
+#define AUTO_CONFIG_H | |
+ | |
+/* Define to the type of arg 1 of 'accept' */ | |
+#define ACCEPT_TYPE_ARG1 @ACCEPT_TYPE_ARG1@ | |
+ | |
+/* Define to the type of arg 2 of 'accept' */ | |
+#define ACCEPT_TYPE_ARG2 @ACCEPT_TYPE_ARG2@ | |
+ | |
+/* Define to the type of arg 3 of 'accept' */ | |
+#define ACCEPT_TYPE_ARG3 @ACCEPT_TYPE_ARG3@ | |
+ | |
+/* Define to the return type of 'accept' */ | |
+#define ACCEPT_TYPE_RETURN @ACCEPT_TYPE_RETURN@ | |
+ | |
+/* The normal alignment of `double', in bytes. */ | |
+#define ALIGNOF_DOUBLE @ALIGNOF_DOUBLE@ | |
+ | |
+/* The normal alignment of `int', in bytes. */ | |
+#define ALIGNOF_INT @ALIGNOF_INT@ | |
+ | |
+/* The normal alignment of `long', in bytes. */ | |
+#define ALIGNOF_LONG @ALIGNOF_LONG@ | |
+ | |
+/* The normal alignment of `long long int', in bytes. */ | |
+#define ALIGNOF_LONG_LONG_INT @ALIGNOF_LONG_LONG_INT@ | |
+ | |
+/* The normal alignment of `short', in bytes. */ | |
+#define ALIGNOF_SHORT @ALIGNOF_SHORT@ | |
+ | |
+/* Size of a disk block --- this also limits the size of a tuple. You can set | |
+ it bigger if you need bigger tuples (although TOAST should reduce the need | |
+ to have large tuples, since fields can be spread across multiple tuples). | |
+ BLCKSZ must be a power of 2. The maximum possible value of BLCKSZ is | |
+ currently 2^15 (32768). This is determined by the 15-bit widths of the | |
+ lp_off and lp_len fields in ItemIdData (see include/storage/itemid.h). | |
+ Changing BLCKSZ requires an initdb. */ | |
+#define BLCKSZ @BLCKSZ@ | |
+ | |
+/* Define to the default TCP port number on which the server listens and to | |
+ which clients will try to connect. This can be overridden at run-time, but | |
+ it's convenient if your clients have the right default compiled in. | |
+ (-DPGPORT=PORTNUM) */ | |
+#define DEF_PGPORT @PGPORT@ | |
+ | |
+/* Define to the default TCP port number as a string constant. */ | |
+#define DEF_PGPORT_STR "@PGPORT@" | |
+ | |
+/* Define to build with GSSAPI support. */ | |
+#cmakedefine ENABLE_GSS | |
+ | |
+#cmakedefine ENABLE_NLS | |
+ | |
+#cmakedefine ENABLE_THREAD_SAFETY 1 | |
+ | |
+/* Define to nothing if C supports flexible array members, and to 1 if it does | |
+ not. That way, with a declaration like `struct s { int n; double | |
+ d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99 | |
+ compilers. When computing the size of such an object, don't use 'sizeof | |
+ (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)' | |
+ instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with | |
+ MSVC and with C++ compilers. */ | |
+#define FLEXIBLE_ARRAY_MEMBER @FLEXIBLE_ARRAY_MEMBER@ | |
+ | |
+/* float4 values are passed by value if 'true', by reference if 'false' */ | |
+#define FLOAT4PASSBYVAL @FLOAT4PASSBYVAL@ | |
+ | |
+/* float8, int8, and related values are passed by value if 'true', by | |
+ reference if 'false' */ | |
+#define FLOAT8PASSBYVAL @FLOAT8PASSBYVAL@ | |
+ | |
+#cmakedefine GETTIMEOFDAY_1ARG | |
+ | |
+#ifdef GETTIMEOFDAY_1ARG | |
+# define gettimeofday(a,b) gettimeofday(a) | |
+#endif | |
+ | |
+/* Define if you have the `append_history' function. */ | |
+#cmakedefine HAVE_APPEND_HISTORY | |
+ | |
+/* Define if you want to use atomics if available. */ | |
+#cmakedefine HAVE_ATOMICS | |
+ | |
+/* Define to 1 if you have the <atomic.h> header file. */ | |
+#cmakedefine HAVE_ATOMIC_H 1 | |
+ | |
+/* Define if you have the `cbrt' function. */ | |
+#cmakedefine HAVE_CBRT 1 | |
+ | |
+/* Define to 1 if you have the `class' function. */ | |
+#cmakedefine HAVE_CLASS 1 | |
+ | |
+/* Define to 1 if you have the <crtdefs.h> header file. */ | |
+#cmakedefine HAVE_CRTDEFS_H 1 | |
+ | |
+/* Define if you have the `crypt' function. */ | |
+#cmakedefine HAVE_CRYPT | |
+ | |
+/* Define if you have the <crypt.h> header file. */ | |
+#cmakedefine HAVE_CRYPT_H | |
+ | |
+/* Define to 1 if you have the declaration of `fdatasync' */ | |
+#cmakedefine HAVE_DECL_FDATASYNC 1 | |
+ | |
+/* Define to 1 if you have the declaration of `F_FULLFSYNC' */ | |
+#cmakedefine HAVE_DECL_F_FULLFSYNC 1 | |
+ | |
+/* Define to 1 if you have the declaration of `posix_fadvise' */ | |
+#cmakedefine HAVE_DECL_POSIX_FADVISE 1 | |
+ | |
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you | |
+ don't. */ | |
+#define HAVE_DECL_SNPRINTF @HAVE_DECL_SNPRINTF@ | |
+ | |
+/* Define to 1 if you have the declaration of `strlcat', and to 0 if you | |
+ don't. */ | |
+#define HAVE_DECL_STRLCAT @HAVE_DECL_STRLCAT@ | |
+ | |
+/* Define to 1 if you have the declaration of `strlcpy', and to 0 if you | |
+ don't. */ | |
+#define HAVE_DECL_STRLCPY @HAVE_DECL_STRLCPY@ | |
+ | |
+/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you | |
+ don't. */ | |
+#cmakedefine HAVE_DECL_SYS_SIGLIST 1 | |
+ | |
+/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you | |
+ don't. */ | |
+#define HAVE_DECL_VSNPRINTF @HAVE_DECL_VSNPRINTF@ | |
+ | |
+/* Define to 1 if you have the <dld.h> header file. */ | |
+#cmakedefine HAVE_DLD_H | |
+ | |
+/* Define to 1 if you have the `dlopen' function. */ | |
+#cmakedefine HAVE_DLOPEN 1 | |
+ | |
+/* Define to 1 if you have the <editline/history.h> header file. */ | |
+#cmakedefine HAVE_EDITLINE_HISTORY_H | |
+ | |
+/* Define to 1 if you have the <editline/readline.h> header file. */ | |
+#cmakedefine HAVE_EDITLINE_READLINE_H | |
+ | |
+/* Define to 1 if you have the `fdatasync' function. */ | |
+#cmakedefine HAVE_FDATASYNC 1 | |
+ | |
+/* Define to 1 if you have the `fls' function. */ | |
+#cmakedefine HAVE_FLS | |
+ | |
+/* Define to 1 if you have the `fpclass' function. */ | |
+#cmakedefine HAVE_FPCLASS 1 | |
+ | |
+/* Define to 1 if you have the `fp_class' function. */ | |
+#cmakedefine HAVE_FP_CLASS 1 | |
+ | |
+/* Define to 1 if you have the `fp_class_d' function. */ | |
+#cmakedefine HAVE_FP_CLASS_D 1 | |
+ | |
+/* Define to 1 if you have the <fp_class.h> header file. */ | |
+#cmakedefine HAVE_FP_CLASS_H 1 | |
+ | |
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ | |
+#cmakedefine HAVE_FSEEKO 1 | |
+ | |
+/* Define to 1 if your compiler understands __func__. */ | |
+#cmakedefine HAVE_FUNCNAME__FUNC | |
+ | |
+/* Define to 1 if your compiler understands __FUNCTION__. */ | |
+#cmakedefine HAVE_FUNCNAME__FUNCTION | |
+ | |
+/* Define to 1 if you have __atomic_compare_exchange_n(int *, int *, int). */ | |
+#cmakedefine HAVE_GCC__ATOMIC_INT32_CAS 1 | |
+ | |
+/* Define to 1 if you have __atomic_compare_exchange_n(int64 *, int *, int64). | |
+ */ | |
+#cmakedefine HAVE_GCC__ATOMIC_INT64_CAS 1 | |
+ | |
+/* Define to 1 if you have __sync_lock_test_and_set(char *) and friends. */ | |
+#cmakedefine HAVE_GCC__SYNC_CHAR_TAS 1 | |
+ | |
+/* Define to 1 if you have __sync_compare_and_swap(int *, int, int). */ | |
+#cmakedefine HAVE_GCC__SYNC_INT32_CAS 1 | |
+ | |
+/* Define to 1 if you have __sync_lock_test_and_set(int *) and friends. */ | |
+#cmakedefine HAVE_GCC__SYNC_INT32_TAS 1 | |
+ | |
+/* Define to 1 if you have __sync_compare_and_swap(int64 *, int64, int64). */ | |
+#cmakedefine HAVE_GCC__SYNC_INT64_CAS 1 | |
+ | |
+/* Define to 1 if you have the `getaddrinfo' function. */ | |
+#cmakedefine HAVE_GETADDRINFO 1 | |
+ | |
+/* Define to 1 if you have the `gethostbyname_r' function. */ | |
+#cmakedefine HAVE_GETHOSTBYNAME_R 1 | |
+ | |
+/* Define to 1 if you have the `getifaddrs' function. */ | |
+#cmakedefine HAVE_GETIFADDRS 1 | |
+ | |
+/* Define to 1 if you have the `getopt' function. */ | |
+#cmakedefine HAVE_GETOPT 1 | |
+ | |
+/* Define to 1 if you have the <getopt.h> header file. */ | |
+#cmakedefine HAVE_GETOPT_H 1 | |
+ | |
+/* Define to 1 if you have the `getopt_long' function. */ | |
+#cmakedefine HAVE_GETOPT_LONG 1 | |
+ | |
+/* Define to 1 if you have the `getpeereid' function. */ | |
+#cmakedefine HAVE_GETPEEREID 1 | |
+ | |
+/* Define to 1 if you have the `getpeerucred' function. */ | |
+#cmakedefine HAVE_GETPEERUCRED 1 | |
+ | |
+/* Define to 1 if you have the `getpwuid_r' function. */ | |
+#cmakedefine HAVE_GETPWUID_R 1 | |
+ | |
+/* Define to 1 if you have the `getrlimit' function. */ | |
+#cmakedefine HAVE_GETRLIMIT 1 | |
+ | |
+/* Define to 1 if you have the `getrusage' function. */ | |
+#cmakedefine HAVE_GETRUSAGE 1 | |
+ | |
+/* Define to 1 if you have the `gettimeofday' function. */ | |
+#cmakedefine HAVE_GETTIMEOFDAY 1 | |
+ | |
+/* Define to 1 if you have the <gssapi/gssapi.h> header file. */ | |
+#cmakedefine HAVE_GSSAPI_GSSAPI_H 1 | |
+ | |
+/* Define to 1 if you have the <gssapi.h> header file. */ | |
+#cmakedefine HAVE_GSSAPI_H 1 | |
+ | |
+/* Define to 1 if you have the <history.h> header file. */ | |
+#cmakedefine HAVE_HISTORY_H 1 | |
+ | |
+/* Define to 1 if you have the `history_truncate_file' function. */ | |
+#cmakedefine HAVE_HISTORY_TRUNCATE_FILE 1 | |
+ | |
+/* Define to 1 if you have the <ieeefp.h> header file. */ | |
+#cmakedefine HAVE_IEEEFP_H @HAVE_IEEEFP_H@ | |
+ | |
+/* Define to 1 if you have the <ifaddrs.h> header file. */ | |
+#cmakedefine HAVE_IFADDRS_H 1 | |
+ | |
+/* Define to 1 if you have the `inet_aton' function. */ | |
+#cmakedefine HAVE_INET_ATON 1 | |
+ | |
+/* Define to 1 if the system has the type `int64'. */ | |
+#cmakedefine HAVE_INT64 1 | |
+ | |
+/* Define to 1 if the system has the type `int8'. */ | |
+#cmakedefine HAVE_INT8 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if the system has the type `intptr_t'. */ | |
+/*#cmakedefine HAVE_INTPTR_T 1*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <inttypes.h> header file. */ | |
+/*#cmakedefine HAVE_INTTYPES_H 1*/ | |
+ | |
+/* Define to 1 if you have the global variable 'int opterr'. */ | |
+#cmakedefine HAVE_INT_OPTERR 1 | |
+ | |
+/* Define to 1 if you have the global variable 'int optreset'. */ | |
+#cmakedefine HAVE_INT_OPTRESET 1 | |
+ | |
+/* Define to 1 if you have the global variable 'int timezone'. */ | |
+#cmakedefine HAVE_INT_TIMEZONE 1 | |
+ | |
+/* Define to 1 if you have support for IPv6. */ | |
+#cmakedefine HAVE_IPV6 1 | |
+ | |
+/* Define to 1 if you have isinf(). */ | |
+#cmakedefine HAVE_ISINF 1 | |
+ | |
+/* Define to 1 if you have the <langinfo.h> header file. */ | |
+#cmakedefine HAVE_LANGINFO_H 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <ldap.h> header file. */ | |
+/*#cmakedefine HAVE_LDAP_H 1*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `crypto' library (-lcrypto). */ | |
+/*#cmakedefine HAVE_LIBCRYPTO 1*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `ldap' library (-lldap). */ | |
+/*#cmakedefine HAVE_LIBLDAP 1*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `ldap_r' library (-lldap_r). */ | |
+/*#cmakedefine HAVE_LIBLDAP_R 1*/ | |
+ | |
+/* TODO BUT NOT NEED:Define to 1 if you have the `m' library (-lm). */ | |
+/*#cmakedefine HAVE_LIBM*/ | |
+ | |
+/* TODO BUT NOT NEED:Define to 1 if you have the `pam' library (-lpam). */ | |
+/*#cmakedefine HAVE_LIBPAM 1*/ | |
+ | |
+/* Define if you have a function readline library */ | |
+#cmakedefine HAVE_LIBREADLINE 1 | |
+ | |
+/* TODO BUT NOT NEED:Define to 1 if you have the `selinux' library (-lselinux). */ | |
+/*#cmakedefine HAVE_LIBSELINUX 1*/ | |
+ | |
+/* TODO BUT NOT NEED:Define to 1 if you have the `ssl' library (-lssl). */ | |
+/*#cmakedefine HAVE_LIBSSL 1*/ | |
+ | |
+/* TODO BUT NOT NEED:Define to 1 if you have the `wldap32' library (-lwldap32). */ | |
+/*#cmakedefine HAVE_LIBWLDAP32 1*/ | |
+ | |
+/* Define to 1 if you have the `xml2' library (-lxml2). */ | |
+#cmakedefine HAVE_LIBXML2 1 | |
+ | |
+/* Define to 1 if you have the `xslt' library (-lxslt). */ | |
+#cmakedefine HAVE_LIBXSLT 1 | |
+ | |
+/* Define to 1 if you have the `z' library (-lz). */ | |
+#cmakedefine HAVE_LIBZ 1 | |
+ | |
+/* Define to 1 if constants of type 'long long int' should have the suffix LL. | |
+ */ | |
+#cmakedefine HAVE_LL_CONSTANTS 1 | |
+ | |
+/* Define to 1 if the system has the type `locale_t'. */ | |
+#cmakedefine HAVE_LOCALE_T | |
+ | |
+/* Define to 1 if `long int' works and is 64 bits. */ | |
+#cmakedefine HAVE_LONG_INT_64 1 | |
+ | |
+/* Define to 1 if the system has the type `long long int'. */ | |
+#cmakedefine HAVE_LONG_LONG_INT 1 | |
+ | |
+/* Define to 1 if `long long int' works and is 64 bits. */ | |
+#cmakedefine HAVE_LONG_LONG_INT_64 1 | |
+ | |
+/* Define to 1 if you have the <mbarrier.h> header file. */ | |
+#cmakedefine HAVE_MBARRIER_H 1 | |
+ | |
+/* Define to 1 if you have the `mbstowcs_l' function. */ | |
+#cmakedefine HAVE_MBSTOWCS_L 1 | |
+ | |
+/* Define to 1 if you have the `memmove' function. */ | |
+#cmakedefine HAVE_MEMMOVE 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <memory.h> header file. */ | |
+/*#cmakedefine HAVE_MEMORY_H 1*/ | |
+ | |
+/* Define to 1 if the system has the type `MINIDUMP_TYPE'. */ | |
+#cmakedefine HAVE_MINIDUMP_TYPE 1 | |
+ | |
+/* Define to 1 if you have the `mkdtemp' function. */ | |
+#cmakedefine HAVE_MKDTEMP 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <netinet/in.h> header file. */ | |
+/*#cmakedefine HAVE_NETINET_IN_H 1*/ | |
+ | |
+/* Define to 1 if you have the <netinet/tcp.h> header file. */ | |
+#cmakedefine HAVE_NETINET_TCP_H 1 | |
+ | |
+/* Define to 1 if you have the <net/if.h> header file. */ | |
+#cmakedefine HAVE_NET_IF_H 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <ossp/uuid.h> header file. */ | |
+/*#cmakedefine HAVE_OSSP_UUID_H 1*/ | |
+ | |
+/* Define to 1 if you have the <pam/pam_appl.h> header file. */ | |
+#cmakedefine HAVE_PAM_PAM_APPL_H 1 | |
+ | |
+/* Define to 1 if you have the `poll' function. */ | |
+#cmakedefine HAVE_POLL 1 | |
+ | |
+/* Define to 1 if you have the <poll.h> header file. */ | |
+#cmakedefine HAVE_POLL_H 1 | |
+ | |
+/* Define to 1 if you have the `posix_fadvise' function. */ | |
+#cmakedefine HAVE_POSIX_FADVISE 1 | |
+ | |
+/* Define to 1 if the assembler supports PPC's LWARX mutex hint bit. */ | |
+#cmakedefine HAVE_PPC_LWARX_MUTEX_HINT 1 | |
+ | |
+/* Define to 1 if you have the `pstat' function. */ | |
+#cmakedefine HAVE_PSTAT 1 | |
+ | |
+/* Define to 1 if the PS_STRINGS thing exists. */ | |
+#cmakedefine HAVE_PS_STRINGS 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define if you have POSIX threads libraries and header files. */ | |
+/*#cmakedefine HAVE_PTHREAD 1*/ | |
+ | |
+/* Define to 1 if you have the `pthread_is_threaded_np' function. */ | |
+#cmakedefine HAVE_PTHREAD_IS_THREADED_NP 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Have PTHREAD_PRIO_INHERIT. */ | |
+/*#cmakedefine HAVE_PTHREAD_PRIO_INHERIT 1*/ | |
+ | |
+/* Define to 1 if you have the <pwd.h> header file. */ | |
+#cmakedefine HAVE_PWD_H 1 | |
+ | |
+/* Define to 1 if you have the `random' function. */ | |
+#cmakedefine HAVE_RANDOM 1 | |
+ | |
+/* Define to 1 if you have the <readline.h> header file. */ | |
+#cmakedefine HAVE_READLINE_H 1 | |
+ | |
+/* Define to 1 if you have the <readline/history.h> header file. */ | |
+#cmakedefine HAVE_READLINE_HISTORY_H 1 | |
+ | |
+/* Define to 1 if you have the <readline/readline.h> header file. */ | |
+#cmakedefine HAVE_READLINE_READLINE_H 1 | |
+ | |
+/* Define to 1 if you have the `readlink' function. */ | |
+#cmakedefine HAVE_READLINK 1 | |
+ | |
+/* Define to 1 if you have the `rint' function. */ | |
+#cmakedefine HAVE_RINT 1 | |
+ | |
+/* Define to 1 if you have the global variable | |
+ 'rl_completion_append_character'. */ | |
+#cmakedefine HAVE_RL_COMPLETION_APPEND_CHARACTER 1 | |
+ | |
+/* Define to 1 if you have the `rl_completion_matches' function. */ | |
+#cmakedefine HAVE_RL_COMPLETION_MATCHES 1 | |
+ | |
+/* Define to 1 if you have the `rl_filename_completion_function' function. */ | |
+#cmakedefine HAVE_RL_FILENAME_COMPLETION_FUNCTION 1 | |
+ | |
+/* Define to 1 if you have the `rl_reset_screen_size' function. */ | |
+#cmakedefine HAVE_RL_RESET_SCREEN_SIZE 1 | |
+ | |
+/* Define to 1 if you have the <security/pam_appl.h> header file. */ | |
+#cmakedefine HAVE_SECURITY_PAM_APPL_H 1 | |
+ | |
+/* Define to 1 if you have the `setproctitle' function. */ | |
+#cmakedefine HAVE_SETPROCTITLE 1 | |
+ | |
+/* Define to 1 if you have the `setsid' function. */ | |
+#cmakedefine HAVE_SETSID 1 | |
+ | |
+/* Define to 1 if you have the `shm_open' function. */ | |
+#cmakedefine HAVE_SHM_OPEN 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `snprintf' function. */ | |
+/*#cmakedefine HAVE_SNPRINTF 1*/ | |
+ | |
+/* Define to 1 if you have spinlocks. */ | |
+#cmakedefine HAVE_SPINLOCKS 1 | |
+ | |
+/* Define to 1 if you have the `srandom' function. */ | |
+#cmakedefine HAVE_SRANDOM 1 | |
+ | |
+/* Define to 1 if you have the `SSL_get_current_compression' function. */ | |
+#cmakedefine HAVE_SSL_GET_CURRENT_COMPRESSION 1 | |
+ | |
+/* Define to 1 if you have the <stdint.h> header file. */ | |
+#cmakedefine HAVE_STDINT_H 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <stdlib.h> header file. */ | |
+/*#cmakedefine HAVE_STDLIB_H 1*/ | |
+ | |
+/* Define to 1 if you have the `strerror' function. */ | |
+#cmakedefine HAVE_STRERROR 1 | |
+ | |
+/* Define to 1 if you have the `strerror_r' function. */ | |
+#cmakedefine HAVE_STRERROR_R 1 | |
+ | |
+/* Define to 1 if you have the <strings.h> header file. */ | |
+#cmakedefine HAVE_STRINGS_H 1 | |
+ | |
+/* Define to 1 if you have the <string.h> header file. */ | |
+#cmakedefine HAVE_STRING_H 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `strlcat' function. */ | |
+/*#cmakedefine HAVE_STRLCAT 1*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `strlcpy' function. */ | |
+/*#cmakedefine HAVE_STRLCPY 1*/ | |
+ | |
+/* Define to use have a strong random number source */ | |
+#cmakedefine HAVE_STRONG_RANDOM 1 | |
+ | |
+/* Define to 1 if you have the `strtoll' function. */ | |
+#cmakedefine HAVE_STRTOLL 1 | |
+ | |
+/* Define to 1 if you have the `strtoq' function. */ | |
+#cmakedefine HAVE_STRTOQ 1 | |
+ | |
+/* Define to 1 if you have the `strtoull' function. */ | |
+#cmakedefine HAVE_STRTOULL 1 | |
+ | |
+/* Define to 1 if you have the `strtouq' function. */ | |
+#cmakedefine HAVE_STRTOUQ 1 | |
+ | |
+/* Define to 1 if the system has the type `struct addrinfo'. */ | |
+#cmakedefine HAVE_STRUCT_ADDRINFO 1 | |
+ | |
+/* Define to 1 if the system has the type `struct cmsgcred'. */ | |
+#cmakedefine HAVE_STRUCT_CMSGCRED 1 | |
+ | |
+/* Define to 1 if the system has the type `struct option'. */ | |
+#cmakedefine HAVE_STRUCT_OPTION 1 | |
+ | |
+/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */ | |
+#cmakedefine HAVE_STRUCT_SOCKADDR_SA_LEN 1 | |
+ | |
+/* Define to 1 if the system has the type `struct sockaddr_storage'. */ | |
+#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE 1 | |
+ | |
+/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */ | |
+#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 | |
+ | |
+/* Define to 1 if `ss_len' is a member of `struct sockaddr_storage'. */ | |
+#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 | |
+ | |
+/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */ | |
+#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY 1 | |
+ | |
+/* Define to 1 if `__ss_len' is a member of `struct sockaddr_storage'. */ | |
+#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN 1 | |
+ | |
+/* Define to 1 if `tm_zone' is a member of `struct tm'. */ | |
+#cmakedefine HAVE_STRUCT_TM_TM_ZONE 1 | |
+ | |
+/* Define to 1 if you have the `symlink' function. */ | |
+#cmakedefine HAVE_SYMLINK 1 | |
+ | |
+/* Define to 1 if you have the `sync_file_range' function. */ | |
+#cmakedefine HAVE_SYNC_FILE_RANGE 1 | |
+ | |
+/* Define to 1 if you have the syslog interface. */ | |
+#cmakedefine HAVE_SYSLOG 1 | |
+ | |
+/* Define to 1 if you have the <sys/epoll.h> header file. */ | |
+#cmakedefine HAVE_SYS_EPOLL_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/ioctl.h> header file. */ | |
+#cmakedefine HAVE_SYS_IOCTL_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/ipc.h> header file. */ | |
+#cmakedefine HAVE_SYS_IPC_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/poll.h> header file. */ | |
+#cmakedefine HAVE_SYS_POLL_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/pstat.h> header file. */ | |
+#cmakedefine HAVE_SYS_PSTAT_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/resource.h> header file. */ | |
+#cmakedefine HAVE_SYS_RESOURCE_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/select.h> header file. */ | |
+#cmakedefine HAVE_SYS_SELECT_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/sem.h> header file. */ | |
+#cmakedefine HAVE_SYS_SEM_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/shm.h> header file. */ | |
+#cmakedefine HAVE_SYS_SHM_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/socket.h> header file. */ | |
+#cmakedefine HAVE_SYS_SOCKET_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/sockio.h> header file. */ | |
+#cmakedefine HAVE_SYS_SOCKIO_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/stat.h> header file. */ | |
+#cmakedefine HAVE_SYS_STAT_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/tas.h> header file. */ | |
+#cmakedefine HAVE_SYS_TAS_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/time.h> header file. */ | |
+#cmakedefine HAVE_SYS_TIME_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/types.h> header file. */ | |
+#cmakedefine HAVE_SYS_TYPES_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/ucred.h> header file. */ | |
+#cmakedefine HAVE_SYS_UCRED_H 1 | |
+ | |
+/* Define to 1 if you have the <sys/un.h> header file. */ | |
+#cmakedefine HAVE_SYS_UN_H 1 | |
+ | |
+/* Define to 1 if you have the <termios.h> header file. */ | |
+#cmakedefine HAVE_TERMIOS_H 1 | |
+ | |
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use | |
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */ | |
+#cmakedefine HAVE_TM_ZONE 1 | |
+ | |
+/* Define to 1 if you have the `towlower' function. */ | |
+#cmakedefine HAVE_TOWLOWER 1 | |
+ | |
+/* Define to 1 if you have the external array `tzname'. */ | |
+#cmakedefine HAVE_TZNAME 1 | |
+ | |
+/* Define to 1 if you have the <ucred.h> header file. */ | |
+#cmakedefine HAVE_UCRED_H 1 | |
+ | |
+/* Define to 1 if the system has the type `uint64'. */ | |
+#cmakedefine HAVE_UINT64 1 | |
+ | |
+/* Define to 1 if the system has the type `uint8'. */ | |
+#cmakedefine HAVE_UINT8 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if the system has the type `uintptr_t'. */ | |
+/*#cmakedefine HAVE_UINTPTR_T 1*/ | |
+ | |
+/* Define to 1 if the system has the type `union semun'. */ | |
+#cmakedefine HAVE_UNION_SEMUN 1 | |
+ | |
+/* Define to 1 if you have the <unistd.h> header file. */ | |
+#cmakedefine HAVE_UNISTD_H 1 | |
+ | |
+/* Define to 1 if you have unix sockets. */ | |
+#cmakedefine HAVE_UNIX_SOCKETS 1 | |
+ | |
+/* Define to 1 if you have the `unsetenv' function. */ | |
+#cmakedefine HAVE_UNSETENV 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if the system has the type `unsigned long long int'. */ | |
+/*#cmakedefine HAVE_UNSIGNED_LONG_LONG_INT 1*/ | |
+ | |
+/* Define to 1 if you have the `utime' function. */ | |
+#cmakedefine HAVE_UTIME 1 | |
+ | |
+/* Define to 1 if you have the `utimes' function. */ | |
+#cmakedefine HAVE_UTIMES 1 | |
+ | |
+/* Define to 1 if you have the <utime.h> header file. */ | |
+#cmakedefine HAVE_UTIME_H 1 | |
+ | |
+/* Define to 1 if you have BSD UUID support. */ | |
+#cmakedefine HAVE_UUID_BSD 1 | |
+ | |
+/* Define to 1 if you have E2FS UUID support. */ | |
+#cmakedefine HAVE_UUID_E2FS 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <uuid.h> header file. */ | |
+/*#cmakedefine HAVE_UUID_H 1*/ | |
+ | |
+/* Define to 1 if you have OSSP UUID support. */ | |
+#cmakedefine HAVE_UUID_OSSP 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the <uuid/uuid.h> header file. */ | |
+/*#cmakedefine HAVE_UUID_UUID_H 1*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the `vsnprintf' function. */ | |
+/*#cmakedefine HAVE_VSNPRINTF 1*/ | |
+ | |
+/* Define to 1 if you have the <wchar.h> header file. */ | |
+#cmakedefine HAVE_WCHAR_H 1 | |
+ | |
+/* Define to 1 if you have the `wcstombs' function. */ | |
+#cmakedefine HAVE_WCSTOMBS 1 | |
+ | |
+/* Define to 1 if you have the `wcstombs_l' function. */ | |
+#cmakedefine HAVE_WCSTOMBS_L 1 | |
+ | |
+/* Define to 1 if you have the <wctype.h> header file. */ | |
+#cmakedefine HAVE_WCTYPE_H 1 | |
+ | |
+/* Define to 1 if you have the <winldap.h> header file. */ | |
+#cmakedefine HAVE_WINLDAP_H 1 | |
+ | |
+/* Define to 1 if your compiler understands __builtin_bswap32. */ | |
+#cmakedefine HAVE__BUILTIN_BSWAP32 1 | |
+ | |
+/* Define to 1 if your compiler understands __builtin_bswap64. */ | |
+#cmakedefine HAVE__BUILTIN_BSWAP64 1 | |
+ | |
+/* Define to 1 if your compiler understands __builtin_constant_p. */ | |
+#cmakedefine HAVE__BUILTIN_CONSTANT_P 1 | |
+ | |
+/* Define to 1 if your compiler understands __builtin_types_compatible_p. */ | |
+#cmakedefine HAVE__BUILTIN_TYPES_COMPATIBLE_P 1 | |
+ | |
+/* Define to 1 if your compiler understands __builtin_unreachable. */ | |
+#cmakedefine HAVE__BUILTIN_UNREACHABLE 1 | |
+ | |
+/* Define to 1 if you have __cpuid. */ | |
+#cmakedefine HAVE__CPUID 1 | |
+ | |
+/* Define to 1 if you have __cpuid. */ | |
+#cmakedefine HAVE__GET_CPUID 1 | |
+ | |
+/* Define to 1 if your compiler understands _Static_assert. */ | |
+#cmakedefine HAVE__STATIC_ASSERT 1 | |
+ | |
+/* Define to 1 if your compiler understands __VA_ARGS__ in macros. */ | |
+#cmakedefine HAVE__VA_ARGS 1 | |
+ | |
+/* Define to the appropriate snprintf length modifier for 64-bit ints. */ | |
+#define INT64_MODIFIER "@LONG_LONG_INT_MODIFIER@" | |
+ | |
+/* Define to 1 if `locale_t' requires <xlocale.h>. */ | |
+#cmakedefine LOCALE_T_IN_XLOCALE 1 | |
+ | |
+/* Define as the maximum alignment requirement of any C data type. */ | |
+#define MAXIMUM_ALIGNOF @MAXIMUM_ALIGNOF@ | |
+ | |
+/* Define bytes to use libc memset(). */ | |
+#define MEMSET_LOOP_LIMIT @MEMSET_LOOP_LIMIT@ | |
+ | |
+/* Define to the address where bug reports for this package should be sent. */ | |
+#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" | |
+ | |
+/* TODO BUT DO NOT NEED:Define to the full name of this package. */ | |
+/*#define PACKAGE_NAME "@PACKAGE_NAME@"*/ | |
+ | |
+/* TODO:Define to the full name and version of this package. */ | |
+/*#define PACKAGE_STRING "@PACKAGE_STRING@"*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to the one symbol short name of this package. */ | |
+/*#define PACKAGE_TARNAME "@PACKAGE_TARNAME@"*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to the home page for this package. */ | |
+/*#define PACKAGE_URL "@PACKAGE_URL@"*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to the version of this package. */ | |
+/*#define PACKAGE_VERSION "@PACKAGE_VERSION@"*/ | |
+ | |
+/* Define to the name of a signed 128-bit integer type. */ | |
+#define PG_INT128_TYPE @PG_INT128_TYPE@ | |
+ | |
+/* Define to the name of a signed 64-bit integer type. */ | |
+#define PG_INT64_TYPE @PG_INT64_TYPE@ | |
+ | |
+/* Define to the name of the default PostgreSQL service principal in Kerberos | |
+ (GSSAPI). */ | |
+#define PG_KRB_SRVNAM "@PG_KRB_SRVNAM@" | |
+ | |
+/* PostgreSQL major version as a string */ | |
+#define PG_MAJORVERSION "@POSTGRES_MAJOR_VERSION@" | |
+ | |
+/* Define to gnu_printf if compiler supports it, else printf. */ | |
+#define PG_PRINTF_ATTRIBUTE @PG_PRINTF_ATTRIBUTE@ | |
+ | |
+/* PostgreSQL version as a string */ | |
+#define PG_VERSION "@PG_VERSION@" | |
+ | |
+/* PostgreSQL version as a number */ | |
+#define PG_VERSION_NUM @PG_VERSION_NUM@ | |
+ | |
+/* A string containing the version number, platform, and C compiler */ | |
+#define PG_VERSION_STR "PostgreSQL @PG_VERSION@ on @CMAKE_SYSTEM_NAME@, compiled by @CMAKE_C_COMPILER_ID@, @VOID_POINTER_SIZE_BIT@-bit" | |
+ | |
+/* Define to 1 to allow profiling output to be saved separately for each | |
+ process. */ | |
+#cmakedefine PROFILE_PID_DIR 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to necessary symbol if this constant uses a non-standard name on | |
+ your system. */ | |
+/*#cmakedefine PTHREAD_CREATE_JOINABLE*/ | |
+ | |
+/* RELSEG_SIZE is the maximum number of blocks allowed in one disk file. Thus, | |
+ the maximum size of a single file is RELSEG_SIZE * BLCKSZ; relations bigger | |
+ than that are divided into multiple files. RELSEG_SIZE * BLCKSZ must be | |
+ less than your OS' limit on file size. This is often 2 GB or 4GB in a | |
+ 32-bit operating system, unless you have large file support enabled. By | |
+ default, we make the limit 1 GB to avoid any possible integer-overflow | |
+ problems within the OS. A limit smaller than necessary only means we divide | |
+ a large relation into more chunks than necessary, so it seems best to err | |
+ in the direction of a small limit. A power-of-2 value is recommended to | |
+ save a few cycles in md.c, but is not absolutely required. Changing | |
+ RELSEG_SIZE requires an initdb. */ | |
+#define RELSEG_SIZE @RELSEG_SIZE@ | |
+ | |
+/* The size of `long', as computed by sizeof. */ | |
+#define SIZEOF_LONG @SIZEOF_LONG@ | |
+ | |
+/* TODO BUT DO NOT NEED:The size of `off_t', as computed by sizeof. */ | |
+/*#define SIZEOF_OFF_T @SIZEOF_OFF_T@*/ | |
+ | |
+/* The size of `size_t', as computed by sizeof. */ | |
+#define SIZEOF_SIZE_T @SIZEOF_SIZE_T@ | |
+ | |
+/* The size of `void *', as computed by sizeof. */ | |
+#define SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if you have the ANSI C header files. */ | |
+/*#cmakedefine STDC_HEADERS 1*/ | |
+ | |
+/* Define to 1 if strerror_r() returns a int. */ | |
+#cmakedefine STRERROR_R_INT 1 | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 if your <sys/time.h> declares `struct tm'. */ | |
+/*#cmakedefine TM_IN_SYS_TIME 1*/ | |
+ | |
+/* Define to 1 to build with assertion checks. (--enable-cassert) */ | |
+#cmakedefine USE_ASSERT_CHECKING 1 | |
+ | |
+/* Define to 1 to build with Bonjour support. (--with-bonjour) */ | |
+#cmakedefine USE_BONJOUR 1 | |
+ | |
+/* Define to 1 to build with BSD Authentication support. (--with-bsd-auth) */ | |
+#cmakedefine USE_BSD_AUTH 1 | |
+ | |
+/* Define to use /dev/urandom for random number generation */ | |
+#cmakedefine USE_DEV_URANDOM 1 | |
+ | |
+/* Define to 1 if you want float4 values to be passed by value. */ | |
+#cmakedefine USE_FLOAT4_BYVAL 1 | |
+ | |
+/* Define to 1 if you want float8, int8, etc values to be passed by value. */ | |
+#cmakedefine USE_FLOAT8_BYVAL 1 | |
+ | |
+/* Define to 1 if you want 64-bit integer timestamp and interval support. */ | |
+#cmakedefine USE_INTEGER_DATETIMES 1 | |
+ | |
+/* Define to 1 if build with ICU support. */ | |
+#cmakedefine USE_ICU 1 | |
+ | |
+/* Define to 1 to build with LDAP support. */ | |
+#cmakedefine USE_LDAP 1 | |
+ | |
+/* Define to 1 to build with XML support. (-DWITH_LIBXML) */ | |
+#cmakedefine USE_LIBXML 1 | |
+ | |
+/* Define to 1 to use XSLT support when building contrib/xml2. */ | |
+#cmakedefine USE_LIBXSLT 1 | |
+ | |
+/* Define to select named POSIX semaphores. */ | |
+#cmakedefine USE_NAMED_POSIX_SEMAPHORES 1 | |
+ | |
+/* Define to build with OpenSSL support. (--with-openssl) */ | |
+#cmakedefine USE_OPENSSL 1 | |
+ | |
+/* Define to use OpenSSL for random number generation */ | |
+#cmakedefine USE_OPENSSL_RANDOM 1 | |
+ | |
+/* Define to 1 to build with PAM support. (--with-pam) */ | |
+#cmakedefine USE_PAM 1 | |
+ | |
+/* Use replacement snprintf() functions. */ | |
+#cmakedefine USE_REPL_SNPRINTF 1 | |
+ | |
+/* Define to 1 to use Intel SSE 4.2 CRC instructions with a runtime check. */ | |
+#cmakedefine USE_SLICING_BY_8_CRC32C 1 | |
+ | |
+/* Define to 1 use Intel SSE 4.2 CRC instructions. */ | |
+#cmakedefine USE_SSE42_CRC32C 1 | |
+ | |
+/* Define to 1 to use Intel SSSE 4.2 CRC instructions with a runtime check. */ | |
+#cmakedefine USE_SSE42_CRC32C_WITH_RUNTIME_CHECK 1 | |
+ | |
+/* Define to build with systemd support. (--with-systemd) */ | |
+#cmakedefine USE_SYSTEMD | |
+ | |
+/* Define to select SysV-style semaphores. */ | |
+#cmakedefine USE_SYSV_SEMAPHORES | |
+ | |
+/* Define to select SysV-style shared memory. */ | |
+#cmakedefine USE_SYSV_SHARED_MEMORY | |
+ | |
+/* Define to select unnamed POSIX semaphores. */ | |
+#cmakedefine USE_UNNAMED_POSIX_SEMAPHORES | |
+ | |
+/* Define to use native Windows API for random number generation */ | |
+#cmakedefine USE_WIN32_RANDOM 1 | |
+ | |
+/* Define to select Win32-style semaphores. */ | |
+#cmakedefine USE_WIN32_SEMAPHORES | |
+ | |
+/* TODO BUT DO NOT NEED:Define to select Win32-style shared memory. */ | |
+/*#cmakedefine USE_WIN32_SHARED_MEMORY*/ | |
+ | |
+/* Define to 1 if `wcstombs_l' requires <xlocale.h>. */ | |
+#cmakedefine WCSTOMBS_L_IN_XLOCALE 1 | |
+ | |
+/* NOT NEED:Define WORDS_BIGENDIAN to 1 if your processor stores words with the most | |
+ significant byte first (like Motorola and SPARC, unlike Intel). */ | |
+/*#if defined AC_APPLE_UNIVERSAL_BUILD | |
+# if defined __BIG_ENDIAN__ | |
+# define WORDS_BIGENDIAN 1 | |
+# endif | |
+#else | |
+# ifndef WORDS_BIGENDIAN | |
+# undef WORDS_BIGENDIAN | |
+# endif | |
+#endif*/ | |
+ | |
+/* Size of a WAL file block. This need have no particular relation to BLCKSZ. | |
+ XLOG_BLCKSZ must be a power of 2, and if your system supports O_DIRECT I/O, | |
+ XLOG_BLCKSZ must be a multiple of the alignment requirement for direct-I/O | |
+ buffers, else direct I/O may fail. Changing XLOG_BLCKSZ requires an initdb. | |
+ */ | |
+#define XLOG_BLCKSZ @XLOG_BLCKSZ@ | |
+ | |
+/* XLOG_SEG_SIZE is the size of a single WAL file. This must be a power of 2 | |
+ and larger than XLOG_BLCKSZ (preferably, a great deal larger than | |
+ XLOG_BLCKSZ). Changing XLOG_SEG_SIZE requires an initdb. */ | |
+#define XLOG_SEG_SIZE @XLOG_SEG_SIZE@ | |
+ | |
+/* TODO BUT DO NOT NEED:Number of bits in a file offset, on hosts where this is settable. */ | |
+/*#undef _FILE_OFFSET_BITS*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ | |
+/*#undef _LARGEFILE_SOURCE*/ | |
+ | |
+/* TODO BUT DO NOT NEED:Define for large files, on AIX-style hosts. */ | |
+/*#undef _LARGE_FILES*/ | |
+ | |
+/* Define to `__inline__' or `__inline' if that's what the C compiler | |
+ calls it, or to nothing if 'inline' is not supported under any name. */ | |
+#ifndef __cplusplus | |
+#undef inline | |
+#endif | |
+ | |
+/* Define to the type of a signed integer type wide enough to hold a pointer, | |
+ if such a type exists, and if the system does not define it. */ | |
+/*#undef intptr_t*/ | |
+ | |
+/* Define to empty if the C compiler does not understand signed types. */ | |
+/*#undef signed*/ | |
+ | |
+/* Define to the type of an unsigned integer type wide enough to hold a | |
+ pointer, if such a type exists, and if the system does not define it. */ | |
+/*#undef uintptr_t*/ | |
+ | |
+#cmakedefine HAVE_INT128 | |
+ | |
+#ifdef WIN32 | |
+#undef PG_INT128_TYPE | |
+#endif | |
+ | |
+#define LONG_LONG_INT_MODIFIER @LONG_LONG_INT_MODIFIER@ | |
+ | |
+#define POSTGRES_MAJOR_VERSION @POSTGRES_MAJOR_VERSION@ | |
+ | |
+#define POSTGRES_MINOR_VERSION @POSTGRES_MINOR_VERSION@ | |
+ | |
+#define POSTGRES_PATCH_VERSION @POSTGRES_PATCH_VERSION@ | |
+ | |
+#ifdef __APPLE__ | |
+# if __BIG_ENDIAN | |
+# define WORDS_BIGENDIAN 1 | |
+# endif | |
+#else | |
+#cmakedefine WORDS_BIGENDIAN 1 | |
+#endif | |
+ | |
+#define DLSUFFIX "@CMAKE_SHARED_MODULE_SUFFIX@" | |
+ | |
+#cmakedefine HAVE_MKSTEMP 1 | |
+ | |
+#cmakedefine HAVE_NBTOOL_CONFIG_H 1 | |
+ | |
+/*#include "@pgos_include_SRCS@"*/ | |
+ | |
+#cmakedefine USE_FP_STRICT 1 | |
+ | |
+#endif // AUTO_CONFIG_H | |
diff --git a/src/include/pg_config_ext_cmake.in b/src/include/pg_config_ext_cmake.in | |
new file mode 100644 | |
index 0000000000..a73f04bcc3 | |
--- /dev/null | |
+++ b/src/include/pg_config_ext_cmake.in | |
@@ -0,0 +1 @@ | |
+#define PG_INT64_TYPE @PG_INT64_TYPE@ | |
\ No newline at end of file | |
diff --git a/src/include/pg_config_paths_cmake.in b/src/include/pg_config_paths_cmake.in | |
new file mode 100644 | |
index 0000000000..f1b3c084eb | |
--- /dev/null | |
+++ b/src/include/pg_config_paths_cmake.in | |
@@ -0,0 +1,12 @@ | |
+#define PGBINDIR "@PGBINDIR@" | |
+#define PGSHAREDIR "@PGSHAREDIR@" | |
+#define SYSCONFDIR "@SYSCONFDIR@" | |
+#define INCLUDEDIR "@INCLUDEDIR@" | |
+#define PKGINCLUDEDIR "@PKGINCLUDEDIR@" | |
+#define INCLUDEDIRSERVER "@INCLUDEDIRSERVER@" | |
+#define LIBDIR "@LIBDIR@" | |
+#define PKGLIBDIR "@PKGLIBDIR@" | |
+#define LOCALEDIR "@LOCALEDIR@" | |
+#define DOCDIR "@DOCDIR@" | |
+#define HTMLDIR "@HTMLDIR@" | |
+#define MANDIR "@MANDIR@" | |
\ No newline at end of file | |
diff --git a/src/interfaces/ecpg/compatlib/CMakeLists.txt b/src/interfaces/ecpg/compatlib/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..3214951b66 | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/compatlib/CMakeLists.txt | |
@@ -0,0 +1,27 @@ | |
+include_directories(BEFORE | |
+ "${CMAKE_CURRENT_SOURCE_DIR}" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+set(ecpg_compat_SRC | |
+ informix.c | |
+) | |
+if(USE_REPL_SNPRINTF) | |
+ set(ecpg_compat_SRC | |
+ ${ecpg_compat_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/snprintf.c | |
+ ) | |
+endif() | |
+ | |
+add_library(ecpg_compat SHARED ${ecpg_compat_SRC}) | |
+if (MSVC) | |
+ gen_def(ecpg_compat) | |
+endif() | |
+target_link_libraries(ecpg_compat ${LIB_M} pgtypes pq ecpg) | |
+target_compile_definitions(ecpg_compat PRIVATE -DFRONTEND) | |
+set_target_properties(ecpg_compat PROPERTIES VERSION "3.8") | |
+ | |
+install(TARGETS ecpg_compat | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/src/interfaces/ecpg/ecpglib/CMakeLists.txt b/src/interfaces/ecpg/ecpglib/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..158ec62616 | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/ecpglib/CMakeLists.txt | |
@@ -0,0 +1,76 @@ | |
+include_directories(BEFORE | |
+ "${CMAKE_CURRENT_SOURCE_DIR}" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+set(ecpg_SRC | |
+ execute.c | |
+ typename.c | |
+ descriptor.c | |
+ sqlda.c | |
+ data.c | |
+ error.c | |
+ prepare.c | |
+ memory.c | |
+ connect.c | |
+ misc.c | |
+ ${PROJECT_SOURCE_DIR}/src/port/path.c | |
+ ${PROJECT_SOURCE_DIR}/src/port/pgstrcasecmp.c | |
+) | |
+ | |
+if(USE_REPL_SNPRINTF) | |
+ set(ecpg_SRC | |
+ ${ecpg_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/snprintf.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_RINT) | |
+ set(ecpg_SRC | |
+ ${ecpg_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/rint.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_DECL_STRLCPY) | |
+ set(ecpg_SRC | |
+ ${ecpg_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/strlcpy.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_ISINF) | |
+ set(ecpg_SRC | |
+ ${ecpg_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/isinf.c | |
+ ) | |
+endif() | |
+ | |
+if(WIN32) | |
+ set(ecpg_SRC | |
+ ${ecpg_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/win32setlocale.c | |
+ ) | |
+else() | |
+ set(ecpg_SRC | |
+ ${ecpg_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/thread.c | |
+ ) | |
+endif() | |
+ | |
+add_library(ecpg SHARED ${ecpg_SRC}) | |
+if (MSVC) | |
+ gen_def(ecpg) | |
+endif() | |
+target_link_libraries(ecpg ${LIB_M} pgtypes pq) | |
+target_compile_definitions(ecpg PRIVATE -DFRONTEND) | |
+set_target_properties(ecpg PROPERTIES VERSION "6.8") | |
+ | |
+install(TARGETS ecpg | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(ecpg "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;tr;zh_CN") | |
+endif() | |
diff --git a/src/interfaces/ecpg/include/CMakeLists.txt b/src/interfaces/ecpg/include/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..63c42e8f26 | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/include/CMakeLists.txt | |
@@ -0,0 +1,25 @@ | |
+set(INCLUDEDIR_INTERNAL ${PKGINCLUDEDIR}/internal) | |
+ | |
+install(FILES | |
+ ecpgerrno.h | |
+ ecpglib.h | |
+ ecpgtype.h | |
+ sqlca.h | |
+ sql3types.h | |
+ ecpg_informix.h | |
+ pgtypes_error.h | |
+ pgtypes_numeric.h | |
+ pgtypes_timestamp.h | |
+ pgtypes_date.h | |
+ pgtypes_interval.h | |
+ sqlda.h | |
+ sqlda-compat.h | |
+ sqlda-native.h | |
+ ecpg_config.h | |
+ DESTINATION ${INCLUDEDIR}) | |
+ | |
+install(FILES | |
+ datetime.h | |
+ decimal.h | |
+ sqltypes.h | |
+ DESTINATION ${PKGINCLUDEDIR}/informix/esql) | |
diff --git a/src/interfaces/ecpg/include/ecpg_config_cmake.in b/src/interfaces/ecpg/include/ecpg_config_cmake.in | |
new file mode 100644 | |
index 0000000000..1f3fcb83a2 | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/include/ecpg_config_cmake.in | |
@@ -0,0 +1,19 @@ | |
+/* Define to 1 if the system has the type `int64'. */ | |
+#cmakedefine HAVE_INT64 1 | |
+ | |
+/* Define to 1 if `long int' works and is 64 bits. */ | |
+#cmakedefine HAVE_LONG_INT_64 1 | |
+ | |
+/* Define to 1 if the system has the type `long long int'. */ | |
+#cmakedefine HAVE_LONG_LONG_INT 1 | |
+ | |
+/* Define to 1 if `long long int' works and is 64 bits. */ | |
+#cmakedefine HAVE_LONG_LONG_INT_64 1 | |
+ | |
+/* Define to 1 if you want 64-bit integer timestamp and interval support. | |
+ (--enable-integer-datetimes) */ | |
+#cmakedefine USE_INTEGER_DATETIMES 1 | |
+ | |
+/* Define to 1 to build client libraries as thread-safe code. | |
+ * (--enable-thread-safety) */ | |
+#cmakedefine ENABLE_THREAD_SAFETY 1 | |
diff --git a/src/interfaces/ecpg/pgtypeslib/CMakeLists.txt b/src/interfaces/ecpg/pgtypeslib/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..a36ddcaeac | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/pgtypeslib/CMakeLists.txt | |
@@ -0,0 +1,41 @@ | |
+include_directories(BEFORE | |
+ "${CMAKE_CURRENT_SOURCE_DIR}" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include" | |
+) | |
+set(pgtypes_SRC | |
+ numeric.c | |
+ datetime.c | |
+ common.c | |
+ dt_common.c | |
+ timestamp.c | |
+ interval.c | |
+ ${PROJECT_SOURCE_DIR}/src/port/pgstrcasecmp.c | |
+) | |
+if(USE_REPL_SNPRINTF) | |
+ set(pgtypes_SRC | |
+ ${pgtypes_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/snprintf.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_RINT) | |
+ set(pgtypes_SRC | |
+ ${pgtypes_SRC} | |
+ ${PROJECT_SOURCE_DIR}/src/port/rint.c | |
+ ) | |
+endif() | |
+ | |
+add_library(pgtypes SHARED ${pgtypes_SRC}) | |
+if (MSVC) | |
+ gen_def(pgtypes) | |
+endif() | |
+ | |
+target_link_libraries(pgtypes ${LIB_M}) | |
+target_compile_definitions(pgtypes PRIVATE -DFRONTEND) | |
+set_target_properties(pgtypes PROPERTIES VERSION "3.7") | |
+ | |
+ | |
+install(TARGETS pgtypes | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/src/interfaces/ecpg/preproc/CMakeLists.txt b/src/interfaces/ecpg/preproc/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..56e0ce6791 | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/preproc/CMakeLists.txt | |
@@ -0,0 +1,59 @@ | |
+include_directories(BEFORE | |
+ "${CMAKE_CURRENT_SOURCE_DIR}" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+) | |
+ | |
+set(preproc_parser_DEP | |
+ ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.y | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/parse.pl | |
+) | |
+ | |
+add_custom_command( | |
+ DEPENDS ${preproc_parser_DEP} | |
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/preproc.y | |
+ COMMAND ${PERL_EXECUTABLE} parse.pl . < ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.y > preproc.y | |
+ COMMAND ${PERL_EXECUTABLE} check_rules.pl . ${PROJECT_SOURCE_DIR}/src/backend/parser/gram.y | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+bison_target(PREPROC_PARSER ${CMAKE_CURRENT_SOURCE_DIR}/preproc.y ${CMAKE_CURRENT_SOURCE_DIR}/preproc.c) | |
+flex_target(PREPROC_SCANNER pgc.l ${CMAKE_CURRENT_SOURCE_DIR}/pgc.c) | |
+add_flex_bison_dependency(PREPROC_SCANNER PREPROC_PARSER) | |
+ | |
+ | |
+set(preproc_SRC | |
+ preproc.c | |
+ pgc.c | |
+ type.c | |
+ ecpg.c | |
+ output.c | |
+ parser.c | |
+ keywords.c | |
+ c_keywords.c | |
+ ecpg_keywords.c | |
+ ${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/ecpglib/typename.c | |
+ descriptor.c | |
+ variable.c | |
+) | |
+ | |
+ | |
+add_executable(ecpg_preproc | |
+ ${preproc_SRC} | |
+) | |
+ | |
+target_link_libraries(ecpg_preproc | |
+ #pq | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+target_compile_definitions(ecpg_preproc PRIVATE | |
+ -DECPG_COMPILE | |
+) | |
+ | |
+SET_TARGET_PROPERTIES(ecpg_preproc | |
+ PROPERTIES OUTPUT_NAME ecpg | |
+ RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR} | |
+ RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}) | |
diff --git a/src/interfaces/ecpg/test/CMakeLists.txt b/src/interfaces/ecpg/test/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..ae94858881 | |
--- /dev/null | |
+++ b/src/interfaces/ecpg/test/CMakeLists.txt | |
@@ -0,0 +1,177 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+ "${PROJECT_SOURCE_DIR}/src/test/regress" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include" | |
+) | |
+ | |
+add_executable(pg_ecpg_regress | |
+ ${PROJECT_SOURCE_DIR}/src/test/regress/pg_regress.c | |
+ pg_regress_ecpg.c | |
+) | |
+ | |
+target_link_libraries(pg_ecpg_regress | |
+ pq | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+target_compile_definitions(pg_ecpg_regress PRIVATE | |
+ -DHOST_TUPLE="${HOST_TUPLE}" | |
+ -DSHELLPROG="$ENV{SHELL}" | |
+) | |
+ | |
+set(connect_tests | |
+ test1 | |
+ test2 | |
+ test3 | |
+ test4 | |
+ test5 | |
+) | |
+ | |
+set(compat_informix_tests | |
+ test_informix | |
+ test_informix2 | |
+ dec_test | |
+ rfmtdate | |
+ rfmtlong | |
+ rnull | |
+ sqlda | |
+ describe | |
+ charfuncs | |
+) | |
+ | |
+set(pgtypeslib_tests | |
+ dt_test | |
+ dt_test2 | |
+ num_test | |
+ num_test2 | |
+ nan_test | |
+) | |
+ | |
+set(preproc_tests | |
+ array_of_struct | |
+ autoprep | |
+ comment | |
+ cursor | |
+ define | |
+ init | |
+ strings | |
+ outofscope | |
+ type | |
+ variable | |
+ whenever | |
+ pointer_to_struct | |
+) | |
+ | |
+set(sql_tests | |
+ array | |
+ binary | |
+ code100 | |
+ copystdout | |
+ define | |
+ desc | |
+ sqlda | |
+ describe | |
+ dyntest | |
+ dynalloc | |
+ dynalloc2 | |
+ execute | |
+ fetch | |
+ func | |
+ indicators | |
+ oldexec | |
+ parser | |
+ quote | |
+ show | |
+ insupd | |
+ twophase | |
+) | |
+ | |
+set(thread_tests | |
+ thread_implicit | |
+ thread | |
+ prep | |
+ descriptor | |
+ alloc | |
+) | |
+ | |
+set(ecpg_preproc_bin ${CMAKE_BINARY_DIR}/src/interfaces/ecpg/preproc/ecpg${CMAKE_EXECUTABLE_SUFFIX}) | |
+ | |
+macro(ECPG_CHECK TARGET_LIST FOLDER PREPROC_OPTS) | |
+ foreach(test ${TARGET_LIST}) | |
+ if(${test} STREQUAL "rnull") | |
+ set(PREPROC_OPTS2 "-r;no_indicator") | |
+ elseif(${test} STREQUAL "array_of_struct") | |
+ set(PREPROC_OPTS2 "-c") | |
+ elseif(${test} STREQUAL "pointer_to_struct") | |
+ set(PREPROC_OPTS2 "-c") | |
+ elseif(${test} STREQUAL "autoprep") | |
+ set(PREPROC_OPTS2 "-r;prepare") | |
+ elseif(${test} STREQUAL "strings") | |
+ set(PREPROC_OPTS2 "-i") | |
+ elseif(${test} STREQUAL "oldexec") | |
+ set(PREPROC_OPTS2 "-r;questionmarks") | |
+ else() | |
+ set(PREPROC_OPTS2 "") | |
+ endif() | |
+ add_custom_command( | |
+ DEPENDS ecpg_preproc | |
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${FOLDER}/${test}.c | |
+ COMMAND ${ecpg_preproc_bin} --regression ${PREPROC_OPTS} ${PREPROC_OPTS2} -I${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/include -I${PROJECT_SOURCE_DIR}/src/interfaces/ecpg/test/${FOLDER} ${FOLDER}/${test}.pgc | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+ ) | |
+ add_executable(ecpg_regress_${FOLDER}_${test} | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/${FOLDER}/${test}.c | |
+ ) | |
+ target_link_libraries(ecpg_regress_${FOLDER}_${test} | |
+ ecpg | |
+ ecpg_compat | |
+ pgtypes | |
+ pq | |
+ ) | |
+ set_target_properties(ecpg_regress_${FOLDER}_${test} | |
+ PROPERTIES | |
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${FOLDER}" | |
+ OUTPUT_NAME ${test} | |
+ ) | |
+ endforeach() | |
+endmacro(ECPG_CHECK TARGET_LIST FOLDER PREPROC_OPTS) | |
+ | |
+ecpg_check("${compat_informix_tests}" "compat_informix" "-C;INFORMIX") | |
+ecpg_check("${connect_tests}" "connect" "") | |
+ecpg_check("${pgtypeslib_tests}" "pgtypeslib" "") | |
+ecpg_check("${preproc_tests}" "preproc" "") | |
+ecpg_check("${sql_tests}" "sql" "") | |
+ecpg_check("${thread_tests}" "thread" "") | |
+ | |
+ | |
+if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(ecpg_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} install | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} ecpg_installcheck_tmp | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+else() | |
+ add_custom_target(ecpg_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} ecpg_installcheck_tmp DESTDIR=${tmp_check_folder} | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+endif() | |
+ | |
+set(REGRESS_OPTS "${REGRESS_OPTS};--dbname=ecpg1_regression,ecpg2_regression;--create-role=regress_ecpg_user1,regress_ecpg_user2") | |
+ | |
+add_custom_target(ecpg_installcheck | |
+ COMMAND ${pg_ecpg_regress_check} ${REGRESS_OPTS} --schedule=${CMAKE_CURRENT_SOURCE_DIR}/ecpg_schedule --dlpath=$ENV{DESTDIR}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${EXTRA_TESTS} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_target(ecpg_installcheck_tmp | |
+ COMMAND ${pg_ecpg_regress_check_tmp} ${REGRESS_OPTS} --schedule=${CMAKE_CURRENT_SOURCE_DIR}/ecpg_schedule --dlpath=${tmp_check_folder}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${EXTRA_TESTS} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
diff --git a/src/interfaces/libpq/CMakeLists.txt b/src/interfaces/libpq/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..4753b7c61b | |
--- /dev/null | |
+++ b/src/interfaces/libpq/CMakeLists.txt | |
@@ -0,0 +1,124 @@ | |
+include_directories(BEFORE | |
+ "${CMAKE_CURRENT_SOURCE_DIR}" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+) | |
+ | |
+if(USE_OPENSSL) | |
+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR}) | |
+ set(pq_ssl_SRCS | |
+ fe-secure-openssl.c | |
+ ${PROJECT_SOURCE_DIR}/src/common/sha2_openssl.c | |
+ ) | |
+else() | |
+ set(pq_ssl_SRCS ${PROJECT_SOURCE_DIR}/src/common/sha2.c) | |
+endif(USE_OPENSSL) | |
+ | |
+set(pq_SRCS | |
+ fe-auth.c | |
+ fe-connect.c | |
+ fe-exec.c | |
+ fe-misc.c | |
+ fe-print.c | |
+ fe-lobj.c | |
+ fe-protocol2.c | |
+ fe-protocol3.c | |
+ fe-auth-scram.c | |
+ pqexpbuffer.c | |
+ fe-secure.c | |
+ libpq-events.c | |
+ | |
+ ${PORT_DIR}/chklocale.c | |
+ ${PORT_DIR}/inet_net_ntop.c | |
+ ${PORT_DIR}/noblock.c | |
+ ${PORT_DIR}/pgstrcasecmp.c | |
+ ${PORT_DIR}/pqsignal.c | |
+ ${PORT_DIR}/thread.c | |
+ | |
+ ${PROJECT_SOURCE_DIR}/src/common/ip.c | |
+ ${PROJECT_SOURCE_DIR}/src/common/md5.c | |
+ ${PROJECT_SOURCE_DIR}/src/common/base64.c | |
+ ${PROJECT_SOURCE_DIR}/src/common/scram-common.c | |
+ ${PROJECT_SOURCE_DIR}/src/common/saslprep.c | |
+ ${PROJECT_SOURCE_DIR}/src/common/unicode_norm.c | |
+ ${MB_UTILS_BACKEND_DIR}/encnames.c | |
+ ${MB_UTILS_BACKEND_DIR}/wchar.c | |
+ | |
+ ${fallback_SRCS} | |
+ ${pq_ssl_SRCS} | |
+) | |
+ | |
+if(USE_REPL_SNPRINTF) | |
+ set(pq_SRCS ${pq_SRCS} ${PORT_DIR}/snprintf.c) | |
+endif() | |
+ | |
+if(HAVE_STRONG_RANDOM) | |
+ set(pq_SRCS ${pq_SRCS} ${PORT_DIR}/pg_strong_random.c) | |
+else() | |
+ set(pq_SRCS ${pq_SRCS} ${PORT_DIR}/erand48.c) | |
+endif() | |
+ | |
+set(RES_FILES "") | |
+if(WIN32) | |
+ set(pq_SRCS ${pq_SRCS} | |
+ win32.c | |
+ ${PORT_DIR}/win32error.c | |
+ ${PORT_DIR}/win32setlocale.c | |
+ ${PORT_DIR}/pgsleep.c | |
+ ${PORT_DIR}/open.c | |
+ ${PORT_DIR}/system.c | |
+ ${PORT_DIR}/inet_aton.c | |
+ ${PORT_DIR}/thread.c | |
+ ${PORT_DIR}/getaddrinfo.c | |
+ ) | |
+ if (Threads_FOUND) | |
+ set(pq_SRCS ${pq_SRCS} pthread-win32.c) | |
+ endif() | |
+ set(RES_FILES "libpq.rc") | |
+ set(CMAKE_RC_COMPILER_INIT windres) | |
+ ENABLE_LANGUAGE(RC) | |
+ SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>") | |
+endif() | |
+ | |
+add_library(pq SHARED ${pq_SRCS} ${RES_FILES}) | |
+target_link_libraries(pq | |
+ ${CMAKE_THREAD_LIBS_INIT} | |
+ ${LIBSOCKET_LIBRARIES} | |
+ ${GSS_LIBS} | |
+) | |
+if(USE_OPENSSL) | |
+ target_link_libraries(pq ${OPENSSL_LIBRARIES}) | |
+endif() | |
+if (MSVC) | |
+ gen_def(pq) | |
+endif() | |
+if(CRYPT_LIB) | |
+ target_link_libraries(pq ${CRYPT_LIB}) | |
+endif() | |
+if(WIN32) | |
+ target_link_libraries(pq | |
+ #port | |
+ Secur32 | |
+ ws2_32 | |
+ ) | |
+endif() | |
+ | |
+if(LDAP_FOUND) | |
+ target_link_libraries(pq ${LDAP_LIBRARIES}) | |
+endif() | |
+ | |
+if(USE_OPENSSL) | |
+ target_include_directories(pq PUBLIC ${OPENSSL_INCLUDE_DIR}) | |
+endif() | |
+ | |
+ | |
+target_compile_definitions(pq PRIVATE -DFRONTEND -DUNSAFE_STAT_OK) | |
+install(TARGETS pq | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(libpq "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;tr;zh_CN;zh_TW;he;sv") | |
+endif() | |
+ | |
+#TODO | |
+#set_target_properties(pq PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports.list") | |
diff --git a/src/pl/plperl/CMakeLists.txt b/src/pl/plperl/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..a2a92f92b0 | |
--- /dev/null | |
+++ b/src/pl/plperl/CMakeLists.txt | |
@@ -0,0 +1,100 @@ | |
+if(WIN32) | |
+ add_definitions(-DPLPERL_HAVE_UID_GID) | |
+endif() | |
+ | |
+execute_process( | |
+ COMMAND ${PERL_EXECUTABLE} -e "use List::Util qw(first); print first { -r \"$_/ExtUtils/xsubpp\" } @INC" | |
+ OUTPUT_VARIABLE XSUBPPDIR | |
+) | |
+execute_process( | |
+ COMMAND ${PERL_EXECUTABLE} -V:usemultiplicity | |
+ OUTPUT_VARIABLE PERL_MULTIPLICITY | |
+) | |
+ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/SPI.c" | |
+ MAIN_DEPENDENCY SPI.xs plperl_helpers.h | |
+ COMMAND ${PERL_EXECUTABLE} ${XSUBPPDIR}/ExtUtils/xsubpp -typemap ${PERL_PRIVLIB}/ExtUtils/typemap SPI.xs > "${CMAKE_CURRENT_SOURCE_DIR}/SPI.c" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/Util.c" | |
+ MAIN_DEPENDENCY Util.xs plperl_helpers.h | |
+ COMMAND ${PERL_EXECUTABLE} ${XSUBPPDIR}/ExtUtils/xsubpp -typemap ${PERL_PRIVLIB}/ExtUtils/typemap Util.xs > "${CMAKE_CURRENT_SOURCE_DIR}/Util.c" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/perlchunks.h" | |
+ MAIN_DEPENDENCY plc_perlboot.pl plc_trusted.pl | |
+ COMMAND ${PERL_EXECUTABLE} text2macro.pl "--strip='^(\\#.*|\\s*)$$'" plc_perlboot.pl plc_trusted.pl > "${CMAKE_CURRENT_SOURCE_DIR}/perlchunks.h" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/plperl_opmask.h" | |
+ MAIN_DEPENDENCY plperl_opmask.pl | |
+ COMMAND ${PERL_EXECUTABLE} plperl_opmask.pl "${CMAKE_CURRENT_SOURCE_DIR}/plperl_opmask.h" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+set(plname "plperl") | |
+ | |
+set(plperl_SRCS | |
+ "${CMAKE_CURRENT_SOURCE_DIR}/perlchunks.h" | |
+ "${CMAKE_CURRENT_SOURCE_DIR}/plperl_opmask.h" | |
+ plperl.c | |
+ SPI.c | |
+ Util.c | |
+) | |
+ | |
+include_directories(${PERL_INCLUDE_PATH}) | |
+add_library(${plname} ${PLUGIN_TYPE} ${plperl_SRCS}) | |
+target_link_libraries(${plname} postgres ${PERL_LIBRARY} ${PERL_LDFLAGS}) | |
+if (MSVC) | |
+ gen_def(${plname}) | |
+ target_link_libraries(${plname} pgport) | |
+endif() | |
+set_target_properties(${plname} PROPERTIES PREFIX "") | |
+add_dependencies(${plname} postgres) | |
+ | |
+install(TARGETS ${plname} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ plperl.control | |
+ plperl--1.0.sql | |
+ plperl--unpackaged--1.0.sql | |
+ plperlu.control | |
+ plperlu--1.0.sql | |
+ plperlu--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+install(FILES | |
+ plperl.h | |
+ ppport.h | |
+ DESTINATION ${INCLUDEDIRSERVER}) | |
+ | |
+set(PL_TESTDB pl_regression) | |
+set(REGRESS_OPTS --dbname=${PL_TESTDB} --load-extension=plperl --load-extension=plperlu) | |
+set(plregres_files | |
+ plperl | |
+ plperl_lc | |
+ plperl_trigger | |
+ plperl_shared | |
+ plperl_elog | |
+ plperl_util | |
+ plperl_init | |
+ plperlu | |
+ plperl_array | |
+) | |
+ | |
+if(PERL_MULTIPLICITY STREQUAL "usemultiplicity='define'") | |
+ set(plregres_files ${plregres_files} plperl_plperlu) | |
+endif() | |
+ | |
+REGRESS_CHECK(plperl "${REGRESS_OPTS}" "${plregres_files}") | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(plperl "cs;de;es;fr;it;ja;ko;pl;pt_BR;ro;ru;sv;tr;zh_CN;zh_TW") | |
+endif() | |
diff --git a/src/pl/plpgsql/src/CMakeLists.txt b/src/pl/plpgsql/src/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..d0acb0c57e | |
--- /dev/null | |
+++ b/src/pl/plpgsql/src/CMakeLists.txt | |
@@ -0,0 +1,37 @@ | |
+BISON_TARGET(PLPGSQL_PARSER pl_gram.y ${CMAKE_CURRENT_SOURCE_DIR}/pl_gram.c COMPILE_FLAGS "-d") | |
+ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/plerrcodes.h" | |
+ MAIN_DEPENDENCY generate-plerrcodes.pl | |
+ COMMAND ${PERL_EXECUTABLE} "generate-plerrcodes.pl" "${PROJECT_SOURCE_DIR}/src/backend/utils/errcodes.txt" > "${CMAKE_CURRENT_SOURCE_DIR}/plerrcodes.h" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+set(plpgsql_SRCS | |
+ pl_handler.c | |
+ pl_comp.c | |
+ plerrcodes.h | |
+ pl_exec.c | |
+ pl_funcs.c | |
+ pl_scanner.c | |
+ ${BISON_PLPGSQL_PARSER_OUTPUT_SOURCE} | |
+) | |
+ | |
+add_library(plpgsql ${PLUGIN_TYPE} ${plpgsql_SRCS}) | |
+target_link_libraries(plpgsql postgres) | |
+if (MSVC) | |
+ gen_def(plpgsql) | |
+ target_link_libraries(plpgsql pgport pgcommon) | |
+endif() | |
+set_target_properties(plpgsql PROPERTIES PREFIX "") | |
+add_dependencies(plpgsql postgres) | |
+ | |
+install(TARGETS plpgsql | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES plpgsql.control plpgsql--1.0.sql plpgsql--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(plpgsql "cs;de;es;fr;it;ja;ko;pl;pt_BR;ro;ru;zh_CN;zh_TW;sv") | |
+endif() | |
diff --git a/src/pl/plpython/CMakeLists.txt b/src/pl/plpython/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..2106e4ad30 | |
--- /dev/null | |
+++ b/src/pl/plpython/CMakeLists.txt | |
@@ -0,0 +1,92 @@ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/spiexceptions.h" | |
+ MAIN_DEPENDENCY generate-spiexceptions.pl | |
+ COMMAND ${PERL_EXECUTABLE} "generate-spiexceptions.pl" "${PROJECT_SOURCE_DIR}/src/backend/utils/errcodes.txt" > "${CMAKE_CURRENT_SOURCE_DIR}/spiexceptions.h" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+set(plname "plpython${PYTHON_VERSION_MAJOR}") | |
+ | |
+set(plpython_SRCS | |
+ "${CMAKE_CURRENT_SOURCE_DIR}/spiexceptions.h" | |
+ plpy_cursorobject.c | |
+ plpy_elog.c | |
+ plpy_exec.c | |
+ plpy_main.c | |
+ plpy_planobject.c | |
+ plpy_plpymodule.c | |
+ plpy_procedure.c | |
+ plpy_resultobject.c | |
+ plpy_spi.c | |
+ plpy_subxactobject.c | |
+ plpy_typeio.c | |
+ plpy_util.c | |
+) | |
+ | |
+include_directories(${PYTHON_INCLUDE_DIRS}) | |
+add_library(${plname} ${PLUGIN_TYPE} ${plpython_SRCS}) | |
+target_link_libraries(${plname} postgres ${PYTHON_LIBRARIES}) | |
+if (MSVC) | |
+ gen_def(${plname}) | |
+ target_link_libraries(${plname} pgport) | |
+endif() | |
+if(MINGW) | |
+ set_target_properties(${plname} PROPERTIES LINK_FLAGS -Wl,--out-implib=libmin${plname}.dll.a) | |
+endif() | |
+set_target_properties(${plname} PROPERTIES PREFIX "") | |
+add_dependencies(${plname} postgres) | |
+ | |
+install(TARGETS ${plname} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ plpython2u.control | |
+ plpython2u--1.0.sql | |
+ plpython2u--unpackaged--1.0.sql | |
+ plpython3u.control | |
+ plpython3u--1.0.sql | |
+ plpython3u--unpackaged--1.0.sql | |
+ plpythonu.control | |
+ plpythonu--1.0.sql | |
+ plpythonu--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(PL_TESTDB pl_regression) | |
+set(REGRESS_OPTS --dbname=${PL_TESTDB}) | |
+if (PYTHON_VERSION_MAJOR EQUAL 2) | |
+ set(REGRESS_OPTS ${REGRESS_OPTS} --load-extension=plpythonu) | |
+endif() | |
+ | |
+set(plregres_files | |
+ plpython_schema | |
+ plpython_populate | |
+ plpython_test | |
+ plpython_do | |
+ plpython_global | |
+ plpython_import | |
+ plpython_spi | |
+ plpython_newline | |
+ plpython_void | |
+ plpython_params | |
+ plpython_setof | |
+ plpython_record | |
+ plpython_trigger | |
+ plpython_types | |
+ plpython_error | |
+ plpython_unicode | |
+ plpython_quote | |
+ plpython_composite | |
+ plpython_subtransaction | |
+ plpython_drop | |
+) | |
+ | |
+if(PYTHON_VERSION_MAJOR EQUAL 3) | |
+ replace_python_files("${plregres_files}") | |
+ REGRESS_CHECK(plpython "${REGRESS_OPTS}" "${regress_files3}") | |
+else() | |
+ REGRESS_CHECK(plpython "${REGRESS_OPTS}" "${plregres_files}") | |
+endif() | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(plpython "cs;de;es;fr;it;ja;ko;pl;pt_BR;ru;zh_CN;sv") | |
+endif() | |
diff --git a/src/pl/tcl/CMakeLists.txt b/src/pl/tcl/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..8db54192d6 | |
--- /dev/null | |
+++ b/src/pl/tcl/CMakeLists.txt | |
@@ -0,0 +1,51 @@ | |
+set(plname "pltcl") | |
+ | |
+include_directories(${TCL_INCLUDE_PATH}) | |
+ | |
+add_custom_command( | |
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/pltclerrcodes.h" | |
+ MAIN_DEPENDENCY generate-pltclerrcodes.pl | |
+ COMMAND ${PERL_EXECUTABLE} "generate-pltclerrcodes.pl" "${PROJECT_SOURCE_DIR}/src/backend/utils/errcodes.txt" > "${CMAKE_CURRENT_SOURCE_DIR}/pltclerrcodes.h" | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_target(gen_pltclerrcodes DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/pltclerrcodes.h") | |
+ | |
+add_library(${plname} ${PLUGIN_TYPE} | |
+ pltcl.c | |
+) | |
+ | |
+target_link_libraries(${plname} postgres ${TCL_LIBRARY}) | |
+if (MSVC) | |
+ gen_def(${plname}) | |
+ target_link_libraries(${plname} pgport) | |
+endif() | |
+set_target_properties(${plname} PROPERTIES PREFIX "") | |
+add_dependencies(${plname} postgres gen_pltclerrcodes) | |
+ | |
+install(TARGETS ${plname} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${plname}.control | |
+ ${plname}--1.0.sql | |
+ ${plname}--unpackaged--1.0.sql | |
+ ${plname}u.control | |
+ ${plname}u--1.0.sql | |
+ ${plname}u--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(PL_TESTDB pl_regression) | |
+set(REGRESS_OPTS --dbname=${PL_TESTDB} --load-extension=pltcl) | |
+set(plregres_files | |
+ pltcl_setup | |
+ pltcl_queries | |
+ pltcl_unicode | |
+ pltcl_subxact | |
+ pltcl_start_proc | |
+) | |
+REGRESS_CHECK(pltcl "${REGRESS_OPTS}" "${plregres_files}") | |
+ | |
+if(ENABLE_NLS) | |
+ MAKE_MO(pltcl "cs;de;es;fr;it;ja;ko;pl;pt_BR;ro;ru;tr;zh_CN;zh_TW;sv") | |
+endif() | |
diff --git a/src/port/CMakeLists.txt b/src/port/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..68cb5bdcc4 | |
--- /dev/null | |
+++ b/src/port/CMakeLists.txt | |
@@ -0,0 +1,175 @@ | |
+if(OPENSSL_FOUND) | |
+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR}) | |
+endif() | |
+ | |
+if(USE_SSE42_CRC32C) | |
+ SET(PG_CRC32C_OBJS pg_crc32c_sse42.c) | |
+elseif(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK) | |
+ SET(PG_CRC32C_OBJS | |
+ pg_crc32c_sse42.c | |
+ pg_crc32c_sb8.c | |
+ pg_crc32c_choose.c | |
+ ) | |
+elseif(USE_SLICING_BY_8_CRC32C) | |
+ SET(PG_CRC32C_OBJS pg_crc32c_sb8.c) | |
+endif() | |
+ | |
+set_source_files_properties(pg_crc32c_sse42.c PROPERTIES COMPILE_FLAGS "${CFLAGS_SSE42}") | |
+ | |
+set(port_SRCS | |
+ chklocale.c | |
+ erand48.c | |
+ inet_net_ntop.c | |
+ noblock.c | |
+ path.c | |
+ pgcheckdir.c | |
+ pgmkdirp.c | |
+ pgsleep.c | |
+ pgstrcasecmp.c | |
+ pqsignal.c | |
+ qsort.c | |
+ qsort_arg.c | |
+ quotes.c | |
+ sprompt.c | |
+ tar.c | |
+ thread.c | |
+ ${fallback_SRCS} | |
+ ${PG_CRC32C_OBJS} | |
+) | |
+ | |
+if(STRONG_RANDOM) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ pg_strong_random.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_FLS) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ fls.c | |
+ ) | |
+endif(NOT HAVE_FLS) | |
+ | |
+if(NOT HAVE_ISINF) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ isinf.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_MKDTEMP) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ mkdtemp.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_GETOPT) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ getopt.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT (HAVE_STRUCT_OPTION AND HAVE_GETOPT_LONG)) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ getopt_long.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_GETTIMEOFDAY) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ gettimeofday.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_INET_ATON) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ inet_aton.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_RANDOM) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ random.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_SRANDOM) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ srandom.c | |
+ ) | |
+endif() | |
+ | |
+if(USE_REPL_SNPRINTF) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ snprintf.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_RINT) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ rint.c | |
+ ) | |
+endif() | |
+ | |
+if(MSVC OR MINGW) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ dirmod.c | |
+ kill.c | |
+ open.c | |
+ getrusage.c | |
+ system.c | |
+ win32security.c | |
+ win32env.c | |
+ win32error.c | |
+ win32setlocale.c | |
+ ) | |
+endif() | |
+ | |
+if(MSVC) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ dirent.c | |
+ ) | |
+endif() | |
+ | |
+if(CMAKE_SYSTEM_NAME STREQUAL "SunOS") | |
+ # Solaris' getopt() doesn't do what we want for long options, so always use | |
+ # our version on that platform. | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ getopt.c | |
+ ) | |
+endif() | |
+ | |
+if(NOT HAVE_CRYPT) | |
+ set(port_SRCS | |
+ ${port_SRCS} | |
+ crypt.c | |
+ ) | |
+endif() | |
+ | |
+add_library(pgport_srv STATIC ${port_SRCS}) | |
+add_library(pgport STATIC ${port_SRCS}) | |
+ | |
+add_dependencies(pgport_srv gen_errorcodes) | |
+add_dependencies(pgport gen_errorcodes) | |
+ | |
+# because port used in shared libraries | |
+set_property(TARGET pgport PROPERTY POSITION_INDEPENDENT_CODE TRUE) | |
+ | |
+ | |
+target_compile_definitions(pgport PRIVATE -DFRONTEND) | |
+set_source_files_properties(thread.c PROPERTIES COMPILE_FLAGS ${PTHREAD_CFLAGS}) | |
+install(TARGETS pgport | |
+ ARCHIVE DESTINATION ${LIBDIR}) | |
diff --git a/src/test/isolation/CMakeLists.txt b/src/test/isolation/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..66d0529a7f | |
--- /dev/null | |
+++ b/src/test/isolation/CMakeLists.txt | |
@@ -0,0 +1,73 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+ "${PROJECT_SOURCE_DIR}/src/test/regress" | |
+) | |
+ | |
+add_executable(pg_isolation_regress | |
+ ${PROJECT_SOURCE_DIR}/src/test/regress/pg_regress.c | |
+ isolation_main.c | |
+) | |
+ | |
+target_link_libraries(pg_isolation_regress | |
+ pq | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+target_compile_definitions(pg_isolation_regress PRIVATE | |
+ -DHOST_TUPLE="${HOST_TUPLE}" | |
+ -DSHELLPROG="$ENV{SHELL}" | |
+) | |
+ | |
+bison_target(SPEC_PARSER specparse.y ${CMAKE_CURRENT_SOURCE_DIR}/specparse.c) | |
+flex_target(SPEC_SCANNER specscanner.l ${CMAKE_CURRENT_SOURCE_DIR}/specscanner.c) | |
+add_flex_bison_dependency(SPEC_SCANNER SPEC_PARSER) | |
+set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/specparse.c PROPERTIES OBJECT_DEPENDS ${FLEX_SPEC_SCANNER_OUTPUTS}) | |
+ | |
+add_executable(isolationtester | |
+ isolationtester.c | |
+ ${BISON_SPEC_PARSER_OUTPUTS} | |
+) | |
+ | |
+target_link_libraries(isolationtester | |
+ pgcommon | |
+ pgport | |
+ pq | |
+) | |
+ | |
+if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(isolation_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/tmp_install | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} install | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} isolation_installcheck_tmp | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+else() | |
+ add_custom_target(isolation_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/tmp_install | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} isolation_installcheck_tmp DESTDIR=${tmp_check_folder} | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+endif() | |
+ | |
+add_custom_target(isolation_installcheck | |
+ COMMAND ${pg_isolation_regress_check} ${REGRESS_OPTS} --schedule=${CMAKE_CURRENT_SOURCE_DIR}/isolation_schedule --dlpath=$ENV{DESTDIR}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${EXTRA_TESTS} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_target(isolation_installcheck_tmp | |
+ COMMAND ${pg_isolation_regress_check_tmp} ${REGRESS_OPTS} --schedule=${CMAKE_CURRENT_SOURCE_DIR}/isolation_schedule --dlpath=${tmp_check_folder}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${EXTRA_TESTS} | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+install(TARGETS isolationtester | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+install(TARGETS pg_isolation_regress | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/src/test/modules/CMakeLists.txt b/src/test/modules/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..f40b717856 | |
--- /dev/null | |
+++ b/src/test/modules/CMakeLists.txt | |
@@ -0,0 +1,69 @@ | |
+set(modules_libs postgres) | |
+ | |
+#TODO: need test under mingw or cygwin | |
+if(WIN32) | |
+ set(modules_libs | |
+ pgport | |
+ pgcommon | |
+ ) | |
+endif() | |
+ | |
+if(MSVC OR MINGW) | |
+ set(modules_libs | |
+ pgport | |
+ postgres | |
+ pgcommon_srv | |
+ ) | |
+endif() | |
+ | |
+ | |
+set(modules_check_targets "") | |
+set(modules_installcheck_targets "") | |
+ | |
+# Tests | |
+add_subdirectory(brin) | |
+add_subdirectory(commit_ts) | |
+add_subdirectory(dummy_seclabel) | |
+add_subdirectory(snapshot_too_old) | |
+add_subdirectory(test_ddl_deparse) | |
+add_subdirectory(test_extensions) | |
+add_subdirectory(test_parser) | |
+add_subdirectory(test_pg_dump) | |
+add_subdirectory(test_rls_hooks) | |
+add_subdirectory(test_shm_mq) | |
+ | |
+if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(modules_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} install | |
+ COMMAND DESTDIR=${tmp_check_folder} ${check_make_command} ${modules_check_targets} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+else() | |
+ add_custom_target(modules_check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ COMMAND ${check_make_command} install DESTDIR=${tmp_check_folder} | |
+ COMMAND ${check_make_command} ${modules_check_targets} DESTDIR=${tmp_check_folder} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+endif() | |
+ | |
+# Make chain for run tests in strict order | |
+# TODO: we can't run tests separately now | |
+set(first_element "") | |
+list(GET modules_installcheck_targets 0 first_element) | |
+add_custom_target(modules_installcheck | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${tmp_check_folder} | |
+ DEPENDS tablespace-setup ${first_element} | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+) | |
+ | |
+set(last_element OFF) | |
+foreach(loop_var IN ITEMS ${modules_installcheck_targets}) | |
+ if(last_element) | |
+ add_dependencies(${last_element} ${loop_var}) | |
+ endif() | |
+ set(last_element ${loop_var}) | |
+endforeach() | |
diff --git a/src/test/modules/brin/CMakeLists.txt b/src/test/modules/brin/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..186626c20a | |
--- /dev/null | |
+++ b/src/test/modules/brin/CMakeLists.txt | |
@@ -0,0 +1 @@ | |
+MODULES_ISOLATION_CHECK("brin" "" "summarization-and-inprogress-insertion") | |
diff --git a/src/test/modules/commit_ts/CMakeLists.txt b/src/test/modules/commit_ts/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..cb709dc558 | |
--- /dev/null | |
+++ b/src/test/modules/commit_ts/CMakeLists.txt | |
@@ -0,0 +1,5 @@ | |
+ | |
+MODULES_REGRESS_CHECK("commit_ts" "--temp-config=${CMAKE_SOURCE_DIR}/src/test/modules/commit_ts/commit_ts.conf" "commit_timestamp") | |
+if(PROVE) | |
+ MODULES_TAP_CHECK("commit_ts" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/test/modules/dummy_seclabel/CMakeLists.txt b/src/test/modules/dummy_seclabel/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..02a333ed86 | |
--- /dev/null | |
+++ b/src/test/modules/dummy_seclabel/CMakeLists.txt | |
@@ -0,0 +1,30 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name dummy_seclabel) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ dummy_seclabel.c | |
+) | |
+target_link_libraries(${extension_name} ${modules_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} modules) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "" "${extension_name}") | |
diff --git a/src/test/modules/snapshot_too_old/CMakeLists.txt b/src/test/modules/snapshot_too_old/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..91ea3ef863 | |
--- /dev/null | |
+++ b/src/test/modules/snapshot_too_old/CMakeLists.txt | |
@@ -0,0 +1,2 @@ | |
+ | |
+MODULES_ISOLATION_CHECK("snapshot_too_old" "--temp-config=${CMAKE_SOURCE_DIR}/src/test/modules/snapshot_too_old/sto.conf" "sto_using_cursor;sto_using_select") | |
diff --git a/src/test/modules/test_ddl_deparse/CMakeLists.txt b/src/test/modules/test_ddl_deparse/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..74cb041144 | |
--- /dev/null | |
+++ b/src/test/modules/test_ddl_deparse/CMakeLists.txt | |
@@ -0,0 +1,53 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_ddl_deparse) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ test_ddl_deparse.c | |
+) | |
+target_link_libraries(${extension_name} ${modules_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} modules) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(tests_list | |
+ test_ddl_deparse | |
+ create_extension | |
+ create_schema | |
+ create_type | |
+ create_conversion | |
+ create_domain | |
+ create_sequence_1 | |
+ create_table | |
+ create_transform | |
+ alter_table | |
+ create_view | |
+ create_trigger | |
+ create_rule | |
+ comment_on | |
+ alter_function | |
+ alter_sequence | |
+ alter_type_enum | |
+ opfamily | |
+ defprivs | |
+ matviews | |
+) | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "--dbname=contrib_regression" "${tests_list}") | |
diff --git a/src/test/modules/test_extensions/CMakeLists.txt b/src/test/modules/test_extensions/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..36324651bd | |
--- /dev/null | |
+++ b/src/test/modules/test_extensions/CMakeLists.txt | |
@@ -0,0 +1,41 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_extensions) | |
+ | |
+install(FILES | |
+ test_ext1--1.0.sql | |
+ test_ext1.control | |
+ test_ext2--1.0.sql | |
+ test_ext2.control | |
+ test_ext3--1.0.sql | |
+ test_ext3.control | |
+ test_ext4--1.0.sql | |
+ test_ext4.control | |
+ test_ext5--1.0.sql | |
+ test_ext5.control | |
+ test_ext6--1.0.sql | |
+ test_ext6.control | |
+ test_ext7--1.0.sql | |
+ test_ext7--1.0--2.0.sql | |
+ test_ext7.control | |
+ test_ext8--1.0.sql | |
+ test_ext8.control | |
+ test_ext_cyclic1--1.0.sql | |
+ test_ext_cyclic1.control | |
+ test_ext_cyclic2--1.0.sql | |
+ test_ext_cyclic2.control | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+set(tests_list | |
+ test_extensions | |
+ test_extdepend | |
+) | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "" "${tests_list}") | |
diff --git a/src/test/modules/test_parser/CMakeLists.txt b/src/test/modules/test_parser/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c1fb33a962 | |
--- /dev/null | |
+++ b/src/test/modules/test_parser/CMakeLists.txt | |
@@ -0,0 +1,33 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_parser) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ test_parser.c | |
+) | |
+target_link_libraries(${extension_name} ${modules_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} modules) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ ${extension_name}--unpackaged--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "" "${extension_name}") | |
diff --git a/src/test/modules/test_pg_dump/CMakeLists.txt b/src/test/modules/test_pg_dump/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..95b0082c33 | |
--- /dev/null | |
+++ b/src/test/modules/test_pg_dump/CMakeLists.txt | |
@@ -0,0 +1,21 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_pg_dump) | |
+ | |
+install(FILES | |
+ test_pg_dump--1.0.sql | |
+ test_pg_dump.control | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "" "${extension_name}") | |
+if(PROVE) | |
+ MODULES_TAP_CHECK(${extension_name} "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/test/modules/test_rls_hooks/CMakeLists.txt b/src/test/modules/test_rls_hooks/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..5a3bdfdd52 | |
--- /dev/null | |
+++ b/src/test/modules/test_rls_hooks/CMakeLists.txt | |
@@ -0,0 +1,30 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_rls_hooks) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ test_rls_hooks.c | |
+) | |
+target_link_libraries(${extension_name} ${modules_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} modules) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES ${extension_name}.control | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "--temp-config=${CMAKE_SOURCE_DIR}/src/test/modules/test_rls_hooks/rls_hooks.conf" "${extension_name}") | |
diff --git a/src/test/modules/test_shm_mq/CMakeLists.txt b/src/test/modules/test_shm_mq/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..6ad93b768d | |
--- /dev/null | |
+++ b/src/test/modules/test_shm_mq/CMakeLists.txt | |
@@ -0,0 +1,34 @@ | |
+option(PGXS "Separate build" OFF) | |
+if(PGXS) | |
+ cmake_minimum_required(VERSION 2.8) | |
+ find_package(PostgreSQL) | |
+ include(${PostgreSQL_LIBRARY_DIRS}/cmake/PGXS.cmake) | |
+else() | |
+ include_directories("${PROJECT_SOURCE_DIR}/src/include") | |
+endif() | |
+ | |
+set(extension_name test_shm_mq) | |
+ | |
+add_library(${extension_name} ${PLUGIN_TYPE} | |
+ test.c | |
+ setup.c | |
+ worker.c | |
+) | |
+target_link_libraries(${extension_name} ${modules_libs}) | |
+set_target_properties(${extension_name} PROPERTIES PREFIX "") | |
+if (MSVC) | |
+ gen_def(${extension_name}) | |
+endif() | |
+if(NOT PGXS) | |
+ add_dependencies(${extension_name} postgres) | |
+ CMAKE_SET_TARGET_FOLDER(${extension_name} modules) | |
+endif() | |
+install(TARGETS ${extension_name} | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+install(FILES | |
+ ${extension_name}.control | |
+ ${extension_name}--1.0.sql | |
+ DESTINATION ${PGSHAREDIR}/extension) | |
+ | |
+MODULES_REGRESS_CHECK(${extension_name} "" "${extension_name}") | |
diff --git a/src/test/recovery/CMakeLists.txt b/src/test/recovery/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..080cb34183 | |
--- /dev/null | |
+++ b/src/test/recovery/CMakeLists.txt | |
@@ -0,0 +1,3 @@ | |
+if(PROVE) | |
+ TAP_CHECK("recovery_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/test/regress/CMakeLists.txt b/src/test/regress/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..c98bc4de24 | |
--- /dev/null | |
+++ b/src/test/regress/CMakeLists.txt | |
@@ -0,0 +1,81 @@ | |
+include_directories(BEFORE | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/port" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+add_executable(pg_regress | |
+ pg_regress.c | |
+ pg_regress_main.c | |
+) | |
+ | |
+target_link_libraries(pg_regress | |
+ pq | |
+ pgcommon | |
+ pgport | |
+) | |
+ | |
+target_compile_definitions(pg_regress PRIVATE | |
+ -DHOST_TUPLE="${HOST_TUPLE}" | |
+ -DSHELLPROG="$ENV{SHELL}") | |
+ | |
+ | |
+add_library(regress ${PLUGIN_TYPE} regress.c) | |
+#target_link_libraries(regress | |
+# pq | |
+#) | |
+if (MSVC) | |
+ gen_def(regress) | |
+endif() | |
+ | |
+if(MSVC OR MINGW) | |
+ target_link_libraries(regress postgres pgport pgcommon) | |
+endif() | |
+ | |
+set_target_properties(regress PROPERTIES PREFIX "") | |
+add_dependencies(regress postgres) | |
+ | |
+add_custom_target(tablespace-setup | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ./testtablespace | |
+ COMMAND ${CMAKE_COMMAND} -E make_directory ./testtablespace | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+if(CMAKE_GENERATOR STREQUAL "Ninja") | |
+ add_custom_target(check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/tmp_install | |
+ COMMAND DESTDIR=${CMAKE_CURRENT_BINARY_DIR}/tmp_install ${check_make_command} install | |
+ COMMAND DESTDIR=${CMAKE_CURRENT_BINARY_DIR}/ ${check_make_command} installcheck_tmp | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+else() | |
+ add_custom_target(check | |
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/tmp_install | |
+ COMMAND ${check_make_command} install DESTDIR=${CMAKE_CURRENT_BINARY_DIR}/tmp_install | |
+ COMMAND ${check_make_command} installcheck_tmp DESTDIR=${CMAKE_CURRENT_BINARY_DIR}/ | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
+ ) | |
+endif() | |
+ | |
+add_custom_target(installcheck | |
+ COMMAND ${pg_regress_check} ${REGRESS_OPTS} --schedule=${CMAKE_CURRENT_SOURCE_DIR}/parallel_schedule --dlpath=$ENV{DESTDIR}${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${EXTRA_TESTS} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+add_custom_target(installcheck_tmp | |
+ COMMAND ${pg_regress_check_tmp} ${REGRESS_OPTS} --schedule=${CMAKE_CURRENT_SOURCE_DIR}/parallel_schedule --dlpath=${CMAKE_CURRENT_BINARY_DIR}/tmp_install${LIBDIR} ${MAXCONNOPT} ${TEMP_CONF} ${EXTRA_TESTS} | |
+ DEPENDS tablespace-setup | |
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | |
+) | |
+ | |
+install(TARGETS pg_regress | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
+ | |
+install(TARGETS regress | |
+ RUNTIME DESTINATION ${PGBINDIR} | |
+ LIBRARY DESTINATION ${LIBDIR}) | |
diff --git a/src/test/ssl/CMakeLists.txt b/src/test/ssl/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..a6df3f2dda | |
--- /dev/null | |
+++ b/src/test/ssl/CMakeLists.txt | |
@@ -0,0 +1,5 @@ | |
+# We must will add generate target | |
+ | |
+if(PROVE) | |
+ TAP_CHECK("ssl_tap" "${TAP_FLAGS}" "t/*.pl") | |
+endif() | |
diff --git a/src/timezone/CMakeLists.txt b/src/timezone/CMakeLists.txt | |
new file mode 100644 | |
index 0000000000..0441276988 | |
--- /dev/null | |
+++ b/src/timezone/CMakeLists.txt | |
@@ -0,0 +1,81 @@ | |
+#TODO compile timezones | |
+ | |
+include_directories( | |
+ "${PROJECT_SOURCE_DIR}/src/include/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/interfaces/libpq" | |
+ "${PROJECT_SOURCE_DIR}/src/bin/pg_dump" | |
+) | |
+ | |
+ | |
+ | |
+set(tzdata | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/africa | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/antarctica | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/asia | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/australasia | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/europe | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/northamerica | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/southamerica | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/pacificnew | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/etcetera | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/factory | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/backward | |
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/systemv | |
+) | |
+ | |
+add_executable(zic | |
+ zic.c | |
+) | |
+target_link_libraries(zic | |
+ pgport | |
+) | |
+ | |
+if(MSVC) | |
+ foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) | |
+ string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) | |
+ set_target_properties(zic PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR} ) | |
+ set_target_properties(zic PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR} ) | |
+ set_target_properties(zic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR} ) | |
+ endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES ) | |
+endif(MSVC) | |
+ | |
+ | |
+install(FILES | |
+ tznames/Africa.txt | |
+ tznames/America.txt | |
+ tznames/Antarctica.txt | |
+ tznames/Asia.txt | |
+ tznames/Atlantic.txt | |
+ tznames/Australia.txt | |
+ tznames/Etc.txt | |
+ tznames/Europe.txt | |
+ tznames/Indian.txt | |
+ tznames/Pacific.txt | |
+ tznames/Default | |
+ tznames/Australia | |
+ tznames/India | |
+DESTINATION ${PGSHAREDIR}/timezonesets) | |
+ | |
+function(JOIN VALUES GLUE OUTPUT) | |
+ string (REGEX REPLACE "([^\\]|^);" "\\1${GLUE}" _TMP_STR "${VALUES}") | |
+ string (REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") #fixes escaping | |
+ set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE) | |
+endfunction() | |
+ | |
+if(MINGW) | |
+ string(SUBSTRING ${PGSHAREDIR} 1 1 CHAR_POS) | |
+ if(CHAR_POS STREQUAL ":") | |
+ string(SUBSTRING ${PGSHAREDIR} 2 -1 PGSHAREDIR_ZIC) | |
+ else() | |
+ set(PGSHAREDIR_ZIC ${PGSHAREDIR}) | |
+ endif() | |
+else() | |
+ set(PGSHAREDIR_ZIC ${PGSHAREDIR}) | |
+endif() | |
+ | |
+JOIN("${tzdata}" " " tzdata_string) | |
+install( | |
+ CODE "message('${CMAKE_CURRENT_BINARY_DIR}/zic${CMAKE_EXECUTABLE_SUFFIX} \$ENV{DESTDIR}${PGSHAREDIR_ZIC}/timezone -p US/Eastern ${tzdata_string}')" | |
+ CODE "execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/zic${CMAKE_EXECUTABLE_SUFFIX} -d \"\$ENV{DESTDIR}${PGSHAREDIR_ZIC}/timezone\" -p \"US/Eastern\" ${tzdata_string})" | |
+) | |
+ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment