Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 Building and installing jemalloc can be as simple as typing the following while
2 in the root directory of the source tree:
4 ./configure
5 make
6 make install
8 === Advanced configuration =====================================================
10 The 'configure' script supports numerous options that allow control of which
11 functionality is enabled, where jemalloc is installed, etc. Optionally, pass
12 any of the following arguments (not a definitive list) to 'configure':
14 --help
15 Print a definitive list of options.
17 --prefix=<install-root-dir>
18 Set the base directory in which to install. For example:
20 ./configure --prefix=/usr/local
22 will cause files to be installed into /usr/local/include, /usr/local/lib,
23 and /usr/local/man.
25 --with-rpath=<colon-separated-rpath>
26 Embed one or more library paths, so that libjemalloc can find the libraries
27 it is linked to. This works only on ELF-based systems.
29 --with-mangling=<map>
30 Mangle public symbols specified in <map> which is a comma-separated list of
31 name:mangled pairs.
33 For example, to use ld's --wrap option as an alternative method for
34 overriding libc's malloc implementation, specify something like:
36 --with-mangling=malloc:__wrap_malloc,free:__wrap_free[...]
38 Note that mangling happens prior to application of the prefix specified by
39 --with-jemalloc-prefix, and mangled symbols are then ignored when applying
40 the prefix.
42 --with-jemalloc-prefix=<prefix>
43 Prefix all public APIs with <prefix>. For example, if <prefix> is
44 "prefix_", API changes like the following occur:
46 malloc() --> prefix_malloc()
47 malloc_conf --> prefix_malloc_conf
48 /etc/malloc.conf --> /etc/prefix_malloc.conf
49 MALLOC_CONF --> PREFIX_MALLOC_CONF
51 This makes it possible to use jemalloc at the same time as the system
52 allocator, or even to use multiple copies of jemalloc simultaneously.
54 By default, the prefix is "", except on OS X, where it is "je_". On OS X,
55 jemalloc overlays the default malloc zone, but makes no attempt to actually
56 replace the "malloc", "calloc", etc. symbols.
58 --without-export
59 Don't export public APIs. This can be useful when building jemalloc as a
60 static library, or to avoid exporting public APIs when using the zone
61 allocator on OSX.
63 --with-private-namespace=<prefix>
64 Prefix all library-private APIs with <prefix>. For shared libraries,
65 symbol visibility mechanisms prevent these symbols from being exported, but
66 for static libraries, naming collisions are a real possibility. By
67 default, the prefix is "" (empty string).
69 --with-install-suffix=<suffix>
70 Append <suffix> to the base name of all installed files, such that multiple
71 versions of jemalloc can coexist in the same installation directory. For
72 example, libjemalloc.so.0 becomes libjemalloc<suffix>.so.0.
74 --enable-cc-silence
75 Enable code that silences non-useful compiler warnings. This is helpful
76 when trying to tell serious warnings from those due to compiler
77 limitations, but it potentially incurs a performance penalty.
79 --enable-debug
80 Enable assertions and validation code. This incurs a substantial
81 performance hit, but is very useful during application development.
83 --disable-stats
84 Disable statistics gathering functionality. See the "opt.stats_print"
85 option documentation for usage details.
87 --enable-prof
88 Enable heap profiling and leak detection functionality. See the "opt.prof"
89 option documentation for usage details. When enabled, there are several
90 approaches to backtracing, and the configure script chooses the first one
91 in the following list that appears to function correctly:
93 + libunwind (requires --enable-prof-libunwind)
94 + libgcc (unless --disable-prof-libgcc)
95 + gcc intrinsics (unless --disable-prof-gcc)
97 --enable-prof-libunwind
98 Use the libunwind library (http://www.nongnu.org/libunwind/) for stack
99 backtracing.
101 --disable-prof-libgcc
102 Disable the use of libgcc's backtracing functionality.
104 --disable-prof-gcc
105 Disable the use of gcc intrinsics for backtracing.
107 --with-static-libunwind=<libunwind.a>
108 Statically link against the specified libunwind.a rather than dynamically
109 linking with -lunwind.
111 --disable-tcache
112 Disable thread-specific caches for small objects. Objects are cached and
113 released in bulk, thus reducing the total number of mutex operations. See
114 the "opt.tcache" option for usage details.
116 --enable-mremap
117 Enable huge realloc() via mremap(2). mremap() is disabled by default
118 because the flavor used is specific to Linux, which has a quirk in its
119 virtual memory allocation algorithm that causes semi-permanent VM map holes
120 under normal jemalloc operation.
122 --disable-munmap
123 Disable virtual memory deallocation via munmap(2); instead keep track of
124 the virtual memory for later use. munmap() is disabled by default (i.e.
125 --disable-munmap is implied) on Linux, which has a quirk in its virtual
126 memory allocation algorithm that causes semi-permanent VM map holes under
127 normal jemalloc operation.
129 --enable-dss
130 Enable support for page allocation/deallocation via sbrk(2), in addition to
131 mmap(2).
133 --disable-fill
134 Disable support for junk/zero filling of memory, quarantine, and redzones.
135 See the "opt.junk", "opt.zero", "opt.quarantine", and "opt.redzone" option
136 documentation for usage details.
138 --disable-valgrind
139 Disable support for Valgrind.
141 --disable-experimental
142 Disable support for the experimental API (*allocm()).
144 --enable-utrace
145 Enable utrace(2)-based allocation tracing. This feature is not broadly
146 portable (FreeBSD has it, but Linux and OS X do not).
148 --enable-xmalloc
149 Enable support for optional immediate termination due to out-of-memory
150 errors, as is commonly implemented by "xmalloc" wrapper function for malloc.
151 See the "opt.xmalloc" option documentation for usage details.
153 --enable-lazy-lock
154 Enable code that wraps pthread_create() to detect when an application
155 switches from single-threaded to multi-threaded mode, so that it can avoid
156 mutex locking/unlocking operations while in single-threaded mode. In
157 practice, this feature usually has little impact on performance unless
158 thread-specific caching is disabled.
160 --disable-tls
161 Disable thread-local storage (TLS), which allows for fast access to
162 thread-local variables via the __thread keyword. If TLS is available,
163 jemalloc uses it for several purposes.
165 --with-xslroot=<path>
166 Specify where to find DocBook XSL stylesheets when building the
167 documentation.
169 The following environment variables (not a definitive list) impact configure's
170 behavior:
172 CFLAGS="?"
173 Pass these flags to the compiler. You probably shouldn't define this unless
174 you know what you are doing. (Use EXTRA_CFLAGS instead.)
176 EXTRA_CFLAGS="?"
177 Append these flags to CFLAGS. This makes it possible to add flags such as
178 -Werror, while allowing the configure script to determine what other flags
179 are appropriate for the specified configuration.
181 The configure script specifically checks whether an optimization flag (-O*)
182 is specified in EXTRA_CFLAGS, and refrains from specifying an optimization
183 level if it finds that one has already been specified.
185 CPPFLAGS="?"
186 Pass these flags to the C preprocessor. Note that CFLAGS is not passed to
187 'cpp' when 'configure' is looking for include files, so you must use
188 CPPFLAGS instead if you need to help 'configure' find header files.
190 LD_LIBRARY_PATH="?"
191 'ld' uses this colon-separated list to find libraries.
193 LDFLAGS="?"
194 Pass these flags when linking.
196 PATH="?"
197 'configure' uses this to find programs.
199 === Advanced compilation =======================================================
201 To build only parts of jemalloc, use the following targets:
203 build_lib_shared
204 build_lib_static
205 build_lib
206 build_doc_html
207 build_doc_man
208 build_doc
210 To install only parts of jemalloc, use the following targets:
212 install_bin
213 install_include
214 install_lib_shared
215 install_lib_static
216 install_lib
217 install_doc_html
218 install_doc_man
219 install_doc
221 To clean up build results to varying degrees, use the following make targets:
223 clean
224 distclean
225 relclean
227 === Advanced installation ======================================================
229 Optionally, define make variables when invoking make, including (not
230 exclusively):
232 INCLUDEDIR="?"
233 Use this as the installation prefix for header files.
235 LIBDIR="?"
236 Use this as the installation prefix for libraries.
238 MANDIR="?"
239 Use this as the installation prefix for man pages.
241 DESTDIR="?"
242 Prepend DESTDIR to INCLUDEDIR, LIBDIR, DATADIR, and MANDIR. This is useful
243 when installing to a different path than was specified via --prefix.
245 CC="?"
246 Use this to invoke the C compiler.
248 CFLAGS="?"
249 Pass these flags to the compiler.
251 CPPFLAGS="?"
252 Pass these flags to the C preprocessor.
254 LDFLAGS="?"
255 Pass these flags when linking.
257 PATH="?"
258 Use this to search for programs used during configuration and building.
260 === Development ================================================================
262 If you intend to make non-trivial changes to jemalloc, use the 'autogen.sh'
263 script rather than 'configure'. This re-generates 'configure', enables
264 configuration dependency rules, and enables re-generation of automatically
265 generated source files.
267 The build system supports using an object directory separate from the source
268 tree. For example, you can create an 'obj' directory, and from within that
269 directory, issue configuration and build commands:
271 autoconf
272 mkdir obj
273 cd obj
274 ../configure --enable-autogen
275 make
277 === Documentation ==============================================================
279 The manual page is generated in both html and roff formats. Any web browser
280 can be used to view the html manual. The roff manual page can be formatted
281 prior to installation via the following command:
283 nroff -man -t doc/jemalloc.3