Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 1 | # Clear out all vpaths, then set just one (default vpath) for the main build |
| 2 | # directory. |
| 3 | vpath |
| 4 | vpath % . |
| 5 | |
| 6 | # Clear the default suffixes, so that built-in rules are not used. |
| 7 | .SUFFIXES : |
| 8 | |
| 9 | SHELL := /bin/sh |
| 10 | |
| 11 | CC := @CC@ |
| 12 | |
| 13 | # Configuration parameters. |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 14 | INCLUDEDIR := @INCLUDEDIR@ |
| 15 | LIBDIR := @LIBDIR@ |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 16 | MANDIR := @MANDIR@ |
| 17 | |
| 18 | # Build parameters. |
Jason Evans | 376b152 | 2010-02-11 14:45:59 -0800 | [diff] [blame^] | 19 | CPPFLAGS := @CPPFLAGS@ -I@srcroot@include -I@objroot@include |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 20 | CFLAGS := @CFLAGS@ -fPIC -DPIC |
| 21 | ifeq (macho, @abi@) |
| 22 | CFLAGS += -dynamic |
| 23 | endif |
| 24 | LDFLAGS := @LDFLAGS@ |
| 25 | LIBS := @LIBS@ |
| 26 | RPATH_EXTRA := @RPATH_EXTRA@ |
| 27 | ifeq (macho, @abi@) |
| 28 | SO := dylib |
| 29 | else |
| 30 | SO := so |
| 31 | endif |
| 32 | REV := 0 |
| 33 | |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 34 | # Lists of files. |
Jason Evans | 376b152 | 2010-02-11 14:45:59 -0800 | [diff] [blame^] | 35 | CHDRS := @objroot@include/jemalloc@install_suffix@.h \ |
| 36 | @objroot@include/jemalloc_defs@install_suffix@.h |
| 37 | CSRCS := @srcroot@src/jemalloc.c @srcroot@src/arena.c @srcroot@src/base.c \ |
| 38 | @srcroot@src/chunk.c @srcroot@src/chunk_dss.c \ |
| 39 | @srcroot@src/chunk_mmap.c @srcroot@src/chunk_swap.c @srcroot@src/ckh.c \ |
| 40 | @srcroot@src/ctl.c @srcroot@src/extent.c @srcroot@src/hash.c \ |
| 41 | @srcroot@src/huge.c @srcroot@src/mb.c @srcroot@src/mutex.c \ |
| 42 | @srcroot@src/prof.c @srcroot@src/stats.c @srcroot@src/tcache.c |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 43 | DSOS := @objroot@lib/libjemalloc@install_suffix@.so.$(REV) \ |
| 44 | @objroot@lib/libjemalloc@install_suffix@.so \ |
| 45 | @objroot@lib/libjemalloc@install_suffix@_pic.a |
| 46 | MAN3 := @objroot@doc/jemalloc@install_suffix@.3 |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 47 | |
| 48 | .PHONY: all dist install check clean distclean relclean |
| 49 | |
| 50 | # Default target. |
Jason Evans | fe5faa2 | 2010-02-11 13:38:12 -0800 | [diff] [blame] | 51 | all: $(DSOS) |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 52 | |
Jason Evans | e476f8a | 2010-01-16 09:53:50 -0800 | [diff] [blame] | 53 | # |
| 54 | # Include generated dependency files. |
| 55 | # |
| 56 | -include $(CSRCS:@srcroot@%.c=@objroot@%.d) |
| 57 | |
Jason Evans | cc00a15 | 2009-06-25 18:06:48 -0700 | [diff] [blame] | 58 | @objroot@src/%.o: @srcroot@src/%.c |
Jason Evans | 376b152 | 2010-02-11 14:45:59 -0800 | [diff] [blame^] | 59 | @mkdir -p $(@D) |
Jason Evans | 79a7869 | 2010-01-03 16:17:55 -0800 | [diff] [blame] | 60 | $(CC) $(CFLAGS) -c $(CPPFLAGS) -o $@ $< |
| 61 | @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)" |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 62 | |
Jason Evans | cc00a15 | 2009-06-25 18:06:48 -0700 | [diff] [blame] | 63 | $(DSOS): $(CSRCS:@srcroot@%.c=@objroot@%.o) |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 64 | @mkdir -p $(@D) |
Jason Evans | bf10ae6 | 2010-01-03 11:59:19 -0800 | [diff] [blame] | 65 | $(CC) -shared -o $@ $+ $(LDFLAGS) $(LIBS) |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 66 | ln -sf libjemalloc@install_suffix@.so.$(REV) lib/libjemalloc@install_suffix@.so |
| 67 | ar crus @objroot@lib/libjemalloc@install_suffix@_pic.a $+ |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 68 | |
| 69 | install: |
Jason Evans | 376b152 | 2010-02-11 14:45:59 -0800 | [diff] [blame^] | 70 | install -d $(INCLUDEDIR)/jemalloc |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 71 | @for h in $(CHDRS); do \ |
Jason Evans | 376b152 | 2010-02-11 14:45:59 -0800 | [diff] [blame^] | 72 | echo "install -m 644 $$h $(INCLUDEDIR)/jemalloc"; \ |
| 73 | install -m 644 $$h $(INCLUDEDIR)/jemalloc; \ |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 74 | done |
| 75 | install -d $(LIBDIR) |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 76 | install -m 755 @objroot@lib/libjemalloc@install_suffix@.so.$(REV) $(LIBDIR) |
| 77 | ln -sf libjemalloc@install_suffix@.so.$(REV) $(LIBDIR)/libjemalloc@install_suffix@.so |
| 78 | install -m 755 @objroot@lib/libjemalloc@install_suffix@_pic.a $(LIBDIR) |
| 79 | install -d $(MANDIR)/man3 |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 80 | @for m in $(MAN3); do \ |
| 81 | echo "install -m 644 $$m $(MANDIR)/man3"; \ |
| 82 | install -m 644 $$m $(MANDIR)/man3; \ |
| 83 | done |
| 84 | |
| 85 | check: |
| 86 | |
| 87 | clean: |
Jason Evans | 79a7869 | 2010-01-03 16:17:55 -0800 | [diff] [blame] | 88 | rm -f $(CSRCS:@srcroot@%.c=@objroot@%.o) |
| 89 | rm -f $(CSRCS:@srcroot@%.c=@objroot@%.d) |
| 90 | rm -f $(DSOS) |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 91 | |
| 92 | distclean: clean |
| 93 | rm -f @objroot@config.log |
| 94 | rm -f @objroot@config.status |
| 95 | rm -f @objroot@cfghdrs.stamp |
| 96 | rm -f @objroot@cfgoutputs.stamp |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 97 | rm -f @cfghdrs_out@ |
| 98 | rm -f @cfgoutputs_out@ |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 99 | |
| 100 | relclean: distclean |
| 101 | rm -rf @objroot@autom4te.cache |
| 102 | rm -f @objroot@configure |
| 103 | |
| 104 | #=============================================================================== |
| 105 | # Re-configuration rules. |
| 106 | |
| 107 | ifeq (@enable_autogen@, 1) |
| 108 | @srcroot@configure : @srcroot@configure.ac |
| 109 | cd ./@srcroot@ && @AUTOCONF@ |
| 110 | |
| 111 | @objroot@config.status : @srcroot@configure |
| 112 | ./@objroot@config.status --recheck |
| 113 | |
| 114 | # cfghdrs rules. |
| 115 | @srcroot@cfghdrs.stamp.in : @srcroot@configure.ac |
| 116 | echo stamp > @srcroot@cfghdrs.stamp.in |
| 117 | |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 118 | @objroot@cfghdrs.stamp : @cfghdrs_in@ @srcroot@configure |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 119 | ./@objroot@config.status |
| 120 | @touch $@ |
| 121 | |
| 122 | @cfghdrs@ : @objroot@cfghdrs.stamp |
| 123 | |
| 124 | # cfgoutputs rules. |
| 125 | @srcroot@cfgoutputs.stamp.in : @srcroot@configure.ac |
| 126 | echo stamp > @srcroot@cfgoutputs.stamp.in |
| 127 | |
Jason Evans | b0fd501 | 2010-01-17 01:49:20 -0800 | [diff] [blame] | 128 | @objroot@cfgoutputs.stamp : @cfgoutputs_in@ @srcroot@configure |
Jason Evans | b7924f5 | 2009-06-23 19:01:18 -0700 | [diff] [blame] | 129 | ./@objroot@config.status |
| 130 | @touch $@ |
| 131 | |
| 132 | # There must be some action in order for make to re-read Makefile when it is |
| 133 | # out of date. |
| 134 | @cfgoutputs@ : @objroot@cfgoutputs.stamp |
| 135 | @true |
| 136 | endif |