# Clear out all vpaths, then set just one (default vpath) for the main build # directory. vpath vpath % . # Clear the default suffixes, so that built-in rules are not used. .SUFFIXES : SHELL := /bin/sh CC := @CC@ # Configuration parameters. DESTDIR = INCLUDEDIR := $(DESTDIR)@INCLUDEDIR@ LIBDIR := $(DESTDIR)@LIBDIR@ MANDIR := $(DESTDIR)@MANDIR@ # Build parameters. CPPFLAGS := @CPPFLAGS@ -I@srcroot@include -I@objroot@include CFLAGS := @CFLAGS@ -fPIC -DPIC ifeq (macho, @abi@) CFLAGS += -dynamic endif LDFLAGS := @LDFLAGS@ LIBS := @LIBS@ RPATH_EXTRA := @RPATH_EXTRA@ ifeq (macho, @abi@) SO := dylib else SO := so endif REV := 0 # Lists of files. CHDRS := @objroot@include/jemalloc/jemalloc@install_suffix@.h \ @objroot@include/jemalloc/jemalloc_defs@install_suffix@.h CSRCS := @srcroot@src/jemalloc.c @srcroot@src/arena.c @srcroot@src/base.c \ @srcroot@src/chunk.c @srcroot@src/chunk_dss.c \ @srcroot@src/chunk_mmap.c @srcroot@src/chunk_swap.c @srcroot@src/ckh.c \ @srcroot@src/ctl.c @srcroot@src/extent.c @srcroot@src/hash.c \ @srcroot@src/huge.c @srcroot@src/mb.c @srcroot@src/mutex.c \ @srcroot@src/prof.c @srcroot@src/stats.c @srcroot@src/tcache.c DSOS := @objroot@lib/libjemalloc@install_suffix@.so.$(REV) \ @objroot@lib/libjemalloc@install_suffix@.so \ @objroot@lib/libjemalloc@install_suffix@_pic.a MAN3 := @objroot@doc/jemalloc@install_suffix@.3 .PHONY: all dist install check clean distclean relclean # Default target. all: $(DSOS) # # Include generated dependency files. # -include $(CSRCS:@srcroot@%.c=@objroot@%.d) @objroot@src/%.o: @srcroot@src/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $(CPPFLAGS) -o $@ $< @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)" $(DSOS): $(CSRCS:@srcroot@%.c=@objroot@%.o) @mkdir -p $(@D) $(CC) -shared -Wl,-soname,libjemalloc@install_suffix@.so.$(REV) -o $@ $+ $(LDFLAGS) $(LIBS) ln -sf libjemalloc@install_suffix@.so.$(REV) lib/libjemalloc@install_suffix@.so ar crus @objroot@lib/libjemalloc@install_suffix@_pic.a $+ install_include: install -d $(INCLUDEDIR)/jemalloc @for h in $(CHDRS); do \ echo "install -m 644 $$h $(INCLUDEDIR)/jemalloc"; \ install -m 644 $$h $(INCLUDEDIR)/jemalloc; \ done install_lib: $(DSOS) install -d $(LIBDIR) install -m 755 @objroot@lib/libjemalloc@install_suffix@.so.$(REV) $(LIBDIR) ln -sf libjemalloc@install_suffix@.so.$(REV) $(LIBDIR)/libjemalloc@install_suffix@.so install -m 755 @objroot@lib/libjemalloc@install_suffix@_pic.a $(LIBDIR) install_man: install -d $(MANDIR)/man3 @for m in $(MAN3); do \ echo "install -m 644 $$m $(MANDIR)/man3"; \ install -m 644 $$m $(MANDIR)/man3; \ done install: install_include install_lib install_man check: clean: rm -f $(CSRCS:@srcroot@%.c=@objroot@%.o) rm -f $(CSRCS:@srcroot@%.c=@objroot@%.d) rm -f $(DSOS) distclean: clean rm -f @objroot@config.log rm -f @objroot@config.status rm -f @objroot@cfghdrs.stamp rm -f @objroot@cfgoutputs.stamp rm -f @cfghdrs_out@ rm -f @cfgoutputs_out@ relclean: distclean rm -rf @objroot@autom4te.cache rm -f @objroot@configure rm -f @srcroot@VERSION #=============================================================================== # Re-configuration rules. ifeq (@enable_autogen@, 1) @srcroot@configure : @srcroot@configure.ac cd ./@srcroot@ && @AUTOCONF@ @objroot@config.status : @srcroot@configure ./@objroot@config.status --recheck # cfghdrs rules. @srcroot@cfghdrs.stamp.in : @srcroot@configure.ac echo stamp > @srcroot@cfghdrs.stamp.in @objroot@cfghdrs.stamp : @cfghdrs_in@ @srcroot@configure ./@objroot@config.status @touch $@ @cfghdrs@ : @objroot@cfghdrs.stamp # cfgoutputs rules. @srcroot@cfgoutputs.stamp.in : @srcroot@configure.ac echo stamp > @srcroot@cfgoutputs.stamp.in @objroot@cfgoutputs.stamp : @cfgoutputs_in@ @srcroot@configure ./@objroot@config.status @touch $@ # There must be some action in order for make to re-read Makefile when it is # out of date. @cfgoutputs@ : @objroot@cfgoutputs.stamp @true endif