| 1 |
AC_INIT(crash/Crash.cc) |
|---|
| 2 |
AM_INIT_AUTOMAKE(libCrash,0.0.10) |
|---|
| 3 |
|
|---|
| 4 |
# For development only |
|---|
| 5 |
#AC_DISABLE_SHARED |
|---|
| 6 |
|
|---|
| 7 |
CRASH_MODULES=script |
|---|
| 8 |
|
|---|
| 9 |
# -D_POSIX_C_SOURCE=2 required for mlock on Solaris |
|---|
| 10 |
EXTRA_CXXFLAGS="-D_REENTRANT -Wall" |
|---|
| 11 |
|
|---|
| 12 |
AM_PROG_LIBTOOL |
|---|
| 13 |
AC_PROG_CXX |
|---|
| 14 |
AC_PROG_MAKE_SET |
|---|
| 15 |
AC_PROG_INSTALL |
|---|
| 16 |
|
|---|
| 17 |
AC_CHECK_TYPE(struct flock, [ AC_DEFINE(HAVE_STRUCT_FLOCK, 1, [Have flock struct]) ], , [ |
|---|
| 18 |
#include <sys/fcntl.h> |
|---|
| 19 |
]) |
|---|
| 20 |
AC_CHECK_FUNCS(mlock bswap_64) |
|---|
| 21 |
|
|---|
| 22 |
AC_CHECK_FUNC(nanosleep, |
|---|
| 23 |
AC_DEFINE(HAVE_NANOSLEEP, 1, [Have nanosleep]), |
|---|
| 24 |
AC_SEARCH_LIBS(nanosleep, rt, |
|---|
| 25 |
[ |
|---|
| 26 |
AC_DEFINE(HAVE_NANOSLEEP, 1, [Have nanosleep]) |
|---|
| 27 |
]) |
|---|
| 28 |
) |
|---|
| 29 |
|
|---|
| 30 |
AC_LANG_CPLUSPLUS |
|---|
| 31 |
|
|---|
| 32 |
AC_ARG_ENABLE(debug, [ --enable-debug enable debugging CXXFLAGS (-Wall -g3) [off]]) |
|---|
| 33 |
AC_ARG_ENABLE(profiling, [ --enable-profiling enable profiling CXXFLAGS (-pg -g3) [off]]) |
|---|
| 34 |
AC_ARG_ENABLE(sqlite, [ --enable-sqlite enable SQLite support [on]]) |
|---|
| 35 |
AC_ARG_ENABLE(mysql, [ --enable-mysql enable MySQL support [on]]) |
|---|
| 36 |
AC_ARG_ENABLE(mhash, [ --enable-mhash enable mhash support [on]]) |
|---|
| 37 |
AC_ARG_ENABLE(mcrypt, [ --enable-mcrypt enable mcrypt support [on]]) |
|---|
| 38 |
AC_ARG_ENABLE(openssl, [ --enable-openssl enable OpenSSL support [yes]]) |
|---|
| 39 |
|
|---|
| 40 |
AC_CHECK_SIZEOF(char) |
|---|
| 41 |
AC_CHECK_SIZEOF(short) |
|---|
| 42 |
AC_CHECK_SIZEOF(int) |
|---|
| 43 |
AC_CHECK_SIZEOF(long) |
|---|
| 44 |
AC_CHECK_SIZEOF(long long) |
|---|
| 45 |
|
|---|
| 46 |
# 1 byte type |
|---|
| 47 |
AC_MSG_CHECKING([for type to use for 1 byte integer]) |
|---|
| 48 |
if test $ac_cv_sizeof_char = 1; then |
|---|
| 49 |
AC_MSG_RESULT([char]) |
|---|
| 50 |
AC_SUBST(TYPEOF_INT1, char) |
|---|
| 51 |
elif test $ac_cv_sizeof_short = 1; then |
|---|
| 52 |
AC_MSG_RESULT([short]) |
|---|
| 53 |
AC_SUBST(TYPEOF_INT1, short) |
|---|
| 54 |
elif test $ac_cv_sizeof_int = 1; then |
|---|
| 55 |
AC_MSG_RESULT([int]) |
|---|
| 56 |
AC_SUBST(TYPEOF_INT1, int) |
|---|
| 57 |
elif test $ac_cv_sizeof_long = 1; then |
|---|
| 58 |
AC_MSG_RESULT([long]) |
|---|
| 59 |
AC_SUBST(TYPEOF_INT1, long) |
|---|
| 60 |
elif test $ac_cv_sizeof_long_long = 1; then |
|---|
| 61 |
AC_MSG_RESULT([long long]) |
|---|
| 62 |
AC_SUBST(TYPEOF_INT1, "long long") |
|---|
| 63 |
else |
|---|
| 64 |
AC_MSG_ERROR([no type found]) |
|---|
| 65 |
fi |
|---|
| 66 |
|
|---|
| 67 |
# 2 byte type |
|---|
| 68 |
AC_MSG_CHECKING([for type to use for 2 byte integer]) |
|---|
| 69 |
if test $ac_cv_sizeof_char = 2; then |
|---|
| 70 |
AC_MSG_RESULT([char]) |
|---|
| 71 |
AC_SUBST(TYPEOF_INT2, char) |
|---|
| 72 |
elif test $ac_cv_sizeof_short = 2; then |
|---|
| 73 |
AC_MSG_RESULT([short]) |
|---|
| 74 |
AC_SUBST(TYPEOF_INT2, short) |
|---|
| 75 |
elif test $ac_cv_sizeof_int = 2; then |
|---|
| 76 |
AC_MSG_RESULT([int]) |
|---|
| 77 |
AC_SUBST(TYPEOF_INT2, int) |
|---|
| 78 |
elif test $ac_cv_sizeof_long = 2; then |
|---|
| 79 |
AC_MSG_RESULT([long]) |
|---|
| 80 |
AC_SUBST(TYPEOF_INT2, long) |
|---|
| 81 |
elif test $ac_cv_sizeof_long_long = 2; then |
|---|
| 82 |
AC_MSG_RESULT([long long]) |
|---|
| 83 |
AC_SUBST(TYPEOF_INT2, "long long") |
|---|
| 84 |
else |
|---|
| 85 |
AC_MSG_ERROR([no type found]) |
|---|
| 86 |
fi |
|---|
| 87 |
|
|---|
| 88 |
# 4 byte type |
|---|
| 89 |
AC_MSG_CHECKING([for type to use for 4 byte integer]) |
|---|
| 90 |
if test $ac_cv_sizeof_char = 4; then |
|---|
| 91 |
AC_MSG_RESULT([char]) |
|---|
| 92 |
AC_SUBST(TYPEOF_INT4, char) |
|---|
| 93 |
elif test $ac_cv_sizeof_short = 4; then |
|---|
| 94 |
AC_MSG_RESULT([short]) |
|---|
| 95 |
AC_SUBST(TYPEOF_INT4, short) |
|---|
| 96 |
elif test $ac_cv_sizeof_int = 4; then |
|---|
| 97 |
AC_MSG_RESULT([int]) |
|---|
| 98 |
AC_SUBST(TYPEOF_INT4, int) |
|---|
| 99 |
elif test $ac_cv_sizeof_long = 4; then |
|---|
| 100 |
AC_MSG_RESULT([long]) |
|---|
| 101 |
AC_SUBST(TYPEOF_INT4, long) |
|---|
| 102 |
elif test $ac_cv_sizeof_long_long = 4; then |
|---|
| 103 |
AC_MSG_RESULT([long long]) |
|---|
| 104 |
AC_SUBST(TYPEOF_INT4, "long long") |
|---|
| 105 |
else |
|---|
| 106 |
AC_MSG_ERROR([no type found]) |
|---|
| 107 |
fi |
|---|
| 108 |
|
|---|
| 109 |
# 8 byte type |
|---|
| 110 |
AC_MSG_CHECKING([for type to use for 8 byte integer]) |
|---|
| 111 |
if test $ac_cv_sizeof_char = 8; then |
|---|
| 112 |
AC_MSG_RESULT([char]) |
|---|
| 113 |
AC_SUBST(TYPEOF_INT8, char) |
|---|
| 114 |
elif test $ac_cv_sizeof_short = 8; then |
|---|
| 115 |
AC_MSG_RESULT([short]) |
|---|
| 116 |
AC_SUBST(TYPEOF_INT8, short) |
|---|
| 117 |
elif test $ac_cv_sizeof_int = 8; then |
|---|
| 118 |
AC_MSG_RESULT([int]) |
|---|
| 119 |
AC_SUBST(TYPEOF_INT8, int) |
|---|
| 120 |
elif test $ac_cv_sizeof_long = 8; then |
|---|
| 121 |
AC_MSG_RESULT([long]) |
|---|
| 122 |
AC_SUBST(TYPEOF_INT8, long) |
|---|
| 123 |
elif test $ac_cv_sizeof_long_long = 8; then |
|---|
| 124 |
AC_MSG_RESULT([long long]) |
|---|
| 125 |
AC_SUBST(TYPEOF_INT8, "long long") |
|---|
| 126 |
else |
|---|
| 127 |
AC_MSG_ERROR([no type found]) |
|---|
| 128 |
fi |
|---|
| 129 |
|
|---|
| 130 |
if test "_$enable_debug" = _yes; then |
|---|
| 131 |
EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -g3" |
|---|
| 132 |
LDFLAGS="${LDFLAGS} -g3" |
|---|
| 133 |
else |
|---|
| 134 |
EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -DNDEBUG -O3 -fomit-frame-pointer" |
|---|
| 135 |
LDFLAGS="${LDFLAGS} -s" |
|---|
| 136 |
fi |
|---|
| 137 |
|
|---|
| 138 |
if test "_$enable_profiling" = _yes; then |
|---|
| 139 |
EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -pg" |
|---|
| 140 |
LDFLAGS="${LDFLAGS} -pg" |
|---|
| 141 |
fi |
|---|
| 142 |
|
|---|
| 143 |
AC_CHECKING([for SQL drivers]) |
|---|
| 144 |
if test "_$enable_sqlite" = _yes; then |
|---|
| 145 |
AC_CHECK_LIB(sqlite, sqlite_compile, |
|---|
| 146 |
[ |
|---|
| 147 |
SQL_DRIVERS="${SQL_DRIVERS} SQLite.lo" |
|---|
| 148 |
OPTIONAL_TESTS="${OPTIONAL_TESTS} sqlite" |
|---|
| 149 |
SQLITE_LIBS="-lsqlite" |
|---|
| 150 |
SQL_LIBS="${SQL_LIBS} ${SQLITE_LIBS}" |
|---|
| 151 |
CRASH_MODULES="${CRASH_MODULES} sql/sqlite" |
|---|
| 152 |
] |
|---|
| 153 |
) |
|---|
| 154 |
fi |
|---|
| 155 |
|
|---|
| 156 |
if test "_$enable_mysql" = _yes; then |
|---|
| 157 |
AC_CHECK_PROG(LOOKFORMYSQL, mysql_config, found, [not found]) |
|---|
| 158 |
if test "$LOOKFORMYSQL" = "found"; then |
|---|
| 159 |
OPTIONAL_TESTS="${OPTIONAL_TESTS} mysql" |
|---|
| 160 |
SQL_DRIVERS="${SQL_DRIVERS} MySQL.lo" |
|---|
| 161 |
MYSQL_LIBS="`mysql_config --libs`" |
|---|
| 162 |
SQL_LIBS="${SQL_LIBS} ${MYSQL_LIBS}" |
|---|
| 163 |
MYSQL_CFLAGS="`mysql_config --cflags`" |
|---|
| 164 |
SQL_CFLAGS="${SQL_CFLAGS} ${MYSQL_CFLAGS}" |
|---|
| 165 |
CRASH_MODULES="${CRASH_MODULES} sql/mysql" |
|---|
| 166 |
fi |
|---|
| 167 |
fi |
|---|
| 168 |
|
|---|
| 169 |
AC_CHECKING([for posix threads]) |
|---|
| 170 |
AC_CHECK_LIB(pthread, pthread_mutex_init, |
|---|
| 171 |
[ |
|---|
| 172 |
OPTIONAL_TESTS="${OPTIONAL_TESTS} thread" |
|---|
| 173 |
AM_CONDITIONAL([USE_THREAD_MODULE], true) |
|---|
| 174 |
CRASH_MODULES="${CRASH_MODULES} thread" |
|---|
| 175 |
], |
|---|
| 176 |
[ |
|---|
| 177 |
AM_CONDITIONAL([USE_THREAD_MODULE], false) |
|---|
| 178 |
] |
|---|
| 179 |
) |
|---|
| 180 |
|
|---|
| 181 |
AC_CHECK_LIB(pthread, pthread_mutex_timedlock, |
|---|
| 182 |
[ AC_DEFINE(HAVE_PTHREAD_MUTEX_TIMEDLOCK, 1, [Have POSIX timed lock mutex]) ]) |
|---|
| 183 |
|
|---|
| 184 |
AC_CHECKING([for crypto drivers]) |
|---|
| 185 |
AC_TRY_LINK_FUNC(drand48, [AC_DEFINE(HAVE_DRAND48, 1, [Have drand48])]) |
|---|
| 186 |
|
|---|
| 187 |
if test "_$enable_mhash" = _yes; then |
|---|
| 188 |
AC_CHECK_LIB(mhash, mhash, |
|---|
| 189 |
[ |
|---|
| 190 |
CRYPTO_DRIVERS="${CRYPTO_DRIVERS} Hash.lo KeyGenerator.lo" |
|---|
| 191 |
OPTIONAL_TEST="${OPTIONAL_TEST} hash" |
|---|
| 192 |
CRASH_MODULES="${CRASH_MODULES} crypto/hash" |
|---|
| 193 |
CRYPTO_LDFLAGS="${CRYPTO_LDFLAGS} -lmhash" |
|---|
| 194 |
]) |
|---|
| 195 |
fi |
|---|
| 196 |
|
|---|
| 197 |
if test "_$enable_mcrypt" = _yes; then |
|---|
| 198 |
AC_CHECK_LIB(mcrypt, mcrypt_generic_init, |
|---|
| 199 |
[ |
|---|
| 200 |
CRYPTO_DRIVERS="${CRYPTO_DRIVERS} Crypt.lo" |
|---|
| 201 |
OPTIONAL_TESTS="${OPTIONAL_TESTS} cipher" |
|---|
| 202 |
CRASH_MODULES="${CRASH_MODULES} crypto/cipher" |
|---|
| 203 |
CRYPTO_LDFLAGS="${CRYPTO_LDFLAGS} `libmcrypt-config --libs`" |
|---|
| 204 |
CRYPTO_CFLAGS="${CRYPTO_CFLAGS} `libmcrypt-config --cflags`" |
|---|
| 205 |
]) |
|---|
| 206 |
fi |
|---|
| 207 |
|
|---|
| 208 |
if test "_$enable_openssl" = _yes; then |
|---|
| 209 |
AC_CHECK_LIB(crypto, DSA_generate_parameters, |
|---|
| 210 |
[ |
|---|
| 211 |
CRYPTO_DRIVERS="${CRYPTO_DRIVERS} BigNum.lo DH.lo DSA.lo RSA.lo SSLConnect.lo SSLListen.lo" |
|---|
| 212 |
OPTIONAL_TESTS="${OPTIONAL_TESTS} pk dh" |
|---|
| 213 |
CRASH_MODULES="${CRASH_MODULES} crypto/pk" |
|---|
| 214 |
CRYPTO_LDFLAGS="${CRYPTO_LDFLAGS} -lcrypto -lssl" |
|---|
| 215 |
]) |
|---|
| 216 |
|
|---|
| 217 |
if (echo "$CRYPTO_MODULES" | grep crypto/hash && echo "$CRYPTO_MODULES" | grep crypto/pk &&echo "$CRYPTO_MODULES" | grep crypto/cipher) > /dev/null 2>&1; then |
|---|
| 218 |
CRASH_MODULES="${CRASH_MODULES} crypto/pk-wrapper" |
|---|
| 219 |
CRYPTO_DRIVERS="${CRYPTO_DRIVERS} PKServer.lo PKClient.lo" |
|---|
| 220 |
fi |
|---|
| 221 |
fi |
|---|
| 222 |
|
|---|
| 223 |
AC_SUBST(EXTRA_CXXFLAGS) |
|---|
| 224 |
AC_SUBST(EXTRA_LDFLAGS) |
|---|
| 225 |
AC_SUBST(CRASH_MODULES) |
|---|
| 226 |
AC_SUBST(OPTIONAL_TESTS) |
|---|
| 227 |
AC_SUBST(CRYPTO_DRIVERS) |
|---|
| 228 |
AC_SUBST(SQL_LIBS) |
|---|
| 229 |
AC_SUBST(SQL_CFLAGS) |
|---|
| 230 |
AC_SUBST(MYSQL_LIBS) |
|---|
| 231 |
AC_SUBST(MYSQL_CFLAGS) |
|---|
| 232 |
AC_SUBST(SQLITE_LIBS) |
|---|
| 233 |
AC_SUBST(SQLITE_CFLAGS) |
|---|
| 234 |
AC_SUBST(SQL_DRIVERS) |
|---|
| 235 |
AC_SUBST(CRYPTO_CFLAGS) |
|---|
| 236 |
AC_SUBST(CRYPTO_LDFLAGS) |
|---|
| 237 |
|
|---|
| 238 |
AC_CHECK_HEADERS(regex.h stdint.h string utility iterator stdexcept list \ |
|---|
| 239 |
map vector stack byteswap.h) |
|---|
| 240 |
|
|---|
| 241 |
AM_CONFIG_HEADER(crash/crash-config.h) |
|---|
| 242 |
AC_OUTPUT(Makefile crash/Makefile \ |
|---|
| 243 |
crash/types.h \ |
|---|
| 244 |
crash/sql/Makefile \ |
|---|
| 245 |
crash/script/Makefile \ |
|---|
| 246 |
crash/crypto/Makefile \ |
|---|
| 247 |
crash/thread/Makefile \ |
|---|
| 248 |
tests/Makefile \ |
|---|
| 249 |
utils/Makefile \ |
|---|
| 250 |
utils/crash-config \ |
|---|
| 251 |
utils/crash-module) |
|---|
| 252 |
|
|---|
| 253 |
if echo "$CRASH_MODULES" | grep crypto/cipher > /dev/null 2>&1; then |
|---|
| 254 |
USE_CIPHER_MODULE=yes |
|---|
| 255 |
else |
|---|
| 256 |
USE_CIPHER_MODULE=no |
|---|
| 257 |
fi |
|---|
| 258 |
if echo "$CRASH_MODULES" | grep crypto/hash > /dev/null 2>&1; then |
|---|
| 259 |
USE_HASH_MODULE=yes |
|---|
| 260 |
else |
|---|
| 261 |
USE_HASH_MODULE=no |
|---|
| 262 |
fi |
|---|
| 263 |
if echo "$CRASH_MODULES" | grep crypto/pk > /dev/null 2>&1; then |
|---|
| 264 |
USE_PK_MODULE=yes |
|---|
| 265 |
else |
|---|
| 266 |
USE_PK_MODULE=no |
|---|
| 267 |
fi |
|---|
| 268 |
if echo "$CRASH_MODULES" | grep thread > /dev/null 2>&1; then |
|---|
| 269 |
USE_THREAD_MODULE=yes |
|---|
| 270 |
else |
|---|
| 271 |
USE_THREAD_MODULE=no |
|---|
| 272 |
fi |
|---|
| 273 |
if echo "$CRASH_MODULES" | grep sql/mysql > /dev/null 2>&1; then |
|---|
| 274 |
USE_MYSQL_MODULE=yes |
|---|
| 275 |
else |
|---|
| 276 |
USE_MYSQL_MODULE=no |
|---|
| 277 |
fi |
|---|
| 278 |
if echo "$CRASH_MODULES" | grep sql/sqlite > /dev/null 2>&1; then |
|---|
| 279 |
USE_SQLITE_MODULE=yes |
|---|
| 280 |
else |
|---|
| 281 |
USE_SQLITE_MODULE=no |
|---|
| 282 |
fi |
|---|
| 283 |
|
|---|
| 284 |
echo |
|---|
| 285 |
echo "libCrash modules" |
|---|
| 286 |
echo |
|---|
| 287 |
echo " Thread module: $USE_THREAD_MODULE" |
|---|
| 288 |
echo " Hash module: $USE_HASH_MODULE" |
|---|
| 289 |
echo " Cipher module: $USE_CIPHER_MODULE" |
|---|
| 290 |
echo " PKI module: $USE_PK_MODULE" |
|---|
| 291 |
echo " MySQL module: $USE_MYSQL_MODULE" |
|---|
| 292 |
echo " SQLite module: $USE_SQLITE_MODULE" |
|---|
| 293 |
echo |
|---|