Makefile.in revision 1.1.1.3 1 1.1 christos # Clear out all vpaths, then set just one (default vpath) for the main build
2 1.1 christos # directory.
3 1.1 christos vpath
4 1.1 christos vpath % .
5 1.1 christos
6 1.1 christos # Clear the default suffixes, so that built-in rules are not used.
7 1.1 christos .SUFFIXES :
8 1.1 christos
9 1.1 christos SHELL := /bin/sh
10 1.1 christos
11 1.1 christos CC := @CC@
12 1.1 christos CXX := @CXX@
13 1.1 christos
14 1.1 christos # Configuration parameters.
15 1.1 christos DESTDIR =
16 1.1 christos BINDIR := $(DESTDIR)@BINDIR@
17 1.1 christos INCLUDEDIR := $(DESTDIR)@INCLUDEDIR@
18 1.1 christos LIBDIR := $(DESTDIR)@LIBDIR@
19 1.1 christos DATADIR := $(DESTDIR)@DATADIR@
20 1.1 christos MANDIR := $(DESTDIR)@MANDIR@
21 1.1 christos srcroot := @srcroot@
22 1.1 christos objroot := @objroot@
23 1.1 christos abs_srcroot := @abs_srcroot@
24 1.1 christos abs_objroot := @abs_objroot@
25 1.1 christos
26 1.1 christos # Build parameters.
27 1.1 christos CPPFLAGS := @CPPFLAGS@ -I$(objroot)include -I$(srcroot)include
28 1.1 christos CONFIGURE_CFLAGS := @CONFIGURE_CFLAGS@
29 1.1 christos SPECIFIED_CFLAGS := @SPECIFIED_CFLAGS@
30 1.1 christos EXTRA_CFLAGS := @EXTRA_CFLAGS@
31 1.1 christos CFLAGS := $(strip $(CONFIGURE_CFLAGS) $(SPECIFIED_CFLAGS) $(EXTRA_CFLAGS))
32 1.1 christos CONFIGURE_CXXFLAGS := @CONFIGURE_CXXFLAGS@
33 1.1 christos SPECIFIED_CXXFLAGS := @SPECIFIED_CXXFLAGS@
34 1.1 christos EXTRA_CXXFLAGS := @EXTRA_CXXFLAGS@
35 1.1 christos CXXFLAGS := $(strip $(CONFIGURE_CXXFLAGS) $(SPECIFIED_CXXFLAGS) $(EXTRA_CXXFLAGS))
36 1.1 christos LDFLAGS := @LDFLAGS@
37 1.1 christos EXTRA_LDFLAGS := @EXTRA_LDFLAGS@
38 1.1 christos LIBS := @LIBS@
39 1.1 christos RPATH_EXTRA := @RPATH_EXTRA@
40 1.1 christos SO := @so@
41 1.1 christos IMPORTLIB := @importlib@
42 1.1 christos O := @o@
43 1.1 christos A := @a@
44 1.1 christos EXE := @exe@
45 1.1 christos LIBPREFIX := @libprefix@
46 1.1 christos REV := @rev@
47 1.1 christos install_suffix := @install_suffix@
48 1.1 christos ABI := @abi@
49 1.1 christos XSLTPROC := @XSLTPROC@
50 1.1.1.2 christos XSLROOT := @XSLROOT@
51 1.1 christos AUTOCONF := @AUTOCONF@
52 1.1 christos _RPATH = @RPATH@
53 1.1 christos RPATH = $(if $(1),$(call _RPATH,$(1)))
54 1.1 christos cfghdrs_in := $(addprefix $(srcroot),@cfghdrs_in@)
55 1.1 christos cfghdrs_out := @cfghdrs_out@
56 1.1 christos cfgoutputs_in := $(addprefix $(srcroot),@cfgoutputs_in@)
57 1.1 christos cfgoutputs_out := @cfgoutputs_out@
58 1.1 christos enable_autogen := @enable_autogen@
59 1.1.1.2 christos enable_doc := @enable_doc@
60 1.1.1.2 christos enable_shared := @enable_shared@
61 1.1.1.2 christos enable_static := @enable_static@
62 1.1 christos enable_prof := @enable_prof@
63 1.1 christos enable_zone_allocator := @enable_zone_allocator@
64 1.1.1.2 christos enable_experimental_smallocx := @enable_experimental_smallocx@
65 1.1 christos MALLOC_CONF := @JEMALLOC_CPREFIX@MALLOC_CONF
66 1.1 christos link_whole_archive := @link_whole_archive@
67 1.1 christos DSO_LDFLAGS = @DSO_LDFLAGS@
68 1.1 christos SOREV = @SOREV@
69 1.1 christos PIC_CFLAGS = @PIC_CFLAGS@
70 1.1 christos CTARGET = @CTARGET@
71 1.1 christos LDTARGET = @LDTARGET@
72 1.1 christos TEST_LD_MODE = @TEST_LD_MODE@
73 1.1 christos MKLIB = @MKLIB@
74 1.1 christos AR = @AR@
75 1.1 christos ARFLAGS = @ARFLAGS@
76 1.1 christos DUMP_SYMS = @DUMP_SYMS@
77 1.1 christos AWK := @AWK@
78 1.1 christos CC_MM = @CC_MM@
79 1.1 christos LM := @LM@
80 1.1 christos INSTALL = @INSTALL@
81 1.1 christos
82 1.1 christos ifeq (macho, $(ABI))
83 1.1 christos TEST_LIBRARY_PATH := DYLD_FALLBACK_LIBRARY_PATH="$(objroot)lib"
84 1.1 christos else
85 1.1 christos ifeq (pecoff, $(ABI))
86 1.1 christos TEST_LIBRARY_PATH := PATH="$(PATH):$(objroot)lib"
87 1.1 christos else
88 1.1 christos TEST_LIBRARY_PATH :=
89 1.1 christos endif
90 1.1 christos endif
91 1.1 christos
92 1.1 christos LIBJEMALLOC := $(LIBPREFIX)jemalloc$(install_suffix)
93 1.1 christos
94 1.1 christos # Lists of files.
95 1.1 christos BINS := $(objroot)bin/jemalloc-config $(objroot)bin/jemalloc.sh $(objroot)bin/jeprof
96 1.1 christos C_HDRS := $(objroot)include/jemalloc/jemalloc$(install_suffix).h
97 1.1 christos C_SRCS := $(srcroot)src/jemalloc.c \
98 1.1 christos $(srcroot)src/arena.c \
99 1.1 christos $(srcroot)src/background_thread.c \
100 1.1 christos $(srcroot)src/base.c \
101 1.1 christos $(srcroot)src/bin.c \
102 1.1.1.2 christos $(srcroot)src/bin_info.c \
103 1.1 christos $(srcroot)src/bitmap.c \
104 1.1.1.2 christos $(srcroot)src/buf_writer.c \
105 1.1.1.2 christos $(srcroot)src/cache_bin.c \
106 1.1 christos $(srcroot)src/ckh.c \
107 1.1.1.2 christos $(srcroot)src/counter.c \
108 1.1 christos $(srcroot)src/ctl.c \
109 1.1.1.2 christos $(srcroot)src/decay.c \
110 1.1 christos $(srcroot)src/div.c \
111 1.1.1.2 christos $(srcroot)src/ecache.c \
112 1.1.1.2 christos $(srcroot)src/edata.c \
113 1.1.1.2 christos $(srcroot)src/edata_cache.c \
114 1.1.1.2 christos $(srcroot)src/ehooks.c \
115 1.1.1.2 christos $(srcroot)src/emap.c \
116 1.1.1.2 christos $(srcroot)src/eset.c \
117 1.1.1.2 christos $(srcroot)src/exp_grow.c \
118 1.1 christos $(srcroot)src/extent.c \
119 1.1 christos $(srcroot)src/extent_dss.c \
120 1.1 christos $(srcroot)src/extent_mmap.c \
121 1.1.1.2 christos $(srcroot)src/fxp.c \
122 1.1.1.2 christos $(srcroot)src/san.c \
123 1.1.1.2 christos $(srcroot)src/san_bump.c \
124 1.1.1.2 christos $(srcroot)src/hook.c \
125 1.1.1.2 christos $(srcroot)src/hpa.c \
126 1.1.1.3 christos $(srcroot)src/hpa_central.c \
127 1.1.1.2 christos $(srcroot)src/hpa_hooks.c \
128 1.1.1.3 christos $(srcroot)src/hpa_utils.c \
129 1.1.1.2 christos $(srcroot)src/hpdata.c \
130 1.1.1.2 christos $(srcroot)src/inspect.c \
131 1.1 christos $(srcroot)src/large.c \
132 1.1 christos $(srcroot)src/log.c \
133 1.1 christos $(srcroot)src/malloc_io.c \
134 1.1.1.3 christos $(srcroot)src/conf.c \
135 1.1 christos $(srcroot)src/mutex.c \
136 1.1 christos $(srcroot)src/nstime.c \
137 1.1.1.2 christos $(srcroot)src/pa.c \
138 1.1.1.2 christos $(srcroot)src/pa_extra.c \
139 1.1.1.2 christos $(srcroot)src/pac.c \
140 1.1 christos $(srcroot)src/pages.c \
141 1.1.1.2 christos $(srcroot)src/peak_event.c \
142 1.1 christos $(srcroot)src/prof.c \
143 1.1.1.2 christos $(srcroot)src/prof_data.c \
144 1.1.1.2 christos $(srcroot)src/prof_log.c \
145 1.1.1.2 christos $(srcroot)src/prof_recent.c \
146 1.1.1.3 christos $(srcroot)src/prof_stack_range.c \
147 1.1.1.2 christos $(srcroot)src/prof_stats.c \
148 1.1.1.2 christos $(srcroot)src/prof_sys.c \
149 1.1.1.2 christos $(srcroot)src/psset.c \
150 1.1 christos $(srcroot)src/rtree.c \
151 1.1.1.2 christos $(srcroot)src/safety_check.c \
152 1.1.1.2 christos $(srcroot)src/sc.c \
153 1.1.1.2 christos $(srcroot)src/sec.c \
154 1.1 christos $(srcroot)src/stats.c \
155 1.1 christos $(srcroot)src/sz.c \
156 1.1 christos $(srcroot)src/tcache.c \
157 1.1.1.2 christos $(srcroot)src/test_hooks.c \
158 1.1.1.2 christos $(srcroot)src/thread_event.c \
159 1.1.1.3 christos $(srcroot)src/thread_event_registry.c \
160 1.1 christos $(srcroot)src/ticker.c \
161 1.1 christos $(srcroot)src/tsd.c \
162 1.1.1.3 christos $(srcroot)src/util.c \
163 1.1 christos $(srcroot)src/witness.c
164 1.1 christos ifeq ($(enable_zone_allocator), 1)
165 1.1 christos C_SRCS += $(srcroot)src/zone.c
166 1.1 christos endif
167 1.1 christos ifeq ($(IMPORTLIB),$(SO))
168 1.1 christos STATIC_LIBS := $(objroot)lib/$(LIBJEMALLOC).$(A)
169 1.1 christos endif
170 1.1 christos ifdef PIC_CFLAGS
171 1.1 christos STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_pic.$(A)
172 1.1 christos else
173 1.1 christos STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_s.$(A)
174 1.1 christos endif
175 1.1 christos DSOS := $(objroot)lib/$(LIBJEMALLOC).$(SOREV)
176 1.1 christos ifneq ($(SOREV),$(SO))
177 1.1 christos DSOS += $(objroot)lib/$(LIBJEMALLOC).$(SO)
178 1.1 christos endif
179 1.1 christos ifeq (1, $(link_whole_archive))
180 1.1 christos LJEMALLOC := -Wl,--whole-archive -L$(objroot)lib -l$(LIBJEMALLOC) -Wl,--no-whole-archive
181 1.1 christos else
182 1.1 christos LJEMALLOC := $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB)
183 1.1 christos endif
184 1.1 christos PC := $(objroot)jemalloc.pc
185 1.1 christos DOCS_XML := $(objroot)doc/jemalloc$(install_suffix).xml
186 1.1 christos DOCS_HTML := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.html)
187 1.1 christos DOCS_MAN3 := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.3)
188 1.1 christos DOCS := $(DOCS_HTML) $(DOCS_MAN3)
189 1.1 christos C_TESTLIB_SRCS := $(srcroot)test/src/btalloc.c $(srcroot)test/src/btalloc_0.c \
190 1.1 christos $(srcroot)test/src/btalloc_1.c $(srcroot)test/src/math.c \
191 1.1.1.2 christos $(srcroot)test/src/mtx.c $(srcroot)test/src/sleep.c \
192 1.1 christos $(srcroot)test/src/SFMT.c $(srcroot)test/src/test.c \
193 1.1 christos $(srcroot)test/src/thd.c $(srcroot)test/src/timer.c
194 1.1 christos ifeq (1, $(link_whole_archive))
195 1.1 christos C_UTIL_INTEGRATION_SRCS :=
196 1.1 christos C_UTIL_CPP_SRCS :=
197 1.1 christos else
198 1.1.1.2 christos C_UTIL_INTEGRATION_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c \
199 1.1.1.2 christos $(srcroot)src/ticker.c
200 1.1 christos C_UTIL_CPP_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c
201 1.1 christos endif
202 1.1 christos TESTS_UNIT := \
203 1.1 christos $(srcroot)test/unit/a0.c \
204 1.1.1.2 christos $(srcroot)test/unit/arena_decay.c \
205 1.1 christos $(srcroot)test/unit/arena_reset.c \
206 1.1 christos $(srcroot)test/unit/atomic.c \
207 1.1 christos $(srcroot)test/unit/background_thread.c \
208 1.1 christos $(srcroot)test/unit/background_thread_enable.c \
209 1.1.1.3 christos $(srcroot)test/unit/background_thread_init.c \
210 1.1 christos $(srcroot)test/unit/base.c \
211 1.1.1.2 christos $(srcroot)test/unit/batch_alloc.c \
212 1.1.1.3 christos $(srcroot)test/unit/bin.c \
213 1.1.1.2 christos $(srcroot)test/unit/binshard.c \
214 1.1 christos $(srcroot)test/unit/bitmap.c \
215 1.1.1.2 christos $(srcroot)test/unit/bit_util.c \
216 1.1.1.2 christos $(srcroot)test/unit/buf_writer.c \
217 1.1.1.2 christos $(srcroot)test/unit/cache_bin.c \
218 1.1 christos $(srcroot)test/unit/ckh.c \
219 1.1.1.3 christos $(srcroot)test/unit/conf.c \
220 1.1.1.3 christos $(srcroot)test/unit/conf_init_0.c \
221 1.1.1.3 christos $(srcroot)test/unit/conf_init_1.c \
222 1.1.1.3 christos $(srcroot)test/unit/conf_init_confirm.c \
223 1.1.1.3 christos $(srcroot)test/unit/conf_parse.c \
224 1.1.1.2 christos $(srcroot)test/unit/counter.c \
225 1.1 christos $(srcroot)test/unit/decay.c \
226 1.1 christos $(srcroot)test/unit/div.c \
227 1.1.1.2 christos $(srcroot)test/unit/double_free.c \
228 1.1.1.2 christos $(srcroot)test/unit/edata_cache.c \
229 1.1 christos $(srcroot)test/unit/emitter.c \
230 1.1 christos $(srcroot)test/unit/extent_quantize.c \
231 1.1.1.2 christos ${srcroot}test/unit/fb.c \
232 1.1 christos $(srcroot)test/unit/fork.c \
233 1.1.1.2 christos ${srcroot}test/unit/fxp.c \
234 1.1.1.2 christos ${srcroot}test/unit/san.c \
235 1.1.1.2 christos ${srcroot}test/unit/san_bump.c \
236 1.1 christos $(srcroot)test/unit/hash.c \
237 1.1.1.2 christos $(srcroot)test/unit/hook.c \
238 1.1.1.2 christos $(srcroot)test/unit/hpa.c \
239 1.1.1.3 christos $(srcroot)test/unit/hpa_sec_integration.c \
240 1.1.1.3 christos $(srcroot)test/unit/hpa_thp_always.c \
241 1.1.1.3 christos $(srcroot)test/unit/hpa_vectorized_madvise.c \
242 1.1.1.3 christos $(srcroot)test/unit/hpa_vectorized_madvise_large_batch.c \
243 1.1.1.2 christos $(srcroot)test/unit/hpa_background_thread.c \
244 1.1.1.2 christos $(srcroot)test/unit/hpdata.c \
245 1.1.1.2 christos $(srcroot)test/unit/huge.c \
246 1.1.1.2 christos $(srcroot)test/unit/inspect.c \
247 1.1 christos $(srcroot)test/unit/junk.c \
248 1.1 christos $(srcroot)test/unit/junk_alloc.c \
249 1.1 christos $(srcroot)test/unit/junk_free.c \
250 1.1.1.3 christos $(srcroot)test/unit/json_stats.c \
251 1.1.1.3 christos $(srcroot)test/unit/large_ralloc.c \
252 1.1 christos $(srcroot)test/unit/log.c \
253 1.1 christos $(srcroot)test/unit/mallctl.c \
254 1.1.1.2 christos $(srcroot)test/unit/malloc_conf_2.c \
255 1.1 christos $(srcroot)test/unit/malloc_io.c \
256 1.1 christos $(srcroot)test/unit/math.c \
257 1.1.1.2 christos $(srcroot)test/unit/mpsc_queue.c \
258 1.1 christos $(srcroot)test/unit/mq.c \
259 1.1 christos $(srcroot)test/unit/mtx.c \
260 1.1.1.2 christos $(srcroot)test/unit/nstime.c \
261 1.1.1.3 christos $(srcroot)test/unit/ncached_max.c \
262 1.1.1.2 christos $(srcroot)test/unit/oversize_threshold.c \
263 1.1.1.2 christos $(srcroot)test/unit/pa.c \
264 1.1 christos $(srcroot)test/unit/pack.c \
265 1.1 christos $(srcroot)test/unit/pages.c \
266 1.1.1.2 christos $(srcroot)test/unit/peak.c \
267 1.1 christos $(srcroot)test/unit/ph.c \
268 1.1 christos $(srcroot)test/unit/prng.c \
269 1.1 christos $(srcroot)test/unit/prof_accum.c \
270 1.1 christos $(srcroot)test/unit/prof_active.c \
271 1.1 christos $(srcroot)test/unit/prof_gdump.c \
272 1.1.1.2 christos $(srcroot)test/unit/prof_hook.c \
273 1.1 christos $(srcroot)test/unit/prof_idump.c \
274 1.1.1.2 christos $(srcroot)test/unit/prof_log.c \
275 1.1.1.2 christos $(srcroot)test/unit/prof_mdump.c \
276 1.1.1.2 christos $(srcroot)test/unit/prof_recent.c \
277 1.1 christos $(srcroot)test/unit/prof_reset.c \
278 1.1.1.3 christos $(srcroot)test/unit/prof_small.c \
279 1.1.1.2 christos $(srcroot)test/unit/prof_stats.c \
280 1.1 christos $(srcroot)test/unit/prof_tctx.c \
281 1.1 christos $(srcroot)test/unit/prof_thread_name.c \
282 1.1.1.2 christos $(srcroot)test/unit/prof_sys_thread_name.c \
283 1.1.1.2 christos $(srcroot)test/unit/psset.c \
284 1.1 christos $(srcroot)test/unit/ql.c \
285 1.1 christos $(srcroot)test/unit/qr.c \
286 1.1 christos $(srcroot)test/unit/rb.c \
287 1.1 christos $(srcroot)test/unit/retained.c \
288 1.1 christos $(srcroot)test/unit/rtree.c \
289 1.1.1.2 christos $(srcroot)test/unit/safety_check.c \
290 1.1.1.2 christos $(srcroot)test/unit/sc.c \
291 1.1.1.2 christos $(srcroot)test/unit/sec.c \
292 1.1.1.2 christos $(srcroot)test/unit/seq.c \
293 1.1 christos $(srcroot)test/unit/SFMT.c \
294 1.1.1.2 christos $(srcroot)test/unit/size_check.c \
295 1.1 christos $(srcroot)test/unit/size_classes.c \
296 1.1 christos $(srcroot)test/unit/slab.c \
297 1.1 christos $(srcroot)test/unit/smoothstep.c \
298 1.1 christos $(srcroot)test/unit/spin.c \
299 1.1 christos $(srcroot)test/unit/stats.c \
300 1.1 christos $(srcroot)test/unit/stats_print.c \
301 1.1.1.2 christos $(srcroot)test/unit/sz.c \
302 1.1.1.3 christos $(srcroot)test/unit/tcache_init.c \
303 1.1.1.2 christos $(srcroot)test/unit/tcache_max.c \
304 1.1.1.2 christos $(srcroot)test/unit/test_hooks.c \
305 1.1.1.2 christos $(srcroot)test/unit/thread_event.c \
306 1.1 christos $(srcroot)test/unit/ticker.c \
307 1.1 christos $(srcroot)test/unit/tsd.c \
308 1.1.1.2 christos $(srcroot)test/unit/uaf.c \
309 1.1 christos $(srcroot)test/unit/witness.c \
310 1.1.1.2 christos $(srcroot)test/unit/zero.c \
311 1.1.1.2 christos $(srcroot)test/unit/zero_realloc_abort.c \
312 1.1.1.2 christos $(srcroot)test/unit/zero_realloc_free.c \
313 1.1.1.2 christos $(srcroot)test/unit/zero_realloc_alloc.c \
314 1.1.1.2 christos $(srcroot)test/unit/zero_reallocs.c
315 1.1 christos ifeq (@enable_prof@, 1)
316 1.1 christos TESTS_UNIT += \
317 1.1.1.2 christos $(srcroot)test/unit/arena_reset_prof.c \
318 1.1.1.2 christos $(srcroot)test/unit/batch_alloc_prof.c
319 1.1 christos endif
320 1.1 christos TESTS_INTEGRATION := $(srcroot)test/integration/aligned_alloc.c \
321 1.1 christos $(srcroot)test/integration/allocated.c \
322 1.1 christos $(srcroot)test/integration/extent.c \
323 1.1.1.2 christos $(srcroot)test/integration/malloc.c \
324 1.1 christos $(srcroot)test/integration/mallocx.c \
325 1.1 christos $(srcroot)test/integration/MALLOCX_ARENA.c \
326 1.1 christos $(srcroot)test/integration/overflow.c \
327 1.1 christos $(srcroot)test/integration/posix_memalign.c \
328 1.1 christos $(srcroot)test/integration/rallocx.c \
329 1.1 christos $(srcroot)test/integration/sdallocx.c \
330 1.1.1.2 christos $(srcroot)test/integration/slab_sizes.c \
331 1.1 christos $(srcroot)test/integration/thread_arena.c \
332 1.1 christos $(srcroot)test/integration/thread_tcache_enabled.c \
333 1.1 christos $(srcroot)test/integration/xallocx.c
334 1.1.1.2 christos ifeq (@enable_experimental_smallocx@, 1)
335 1.1.1.2 christos TESTS_INTEGRATION += \
336 1.1.1.2 christos $(srcroot)test/integration/smallocx.c
337 1.1.1.2 christos endif
338 1.1 christos ifeq (@enable_cxx@, 1)
339 1.1 christos CPP_SRCS := $(srcroot)src/jemalloc_cpp.cpp
340 1.1.1.2 christos TESTS_INTEGRATION_CPP := $(srcroot)test/integration/cpp/basic.cpp \
341 1.1.1.2 christos $(srcroot)test/integration/cpp/infallible_new_true.cpp \
342 1.1.1.2 christos $(srcroot)test/integration/cpp/infallible_new_false.cpp
343 1.1 christos else
344 1.1 christos CPP_SRCS :=
345 1.1 christos TESTS_INTEGRATION_CPP :=
346 1.1 christos endif
347 1.1.1.2 christos TESTS_ANALYZE := $(srcroot)test/analyze/prof_bias.c \
348 1.1.1.2 christos $(srcroot)test/analyze/rand.c \
349 1.1.1.2 christos $(srcroot)test/analyze/sizes.c
350 1.1.1.2 christos TESTS_STRESS := $(srcroot)test/stress/batch_alloc.c \
351 1.1.1.2 christos $(srcroot)test/stress/fill_flush.c \
352 1.1.1.2 christos $(srcroot)test/stress/hookbench.c \
353 1.1.1.2 christos $(srcroot)test/stress/large_microbench.c \
354 1.1.1.2 christos $(srcroot)test/stress/mallctl.c \
355 1.1.1.2 christos $(srcroot)test/stress/microbench.c
356 1.1.1.3 christos ifeq (@enable_cxx@, 1)
357 1.1.1.3 christos TESTS_STRESS_CPP := $(srcroot)test/stress/cpp/microbench.cpp
358 1.1.1.3 christos else
359 1.1.1.3 christos TESTS_STRESS_CPP :=
360 1.1.1.3 christos endif
361 1.1 christos
362 1.1.1.2 christos
363 1.1.1.2 christos TESTS := $(TESTS_UNIT) $(TESTS_INTEGRATION) $(TESTS_INTEGRATION_CPP) \
364 1.1.1.3 christos $(TESTS_ANALYZE) $(TESTS_STRESS) $(TESTS_STRESS_CPP)
365 1.1 christos
366 1.1 christos PRIVATE_NAMESPACE_HDRS := $(objroot)include/jemalloc/internal/private_namespace.h $(objroot)include/jemalloc/internal/private_namespace_jet.h
367 1.1 christos PRIVATE_NAMESPACE_GEN_HDRS := $(PRIVATE_NAMESPACE_HDRS:%.h=%.gen.h)
368 1.1 christos C_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym.$(O))
369 1.1 christos C_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym)
370 1.1 christos C_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.$(O))
371 1.1 christos CPP_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.$(O))
372 1.1 christos C_PIC_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.pic.$(O))
373 1.1 christos CPP_PIC_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.pic.$(O))
374 1.1 christos C_JET_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym.$(O))
375 1.1 christos C_JET_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym)
376 1.1 christos C_JET_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.$(O))
377 1.1 christos C_TESTLIB_UNIT_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.unit.$(O))
378 1.1 christos C_TESTLIB_INTEGRATION_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O))
379 1.1 christos C_UTIL_INTEGRATION_OBJS := $(C_UTIL_INTEGRATION_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O))
380 1.1.1.2 christos C_TESTLIB_ANALYZE_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.analyze.$(O))
381 1.1 christos C_TESTLIB_STRESS_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.stress.$(O))
382 1.1.1.2 christos C_TESTLIB_OBJS := $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_INTEGRATION_OBJS) \
383 1.1.1.2 christos $(C_UTIL_INTEGRATION_OBJS) $(C_TESTLIB_ANALYZE_OBJS) \
384 1.1.1.2 christos $(C_TESTLIB_STRESS_OBJS)
385 1.1 christos
386 1.1 christos TESTS_UNIT_OBJS := $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%.$(O))
387 1.1 christos TESTS_INTEGRATION_OBJS := $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%.$(O))
388 1.1 christos TESTS_INTEGRATION_CPP_OBJS := $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%.$(O))
389 1.1.1.2 christos TESTS_ANALYZE_OBJS := $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%.$(O))
390 1.1 christos TESTS_STRESS_OBJS := $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%.$(O))
391 1.1.1.3 christos TESTS_STRESS_CPP_OBJS := $(TESTS_STRESS_CPP:$(srcroot)%.cpp=$(objroot)%.$(O))
392 1.1.1.2 christos TESTS_OBJS := $(TESTS_UNIT_OBJS) $(TESTS_INTEGRATION_OBJS) $(TESTS_ANALYZE_OBJS) \
393 1.1.1.2 christos $(TESTS_STRESS_OBJS)
394 1.1.1.3 christos TESTS_CPP_OBJS := $(TESTS_INTEGRATION_CPP_OBJS) $(TESTS_STRESS_CPP_OBJS)
395 1.1 christos
396 1.1 christos .PHONY: all dist build_doc_html build_doc_man build_doc
397 1.1 christos .PHONY: install_bin install_include install_lib
398 1.1 christos .PHONY: install_doc_html install_doc_man install_doc install
399 1.1 christos .PHONY: tests check clean distclean relclean
400 1.1 christos
401 1.1 christos .SECONDARY : $(PRIVATE_NAMESPACE_GEN_HDRS) $(TESTS_OBJS) $(TESTS_CPP_OBJS)
402 1.1 christos
403 1.1 christos # Default target.
404 1.1 christos all: build_lib
405 1.1 christos
406 1.1 christos dist: build_doc
407 1.1 christos
408 1.1.1.2 christos $(objroot)doc/%$(install_suffix).html : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/html.xsl
409 1.1.1.2 christos ifneq ($(XSLROOT),)
410 1.1 christos $(XSLTPROC) -o $@ $(objroot)doc/html.xsl $<
411 1.1.1.2 christos else
412 1.1.1.2 christos ifeq ($(wildcard $(DOCS_HTML)),)
413 1.1.1.2 christos @echo "<p>Missing xsltproc. Doc not built.</p>" > $@
414 1.1.1.2 christos endif
415 1.1.1.2 christos @echo "Missing xsltproc. "$@" not (re)built."
416 1.1.1.2 christos endif
417 1.1 christos
418 1.1.1.2 christos $(objroot)doc/%$(install_suffix).3 : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/manpages.xsl
419 1.1.1.2 christos ifneq ($(XSLROOT),)
420 1.1 christos $(XSLTPROC) -o $@ $(objroot)doc/manpages.xsl $<
421 1.1.1.2 christos # The -o option (output filename) of xsltproc may not work (it uses the
422 1.1.1.2 christos # <refname> in the .xml file). Manually add the suffix if so.
423 1.1.1.2 christos ifneq ($(install_suffix),)
424 1.1.1.2 christos @if [ -f $(objroot)doc/jemalloc.3 ]; then \
425 1.1.1.2 christos mv $(objroot)doc/jemalloc.3 $(objroot)doc/jemalloc$(install_suffix).3 ; \
426 1.1.1.2 christos fi
427 1.1.1.2 christos endif
428 1.1.1.2 christos else
429 1.1.1.2 christos ifeq ($(wildcard $(DOCS_MAN3)),)
430 1.1.1.2 christos @echo "Missing xsltproc. Doc not built." > $@
431 1.1.1.2 christos endif
432 1.1.1.2 christos @echo "Missing xsltproc. "$@" not (re)built."
433 1.1.1.2 christos endif
434 1.1 christos
435 1.1 christos build_doc_html: $(DOCS_HTML)
436 1.1 christos build_doc_man: $(DOCS_MAN3)
437 1.1 christos build_doc: $(DOCS)
438 1.1 christos
439 1.1 christos #
440 1.1 christos # Include generated dependency files.
441 1.1 christos #
442 1.1 christos ifdef CC_MM
443 1.1 christos -include $(C_SYM_OBJS:%.$(O)=%.d)
444 1.1 christos -include $(C_OBJS:%.$(O)=%.d)
445 1.1 christos -include $(CPP_OBJS:%.$(O)=%.d)
446 1.1 christos -include $(C_PIC_OBJS:%.$(O)=%.d)
447 1.1 christos -include $(CPP_PIC_OBJS:%.$(O)=%.d)
448 1.1 christos -include $(C_JET_SYM_OBJS:%.$(O)=%.d)
449 1.1 christos -include $(C_JET_OBJS:%.$(O)=%.d)
450 1.1 christos -include $(C_TESTLIB_OBJS:%.$(O)=%.d)
451 1.1 christos -include $(TESTS_OBJS:%.$(O)=%.d)
452 1.1 christos -include $(TESTS_CPP_OBJS:%.$(O)=%.d)
453 1.1 christos endif
454 1.1 christos
455 1.1 christos $(C_SYM_OBJS): $(objroot)src/%.sym.$(O): $(srcroot)src/%.c
456 1.1 christos $(C_SYM_OBJS): CPPFLAGS += -DJEMALLOC_NO_PRIVATE_NAMESPACE
457 1.1 christos $(C_SYMS): $(objroot)src/%.sym: $(objroot)src/%.sym.$(O)
458 1.1 christos $(C_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.c
459 1.1 christos $(CPP_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.cpp
460 1.1 christos $(C_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.c
461 1.1 christos $(C_PIC_OBJS): CFLAGS += $(PIC_CFLAGS)
462 1.1 christos $(CPP_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.cpp
463 1.1 christos $(CPP_PIC_OBJS): CXXFLAGS += $(PIC_CFLAGS)
464 1.1 christos $(C_JET_SYM_OBJS): $(objroot)src/%.jet.sym.$(O): $(srcroot)src/%.c
465 1.1 christos $(C_JET_SYM_OBJS): CPPFLAGS += -DJEMALLOC_JET -DJEMALLOC_NO_PRIVATE_NAMESPACE
466 1.1 christos $(C_JET_SYMS): $(objroot)src/%.jet.sym: $(objroot)src/%.jet.sym.$(O)
467 1.1 christos $(C_JET_OBJS): $(objroot)src/%.jet.$(O): $(srcroot)src/%.c
468 1.1 christos $(C_JET_OBJS): CPPFLAGS += -DJEMALLOC_JET
469 1.1 christos $(C_TESTLIB_UNIT_OBJS): $(objroot)test/src/%.unit.$(O): $(srcroot)test/src/%.c
470 1.1 christos $(C_TESTLIB_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST
471 1.1 christos $(C_TESTLIB_INTEGRATION_OBJS): $(objroot)test/src/%.integration.$(O): $(srcroot)test/src/%.c
472 1.1 christos $(C_TESTLIB_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST
473 1.1 christos $(C_UTIL_INTEGRATION_OBJS): $(objroot)src/%.integration.$(O): $(srcroot)src/%.c
474 1.1.1.2 christos $(C_TESTLIB_ANALYZE_OBJS): $(objroot)test/src/%.analyze.$(O): $(srcroot)test/src/%.c
475 1.1.1.2 christos $(C_TESTLIB_ANALYZE_OBJS): CPPFLAGS += -DJEMALLOC_ANALYZE_TEST
476 1.1 christos $(C_TESTLIB_STRESS_OBJS): $(objroot)test/src/%.stress.$(O): $(srcroot)test/src/%.c
477 1.1 christos $(C_TESTLIB_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST -DJEMALLOC_STRESS_TESTLIB
478 1.1 christos $(C_TESTLIB_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
479 1.1 christos $(TESTS_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST
480 1.1 christos $(TESTS_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST
481 1.1 christos $(TESTS_INTEGRATION_CPP_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_CPP_TEST
482 1.1.1.2 christos $(TESTS_ANALYZE_OBJS): CPPFLAGS += -DJEMALLOC_ANALYZE_TEST
483 1.1 christos $(TESTS_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST
484 1.1.1.3 christos $(TESTS_STRESS_CPP_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_CPP_TEST
485 1.1 christos $(TESTS_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.c
486 1.1 christos $(TESTS_CPP_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.cpp
487 1.1 christos $(TESTS_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
488 1.1 christos $(TESTS_CPP_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include
489 1.1.1.3 christos $(TESTS_OBJS): CFLAGS += -fno-builtin
490 1.1.1.3 christos $(TESTS_CPP_OBJS): CPPFLAGS += -fno-builtin
491 1.1 christos ifneq ($(IMPORTLIB),$(SO))
492 1.1 christos $(CPP_OBJS) $(C_SYM_OBJS) $(C_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS): CPPFLAGS += -DDLLEXPORT
493 1.1 christos endif
494 1.1 christos
495 1.1 christos # Dependencies.
496 1.1 christos ifndef CC_MM
497 1.1 christos HEADER_DIRS = $(srcroot)include/jemalloc/internal \
498 1.1 christos $(objroot)include/jemalloc $(objroot)include/jemalloc/internal
499 1.1 christos HEADERS = $(filter-out $(PRIVATE_NAMESPACE_HDRS),$(wildcard $(foreach dir,$(HEADER_DIRS),$(dir)/*.h)))
500 1.1 christos $(C_SYM_OBJS) $(C_OBJS) $(CPP_OBJS) $(C_PIC_OBJS) $(CPP_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS) $(TESTS_CPP_OBJS): $(HEADERS)
501 1.1 christos $(TESTS_OBJS) $(TESTS_CPP_OBJS): $(objroot)test/include/test/jemalloc_test.h
502 1.1 christos endif
503 1.1 christos
504 1.1 christos $(C_OBJS) $(CPP_OBJS) $(C_PIC_OBJS) $(CPP_PIC_OBJS) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(TESTS_INTEGRATION_OBJS) $(TESTS_INTEGRATION_CPP_OBJS): $(objroot)include/jemalloc/internal/private_namespace.h
505 1.1.1.3 christos $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_ANALYZE_OBJS) $(C_TESTLIB_STRESS_OBJS) $(TESTS_UNIT_OBJS) $(TESTS_ANALYZE_OBJS) $(TESTS_STRESS_OBJS) $(TESTS_STRESS_CPP_OBJS): $(objroot)include/jemalloc/internal/private_namespace_jet.h
506 1.1 christos
507 1.1 christos $(C_SYM_OBJS) $(C_OBJS) $(C_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): %.$(O):
508 1.1 christos @mkdir -p $(@D)
509 1.1 christos $(CC) $(CFLAGS) -c $(CPPFLAGS) $(CTARGET) $<
510 1.1 christos ifdef CC_MM
511 1.1 christos @$(CC) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $<
512 1.1 christos endif
513 1.1 christos
514 1.1 christos $(C_SYMS): %.sym:
515 1.1 christos @mkdir -p $(@D)
516 1.1 christos $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols.awk > $@
517 1.1 christos
518 1.1 christos $(C_JET_SYMS): %.sym:
519 1.1 christos @mkdir -p $(@D)
520 1.1 christos $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols_jet.awk > $@
521 1.1 christos
522 1.1 christos $(objroot)include/jemalloc/internal/private_namespace.gen.h: $(C_SYMS)
523 1.1 christos $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@
524 1.1 christos
525 1.1 christos $(objroot)include/jemalloc/internal/private_namespace_jet.gen.h: $(C_JET_SYMS)
526 1.1 christos $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@
527 1.1 christos
528 1.1 christos %.h: %.gen.h
529 1.1.1.2 christos @if ! `cmp -s $< $@` ; then echo "cp $< $@"; cp $< $@ ; fi
530 1.1 christos
531 1.1 christos $(CPP_OBJS) $(CPP_PIC_OBJS) $(TESTS_CPP_OBJS): %.$(O):
532 1.1 christos @mkdir -p $(@D)
533 1.1 christos $(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $(CTARGET) $<
534 1.1 christos ifdef CC_MM
535 1.1 christos @$(CXX) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $<
536 1.1 christos endif
537 1.1 christos
538 1.1 christos ifneq ($(SOREV),$(SO))
539 1.1 christos %.$(SO) : %.$(SOREV)
540 1.1 christos @mkdir -p $(@D)
541 1.1 christos ln -sf $(<F) $@
542 1.1 christos endif
543 1.1 christos
544 1.1 christos $(objroot)lib/$(LIBJEMALLOC).$(SOREV) : $(if $(PIC_CFLAGS),$(C_PIC_OBJS),$(C_OBJS)) $(if $(PIC_CFLAGS),$(CPP_PIC_OBJS),$(CPP_OBJS))
545 1.1 christos @mkdir -p $(@D)
546 1.1.1.3 christos ifeq (@enable_cxx@, 1)
547 1.1.1.3 christos $(CXX) $(DSO_LDFLAGS) $(call RPATH,$(RPATH_EXTRA)) $(LDTARGET) $+ $(LDFLAGS) $(LIBS) $(EXTRA_LDFLAGS)
548 1.1.1.3 christos else
549 1.1 christos $(CC) $(DSO_LDFLAGS) $(call RPATH,$(RPATH_EXTRA)) $(LDTARGET) $+ $(LDFLAGS) $(LIBS) $(EXTRA_LDFLAGS)
550 1.1.1.3 christos endif
551 1.1 christos
552 1.1 christos $(objroot)lib/$(LIBJEMALLOC)_pic.$(A) : $(C_PIC_OBJS) $(CPP_PIC_OBJS)
553 1.1 christos $(objroot)lib/$(LIBJEMALLOC).$(A) : $(C_OBJS) $(CPP_OBJS)
554 1.1 christos $(objroot)lib/$(LIBJEMALLOC)_s.$(A) : $(C_OBJS) $(CPP_OBJS)
555 1.1 christos
556 1.1 christos $(STATIC_LIBS):
557 1.1 christos @mkdir -p $(@D)
558 1.1 christos $(AR) $(ARFLAGS)@AROUT@ $+
559 1.1 christos
560 1.1 christos $(objroot)test/unit/%$(EXE): $(objroot)test/unit/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS)
561 1.1 christos @mkdir -p $(@D)
562 1.1 christos $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
563 1.1 christos
564 1.1 christos $(objroot)test/integration/%$(EXE): $(objroot)test/integration/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB)
565 1.1 christos @mkdir -p $(@D)
566 1.1.1.2 christos $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LJEMALLOC) $(LDFLAGS) $(filter-out -lm,$(filter -lrt -pthread -lstdc++,$(LIBS))) $(LM) $(EXTRA_LDFLAGS)
567 1.1 christos
568 1.1 christos $(objroot)test/integration/cpp/%$(EXE): $(objroot)test/integration/cpp/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB)
569 1.1 christos @mkdir -p $(@D)
570 1.1 christos $(CXX) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) -lm $(EXTRA_LDFLAGS)
571 1.1 christos
572 1.1.1.2 christos $(objroot)test/analyze/%$(EXE): $(objroot)test/analyze/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_ANALYZE_OBJS)
573 1.1.1.2 christos @mkdir -p $(@D)
574 1.1.1.2 christos $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
575 1.1.1.2 christos
576 1.1 christos $(objroot)test/stress/%$(EXE): $(objroot)test/stress/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_STRESS_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB)
577 1.1 christos @mkdir -p $(@D)
578 1.1 christos $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
579 1.1 christos
580 1.1.1.3 christos $(objroot)test/stress/pa/pa_data_preprocessor$(EXE): $(objroot)test/stress/pa/pa_data_preprocessor.$(O)
581 1.1.1.3 christos @mkdir -p $(@D)
582 1.1.1.3 christos $(CXX) $(LDTARGET) $(filter %.$(O),$^) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
583 1.1.1.3 christos
584 1.1.1.3 christos $(objroot)test/stress/pa/pa_microbench$(EXE): $(objroot)test/stress/pa/pa_microbench.$(O) $(C_JET_OBJS) $(C_TESTLIB_STRESS_OBJS)
585 1.1.1.3 christos @mkdir -p $(@D)
586 1.1.1.3 christos $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS)
587 1.1.1.3 christos
588 1.1.1.3 christos $(objroot)test/stress/pa/%.$(O): $(srcroot)test/stress/pa/%.c
589 1.1.1.3 christos @mkdir -p $(@D)
590 1.1.1.3 christos $(CC) $(CFLAGS) -c $(CPPFLAGS) -DJEMALLOC_STRESS_TEST -I$(srcroot)test/include -I$(objroot)test/include $(CTARGET) $<
591 1.1.1.3 christos ifdef CC_MM
592 1.1.1.3 christos @$(CC) -MM $(CPPFLAGS) -DJEMALLOC_STRESS_TEST -I$(srcroot)test/include -I$(objroot)test/include -MT $@ -o $(@:%.$(O)=%.d) $<
593 1.1.1.3 christos endif
594 1.1.1.3 christos
595 1.1.1.3 christos $(objroot)test/stress/pa/%.$(O): $(srcroot)test/stress/pa/%.cpp
596 1.1.1.3 christos @mkdir -p $(@D)
597 1.1.1.3 christos $(CXX) $(CXXFLAGS) -c $(CPPFLAGS) -I$(srcroot)test/include -I$(objroot)test/include $(CTARGET) $<
598 1.1.1.3 christos ifdef CC_MM
599 1.1.1.3 christos @$(CXX) -MM $(CPPFLAGS) -I$(srcroot)test/include -I$(objroot)test/include -MT $@ -o $(@:%.$(O)=%.d) $<
600 1.1.1.3 christos endif
601 1.1.1.3 christos
602 1.1 christos build_lib_shared: $(DSOS)
603 1.1 christos build_lib_static: $(STATIC_LIBS)
604 1.1.1.2 christos ifeq ($(enable_shared), 1)
605 1.1.1.2 christos build_lib: build_lib_shared
606 1.1.1.2 christos endif
607 1.1.1.2 christos ifeq ($(enable_static), 1)
608 1.1.1.2 christos build_lib: build_lib_static
609 1.1.1.2 christos endif
610 1.1 christos
611 1.1 christos install_bin:
612 1.1 christos $(INSTALL) -d $(BINDIR)
613 1.1 christos @for b in $(BINS); do \
614 1.1.1.3 christos echo "$(INSTALL) -m 755 $$b $(BINDIR)"; \
615 1.1.1.3 christos $(INSTALL) -m 755 $$b $(BINDIR); \
616 1.1 christos done
617 1.1 christos
618 1.1 christos install_include:
619 1.1 christos $(INSTALL) -d $(INCLUDEDIR)/jemalloc
620 1.1 christos @for h in $(C_HDRS); do \
621 1.1.1.3 christos echo "$(INSTALL) -m 644 $$h $(INCLUDEDIR)/jemalloc"; \
622 1.1.1.3 christos $(INSTALL) -m 644 $$h $(INCLUDEDIR)/jemalloc; \
623 1.1 christos done
624 1.1 christos
625 1.1 christos install_lib_shared: $(DSOS)
626 1.1 christos $(INSTALL) -d $(LIBDIR)
627 1.1.1.3 christos $(INSTALL) -m 755 $(objroot)lib/$(LIBJEMALLOC).$(SOREV) $(LIBDIR)
628 1.1 christos ifneq ($(SOREV),$(SO))
629 1.1 christos ln -sf $(LIBJEMALLOC).$(SOREV) $(LIBDIR)/$(LIBJEMALLOC).$(SO)
630 1.1 christos endif
631 1.1 christos
632 1.1 christos install_lib_static: $(STATIC_LIBS)
633 1.1 christos $(INSTALL) -d $(LIBDIR)
634 1.1 christos @for l in $(STATIC_LIBS); do \
635 1.1.1.3 christos echo "$(INSTALL) -m 755 $$l $(LIBDIR)"; \
636 1.1.1.3 christos $(INSTALL) -m 755 $$l $(LIBDIR); \
637 1.1 christos done
638 1.1 christos
639 1.1 christos install_lib_pc: $(PC)
640 1.1 christos $(INSTALL) -d $(LIBDIR)/pkgconfig
641 1.1 christos @for l in $(PC); do \
642 1.1.1.3 christos echo "$(INSTALL) -m 644 $$l $(LIBDIR)/pkgconfig"; \
643 1.1.1.3 christos $(INSTALL) -m 644 $$l $(LIBDIR)/pkgconfig; \
644 1.1 christos done
645 1.1 christos
646 1.1.1.2 christos ifeq ($(enable_shared), 1)
647 1.1.1.2 christos install_lib: install_lib_shared
648 1.1.1.2 christos endif
649 1.1.1.2 christos ifeq ($(enable_static), 1)
650 1.1.1.2 christos install_lib: install_lib_static
651 1.1.1.2 christos endif
652 1.1.1.2 christos install_lib: install_lib_pc
653 1.1 christos
654 1.1.1.2 christos install_doc_html: build_doc_html
655 1.1 christos $(INSTALL) -d $(DATADIR)/doc/jemalloc$(install_suffix)
656 1.1 christos @for d in $(DOCS_HTML); do \
657 1.1.1.3 christos echo "$(INSTALL) -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix)"; \
658 1.1.1.3 christos $(INSTALL) -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix); \
659 1.1 christos done
660 1.1 christos
661 1.1.1.2 christos install_doc_man: build_doc_man
662 1.1 christos $(INSTALL) -d $(MANDIR)/man3
663 1.1 christos @for d in $(DOCS_MAN3); do \
664 1.1.1.3 christos echo "$(INSTALL) -m 644 $$d $(MANDIR)/man3"; \
665 1.1.1.3 christos $(INSTALL) -m 644 $$d $(MANDIR)/man3; \
666 1.1 christos done
667 1.1 christos
668 1.1 christos install_doc: install_doc_html install_doc_man
669 1.1 christos
670 1.1.1.2 christos install: install_bin install_include install_lib
671 1.1.1.2 christos
672 1.1.1.2 christos ifeq ($(enable_doc), 1)
673 1.1.1.2 christos install: install_doc
674 1.1.1.2 christos endif
675 1.1.1.2 christos
676 1.1.1.2 christos uninstall_bin:
677 1.1.1.2 christos $(RM) -v $(foreach b,$(notdir $(BINS)),$(BINDIR)/$(b))
678 1.1.1.2 christos
679 1.1.1.2 christos uninstall_include:
680 1.1.1.2 christos $(RM) -v $(foreach h,$(notdir $(C_HDRS)),$(INCLUDEDIR)/jemalloc/$(h))
681 1.1.1.2 christos rmdir -v $(INCLUDEDIR)/jemalloc
682 1.1.1.2 christos
683 1.1.1.2 christos uninstall_lib_shared:
684 1.1.1.2 christos $(RM) -v $(LIBDIR)/$(LIBJEMALLOC).$(SOREV)
685 1.1.1.2 christos ifneq ($(SOREV),$(SO))
686 1.1.1.2 christos $(RM) -v $(LIBDIR)/$(LIBJEMALLOC).$(SO)
687 1.1.1.2 christos endif
688 1.1.1.2 christos
689 1.1.1.2 christos uninstall_lib_static:
690 1.1.1.2 christos $(RM) -v $(foreach l,$(notdir $(STATIC_LIBS)),$(LIBDIR)/$(l))
691 1.1.1.2 christos
692 1.1.1.2 christos uninstall_lib_pc:
693 1.1.1.2 christos $(RM) -v $(foreach p,$(notdir $(PC)),$(LIBDIR)/pkgconfig/$(p))
694 1.1.1.2 christos
695 1.1.1.2 christos ifeq ($(enable_shared), 1)
696 1.1.1.2 christos uninstall_lib: uninstall_lib_shared
697 1.1.1.2 christos endif
698 1.1.1.2 christos ifeq ($(enable_static), 1)
699 1.1.1.2 christos uninstall_lib: uninstall_lib_static
700 1.1.1.2 christos endif
701 1.1.1.2 christos uninstall_lib: uninstall_lib_pc
702 1.1.1.2 christos
703 1.1.1.2 christos uninstall_doc_html:
704 1.1.1.2 christos $(RM) -v $(foreach d,$(notdir $(DOCS_HTML)),$(DATADIR)/doc/jemalloc$(install_suffix)/$(d))
705 1.1.1.2 christos rmdir -v $(DATADIR)/doc/jemalloc$(install_suffix)
706 1.1.1.2 christos
707 1.1.1.2 christos uninstall_doc_man:
708 1.1.1.2 christos $(RM) -v $(foreach d,$(notdir $(DOCS_MAN3)),$(MANDIR)/man3/$(d))
709 1.1.1.2 christos
710 1.1.1.2 christos uninstall_doc: uninstall_doc_html uninstall_doc_man
711 1.1.1.2 christos
712 1.1.1.2 christos uninstall: uninstall_bin uninstall_include uninstall_lib
713 1.1.1.2 christos
714 1.1.1.2 christos ifeq ($(enable_doc), 1)
715 1.1.1.2 christos uninstall: uninstall_doc
716 1.1.1.2 christos endif
717 1.1 christos
718 1.1 christos tests_unit: $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%$(EXE))
719 1.1 christos tests_integration: $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%$(EXE)) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%$(EXE))
720 1.1.1.2 christos tests_analyze: $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%$(EXE))
721 1.1.1.3 christos tests_stress: $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%$(EXE)) $(TESTS_STRESS_CPP:$(srcroot)%.cpp=$(objroot)%$(EXE))
722 1.1.1.3 christos tests_pa: $(objroot)test/stress/pa/pa_data_preprocessor$(EXE) $(objroot)test/stress/pa/pa_microbench$(EXE)
723 1.1.1.2 christos tests: tests_unit tests_integration tests_analyze tests_stress
724 1.1 christos
725 1.1 christos check_unit_dir:
726 1.1 christos @mkdir -p $(objroot)test/unit
727 1.1 christos check_integration_dir:
728 1.1 christos @mkdir -p $(objroot)test/integration
729 1.1.1.2 christos analyze_dir:
730 1.1.1.2 christos @mkdir -p $(objroot)test/analyze
731 1.1 christos stress_dir:
732 1.1 christos @mkdir -p $(objroot)test/stress
733 1.1 christos check_dir: check_unit_dir check_integration_dir
734 1.1 christos
735 1.1 christos check_unit: tests_unit check_unit_dir
736 1.1 christos $(SHELL) $(objroot)test/test.sh $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%)
737 1.1 christos check_integration_prof: tests_integration check_integration_dir
738 1.1 christos ifeq ($(enable_prof), 1)
739 1.1 christos $(MALLOC_CONF)="prof:true" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%)
740 1.1 christos $(MALLOC_CONF)="prof:true,prof_active:false" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%)
741 1.1 christos endif
742 1.1 christos check_integration_decay: tests_integration check_integration_dir
743 1.1 christos $(MALLOC_CONF)="dirty_decay_ms:-1,muzzy_decay_ms:-1" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%)
744 1.1 christos $(MALLOC_CONF)="dirty_decay_ms:0,muzzy_decay_ms:0" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%)
745 1.1 christos check_integration: tests_integration check_integration_dir
746 1.1 christos $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%)
747 1.1.1.2 christos analyze: tests_analyze analyze_dir
748 1.1.1.2 christos ifeq ($(enable_prof), 1)
749 1.1.1.2 christos $(MALLOC_CONF)="prof:true" $(SHELL) $(objroot)test/test.sh $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%)
750 1.1.1.2 christos else
751 1.1.1.2 christos $(SHELL) $(objroot)test/test.sh $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%)
752 1.1.1.2 christos endif
753 1.1 christos stress: tests_stress stress_dir
754 1.1 christos $(SHELL) $(objroot)test/test.sh $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%)
755 1.1.1.3 christos $(SHELL) $(objroot)test/test.sh $(TESTS_STRESS_CPP:$(srcroot)%.cpp=$(objroot)%)
756 1.1 christos check: check_unit check_integration check_integration_decay check_integration_prof
757 1.1 christos
758 1.1 christos clean:
759 1.1 christos rm -f $(PRIVATE_NAMESPACE_HDRS)
760 1.1 christos rm -f $(PRIVATE_NAMESPACE_GEN_HDRS)
761 1.1 christos rm -f $(C_SYM_OBJS)
762 1.1 christos rm -f $(C_SYMS)
763 1.1 christos rm -f $(C_OBJS)
764 1.1 christos rm -f $(CPP_OBJS)
765 1.1 christos rm -f $(C_PIC_OBJS)
766 1.1 christos rm -f $(CPP_PIC_OBJS)
767 1.1 christos rm -f $(C_JET_SYM_OBJS)
768 1.1 christos rm -f $(C_JET_SYMS)
769 1.1 christos rm -f $(C_JET_OBJS)
770 1.1 christos rm -f $(C_TESTLIB_OBJS)
771 1.1 christos rm -f $(C_SYM_OBJS:%.$(O)=%.d)
772 1.1 christos rm -f $(C_OBJS:%.$(O)=%.d)
773 1.1 christos rm -f $(CPP_OBJS:%.$(O)=%.d)
774 1.1 christos rm -f $(C_PIC_OBJS:%.$(O)=%.d)
775 1.1 christos rm -f $(CPP_PIC_OBJS:%.$(O)=%.d)
776 1.1 christos rm -f $(C_JET_SYM_OBJS:%.$(O)=%.d)
777 1.1 christos rm -f $(C_JET_OBJS:%.$(O)=%.d)
778 1.1 christos rm -f $(C_TESTLIB_OBJS:%.$(O)=%.d)
779 1.1 christos rm -f $(TESTS_OBJS:%.$(O)=%$(EXE))
780 1.1 christos rm -f $(TESTS_OBJS)
781 1.1 christos rm -f $(TESTS_OBJS:%.$(O)=%.d)
782 1.1 christos rm -f $(TESTS_OBJS:%.$(O)=%.out)
783 1.1 christos rm -f $(TESTS_CPP_OBJS:%.$(O)=%$(EXE))
784 1.1 christos rm -f $(TESTS_CPP_OBJS)
785 1.1 christos rm -f $(TESTS_CPP_OBJS:%.$(O)=%.d)
786 1.1 christos rm -f $(TESTS_CPP_OBJS:%.$(O)=%.out)
787 1.1 christos rm -f $(DSOS) $(STATIC_LIBS)
788 1.1 christos
789 1.1 christos distclean: clean
790 1.1 christos rm -f $(objroot)bin/jemalloc-config
791 1.1 christos rm -f $(objroot)bin/jemalloc.sh
792 1.1 christos rm -f $(objroot)bin/jeprof
793 1.1 christos rm -f $(objroot)config.log
794 1.1 christos rm -f $(objroot)config.status
795 1.1 christos rm -f $(objroot)config.stamp
796 1.1 christos rm -f $(cfghdrs_out)
797 1.1 christos rm -f $(cfgoutputs_out)
798 1.1 christos
799 1.1 christos relclean: distclean
800 1.1 christos rm -f $(objroot)configure
801 1.1 christos rm -f $(objroot)VERSION
802 1.1 christos rm -f $(DOCS_HTML)
803 1.1 christos rm -f $(DOCS_MAN3)
804 1.1 christos
805 1.1 christos #===============================================================================
806 1.1 christos # Re-configuration rules.
807 1.1 christos
808 1.1 christos ifeq ($(enable_autogen), 1)
809 1.1 christos $(srcroot)configure : $(srcroot)configure.ac
810 1.1 christos cd ./$(srcroot) && $(AUTOCONF)
811 1.1 christos
812 1.1 christos $(objroot)config.status : $(srcroot)configure
813 1.1 christos ./$(objroot)config.status --recheck
814 1.1 christos
815 1.1 christos $(srcroot)config.stamp.in : $(srcroot)configure.ac
816 1.1 christos echo stamp > $(srcroot)config.stamp.in
817 1.1 christos
818 1.1 christos $(objroot)config.stamp : $(cfgoutputs_in) $(cfghdrs_in) $(srcroot)configure
819 1.1 christos ./$(objroot)config.status
820 1.1 christos @touch $@
821 1.1 christos
822 1.1 christos # There must be some action in order for make to re-read Makefile when it is
823 1.1 christos # out of date.
824 1.1 christos $(cfgoutputs_out) $(cfghdrs_out) : $(objroot)config.stamp
825 1.1 christos @true
826 1.1 christos endif
827