# 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. BINDIR := @BINDIR@ INCLUDEDIR := @INCLUDEDIR@ LIBDIR := @LIBDIR@ MANDIR := @MANDIR@ # Build parameters. CPPFLAGS := @CPPFLAGS@ CFLAGS := @CFLAGS@ -fPIC -DPIC ifeq (macho, @abi@) CFLAGS += -dynamic endif LDFLAGS := @LDFLAGS@ LIBS := @LIBS@ GDLIBS := @GDLIBS@ RPATH_EXTRA := @RPATH_EXTRA@ ifeq (macho, @abi@) SO := dylib else SO := so endif REV := 0 # File lists. BINS := @bins@ CHDRS := @srcroot@src/jemalloc.h @objroot@src/jemalloc_defs.h CSRCS := @srcroot@src/jemalloc.c DSOS := @objroot@lib/libjemalloc.so.$(REV) @objroot@lib/libjemalloc.so \ @objroot@lib/libjemalloc_pic.a MAN3 := @objroot@doc/jemalloc.3 .PHONY: all dist install check clean distclean relclean # Default target. all: $(DSOS) bins @objroot@src/%.o: @srcroot@src/%.c $(CC) $(CFLAGS) -c $(CPPFLAGS) -o $@ $+ $(DSOS): $(CSRCS:@srcroot@%.c=@objroot@%.o) @mkdir -p $(@D) $(CC) -shared -o $@ $+ $(LDFLAGS) $(LIBS) ln -sf libjemalloc.so.$(REV) lib/libjemalloc.so ar crus @objroot@lib/libjemalloc_pic.a $+ bins: $(BINS) @objroot@bin/mtrgraph: @objroot@src/mtrgraph.o @mkdir -p $(@D) $(CC) -o $@ $+ $(LDFLAGS) $(LIBS) $(GDLIBS) @objroot@bin/%: @objroot@src/%.o @mkdir -p $(@D) $(CC) -o $@ $+ $(LDFLAGS) $(LIBS) install: install -d $(BINDIR) @for b in $(BINS); do \ echo "install -m 755 $$b $(BINDIR)"; \ install -m 755 $$b $(BINDIR); \ done install -d $(INCLUDEDIR) @for h in $(CHDRS); do \ echo "install -m 644 $$h $(INCLUDEDIR)"; \ install -m 644 $$h $(INCLUDEDIR); \ done install -d $(LIBDIR) @for s in $(DSOS); do \ echo "install -m 755 $$s $(LIBDIR)"; \ install -m 755 $$s $(LIBDIR); \ done install -d $(MANDIR) @for m in $(MAN3); do \ echo "install -m 644 $$m $(MANDIR)/man3"; \ install -m 644 $$m $(MANDIR)/man3; \ done check: clean: rm -f $(BINS) rm -f @objroot@src/*.o rm -f @objroot@lib/libjemalloc.so rm -f @objroot@lib/libjemalloc.so.$(REV) rm -f @objroot@lib/libjemalloc_pic.a 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@ rm -f @cfgoutputs@ relclean: distclean rm -rf @objroot@autom4te.cache rm -f @objroot@configure #=============================================================================== # 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 : $(patsubst %, %.in, @cfghdrs@) \ @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 : $(patsubst %, @srcroot@%.in, @cfgoutputs@) \ @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