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