blob: 788fedc965630ad41665ddea20289d5a1b8142e8 [file] [log] [blame]
Jason Evansb7924f52009-06-23 19:01:18 -07001# Clear out all vpaths, then set just one (default vpath) for the main build
2# directory.
3vpath
4vpath % .
5
6# Clear the default suffixes, so that built-in rules are not used.
7.SUFFIXES :
8
9SHELL := /bin/sh
10
11CC := @CC@
12
13# Configuration parameters.
Jason Evansb7924f52009-06-23 19:01:18 -070014INCLUDEDIR := @INCLUDEDIR@
15LIBDIR := @LIBDIR@
Jason Evansb7924f52009-06-23 19:01:18 -070016MANDIR := @MANDIR@
17
18# Build parameters.
Jason Evans376b1522010-02-11 14:45:59 -080019CPPFLAGS := @CPPFLAGS@ -I@srcroot@include -I@objroot@include
Jason Evansb7924f52009-06-23 19:01:18 -070020CFLAGS := @CFLAGS@ -fPIC -DPIC
21ifeq (macho, @abi@)
22CFLAGS += -dynamic
23endif
24LDFLAGS := @LDFLAGS@
25LIBS := @LIBS@
26RPATH_EXTRA := @RPATH_EXTRA@
27ifeq (macho, @abi@)
28SO := dylib
29else
30SO := so
31endif
32REV := 0
33
Jason Evansb0fd5012010-01-17 01:49:20 -080034# Lists of files.
Jason Evans376b1522010-02-11 14:45:59 -080035CHDRS := @objroot@include/jemalloc@install_suffix@.h \
36 @objroot@include/jemalloc_defs@install_suffix@.h
37CSRCS := @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 Evansb0fd5012010-01-17 01:49:20 -080043DSOS := @objroot@lib/libjemalloc@install_suffix@.so.$(REV) \
44 @objroot@lib/libjemalloc@install_suffix@.so \
45 @objroot@lib/libjemalloc@install_suffix@_pic.a
46MAN3 := @objroot@doc/jemalloc@install_suffix@.3
Jason Evansb7924f52009-06-23 19:01:18 -070047
48.PHONY: all dist install check clean distclean relclean
49
50# Default target.
Jason Evansfe5faa22010-02-11 13:38:12 -080051all: $(DSOS)
Jason Evansb7924f52009-06-23 19:01:18 -070052
Jason Evanse476f8a2010-01-16 09:53:50 -080053#
54# Include generated dependency files.
55#
56-include $(CSRCS:@srcroot@%.c=@objroot@%.d)
57
Jason Evanscc00a152009-06-25 18:06:48 -070058@objroot@src/%.o: @srcroot@src/%.c
Jason Evans376b1522010-02-11 14:45:59 -080059 @mkdir -p $(@D)
Jason Evans79a78692010-01-03 16:17:55 -080060 $(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 Evansb7924f52009-06-23 19:01:18 -070062
Jason Evanscc00a152009-06-25 18:06:48 -070063$(DSOS): $(CSRCS:@srcroot@%.c=@objroot@%.o)
Jason Evansb7924f52009-06-23 19:01:18 -070064 @mkdir -p $(@D)
Jason Evansbf10ae62010-01-03 11:59:19 -080065 $(CC) -shared -o $@ $+ $(LDFLAGS) $(LIBS)
Jason Evansb0fd5012010-01-17 01:49:20 -080066 ln -sf libjemalloc@install_suffix@.so.$(REV) lib/libjemalloc@install_suffix@.so
67 ar crus @objroot@lib/libjemalloc@install_suffix@_pic.a $+
Jason Evansb7924f52009-06-23 19:01:18 -070068
69install:
Jason Evans376b1522010-02-11 14:45:59 -080070 install -d $(INCLUDEDIR)/jemalloc
Jason Evansb7924f52009-06-23 19:01:18 -070071 @for h in $(CHDRS); do \
Jason Evans376b1522010-02-11 14:45:59 -080072 echo "install -m 644 $$h $(INCLUDEDIR)/jemalloc"; \
73 install -m 644 $$h $(INCLUDEDIR)/jemalloc; \
Jason Evansb7924f52009-06-23 19:01:18 -070074done
75 install -d $(LIBDIR)
Jason Evansb0fd5012010-01-17 01:49:20 -080076 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 Evansb7924f52009-06-23 19:01:18 -070080 @for m in $(MAN3); do \
81 echo "install -m 644 $$m $(MANDIR)/man3"; \
82 install -m 644 $$m $(MANDIR)/man3; \
83done
84
85check:
86
87clean:
Jason Evans79a78692010-01-03 16:17:55 -080088 rm -f $(CSRCS:@srcroot@%.c=@objroot@%.o)
89 rm -f $(CSRCS:@srcroot@%.c=@objroot@%.d)
90 rm -f $(DSOS)
Jason Evansb7924f52009-06-23 19:01:18 -070091
92distclean: 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 Evansb0fd5012010-01-17 01:49:20 -080097 rm -f @cfghdrs_out@
98 rm -f @cfgoutputs_out@
Jason Evansb7924f52009-06-23 19:01:18 -070099
100relclean: distclean
101 rm -rf @objroot@autom4te.cache
102 rm -f @objroot@configure
103
104#===============================================================================
105# Re-configuration rules.
106
107ifeq (@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 Evansb0fd5012010-01-17 01:49:20 -0800118@objroot@cfghdrs.stamp : @cfghdrs_in@ @srcroot@configure
Jason Evansb7924f52009-06-23 19:01:18 -0700119 ./@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 Evansb0fd5012010-01-17 01:49:20 -0800128@objroot@cfgoutputs.stamp : @cfgoutputs_in@ @srcroot@configure
Jason Evansb7924f52009-06-23 19:01:18 -0700129 ./@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
136endif