Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat build: prefere static libs when possible #821

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
f9577de
First try
fdr400 Jan 6, 2025
974d97e
Statis mongo and mysql
fdr400 Jan 6, 2025
476a639
Try fix openssl alpine
fdr400 Jan 6, 2025
5c31308
Fix alpine zlib
fdr400 Jan 6, 2025
ffebb90
Fix static boost
fdr400 Jan 6, 2025
3a3272c
Remove common name from module helpers
fdr400 Jan 6, 2025
ce2ef8a
Fix alpine
fdr400 Jan 6, 2025
c921d2e
Try fix MacOS
fdr400 Jan 6, 2025
d0c6d7a
Merge branch 'develop' into fdr400-more-static-linkage
fdr400 Jan 6, 2025
008adcf
Try fix macos static boost linkage
fdr400 Jan 6, 2025
33bf3f6
Fix MacOS cannot find -lzstd
fdr400 Jan 6, 2025
a89d8c0
Fix boost static linkage
fdr400 Jan 6, 2025
749b7ba
Try fix docker mysql
fdr400 Jan 6, 2025
305e1f9
Fix MacOS again
fdr400 Jan 6, 2025
26b30d0
Do not link statically with mongoc on old Ubuntus
fdr400 Jan 6, 2025
454c627
Again
fdr400 Jan 6, 2025
b5dde1d
Do not use bandled libs for gRPC
fdr400 Jan 6, 2025
1659a73
Fix libcares
fdr400 Jan 6, 2025
e5bfae9
Install c-ares
fdr400 Jan 6, 2025
18d2ea5
Link static clickhouse
fdr400 Jan 6, 2025
d5f77d4
Use brew curl
fdr400 Jan 7, 2025
fecf18d
Try fix clickhouse
fdr400 Jan 7, 2025
1a8f802
Try fix clickhouse again
fdr400 Jan 7, 2025
8c10e48
Try fix clickhouse
fdr400 Jan 7, 2025
3c53c19
try fix abseil
fdr400 Jan 7, 2025
5a234ec
fix abseil
fdr400 Jan 7, 2025
74ffb0f
Fix clickhouse
fdr400 Jan 7, 2025
7104b98
Try temporary fix mac
fdr400 Jan 7, 2025
1956aea
Consistent Kafka build
fdr400 Jan 7, 2025
31866ca
Try use sasl2 from brew
fdr400 Jan 7, 2025
a3b6815
Add kafka service to conan samples
fdr400 Jan 7, 2025
7f2f087
Try fiz link with zstd
fdr400 Jan 7, 2025
ed16f85
Fix kafka version
fdr400 Jan 7, 2025
134acba
Maybe linker problem
fdr400 Jan 7, 2025
32df506
Add options to to use static libs
fdr400 Jan 8, 2025
58cdb80
Use static libs in alpine and in MacOS
fdr400 Jan 8, 2025
46c3121
correct cache keys
fdr400 Jan 8, 2025
3fd84ee
Some fixes
fdr400 Jan 8, 2025
c7d44bc
Try try try
fdr400 Jan 8, 2025
cdfbeb4
Debug
fdr400 Jan 8, 2025
61aba8c
More linker flags
fdr400 Jan 8, 2025
01d0eec
Maybe order makes sense?
fdr400 Jan 8, 2025
4735302
Use framework for all libs
fdr400 Jan 8, 2025
42faf9b
Use dynamic ldap
fdr400 Jan 8, 2025
b907c8a
Install openldap
fdr400 Jan 8, 2025
04c07ea
Fix for old boost
fdr400 Jan 8, 2025
fd29288
Fix libname
fdr400 Jan 8, 2025
dd787f9
Link openldap
fdr400 Jan 8, 2025
6981253
Use ICU data
fdr400 Jan 8, 2025
2256f75
Find dynamic grpc
fdr400 Jan 8, 2025
d1e00f7
Fix not pq patch
fdr400 Jan 8, 2025
e8a9e06
Fix conan
fdr400 Jan 8, 2025
7e79c0f
Try without gold
fdr400 Jan 8, 2025
e62d01b
No static for gcc
fdr400 Jan 8, 2025
3d467dd
Remove strange alias
fdr400 Jan 9, 2025
c02b43e
Add if
fdr400 Jan 9, 2025
8c0dabf
Build static rocksdb
fdr400 Jan 9, 2025
4c4fe3b
do not build shared
fdr400 Jan 9, 2025
067163f
Remove rocks package stub
fdr400 Jan 9, 2025
ea1dca1
More deps for alpine + disable GDB for MacOS
fdr400 Jan 9, 2025
7ece471
Try rabbitmq for alpine
fdr400 Jan 9, 2025
8b304a2
Install rocksdb for alpine
fdr400 Jan 9, 2025
09638db
More consistent names
fdr400 Jan 9, 2025
35b42ac
Do not find libcityhash for Linux clickhouse
fdr400 Jan 9, 2025
6934d7e
Fix clickhouse
fdr400 Jan 9, 2025
8a3056b
Do not try to find static clickhouse Linux
fdr400 Jan 9, 2025
dbd6a21
Fix mongo install
fdr400 Jan 9, 2025
645bf31
Do not link to Iconv if it is bultin
fdr400 Jan 9, 2025
8affca6
Rollback
fdr400 Jan 9, 2025
555af6b
Fix install
fdr400 Jan 9, 2025
4627238
Better for Conan
fdr400 Jan 9, 2025
86b2006
Update
fdr400 Jan 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/alpine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: 'alpine-cache-dir ${{github.ref}}'
key: 'alpine-cache-dir ${{github.ref}} run-${{github.run_number}}'
restore-keys: |
alpine-cache-dir ${{github.ref}}
alpine-cache-dir
Expand All @@ -59,7 +59,7 @@ jobs:
run: |
pwd
cat /etc/alpine-release
apk add lld ccache git
apk add lld ccache git gdb
apk add $(cat scripts/docs/en/deps/alpine.md)

