summaryrefslogtreecommitdiff
path: root/configure.ac
blob: b6fa77ad9ee530097236839c3011852d6da3515e (plain)
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
m4_define(snappy_major, [1])
m4_define(snappy_minor, [0])
m4_define(snappy_patchlevel, [0])

# Libtool shared library interface versions (current:revision:age)
# Update this value for every release!  (A:B:C will map to foo.so.(A-C).C.B)
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
m4_define(snappy_version, [1:0:0])

AC_INIT([snappy], [snappy_major.snappy_minor.snappy_patchlevel])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE
LT_INIT
AC_PROG_CXX
AC_LANG([C++])
AC_C_BIGENDIAN
AC_CHECK_HEADERS(stdint.h stddef.h)

# Don't use AC_FUNC_MMAP, as it checks for mappings of already-mapped memory,
# which we don't need (and does not exist on Windows).
AC_CHECK_FUNC(mmap)

GTEST_LIB_CHECK([], [true], [true # Ignore; we can live without it.])
PKG_CHECK_MODULES([gflags], [libgflags],
    [AC_DEFINE([HAVE_GFLAGS], [1], [Use the gflags package for command-line parsing.])],
    [true # Ignore; we can live without it.]
)

# See if we have __builtin_expect.
# TODO: Use AC_CACHE.
AC_MSG_CHECKING([if the compiler supports __builtin_expect])
 
AC_TRY_COMPILE(, [
    return __builtin_expect(1, 1) ? 1 : 0
], [
    ac_have_builtin_expect=yes
    AC_MSG_RESULT([yes])
], [
    ac_have_builtin_expect=no
    AC_MSG_RESULT([no])
])
if test x$ac_have_builtin_expect = xyes ; then
    AC_DEFINE(HAVE_BUILTIN_EXPECT, 1, [Define to 1 if the compiler supports __builtin_expect.])
fi

# See if we have working count-trailing-zeros intrinsics.
# TODO: Use AC_CACHE.
AC_MSG_CHECKING([if the compiler supports __builtin_ctzll])

AC_TRY_COMPILE(, [
    return (__builtin_ctzll(0x100000000LL) == 32) ? 1 : 0
], [
    ac_have_builtin_ctz=yes
    AC_MSG_RESULT([yes])
], [
    ac_have_builtin_ctz=no
    AC_MSG_RESULT([no])
])
if test x$ac_have_builtin_ctz = xyes ; then
    AC_DEFINE(HAVE_BUILTIN_CTZ, 1, [Define to 1 if the compiler supports __builtin_ctz and friends.])
fi

# Other compression libraries; the unit test can use these for comparison
# if they are available. If they are not found, just ignore.
AC_CHECK_LIB([z], [zlibVersion],, [true])
AC_CHECK_LIB([lzo2], [lzo1x_1_15_compress],, [true])
AC_CHECK_LIB([lzf], [lzf_compress],, [true])
AC_CHECK_LIB([fastlz], [fastlz_compress],, [true])
AC_CHECK_LIB([quicklz], [qlz_compress],, [true])

# These are used by snappy-stubs-public.h.in.
if test "$ac_cv_header_stdint_h" = "yes"; then
    AC_SUBST(ac_cv_have_stdint_h, 1)
else
    AC_SUBST(ac_cv_have_stdint_h, 0)
fi
if test "$ac_cv_header_stddef_h" = "yes"; then
    AC_SUBST(ac_cv_have_stddef_h, 1)
else
    AC_SUBST(ac_cv_have_stddef_h, 0)
fi

# Export the version to snappy-stubs-public.h.
SNAPPY_MAJOR="snappy_major"
SNAPPY_MINOR="snappy_minor"
SNAPPY_PATCHLEVEL="snappy_patchlevel"

AC_SUBST(SNAPPY_MAJOR)
AC_SUBST(SNAPPY_MINOR)
AC_SUBST(SNAPPY_PATCHLEVEL)

# Set the libtool version for the library.
# (Note: snappy_version is an m4 macro, defined above.)
EXTRA_LIBSNAPPY_LDFLAGS="$EXTRA_LIBSNAPPY_LDFLAGS -version-info snappy_version"
AC_SUBST(EXTRA_LIBSNAPPY_LDFLAGS)

AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile snappy-stubs-public.h])
AC_OUTPUT