aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorras0219 <533828+ras0219@users.noreply.github.com>2020-10-22 21:56:51 -0700
committerGitHub <noreply@github.com>2020-10-22 21:56:51 -0700
commitde299679d984fe7aa945d3d66f8dec2729dc0304 (patch)
tree056e2e77d75cbaa1c6de8b2d145b0e36d96f66f4
parentd6032b525870f30d21aeb144e655a8e8fcba8736 (diff)
downloadvcpkg-de299679d984fe7aa945d3d66f8dec2729dc0304.tar.gz
vcpkg-de299679d984fe7aa945d3d66f8dec2729dc0304.zip
[libpq] Fix incidental linkage of DL on windows platforms. (#14172)
Previously, detecting the presence of the dlfcn-win32 library resulted in an incorrect `-ldl` injection. Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
-rw-r--r--ports/libpq/CONTROL4
-rw-r--r--ports/libpq/portfile.cmake28
-rw-r--r--ports/libpq/vcpkg-cmake-wrapper.cmake2
-rw-r--r--ports/libpqxx/CMakeLists.txt77
4 files changed, 17 insertions, 94 deletions
diff --git a/ports/libpq/CONTROL b/ports/libpq/CONTROL
index ab2447379..f55423ec5 100644
--- a/ports/libpq/CONTROL
+++ b/ports/libpq/CONTROL
@@ -1,7 +1,7 @@
Source: libpq
Version: 12.2
-Port-Version: 7
-Build-Depends: libpq[bonjour] (osx)
+Port-Version: 8
+Build-Depends: libpq[core,bonjour] (osx)
Supports: !uwp
Homepage: https://www.postgresql.org/
Description: The official database access API of postgresql
diff --git a/ports/libpq/portfile.cmake b/ports/libpq/portfile.cmake
index 4c8f4fa8f..442fa199b 100644
--- a/ports/libpq/portfile.cmake
+++ b/ports/libpq/portfile.cmake
@@ -240,7 +240,7 @@ if(VCPKG_TARGET_IS_WINDOWS)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/symbols)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/symbols)
- if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()
@@ -251,16 +251,23 @@ if(VCPKG_TARGET_IS_WINDOWS)
endif()
message(STATUS "Cleanup libpq ${TARGET_TRIPLET}... - done")
+ set(USE_DL OFF)
else()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/Makefile DESTINATION ${SOURCE_PATH})
- if("${FEATURES}" MATCHES "openssl")
+ if("openssl" IN_LIST FEATURES)
list(APPEND BUILD_OPTS --with-openssl)
+ else()
+ list(APPEND BUILD_OPTS --without-openssl)
endif()
- if(NOT "${FEATURES}" MATCHES "zlib")
+ if("zlib" IN_LIST FEATURES)
+ list(APPEND BUILD_OPTS --with-zlib)
+ else()
list(APPEND BUILD_OPTS --without-zlib)
endif()
- if(NOT "${FEATURES}" MATCHES "readline")
+ if("readline" IN_LIST FEATURES)
+ list(APPEND BUILD_OPTS --with-readline)
+ else()
list(APPEND BUILD_OPTS --without-readline)
endif()
vcpkg_configure_make(
@@ -276,7 +283,7 @@ else()
--enable-debug
)
- if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(ENV{LIBPQ_LIBRARY_TYPE} shared)
else()
set(ENV{LIBPQ_LIBRARY_TYPE} static)
@@ -292,15 +299,8 @@ else()
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(RENAME ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/tools/${PORT})
endif()
+ set(USE_DL ON)
endif()
-#vcpkg_copy_pdbs()
-
-#if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/libpq.lib")
- #RENAME debug library due to CMake. In general that is a bad idea but it will have consquences for the generated cmake targets
- # of other ports if not renamed. Maybe a vcpkg_cmake_wrapper is required here to correct the target information if the rename is removed?
-# file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/libpq.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/libpqd.lib")
-#endif()
-file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/postgresql)
-file(INSTALL ${CURRENT_PORT_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/postgresql)
+configure_file(${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake ${CURRENT_PACKAGES_DIR}/share/postgresql/vcpkg-cmake-wrapper.cmake @ONLY)
file(INSTALL ${SOURCE_PATH}/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/libpq/vcpkg-cmake-wrapper.cmake b/ports/libpq/vcpkg-cmake-wrapper.cmake
index 5fd40d26c..352954ef5 100644
--- a/ports/libpq/vcpkg-cmake-wrapper.cmake
+++ b/ports/libpq/vcpkg-cmake-wrapper.cmake
@@ -6,7 +6,7 @@ PATHS
NO_DEFAULT_PATH
)
_find_package(${ARGS})
-if(PostgreSQL_FOUND)
+if(PostgreSQL_FOUND AND @USE_DL@)
find_library(PostgreSQL_DL_LIBRARY NAMES dl)
if(PostgreSQL_DL_LIBRARY)
list(APPEND PostgreSQL_LIBRARIES "dl")
diff --git a/ports/libpqxx/CMakeLists.txt b/ports/libpqxx/CMakeLists.txt
deleted file mode 100644
index 00575c4af..000000000
--- a/ports/libpqxx/CMakeLists.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-cmake_minimum_required(VERSION 3.5)
-project(libpqxx VERSION 6.4.3 LANGUAGES CXX)
-
-set(CMAKE_DEBUG_POSTFIX "d")
-set(CMAKE_CXX_STANDARD 14)
-
-find_library(LIBPQD NAMES libpqd pqd)
-find_library(LIBPQ NAMES libpq pq)
-find_path(LIBPQ_FE_H libpq-fe.h)
-find_path(POSTGRES_EXT_H postgres_ext.h)
-
-include(CheckIncludeFileCXX)
-
-check_include_file_cxx(poll.h HAVE_POLL)
-check_include_file_cxx(sys/select.h HAVE_SYS_SELECT_H)
-check_include_file_cxx(sys/time.h HAVE_SYS_TIME_H)
-check_include_file_cxx(sys/types.h HAVE_SYS_TYPES_H)
-check_include_file_cxx(unistd.h HAVE_UNISTD_H)
-
-include(CheckCXXSourceCompiles)
-
-check_cxx_source_compiles("[[deprecated]] void f();
-int main() { return 0; }" PQXX_HAVE_DEPRECATED)
-check_cxx_source_compiles("#include <optional>
-int main() { return std::optional<int>(0).value(); }" PQXX_HAVE_OPTIONAL)
-check_cxx_source_compiles("#include <experimental/optional>
-int main() { return std::experimental::optional<int>(0).value(); }" PQXX_HAVE_EXP_OPTIONAL)
-
-configure_file(config-internal-compiler.h.in pqxx/config-internal-compiler.h)
-configure_file(config-public-compiler.h.in pqxx/config-public-compiler.h)
-
-file(GLOB SRCS "${PROJECT_SOURCE_DIR}/src/*.cxx")
-
-if(BUILD_SHARED_LIBS)
- set(TARGET libpqxx)
- set(SHARED_DEFINITION -DPQXX_SHARED)
- if(MSVC)
- list(APPEND SRCS "${PROJECT_SOURCE_DIR}/win32/libpqxx.cxx")
- endif()
-else()
- set(TARGET libpqxx_static)
- set(SHARED_DEFINITION "")
-endif()
-
-IF(UNIX)
- set(TARGET pqxx_static)
-ENDIF()
-
-add_library(${TARGET} ${SRCS})
-target_compile_definitions(${TARGET} PRIVATE -DPQXX_INTERNAL -DNOMINMAX ${SHARED_DEFINITION})
-target_include_directories(${TARGET} PRIVATE include ${LIBPQ_FE_H} ${POSTGRES_EXT_H} ${CMAKE_BINARY_DIR})
-target_link_libraries(${TARGET} PRIVATE ws2_32)
-if(LIBPQD AND LIBPQ)
- target_link_libraries(${TARGET} PRIVATE debug ${LIBPQD} optimized ${LIBPQ})
-elseif(LIBPQD)
- target_link_libraries(${TARGET} PRIVATE ${LIBPQD})
-else()
- target_link_libraries(${TARGET} PRIVATE ${LIBPQ})
-endif()
-
-install(TARGETS ${TARGET}
- RUNTIME DESTINATION bin
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib
- )
-install(DIRECTORY include/ DESTINATION include
- CONFIGURATIONS Release
- PATTERN "doc" EXCLUDE
- PATTERN "*.am" EXCLUDE
- PATTERN "*.in" EXCLUDE
- PATTERN "*.template" EXCLUDE
- PATTERN "CMakeLists.txt" EXCLUDE
- )
-install(DIRECTORY ${CMAKE_BINARY_DIR}/pqxx/ DESTINATION include/pqxx
- CONFIGURATIONS Release
- FILES_MATCHING PATTERN "*.h"
- )