- name: Install test dependencies
Expand Down Expand Up @@ -91,6 +91,7 @@ jobs:
CMAKE_PROGRAM_PATH=/usr/lib/llvm17/bin/ \
cmake -S . -B build_debug \
-DCMAKE_BUILD_TYPE=Debug \
-DUSERVER_USE_STATIC_LIBS=1 \
-DUSERVER_USE_LD=lld \
-DUSERVER_NO_WERROR=OFF \
-DUSERVER_BUILD_ALL_COMPONENTS=1 \
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/ci-conan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ jobs:
run: |
brew update
brew install postgresql redis clang-format
brew install libiconv # https://stackoverflow.com/questions/57734434/libiconv-or-iconv-undefined-symbol-on-mac-osx
brew install [email protected]
- name: Install common packages
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ jobs:
-DCMAKE_CXX_COMPILER=clang++-18
-DCMAKE_C_COMPILER=clang-18
-DCMAKE_BUILD_TYPE=Debug
-DUSERVER_USE_STATIC_LIBS=1
-DUSERVER_SANITIZE="ub addr"
-DUSERVER_NO_WERROR=0
-DUSERVER_BUILD_ALL_COMPONENTS=1
Expand All @@ -45,6 +46,7 @@ jobs:
-DCMAKE_CXX_COMPILER=clang++-14
-DCMAKE_C_COMPILER=clang-14
-DCMAKE_BUILD_TYPE=Debug
-DUSERVER_USE_STATIC_LIBS=1
-DUSERVER_SANITIZE="ub addr"
-DUSERVER_NO_WERROR=0
-DUSERVER_BUILD_ALL_COMPONENTS=1
Expand All @@ -71,6 +73,7 @@ jobs:
-DUSERVER_FEATURE_REDIS_HI_MALLOC=1
-DUSERVER_FORCE_DOWNLOAD_ABSEIL=0
-DUSERVER_DOWNLOAD_PACKAGE_ABSEIL=0
-DUSERVER_MONGODB_USE_CMAKE_CONFIG=0
os: ubuntu-20.04
info: g++-9 + release
id: ubuntu20_gcc9_release
Expand All @@ -91,6 +94,7 @@ jobs:
-DUSERVER_FEATURE_REDIS_HI_MALLOC=1
-DUSERVER_FORCE_DOWNLOAD_ABSEIL=0
-DUSERVER_DOWNLOAD_PACKAGE_ABSEIL=0
-DUSERVER_MONGODB_USE_CMAKE_CONFIG=0
os: ubuntu-20.04
info: g++-8 + debug
id: ubuntu20_gcc8_debug
Expand All @@ -109,7 +113,7 @@ jobs:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: 'ubuntu-cache-dir ${{matrix.id}} ${{github.ref}}'
key: 'ubuntu-cache-dir ${{matrix.id}} ${{github.ref}} run-${{github.run_number}}'
restore-keys: |
ubuntu-cache-dir ${{matrix.id}} ${{github.ref}}
ubuntu-cache-dir ${{matrix.id}}
Expand Down Expand Up @@ -217,7 +221,11 @@ jobs:
git clone --recursive --depth 1 -b v1.45.0 https://github.com/grpc/grpc new_grpc
GRPC_BUILD_ENABLE_CCACHE=true \
cmake -GNinja -S./new_grpc -B./new_grpc/build \
-DABSL_PROPAGATE_CXX_STD=ON -DABSL_ENABLE_INSTALL=ON
-DABSL_PROPAGATE_CXX_STD=ON -DABSL_ENABLE_INSTALL=ON \
-DgRPC_SSL_PROVIDER=package \
-DgRPC_CARES_PROVIDER=package \
-DgRPC_ZLIB_PROVIDER=package \
-DgRPC_INSTALL=ON
cmake --build new_grpc/build -j$(nproc)
sudo cmake --install new_grpc/build
rm -rf new_grpc
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ jobs:
- cmake-flags: >-
-DCMAKE_CXX_STANDARD=17
-DCPM_SOURCE_CACHE=~/.cache/CPM
-DUSERVER_USE_LD=gold
-DUSERVER_NO_WERROR=0
-DUSERVER_BUILD_SAMPLES=1
-DUSERVER_BUILD_TESTS=1
Expand All @@ -32,6 +31,7 @@ jobs:
-DCMAKE_CXX_COMPILER=clang++-16
-DCMAKE_CXX_STANDARD=17
-DCPM_SOURCE_CACHE=~/.cache/CPM
-DUSERVER_USE_STATIC_LIBS=1
-DUSERVER_NO_WERROR=0
-DUSERVER_BUILD_ALL_COMPONENTS=1
-DUSERVER_BUILD_SAMPLES=1
Expand Down Expand Up @@ -59,6 +59,7 @@ jobs:
-DCMAKE_CXX_COMPILER=clang++-16
-DCMAKE_CXX_STANDARD=20
-DCPM_SOURCE_CACHE=~/.cache/CPM
-DUSERVER_USE_STATIC_LIBS=1
-DUSERVER_BUILD_ALL_COMPONENTS=1
-DUSERVER_BUILD_SAMPLES=1
-DUSERVER_BUILD_TESTS=1
Expand Down Expand Up @@ -97,7 +98,7 @@ jobs:
path: |
.ccache
.cache/CPM
key: 'docker-cache-dir ${{matrix.id}} ${{github.ref}}'
key: 'docker-cache-dir ${{matrix.id}} ${{github.ref}} run-${{github.run_number}}'
restore-keys: |
docker-cache-dir ${{matrix.id}} ${{github.ref}}
docker-cache-dir ${{matrix.id}}
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ jobs:
CMAKE_FLAGS: >-
-GNinja
-DCMAKE_BUILD_TYPE=Debug
-DUSERVER_USE_STATIC_LIBS=1
-DUSERVER_NO_WERROR=1
-DUSERVER_BUILD_ALL_COMPONENTS=1
-DUSERVER_BUILD_SAMPLES=1
Expand All @@ -48,7 +49,7 @@ jobs:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: 'macos-cache-dir ${{github.ref}}'
key: 'macos-cache-dir ${{github.ref}} run-${{github.run_number}}'
restore-keys: |
macos-cache-dir ${{github.ref}}
macos-cache-dir
Expand All @@ -63,6 +64,12 @@ jobs:
brew install lld

