1bin_PROGRAMS = memcached
2pkginclude_HEADERS = protocol_binary.h xxhash.h
3noinst_PROGRAMS = memcached-debug sizes testapp timedrun
4
5BUILT_SOURCES=
6
7testapp_SOURCES = testapp.c util.c util.h stats_prefix.c stats_prefix.h jenkins_hash.c murmur3_hash.c hash.h cache.c crc32c.c
8
9timedrun_SOURCES = timedrun.c
10
11memcached_SOURCES = memcached.c memcached.h \
12                    hash.c hash.h \
13                    jenkins_hash.c jenkins_hash.h \
14                    murmur3_hash.c murmur3_hash.h \
15                    queue.h \
16                    slabs.c slabs.h \
17                    items.c items.h \
18                    assoc.c assoc.h \
19                    thread.c daemon.c \
20                    stats_prefix.c stats_prefix.h \
21                    util.c util.h \
22                    trace.h cache.c cache.h sasl_defs.h \
23                    bipbuffer.c bipbuffer.h \
24                    base64.c base64.h \
25                    logger.c logger.h \
26                    crawler.c crawler.h \
27                    itoa_ljust.c itoa_ljust.h \
28                    slab_automove.c slab_automove.h \
29                    authfile.c authfile.h \
30                    restart.c restart.h \
31                    proto_text.c proto_text.h \
32                    proto_bin.c proto_bin.h
33
34if BUILD_SOLARIS_PRIVS
35memcached_SOURCES += solaris_priv.c
36endif
37
38if BUILD_LINUX_PRIVS
39memcached_SOURCES += linux_priv.c
40endif
41
42if BUILD_OPENBSD_PRIVS
43memcached_SOURCES += openbsd_priv.c
44endif
45
46if BUILD_FREEBSD_PRIVS
47memcached_SOURCES += freebsd_priv.c
48endif
49
50if BUILD_DARWIN_PRIVS
51memcached_SOURCES += darwin_priv.c
52endif
53
54if ENABLE_SASL
55memcached_SOURCES += sasl_defs.c
56endif
57
58if ENABLE_PROXY
59memcached_SOURCES += proto_proxy.c proto_proxy.h vendor/mcmc/mcmc.h \
60					 proxy_xxhash.c proxy.h \
61					 proxy_ustats.c \
62					 proxy_ratelim.c \
63					 proxy_jump_hash.c proxy_request.c \
64					 proxy_result.c proxy_inspector.c \
65					 proxy_mutator.c \
66					 proxy_network.c proxy_lua.c \
67					 proxy_luafgen.c \
68					 proxy_config.c proxy_ring_hash.c \
69					 proxy_internal.c \
70					 proxy_tls.c proxy_tls.h \
71					 md5.c md5.h
72endif
73
74if ENABLE_EXTSTORE
75memcached_SOURCES += extstore.c extstore.h \
76                     crc32c.c crc32c.h \
77                     storage.c storage.h \
78                     slab_automove_extstore.c slab_automove_extstore.h
79endif
80
81if ENABLE_TLS
82memcached_SOURCES += tls.c tls.h
83endif
84
85memcached_debug_SOURCES = $(memcached_SOURCES)
86memcached_CPPFLAGS = -DNDEBUG
87memcached_debug_LDADD = @PROFILER_LDFLAGS@
88memcached_debug_CFLAGS = @PROFILER_FLAGS@
89
90memcached_LDADD =
91memcached_LDFLAGS =
92memcached_debug_LDFLAGS =
93memcached_DEPENDENCIES =
94memcached_debug_DEPENDENCIES =
95CLEANFILES=
96
97if BUILD_LINUX_PRIVS
98memcached_LDADD += -lseccomp
99memcached_debug_LDADD += -lseccomp
100endif
101
102if BUILD_DTRACE
103BUILT_SOURCES += memcached_dtrace.h
104CLEANFILES += memcached_dtrace.h
105endif
106
107if DTRACE_INSTRUMENT_OBJ
108memcached_LDADD += memcached_dtrace.o
109memcached_DEPENDENCIES += memcached_dtrace.o
110memcached_debug_LDADD += memcached_debug_dtrace.o
111memcached_debug_DEPENDENCIES += memcached_debug_dtrace.o
112CLEANFILES += memcached_dtrace.o memcached_debug_dtrace.o
113endif
114
115if ENABLE_PROXY
116memcached_LDADD += vendor/lua/src/liblua.a vendor/mcmc/mcmc.o
117memcached_debug_LDADD += vendor/lua/src/liblua.a vendor/mcmc/mcmc.o
118memcached_LDFLAGS += -rdynamic
119memcached_debug_LDFLAGS += -rdynamic
120endif
121
122if ENABLE_PROXY_URING
123memcached_LDADD += vendor/liburing/src/liburing.a
124memcached_debug_LDADD += vendor/liburing/src/liburing.a
125endif
126
127memcached_debug_CFLAGS += -DMEMCACHED_DEBUG
128
129# build fails on Darwin with const signature replacements.
130if DARWIN
131memcached_dtrace.h: memcached_dtrace.d
132	${DTRACE} -h -s memcached_dtrace.d
133else
134memcached_dtrace.h: memcached_dtrace.d
135	${DTRACE} -h -s memcached_dtrace.d
136	sed -e 's,void \*,const void \*,' memcached_dtrace.h | \
137	sed -e 's,char \*,const char \*,g' | tr '\t' ' ' > mmc_dtrace.tmp
138	mv mmc_dtrace.tmp memcached_dtrace.h
139endif
140
141memcached_dtrace.o: $(memcached_OBJECTS)
142	$(DTRACE) $(DTRACEFLAGS) -G -o memcached_dtrace.o -s ${srcdir}/memcached_dtrace.d $(memcached_OBJECTS)
143
144memcached_debug_dtrace.o: $(memcached_debug_OBJECTS)
145	$(DTRACE) $(DTRACEFLAGS) -G -o memcached_debug_dtrace.o -s ${srcdir}/memcached_dtrace.d $(memcached_debug_OBJECTS)
146
147
148SUBDIRS = doc
149DIST_DIRS = scripts
150EXTRA_DIST = doc scripts t memcached.spec memcached_dtrace.d version.m4 README.md LICENSE.bipbuffer
151EXTRA_DIST += vendor/Makefile vendor/lua/doc/* vendor/lua/Makefile vendor/lua/README
152EXTRA_DIST += vendor/lua/src/*.c vendor/lua/src/*.h vendor/lua/src/Makefile
153EXTRA_DIST += vendor/mcmc/LICENSE vendor/mcmc/Makefile vendor/mcmc/README.md vendor/mcmc/*.c vendor/mcmc/*.h
154
155if ENABLE_PROXY
156SUBDIRS += vendor
157endif
158
159MOSTLYCLEANFILES = *.gcov *.gcno *.gcda *.tcov
160
161if ENABLE_TLS
162test_tls:
163	$(MAKE) SSL_TEST=1 test
164
165test_basic_tls:
166	@if test $(SSL_TEST)1 != 1; then \
167	  echo "Running basic tests with TLS"; \
168	  $(builddir)/testapp && \
169	  prove $(srcdir)/t/binary.t $(srcdir)/t/getset.t $(srcdir)/t/ssl* && \
170	  echo "Finished running basic TLS tests"; \
171	else \
172	  echo "Set SSL_TEST=1 to enable TLS tests"; \
173	fi
174endif
175
176test:	memcached-debug sizes testapp
177	$(builddir)/sizes
178	$(builddir)/testapp
179if ENABLE_TLS
180	@if test $(SSL_TEST)1 = 1; then \
181          $(MAKE) SSL_TEST=1  test_basic_tls; \
182	fi
183endif
184	@if test -n "${PARALLEL}"; then \
185	  prove $(srcdir)/t -j ${PARALLEL}; \
186	else \
187	  prove $(srcdir)/t; \
188	fi
189	@if test `basename $(PROFILER)` = "gcov"; then \
190	  for file in memcached_debug-*.gc??; do \
191	    mv -f $$file `echo $$file | sed 's/memcached_debug-//'`; \
192	  done && \
193	  for file in *.gcda; do \
194	    srcfile=`echo $$file | sed 's/.gcda/.c/'`; \
195	    if test -n "`echo $(memcached_debug_SOURCES) | grep $$srcfile`"; then \
196	      echo `$(PROFILER) $$srcfile` | sed 's/'$$srcfile':.*//'; \
197	    fi \
198	  done \
199	elif test `basename $(PROFILER)` = "tcov"; then \
200	  files=`grep SRCFILE memcached-debug.profile/tcovd | sed 's/SRCFILE://' | sort | uniq` && \
201	  $(PROFILER) -x memcached-debug.profile $$files 2>&1; \
202	  for file in *.tcov; do \
203	    srcfile=`echo $$file | sed 's/.tcov//'`; \
204	    if test -n "`echo $(memcached_debug_SOURCES) | grep $$srcfile`"; then \
205	      echo $$srcfile : `grep 'Percent of the file executed' $$file`; \
206	    fi \
207	  done \
208	else :; fi
209
210docs:
211	(cat Doxyfile ; echo "PROJECT_NUMBER=`cat version.num`") | doxygen -
212
213dist-hook:
214	rm -f $(distdir)/*/*~ $(distdir)/t/lib/*~ $(distdir)/*~
215
216maintainer-clean-local:
217	-rm Makefile.in
218	-rm aclocal.m4
219	-rm config.guess
220	-rm config.sub
221	-rm depcomp
222	-rm install-sh
223	-rm ltmain.sh
224	-rm missing
225	-rm configure
226	-rm config.log
227	-rm config.status
228