1# Hard coded Makefile for windows 2# 3# Tip: If you want to be able to build 32bit and 64 bit versions 4# on the same machine you can install libevent and pthreads in 5# let's say: /usr/local32 and /usr/local64 and you should 6# be able to compile with: 7# make -f win32/Makefile.mingw LOCAL=/usr/local32 8# make -f win32/Makefile.mingw LOCAL=/usr/local64 CC=x86_64-w64-mingw32-gcc 9# 10 11CC = gcc 12LOCAL=/usr/local 13LOCALLIB=-L${LOCAL}/lib 14LOCALINC=-I${LOCAL}/include 15DEST=${LOCAL} 16INSTALLDIRS=${DEST}/bin ${DEST}/lib ${DEST}/include/memcached 17 18OBJDIR = .libs \ 19 .libs/engines \ 20 .libs/daemon \ 21 .libs/engines/default_engine \ 22 .libs/extensions/daemon \ 23 .libs/extensions/loggers \ 24 .libs/extensions/protocol \ 25 .libs/programs \ 26 .libs/testsuite \ 27 .libs/utilities \ 28 .libs/win32 29 30BINARIES= mcstat.exe \ 31 memcached.exe \ 32 engine_testapp.exe \ 33 sizes.exe \ 34 .libs/ascii_scrub.so \ 35 .libs/basic_engine_testsuite.so \ 36 .libs/default_engine.so \ 37 .libs/example_protocol.so \ 38 .libs/eventlog_logger.so \ 39 .libs/stdin_term_handler.so 40 41LIB=${LOCALLIB} 42INCLUDE=-Iinclude -I. -Idaemon -Iprograms -Iextensions -Iwin32 -I.libs ${LOCALINC} 43 44all: ${BINARIES} 45 46install: ${BINARIES} ${INSTALLDIRS} 47 cp memcached.exe .libs/default_engine.so .libs/ascii_scrub.so ${DEST}/lib 48 cp mcstat.exe ${DEST}/bin 49 cp include/memcached/* ${DEST}/include/memcached 50 51CFLAGS = -std=gnu99 -O2 -g -DNDEBUG -fno-strict-aliasing -Wall \ 52 -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \ 53 -Wredundant-decls \ 54 ${INCLUDE} -DHAVE_CONFIG_H 55 56MCSTAT_SRC = programs/mcstat.c win32/win32.c 57MCSTAT_OBJS = ${MCSTAT_SRC:%.c=.libs/%.o} 58 59MEMCACHED_SRC = \ 60 daemon/cache.c \ 61 daemon/hash.c \ 62 daemon/isasl.c \ 63 daemon/memcached.c \ 64 daemon/sasl_defs.c \ 65 daemon/stats.c \ 66 daemon/thread.c \ 67 daemon/topkeys.c \ 68 utilities/config_parser.c \ 69 utilities/engine_loader.c \ 70 utilities/extension_loggers.c\ 71 utilities/genhash.c \ 72 utilities/util.c \ 73 win32/defs.c \ 74 win32/dlfcn.c \ 75 win32/win32.c 76MEMCACHED_OBJS = ${MEMCACHED_SRC:%.c=.libs/%.o} 77 78ENGINE_TESTAPP_SRC = \ 79 programs/engine_testapp.c \ 80 programs/mock_server.c \ 81 utilities/config_parser.c \ 82 utilities/engine_loader.c \ 83 utilities/extension_loggers.c \ 84 utilities/util.c \ 85 win32/dlfcn.c 86ENGINE_TESTAPP_OBJS = ${ENGINE_TESTAPP_SRC:%.c=.libs/%.o} 87 88SIZES_SRC = programs/sizes.c 89SIZES_OBJS = ${SIZES_SRC:%.c=.libs/%.o} 90 91DEFAULT_ENGINE_SRC = \ 92 engines/default_engine/assoc.c \ 93 engines/default_engine/default_engine.c \ 94 engines/default_engine/items.c \ 95 engines/default_engine/slabs.c \ 96 utilities/util.c 97DEFAULT_ENGINE_OBJS = ${DEFAULT_ENGINE_SRC:%.c=.libs/%.o} 98 99ASCII_SCRUB_SRC = extensions/protocol/ascii_scrub.c 100ASCII_SCRUB_OBJS = ${ASCII_SCRUB_SRC:%.c=.libs/%.o} 101 102EXAMPLE_PROTOCOL_SRC = extensions/protocol/example_protocol.c 103EXAMPLE_PROTOCOL_OBJS = ${EXAMPLE_PROTOCOL_SRC:%.c=.libs/%.o} 104 105STDIN_TERM_HANDLER_SRC = extensions/daemon/stdin_check.c 106STDIN_TERM_HANDLER_OBJS = ${STDIN_TERM_HANDLER_SRC:%.c=.libs/%.o} 107 108EVENTLOG_LOGGER_SRC = extensions/loggers/eventlog_logger.c 109EVENTLOG_LOGGER_OBJS = ${EVENTLOG_LOGGER_SRC:%.c=.libs/%.o} 110 111BASIC_ENGINE_TESTSUITE_SRC = testsuite/basic_engine_testsuite.c 112BASIC_ENGINE_TESTSUITE_OBJS = ${BASIC_ENGINE_TESTSUITE_SRC:%.c=.libs/%.o} 113 114GENFILES=.libs/config_version.h 115 116mcstat.exe: ${OBJDIR} ${GENFILES} $(MCSTAT_OBJS) 117 ${LINK.c} -o $@ $(MCSTAT_OBJS) \ 118 ${LIB} -lmswsock -lws2_32 119 120memcached.exe: ${OBJDIR} ${GENFILES} $(MEMCACHED_OBJS) 121 ${LINK.c} -o $@ $(MEMCACHED_OBJS) \ 122 ${LIB} -levent -lmswsock \ 123 -lws2_32 -lpthread 124 125engine_testapp.exe: ${OBJDIR} ${GENFILES} $(ENGINE_TESTAPP_OBJS) 126 ${LINK.c} -o $@ $(ENGINE_TESTAPP_OBJS) \ 127 ${LIB} -levent -lmswsock \ 128 -lws2_32 -lpthread 129 130sizes.exe: ${OBJDIR} ${GENFILES} $(SIZES_OBJS) 131 ${LINK.c} -o $@ $(SIZES_OBJS) 132 133.libs/default_engine.so: ${OBJDIR} $(DEFAULT_ENGINE_OBJS) 134 ${LINK.c} -o $@ -shared ${DEFAULT_ENGINE_OBJS} \ 135 ${LIB} -lws2_32 -lpthread 136 137.libs/ascii_scrub.so: ${OBJDIR} $(ASCII_SCRUB_OBJS) 138 ${LINK.c} -o $@ -shared ${ASCII_SCRUB_OBJS} 139 140.libs/example_protocol.so: ${OBJDIR} $(EXAMPLE_PROTOCOL_OBJS) 141 ${LINK.c} -o $@ -shared ${EXAMPLE_PROTOCOL_OBJS} 142 143.libs/stdin_term_handler.so: ${OBJDIR} $(STDIN_TERM_HANDLER_OBJS) 144 ${LINK.c} -o $@ -shared ${STDIN_TERM_HANDLER_OBJS} ${LIBS} \ 145 ${LIB} -lpthread 146 147.libs/eventlog_logger.so: ${OBJDIR} $(EVENTLOG_LOGGER_OBJS) 148 ${LINK.c} -o $@ -shared ${EVENTLOG_LOGGER_OBJS} ${LIBS} \ 149 ${LIB} 150 151.libs/basic_engine_testsuite.so: ${OBJDIR} $(BASIC_ENGINE_TESTSUITE_OBJS) 152 ${LINK.c} -o $@ -shared ${BASIC_ENGINE_TESTSUITE_OBJS} ${LIB} -lpthread -lws2_32 153 154.libs/config_version.h: 155 ./win32/config.sh 156 157${OBJDIR} ${INSTALLDIRS}:; -@mkdir -p $@ 158 159.libs/%.o: %.c 160 ${COMPILE.c} -MMD $< -o $@ 161 162clean: 163 $(RM) ${BINARIES} \ 164 ${ASCII_SCRUB_OBJS:.o=.d} \ 165 ${ASCII_SCRUB_OBJS} \ 166 ${BASIC_ENGINE_TESTSUITE_OBJS:.o=.d} \ 167 ${BASIC_ENGINE_TESTSUITE_OBJS} \ 168 ${DEFAULT_ENGINE_OBJS:.o=.d} \ 169 ${DEFAULT_ENGINE_OBJS} \ 170 ${ENGINE_TESTAPP_OBJS:.o=.d} \ 171 ${ENGINE_TESTAPP_OBJS} \ 172 ${EXAMPLE_PROTOCOL_OBJS:.o=.d} \ 173 ${EXAMPLE_PROTOCOL_OBJS} \ 174 ${GENFILES} \ 175 ${MCSTAT_OBJS:.o=.d} \ 176 ${MCSTAT_OBJS} \ 177 ${MEMCACHED_OBJS:.o=.d} \ 178 ${MEMCACHED_OBJS} \ 179 ${SIZES_OBJS:.o=.d} \ 180 ${SIZES_OBJS} \ 181 ${EVENTLOG_LOGGER_OBJS:.o=.d} \ 182 ${EVENTLOG_LOGGER_OBJS} \ 183 ${STDIN_TERM_HANDLER_OBJS:.o=.d} \ 184 ${STDIN_TERM_HANDLER_OBJS} 185 186-include ${ASCII_SCRUB_OBJS:.o=.d} \ 187 ${BASIC_ENGINE_TESTSUITE_OBJS:.o=.d} \ 188 ${DEFAULT_ENGINE_OBJS:.o=.d} \ 189 ${ENGINE_TESTAPP_OBJS:.o=.d} \ 190 ${EXAMPLE_PROTOCOL_OBJS:.o=.d} \ 191 ${MEMCACHED_OBJS:.o=.d} \ 192 ${MCSTAT_OBJS:.o=.d} \ 193 ${SIZES_OBJS:.o=.d} \ 194 ${EVENTLOG_LOGGER_OBJS:.o=.d} \ 195 ${STDIN_TERM_HANDLER_OBJS:.o=.d} 196