[PATCH] Allow to build without exporting symbols

Mike Hommey mh+jemalloc at glandium.org
Mon Nov 19 01:55:26 PST 2012

From: Mike Hommey <mh at glandium.org>

When statically linking jemalloc, it may be beneficial not to export its
symbols if it makes sense, which allows the compiler and the linker to do
some further optimizations.
 INSTALL      |    5 +++++
 configure.ac |    7 +++++++
 2 files changed, 12 insertions(+)

diff --git a/INSTALL b/INSTALL
index e40a7ed..7c2ed68 100644
@@ -55,6 +55,11 @@ any of the following arguments (not a definitive list) to 'configure':
     jemalloc overlays the default malloc zone, but makes no attempt to actually
     replace the "malloc", "calloc", etc. symbols.
+    Don't export public APIs. This can be useful when building jemalloc as a
+    static library, or to avoid exporting public APIs when using the zone
+    allocator on OSX.
     Prefix all library-private APIs with <prefix>.  For shared libraries,
     symbol visibility mechanisms prevent these symbols from being exported, but
diff --git a/configure.ac b/configure.ac
index 1c52439..8558961 100644
--- a/configure.ac
+++ b/configure.ac
@@ -471,6 +471,13 @@ for stem in ${public_syms}; do
   AC_DEFINE_UNQUOTED([${n}], [${m}])
+  [AS_HELP_STRING([--without-export], [disable exporting jemalloc public APIs])],
+  [if test "x$with_export" = "xno"; then
 dnl Do not mangle library-private APIs by default.
   [AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])],

More information about the jemalloc-discuss mailing list