[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
--- a/INSTALL
+++ b/INSTALL
@@ -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.
 
+--without-export
+    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.
+
 --with-private-namespace=<prefix>
     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}])
 done
 
+AC_ARG_WITH([export],
+  [AS_HELP_STRING([--without-export], [disable exporting jemalloc public APIs])],
+  [if test "x$with_export" = "xno"; then
+  AC_DEFINE([JEMALLOC_EXPORT],[])]
+fi]
+)
+
 dnl Do not mangle library-private APIs by default.
 AC_ARG_WITH([private_namespace],
   [AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])],
-- 
1.7.10.4




More information about the jemalloc-discuss mailing list