1# Clear out all vpaths, then set just one (default vpath) for the main build 2# directory. 3vpath 4vpath % . 5 6# Clear the default suffixes, so that built-in rules are not used. 7.SUFFIXES : 8 9SHELL := /bin/sh 10 11CC := /usr/bin/clang 12CXX := /usr/bin/clang++ -std=c++14 13 14# Configuration parameters. 15DESTDIR = 16BINDIR := $(DESTDIR)/usr/local/bin 17INCLUDEDIR := $(DESTDIR)/usr/local/include 18LIBDIR := $(DESTDIR)/usr/local/lib 19DATADIR := $(DESTDIR)/usr/local/share 20MANDIR := $(DESTDIR)/usr/local/share/man 21srcroot := 22objroot := 23abs_srcroot := /Users/gnzlbg/projects/sideprojects/jemallocator/jemalloc-sys/rep/ 24abs_objroot := /Users/gnzlbg/projects/sideprojects/jemallocator/jemalloc-sys/rep/ 25 26# Build parameters. 27CPPFLAGS := -D_REENTRANT -I$(objroot)include -I$(srcroot)include 28CONFIGURE_CFLAGS := -std=gnu11 -Wall -Wextra -Wshorten-64-to-32 -Wsign-compare -Wundef -Wno-format-zero-length -pipe -g3 -O3 -funroll-loops 29SPECIFIED_CFLAGS := 30EXTRA_CFLAGS := 31CFLAGS := $(strip $(CONFIGURE_CFLAGS) $(SPECIFIED_CFLAGS) $(EXTRA_CFLAGS)) 32CONFIGURE_CXXFLAGS := -Wall -Wextra -g3 -O3 33SPECIFIED_CXXFLAGS := 34EXTRA_CXXFLAGS := 35CXXFLAGS := $(strip $(CONFIGURE_CXXFLAGS) $(SPECIFIED_CXXFLAGS) $(EXTRA_CXXFLAGS)) 36LDFLAGS := 37EXTRA_LDFLAGS := 38LIBS := -lstdc++ -pthread 39RPATH_EXTRA := 40SO := dylib 41IMPORTLIB := dylib 42O := o 43A := a 44EXE := 45LIBPREFIX := lib 46REV := 2 47install_suffix := 48ABI := macho 49XSLTPROC := /usr/bin/xsltproc 50XSLROOT := 51AUTOCONF := /usr/local/bin/autoconf 52_RPATH = 53RPATH = $(if $(1),$(call _RPATH,$(1))) 54cfghdrs_in := $(addprefix $(srcroot),include/jemalloc/jemalloc_defs.h.in include/jemalloc/internal/jemalloc_internal_defs.h.in include/jemalloc/internal/private_symbols.sh include/jemalloc/internal/private_namespace.sh include/jemalloc/internal/public_namespace.sh include/jemalloc/internal/public_unnamespace.sh include/jemalloc/jemalloc_rename.sh include/jemalloc/jemalloc_mangle.sh include/jemalloc/jemalloc.sh test/include/test/jemalloc_test_defs.h.in) 55cfghdrs_out := include/jemalloc/jemalloc_defs.h include/jemalloc/jemalloc.h include/jemalloc/internal/private_symbols.awk include/jemalloc/internal/private_symbols_jet.awk include/jemalloc/internal/public_symbols.txt include/jemalloc/internal/public_namespace.h include/jemalloc/internal/public_unnamespace.h include/jemalloc/jemalloc_protos_jet.h include/jemalloc/jemalloc_rename.h include/jemalloc/jemalloc_mangle.h include/jemalloc/jemalloc_mangle_jet.h include/jemalloc/internal/jemalloc_internal_defs.h test/include/test/jemalloc_test_defs.h 56cfgoutputs_in := $(addprefix $(srcroot),Makefile.in jemalloc.pc.in doc/html.xsl.in doc/manpages.xsl.in doc/jemalloc.xml.in include/jemalloc/jemalloc_macros.h.in include/jemalloc/jemalloc_protos.h.in include/jemalloc/jemalloc_typedefs.h.in include/jemalloc/internal/jemalloc_preamble.h.in test/test.sh.in test/include/test/jemalloc_test.h.in) 57cfgoutputs_out := Makefile jemalloc.pc doc/html.xsl doc/manpages.xsl doc/jemalloc.xml include/jemalloc/jemalloc_macros.h include/jemalloc/jemalloc_protos.h include/jemalloc/jemalloc_typedefs.h include/jemalloc/internal/jemalloc_preamble.h test/test.sh test/include/test/jemalloc_test.h 58enable_autogen := 0 59enable_shared := 1 60enable_static := 1 61enable_prof := 0 62enable_zone_allocator := 1 63enable_experimental_smallocx := 0 64MALLOC_CONF := JE_MALLOC_CONF 65link_whole_archive := 0 66DSO_LDFLAGS = -shared -Wl,-install_name,$(LIBDIR)/$(@F) 67SOREV = 2.dylib 68PIC_CFLAGS = -fPIC -DPIC 69CTARGET = -o $@ 70LDTARGET = -o $@ 71TEST_LD_MODE = 72MKLIB = 73AR = ar 74ARFLAGS = crus 75DUMP_SYMS = nm -a 76AWK := gawk 77CC_MM = 1 78LM := 79INSTALL = /usr/local/bin/ginstall -c 80 81ifeq (macho, $(ABI)) 82TEST_LIBRARY_PATH := DYLD_FALLBACK_LIBRARY_PATH="$(objroot)lib" 83else 84ifeq (pecoff, $(ABI)) 85TEST_LIBRARY_PATH := PATH="$(PATH):$(objroot)lib" 86else 87TEST_LIBRARY_PATH := 88endif 89endif 90 91LIBJEMALLOC := $(LIBPREFIX)jemalloc$(install_suffix) 92 93# Lists of files. 94BINS := $(objroot)bin/jemalloc-config $(objroot)bin/jemalloc.sh $(objroot)bin/jeprof 95C_HDRS := $(objroot)include/jemalloc/jemalloc$(install_suffix).h 96C_SRCS := $(srcroot)src/jemalloc.c \ 97 $(srcroot)src/arena.c \ 98 $(srcroot)src/background_thread.c \ 99 $(srcroot)src/base.c \ 100 $(srcroot)src/bin.c \ 101 $(srcroot)src/bitmap.c \ 102 $(srcroot)src/ckh.c \ 103 $(srcroot)src/ctl.c \ 104 $(srcroot)src/div.c \ 105 $(srcroot)src/extent.c \ 106 $(srcroot)src/extent_dss.c \ 107 $(srcroot)src/extent_mmap.c \ 108 $(srcroot)src/hash.c \ 109 $(srcroot)src/hook.c \ 110 $(srcroot)src/large.c \ 111 $(srcroot)src/log.c \ 112 $(srcroot)src/malloc_io.c \ 113 $(srcroot)src/mutex.c \ 114 $(srcroot)src/mutex_pool.c \ 115 $(srcroot)src/nstime.c \ 116 $(srcroot)src/pages.c \ 117 $(srcroot)src/prng.c \ 118 $(srcroot)src/prof.c \ 119 $(srcroot)src/rtree.c \ 120 $(srcroot)src/stats.c \ 121 $(srcroot)src/sc.c \ 122 $(srcroot)src/sz.c \ 123 $(srcroot)src/tcache.c \ 124 $(srcroot)src/test_hooks.c \ 125 $(srcroot)src/ticker.c \ 126 $(srcroot)src/tsd.c \ 127 $(srcroot)src/witness.c 128ifeq ($(enable_zone_allocator), 1) 129C_SRCS += $(srcroot)src/zone.c 130endif 131ifeq ($(IMPORTLIB),$(SO)) 132STATIC_LIBS := $(objroot)lib/$(LIBJEMALLOC).$(A) 133endif 134ifdef PIC_CFLAGS 135STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_pic.$(A) 136else 137STATIC_LIBS += $(objroot)lib/$(LIBJEMALLOC)_s.$(A) 138endif 139DSOS := $(objroot)lib/$(LIBJEMALLOC).$(SOREV) 140ifneq ($(SOREV),$(SO)) 141DSOS += $(objroot)lib/$(LIBJEMALLOC).$(SO) 142endif 143ifeq (1, $(link_whole_archive)) 144LJEMALLOC := -Wl,--whole-archive -L$(objroot)lib -l$(LIBJEMALLOC) -Wl,--no-whole-archive 145else 146LJEMALLOC := $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 147endif 148PC := $(objroot)jemalloc.pc 149MAN3 := $(objroot)doc/jemalloc$(install_suffix).3 150DOCS_XML := $(objroot)doc/jemalloc$(install_suffix).xml 151DOCS_HTML := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.html) 152DOCS_MAN3 := $(DOCS_XML:$(objroot)%.xml=$(objroot)%.3) 153DOCS := $(DOCS_HTML) $(DOCS_MAN3) 154C_TESTLIB_SRCS := $(srcroot)test/src/btalloc.c $(srcroot)test/src/btalloc_0.c \ 155 $(srcroot)test/src/btalloc_1.c $(srcroot)test/src/math.c \ 156 $(srcroot)test/src/mtx.c $(srcroot)test/src/mq.c \ 157 $(srcroot)test/src/SFMT.c $(srcroot)test/src/test.c \ 158 $(srcroot)test/src/thd.c $(srcroot)test/src/timer.c 159ifeq (1, $(link_whole_archive)) 160C_UTIL_INTEGRATION_SRCS := 161C_UTIL_CPP_SRCS := 162else 163C_UTIL_INTEGRATION_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c 164C_UTIL_CPP_SRCS := $(srcroot)src/nstime.c $(srcroot)src/malloc_io.c 165endif 166TESTS_UNIT := \ 167 $(srcroot)test/unit/a0.c \ 168 $(srcroot)test/unit/arena_reset.c \ 169 $(srcroot)test/unit/atomic.c \ 170 $(srcroot)test/unit/background_thread.c \ 171 $(srcroot)test/unit/background_thread_enable.c \ 172 $(srcroot)test/unit/base.c \ 173 $(srcroot)test/unit/bitmap.c \ 174 $(srcroot)test/unit/bit_util.c \ 175 $(srcroot)test/unit/binshard.c \ 176 $(srcroot)test/unit/ckh.c \ 177 $(srcroot)test/unit/decay.c \ 178 $(srcroot)test/unit/div.c \ 179 $(srcroot)test/unit/emitter.c \ 180 $(srcroot)test/unit/extent_quantize.c \ 181 $(srcroot)test/unit/fork.c \ 182 $(srcroot)test/unit/hash.c \ 183 $(srcroot)test/unit/hook.c \ 184 $(srcroot)test/unit/huge.c \ 185 $(srcroot)test/unit/junk.c \ 186 $(srcroot)test/unit/junk_alloc.c \ 187 $(srcroot)test/unit/junk_free.c \ 188 $(srcroot)test/unit/log.c \ 189 $(srcroot)test/unit/mallctl.c \ 190 $(srcroot)test/unit/malloc_io.c \ 191 $(srcroot)test/unit/math.c \ 192 $(srcroot)test/unit/mq.c \ 193 $(srcroot)test/unit/mtx.c \ 194 $(srcroot)test/unit/pack.c \ 195 $(srcroot)test/unit/pages.c \ 196 $(srcroot)test/unit/ph.c \ 197 $(srcroot)test/unit/prng.c \ 198 $(srcroot)test/unit/prof_accum.c \ 199 $(srcroot)test/unit/prof_active.c \ 200 $(srcroot)test/unit/prof_gdump.c \ 201 $(srcroot)test/unit/prof_idump.c \ 202 $(srcroot)test/unit/prof_log.c \ 203 $(srcroot)test/unit/prof_reset.c \ 204 $(srcroot)test/unit/prof_tctx.c \ 205 $(srcroot)test/unit/prof_thread_name.c \ 206 $(srcroot)test/unit/ql.c \ 207 $(srcroot)test/unit/qr.c \ 208 $(srcroot)test/unit/rb.c \ 209 $(srcroot)test/unit/retained.c \ 210 $(srcroot)test/unit/rtree.c \ 211 $(srcroot)test/unit/seq.c \ 212 $(srcroot)test/unit/SFMT.c \ 213 $(srcroot)test/unit/sc.c \ 214 $(srcroot)test/unit/size_classes.c \ 215 $(srcroot)test/unit/slab.c \ 216 $(srcroot)test/unit/smoothstep.c \ 217 $(srcroot)test/unit/spin.c \ 218 $(srcroot)test/unit/stats.c \ 219 $(srcroot)test/unit/stats_print.c \ 220 $(srcroot)test/unit/test_hooks.c \ 221 $(srcroot)test/unit/ticker.c \ 222 $(srcroot)test/unit/nstime.c \ 223 $(srcroot)test/unit/tsd.c \ 224 $(srcroot)test/unit/witness.c \ 225 $(srcroot)test/unit/zero.c 226ifeq (0, 1) 227TESTS_UNIT += \ 228 $(srcroot)test/unit/arena_reset_prof.c 229endif 230TESTS_INTEGRATION := $(srcroot)test/integration/aligned_alloc.c \ 231 $(srcroot)test/integration/allocated.c \ 232 $(srcroot)test/integration/extent.c \ 233 $(srcroot)test/integration/malloc.c \ 234 $(srcroot)test/integration/mallocx.c \ 235 $(srcroot)test/integration/MALLOCX_ARENA.c \ 236 $(srcroot)test/integration/overflow.c \ 237 $(srcroot)test/integration/posix_memalign.c \ 238 $(srcroot)test/integration/rallocx.c \ 239 $(srcroot)test/integration/sdallocx.c \ 240 $(srcroot)test/integration/slab_sizes.c \ 241 $(srcroot)test/integration/thread_arena.c \ 242 $(srcroot)test/integration/thread_tcache_enabled.c \ 243 $(srcroot)test/integration/xallocx.c 244ifeq (0, 1) 245TESTS_INTEGRATION += \ 246 $(srcroot)test/integration/smallocx.c 247endif 248ifeq (1, 1) 249CPP_SRCS := $(srcroot)src/jemalloc_cpp.cpp 250TESTS_INTEGRATION_CPP := $(srcroot)test/integration/cpp/basic.cpp 251else 252CPP_SRCS := 253TESTS_INTEGRATION_CPP := 254endif 255TESTS_STRESS := $(srcroot)test/stress/microbench.c \ 256 $(srcroot)test/stress/hookbench.c 257 258 259TESTS := $(TESTS_UNIT) $(TESTS_INTEGRATION) $(TESTS_INTEGRATION_CPP) $(TESTS_STRESS) 260 261PRIVATE_NAMESPACE_HDRS := $(objroot)include/jemalloc/internal/private_namespace.h $(objroot)include/jemalloc/internal/private_namespace_jet.h 262PRIVATE_NAMESPACE_GEN_HDRS := $(PRIVATE_NAMESPACE_HDRS:%.h=%.gen.h) 263C_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym.$(O)) 264C_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.sym) 265C_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.$(O)) 266CPP_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.$(O)) 267C_PIC_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.pic.$(O)) 268CPP_PIC_OBJS := $(CPP_SRCS:$(srcroot)%.cpp=$(objroot)%.pic.$(O)) 269C_JET_SYM_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym.$(O)) 270C_JET_SYMS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.sym) 271C_JET_OBJS := $(C_SRCS:$(srcroot)%.c=$(objroot)%.jet.$(O)) 272C_TESTLIB_UNIT_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.unit.$(O)) 273C_TESTLIB_INTEGRATION_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O)) 274C_UTIL_INTEGRATION_OBJS := $(C_UTIL_INTEGRATION_SRCS:$(srcroot)%.c=$(objroot)%.integration.$(O)) 275C_TESTLIB_STRESS_OBJS := $(C_TESTLIB_SRCS:$(srcroot)%.c=$(objroot)%.stress.$(O)) 276C_TESTLIB_OBJS := $(C_TESTLIB_UNIT_OBJS) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(C_TESTLIB_STRESS_OBJS) 277 278TESTS_UNIT_OBJS := $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%.$(O)) 279TESTS_INTEGRATION_OBJS := $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%.$(O)) 280TESTS_INTEGRATION_CPP_OBJS := $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%.$(O)) 281TESTS_STRESS_OBJS := $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%.$(O)) 282TESTS_OBJS := $(TESTS_UNIT_OBJS) $(TESTS_INTEGRATION_OBJS) $(TESTS_STRESS_OBJS) 283TESTS_CPP_OBJS := $(TESTS_INTEGRATION_CPP_OBJS) 284 285.PHONY: all dist build_doc_html build_doc_man build_doc 286.PHONY: install_bin install_include install_lib 287.PHONY: install_doc_html install_doc_man install_doc install 288.PHONY: tests check clean distclean relclean 289 290.SECONDARY : $(PRIVATE_NAMESPACE_GEN_HDRS) $(TESTS_OBJS) $(TESTS_CPP_OBJS) 291 292# Default target. 293all: build_lib 294 295dist: build_doc 296 297$(objroot)doc/%.html : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/html.xsl 298ifneq ($(XSLROOT),) 299 $(XSLTPROC) -o $@ $(objroot)doc/html.xsl $< 300else 301ifeq ($(wildcard $(DOCS_HTML)),) 302 @echo "<p>Missing xsltproc. Doc not built.</p>" > $@ 303endif 304 @echo "Missing xsltproc. "$@" not (re)built." 305endif 306 307$(objroot)doc/%.3 : $(objroot)doc/%.xml $(srcroot)doc/stylesheet.xsl $(objroot)doc/manpages.xsl 308ifneq ($(XSLROOT),) 309 $(XSLTPROC) -o $@ $(objroot)doc/manpages.xsl $< 310else 311ifeq ($(wildcard $(DOCS_MAN3)),) 312 @echo "Missing xsltproc. Doc not built." > $@ 313endif 314 @echo "Missing xsltproc. "$@" not (re)built." 315endif 316 317build_doc_html: $(DOCS_HTML) 318build_doc_man: $(DOCS_MAN3) 319build_doc: $(DOCS) 320 321# 322# Include generated dependency files. 323# 324ifdef CC_MM 325-include $(C_SYM_OBJS:%.$(O)=%.d) 326-include $(C_OBJS:%.$(O)=%.d) 327-include $(CPP_OBJS:%.$(O)=%.d) 328-include $(C_PIC_OBJS:%.$(O)=%.d) 329-include $(CPP_PIC_OBJS:%.$(O)=%.d) 330-include $(C_JET_SYM_OBJS:%.$(O)=%.d) 331-include $(C_JET_OBJS:%.$(O)=%.d) 332-include $(C_TESTLIB_OBJS:%.$(O)=%.d) 333-include $(TESTS_OBJS:%.$(O)=%.d) 334-include $(TESTS_CPP_OBJS:%.$(O)=%.d) 335endif 336 337$(C_SYM_OBJS): $(objroot)src/%.sym.$(O): $(srcroot)src/%.c 338$(C_SYM_OBJS): CPPFLAGS += -DJEMALLOC_NO_PRIVATE_NAMESPACE 339$(C_SYMS): $(objroot)src/%.sym: $(objroot)src/%.sym.$(O) 340$(C_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.c 341$(CPP_OBJS): $(objroot)src/%.$(O): $(srcroot)src/%.cpp 342$(C_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.c 343$(C_PIC_OBJS): CFLAGS += $(PIC_CFLAGS) 344$(CPP_PIC_OBJS): $(objroot)src/%.pic.$(O): $(srcroot)src/%.cpp 345$(CPP_PIC_OBJS): CXXFLAGS += $(PIC_CFLAGS) 346$(C_JET_SYM_OBJS): $(objroot)src/%.jet.sym.$(O): $(srcroot)src/%.c 347$(C_JET_SYM_OBJS): CPPFLAGS += -DJEMALLOC_JET -DJEMALLOC_NO_PRIVATE_NAMESPACE 348$(C_JET_SYMS): $(objroot)src/%.jet.sym: $(objroot)src/%.jet.sym.$(O) 349$(C_JET_OBJS): $(objroot)src/%.jet.$(O): $(srcroot)src/%.c 350$(C_JET_OBJS): CPPFLAGS += -DJEMALLOC_JET 351$(C_TESTLIB_UNIT_OBJS): $(objroot)test/src/%.unit.$(O): $(srcroot)test/src/%.c 352$(C_TESTLIB_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST 353$(C_TESTLIB_INTEGRATION_OBJS): $(objroot)test/src/%.integration.$(O): $(srcroot)test/src/%.c 354$(C_TESTLIB_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST 355$(C_UTIL_INTEGRATION_OBJS): $(objroot)src/%.integration.$(O): $(srcroot)src/%.c 356$(C_TESTLIB_STRESS_OBJS): $(objroot)test/src/%.stress.$(O): $(srcroot)test/src/%.c 357$(C_TESTLIB_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST -DJEMALLOC_STRESS_TESTLIB 358$(C_TESTLIB_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 359$(TESTS_UNIT_OBJS): CPPFLAGS += -DJEMALLOC_UNIT_TEST 360$(TESTS_INTEGRATION_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_TEST 361$(TESTS_INTEGRATION_CPP_OBJS): CPPFLAGS += -DJEMALLOC_INTEGRATION_CPP_TEST 362$(TESTS_STRESS_OBJS): CPPFLAGS += -DJEMALLOC_STRESS_TEST 363$(TESTS_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.c 364$(TESTS_CPP_OBJS): $(objroot)test/%.$(O): $(srcroot)test/%.cpp 365$(TESTS_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 366$(TESTS_CPP_OBJS): CPPFLAGS += -I$(srcroot)test/include -I$(objroot)test/include 367ifneq ($(IMPORTLIB),$(SO)) 368$(CPP_OBJS) $(C_SYM_OBJS) $(C_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS): CPPFLAGS += -DDLLEXPORT 369endif 370 371# Dependencies. 372ifndef CC_MM 373HEADER_DIRS = $(srcroot)include/jemalloc/internal \ 374 $(objroot)include/jemalloc $(objroot)include/jemalloc/internal 375HEADERS = $(filter-out $(PRIVATE_NAMESPACE_HDRS),$(wildcard $(foreach dir,$(HEADER_DIRS),$(dir)/*.h))) 376$(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) 377$(TESTS_OBJS) $(TESTS_CPP_OBJS): $(objroot)test/include/test/jemalloc_test.h 378endif 379 380$(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 381$(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 382 383$(C_SYM_OBJS) $(C_OBJS) $(C_PIC_OBJS) $(C_JET_SYM_OBJS) $(C_JET_OBJS) $(C_TESTLIB_OBJS) $(TESTS_OBJS): %.$(O): 384 @mkdir -p $(@D) 385 $(CC) $(CFLAGS) -c $(CPPFLAGS) $(CTARGET) $< 386ifdef CC_MM 387 @$(CC) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $< 388endif 389 390$(C_SYMS): %.sym: 391 @mkdir -p $(@D) 392 $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols.awk > $@ 393 394$(C_JET_SYMS): %.sym: 395 @mkdir -p $(@D) 396 $(DUMP_SYMS) $< | $(AWK) -f $(objroot)include/jemalloc/internal/private_symbols_jet.awk > $@ 397 398$(objroot)include/jemalloc/internal/private_namespace.gen.h: $(C_SYMS) 399 $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@ 400 401$(objroot)include/jemalloc/internal/private_namespace_jet.gen.h: $(C_JET_SYMS) 402 $(SHELL) $(srcroot)include/jemalloc/internal/private_namespace.sh $^ > $@ 403 404%.h: %.gen.h 405 @if ! `cmp -s $< $@` ; then echo "cp $< $<"; cp $< $@ ; fi 406 407$(CPP_OBJS) $(CPP_PIC_OBJS) $(TESTS_CPP_OBJS): %.$(O): 408 @mkdir -p $(@D) 409 $(CXX) $(CXXFLAGS) -c $(CPPFLAGS) $(CTARGET) $< 410ifdef CC_MM 411 @$(CXX) -MM $(CPPFLAGS) -MT $@ -o $(@:%.$(O)=%.d) $< 412endif 413 414ifneq ($(SOREV),$(SO)) 415%.$(SO) : %.$(SOREV) 416 @mkdir -p $(@D) 417 ln -sf $(<F) $@ 418endif 419 420$(objroot)lib/$(LIBJEMALLOC).$(SOREV) : $(if $(PIC_CFLAGS),$(C_PIC_OBJS),$(C_OBJS)) $(if $(PIC_CFLAGS),$(CPP_PIC_OBJS),$(CPP_OBJS)) 421 @mkdir -p $(@D) 422 $(CC) $(DSO_LDFLAGS) $(call RPATH,$(RPATH_EXTRA)) $(LDTARGET) $+ $(LDFLAGS) $(LIBS) $(EXTRA_LDFLAGS) 423 424$(objroot)lib/$(LIBJEMALLOC)_pic.$(A) : $(C_PIC_OBJS) $(CPP_PIC_OBJS) 425$(objroot)lib/$(LIBJEMALLOC).$(A) : $(C_OBJS) $(CPP_OBJS) 426$(objroot)lib/$(LIBJEMALLOC)_s.$(A) : $(C_OBJS) $(CPP_OBJS) 427 428$(STATIC_LIBS): 429 @mkdir -p $(@D) 430 $(AR) $(ARFLAGS) $@ $+ 431 432$(objroot)test/unit/%$(EXE): $(objroot)test/unit/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_UNIT_OBJS) 433 @mkdir -p $(@D) 434 $(CC) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 435 436$(objroot)test/integration/%$(EXE): $(objroot)test/integration/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 437 @mkdir -p $(@D) 438 $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(LJEMALLOC) $(LDFLAGS) $(filter-out -lm,$(filter -lrt -pthread -lstdc++,$(LIBS))) $(LM) $(EXTRA_LDFLAGS) 439 440$(objroot)test/integration/cpp/%$(EXE): $(objroot)test/integration/cpp/%.$(O) $(C_TESTLIB_INTEGRATION_OBJS) $(C_UTIL_INTEGRATION_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 441 @mkdir -p $(@D) 442 $(CXX) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) -lm $(EXTRA_LDFLAGS) 443 444$(objroot)test/stress/%$(EXE): $(objroot)test/stress/%.$(O) $(C_JET_OBJS) $(C_TESTLIB_STRESS_OBJS) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) 445 @mkdir -p $(@D) 446 $(CC) $(TEST_LD_MODE) $(LDTARGET) $(filter %.$(O),$^) $(call RPATH,$(objroot)lib) $(objroot)lib/$(LIBJEMALLOC).$(IMPORTLIB) $(LDFLAGS) $(filter-out -lm,$(LIBS)) $(LM) $(EXTRA_LDFLAGS) 447 448build_lib_shared: $(DSOS) 449build_lib_static: $(STATIC_LIBS) 450ifeq ($(enable_shared), 1) 451build_lib: build_lib_shared 452endif 453ifeq ($(enable_static), 1) 454build_lib: build_lib_static 455endif 456 457install_bin: 458 $(INSTALL) -d $(BINDIR) 459 @for b in $(BINS); do \ 460 echo "$(INSTALL) -m 755 $$b $(BINDIR)"; \ 461 $(INSTALL) -m 755 $$b $(BINDIR); \ 462done 463 464install_include: 465 $(INSTALL) -d $(INCLUDEDIR)/jemalloc 466 @for h in $(C_HDRS); do \ 467 echo "$(INSTALL) -m 644 $$h $(INCLUDEDIR)/jemalloc"; \ 468 $(INSTALL) -m 644 $$h $(INCLUDEDIR)/jemalloc; \ 469done 470 471install_lib_shared: $(DSOS) 472 $(INSTALL) -d $(LIBDIR) 473 $(INSTALL) -m 755 $(objroot)lib/$(LIBJEMALLOC).$(SOREV) $(LIBDIR) 474ifneq ($(SOREV),$(SO)) 475 ln -sf $(LIBJEMALLOC).$(SOREV) $(LIBDIR)/$(LIBJEMALLOC).$(SO) 476endif 477 478install_lib_static: $(STATIC_LIBS) 479 $(INSTALL) -d $(LIBDIR) 480 @for l in $(STATIC_LIBS); do \ 481 echo "$(INSTALL) -m 755 $$l $(LIBDIR)"; \ 482 $(INSTALL) -m 755 $$l $(LIBDIR); \ 483done 484 485install_lib_pc: $(PC) 486 $(INSTALL) -d $(LIBDIR)/pkgconfig 487 @for l in $(PC); do \ 488 echo "$(INSTALL) -m 644 $$l $(LIBDIR)/pkgconfig"; \ 489 $(INSTALL) -m 644 $$l $(LIBDIR)/pkgconfig; \ 490done 491 492ifeq ($(enable_shared), 1) 493install_lib: install_lib_shared 494endif 495ifeq ($(enable_static), 1) 496install_lib: install_lib_static 497endif 498install_lib: install_lib_pc 499 500install_doc_html: 501 $(INSTALL) -d $(DATADIR)/doc/jemalloc$(install_suffix) 502 @for d in $(DOCS_HTML); do \ 503 echo "$(INSTALL) -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix)"; \ 504 $(INSTALL) -m 644 $$d $(DATADIR)/doc/jemalloc$(install_suffix); \ 505done 506 507install_doc_man: 508 $(INSTALL) -d $(MANDIR)/man3 509 @for d in $(DOCS_MAN3); do \ 510 echo "$(INSTALL) -m 644 $$d $(MANDIR)/man3"; \ 511 $(INSTALL) -m 644 $$d $(MANDIR)/man3; \ 512done 513 514install_doc: build_doc install_doc_html install_doc_man 515 516install: install_bin install_include install_lib install_doc 517 518tests_unit: $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%$(EXE)) 519tests_integration: $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%$(EXE)) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%$(EXE)) 520tests_stress: $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%$(EXE)) 521tests: tests_unit tests_integration tests_stress 522 523check_unit_dir: 524 @mkdir -p $(objroot)test/unit 525check_integration_dir: 526 @mkdir -p $(objroot)test/integration 527stress_dir: 528 @mkdir -p $(objroot)test/stress 529check_dir: check_unit_dir check_integration_dir 530 531check_unit: tests_unit check_unit_dir 532 $(SHELL) $(objroot)test/test.sh $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%) 533check_integration_prof: tests_integration check_integration_dir 534ifeq ($(enable_prof), 1) 535 $(MALLOC_CONF)="prof:true" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 536 $(MALLOC_CONF)="prof:true,prof_active:false" $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 537endif 538check_integration_decay: tests_integration check_integration_dir 539 $(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)%) 540 $(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)%) 541check_integration: tests_integration check_integration_dir 542 $(SHELL) $(objroot)test/test.sh $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%) $(TESTS_INTEGRATION_CPP:$(srcroot)%.cpp=$(objroot)%) 543stress: tests_stress stress_dir 544 $(SHELL) $(objroot)test/test.sh $(TESTS_STRESS:$(srcroot)%.c=$(objroot)%) 545check: check_unit check_integration check_integration_decay check_integration_prof 546 547clean: 548 rm -f $(PRIVATE_NAMESPACE_HDRS) 549 rm -f $(PRIVATE_NAMESPACE_GEN_HDRS) 550 rm -f $(C_SYM_OBJS) 551 rm -f $(C_SYMS) 552 rm -f $(C_OBJS) 553 rm -f $(CPP_OBJS) 554 rm -f $(C_PIC_OBJS) 555 rm -f $(CPP_PIC_OBJS) 556 rm -f $(C_JET_SYM_OBJS) 557 rm -f $(C_JET_SYMS) 558 rm -f $(C_JET_OBJS) 559 rm -f $(C_TESTLIB_OBJS) 560 rm -f $(C_SYM_OBJS:%.$(O)=%.d) 561 rm -f $(C_OBJS:%.$(O)=%.d) 562 rm -f $(CPP_OBJS:%.$(O)=%.d) 563 rm -f $(C_PIC_OBJS:%.$(O)=%.d) 564 rm -f $(CPP_PIC_OBJS:%.$(O)=%.d) 565 rm -f $(C_JET_SYM_OBJS:%.$(O)=%.d) 566 rm -f $(C_JET_OBJS:%.$(O)=%.d) 567 rm -f $(C_TESTLIB_OBJS:%.$(O)=%.d) 568 rm -f $(TESTS_OBJS:%.$(O)=%$(EXE)) 569 rm -f $(TESTS_OBJS) 570 rm -f $(TESTS_OBJS:%.$(O)=%.d) 571 rm -f $(TESTS_OBJS:%.$(O)=%.out) 572 rm -f $(TESTS_CPP_OBJS:%.$(O)=%$(EXE)) 573 rm -f $(TESTS_CPP_OBJS) 574 rm -f $(TESTS_CPP_OBJS:%.$(O)=%.d) 575 rm -f $(TESTS_CPP_OBJS:%.$(O)=%.out) 576 rm -f $(DSOS) $(STATIC_LIBS) 577 578distclean: clean 579 rm -f $(objroot)bin/jemalloc-config 580 rm -f $(objroot)bin/jemalloc.sh 581 rm -f $(objroot)bin/jeprof 582 rm -f $(objroot)config.log 583 rm -f $(objroot)config.status 584 rm -f $(objroot)config.stamp 585 rm -f $(cfghdrs_out) 586 rm -f $(cfgoutputs_out) 587 588relclean: distclean 589 rm -f $(objroot)configure 590 rm -f $(objroot)VERSION 591 rm -f $(DOCS_HTML) 592 rm -f $(DOCS_MAN3) 593 594#=============================================================================== 595# Re-configuration rules. 596 597ifeq ($(enable_autogen), 1) 598$(srcroot)configure : $(srcroot)configure.ac 599 cd ./$(srcroot) && $(AUTOCONF) 600 601$(objroot)config.status : $(srcroot)configure 602 ./$(objroot)config.status --recheck 603 604$(srcroot)config.stamp.in : $(srcroot)configure.ac 605 echo stamp > $(srcroot)config.stamp.in 606 607$(objroot)config.stamp : $(cfgoutputs_in) $(cfghdrs_in) $(srcroot)configure 608 ./$(objroot)config.status 609 @touch $@ 610 611# There must be some action in order for make to re-read Makefile when it is 612# out of date. 613$(cfgoutputs_out) $(cfghdrs_out) : $(objroot)config.stamp 614 @true 615endif 616