diff --git a/ports/libbson/CONTROL b/ports/libbson/CONTROL index ab99da6baa..f8bb6bb951 100644 --- a/ports/libbson/CONTROL +++ b/ports/libbson/CONTROL @@ -1,4 +1,4 @@ Source: libbson -Version: 1.15.1-1 +Version: 1.16.1 Description: libbson is a library providing useful routines related to building, parsing, and iterating BSON documents. Homepage: https://github.com/mongodb/libbson diff --git a/ports/libbson/fix-static-cmake.patch b/ports/libbson/fix-static-cmake.patch new file mode 100644 index 0000000000..11e11dcbad --- /dev/null +++ b/ports/libbson/fix-static-cmake.patch @@ -0,0 +1,13 @@ +diff --git a/src/libbson/build/cmake/libbson-static-1.0-config.cmake.in b/src/libbson/build/cmake/libbson-static-1.0-config.cmake.in +index 92933fe..d98ebd3 100644 +--- a/src/libbson/build/cmake/libbson-static-1.0-config.cmake.in ++++ b/src/libbson/build/cmake/libbson-static-1.0-config.cmake.in +@@ -36,3 +36,7 @@ foreach (LIB @LIBBSON_LIBRARIES@) + endforeach () + + set (BSON_STATIC_DEFINITIONS BSON_STATIC) ++ ++set (BSON_LIBRARIES ${BSON_STATIC_LIBRARIES}) ++set (BSON_INCLUDE_DIRS ${BSON_STATIC_INCLUDE_DIRS}) ++set (BSON_DEFINITIONS BSON_STATIC) +\ No newline at end of file diff --git a/ports/libbson/fix-uwp.patch b/ports/libbson/fix-uwp.patch index 8a793aece3..9342e81bd0 100644 --- a/ports/libbson/fix-uwp.patch +++ b/ports/libbson/fix-uwp.patch @@ -1,6 +1,8 @@ +diff --git a/src/libbson/CMakeLists.txt b/src/libbson/CMakeLists.txt +index 7c479d8..d383424 100644 --- a/src/libbson/CMakeLists.txt +++ b/src/libbson/CMakeLists.txt -@@ -217,6 +217,9 @@ set (HEADERS_FORWARDING +@@ -226,6 +226,9 @@ set (HEADERS_FORWARDING ${PROJECT_SOURCE_DIR}/src/bson/forwarding/bson.h ) @@ -9,8 +11,8 @@ +if (NOT ENABLE_STATIC MATCHES "ON|AUTO") add_library (bson_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) set (CMAKE_CXX_VISIBILITY_PRESET hidden) - set_target_properties (bson_shared PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILATION;JSONSL_PARSE_NAN") -@@ -258,16 +261,21 @@ if (WIN32) + target_compile_definitions (bson_shared PRIVATE BSON_COMPILATION JSONSL_PARSE_NAN) +@@ -268,9 +271,13 @@ if (WIN32) # must be handled specially since we can't resolve them set (BSON_SYSTEM_LIBRARIES ${BSON_SYSTEM_LIBRARIES} ws2_32) endif () @@ -19,12 +21,12 @@ if (ENABLE_STATIC MATCHES "ON|AUTO") add_library (bson_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) + set(CMAKE_CXX_VISIBILITY_PRESET hidden) - set_target_properties (bson_static PROPERTIES COMPILE_DEFINITIONS "BSON_COMPILATION;BSON_STATIC;JSONSL_PARSE_NAN") - set_target_properties (bson_static PROPERTIES VERSION 0.0.0) - set_target_properties (bson_static PROPERTIES OUTPUT_NAME "bson-static-${BSON_API_VERSION}") + set(THREADS_PREFER_PTHREAD_FLAG 1) -+ find_package (Threads REQUIRED) - target_link_libraries (bson_static Threads::Threads) ++ find_package(Threads REQUIRED) + target_compile_definitions (bson_static + PUBLIC BSON_STATIC + PRIVATE BSON_COMPILATION JSONSL_PARSE_NAN +@@ -284,6 +291,7 @@ if (ENABLE_STATIC MATCHES "ON|AUTO") if (RT_LIBRARY) target_link_libraries (bson_static ${RT_LIBRARY}) endif () @@ -32,7 +34,7 @@ if (M_LIBRARY) target_link_libraries (bson_static ${M_LIBRARY}) endif () -@@ -282,7 +290,7 @@ function (add_example bin src) +@@ -298,7 +306,7 @@ function (add_example bin src) add_executable (${bin} ${BSON_EXAMPLE_SOURCES}) # Link against the shared lib like normal apps @@ -41,73 +43,106 @@ set (EXAMPLES ${EXAMPLES} ${bin}) endfunction () -@@ -304,6 +312,7 @@ set (BSON_HEADER_INSTALL_DIR - "${CMAKE_INSTALL_INCLUDEDIR}/libbson-${BSON_API_VERSION}" +@@ -322,7 +330,7 @@ set (BSON_HEADER_INSTALL_DIR ) -+if (NOT ENABLE_STATIC MATCHES "ON|AUTO") - install ( - TARGETS bson_shared ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -@@ -311,6 +320,7 @@ install ( - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} - ) -+endif () if (ENABLE_STATIC MATCHES "ON|AUTO") - install ( - TARGETS bson_static ${EXAMPLES} +- set (TARGETS_TO_INSTALL bson_shared bson_static) ++ set (TARGETS_TO_INSTALL bson_static) + else () + set (TARGETS_TO_INSTALL bson_shared) + endif () +@@ -337,6 +345,7 @@ install ( + ) + + if (MSVC) ++ if (NOT ENABLE_STATIC MATCHES "ON|AUTO") + add_custom_command ( + TARGET bson_shared + POST_BUILD +@@ -348,6 +357,7 @@ if (MSVC) + FILES $/lib$ + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) ++ else() + if (TARGET bson_static) + add_custom_command ( + TARGET bson_static +@@ -361,6 +371,7 @@ if (MSVC) + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + endif () ++ endif() + endif () + + install ( +diff --git a/src/libmongoc/CMakeLists.txt b/src/libmongoc/CMakeLists.txt +index 0f9e50c..85eb429 100644 --- a/src/libmongoc/CMakeLists.txt +++ b/src/libmongoc/CMakeLists.txt -@@ -609,6 +609,7 @@ if (WIN32) +@@ -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 ${LIBRARIES} ${BSON_LIBRARIES}) -@@ -617,6 +618,7 @@ target_compile_definitions (mongoc_shared PUBLIC MONGOC_COMPILATION ${BSON_DEFIN + target_link_libraries (mongoc_shared PRIVATE ${LIBRARIES} PUBLIC ${BSON_LIBRARIES}) +@@ -704,6 +705,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-${MONGOC_API_VERSION}" PREFIX "lib") + set_target_properties (mongoc_shared PROPERTIES OUTPUT_NAME "${MONGOC_OUTPUT_BASENAME}-${MONGOC_API_VERSION}") +endif () if (MONGOC_ENABLE_STATIC) add_library (mongoc_static STATIC ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING}) -@@ -639,7 +641,11 @@ if (ENABLE_APPLE_FRAMEWORK) +@@ -731,7 +733,11 @@ if (ENABLE_APPLE_FRAMEWORK) endif () add_executable (mongoc-stat ${PROJECT_SOURCE_DIR}/../../src/tools/mongoc-stat.c) +if (MONGOC_ENABLE_STATIC) +target_link_libraries (mongoc-stat mongoc_static) +else () - target_link_libraries (mongoc-stat mongoc_shared) + target_link_libraries (mongoc-stat mongoc_shared ${LIBRARIES}) +endif () # mongoc-stat works if shared memory performance counters are enabled. if (ENABLE_SHM_COUNTERS STREQUAL "ON") -@@ -870,6 +876,7 @@ file (COPY ${PROJECT_SOURCE_DIR}/tests/json DESTINATION ${PROJECT_BINARY_DIR}/te - file (COPY ${PROJECT_SOURCE_DIR}/tests/x509gen DESTINATION ${PROJECT_BINARY_DIR}/tests) +@@ -977,7 +983,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 (NOT MONGOC_ENABLE_STATIC) - install ( - TARGETS mongoc_shared ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -@@ -877,10 +884,11 @@ install ( - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR} - ) -+endif () - if (MONGOC_ENABLE_STATIC) - install ( -- TARGETS mongoc_shared mongoc_static ${EXAMPLES} -+ TARGETS mongoc_static ${EXAMPLES} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +- set (TARGETS_TO_INSTALL mongoc_shared mongoc_static) ++ set (TARGETS_TO_INSTALL mongoc_static) + else () + set (TARGETS_TO_INSTALL mongoc_shared) + endif () +@@ -997,6 +1003,7 @@ install ( + ) + + if (MSVC) ++ if (NOT ENABLE_STATIC MATCHES "ON|AUTO") + add_custom_command ( + TARGET mongoc_shared + POST_BUILD +@@ -1008,6 +1015,7 @@ if (MSVC) + FILES $/lib$ + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) ++ else() + if (TARGET mongoc_static) + add_custom_command ( + TARGET mongoc_static +@@ -1021,6 +1029,7 @@ if (MSVC) + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + endif () ++ endif() + endif () + + install ( +diff --git a/src/libmongoc/src/mongoc/mongoc-gridfs-file.c b/src/libmongoc/src/mongoc/mongoc-gridfs-file.c +index 0690b86..98721df 100644 --- a/src/libmongoc/src/mongoc/mongoc-gridfs-file.c +++ b/src/libmongoc/src/mongoc/mongoc-gridfs-file.c @@ -765,7 +765,7 @@ _mongoc_gridfs_file_refresh_page (mongoc_gridfs_file_t *file) @@ -119,6 +154,8 @@ const char *key; bson_iter_t iter; int64_t existing_chunks; +diff --git a/src/libmongoc/src/mongoc/mongoc-handshake.c b/src/libmongoc/src/mongoc/mongoc-handshake.c +index 8374af2..5491595 100644 --- a/src/libmongoc/src/mongoc/mongoc-handshake.c +++ b/src/libmongoc/src/mongoc/mongoc-handshake.c @@ -286,7 +286,8 @@ _get_os_version (void) @@ -131,6 +168,8 @@ OSVERSIONINFO osvi; ZeroMemory (&osvi, sizeof (OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); +diff --git a/src/libmongoc/src/mongoc/mongoc-util.c b/src/libmongoc/src/mongoc/mongoc-util.c +index 99939ff..3c25e19 100644 --- a/src/libmongoc/src/mongoc/mongoc-util.c +++ b/src/libmongoc/src/mongoc/mongoc-util.c @@ -84,7 +84,11 @@ _mongoc_hex_md5 (const char *input) diff --git a/ports/libbson/portfile.cmake b/ports/libbson/portfile.cmake index bec809e7e7..f608be1989 100644 --- a/ports/libbson/portfile.cmake +++ b/ports/libbson/portfile.cmake @@ -1,10 +1,13 @@ +# This port needs to be updated at the same time as mongo-c-driver vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO mongodb/mongo-c-driver - REF 541086adcf1eecf88ac09fda47d9a8ec1598015d # debian/1.15.1-1 - SHA512 a57438dfae9d0993ae04b7a76677f79331699898f21e7645db5edd2c91014f33b738a0af67b58234d1ee03aab2ae3b58c183bbd043fc2bde5cc1a4e111755b70 + REF 99d422877c5b5ea52006c13ee3b48297251b2b2d # debian/1.16.1 + SHA512 e2f129439ff3697981774e0de35586a6afe98838acfc52d8a115bcb298350f2779b886dc6b27130e78b3b81f9b0a85b2bc6bcef246f9685c05f6789747c4739d HEAD_REF master - PATCHES fix-uwp.patch + PATCHES + fix-uwp.patch + fix-static-cmake.patch ) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") @@ -30,10 +33,15 @@ vcpkg_configure_cmake( ) 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/libbson-static-1.0) + vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libbson-static-${PORT_POSTFIX} TARGET_PATH share/bson-${PORT_POSTFIX}) else() - vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libbson-1.0) + vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/libbson-${PORT_POSTFIX} TARGET_PATH share/bson-${PORT_POSTFIX}) endif() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver) @@ -41,7 +49,7 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver) # This rename is needed because the official examples expect to use #include # See Microsoft/vcpkg#904 file(RENAME - ${CURRENT_PACKAGES_DIR}/include/libbson-1.0 + ${CURRENT_PACKAGES_DIR}/include/libbson-${PORT_POSTFIX} ${CURRENT_PACKAGES_DIR}/temp) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include) file(RENAME ${CURRENT_PACKAGES_DIR}/temp ${CURRENT_PACKAGES_DIR}/include) @@ -49,47 +57,27 @@ 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_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - file(RENAME - ${CURRENT_PACKAGES_DIR}/lib/libbson-static-1.0.a - ${CURRENT_PACKAGES_DIR}/lib/libbson-1.0.a) - file(RENAME - ${CURRENT_PACKAGES_DIR}/debug/lib/libbson-static-1.0.a - ${CURRENT_PACKAGES_DIR}/debug/lib/libbson-1.0.a) - else() - file(RENAME - ${CURRENT_PACKAGES_DIR}/lib/bson-static-1.0.lib - ${CURRENT_PACKAGES_DIR}/lib/bson-1.0.lib) - file(RENAME - ${CURRENT_PACKAGES_DIR}/debug/lib/bson-static-1.0.lib - ${CURRENT_PACKAGES_DIR}/debug/lib/bson-1.0.lib) - endif() - # drop the __declspec(dllimport) when building static - file(READ ${CURRENT_PACKAGES_DIR}/include/bson/bson-macros.h LIBBSON_MACROS_H) - string(REPLACE "define BSON_API __declspec(dllimport)" "define BSON_API" LIBBSON_MACROS_H "${LIBBSON_MACROS_H}") - file(WRITE ${CURRENT_PACKAGES_DIR}/include/bson/bson-macros.h "${LIBBSON_MACROS_H}") + vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/include/bson/bson-macros.h + "define BSON_API __declspec(dllimport)" "define BSON_API") + + file(RENAME ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/libbson-static-${PORT_POSTFIX}-config.cmake + ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/bson-${PORT_POSTFIX}-config.cmake) + file(RENAME ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/libbson-static-${PORT_POSTFIX}-config-version.cmake + ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/bson-${PORT_POSTFIX}-config-version.cmake) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin ${CURRENT_PACKAGES_DIR}/bin) +else() + file(RENAME ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/libbson-${PORT_POSTFIX}-config.cmake + ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/bson-${PORT_POSTFIX}-config.cmake) + file(RENAME ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/libbson-${PORT_POSTFIX}-config-version.cmake + ${CURRENT_PACKAGES_DIR}/share/bson-${PORT_POSTFIX}/bson-${PORT_POSTFIX}-config-version.cmake) endif() -configure_file(${SOURCE_PATH}/COPYING ${CURRENT_PACKAGES_DIR}/share/libbson/copyright COPYONLY) +vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/share/bson-1.0/bson-1.0-config.cmake + "include/libbson-1.0" "include/") + file(COPY ${SOURCE_PATH}/THIRD_PARTY_NOTICES DESTINATION ${CURRENT_PACKAGES_DIR}/share/libbson) -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(libbson) and find_package(libbson-static-1.0)/find_package(libbson-1.0) -file(READ ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-${PORT_POSTFIX}-config.cmake LIBBSON_CONFIG_CMAKE) -string(REPLACE "/include/libbson-1.0" "/include" LIBBSON_CONFIG_CMAKE "${LIBBSON_CONFIG_CMAKE}") -string(REPLACE "bson-static-1.0" "bson-1.0" LIBBSON_CONFIG_CMAKE "${LIBBSON_CONFIG_CMAKE}") -file(WRITE ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-${PORT_POSTFIX}-config.cmake "${LIBBSON_CONFIG_CMAKE}") -file(COPY ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-${PORT_POSTFIX}-config.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libbson-${PORT_POSTFIX}) -file(COPY ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-${PORT_POSTFIX}-config-version.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libbson-${PORT_POSTFIX}) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-${PORT_POSTFIX}-config.cmake ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-config.cmake) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-${PORT_POSTFIX}-config-version.cmake ${CURRENT_PACKAGES_DIR}/share/libbson/libbson-config-version.cmake) - -vcpkg_copy_pdbs() +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(INSTALL ${CURRENT_PORT_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) diff --git a/ports/libbson/usage b/ports/libbson/usage new file mode 100644 index 0000000000..873243c814 --- /dev/null +++ b/ports/libbson/usage @@ -0,0 +1,6 @@ +The package libbson is compatible with built-in CMake targets: + + find_package(libbson-1.0 CONFIG REQUIRED) + target_include_directories(main PRIVATE ${BSON_INCLUDE_DIRS}) + target_link_libraries(main PRIVATE ${BSON_LIBRARIES}) + target_compile_definitions(main PRIVATE ${BSON_DEFINITIONS}) diff --git a/ports/mongo-c-driver/CONTROL b/ports/mongo-c-driver/CONTROL index 643b2ec5f5..ebb14c03dc 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 0000000000..5652d7bd7e --- /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 $/lib$ + 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 06d042b153..8d61b745ef 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 0000000000..68e7b2b9b7 --- /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 0c737a0f46..3516886b12 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 -# 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" "\$<\$:/debug>/lib/libssl.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") -string(REPLACE "/lib/libcrypto.a" "\$<\$:/debug>/lib/libcrypto.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") -string(REPLACE "/lib/libz.a" "\$<\$:/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 +# 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" "\$<\$:/debug>/lib/libssl.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") + string(REPLACE "/lib/libcrypto.a" "\$<\$:/debug>/lib/libcrypto.a" LIBMONGOC_CONFIG_CMAKE "${LIBMONGOC_CONFIG_CMAKE}") + string(REPLACE "/lib/libz.a" "\$<\$:/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 80595cd07b..6fee3c684e 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}) diff --git a/ports/mongo-cxx-driver/fix-dependency-libbson.patch b/ports/mongo-cxx-driver/fix-dependency-libbson.patch new file mode 100644 index 0000000000..405919c635 --- /dev/null +++ b/ports/mongo-cxx-driver/fix-dependency-libbson.patch @@ -0,0 +1,25 @@ +diff --git a/src/bsoncxx/CMakeLists.txt b/src/bsoncxx/CMakeLists.txt +index 69b53b3..655b33a 100644 +--- a/src/bsoncxx/CMakeLists.txt ++++ b/src/bsoncxx/CMakeLists.txt +@@ -78,15 +78,15 @@ set(LIBBSON_REQUIRED_VERSION 1.13.0) + set(LIBBSON_REQUIRED_ABI_VERSION 1.0) + + if (BUILD_SHARED_LIBS) +- find_package(libbson-${LIBBSON_REQUIRED_ABI_VERSION} ${LIBBSON_REQUIRED_VERSION} REQUIRED) ++ find_package(bson-${LIBBSON_REQUIRED_ABI_VERSION} ${LIBBSON_REQUIRED_VERSION} CONFIG REQUIRED) + set(libbson_libraries ${BSON_LIBRARIES}) + set(libbson_include_directories ${BSON_INCLUDE_DIRS}) + set(libbson_definitions ${BSON_DEFINITIONS}) + else() +- find_package(libbson-static-${LIBBSON_REQUIRED_ABI_VERSION} ${LIBBSON_REQUIRED_VERSION} REQUIRED) +- set(libbson_libraries ${BSON_STATIC_LIBRARIES}) +- set(libbson_include_directories ${BSON_STATIC_INCLUDE_DIRS}) +- set(libbson_definitions ${BSON_STATIC_DEFINITIONS}) ++ find_package(bson-${LIBBSON_REQUIRED_ABI_VERSION} ${LIBBSON_REQUIRED_VERSION} CONFIG REQUIRED) ++ set(libbson_libraries ${BSON_LIBRARIES}) ++ set(libbson_include_directories ${BSON_INCLUDE_DIRS}) ++ set(libbson_definitions ${BSON_DEFINITIONS}) + endif() + + add_subdirectory(third_party) diff --git a/ports/mongo-cxx-driver/fix-dependency-mongocdriver.patch b/ports/mongo-cxx-driver/fix-dependency-mongocdriver.patch new file mode 100644 index 0000000000..99a6a8efc2 --- /dev/null +++ b/ports/mongo-cxx-driver/fix-dependency-mongocdriver.patch @@ -0,0 +1,19 @@ +diff --git a/src/mongocxx/CMakeLists.txt b/src/mongocxx/CMakeLists.txt +index 64ff936..e4d4e14 100644 +--- a/src/mongocxx/CMakeLists.txt ++++ b/src/mongocxx/CMakeLists.txt +@@ -39,10 +39,10 @@ if (BUILD_SHARED_LIBS) + set(libmongoc_include_directories ${MONGOC_INCLUDE_DIRS}) + set(libmongoc_definitions ${MONGOC_DEFINITIONS}) + else() +- find_package(libmongoc-static-${LIBMONGOC_REQUIRED_ABI_VERSION} ${LIBMONGOC_REQUIRED_VERSION} REQUIRED) +- set(libmongoc_libraries ${MONGOC_STATIC_LIBRARIES}) +- set(libmongoc_include_directories ${MONGOC_STATIC_INCLUDE_DIRS}) +- set(libmongoc_definitions ${MONGOC_STATIC_DEFINITIONS}) ++ find_package(libmongoc-${LIBMONGOC_REQUIRED_ABI_VERSION} ${LIBMONGOC_REQUIRED_VERSION} REQUIRED) ++ set(libmongoc_libraries ${MONGOC_LIBRARIES}) ++ set(libmongoc_include_directories ${MONGOC_INCLUDE_DIRS}) ++ set(libmongoc_definitions ${MONGOC_DEFINITIONS}) + endif() + + add_subdirectory(config) diff --git a/ports/mongo-cxx-driver/portfile.cmake b/ports/mongo-cxx-driver/portfile.cmake index c50d2ef172..35f0d6429c 100644 --- a/ports/mongo-cxx-driver/portfile.cmake +++ b/ports/mongo-cxx-driver/portfile.cmake @@ -13,11 +13,17 @@ vcpkg_from_github( fix-uwp.patch disable-c2338-mongo-cxx-driver.patch disable_test_and_example.patch + fix-dependency-libbson.patch + fix-dependency-mongocdriver.patch ) if ("mnmlstc" IN_LIST FEATURES) + if (VCPKG_TARGET_IS_WINDOWS) + message(FATAL_ERROR "Feature mnmlstc only support UNIX") + endif() set(BSONCXX_POLY MNMLSTC) elseif ("system-mnmlstc" IN_LIST FEATURES) + message("Please make sure you have mnmlstc installed via the package manager") set(BSONCXX_POLY SYSTEM_MNMLSTC) elseif ("boost" IN_LIST FEATURES) set(BSONCXX_POLY BOOST)