Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 256 lines (203 sloc) 6.907 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
AC_INIT(src/logic/boot.h)
AC_CONFIG_AUX_DIR(ac)
AC_CANONICAL_TARGET

AM_INIT_AUTOMAKE(kumofs, 0.4.4)
AC_CONFIG_HEADER(config.h)


AC_SUBST(CFLAGS)
CFLAGS="-O4 -Wall $CFLAGS"

AC_SUBST(CXXFLAGS)
CXXFLAGS="-O4 -Wall $CXXFLAGS"

AC_PROG_CC
AC_PROG_CXX

AC_PROG_LIBTOOL
AM_PROG_AS
AM_PROG_CC_C_O


AC_CACHE_CHECK([for __sync_* atomic operations], kumofs_cv_atomic_ops, [
AC_TRY_LINK([
int atomic_sub(int i) { return __sync_sub_and_fetch(&i, 1); }
int atomic_add(int i) { return __sync_add_and_fetch(&i, 1); }
int atomic_cas(int i) { return __sync_bool_compare_and_swap(&i, 0, 1); }
], [], kumofs_cv_atomic_ops="yes")
])
if test "$kumofs_cv_atomic_ops" != "yes"; then
AC_MSG_ERROR([__sync_* atomic operations are not supported.

Note that gcc < 4.1 is not supported.

If you are using gcc >= 4.1 and the default target CPU architecture is "i386", try to
add CFLAGS="--march=i686" and CXXFLAGS="-march=i686" options to ./configure as follows:

  $ ./configure CFLAGS="-march=i686" CXXFLAGS="-march=i686"
])
fi


AC_LANG_PUSH(C++)
AC_CACHE_CHECK([for inner class friend], kumofs_cv_inner_class_friend, [
AC_TRY_COMPILE([
class base {
class inner { int val; friend class base; };
class check { void test() { inner r; r.val = 0; } };
};
], [], kumofs_cv_inner_class_friend="yes")
])
if test "$kumofs_cv_inner_class_friend" != "yes"; then
AC_MSG_ERROR([inner class friend is not supported.
Note that g++ < 4.1 is not supported. Use g++ >= 4.1.])
fi
AC_LANG_POP


AC_ARG_WITH([msgpack],
AS_HELP_STRING([--with-msgpack=DIR],
[specify the root directory for msgpack library]),
[msgpack_path="$withval"], [])
if test "$msgpack_path" != ""; then
CXXFLAGS="$CXXFLAGS -I$msgpack_path/include"
CFLAGS="$CFLAGS -I$msgpack_path/include"
LDFLAGS="$LDFLAGS -L$msgpack_path/lib"
fi


storage_type="tchdb"


AC_ARG_WITH([tokyocabinet],
AS_HELP_STRING([--with-tokyocabinet@<:@=DIR@:>@],
[use Tokyo Cabinet for the backend storage]),
[tokyocabinet_path="$withval"], [])
if test "$tokyocabinet_path" != ""; then
CXXFLAGS="$CXXFLAGS -I$tokyocabinet_path/include"
CFLAGS="$CFLAGS -I$tokyocabinet_path/include"
LDFLAGS="$LDFLAGS -L$tokyocabinet_path/lib"
fi


#AC_ARG_WITH([luxio],
# AS_HELP_STRING([--with-luxio@<:@=DIR@:>@],
# [use LuxIO for the backend storage (NOT IMPLEMENTED)]),
# [luxio_path="$withval"], [])
#if test "$luxio_path" != ""; then
# storage_type="luxio"
# CXXFLAGS="$CXXFLAGS -I$luxio_path/include"
# CFLAGS="$CFLAGS -I$luxio_path/include"
# LDFLAGS="$LDFLAGS -L$luxio_path/lib"
#fi


AC_MSG_CHECKING([if tcbdb is enabled])
AC_ARG_ENABLE(tcbdb,
AS_HELP_STRING([--enable-tcbdb],
[use tcbdb instead of tchdb.]) )
if test "$enable_tcbdb" = "yes"; then
storage_type="tcbdb"
fi
AC_MSG_RESULT($enable_tcbdb)


AC_MSG_CHECKING([if tcadb is enabled])
AC_ARG_ENABLE(tcadb,
AS_HELP_STRING([--enable-tcadb],
[use tcadb instead of tchdb.]) )
if test "$enable_tcadb" = "yes"; then
storage_type="tcadb"
fi
AC_MSG_RESULT($enable_tcadb)



AC_CHECK_LIB(stdc++, main)

