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