| # 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. |
| INCLUDEDIR := @INCLUDEDIR@ |
| LIBDIR := @LIBDIR@ |
| MANDIR := @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@install_suffix@.h \ |
| @objroot@include/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 -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: |
| install -d $(INCLUDEDIR)/jemalloc |
| @for h in $(CHDRS); do \ |
| echo "install -m 644 $$h $(INCLUDEDIR)/jemalloc"; \ |
| install -m 644 $$h $(INCLUDEDIR)/jemalloc; \ |
| done |
| 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 -d $(MANDIR)/man3 |
| @for m in $(MAN3); do \ |
| echo "install -m 644 $$m $(MANDIR)/man3"; \ |
| install -m 644 $$m $(MANDIR)/man3; \ |
| done |
| |
| 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 |
| |
| #=============================================================================== |
| # 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 |