1<<<<<<< HEAD 2# Clear out all vpaths, then set just one (default vpath) for the main build 3# directory. 4vpath 5vpath % . 6 7# Clear the default suffixes, so that built-in rules are not used. 8.SUFFIXES : 9 10SHELL := /bin/sh 11 12CC := @CC@ 13CXX := @CXX@ 14 15# Configuration parameters. 16DESTDIR = 17BINDIR := $(DESTDIR)@BINDIR@ 18INCLUDEDIR := $(DESTDIR)@INCLUDEDIR@ 19LIBDIR := $(DESTDIR)@LIBDIR@ 20DATADIR := $(DESTDIR)@DATADIR@ 21MANDIR := $(DESTDIR)@MANDIR@ 22srcroot := @srcroot@ 23objroot := @objroot@ 24abs_srcroot := @abs_srcroot@ 25abs_objroot := @abs_objroot@ 26 27# Build parameters. 28CPPFLAGS := @CPPFLAGS@ -I$(objroot)include -I$(srcroot)include 29CONFIGURE_CFLAGS := @CONFIGURE_CFLAGS@ 30SPECIFIED_CFLAGS := @SPECIFIED_CFLAGS@ 31EXTRA_CFLAGS := @EXTRA_CFLAGS@ 32CFLAGS := $(strip $(CONFIGURE_CFLAGS) $(SPECIFIED_CFLAGS) $(EXTRA_CFLAGS)) 33CONFIGURE_CXXFLAGS := @CONFIGURE_CXXFLAGS@ 34SPECIFIED_CXXFLAGS := @SPECIFIED_CXXFLAGS@ 35EXTRA_CXXFLAGS := @EXTRA_CXXFLAGS@ 36CXXFLAGS := $(strip $(CONFIGURE_CXXFLAGS) $(SPECIFIED_CXXFLAGS) $(EXTRA_CXXFLAGS)) 37LDFLAGS := @LDFLAGS@ 38EXTRA_LDFLAGS := @EXTRA_LDFLAGS@ 39LIBS := @LIBS@ 40RPATH_EXTRA := @RPATH_EXTRA@ 41SO := @so@ 42IMPORTLIB := @importlib@ 43O := @o@ 44A := @a@ 45EXE := @exe@ 46LIBPREFIX := @libprefix@ 47REV := @rev@ 48install_suffix := @install_suffix@ 49ABI := @abi@ 50XSLTPROC := @XSLTPROC@ 51XSLROOT := @XSLROOT@ 52AUTOCONF := @AUTOCONF@ 53_RPATH = @RPATH@ 54RPATH = $(if $(1),$(call _RPATH,$(1))) 55cfghdrs_in := $(addprefix $(srcroot),@cfghdrs_in@) 56cfghdrs_out := @cfghdrs_out@ 57cfgoutputs_in := $(addprefix $(srcroot),@cfgoutputs_in@) 58cfgoutputs_out := @cfgoutputs_out@ 59enable_autogen := @enable_autogen@ 60enable_doc := @enable_doc@ 61enable_shared := @enable_shared@ 62enable_static := @enable_static@ 63enable_prof := @enable_prof@ 64enable_zone_allocator := @enable_zone_allocator@ 65enable_experimental_smallocx := @enable_experimental_smallocx@ 66MALLOC_CONF := @JEMALLOC_CPREFIX@MALLOC_CONF 67link_whole_archive := @link_whole_archive@ 68DSO_LDFLAGS = @DSO_LDFLAGS@ 69SOREV = @SOREV@ 70PIC_CFLAGS = @PIC_CFLAGS@ 71CTARGET = @CTARGET@ 72LDTARGET = @LDTARGET@ 73TEST_LD_MODE = @TEST_LD_MODE@ 74MKLIB = @MKLIB@ 75AR = @AR@ 76ARFLAGS = @ARFLAGS@ 77DUMP_SYMS = @DUMP_SYMS@ 78AWK := @AWK@ 79CC_MM = @CC_MM@ 80LM := @LM@ 81INSTALL = @INSTALL@ 82 83ifeq (macho, $(ABI)) 84TEST_LIBRARY_PATH := DYLD_FALLBACK_LIBRARY_PATH="$(objroot)lib" 85else 86ifeq (pecoff, $(ABI)) 87TEST_LIBRARY_PATH := PATH="$(PATH):$(objroot)lib" 88else 89TEST_LIBRARY_PATH := 90endif 91endif 92 93LIBJEMALLOC := $(LIBPREFIX)jemalloc$(install_suffix) 94 95# Lists of files. 96BINS := $(objroot)bin/jemalloc-config $(objroot)bin/jemalloc.sh $(objroot)bin/jeprof 97C_HDRS := $(objroot)include/jemalloc/jemalloc$(install_suffix).h 98C_SRCS := $(srcroot)src/jemalloc.c \ 99 $(srcroot)src/arena.c \ 100 $(srcroot)src/background_thread.c \ 101 $(srcroot)src/base.c \ 102 $(srcroot)src/bin.c \ 103 $(srcroot)src/bin_info.c \ 104 $(srcroot)src/bitmap.c \ 105 $(srcroot)src/buf_writer.c \ 106 $(srcroot)src/cache_bin.c \ 107 $(srcroot)src/ckh.c \ 108 $(srcroot)src/counter.c \ 109 $(srcroot)src/ctl.c \ 110 $(srcroot)src/decay.c \ 111 $(srcroot)src/div.c \ 112 $(srcroot)src/ecache.c \ 113 $(srcroot)src/edata.c \ 114 $(srcroot)src/edata_cache.c \ 115 $(srcroot)src/ehooks.c \ 116 $(srcroot)src/emap.c \ 117 $(srcroot)src/eset.c \ 118 $(srcroot)src/exp_grow.c \ 119 $(srcroot)src/extent.c \ 120 $(srcroot)src/extent_dss.c \ 121 $(srcroot)src/extent_mmap.c \ 122 $(srcroot)src/fxp.c \ 123 $(srcroot)src/san.c \ 124 $(srcroot)src/san_bump.c \ 125 $(srcroot)src/hook.c \ 126 $(srcroot)src/hpa.c \ 127 $(srcroot)src/hpa_hooks.c \ 128 $(srcroot)src/hpdata.c \ 129 $(srcroot)src/inspect.c \ 130 $(srcroot)src/large.c \ 131 $(srcroot)src/log.c \ 132 $(srcroot)src/malloc_io.c \ 133 $(srcroot)src/mutex.c \ 134 $(srcroot)src/nstime.c \ 135 $(srcroot)src/pa.c \ 136 $(srcroot)src/pa_extra.c \ 137 $(srcroot)src/pai.c \ 138 $(srcroot)src/pac.c \ 139 $(srcroot)src/pages.c \ 140 $(srcroot)src/peak_event.c \ 141 $(srcroot)src/prof.c \ 142 $(srcroot)src/prof_data.c \ 143 $(srcroot)src/prof_log.c \ 144 $(srcroot)src/prof_recent.c \ 145 $(srcroot)src/prof_stats.c \ 146 $(srcroot)src/prof_sys.c \ 147 $(srcroot)src/psset.c \ 148 $(srcroot)src/rtree.c \ 149 $(srcroot)src/safety_check.c \ 150 $(srcroot)src/sc.c \ 151 $(srcroot)src/sec.c \ 152 $(srcroot)src/stats.c \ 153 $(srcroot)src/sz.c \ 154 $(srcroot)src/tcache.c \ 155 $(srcroot)src/test_hooks.c \ 156 $(srcroot)src/thread_event.c \ 157 $(srcroot)src/ticker.c \ 158 $(srcroot)src/tsd.c \ 159 $(srcroot)src/witness.c 160ifeq ($(enable_zone_allocator), 1) 161C_SRCS += $(srcroot)src/zone.c 162endif 163ifeq ($(IMPORTLIB),$(SO)) 164STATIC_LIBS := $(objroot)lib/$(LIBJEMALLOC).$(A) 165endif 166ifdef PIC_CFLAGS 167STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_pic.$(A) 168else 169STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_s.$(A) 170endif 171DSOS := $(objroot)lib/$(LIBJEMALLOC).$(SOREV) 172ifneq ($(SOREV),$(SO)) 173DSOS += $(objroot)lib/$(LIBJEMALLOC).$(SO) 174endif 175ifeq (1, $(link_whole_archive)) 176LJEMALLOC := -Wl,--whole-archive -L$(objroot)lib -l$(LIBJEMALLOC) -Wl,--no-whole-archive 177else 178LJEMALLOC := $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 179endif 180PC := $(objroot)jemalloc.pc 181DOCS_XML := $(objroot)doc/jemalloc$(install_suffix).xml 182DOCS_HTML := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.html) 183DOCS_MAN3 := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.3) 184DOCS := $(DOCS_HTML) $(DOCS_MAN3) 185C_TESTLIB_SRCS := $(srcroot)test/src/btalloc.c $(srcroot)test/src/btalloc_0.c \ 186 $(srcroot)test/src/btalloc_1.c $(srcroot)test/src/math.c \ 187 $(srcroot)test/src/mtx.c $(srcroot)test/src/sleep.c \ 188 $(srcroot)test/src/SFMT.c $(srcroot)test/src/test.c \ 189 $(srcroot)test/src/thd.c $(srcroot)test/src/timer.c 190ifeq (1, $(link_whole_archive)) 191C_UTIL_INTEGRATION_SRCS := 192C_UTIL_CPP_SRCS := 193else 194C_UTIL_INTEGRATION_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c \ 195 $(srcroot)src/ticker.c 196C_UTIL_CPP_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c 197endif 198TESTS_UNIT := \ 199 $(srcroot)test/unit/a0.c \ 200 $(srcroot)test/unit/arena_decay.c \ 201 $(srcroot)test/unit/arena_reset.c \ 202 $(srcroot)test/unit/atomic.c \ 203 $(srcroot)test/unit/background_thread.c \ 204 $(srcroot)test/unit/background_thread_enable.c \ 205 $(srcroot)test/unit/base.c \ 206 $(srcroot)test/unit/batch_alloc.c \ 207 $(srcroot)test/unit/binshard.c \ 208 $(srcroot)test/unit/bitmap.c \ 209 $(srcroot)test/unit/bit_util.c \ 210 $(srcroot)test/unit/buf_writer.c \ 211 $(srcroot)test/unit/cache_bin.c \ 212 $(srcroot)test/unit/ckh.c \ 213 $(srcroot)test/unit/counter.c \ 214 $(srcroot)test/unit/decay.c \ 215 $(srcroot)test/unit/div.c \ 216 $(srcroot)test/unit/double_free.c \ 217 $(srcroot)test/unit/edata_cache.c \ 218 $(srcroot)test/unit/emitter.c \ 219 $(srcroot)test/unit/extent_quantize.c \ 220 ${srcroot}test/unit/fb.c \ 221 $(srcroot)test/unit/fork.c \ 222 ${srcroot}test/unit/fxp.c \ 223 ${srcroot}test/unit/san.c \ 224 ${srcroot}test/unit/san_bump.c \ 225 $(srcroot)test/unit/hash.c \ 226 $(srcroot)test/unit/hook.c \ 227 $(srcroot)test/unit/hpa.c \ 228 $(srcroot)test/unit/hpa_background_thread.c \ 229 $(srcroot)test/unit/hpdata.c \ 230 $(srcroot)test/unit/huge.c \ 231 $(srcroot)test/unit/inspect.c \ 232 $(srcroot)test/unit/junk.c \ 233 $(srcroot)test/unit/junk_alloc.c \ 234 $(srcroot)test/unit/junk_free.c \ 235 $(srcroot)test/unit/log.c \ 236 $(srcroot)test/unit/mallctl.c \ 237 $(srcroot)test/unit/malloc_conf_2.c \ 238 $(srcroot)test/unit/malloc_io.c \ 239 $(srcroot)test/unit/math.c \ 240 $(srcroot)test/unit/mpsc_queue.c \ 241 $(srcroot)test/unit/mq.c \ 242 $(srcroot)test/unit/mtx.c \ 243 $(srcroot)test/unit/nstime.c \ 244 $(srcroot)test/unit/oversize_threshold.c \ 245 $(srcroot)test/unit/pa.c \ 246 $(srcroot)test/unit/pack.c \ 247 $(srcroot)test/unit/pages.c \ 248 $(srcroot)test/unit/peak.c \ 249 $(srcroot)test/unit/ph.c \ 250 $(srcroot)test/unit/prng.c \ 251 $(srcroot)test/unit/prof_accum.c \ 252 $(srcroot)test/unit/prof_active.c \ 253 $(srcroot)test/unit/prof_gdump.c \ 254 $(srcroot)test/unit/prof_hook.c \ 255 $(srcroot)test/unit/prof_idump.c \ 256 $(srcroot)test/unit/prof_log.c \ 257 $(srcroot)test/unit/prof_mdump.c \ 258 $(srcroot)test/unit/prof_recent.c \ 259 $(srcroot)test/unit/prof_reset.c \ 260 $(srcroot)test/unit/prof_stats.c \ 261 $(srcroot)test/unit/prof_tctx.c \ 262 $(srcroot)test/unit/prof_thread_name.c \ 263 $(srcroot)test/unit/prof_sys_thread_name.c \ 264 $(srcroot)test/unit/psset.c \ 265 $(srcroot)test/unit/ql.c \ 266 $(srcroot)test/unit/qr.c \ 267 $(srcroot)test/unit/rb.c \ 268 $(srcroot)test/unit/retained.c \ 269 $(srcroot)test/unit/rtree.c \ 270 $(srcroot)test/unit/safety_check.c \ 271 $(srcroot)test/unit/sc.c \ 272 $(srcroot)test/unit/sec.c \ 273 $(srcroot)test/unit/seq.c \ 274 $(srcroot)test/unit/SFMT.c \ 275 $(srcroot)test/unit/size_check.c \ 276 $(srcroot)test/unit/size_classes.c \ 277 $(srcroot)test/unit/slab.c \ 278 $(srcroot)test/unit/smoothstep.c \ 279 $(srcroot)test/unit/spin.c \ 280 $(srcroot)test/unit/stats.c \ 281 $(srcroot)test/unit/stats_print.c \ 282 $(srcroot)test/unit/sz.c \ 283 $(srcroot)test/unit/tcache_max.c \ 284 $(srcroot)test/unit/test_hooks.c \ 285 $(srcroot)test/unit/thread_event.c \ 286 $(srcroot)test/unit/ticker.c \ 287 $(srcroot)test/unit/tsd.c \ 288 $(srcroot)test/unit/uaf.c \ 289 $(srcroot)test/unit/witness.c \ 290 $(srcroot)test/unit/zero.c \ 291 $(srcroot)test/unit/zero_realloc_abort.c \ 292 $(srcroot)test/unit/zero_realloc_free.c \ 293 $(srcroot)test/unit/zero_realloc_alloc.c \ 294 $(srcroot)test/unit/zero_reallocs.c 295ifeq (@enable_prof@, 1) 296TESTS_UNIT += \ 297 $(srcroot)test/unit/arena_reset_prof.c \ 298 $(srcroot)test/unit/batch_alloc_prof.c 299endif 300TESTS_INTEGRATION := $(srcroot)test/integration/aligned_alloc.c \ 301 $(srcroot)test/integration/allocated.c \ 302 $(srcroot)test/integration/extent.c \ 303 $(srcroot)test/integration/malloc.c \ 304 $(srcroot)test/integration/mallocx.c \ 305 $(srcroot)test/integration/MALLOCX_ARENA.c \ 306 $(srcroot)test/integration/overflow.c \ 307 $(srcroot)test/integration/posix_memalign.c \ 308 $(srcroot)test/integration/rallocx.c \ 309 $(srcroot)test/integration/sdallocx.c \ 310 $(srcroot)test/integration/slab_sizes.c \ 311 $(srcroot)test/integration/thread_arena.c \ 312 $(srcroot)test/integration/thread_tcache_enabled.c \ 313 $(srcroot)test/integration/xallocx.c 314ifeq (@enable_experimental_smallocx@, 1) 315TESTS_INTEGRATION += \ 316 $(srcroot)test/integration/smallocx.c 317endif 318ifeq (@enable_cxx@, 1) 319CPP_SRCS := $(srcroot)src/jemalloc_cpp.cpp 320TESTS_INTEGRATION_CPP := $(srcroot)test/integration/cpp/basic.cpp \ 321 $(srcroot)test/integration/cpp/infallible_new_true.cpp \ 322 $(srcroot)test/integration/cpp/infallible_new_false.cpp 323else 324CPP_SRCS := 325TESTS_INTEGRATION_CPP := 326endif 327TESTS_ANALYZE := $(srcroot)test/analyze/prof_bias.c \ 328 $(srcroot)test/analyze/rand.c \ 329 $(srcroot)test/analyze/sizes.c 330TESTS_STRESS := $(srcroot)test/stress/batch_alloc.c \ 331 $(srcroot)test/stress/fill_flush.c \ 332 $(srcroot)test/stress/hookbench.c \ 333 $(srcroot)test/stress/large_microbench.c \ 334 $(srcroot)test/stress/mallctl.c \ 335 $(srcroot)test/stress/microbench.c 336 337 338TESTS := $(TESTS_UNIT) $(TESTS_INTEGRATION) $(TESTS_INTEGRATION_CPP) \ 339 $(TESTS_ANALYZE) $(TESTS_STRESS) 340 341PRIVATE_NAMESPACE_HDRS := $(objroot)include/jemalloc/internal/private_namespace.h $(objroot)include/jemalloc/internal/private_namespace_jet.h 342PRIVATE_NAMESPACE_GEN_HDRS := $(PRIVATE_NAMESPACE_HDRS:%.h=%.gen.h) 343C_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym.$(O)) 344C_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym) 345C_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.$(O)) 346CPP_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.$(O)) 347C_PIC_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.pic.$(O)) 348CPP_PIC_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.pic.$(O)) 349C_JET_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym.$(O)) 350C_JET_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym) 351C_JET_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.$(O)) 352C_TESTLIB_UNIT_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.unit.$(O)) 353C_TESTLIB_INTEGRATION_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O)) 354C_UTIL_INTEGRATION_OBJS := $(C_UTIL_INTEGRATION_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O)) 355C_TESTLIB_ANALYZE_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.analyze.$(O)) 356C_TESTLIB_STRESS_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.stress.$(O)) 357C_TESTLIB_OBJS := $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_INTEGRATION_OBJS) \ 358 $(C_UTIL_INTEGRATION_OBJS) $(C_TESTLIB_ANALYZE_OBJS) \ 359 $(C_TESTLIB_STRESS_OBJS) 360 361TESTS_UNIT_OBJS := $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%.$(O)) 362TESTS_INTEGRATION_OBJS := $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%.$(O)) 363TESTS_INTEGRATION_CPP_OBJS := $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%.$(O)) 364TESTS_ANALYZE_OBJS := $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%.$(O)) 365TESTS_STRESS_OBJS := $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%.$(O)) 366TESTS_OBJS := $(TESTS_UNIT_OBJS) $(TESTS_INTEGRATION_OBJS) $(TESTS_ANALYZE_OBJS) \ 367 $(TESTS_STRESS_OBJS) 368TESTS_CPP_OBJS := $(TESTS_INTEGRATION_CPP_OBJS) 369 370.PHONY: all dist build_doc_html build_doc_man build_doc 371.PHONY: install_bin install_include install_lib 372.PHONY: install_doc_html install_doc_man install_doc install 373.PHONY: tests check clean distclean relclean 374 375.SECONDARY : $(PRIVATE_NAMESPACE_GEN_HDRS) $(TESTS_OBJS) $(TESTS_CPP_OBJS) 376 377# Default target. 378all: build_lib 379 380dist: build_doc 381 382$(objroot)doc/%$(install_suffix).html : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/html.xsl 383ifneq ($(XSLROOT),) 384 $(XSLTPROC) -o $@ $(objroot)doc/html.xsl $< 385else 386ifeq ($(wildcard $(DOCS_HTML)),) 387 @echo "<p>Missing xsltproc. Doc not built.</p>" > $@ 388endif 389 @echo "Missing xsltproc. "$@" not (re)built." 390endif 391 392$(objroot)doc/%$(install_suffix).3 : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/manpages.xsl 393ifneq ($(XSLROOT),) 394 $(XSLTPROC) -o $@ $(objroot)doc/manpages.xsl $< 395# The -o option (output filename) of xsltproc may not work (it uses the 396# <refname> in the .xml file). Manually add the suffix if so. 397 ifneq ($(install_suffix),) 398 @if [ -f $(objroot)doc/jemalloc.3 ]; then \ 399 mv $(objroot)doc/jemalloc.3 $(objroot)doc/jemalloc$(install_suffix).3 ; \ 400 fi 401 endif 402else 403ifeq ($(wildcard $(DOCS_MAN3)),) 404 @echo "Missing xsltproc. Doc not built." > $@ 405endif 406 @echo "Missing xsltproc. "$@" not (re)built." 407endif 408 409build_doc_html: $(DOCS_HTML) 410build_doc_man: $(DOCS_MAN3) 411build_doc: $(DOCS) 412 413# 414# Include generated dependency files. 415# 416ifdef CC_MM 417-include $(C_SYM_OBJS:%.$(O)=%.d) 418-include $(C_OBJS:%.$(O)=%.d) 419-include $(CPP_OBJS:%.$(O)=%.d) 420-include $(C_PIC_OBJS:%.$(O)=%.d) 421-include $(CPP_PIC_OBJS:%.$(O)=%.d) 422-include $(C_JET_SYM_OBJS:%.$(O)=%.d) 423-include $(C_JET_OBJS:%.$(O)=%.d) 424-include $(C_TESTLIB_OBJS:%.$(O)=%.d) 425-include $(TESTS_OBJS:%.$(O)=%.d) 426-include $(TESTS_CPP_OBJS:%.$(O)=%.d) 427endif 428 429$(C_SYM_OBJS): $(objroot)src/%.sym.$(O): $(srcroot)src/%.c 430$(C_SYM_OBJS): CPPFLAGS += -DJEMALLOC_NO_PRIVATE_NAMESPACE 431$(C_SYMS): $(objroot)src/%.sym: $(objroot)src/%.sym.$(O) 432$(C_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.c 433$(CPP_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.cpp 434$(C_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.c 435$(C_PIC_OBJS): CFLAGS += $(PIC_CFLAGS) 436$(CPP_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.cpp 437$(CPP_PIC_OBJS): CXXFLAGS += $(PIC_CFLAGS) 438$(C_JET_SYM_OBJS): $(objroot)src/%.jet.sym.$(O): $(srcroot)src/%.c 439$(C_JET_SYM_OBJS): CPPFLAGS += -DJEMALLOC_JET -DJEMALLOC_NO_PRIVATE_NAMESPACE 440$(C_JET_SYMS): $(objroot)src/%.jet.sym: $(objroot)src/%.jet.sym.$(O) 441$(C_JET_OBJS): $(objroot)src/%.jet.$(O): $(srcroot)src/%.c 442$(C_JET_OBJS): CPPFLAGS += -DJEMALLOC_JET 443$(C_TESTLIB_UNIT_OBJS): $(objroot)test/src/%.unit.$(O): $(srcroot)test/src/%.c 444$(C_TESTLIB_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST 445$(C_TESTLIB_INTEGRATION_OBJS): $(objroot)test/src/%.integration.$(O): $(srcroot)test/src/%.c 446$(C_TESTLIB_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST 447$(C_UTIL_INTEGRATION_OBJS): $(objroot)src/%.integration.$(O): $(srcroot)src/%.c 448$(C_TESTLIB_ANALYZE_OBJS): $(objroot)test/src/%.analyze.$(O): $(srcroot)test/src/%.c 449$(C_TESTLIB_ANALYZE_OBJS): CPPFLAGS += -DJEMALLOC_ANALYZE_TEST 450$(C_TESTLIB_STRESS_OBJS): $(objroot)test/src/%.stress.$(O): $(srcroot)test/src/%.c 451$(C_TESTLIB_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST -DJEMALLOC_STRESS_TESTLIB 452$(C_TESTLIB_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 453$(TESTS_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST 454$(TESTS_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST 455$(TESTS_INTEGRATION_CPP_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_CPP_TEST 456$(TESTS_ANALYZE_OBJS): CPPFLAGS += -DJEMALLOC_ANALYZE_TEST 457$(TESTS_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST 458$(TESTS_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.c 459$(TESTS_CPP_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.cpp 460$(TESTS_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 461$(TESTS_CPP_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 462ifneq ($(IMPORTLIB),$(SO)) 463$(CPP_OBJS) $(C_SYM_OBJS) $(C_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS): CPPFLAGS += -DDLLEXPORT 464endif 465 466# Dependencies. 467ifndef CC_MM 468HEADER_DIRS = $(srcroot)include/jemalloc/internal \ 469 $(objroot)include/jemalloc $(objroot)include/jemalloc/internal 470HEADERS = $(filter-out $(PRIVATE_NAMESPACE_HDRS),$(wildcard $(foreach dir,$(HEADER_DIRS),$(dir)/*.h))) 471$(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) 472$(TESTS_OBJS) $(TESTS_CPP_OBJS): $(objroot)test/include/test/jemalloc_test.h 473endif 474 475$(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 476$(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 477 478$(C_SYM_OBJS) $(C_OBJS) $(C_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): %.$(O): 479 @mkdir -p $(@D) 480 $(CC) $(CFLAGS) -c $(CPPFLAGS) $(CTARGET) $< 481ifdef CC_MM 482 @$(CC) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $< 483endif 484 485$(C_SYMS): %.sym: 486 @mkdir -p $(@D) 487 $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols.awk > $@ 488 489$(C_JET_SYMS): %.sym: 490 @mkdir -p $(@D) 491 $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols_jet.awk > $@ 492 493$(objroot)include/jemalloc/internal/private_namespace.gen.h: $(C_SYMS) 494 $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@ 495 496$(objroot)include/jemalloc/internal/private_namespace_jet.gen.h: $(C_JET_SYMS) 497 $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@ 498 499%.h: %.gen.h 500 @if ! `cmp -s $< $@` ; then echo "cp $< $@"; cp $< $@ ; fi 501 502$(CPP_OBJS) $(CPP_PIC_OBJS) $(TESTS_CPP_OBJS): %.$(O): 503 @mkdir -p $(@D) 504 $(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $(CTARGET) $< 505ifdef CC_MM 506 @$(CXX) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $< 507endif 508 509ifneq ($(SOREV),$(SO)) 510%.$(SO) : %.$(SOREV) 511 @mkdir -p $(@D) 512 ln -sf $(<F) $@ 513endif 514 515$(objroot)lib/$(LIBJEMALLOC).$(SOREV) : $(if $(PIC_CFLAGS),$(C_PIC_OBJS),$(C_OBJS)) $(if $(PIC_CFLAGS),$(CPP_PIC_OBJS),$(CPP_OBJS)) 516 @mkdir -p $(@D) 517 $(CC) $(DSO_LDFLAGS) $(call RPATH,$(RPATH_EXTRA)) $(LDTARGET) $+ $(LDFLAGS) $(LIBS) $(EXTRA_LDFLAGS) 518 519$(objroot)lib/$(LIBJEMALLOC)_pic.$(A) : $(C_PIC_OBJS) $(CPP_PIC_OBJS) 520$(objroot)lib/$(LIBJEMALLOC).$(A) : $(C_OBJS) $(CPP_OBJS) 521$(objroot)lib/$(LIBJEMALLOC)_s.$(A) : $(C_OBJS) $(CPP_OBJS) 522 523$(STATIC_LIBS): 524 @mkdir -p $(@D) 525 $(AR) $(ARFLAGS)@AROUT@ $+ 526 527$(objroot)test/unit/%$(EXE): $(objroot)test/unit/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS) 528 @mkdir -p $(@D) 529 $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 530 531$(objroot)test/integration/%$(EXE): $(objroot)test/integration/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 532 @mkdir -p $(@D) 533 $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LJEMALLOC) $(LDFLAGS) $(filter-out -lm,$(filter -lrt -pthread -lstdc++,$(LIBS))) $(LM) $(EXTRA_LDFLAGS) 534 535$(objroot)test/integration/cpp/%$(EXE): $(objroot)test/integration/cpp/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 536 @mkdir -p $(@D) 537 $(CXX) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) -lm $(EXTRA_LDFLAGS) 538 539$(objroot)test/analyze/%$(EXE): $(objroot)test/analyze/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_ANALYZE_OBJS) 540 @mkdir -p $(@D) 541 $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 542 543$(objroot)test/stress/%$(EXE): $(objroot)test/stress/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_STRESS_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 544 @mkdir -p $(@D) 545 $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 546 547build_lib_shared: $(DSOS) 548build_lib_static: $(STATIC_LIBS) 549ifeq ($(enable_shared), 1) 550build_lib: build_lib_shared 551endif 552ifeq ($(enable_static), 1) 553build_lib: build_lib_static 554endif 555 556install_bin: 557 $(INSTALL) -d $(BINDIR) 558 @for b in $(BINS); do \ 559 $(INSTALL) -v -m 755 $$b $(BINDIR); \ 560done 561 562install_include: 563 $(INSTALL) -d $(INCLUDEDIR)/jemalloc 564 @for h in $(C_HDRS); do \ 565 $(INSTALL) -v -m 644 $$h $(INCLUDEDIR)/jemalloc; \ 566done 567 568install_lib_shared: $(DSOS) 569 $(INSTALL) -d $(LIBDIR) 570 $(INSTALL) -v -m 755 $(objroot)lib/$(LIBJEMALLOC).$(SOREV) $(LIBDIR) 571ifneq ($(SOREV),$(SO)) 572 ln -sf $(LIBJEMALLOC).$(SOREV) $(LIBDIR)/$(LIBJEMALLOC).$(SO) 573endif 574 575install_lib_static: $(STATIC_LIBS) 576 $(INSTALL) -d $(LIBDIR) 577 @for l in $(STATIC_LIBS); do \ 578 $(INSTALL) -v -m 755 $$l $(LIBDIR); \ 579done 580 581install_lib_pc: $(PC) 582 $(INSTALL) -d $(LIBDIR)/pkgconfig 583 @for l in $(PC); do \ 584 $(INSTALL) -v -m 644 $$l $(LIBDIR)/pkgconfig; \ 585done 586 587ifeq ($(enable_shared), 1) 588install_lib: install_lib_shared 589endif 590ifeq ($(enable_static), 1) 591install_lib: install_lib_static 592endif 593install_lib: install_lib_pc 594 595install_doc_html: build_doc_html 596 $(INSTALL) -d $(DATADIR)/doc/jemalloc$(install_suffix) 597 @for d in $(DOCS_HTML); do \ 598 $(INSTALL) -v -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix); \ 599done 600 601install_doc_man: build_doc_man 602 $(INSTALL) -d $(MANDIR)/man3 603 @for d in $(DOCS_MAN3); do \ 604 $(INSTALL) -v -m 644 $$d $(MANDIR)/man3; \ 605done 606 607install_doc: install_doc_html install_doc_man 608 609install: install_bin install_include install_lib 610 611ifeq ($(enable_doc), 1) 612install: install_doc 613endif 614 615uninstall_bin: 616 $(RM) -v $(foreach b,$(notdir $(BINS)),$(BINDIR)/$(b)) 617 618uninstall_include: 619 $(RM) -v $(foreach h,$(notdir $(C_HDRS)),$(INCLUDEDIR)/jemalloc/$(h)) 620 rmdir -v $(INCLUDEDIR)/jemalloc 621 622uninstall_lib_shared: 623 $(RM) -v $(LIBDIR)/$(LIBJEMALLOC).$(SOREV) 624ifneq ($(SOREV),$(SO)) 625 $(RM) -v $(LIBDIR)/$(LIBJEMALLOC).$(SO) 626endif 627 628uninstall_lib_static: 629 $(RM) -v $(foreach l,$(notdir $(STATIC_LIBS)),$(LIBDIR)/$(l)) 630 631uninstall_lib_pc: 632 $(RM) -v $(foreach p,$(notdir $(PC)),$(LIBDIR)/pkgconfig/$(p)) 633 634ifeq ($(enable_shared), 1) 635uninstall_lib: uninstall_lib_shared 636endif 637ifeq ($(enable_static), 1) 638uninstall_lib: uninstall_lib_static 639endif 640uninstall_lib: uninstall_lib_pc 641 642uninstall_doc_html: 643 $(RM) -v $(foreach d,$(notdir $(DOCS_HTML)),$(DATADIR)/doc/jemalloc$(install_suffix)/$(d)) 644 rmdir -v $(DATADIR)/doc/jemalloc$(install_suffix) 645 646uninstall_doc_man: 647 $(RM) -v $(foreach d,$(notdir $(DOCS_MAN3)),$(MANDIR)/man3/$(d)) 648 649uninstall_doc: uninstall_doc_html uninstall_doc_man 650 651uninstall: uninstall_bin uninstall_include uninstall_lib 652 653ifeq ($(enable_doc), 1) 654uninstall: uninstall_doc 655endif 656 657tests_unit: $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%$(EXE)) 658tests_integration: $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%$(EXE)) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%$(EXE)) 659tests_analyze: $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%$(EXE)) 660tests_stress: $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%$(EXE)) 661tests: tests_unit tests_integration tests_analyze tests_stress 662 663check_unit_dir: 664 @mkdir -p $(objroot)test/unit 665check_integration_dir: 666 @mkdir -p $(objroot)test/integration 667analyze_dir: 668 @mkdir -p $(objroot)test/analyze 669stress_dir: 670 @mkdir -p $(objroot)test/stress 671check_dir: check_unit_dir check_integration_dir 672 673check_unit: tests_unit check_unit_dir 674 $(SHELL) $(objroot)test/test.sh $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%) 675check_integration_prof: tests_integration check_integration_dir 676ifeq ($(enable_prof), 1) 677 $(MALLOC_CONF)="prof:true" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 678 $(MALLOC_CONF)="prof:true,prof_active:false" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 679endif 680check_integration_decay: tests_integration check_integration_dir 681 $(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)%) 682 $(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)%) 683check_integration: tests_integration check_integration_dir 684 $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 685analyze: tests_analyze analyze_dir 686ifeq ($(enable_prof), 1) 687 $(MALLOC_CONF)="prof:true" $(SHELL) $(objroot)test/test.sh $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%) 688else 689 $(SHELL) $(objroot)test/test.sh $(TESTS_ANALYZE:$(srcroot)%.c=$(objroot)%) 690endif 691stress: tests_stress stress_dir 692 $(SHELL) $(objroot)test/test.sh $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%) 693check: check_unit check_integration check_integration_decay check_integration_prof 694 695clean: 696 rm -f $(PRIVATE_NAMESPACE_HDRS) 697 rm -f $(PRIVATE_NAMESPACE_GEN_HDRS) 698 rm -f $(C_SYM_OBJS) 699 rm -f $(C_SYMS) 700 rm -f $(C_OBJS) 701 rm -f $(CPP_OBJS) 702 rm -f $(C_PIC_OBJS) 703 rm -f $(CPP_PIC_OBJS) 704 rm -f $(C_JET_SYM_OBJS) 705 rm -f $(C_JET_SYMS) 706 rm -f $(C_JET_OBJS) 707 rm -f $(C_TESTLIB_OBJS) 708 rm -f $(C_SYM_OBJS:%.$(O)=%.d) 709 rm -f $(C_OBJS:%.$(O)=%.d) 710 rm -f $(CPP_OBJS:%.$(O)=%.d) 711 rm -f $(C_PIC_OBJS:%.$(O)=%.d) 712 rm -f $(CPP_PIC_OBJS:%.$(O)=%.d) 713 rm -f $(C_JET_SYM_OBJS:%.$(O)=%.d) 714 rm -f $(C_JET_OBJS:%.$(O)=%.d) 715 rm -f $(C_TESTLIB_OBJS:%.$(O)=%.d) 716 rm -f $(TESTS_OBJS:%.$(O)=%$(EXE)) 717 rm -f $(TESTS_OBJS) 718 rm -f $(TESTS_OBJS:%.$(O)=%.d) 719 rm -f $(TESTS_OBJS:%.$(O)=%.out) 720 rm -f $(TESTS_CPP_OBJS:%.$(O)=%$(EXE)) 721 rm -f $(TESTS_CPP_OBJS) 722 rm -f $(TESTS_CPP_OBJS:%.$(O)=%.d) 723 rm -f $(TESTS_CPP_OBJS:%.$(O)=%.out) 724 rm -f $(DSOS) $(STATIC_LIBS) 725 726distclean: clean 727 rm -f $(objroot)bin/jemalloc-config 728 rm -f $(objroot)bin/jemalloc.sh 729 rm -f $(objroot)bin/jeprof 730 rm -f $(objroot)config.log 731 rm -f $(objroot)config.status 732 rm -f $(objroot)config.stamp 733 rm -f $(cfghdrs_out) 734 rm -f $(cfgoutputs_out) 735 736relclean: distclean 737 rm -f $(objroot)configure 738 rm -f $(objroot)VERSION 739 rm -f $(DOCS_HTML) 740 rm -f $(DOCS_MAN3) 741 742#=============================================================================== 743# Re-configuration rules. 744 745ifeq ($(enable_autogen), 1) 746$(srcroot)configure : $(srcroot)configure.ac 747 cd ./$(srcroot) && $(AUTOCONF) 748 749$(objroot)config.status : $(srcroot)configure 750 ./$(objroot)config.status --recheck 751 752$(srcroot)config.stamp.in : $(srcroot)configure.ac 753 echo stamp > $(srcroot)config.stamp.in 754 755$(objroot)config.stamp : $(cfgoutputs_in) $(cfghdrs_in) $(srcroot)configure 756 ./$(objroot)config.status 757 @touch $@ 758 759# There must be some action in order for make to re-read Makefile when it is 760# out of date. 761$(cfgoutputs_out) $(cfghdrs_out) : $(objroot)config.stamp 762 @true 763endif 764||||||| dec341af7695 765======= 766# Clear out all vpaths, then set just one (default vpath) for the main build 767# directory. 768vpath 769vpath % . 770 771# Clear the default suffixes, so that built-in rules are not used. 772.SUFFIXES : 773 774SHELL := /bin/sh 775 776CC := @CC@ 777CXX := @CXX@ 778 779# Configuration parameters. 780DESTDIR = 781BINDIR := $(DESTDIR)@BINDIR@ 782INCLUDEDIR := $(DESTDIR)@INCLUDEDIR@ 783LIBDIR := $(DESTDIR)@LIBDIR@ 784DATADIR := $(DESTDIR)@DATADIR@ 785MANDIR := $(DESTDIR)@MANDIR@ 786srcroot := @srcroot@ 787objroot := @objroot@ 788abs_srcroot := @abs_srcroot@ 789abs_objroot := @abs_objroot@ 790 791# Build parameters. 792CPPFLAGS := @CPPFLAGS@ -I$(objroot)include -I$(srcroot)include 793CONFIGURE_CFLAGS := @CONFIGURE_CFLAGS@ 794SPECIFIED_CFLAGS := @SPECIFIED_CFLAGS@ 795EXTRA_CFLAGS := @EXTRA_CFLAGS@ 796CFLAGS := $(strip $(CONFIGURE_CFLAGS) $(SPECIFIED_CFLAGS) $(EXTRA_CFLAGS)) 797CONFIGURE_CXXFLAGS := @CONFIGURE_CXXFLAGS@ 798SPECIFIED_CXXFLAGS := @SPECIFIED_CXXFLAGS@ 799EXTRA_CXXFLAGS := @EXTRA_CXXFLAGS@ 800CXXFLAGS := $(strip $(CONFIGURE_CXXFLAGS) $(SPECIFIED_CXXFLAGS) $(EXTRA_CXXFLAGS)) 801LDFLAGS := @LDFLAGS@ 802EXTRA_LDFLAGS := @EXTRA_LDFLAGS@ 803LIBS := @LIBS@ 804RPATH_EXTRA := @RPATH_EXTRA@ 805SO := @so@ 806IMPORTLIB := @importlib@ 807O := @o@ 808A := @a@ 809EXE := @exe@ 810LIBPREFIX := @libprefix@ 811REV := @rev@ 812install_suffix := @install_suffix@ 813ABI := @abi@ 814XSLTPROC := @XSLTPROC@ 815XSLROOT := @XSLROOT@ 816AUTOCONF := @AUTOCONF@ 817_RPATH = @RPATH@ 818RPATH = $(if $(1),$(call _RPATH,$(1))) 819cfghdrs_in := $(addprefix $(srcroot),@cfghdrs_in@) 820cfghdrs_out := @cfghdrs_out@ 821cfgoutputs_in := $(addprefix $(srcroot),@cfgoutputs_in@) 822cfgoutputs_out := @cfgoutputs_out@ 823enable_autogen := @enable_autogen@ 824enable_doc := @enable_doc@ 825enable_shared := @enable_shared@ 826enable_static := @enable_static@ 827enable_prof := @enable_prof@ 828enable_zone_allocator := @enable_zone_allocator@ 829enable_experimental_smallocx := @enable_experimental_smallocx@ 830MALLOC_CONF := @JEMALLOC_CPREFIX@MALLOC_CONF 831link_whole_archive := @link_whole_archive@ 832DSO_LDFLAGS = @DSO_LDFLAGS@ 833SOREV = @SOREV@ 834PIC_CFLAGS = @PIC_CFLAGS@ 835CTARGET = @CTARGET@ 836LDTARGET = @LDTARGET@ 837TEST_LD_MODE = @TEST_LD_MODE@ 838MKLIB = @MKLIB@ 839AR = @AR@ 840ARFLAGS = @ARFLAGS@ 841DUMP_SYMS = @DUMP_SYMS@ 842AWK := @AWK@ 843CC_MM = @CC_MM@ 844LM := @LM@ 845INSTALL = @INSTALL@ 846 847ifeq (macho, $(ABI)) 848TEST_LIBRARY_PATH := DYLD_FALLBACK_LIBRARY_PATH="$(objroot)lib" 849else 850ifeq (pecoff, $(ABI)) 851TEST_LIBRARY_PATH := PATH="$(PATH):$(objroot)lib" 852else 853TEST_LIBRARY_PATH := 854endif 855endif 856 857LIBJEMALLOC := $(LIBPREFIX)jemalloc$(install_suffix) 858 859# Lists of files. 860BINS := $(objroot)bin/jemalloc-config $(objroot)bin/jemalloc.sh $(objroot)bin/jeprof 861C_HDRS := $(objroot)include/jemalloc/jemalloc$(install_suffix).h 862C_SRCS := $(srcroot)src/jemalloc.c \ 863 $(srcroot)src/arena.c \ 864 $(srcroot)src/background_thread.c \ 865 $(srcroot)src/base.c \ 866 $(srcroot)src/bin.c \ 867 $(srcroot)src/bitmap.c \ 868 $(srcroot)src/ckh.c \ 869 $(srcroot)src/ctl.c \ 870 $(srcroot)src/div.c \ 871 $(srcroot)src/extent.c \ 872 $(srcroot)src/extent_dss.c \ 873 $(srcroot)src/extent_mmap.c \ 874 $(srcroot)src/hash.c \ 875 $(srcroot)src/hook.c \ 876 $(srcroot)src/large.c \ 877 $(srcroot)src/log.c \ 878 $(srcroot)src/malloc_io.c \ 879 $(srcroot)src/mutex.c \ 880 $(srcroot)src/mutex_pool.c \ 881 $(srcroot)src/nstime.c \ 882 $(srcroot)src/pages.c \ 883 $(srcroot)src/prng.c \ 884 $(srcroot)src/prof.c \ 885 $(srcroot)src/rtree.c \ 886 $(srcroot)src/safety_check.c \ 887 $(srcroot)src/stats.c \ 888 $(srcroot)src/sc.c \ 889 $(srcroot)src/sz.c \ 890 $(srcroot)src/tcache.c \ 891 $(srcroot)src/test_hooks.c \ 892 $(srcroot)src/ticker.c \ 893 $(srcroot)src/tsd.c \ 894 $(srcroot)src/witness.c 895ifeq ($(enable_zone_allocator), 1) 896C_SRCS += $(srcroot)src/zone.c 897endif 898ifeq ($(IMPORTLIB),$(SO)) 899STATIC_LIBS := $(objroot)lib/$(LIBJEMALLOC).$(A) 900endif 901ifdef PIC_CFLAGS 902STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_pic.$(A) 903else 904STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_s.$(A) 905endif 906DSOS := $(objroot)lib/$(LIBJEMALLOC).$(SOREV) 907ifneq ($(SOREV),$(SO)) 908DSOS += $(objroot)lib/$(LIBJEMALLOC).$(SO) 909endif 910ifeq (1, $(link_whole_archive)) 911LJEMALLOC := -Wl,--whole-archive -L$(objroot)lib -l$(LIBJEMALLOC) -Wl,--no-whole-archive 912else 913LJEMALLOC := $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 914endif 915PC := $(objroot)jemalloc.pc 916MAN3 := $(objroot)doc/jemalloc$(install_suffix).3 917DOCS_XML := $(objroot)doc/jemalloc$(install_suffix).xml 918DOCS_HTML := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.html) 919DOCS_MAN3 := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.3) 920DOCS := $(DOCS_HTML) $(DOCS_MAN3) 921C_TESTLIB_SRCS := $(srcroot)test/src/btalloc.c $(srcroot)test/src/btalloc_0.c \ 922 $(srcroot)test/src/btalloc_1.c $(srcroot)test/src/math.c \ 923 $(srcroot)test/src/mtx.c $(srcroot)test/src/mq.c \ 924 $(srcroot)test/src/SFMT.c $(srcroot)test/src/test.c \ 925 $(srcroot)test/src/thd.c $(srcroot)test/src/timer.c 926ifeq (1, $(link_whole_archive)) 927C_UTIL_INTEGRATION_SRCS := 928C_UTIL_CPP_SRCS := 929else 930C_UTIL_INTEGRATION_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c 931C_UTIL_CPP_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c 932endif 933TESTS_UNIT := \ 934 $(srcroot)test/unit/a0.c \ 935 $(srcroot)test/unit/arena_reset.c \ 936 $(srcroot)test/unit/atomic.c \ 937 $(srcroot)test/unit/background_thread.c \ 938 $(srcroot)test/unit/background_thread_enable.c \ 939 $(srcroot)test/unit/base.c \ 940 $(srcroot)test/unit/bitmap.c \ 941 $(srcroot)test/unit/bit_util.c \ 942 $(srcroot)test/unit/binshard.c \ 943 $(srcroot)test/unit/ckh.c \ 944 $(srcroot)test/unit/decay.c \ 945 $(srcroot)test/unit/div.c \ 946 $(srcroot)test/unit/emitter.c \ 947 $(srcroot)test/unit/extent_quantize.c \ 948 $(srcroot)test/unit/extent_util.c \ 949 $(srcroot)test/unit/fork.c \ 950 $(srcroot)test/unit/hash.c \ 951 $(srcroot)test/unit/hook.c \ 952 $(srcroot)test/unit/huge.c \ 953 $(srcroot)test/unit/junk.c \ 954 $(srcroot)test/unit/junk_alloc.c \ 955 $(srcroot)test/unit/junk_free.c \ 956 $(srcroot)test/unit/log.c \ 957 $(srcroot)test/unit/mallctl.c \ 958 $(srcroot)test/unit/malloc_io.c \ 959 $(srcroot)test/unit/math.c \ 960 $(srcroot)test/unit/mq.c \ 961 $(srcroot)test/unit/mtx.c \ 962 $(srcroot)test/unit/pack.c \ 963 $(srcroot)test/unit/pages.c \ 964 $(srcroot)test/unit/ph.c \ 965 $(srcroot)test/unit/prng.c \ 966 $(srcroot)test/unit/prof_accum.c \ 967 $(srcroot)test/unit/prof_active.c \ 968 $(srcroot)test/unit/prof_gdump.c \ 969 $(srcroot)test/unit/prof_idump.c \ 970 $(srcroot)test/unit/prof_log.c \ 971 $(srcroot)test/unit/prof_reset.c \ 972 $(srcroot)test/unit/prof_tctx.c \ 973 $(srcroot)test/unit/prof_thread_name.c \ 974 $(srcroot)test/unit/ql.c \ 975 $(srcroot)test/unit/qr.c \ 976 $(srcroot)test/unit/rb.c \ 977 $(srcroot)test/unit/retained.c \ 978 $(srcroot)test/unit/rtree.c \ 979 $(srcroot)test/unit/safety_check.c \ 980 $(srcroot)test/unit/seq.c \ 981 $(srcroot)test/unit/SFMT.c \ 982 $(srcroot)test/unit/sc.c \ 983 $(srcroot)test/unit/size_classes.c \ 984 $(srcroot)test/unit/slab.c \ 985 $(srcroot)test/unit/smoothstep.c \ 986 $(srcroot)test/unit/spin.c \ 987 $(srcroot)test/unit/stats.c \ 988 $(srcroot)test/unit/stats_print.c \ 989 $(srcroot)test/unit/test_hooks.c \ 990 $(srcroot)test/unit/ticker.c \ 991 $(srcroot)test/unit/nstime.c \ 992 $(srcroot)test/unit/tsd.c \ 993 $(srcroot)test/unit/witness.c \ 994 $(srcroot)test/unit/zero.c 995ifeq (@enable_prof@, 1) 996TESTS_UNIT += \ 997 $(srcroot)test/unit/arena_reset_prof.c 998endif 999TESTS_INTEGRATION := $(srcroot)test/integration/aligned_alloc.c \ 1000 $(srcroot)test/integration/allocated.c \ 1001 $(srcroot)test/integration/extent.c \ 1002 $(srcroot)test/integration/malloc.c \ 1003 $(srcroot)test/integration/mallocx.c \ 1004 $(srcroot)test/integration/MALLOCX_ARENA.c \ 1005 $(srcroot)test/integration/overflow.c \ 1006 $(srcroot)test/integration/posix_memalign.c \ 1007 $(srcroot)test/integration/rallocx.c \ 1008 $(srcroot)test/integration/sdallocx.c \ 1009 $(srcroot)test/integration/slab_sizes.c \ 1010 $(srcroot)test/integration/thread_arena.c \ 1011 $(srcroot)test/integration/thread_tcache_enabled.c \ 1012 $(srcroot)test/integration/xallocx.c 1013ifeq (@enable_experimental_smallocx@, 1) 1014TESTS_INTEGRATION += \ 1015 $(srcroot)test/integration/smallocx.c 1016endif 1017ifeq (@enable_cxx@, 1) 1018CPP_SRCS := $(srcroot)src/jemalloc_cpp.cpp 1019TESTS_INTEGRATION_CPP := $(srcroot)test/integration/cpp/basic.cpp 1020else 1021CPP_SRCS := 1022TESTS_INTEGRATION_CPP := 1023endif 1024TESTS_STRESS := $(srcroot)test/stress/microbench.c \ 1025 $(srcroot)test/stress/hookbench.c 1026 1027 1028TESTS := $(TESTS_UNIT) $(TESTS_INTEGRATION) $(TESTS_INTEGRATION_CPP) $(TESTS_STRESS) 1029 1030PRIVATE_NAMESPACE_HDRS := $(objroot)include/jemalloc/internal/private_namespace.h $(objroot)include/jemalloc/internal/private_namespace_jet.h 1031PRIVATE_NAMESPACE_GEN_HDRS := $(PRIVATE_NAMESPACE_HDRS:%.h=%.gen.h) 1032C_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym.$(O)) 1033C_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym) 1034C_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.$(O)) 1035CPP_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.$(O)) 1036C_PIC_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.pic.$(O)) 1037CPP_PIC_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.pic.$(O)) 1038C_JET_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym.$(O)) 1039C_JET_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym) 1040C_JET_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.$(O)) 1041C_TESTLIB_UNIT_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.unit.$(O)) 1042C_TESTLIB_INTEGRATION_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O)) 1043C_UTIL_INTEGRATION_OBJS := $(C_UTIL_INTEGRATION_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O)) 1044C_TESTLIB_STRESS_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.stress.$(O)) 1045C_TESTLIB_OBJS := $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(C_TESTLIB_STRESS_OBJS) 1046 1047TESTS_UNIT_OBJS := $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%.$(O)) 1048TESTS_INTEGRATION_OBJS := $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%.$(O)) 1049TESTS_INTEGRATION_CPP_OBJS := $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%.$(O)) 1050TESTS_STRESS_OBJS := $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%.$(O)) 1051TESTS_OBJS := $(TESTS_UNIT_OBJS) $(TESTS_INTEGRATION_OBJS) $(TESTS_STRESS_OBJS) 1052TESTS_CPP_OBJS := $(TESTS_INTEGRATION_CPP_OBJS) 1053 1054.PHONY: all dist build_doc_html build_doc_man build_doc 1055.PHONY: install_bin install_include install_lib 1056.PHONY: install_doc_html install_doc_man install_doc install 1057.PHONY: tests check clean distclean relclean 1058 1059.SECONDARY : $(PRIVATE_NAMESPACE_GEN_HDRS) $(TESTS_OBJS) $(TESTS_CPP_OBJS) 1060 1061# Default target. 1062all: build_lib 1063 1064dist: build_doc 1065 1066$(objroot)doc/%.html : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/html.xsl 1067ifneq ($(XSLROOT),) 1068 $(XSLTPROC) -o $@ $(objroot)doc/html.xsl $< 1069else 1070ifeq ($(wildcard $(DOCS_HTML)),) 1071 @echo "<p>Missing xsltproc. Doc not built.</p>" > $@ 1072endif 1073 @echo "Missing xsltproc. "$@" not (re)built." 1074endif 1075 1076$(objroot)doc/%.3 : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/manpages.xsl 1077ifneq ($(XSLROOT),) 1078 $(XSLTPROC) -o $@ $(objroot)doc/manpages.xsl $< 1079else 1080ifeq ($(wildcard $(DOCS_MAN3)),) 1081 @echo "Missing xsltproc. Doc not built." > $@ 1082endif 1083 @echo "Missing xsltproc. "$@" not (re)built." 1084endif 1085 1086build_doc_html: $(DOCS_HTML) 1087build_doc_man: $(DOCS_MAN3) 1088build_doc: $(DOCS) 1089 1090# 1091# Include generated dependency files. 1092# 1093ifdef CC_MM 1094-include $(C_SYM_OBJS:%.$(O)=%.d) 1095-include $(C_OBJS:%.$(O)=%.d) 1096-include $(CPP_OBJS:%.$(O)=%.d) 1097-include $(C_PIC_OBJS:%.$(O)=%.d) 1098-include $(CPP_PIC_OBJS:%.$(O)=%.d) 1099-include $(C_JET_SYM_OBJS:%.$(O)=%.d) 1100-include $(C_JET_OBJS:%.$(O)=%.d) 1101-include $(C_TESTLIB_OBJS:%.$(O)=%.d) 1102-include $(TESTS_OBJS:%.$(O)=%.d) 1103-include $(TESTS_CPP_OBJS:%.$(O)=%.d) 1104endif 1105 1106$(C_SYM_OBJS): $(objroot)src/%.sym.$(O): $(srcroot)src/%.c 1107$(C_SYM_OBJS): CPPFLAGS += -DJEMALLOC_NO_PRIVATE_NAMESPACE 1108$(C_SYMS): $(objroot)src/%.sym: $(objroot)src/%.sym.$(O) 1109$(C_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.c 1110$(CPP_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.cpp 1111$(C_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.c 1112$(C_PIC_OBJS): CFLAGS += $(PIC_CFLAGS) 1113$(CPP_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.cpp 1114$(CPP_PIC_OBJS): CXXFLAGS += $(PIC_CFLAGS) 1115$(C_JET_SYM_OBJS): $(objroot)src/%.jet.sym.$(O): $(srcroot)src/%.c 1116$(C_JET_SYM_OBJS): CPPFLAGS += -DJEMALLOC_JET -DJEMALLOC_NO_PRIVATE_NAMESPACE 1117$(C_JET_SYMS): $(objroot)src/%.jet.sym: $(objroot)src/%.jet.sym.$(O) 1118$(C_JET_OBJS): $(objroot)src/%.jet.$(O): $(srcroot)src/%.c 1119$(C_JET_OBJS): CPPFLAGS += -DJEMALLOC_JET 1120$(C_TESTLIB_UNIT_OBJS): $(objroot)test/src/%.unit.$(O): $(srcroot)test/src/%.c 1121$(C_TESTLIB_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST 1122$(C_TESTLIB_INTEGRATION_OBJS): $(objroot)test/src/%.integration.$(O): $(srcroot)test/src/%.c 1123$(C_TESTLIB_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST 1124$(C_UTIL_INTEGRATION_OBJS): $(objroot)src/%.integration.$(O): $(srcroot)src/%.c 1125$(C_TESTLIB_STRESS_OBJS): $(objroot)test/src/%.stress.$(O): $(srcroot)test/src/%.c 1126$(C_TESTLIB_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST -DJEMALLOC_STRESS_TESTLIB 1127$(C_TESTLIB_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 1128$(TESTS_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST 1129$(TESTS_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST 1130$(TESTS_INTEGRATION_CPP_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_CPP_TEST 1131$(TESTS_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST 1132$(TESTS_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.c 1133$(TESTS_CPP_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.cpp 1134$(TESTS_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 1135$(TESTS_CPP_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 1136ifneq ($(IMPORTLIB),$(SO)) 1137$(CPP_OBJS) $(C_SYM_OBJS) $(C_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS): CPPFLAGS += -DDLLEXPORT 1138endif 1139 1140# Dependencies. 1141ifndef CC_MM 1142HEADER_DIRS = $(srcroot)include/jemalloc/internal \ 1143 $(objroot)include/jemalloc $(objroot)include/jemalloc/internal 1144HEADERS = $(filter-out $(PRIVATE_NAMESPACE_HDRS),$(wildcard $(foreach dir,$(HEADER_DIRS),$(dir)/*.h))) 1145$(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) 1146$(TESTS_OBJS) $(TESTS_CPP_OBJS): $(objroot)test/include/test/jemalloc_test.h 1147endif 1148 1149$(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 1150$(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_STRESS_OBJS) $(TESTS_UNIT_OBJS) $(TESTS_STRESS_OBJS): $(objroot)include/jemalloc/internal/private_namespace_jet.h 1151 1152$(C_SYM_OBJS) $(C_OBJS) $(C_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): %.$(O): 1153 @mkdir -p $(@D) 1154 $(CC) $(CFLAGS) -c $(CPPFLAGS) $(CTARGET) $< 1155ifdef CC_MM 1156 @$(CC) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $< 1157endif 1158 1159$(C_SYMS): %.sym: 1160 @mkdir -p $(@D) 1161 $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols.awk > $@ 1162 1163$(C_JET_SYMS): %.sym: 1164 @mkdir -p $(@D) 1165 $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols_jet.awk > $@ 1166 1167$(objroot)include/jemalloc/internal/private_namespace.gen.h: $(C_SYMS) 1168 $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@ 1169 1170$(objroot)include/jemalloc/internal/private_namespace_jet.gen.h: $(C_JET_SYMS) 1171 $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@ 1172 1173%.h: %.gen.h 1174 @if ! `cmp -s $< $@` ; then echo "cp $< $<"; cp $< $@ ; fi 1175 1176$(CPP_OBJS) $(CPP_PIC_OBJS) $(TESTS_CPP_OBJS): %.$(O): 1177 @mkdir -p $(@D) 1178 $(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $(CTARGET) $< 1179ifdef CC_MM 1180 @$(CXX) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $< 1181endif 1182 1183ifneq ($(SOREV),$(SO)) 1184%.$(SO) : %.$(SOREV) 1185 @mkdir -p $(@D) 1186 ln -sf $(<F) $@ 1187endif 1188 1189$(objroot)lib/$(LIBJEMALLOC).$(SOREV) : $(if $(PIC_CFLAGS),$(C_PIC_OBJS),$(C_OBJS)) $(if $(PIC_CFLAGS),$(CPP_PIC_OBJS),$(CPP_OBJS)) 1190 @mkdir -p $(@D) 1191 $(CC) $(DSO_LDFLAGS) $(call RPATH,$(RPATH_EXTRA)) $(LDTARGET) $+ $(LDFLAGS) $(LIBS) $(EXTRA_LDFLAGS) 1192 1193$(objroot)lib/$(LIBJEMALLOC)_pic.$(A) : $(C_PIC_OBJS) $(CPP_PIC_OBJS) 1194$(objroot)lib/$(LIBJEMALLOC).$(A) : $(C_OBJS) $(CPP_OBJS) 1195$(objroot)lib/$(LIBJEMALLOC)_s.$(A) : $(C_OBJS) $(CPP_OBJS) 1196 1197$(STATIC_LIBS): 1198 @mkdir -p $(@D) 1199 $(AR) $(ARFLAGS)@AROUT@ $+ 1200 1201$(objroot)test/unit/%$(EXE): $(objroot)test/unit/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS) 1202 @mkdir -p $(@D) 1203 $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 1204 1205$(objroot)test/integration/%$(EXE): $(objroot)test/integration/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 1206 @mkdir -p $(@D) 1207 $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LJEMALLOC) $(LDFLAGS) $(filter-out -lm,$(filter -lrt -pthread -lstdc++,$(LIBS))) $(LM) $(EXTRA_LDFLAGS) 1208 1209$(objroot)test/integration/cpp/%$(EXE): $(objroot)test/integration/cpp/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 1210 @mkdir -p $(@D) 1211 $(CXX) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) -lm $(EXTRA_LDFLAGS) 1212 1213$(objroot)test/stress/%$(EXE): $(objroot)test/stress/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_STRESS_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 1214 @mkdir -p $(@D) 1215 $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 1216 1217build_lib_shared: $(DSOS) 1218build_lib_static: $(STATIC_LIBS) 1219ifeq ($(enable_shared), 1) 1220build_lib: build_lib_shared 1221endif 1222ifeq ($(enable_static), 1) 1223build_lib: build_lib_static 1224endif 1225 1226install_bin: 1227 $(INSTALL) -d $(BINDIR) 1228 @for b in $(BINS); do \ 1229 echo "$(INSTALL) -m 755 $$b $(BINDIR)"; \ 1230 $(INSTALL) -m 755 $$b $(BINDIR); \ 1231done 1232 1233install_include: 1234 $(INSTALL) -d $(INCLUDEDIR)/jemalloc 1235 @for h in $(C_HDRS); do \ 1236 echo "$(INSTALL) -m 644 $$h $(INCLUDEDIR)/jemalloc"; \ 1237 $(INSTALL) -m 644 $$h $(INCLUDEDIR)/jemalloc; \ 1238done 1239 1240install_lib_shared: $(DSOS) 1241 $(INSTALL) -d $(LIBDIR) 1242 $(INSTALL) -m 755 $(objroot)lib/$(LIBJEMALLOC).$(SOREV) $(LIBDIR) 1243ifneq ($(SOREV),$(SO)) 1244 ln -sf $(LIBJEMALLOC).$(SOREV) $(LIBDIR)/$(LIBJEMALLOC).$(SO) 1245endif 1246 1247install_lib_static: $(STATIC_LIBS) 1248 $(INSTALL) -d $(LIBDIR) 1249 @for l in $(STATIC_LIBS); do \ 1250 echo "$(INSTALL) -m 755 $$l $(LIBDIR)"; \ 1251 $(INSTALL) -m 755 $$l $(LIBDIR); \ 1252done 1253 1254install_lib_pc: $(PC) 1255 $(INSTALL) -d $(LIBDIR)/pkgconfig 1256 @for l in $(PC); do \ 1257 echo "$(INSTALL) -m 644 $$l $(LIBDIR)/pkgconfig"; \ 1258 $(INSTALL) -m 644 $$l $(LIBDIR)/pkgconfig; \ 1259done 1260 1261ifeq ($(enable_shared), 1) 1262install_lib: install_lib_shared 1263endif 1264ifeq ($(enable_static), 1) 1265install_lib: install_lib_static 1266endif 1267install_lib: install_lib_pc 1268 1269install_doc_html: 1270 $(INSTALL) -d $(DATADIR)/doc/jemalloc$(install_suffix) 1271 @for d in $(DOCS_HTML); do \ 1272 echo "$(INSTALL) -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix)"; \ 1273 $(INSTALL) -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix); \ 1274done 1275 1276install_doc_man: 1277 $(INSTALL) -d $(MANDIR)/man3 1278 @for d in $(DOCS_MAN3); do \ 1279 echo "$(INSTALL) -m 644 $$d $(MANDIR)/man3"; \ 1280 $(INSTALL) -m 644 $$d $(MANDIR)/man3; \ 1281done 1282 1283install_doc: build_doc install_doc_html install_doc_man 1284 1285install: install_bin install_include install_lib 1286 1287ifeq ($(enable_doc), 1) 1288install: install_doc 1289endif 1290 1291tests_unit: $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%$(EXE)) 1292tests_integration: $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%$(EXE)) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%$(EXE)) 1293tests_stress: $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%$(EXE)) 1294tests: tests_unit tests_integration tests_stress 1295 1296check_unit_dir: 1297 @mkdir -p $(objroot)test/unit 1298check_integration_dir: 1299 @mkdir -p $(objroot)test/integration 1300stress_dir: 1301 @mkdir -p $(objroot)test/stress 1302check_dir: check_unit_dir check_integration_dir 1303 1304check_unit: tests_unit check_unit_dir 1305 $(SHELL) $(objroot)test/test.sh $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%) 1306check_integration_prof: tests_integration check_integration_dir 1307ifeq ($(enable_prof), 1) 1308 $(MALLOC_CONF)="prof:true" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 1309 $(MALLOC_CONF)="prof:true,prof_active:false" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 1310endif 1311check_integration_decay: tests_integration check_integration_dir 1312 $(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)%) 1313 $(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)%) 1314check_integration: tests_integration check_integration_dir 1315 $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 1316stress: tests_stress stress_dir 1317 $(SHELL) $(objroot)test/test.sh $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%) 1318check: check_unit check_integration check_integration_decay check_integration_prof 1319 1320clean: 1321 rm -f $(PRIVATE_NAMESPACE_HDRS) 1322 rm -f $(PRIVATE_NAMESPACE_GEN_HDRS) 1323 rm -f $(C_SYM_OBJS) 1324 rm -f $(C_SYMS) 1325 rm -f $(C_OBJS) 1326 rm -f $(CPP_OBJS) 1327 rm -f $(C_PIC_OBJS) 1328 rm -f $(CPP_PIC_OBJS) 1329 rm -f $(C_JET_SYM_OBJS) 1330 rm -f $(C_JET_SYMS) 1331 rm -f $(C_JET_OBJS) 1332 rm -f $(C_TESTLIB_OBJS) 1333 rm -f $(C_SYM_OBJS:%.$(O)=%.d) 1334 rm -f $(C_OBJS:%.$(O)=%.d) 1335 rm -f $(CPP_OBJS:%.$(O)=%.d) 1336 rm -f $(C_PIC_OBJS:%.$(O)=%.d) 1337 rm -f $(CPP_PIC_OBJS:%.$(O)=%.d) 1338 rm -f $(C_JET_SYM_OBJS:%.$(O)=%.d) 1339 rm -f $(C_JET_OBJS:%.$(O)=%.d) 1340 rm -f $(C_TESTLIB_OBJS:%.$(O)=%.d) 1341 rm -f $(TESTS_OBJS:%.$(O)=%$(EXE)) 1342 rm -f $(TESTS_OBJS) 1343 rm -f $(TESTS_OBJS:%.$(O)=%.d) 1344 rm -f $(TESTS_OBJS:%.$(O)=%.out) 1345 rm -f $(TESTS_CPP_OBJS:%.$(O)=%$(EXE)) 1346 rm -f $(TESTS_CPP_OBJS) 1347 rm -f $(TESTS_CPP_OBJS:%.$(O)=%.d) 1348 rm -f $(TESTS_CPP_OBJS:%.$(O)=%.out) 1349 rm -f $(DSOS) $(STATIC_LIBS) 1350 1351distclean: clean 1352 rm -f $(objroot)bin/jemalloc-config 1353 rm -f $(objroot)bin/jemalloc.sh 1354 rm -f $(objroot)bin/jeprof 1355 rm -f $(objroot)config.log 1356 rm -f $(objroot)config.status 1357 rm -f $(objroot)config.stamp 1358 rm -f $(cfghdrs_out) 1359 rm -f $(cfgoutputs_out) 1360 1361relclean: distclean 1362 rm -f $(objroot)configure 1363 rm -f $(objroot)VERSION 1364 rm -f $(DOCS_HTML) 1365 rm -f $(DOCS_MAN3) 1366 1367#=============================================================================== 1368# Re-configuration rules. 1369 1370ifeq ($(enable_autogen), 1) 1371$(srcroot)configure : $(srcroot)configure.ac 1372 cd ./$(srcroot) && $(AUTOCONF) 1373 1374$(objroot)config.status : $(srcroot)configure 1375 ./$(objroot)config.status --recheck 1376 1377$(srcroot)config.stamp.in : $(srcroot)configure.ac 1378 echo stamp > $(srcroot)config.stamp.in 1379 1380$(objroot)config.stamp : $(cfgoutputs_in) $(cfghdrs_in) $(srcroot)configure 1381 ./$(objroot)config.status 1382 @touch $@ 1383 1384# There must be some action in order for make to re-read Makefile when it is 1385# out of date. 1386$(cfgoutputs_out) $(cfghdrs_out) : $(objroot)config.stamp 1387 @true 1388endif 1389>>>>>>> main 1390