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