diff options
| author | Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> | 2020-05-02 03:43:06 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-01 12:43:06 -0700 |
| commit | 26577fd0adf785cb09654b436a6cd4cca5bd42f7 (patch) | |
| tree | 7a67401edcafefcfe8540855ed149af1226c71cf /ports/mongo-c-driver | |
| parent | ef50d66690df4712495039e68054269d705c14b4 (diff) | |
| download | vcpkg-26577fd0adf785cb09654b436a6cd4cca5bd42f7.tar.gz vcpkg-26577fd0adf785cb09654b436a6cd4cca5bd42f7.zip | |
[libbson/mongo-c-driver] Update to 1.16.1 (#10010)
* [libbson/mongo-c-driver] Update to 1.16.1
* [libbson] Refix static build
* [mongo-c-driver] Re-fix dependency libbson and dynamic build
* [mongo-c-driver] Fix generate cmake file
* [mongo-cxx-driver] Fix find libbson
* [mongo-c-driver] Fix generate cmake file when building static
* [mongo-cxx-driver] Fix dependency mongo-c-driver
* update version info
* [mongo-c-driver] Update patch
* [mongo-c-driver] Re-generate patch.
* [mongo-c-driver] Re-generate patch
Diffstat (limited to 'ports/mongo-c-driver')
| -rw-r--r-- | ports/mongo-c-driver/CONTROL | 2 | ||||
| -rw-r--r-- | ports/mongo-c-driver/disable-static-when-dynamic-build.patch | 61 | ||||
| -rw-r--r-- | ports/mongo-c-driver/fix-arm-build.patch | 28 | ||||
| -rw-r--r-- | ports/mongo-c-driver/fix-dependency-libbson.patch | 87 | ||||
| -rw-r--r-- | ports/mongo-c-driver/portfile.cmake | 278 | ||||
| -rw-r--r-- | ports/mongo-c-driver/usage | 8 |
6 files changed, 302 insertions, 162 deletions
diff --git a/ports/mongo-c-driver/CONTROL b/ports/mongo-c-driver/CONTROL index 643b2ec5f..ebb14c03d 100644 --- a/ports/mongo-c-driver/CONTROL +++ b/ports/mongo-c-driver/CONTROL @@ -1,5 +1,5 @@ Source: mongo-c-driver -Version: 1.15.1-1 +Version: 1.16.1 Build-Depends: libbson, openssl (!windows), zlib Description: Client library written in C for MongoDB. Homepage: https://github.com/mongodb/mongo-c-driver diff --git a/ports/mongo-c-driver/disable-static-when-dynamic-build.patch b/ports/mongo-c-driver/disable-static-when-dynamic-build.patch new file mode 100644 index 000000000..5652d7bd7 --- /dev/null +++ b/ports/mongo-c-driver/disable-static-when-dynamic-build.patch @@ -0,0 +1,61 @@ +diff --git a/src/libmongoc/CMakeLists.txt b/src/libmongoc/CMakeLists.txt +index 797aaec..91d97dc 100644 +--- a/src/libmongoc/CMakeLists.txt ++++ b/src/libmongoc/CMakeLists.txt +@@ -694,6 +694,7 @@ if (WIN32) + set (LIBRARIES ${LIBRARIES} ws2_32) + endif () + ++if (NOT MONGOC_ENABLE_STATIC) + add_library (mongoc_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) + set_target_properties (mongoc_shared PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden) + target_link_libraries (mongoc_shared PRIVATE ${LIBRARIES} PUBLIC ${BSON_LIBRARIES}) +@@ -706,7 +707,7 @@ target_compile_definitions (mongoc_shared PRIVATE MONGOC_COMPILATION) + set_target_properties (mongoc_shared PROPERTIES VERSION 0.0.0 SOVERSION 0) + set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "${MONGOC_OUTPUT_BASENAME}-${MONGOC_API_VERSION}") + +-if (MONGOC_ENABLE_STATIC) ++else () + add_library (mongoc_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) + target_link_libraries (mongoc_static ${STATIC_LIBRARIES} ${BSON_LIBRARIES}) + target_include_directories (mongoc_static BEFORE PUBLIC ${MONGOC_INTERNAL_INCLUDE_DIRS}) +@@ -733,8 +734,13 @@ if (ENABLE_APPLE_FRAMEWORK) + endif () + + add_executable (mongoc-stat ${PROJECT_SOURCE_DIR}/../../src/tools/mongoc-stat.c) ++if (NOT MONGOC_ENABLE_STATIC) + target_include_directories (mongoc-stat PRIVATE ${BSON_INCLUDE_DIRS}) + target_link_libraries (mongoc-stat mongoc_shared ${LIBRARIES}) ++else() ++target_include_directories (mongoc-stat PRIVATE ${BSON_INCLUDE_DIRS}) ++target_link_libraries (mongoc-stat mongoc_static ${LIBRARIES}) ++endif() + + # mongoc-stat works if shared memory performance counters are enabled. + if (ENABLE_SHM_COUNTERS STREQUAL "ON") +@@ -980,7 +986,7 @@ file (COPY ${PROJECT_SOURCE_DIR}/tests/x509gen DESTINATION ${PROJECT_BINARY_DIR} + file (COPY ${PROJECT_SOURCE_DIR}/tests/release_files DESTINATION ${PROJECT_BINARY_DIR}/tests) + + if (MONGOC_ENABLE_STATIC) +- set (TARGETS_TO_INSTALL mongoc_shared mongoc_static) ++ set (TARGETS_TO_INSTALL mongoc_static) + else () + set (TARGETS_TO_INSTALL mongoc_shared) + endif () +@@ -1000,6 +1006,7 @@ install ( + ) + + if (MSVC) ++ if (NOT MONGOC_ENABLE_STATIC) + add_custom_command ( + TARGET mongoc_shared + POST_BUILD +@@ -1011,7 +1018,7 @@ if (MSVC) + FILES $<TARGET_LINKER_FILE_DIR:mongoc_shared>/lib$<TARGET_LINKER_FILE_NAME:mongoc_shared> + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) +- if (TARGET mongoc_static) ++ else () + add_custom_command ( + TARGET mongoc_static + POST_BUILD diff --git a/ports/mongo-c-driver/fix-arm-build.patch b/ports/mongo-c-driver/fix-arm-build.patch index 06d042b15..8d61b745e 100644 --- a/ports/mongo-c-driver/fix-arm-build.patch +++ b/ports/mongo-c-driver/fix-arm-build.patch @@ -1,24 +1,24 @@ diff --git a/src/libmongoc/CMakeLists.txt b/src/libmongoc/CMakeLists.txt -index c8a4f02..78f69f2 100644 +index 91d97dc..ccebc2a 100644 --- a/src/libmongoc/CMakeLists.txt +++ b/src/libmongoc/CMakeLists.txt -@@ -645,6 +645,9 @@ endif () +@@ -698,6 +698,9 @@ if (NOT MONGOC_ENABLE_STATIC) add_library (mongoc_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) set_target_properties (mongoc_shared PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden) - target_link_libraries (mongoc_shared ${LIBRARIES} ${BSON_LIBRARIES}) + target_link_libraries (mongoc_shared PRIVATE ${LIBRARIES} PUBLIC ${BSON_LIBRARIES}) +if (WIN32) -+ target_link_libraries (mongoc_shared Advapi32) ++ target_link_libraries (mongoc_shared PRIVATE Advapi32) +endif() - target_include_directories (mongoc_shared BEFORE PUBLIC ${BSON_INCLUDE_DIRS} ${MONGOC_INTERNAL_INCLUDE_DIRS}) - target_compile_definitions (mongoc_shared PUBLIC MONGOC_COMPILATION ${BSON_DEFINITIONS}) - -@@ -654,6 +657,9 @@ set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "mongoc-${MONGOC_API - if (MONGOC_ENABLE_STATIC) + target_include_directories (mongoc_shared BEFORE PUBLIC ${MONGOC_INTERNAL_INCLUDE_DIRS}) + target_include_directories (mongoc_shared PRIVATE ${PRIVATE_ZLIB_INCLUDES}) + target_include_directories (mongoc_shared PRIVATE ${LIBMONGOCRYPT_INCLUDE_DIRECTORIES}) +@@ -710,6 +713,9 @@ set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "${MONGOC_OUTPUT_BAS + else () add_library (mongoc_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) - target_link_libraries (mongoc_static ${LIBRARIES} ${BSON_STATIC_LIBRARIES}) -+ if (WIN32) + target_link_libraries (mongoc_static ${STATIC_LIBRARIES} ${BSON_LIBRARIES}) ++ if (WIN32) + target_link_libraries (mongoc_static Advapi32) + endif() - target_include_directories (mongoc_static BEFORE PUBLIC ${BSON_STATIC_INCLUDE_DIRS} ${MONGOC_INTERNAL_INCLUDE_DIRS}) - target_compile_definitions (mongoc_static PUBLIC MONGOC_COMPILATION MONGOC_STATIC ${BSON_STATIC_DEFINITIONS}) - set_target_properties (mongoc_static PROPERTIES VERSION 0.0.0) + target_include_directories (mongoc_static BEFORE PUBLIC ${MONGOC_INTERNAL_INCLUDE_DIRS}) + target_include_directories (mongoc_static PRIVATE ${PRIVATE_ZLIB_INCLUDES}) + target_include_directories (mongoc_static PRIVATE ${LIBMONGOCRYPT_INCLUDE_DIRECTORIES}) diff --git a/ports/mongo-c-driver/fix-dependency-libbson.patch b/ports/mongo-c-driver/fix-dependency-libbson.patch new file mode 100644 index 000000000..68e7b2b9b --- /dev/null +++ b/ports/mongo-c-driver/fix-dependency-libbson.patch @@ -0,0 +1,87 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1a2b7ba..7c939d6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -169,14 +169,6 @@ if (ENABLE_BSON STREQUAL SYSTEM) + endif () + + set (USING_SYSTEM_BSON TRUE) +- if (NOT TARGET mongo::bson_shared) +- message (FATAL_ERROR "System libbson built without shared library target") +- endif () +- set (BSON_LIBRARIES mongo::bson_shared) +- if (NOT TARGET mongo::bson_static) +- message (FATAL_ERROR "System libbson built without static library target") +- endif () +- set (BSON_STATIC_LIBRARIES mongo::bson_static) + endif () + + unset (dist_generated CACHE) +diff --git a/src/libmongoc/CMakeLists.txt b/src/libmongoc/CMakeLists.txt +index 0f9e50c..797aaec 100644 +--- a/src/libmongoc/CMakeLists.txt ++++ b/src/libmongoc/CMakeLists.txt +@@ -700,6 +700,7 @@ target_link_libraries (mongoc_shared PRIVATE ${LIBRARIES} PUBLIC ${BSON_LIBRARIE + target_include_directories (mongoc_shared BEFORE PUBLIC ${MONGOC_INTERNAL_INCLUDE_DIRS}) + target_include_directories (mongoc_shared PRIVATE ${PRIVATE_ZLIB_INCLUDES}) + target_include_directories (mongoc_shared PRIVATE ${LIBMONGOCRYPT_INCLUDE_DIRECTORIES}) ++target_include_directories (mongoc_shared PRIVATE ${BSON_INCLUDE_DIRS}) + target_compile_definitions (mongoc_shared PRIVATE MONGOC_COMPILATION) + + set_target_properties (mongoc_shared PROPERTIES VERSION 0.0.0 SOVERSION 0) +@@ -707,10 +708,11 @@ set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "${MONGOC_OUTPUT_BAS + + if (MONGOC_ENABLE_STATIC) + add_library (mongoc_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) +- target_link_libraries (mongoc_static ${STATIC_LIBRARIES} ${BSON_STATIC_LIBRARIES}) ++ target_link_libraries (mongoc_static ${STATIC_LIBRARIES} ${BSON_LIBRARIES}) + target_include_directories (mongoc_static BEFORE PUBLIC ${MONGOC_INTERNAL_INCLUDE_DIRS}) + target_include_directories (mongoc_static PRIVATE ${PRIVATE_ZLIB_INCLUDES}) + target_include_directories (mongoc_static PRIVATE ${LIBMONGOCRYPT_INCLUDE_DIRECTORIES}) ++ target_include_directories (mongoc_static PRIVATE ${BSON_INCLUDE_DIRS}) + target_compile_definitions (mongoc_static + PUBLIC MONGOC_STATIC ${BSON_STATIC_PUBLIC_DEFINITIONS} + PRIVATE MONGOC_COMPILATION +@@ -731,6 +733,7 @@ if (ENABLE_APPLE_FRAMEWORK) + endif () + + add_executable (mongoc-stat ${PROJECT_SOURCE_DIR}/../../src/tools/mongoc-stat.c) ++target_include_directories (mongoc-stat PRIVATE ${BSON_INCLUDE_DIRS}) + target_link_libraries (mongoc-stat mongoc_shared ${LIBRARIES}) + + # mongoc-stat works if shared memory performance counters are enabled. +diff --git a/src/libmongoc/build/cmake/libmongoc-1.0-config.cmake.in b/src/libmongoc/build/cmake/libmongoc-1.0-config.cmake.in +index feeca02..62aa21a 100644 +--- a/src/libmongoc/build/cmake/libmongoc-1.0-config.cmake.in ++++ b/src/libmongoc/build/cmake/libmongoc-1.0-config.cmake.in +@@ -19,7 +19,7 @@ set (MONGOC_MINOR_VERSION @MONGOC_MINOR_VERSION@) + set (MONGOC_MICRO_VERSION @MONGOC_MICRO_VERSION@) + set (MONGOC_VERSION @MONGOC_VERSION@) + +-find_package (libbson-1.0 "@MONGOC_MAJOR_VERSION@.@MONGOC_MINOR_VERSION@" REQUIRED) ++find_package (bson-1.0 "@MONGOC_MAJOR_VERSION@.@MONGOC_MINOR_VERSION@" REQUIRED) + + @PACKAGE_INIT@ + +diff --git a/src/libmongoc/build/cmake/libmongoc-static-1.0-config.cmake.in b/src/libmongoc/build/cmake/libmongoc-static-1.0-config.cmake.in +index 6f05b0c..113804e 100644 +--- a/src/libmongoc/build/cmake/libmongoc-static-1.0-config.cmake.in ++++ b/src/libmongoc/build/cmake/libmongoc-static-1.0-config.cmake.in +@@ -19,7 +19,7 @@ set (MONGOC_STATIC_MINOR_VERSION @MONGOC_MINOR_VERSION@) + set (MONGOC_STATIC_MICRO_VERSION @MONGOC_MICRO_VERSION@) + set (MONGOC_STATIC_VERSION @MONGOC_VERSION@) + +-find_package (libbson-static-1.0 "@MONGOC_MAJOR_VERSION@.@MONGOC_MINOR_VERSION@" REQUIRED) ++find_package (bson-1.0 "@MONGOC_MAJOR_VERSION@.@MONGOC_MINOR_VERSION@" REQUIRED) + + @PACKAGE_INIT@ + +@@ -57,3 +57,7 @@ foreach (LIB @SASL_LIBRARIES@ @SSL_LIBRARIES@ @SHM_LIBRARIES@ @ZLIB_LIBRARIES@ + endforeach () + + set (MONGOC_STATIC_DEFINITIONS MONGOC_STATIC ${BSON_STATIC_DEFINITIONS}) ++ ++set (MONGOC_INCLUDE_DIRS ${MONGOC_STATIC_INCLUDE_DIRS}) ++set (MONGOC_LIBRARIES ${MONGOC_STATIC_LIBRARIES}) ++set (MONGOC_DEFINITIONS ${MONGOC_STATIC_DEFINITIONS}) +\ No newline at end of file diff --git a/ports/mongo-c-driver/portfile.cmake b/ports/mongo-c-driver/portfile.cmake index 0c737a0f4..3516886b1 100644 --- a/ports/mongo-c-driver/portfile.cmake +++ b/ports/mongo-c-driver/portfile.cmake @@ -1,142 +1,136 @@ -vcpkg_from_github(
- OUT_SOURCE_PATH SOURCE_PATH
- REPO mongodb/mongo-c-driver
- REF 541086adcf1eecf88ac09fda47d9a8ec1598015d # debian/1.15.1-1
- SHA512 a57438dfae9d0993ae04b7a76677f79331699898f21e7645db5edd2c91014f33b738a0af67b58234d1ee03aab2ae3b58c183bbd043fc2bde5cc1a4e111755b70
- HEAD_REF master
- PATCHES fix-arm-build.patch
-)
-
-vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
- "snappy" ENABLE_SNAPPY
- "icu" ENABLE_ICU
-)
-
-if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
- set(ENABLE_STATIC ON)
-else()
- set(ENABLE_STATIC OFF)
-endif()
-
-if(VCPKG_TARGET_IS_WINDOWS)
- set(ENABLE_SSL "WINDOWS")
-else()
- set(ENABLE_SSL "OPENSSL")
-endif()
-
-file(READ ${CMAKE_CURRENT_LIST_DIR}/CONTROL _contents)
-string(REGEX MATCH "\nVersion:[ ]*[^ \n]+" _contents "${_contents}")
-string(REGEX REPLACE ".+Version:[ ]*([\\.0-9]+).*" "\\1" BUILD_VERSION "${_contents}")
-
-vcpkg_configure_cmake(
- SOURCE_PATH ${SOURCE_PATH}
- PREFER_NINJA
- OPTIONS
- -DBSON_ROOT_DIR=${CURRENT_INSTALLED_DIR}
- -DENABLE_MONGOC=ON
- -DENABLE_BSON=ON
- -DENABLE_TESTS=OFF
- -DENABLE_EXAMPLES=OFF
- -DENABLE_SSL=${ENABLE_SSL}
- -DENABLE_ZLIB=SYSTEM
- -DENABLE_STATIC=${ENABLE_STATIC}
- -DBUILD_VERSION=${BUILD_VERSION}
- ${FEATURE_OPTIONS}
-)
-
-vcpkg_install_cmake()
-
-if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
- vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libmongoc-static-1.0)
-else()
- vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libmongoc-1.0)
-endif()
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
-
-# This rename is needed because the official examples expect to use #include <mongoc.h>
-# See Microsoft/vcpkg#904
-file(RENAME
- ${CURRENT_PACKAGES_DIR}/include/libmongoc-1.0
- ${CURRENT_PACKAGES_DIR}/temp)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include)
-file(RENAME ${CURRENT_PACKAGES_DIR}/temp ${CURRENT_PACKAGES_DIR}/include)
-
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
-
-if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_TARGET_IS_UWP)
- file(RENAME
- ${CURRENT_PACKAGES_DIR}/lib/libmongoc-static-1.0.a
- ${CURRENT_PACKAGES_DIR}/lib/libmongoc-1.0.a)
- file(RENAME
- ${CURRENT_PACKAGES_DIR}/debug/lib/libmongoc-static-1.0.a
- ${CURRENT_PACKAGES_DIR}/debug/lib/libmongoc-1.0.a)
- else()
- file(RENAME
- ${CURRENT_PACKAGES_DIR}/lib/mongoc-static-1.0.lib
- ${CURRENT_PACKAGES_DIR}/lib/mongoc-1.0.lib)
- file(RENAME
- ${CURRENT_PACKAGES_DIR}/debug/lib/mongoc-static-1.0.lib
- ${CURRENT_PACKAGES_DIR}/debug/lib/mongoc-1.0.lib)
- endif()
-
- # drop the __declspec(dllimport) when building static
- file(READ ${CURRENT_PACKAGES_DIR}/include/mongoc/mongoc-macros.h MONGOC_MACROS_H)
- string(REPLACE "define MONGOC_API __declspec(dllimport)" "define MONGOC_API" MONGOC_MACROS_H "${MONGOC_MACROS_H}")
- file(WRITE ${CURRENT_PACKAGES_DIR}/include/mongoc/mongoc-macros.h "${MONGOC_MACROS_H}")
-
- file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin ${CURRENT_PACKAGES_DIR}/bin)
-endif()
-
-configure_file(${SOURCE_PATH}/COPYING ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/copyright COPYONLY)
-file(COPY ${SOURCE_PATH}/THIRD_PARTY_NOTICES DESTINATION ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver)
-
-if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- set(PORT_POSTFIX "static-1.0")
-else()
- set(PORT_POSTFIX "1.0")
-endif()
-
-# Create cmake files for _both_ find_package(mongo-c-driver) and find_package(libmongoc-static-1.0)/find_package(libmongoc-1.0)
-file(READ ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/libmongoc-${PORT_POSTFIX}-config.cmake LIBMONGOC_CONFIG_CMAKE)
-
-# Patch: Set _IMPORT_PREFIX and replace PACKAGE_PREFIX_DIR
-string(REPLACE
-[[
-get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
-]]
-[[
-# VCPKG PATCH SET IMPORT_PREFIX
-get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
-get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
-get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
-if(_IMPORT_PREFIX STREQUAL "/")
- set(_IMPORT_PREFIX "")
-endif()
-]]
- LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-string(REPLACE [[PACKAGE_PREFIX_DIR]] [[_IMPORT_PREFIX]] LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-
-string(REPLACE "/include/libmongoc-1.0" "/include" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-string(REPLACE "mongoc-static-1.0" "mongoc-1.0" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-#Something similar is probably required for windows too!
-string(REPLACE "/lib/libssl.a" "\$<\$<CONFIG:DEBUG>:/debug>/lib/libssl.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-string(REPLACE "/lib/libcrypto.a" "\$<\$<CONFIG:DEBUG>:/debug>/lib/libcrypto.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-string(REPLACE "/lib/libz.a" "\$<\$<CONFIG:DEBUG>:/debug>/lib/libz.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}")
-
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/libmongoc-${PORT_POSTFIX}-config.cmake "${LIBMONGOC_CONFIG_CMAKE}")
-file(COPY ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/libmongoc-${PORT_POSTFIX}-config.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX})
-file(COPY ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/libmongoc-${PORT_POSTFIX}-config-version.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX})
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/libmongoc-${PORT_POSTFIX}-config.cmake ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/mongo-c-driver-config.cmake)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/libmongoc-${PORT_POSTFIX}-config-version.cmake ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/mongo-c-driver-config-version.cmake)
-
-vcpkg_copy_pdbs()
-
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
-
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libbson-1.0.pc ${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libbson-1.0.pc)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libbson-static-1.0.pc ${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libbson-static-1.0.pc)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/bson-1.0.lib ${CURRENT_PACKAGES_DIR}/lib/bson-1.0.lib)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/bson-static-1.0.lib ${CURRENT_PACKAGES_DIR}/lib/bson-static-1.0.lib)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/libbson-1.0.dll ${CURRENT_PACKAGES_DIR}/bin/libbson-1.0.dll)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/libbson-1.0.pdb ${CURRENT_PACKAGES_DIR}/bin/libbson-1.0.pdb)
+# This port needs to be updated at the same time as libbson +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO mongodb/mongo-c-driver + REF 99d422877c5b5ea52006c13ee3b48297251b2b2d # debian/1.16.1 + SHA512 e2f129439ff3697981774e0de35586a6afe98838acfc52d8a115bcb298350f2779b886dc6b27130e78b3b81f9b0a85b2bc6bcef246f9685c05f6789747c4739d + HEAD_REF master + PATCHES + fix-dependency-libbson.patch + disable-static-when-dynamic-build.patch + fix-arm-build.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + "snappy" ENABLE_SNAPPY + "icu" ENABLE_ICU +) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(ENABLE_STATIC ON) +else() + set(ENABLE_STATIC OFF) +endif() + +if(VCPKG_TARGET_IS_WINDOWS) + set(ENABLE_SSL "WINDOWS") +else() + set(ENABLE_SSL "OPENSSL") +endif() + +file(READ ${CMAKE_CURRENT_LIST_DIR}/CONTROL _contents) +string(REGEX MATCH "\nVersion:[ ]*[^ \n]+" _contents "${_contents}") +string(REGEX REPLACE ".+Version:[ ]*([\\.0-9]+).*" "\\1" BUILD_VERSION "${_contents}") + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DBSON_ROOT_DIR=${CURRENT_INSTALLED_DIR} + -DENABLE_MONGOC=ON + -DENABLE_BSON=SYSTEM + -DENABLE_TESTS=OFF + -DENABLE_EXAMPLES=OFF + -DENABLE_SSL=${ENABLE_SSL} + -DENABLE_ZLIB=SYSTEM + -DENABLE_STATIC=${ENABLE_STATIC} + -DBUILD_VERSION=${BUILD_VERSION} + ${FEATURE_OPTIONS} +) + +vcpkg_install_cmake() + +vcpkg_copy_pdbs() + +set(PORT_POSTFIX "1.0") + +if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libmongoc-static-${PORT_POSTFIX} TARGET_PATH share/libmongoc-${PORT_POSTFIX}) +else() + vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libmongoc-${PORT_POSTFIX} TARGET_PATH share/libmongoc-${PORT_POSTFIX}) +endif() +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +# This rename is needed because the official examples expect to use #include <mongoc.h> +# See Microsoft/vcpkg#904 +file(RENAME + ${CURRENT_PACKAGES_DIR}/include/libmongoc-${PORT_POSTFIX} + ${CURRENT_PACKAGES_DIR}/temp) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include) +file(RENAME ${CURRENT_PACKAGES_DIR}/temp ${CURRENT_PACKAGES_DIR}/include) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_TARGET_IS_UWP) + file(RENAME + ${CURRENT_PACKAGES_DIR}/lib/libmongoc-static-1.0.a + ${CURRENT_PACKAGES_DIR}/lib/libmongoc-1.0.a) + file(RENAME + ${CURRENT_PACKAGES_DIR}/debug/lib/libmongoc-static-1.0.a + ${CURRENT_PACKAGES_DIR}/debug/lib/libmongoc-1.0.a) + else() + file(RENAME + ${CURRENT_PACKAGES_DIR}/lib/mongoc-static-1.0.lib + ${CURRENT_PACKAGES_DIR}/lib/mongoc-1.0.lib) + file(RENAME + ${CURRENT_PACKAGES_DIR}/debug/lib/mongoc-static-1.0.lib + ${CURRENT_PACKAGES_DIR}/debug/lib/mongoc-1.0.lib) + endif() + + # drop the __declspec(dllimport) when building static + vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/include/mongoc/mongoc-macros.h + "define MONGOC_API __declspec(dllimport)" "define MONGOC_API") + + file(RENAME ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX}/libmongoc-static-${PORT_POSTFIX}-config.cmake + ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX}/libmongoc-${PORT_POSTFIX}-config.cmake) + file(RENAME ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX}/libmongoc-static-${PORT_POSTFIX}-config-version.cmake + ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX}/libmongoc-${PORT_POSTFIX}-config-version.cmake) + + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin ${CURRENT_PACKAGES_DIR}/bin) +endif() + +# Create cmake files for _both_ find_package(mongo-c-driver) and find_package(libmongoc-static-1.0)/find_package(libmongoc-1.0) +file(READ ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX}/libmongoc-${PORT_POSTFIX}-config.cmake LIBMONGOC_CONFIG_CMAKE) + +# Patch: Set _IMPORT_PREFIX and replace PACKAGE_PREFIX_DIR +string(REPLACE +[[ +get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) +]] +[[ +# VCPKG PATCH SET IMPORT_PREFIX +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() +]] + LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") +string(REPLACE [[PACKAGE_PREFIX_DIR]] [[_IMPORT_PREFIX]] LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") + +string(REPLACE "/include/libmongoc-1.0" "/include" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") +string(REPLACE "mongoc-static-1.0" "mongoc-1.0" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") +#Something similar is probably required for windows too! +if (NOT VCPKG_TARGET_IS_WINDOWS) + string(REPLACE "/lib/libssl.a" "\$<\$<CONFIG:DEBUG>:/debug>/lib/libssl.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") + string(REPLACE "/lib/libcrypto.a" "\$<\$<CONFIG:DEBUG>:/debug>/lib/libcrypto.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") + string(REPLACE "/lib/libz.a" "\$<\$<CONFIG:DEBUG>:/debug>/lib/libz.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") +endif() + +file(WRITE ${CURRENT_PACKAGES_DIR}/share/libmongoc-${PORT_POSTFIX}/libmongoc-${PORT_POSTFIX}-config.cmake "${LIBMONGOC_CONFIG_CMAKE}") + +file(COPY ${SOURCE_PATH}/THIRD_PARTY_NOTICES DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) diff --git a/ports/mongo-c-driver/usage b/ports/mongo-c-driver/usage index 80595cd07..6fee3c684 100644 --- a/ports/mongo-c-driver/usage +++ b/ports/mongo-c-driver/usage @@ -1,9 +1,7 @@ The package mongo-c-driver is compatible with built-in CMake targets:
find_package(mongo-c-driver CONFIG REQUIRED)
- target_include_directories(${project} PRIVATE ${MONGOC_INCLUDE_DIRS})
-For use dynamic library:
- target_link_libraries(${project} PRIVATE ${MONGOC_LIBRARIES})
-For use static library:
- target_link_libraries(${project} PRIVATE ${MONGOC_STATIC_LIBRARY})
+ target_include_directories(main PRIVATE ${MONGOC_INCLUDE_DIRS})
+ target_link_libraries(main PRIVATE ${MONGOC_LIBRARIES})
+ target_compile_definitions(main PRIVATE ${MONGOC_DEFINITIONS})
|
