Skip to content

Commit 128f92f

Browse files
author
Christian Hergert
committed
build: include a libmongoc-priv.so without stripped symbols.
This library has no ABI guarantees. It is meant for use by language driver authors that need access to non-ABI safe data-structures. Those drivers are responsible for ensuring they are rebuilt when this library is changed.
1 parent 960ec53 commit 128f92f

File tree

6 files changed

+103
-86
lines changed

6 files changed

+103
-86
lines changed

build/rpm/mongo-c-driver.spec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
8787
%files
8888
%{_prefix}/share/doc/mongo-c-driver/*
8989
%{_libdir}/libmongoc-1.0.so.*
90+
%{_libdir}/libmongoc-priv.so.*
9091

9192

9293
%files -n %{BsonName}

configure.ac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ AC_CONFIG_FILES([
5050
build/version
5151
src/libmongoc-1.0.pc
5252
src/libmongoc-ssl-1.0.pc
53+
src/libmongoc-priv.pc
5354
src/mongoc/mongoc-config.h
5455
src/mongoc/mongoc-version.h
5556
])

src/Makefile.am

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
pkgconfigdir = $(libdir)/pkgconfig
2-
pkgconfig_DATA = $(top_builddir)/src/libmongoc-1.0.pc
2+
pkgconfig_DATA = \
3+
$(top_builddir)/src/libmongoc-1.0.pc \
4+
$(top_builddir)/src/libmongoc-priv.pc
35
if ENABLE_SSL
46
pkgconfig_DATA += $(top_builddir)/src/libmongoc-ssl-1.0.pc
57
endif
68

7-
noinst_LTLIBRARIES += libmongoc-priv.la
8-
lib_LTLIBRARIES += libmongoc-1.0.la
99

10-
libmongoc_priv_la_CPPFLAGS =
10+
lib_LTLIBRARIES += libmongoc-priv.la
11+
lib_LTLIBRARIES += libmongoc-1.0.la
1112

12-
if OS_SOLARIS
13-
libmongoc_priv_la_CPPFLAGS += -D_REENTRANT
14-
endif
1513

16-
libmongoc_priv_la_CPPFLAGS += \
14+
MONGOC_CPPFLAGS_SHARED = \
1715
-DMONGOC_COMPILATION \
1816
$(LIBC_FEATURES) \
1917
$(OPTIMIZE_CFLAGS) \
@@ -24,36 +22,46 @@ libmongoc_priv_la_CPPFLAGS += \
2422
$(PTHREAD_CFLAGS) \
2523
$(SSL_CFLAGS) \
2624
$(SASL_CFLAGS)
27-
25+
if OS_SOLARIS
26+
MONGOC_CPPFLAGS_SHARED += -D_REENTRANT
27+
endif
2828
if !ENABLE_DEBUG
29-
libmongoc_priv_la_CPPFLAGS += \
29+
MONGOC_CPPFLAGS_SHARED += \
3030
-DBSON_DISABLE_ASSERT \
3131
-DBSON_DISABLE_CHECKS
3232
endif
33+
libmongoc_priv_la_CPPFLAGS = $(MONGOC_CPPFLAGS_SHARED)
34+
libmongoc_1_0_la_CPPFLAGS = $(MONGOC_CPPFLAGS_SHARED)
35+
36+
37+
MONGOC_LDFLAGS_SHARED = $(OPTIMIZE_LDFLAGS)
38+
libmongoc_priv_la_LDFLAGS = $(MONGOC_LDFLAGS_SHARED)
39+
libmongoc_1_0_la_LDFLAGS = \
40+
$(MONGOC_LDFLAGS_SHARED) \
41+
$(MONGOC_LT_LDFLAGS) \
42+
-no-undefined \
43+
-export-symbols-regex "^mongoc_" \
44+
-rpath $(libdir)
3345

34-
libmongoc_priv_la_LDFLAGS = \
35-
$(OPTIMIZE_LDFLAGS)
3646

37-
libmongoc_priv_la_LIBADD = \
47+
MONGOC_LIBADD_SHARED = \
3848
$(BSON_LIBS) \
3949
$(PTHREAD_LIBS) \
4050
$(SHM_LIB) \
4151
$(SSL_LIBS) \
4252
$(SASL_LIBS)
43-
4453
if OS_WIN32
45-
libmongoc_priv_la_LIBADD += -lws2_32
54+
MONGOC_LIBADD_SHARED += -lws2_32
4655
endif
56+
libmongoc_priv_la_LIBADD = $(MONGOC_LIBADD_SHARED)
57+
libmongoc_1_0_la_LIBADD = $(MONGOC_LIBADD_SHARED)
4758

4859

49-
libmongoc_1_0_la_SOURCES =
50-
libmongoc_1_0_la_LIBADD = libmongoc-priv.la
51-
libmongoc_1_0_la_LDFLAGS = \
52-
$(OPTIMIZE_CFLAGS) \
53-
$(MONGOC_LT_LDFLAGS) \
54-
-no-undefined \
55-
-export-symbols-regex "^mongoc_" \
56-
-rpath $(libdir)
60+
# Sources defined in src/mongoc/Makefile.am
61+
MONGOC_SOURCES_SHARED =
62+
libmongoc_1_0_la_SOURCES = $(MONGOC_SOURCES_SHARED)
63+
libmongoc_priv_la_SOURCES = $(MONGOC_SOURCES_SHARED)
64+
5765

5866
include src/mongoc/Makefile.am
5967
include src/tools/Makefile.am

src/libmongoc-priv.pc.in

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@prefix@
2+
exec_prefix=${prefix}
3+
libdir=@libdir@
4+
includedir=${exec_prefix}/include
5+
6+
Name: libmongoc-priv
7+
Description: The libmongoc MongoDB client library, with access to private structures.
8+
Version: @VERSION@
9+
Requires: libbson-1.0
10+
Libs: @SASL_LIBS@ @SSL_LIBS@ @SHM_LIB@ -L${libdir} -lmongoc-priv
11+
Cflags: -DMONGOC_COMPILATION -I${includedir}/libmongoc-@MONGOC_API_VERSION@

src/mongoc/Makefile.am

Lines changed: 54 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,92 @@
11
headerdir = $(prefix)/include/libmongoc-@MONGOC_API_VERSION@
22
header_DATA = \
33
$(INST_H_FILES) \
4+
$(MONGOC_DEF_FILES) \
45
src/mongoc/mongoc-config.h
56

7+
MONGOC_DEF_FILES = \
8+
src/mongoc/op-delete.def \
9+
src/mongoc/op-get-more.def \
10+
src/mongoc/op-header.def \
11+
src/mongoc/op-insert.def \
12+
src/mongoc/op-kill-cursors.def \
13+
src/mongoc/op-msg.def \
14+
src/mongoc/op-query.def \
15+
src/mongoc/op-reply.def \
16+
src/mongoc/op-update.def \
17+
src/mongoc/mongoc-counters.defs
18+
619
INST_H_FILES = \
720
src/mongoc/mongoc.h \
8-
src/mongoc/mongoc-bulk-operation.h \
9-
src/mongoc/mongoc-client.h \
10-
src/mongoc/mongoc-client-pool.h \
11-
src/mongoc/mongoc-collection.h \
12-
src/mongoc/mongoc-cursor.h \
13-
src/mongoc/mongoc-database.h \
14-
src/mongoc/mongoc-error.h \
15-
src/mongoc/mongoc-flags.h \
16-
src/mongoc/mongoc-gridfs.h \
17-
src/mongoc/mongoc-gridfs-file.h \
18-
src/mongoc/mongoc-gridfs-file-page.h \
19-
src/mongoc/mongoc-gridfs-file-list.h \
20-
src/mongoc/mongoc-host-list.h \
21-
src/mongoc/mongoc-init.h \
22-
src/mongoc/mongoc-index.h \
23-
src/mongoc/mongoc-iovec.h \
24-
src/mongoc/mongoc-log.h \
25-
src/mongoc/mongoc-matcher.h \
26-
src/mongoc/mongoc-opcode.h \
27-
src/mongoc/mongoc-read-prefs.h \
28-
src/mongoc/mongoc-socket.h \
29-
src/mongoc/mongoc-stream.h \
30-
src/mongoc/mongoc-stream-buffered.h \
31-
src/mongoc/mongoc-stream-file.h \
32-
src/mongoc/mongoc-stream-gridfs.h \
33-
src/mongoc/mongoc-stream-socket.h \
34-
src/mongoc/mongoc-uri.h \
35-
src/mongoc/mongoc-version.h \
36-
src/mongoc/mongoc-write-concern.h
37-
38-
if ENABLE_SSL
39-
INST_H_FILES += \
40-
src/mongoc/mongoc-stream-tls.h \
41-
src/mongoc/mongoc-ssl.h
42-
endif
43-
44-
NOINST_H_FILES = \
4521
src/mongoc/mongoc-array-private.h \
4622
src/mongoc/mongoc-buffer-private.h \
4723
src/mongoc/mongoc-bulk-operation-private.h \
24+
src/mongoc/mongoc-bulk-operation.h \
25+
src/mongoc/mongoc-client-pool.h \
4826
src/mongoc/mongoc-client-private.h \
27+
src/mongoc/mongoc-client.h \
4928
src/mongoc/mongoc-cluster-private.h \
5029
src/mongoc/mongoc-collection-private.h \
30+
src/mongoc/mongoc-collection.h \
5131
src/mongoc/mongoc-counters-private.h \
5232
src/mongoc/mongoc-cursor-array-private.h \
5333
src/mongoc/mongoc-cursor-cursorid-private.h \
5434
src/mongoc/mongoc-cursor-private.h \
35+
src/mongoc/mongoc-cursor.h \
5536
src/mongoc/mongoc-database-private.h \
37+
src/mongoc/mongoc-database.h \
5638
src/mongoc/mongoc-errno-private.h \
39+
src/mongoc/mongoc-error.h \
40+
src/mongoc/mongoc-flags.h \
5741
src/mongoc/mongoc-gridfs-file-list-private.h \
42+
src/mongoc/mongoc-gridfs-file-list.h \
5843
src/mongoc/mongoc-gridfs-file-page-private.h \
44+
src/mongoc/mongoc-gridfs-file-page.h \
5945
src/mongoc/mongoc-gridfs-file-private.h \
46+
src/mongoc/mongoc-gridfs-file.h \
6047
src/mongoc/mongoc-gridfs-private.h \
48+
src/mongoc/mongoc-gridfs.h \
6149
src/mongoc/mongoc-host-list-private.h \
50+
src/mongoc/mongoc-host-list.h \
51+
src/mongoc/mongoc-index.h \
52+
src/mongoc/mongoc-init.h \
53+
src/mongoc/mongoc-iovec.h \
6254
src/mongoc/mongoc-list-private.h \
55+
src/mongoc/mongoc-log.h \
6356
src/mongoc/mongoc-matcher-op-private.h \
6457
src/mongoc/mongoc-matcher-private.h \
58+
src/mongoc/mongoc-matcher.h \
59+
src/mongoc/mongoc-opcode.h \
6560
src/mongoc/mongoc-queue-private.h \
6661
src/mongoc/mongoc-read-prefs-private.h \
62+
src/mongoc/mongoc-read-prefs.h \
6763
src/mongoc/mongoc-rpc-private.h \
6864
src/mongoc/mongoc-sasl-private.h \
65+
src/mongoc/mongoc-socket.h \
6966
src/mongoc/mongoc-ssl-private.h \
67+
src/mongoc/mongoc-stream-buffered.h \
68+
src/mongoc/mongoc-stream-file.h \
69+
src/mongoc/mongoc-stream-gridfs.h \
7070
src/mongoc/mongoc-stream-private.h \
71+
src/mongoc/mongoc-stream-socket.h \
72+
src/mongoc/mongoc-stream.h \
7173
src/mongoc/mongoc-thread-private.h \
7274
src/mongoc/mongoc-trace.h \
75+
src/mongoc/mongoc-uri.h \
7376
src/mongoc/mongoc-util-private.h \
77+
src/mongoc/mongoc-version.h \
7478
src/mongoc/mongoc-write-command-private.h \
75-
src/mongoc/mongoc-write-concern-private.h
79+
src/mongoc/mongoc-write-concern-private.h \
80+
src/mongoc/mongoc-write-concern.h
81+
82+
if ENABLE_SSL
83+
INST_H_FILES += \
84+
src/mongoc/mongoc-stream-tls.h \
85+
src/mongoc/mongoc-ssl.h
86+
endif
7687

77-
libmongoc_priv_la_SOURCES = \
88+
MONGOC_SOURCES_SHARED += \
7889
$(INST_H_FILES) \
79-
$(NOINST_H_FILES) \
8090
src/mongoc/mongoc-array.c \
8191
src/mongoc/mongoc-buffer.c \
8292
src/mongoc/mongoc-bulk-operation.c \
@@ -114,23 +124,14 @@ libmongoc_priv_la_SOURCES = \
114124
src/mongoc/mongoc-write-concern.c
115125

116126
if ENABLE_SSL
117-
libmongoc_priv_la_SOURCES += \
127+
MONGOC_SOURCES_SHARED += \
118128
src/mongoc/mongoc-stream-tls.c \
119129
src/mongoc/mongoc-ssl.c
120130
endif
121131

122132
if ENABLE_SASL
123-
libmongoc_priv_la_SOURCES += src/mongoc/mongoc-sasl.c
133+
MONGOC_SOURCES_SHARED += src/mongoc/mongoc-sasl.c
124134
endif
125135

126-
EXTRA_DIST += \
127-
src/mongoc/op-delete.def \
128-
src/mongoc/op-get-more.def \
129-
src/mongoc/op-header.def \
130-
src/mongoc/op-insert.def \
131-
src/mongoc/op-kill-cursors.def \
132-
src/mongoc/op-msg.def \
133-
src/mongoc/op-query.def \
134-
src/mongoc/op-reply.def \
135-
src/mongoc/op-update.def \
136-
src/mongoc/mongoc-counters.defs
136+
EXTRA_DIST += $(MONGOC_DEF_FILES)
137+

src/mongoc/mongoc-buffer-private.h

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,33 +46,28 @@ _mongoc_buffer_init (mongoc_buffer_t *buffer,
4646
uint8_t *buf,
4747
size_t buflen,
4848
bson_realloc_func realloc_func,
49-
void *realloc_data)
50-
BSON_GNUC_INTERNAL;
49+
void *realloc_data);
5150

5251
bool
5352
_mongoc_buffer_append_from_stream (mongoc_buffer_t *buffer,
5453
mongoc_stream_t *stream,
5554
size_t size,
5655
int32_t timeout_msec,
57-
bson_error_t *error)
58-
BSON_GNUC_INTERNAL;
56+
bson_error_t *error);
5957

6058
ssize_t
6159
_mongoc_buffer_fill (mongoc_buffer_t *buffer,
6260
mongoc_stream_t *stream,
6361
size_t min_bytes,
6462
int32_t timeout_msec,
65-
bson_error_t *error)
66-
BSON_GNUC_INTERNAL;
63+
bson_error_t *error);
6764

6865
void
69-
_mongoc_buffer_destroy (mongoc_buffer_t *buffer)
70-
BSON_GNUC_INTERNAL;
66+
_mongoc_buffer_destroy (mongoc_buffer_t *buffer);
7167

7268
void
7369
_mongoc_buffer_clear (mongoc_buffer_t *buffer,
74-
bool zero)
75-
BSON_GNUC_INTERNAL;
70+
bool zero);
7671

7772

7873
BSON_END_DECLS

0 commit comments

Comments
 (0)