AC_CHECK_LIB(pthread,pthread_create,,
AC_MSG_ERROR([Can't find pthread library]))

AC_CHECK_LIB(z,deflate,,
AC_MSG_ERROR([Can't find zlib library]))

AC_CHECK_HEADERS(openssl/sha.h,,
AC_MSG_ERROR([Can't find openssl header]))
AC_CHECK_LIB(crypto,SHA1,,
AC_MSG_ERROR([Can't find openssl library]))


AC_MSG_CHECKING([if jemalloc is enabled])
AC_ARG_WITH([jemalloc],
AS_HELP_STRING([--with-jemalloc@<:@=DIR@:>@],
[link jemalloc. This is recommended. See http://www.canonware.com/jemalloc/ for details.]),
[with_jemalloc="$withval"], [with_jemalloc="no"])
AC_MSG_RESULT($with_jemalloc)
if test "$with_jemalloc" != "no"; then
if test "$with_jemalloc" != "yes"; then
LDFLAGS="$LDFLAGS -L$with_jemalloc/lib"
LDFLAGS="$LDFLAGS -L$with_jemalloc/lib64"
fi
AC_CHECK_LIB(jemalloc,malloc,,
AC_MSG_ERROR([Can't find jemalloc library]))
fi


AC_MSG_CHECKING([if tcmalloc is enabled])
AC_ARG_WITH([tcmalloc],
AS_HELP_STRING([--with-tcmalloc@<:@=DIR@:>@],
[link tcmalloc]),
[with_tcmalloc="$withval"], [with_tcmalloc="no"])
AC_MSG_RESULT($with_tcmalloc)
if test "$with_tcmalloc" != "no"; then
if test "$with_tcmalloc" != "yes"; then
LDFLAGS="$LDFLAGS -L$with_tcmalloc/lib"
LDFLAGS="$LDFLAGS -L$with_tcmalloc/lib64"
fi
AC_CHECK_LIB(tcmalloc,malloc,,
AC_MSG_ERROR([Can't find tcmalloc library]))
fi


AC_CHECK_LIB(msgpack,main,,
AC_MSG_ERROR([Can't find msgpack library.
--with-msgpack=DIR option may be needed.]))

AC_CHECK_LIB(msgpackc,main,,
AC_MSG_ERROR([Can't find msgpackc library.
--with-msgpack=DIR option may be needed.]))

AC_CHECK_HEADERS(tchdb.h,,
AC_MSG_ERROR([Can't find Tokyo Cabinet header.
--with-tokyocabinet=DIR option may be needed.]))
AC_CHECK_LIB(tokyocabinet,tchdbget,,
AC_MSG_ERROR([Can't find tokyocabinet library.
--with-tokyocabinet=DIR option may be needed.]))

case "$target_os" in
solaris*)
AC_CHECK_LIB(socket,accept,,
AC_MSG_ERROR([Can't find libsocket.]))
AC_CHECK_LIB(nsl,inet_ntop,,
AC_MSG_ERROR([Can't find libnsl.]))
AC_CHECK_LIB(sendfile,sendfile,,
AC_MSG_ERROR([Can't find libsendfile.]))
CXXFLAGS="$CXXFLAGS -D_REENTRANT"
CFLAGS="$CFLAGS -D_REENTRANT"
;;
esac

AC_MSG_CHECKING([storage type])
AC_MSG_RESULT($storage_type)

AM_CONDITIONAL(STORAGE_TCHDB, test "$storage_type" = "tchdb")
AM_CONDITIONAL(STORAGE_TCBDB, test "$storage_type" = "tcbdb")
AM_CONDITIONAL(STORAGE_TCADB, test "$storage_type" = "tcadb")
AM_CONDITIONAL(STORAGE_LUXIO, test "$storage_type" = "luxio")

if test "$storage_type" = "tchdb" -o "$storage_type" = "tcbdb" -o "$storage_type" = "tcadb"; then
CXXFLAGS="$CXXFLAGS -DUSE_TOKYOCABINET"
CFLAGS="$CFLAGS -DUSE_TOKYOCABINET"
fi

if test "$storage_type" = "luxio"; then
AC_LANG_PUSH(C++)
AC_CHECK_HEADERS(luxio/btree.h) # FIXME luxio UINT8_MAX
#AC_CHECK_HEADERS(luxio/btree.h,,
# AC_MSG_ERROR([Can't find luxio header]))
AC_LANG_POP
fi



AC_MSG_CHECKING([if debug option is enabled])
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--disable-debug],
[disable assert macros and omit -g option.]) )
if test "$enable_debug" != "no"; then
CXXFLAGS="$CXXFLAGS -g"
CFLAGS="$CFLAGS -g"
else
CXXFLAGS="$CXXFLAGS -DNDEBUG"
CFLAGS="$CFLAGS -DNDEBUG"
fi
AC_MSG_RESULT($enable_debug)


AC_MSG_CHECKING([if trace message is enabled])
AC_ARG_ENABLE(trace,
AS_HELP_STRING([--enable-trace], [enable trace messages.]) )
if test "$enable_trace" = "yes"; then
CXXFLAGS="$CXXFLAGS -DMLOGGER_LEVEL=0"
CFLAGS="$CFLAGS -DMLOGGER_LEVEL=0"
else
CXXFLAGS="$CXXFLAGS -DMLOGGER_LEVEL=2"
CFLAGS="$CFLAGS -DMLOGGER_LEVEL=2"
fi
AC_MSG_RESULT($enable_trace)


AC_OUTPUT([src/mp/Makefile
src/mpsrc/Makefile
src/gate/Makefile
src/storage/Makefile
src/log/Makefile
src/kazuhiki/Makefile
src/rpc/Makefile
src/logic/manager/Makefile
src/logic/server/Makefile
src/logic/gateway/Makefile
src/logic/Makefile
src/command/Makefile
src/Makefile
Makefile])

Something went wrong with that request. Please try again.