brew link postgresql@16 # postgresql is keg-only
brew link --force zlib # keg-only + need for static linkage
brew link --force icu4c@76 # keg-only + need for static boost linkage
brew link --force curl # keg-only
brew link --force cyrus-sasl # keg-only
brew link --force openldap # keg-only
brew remove --ignore-dependencies abseil

- name: Setup ccache
run: |
Expand Down
13 changes: 13 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ option(
"Prepare build of userver to install in system"
OFF
)
if(CMAKE_VERSION GREATER_EQUAL 3.31)
cmake_policy(SET CMP0177 NEW)
endif()

set(USERVER_AVAILABLE_COMPONENTS universal)

Expand Down Expand Up @@ -144,6 +147,16 @@ option(USERVER_FEATURE_OTLP "Provide asynchronous OTLP exporters" "${USERVER_LIB
set(CMAKE_DEBUG_POSTFIX d)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")

option(USERVER_USE_STATIC_LIBS "Tryies to find all dependencies as static libraries" OFF)

if(USERVER_USE_STATIC_LIBS)
message(
WARNING
"USERVER_USE_STATIC_LIBS turned ON, prioritized to find static libraries. Not all dependencies may be taken into account and linkage may be broken")
include(UserverPreferStaticLibs)
endif()

include(UserverSetupEnvironment)
userver_setup_environment()

Expand Down
3 changes: 3 additions & 0 deletions clickhouse/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ userver_module(clickhouse
DBTEST_DATABASES clickhouse
)

target_compile_options(${PROJECT_NAME} PUBLIC "-Wno-error=pedantic")


_userver_directory_install(COMPONENT clickhouse FILES
"${USERVER_ROOT_DIR}/cmake/modules/Findclickhouse-cpp.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules
Expand Down
27 changes: 4 additions & 23 deletions cmake/ModuleHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ macro(_userver_module_begin)
set(oneValueArgs
# Target name, also used for package name by default
NAME
# Custom package name; NAME is used by default
PACKAGE_NAME
# For multi-target packages
COMMON_NAME
VERSION
)
set(multiValueArgs
Expand Down Expand Up @@ -130,6 +126,7 @@ macro(_userver_module_find_part)
PATH_SUFFIXES ${ARG_PATH_SUFFIXES}
PATHS ${ARG_PATHS}
)
message(DEBUG "STATUS FIND(${ARG_NAMES}) ARGS: ${find_command_args}")
if("${ARG_PART_TYPE}" STREQUAL "library")
find_library(${find_command_args})
elseif("${ARG_PART_TYPE}" STREQUAL "path")
Expand Down Expand Up @@ -226,11 +223,7 @@ macro(_userver_module_end)
include("${USERVER_CMAKE_DIR}/DetectVersion.cmake")

set(name "${ARG_NAME}")
if(ARG_PACKAGE_NAME)
set(current_package_name "${ARG_PACKAGE_NAME}")
else()
set(current_package_name "${ARG_NAME}")
endif()
set(current_package_name "${ARG_NAME}")
set(libraries_variable "${ARG_NAME}_LIBRARIES")
set(includes_variable "${ARG_NAME}_INCLUDE_DIRS")
set(programs_variable "${ARG_NAME}_EXECUTABLE")
Expand Down Expand Up @@ -295,18 +288,11 @@ macro(_userver_module_end)
mark_as_advanced(${required_vars})
else()
# Forward to another CMake module, add nice error messages if missing.
if(ARG_COMMON_NAME)
set(wrapped_package_name "${ARG_COMMON_NAME}")
else()
set(wrapped_package_name "${current_package_name}")
endif()
set(wrapped_package_name "${current_package_name}")
set(find_command_args "${wrapped_package_name}")
if(ARG_VERSION)
list(APPEND find_command_args "${ARG_VERSION}")
endif()
if(ARG_COMMON_NAME)
list(APPEND find_command_args COMPONENTS "${name}")
endif()
find_package(${find_command_args})
set("${name}_FOUND" "${${wrapped_package_name}_FOUND}")
endif()
Expand All @@ -332,16 +318,11 @@ macro(_userver_module_end)
endif()
endif()

if(ARG_COMMON_NAME
OR (NOT "${${libraries_variable}}" STREQUAL "")
if((NOT "${${libraries_variable}}" STREQUAL "")
OR (NOT "${${includes_variable}}" STREQUAL ""))
if(NOT TARGET "${name}")
add_library("${name}" INTERFACE IMPORTED GLOBAL)

if(ARG_COMMON_NAME AND TARGET "${ARG_COMMON_NAME}::${name}")
target_link_libraries("${name}" INTERFACE "${ARG_COMMON_NAME}::${name}")
endif()

if(NOT "${${includes_variable}}" STREQUAL "")
target_include_directories("${name}" INTERFACE ${${includes_variable}})
message(STATUS "${name} include directories: ${${includes_variable}}")
Expand Down
17 changes: 15 additions & 2 deletions cmake/SetupCURL.cmake
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
option(USERVER_DOWNLOAD_PACKAGE_CURL "Download and setup libcurl if no libcurl of matching version was found" ${USERVER_DOWNLOAD_PACKAGES})

if(NOT USERVER_FORCE_DOWNLOAD_PACKAGES)
# Curl has too many dependencies to reliably
# link with all of them statically without CMake Config
if (USERVER_USE_STATIC_LIBS)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()

if(USERVER_DOWNLOAD_PACKAGE_CURL)
find_package(CURL "7.68" QUIET)
find_package(CURL "7.68")
else()
find_package_required_version(CURL "libcurl4-openssl-dev" "7.68")
find_package(CURL "7.68" REQUIRED)
endif()

if (USERVER_USE_STATIC_LIBS)
list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
endif()

if(CURL_FOUND)
Expand Down Expand Up @@ -45,3 +55,6 @@ CPMAddPackage(
"CURL_DISABLE_TESTS ON"
${CURL_LTO_OPTION}
)

mark_targets_as_system("${CURL_SOURCE_DIR}")
write_package_stub(CURL)
9 changes: 8 additions & 1 deletion cmake/SetupClickhouseCPP.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
option(USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP "Download and setup clickhouse-cpp" ${USERVER_DOWNLOAD_PACKAGES})

if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
find_package(lz4 REQUIRED)
include(SetupAbseil)
endif()

if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES)
if (USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP)
find_package(clickhouse-cpp QUIET)
Expand All @@ -8,6 +13,9 @@ if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES)
endif()

if (clickhouse-cpp_FOUND)
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
target_link_libraries(clickhouse-cpp INTERFACE lz4::lz4 absl::int128)
endif()
return()
endif()
endif()
Expand All @@ -27,4 +35,3 @@ CPMAddPackage(
)

add_library(clickhouse-cpp ALIAS clickhouse-cpp-lib)
target_compile_options(clickhouse-cpp-lib PUBLIC -Wno-pedantic)
2 changes: 1 addition & 1 deletion cmake/SetupGrpc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ CPMAddPackage(
"gRPC_SSL_PROVIDER package"
"gRPC_PROTOBUF_PROVIDER package"
"gRPC_BENCHMARK_PROVIDER none"
"gRPC_ABSL_PROVIDER none"
"gRPC_ABSL_PROVIDER package"
"gRPC_CARES_LIBRARIES c-ares::cares"
"gRPC_INSTALL OFF"
)
Expand Down
29 changes: 29 additions & 0 deletions cmake/SetupHomebrew.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
option(USERVER_USE_BREW_LIBRARIES "(MacOS) Find package preferes libraries installed with homebrew and make linker search libraries in brew folders" ON)

if(NOT DEFINED $CACHE{USERVER_BREW_PREFIX})
find_program(BREW_BIN brew)
if(BREW_BIN)
execute_process(
COMMAND ${BREW_BIN} --prefix
OUTPUT_VARIABLE brew_prefix
RESULT_VARIABLE brew_prefix_result
OUTPUT_STRIP_TRAILING_WHITESPACE
)

if(brew_prefix_result EQUAL 0)
set(USERVER_BREW_PREFIX "${brew_prefix}" CACHE INTERNAL "Brew prefix")
message(STATUS "brew prefix is: ${USERVER_BREW_PREFIX}")
endif()
endif()
endif()

if (USERVER_BREW_PREFIX)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation")

if(NOT USERVER_BREW_PREFIX IN_LIST CMAKE_PREFIX_PATH AND NOT USERVER_CONAN)
set(CMAKE_PREFIX_PATH "${USERVER_BREW_PREFIX}" ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
endif()
endif()
17 changes: 17 additions & 0 deletions cmake/SetupMongoDeps.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
include_guard(GLOBAL)

option(USERVER_MONGODB_USE_CMAKE_CONFIG "Use mongoc cmake configuration" ON)

if (USERVER_MONGODB_USE_CMAKE_CONFIG)
find_package(mongoc-1.0 QUIET CONFIG)
if(mongoc-1.0_FOUND)
message(STATUS "Mongoc: using config version: (bson: ${bson-1.0_VERSION}, mongoc: ${mongoc-1.0_VERSION})")
add_library(bson ALIAS mongo::bson_static)
add_library(mongoc ALIAS mongo::mongoc_static)
return()
endif()
endif()

find_package(bson REQUIRED)
find_package(mongoc REQUIRED)

Loading
Loading