Skip to content

Commit ee4e69c

Browse files
authored
CDRIVER-4625 Add mcd-rpc library and tests (#1296)
* Update decl/prelude checks to ignore mcd-*.h headers * CDRIVER-4625 Add mcd-rpc internal static library * Add mongoc-opcode.c and mongoc-flags.c with equivalence assertions
1 parent 0524bd8 commit ee4e69c

File tree

10 files changed

+6822
-5
lines changed

10 files changed

+6822
-5
lines changed

.evergreen/scripts/check-preludes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,20 @@
3030
checks = [
3131
{
3232
"name": "libmongoc",
33-
"headers": list(MONGOC_PREFIX.glob("*.h")),
33+
"headers": list(MONGOC_PREFIX.glob("mongoc-*.h")),
3434
"exclusions": [
3535
MONGOC_PREFIX / "mongoc-prelude.h",
36-
MONGOC_PREFIX / "mongoc.h"
36+
MONGOC_PREFIX / "mongoc.h",
3737
],
3838
"include": "#include \"mongoc-prelude.h\""
3939
},
4040
{
4141
"name": "libbson",
4242
"headers": list(BSON_PREFIX.glob("*.h")),
4343
"exclusions": [
44-
BSON_PREFIX / "bson-prelude.h",
4544
BSON_PREFIX / "bson-dsl.h",
46-
BSON_PREFIX / "bson.h"
45+
BSON_PREFIX / "bson-prelude.h",
46+
BSON_PREFIX / "bson.h",
4747
],
4848
"include": "#include \"bson-prelude.h\""
4949
},

.evergreen/scripts/check-public-decls.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ exclude="\.\/src\/libmongoc\/src\/mongoc\/mongoc-macros.h|.\/src\/libmongoc\/src
1212
find ./src/libmongoc/src/mongoc -regex $pattern -regextype posix-extended -not -regex $exclude | sort >/tmp/public_headers.txt
1313

1414
# get all public headers with BSON_BEGIN_DECLS.
15-
find ./src/libmongoc/src/mongoc -regextype posix-extended -regex $pattern -not -regex $exclude | xargs grep -l "BSON_BEGIN_DECLS" | sort >/tmp/public_headers_with_extern_c.txt
15+
find ./src/libmongoc/src/mongoc -regex $pattern -regextype posix-extended -not -regex $exclude | xargs grep -l "BSON_BEGIN_DECLS" | sort >/tmp/public_headers_with_extern_c.txt
1616

1717
echo "checking if any public headers are missing 'extern C' declaration"
1818

src/libmongoc/CMakeLists.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,7 @@ endif ()
468468

469469
set (SOURCES ${SOURCES}
470470
${PROJECT_SOURCE_DIR}/src/mongoc/mcd-azure.c
471+
${PROJECT_SOURCE_DIR}/src/mongoc/mcd-rpc.c
471472
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-aggregate.c
472473
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-apm.c
473474
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-array.c
@@ -498,6 +499,7 @@ set (SOURCES ${SOURCES}
498499
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cursor-array.c
499500
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-database.c
500501
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-error.c
502+
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-flags.c
501503
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-find-and-modify.c
502504
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-generation-map.c
503505
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-init.c
@@ -521,6 +523,7 @@ set (SOURCES ${SOURCES}
521523
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-matcher-op.c
522524
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-memcmp.c
523525
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cmd.c
526+
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opcode.c
524527
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-optional.c
525528
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opts-helpers.c
526529
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opts.c
@@ -731,6 +734,17 @@ if (MONGOC_ENABLE_MONGODB_AWS_AUTH)
731734
endif()
732735
endif ()
733736

737+
if (MONGOC_ENABLE_STATIC_BUILD)
738+
add_library (mcd_rpc STATIC EXCLUDE_FROM_ALL ${PROJECT_SOURCE_DIR}/src/mongoc/mcd-rpc.c)
739+
target_include_directories (mcd_rpc PUBLIC ${PROJECT_SOURCE_DIR}/src)
740+
target_link_libraries (mcd_rpc PUBLIC ${BSON_STATIC_LIBRARIES})
741+
if (NOT WIN32 AND ENABLE_PIC)
742+
target_compile_options (mcd_rpc PUBLIC -fPIC)
743+
endif ()
744+
target_compile_definitions (mcd_rpc PUBLIC ${BSON_STATIC_PUBLIC_DEFINITIONS})
745+
set_target_properties (mcd_rpc PROPERTIES OUTPUT_NAME "mcd-rpc")
746+
endif ()
747+
734748
add_library (mongoc_shared SHARED ${SOURCES} ${HEADERS} ${HEADERS_FORWARDING})
735749
set_target_properties (mongoc_shared PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden)
736750
target_link_libraries (mongoc_shared PRIVATE ${LIBRARIES} PUBLIC ${BSON_LIBRARIES})
@@ -963,6 +977,7 @@ set (test-libmongoc-sources
963977
${PROJECT_SOURCE_DIR}/tests/test-mcd-azure-imds.c
964978
${PROJECT_SOURCE_DIR}/tests/test-service-gcp.c
965979
${PROJECT_SOURCE_DIR}/tests/test-mcd-integer.c
980+
${PROJECT_SOURCE_DIR}/tests/test-mcd-rpc.c
966981
${PROJECT_SOURCE_DIR}/tests/TestSuite.c
967982
${PROJECT_SOURCE_DIR}/tests/unified/operation.c
968983
${PROJECT_SOURCE_DIR}/tests/unified/entity-map.c
@@ -1241,6 +1256,15 @@ export (EXPORT mongoc-targets
12411256
FILE "${CMAKE_CURRENT_BINARY_DIR}/mongoc/mongoc-targets.cmake"
12421257
)
12431258

1259+
if (TARGET mcd_rpc)
1260+
# Note: the (mongo::)bson_static target must be included separately via find_package or include.
1261+
export (
1262+
TARGETS mcd_rpc
1263+
NAMESPACE mongo::
1264+
FILE "${CMAKE_CURRENT_BINARY_DIR}/mongoc/mcd-rpc-targets.cmake"
1265+
)
1266+
endif ()
1267+
12441268
configure_file (src/mongoc-config.cmake
12451269
"${CMAKE_CURRENT_BINARY_DIR}/mongoc/mongoc-${MONGOC_API_VERSION}-config.cmake"
12461270
@ONLY

src/libmongoc/src/mongoc/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ extra_dist_generated (
7676
set (src_libmongoc_src_mongoc_DIST_noinst_hs
7777
mcd-azure.h
7878
mcd-integer.h
79+
mcd-rpc.h
7980
mcd-time.h
8081
mongoc-aggregate-private.h
8182
mongoc-apm-private.h
@@ -182,6 +183,7 @@ set (src_libmongoc_src_mongoc_DIST_noinst_hs
182183

183184
set (src_libmongoc_src_mongoc_DIST_cs
184185
mcd-azure.c
186+
mcd-rpc.c
185187
mongoc-aggregate.c
186188
mongoc-apm.c
187189
mongoc-array.c
@@ -211,6 +213,7 @@ set (src_libmongoc_src_mongoc_DIST_cs
211213
mongoc-cursor-cmd-deprecated.c
212214
mongoc-database.c
213215
mongoc-error.c
216+
mongoc-flags.c
214217
mongoc-find-and-modify.c
215218
mongoc-generation-map.c
216219
mongoc-host-list.c
@@ -233,6 +236,7 @@ set (src_libmongoc_src_mongoc_DIST_cs
233236
mongoc-memcmp.c
234237
mongoc-cmd.c
235238
mongoc-ocsp-cache.c
239+
mongoc-opcode.c
236240
mongoc-optional.c
237241
mongoc-opts.c
238242
mongoc-opts-helpers.c

0 commit comments

Comments
 (0)