summaryrefslogtreecommitdiffstats
path: root/configure.ac
blob: 5e47e16794467a645a6bd0f2aca7e7eb5c3a9106 (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
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
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.


# if not 1, append datestamp to the version number.
m4_define([libpinyin_released], [1])
m4_define([libpinyin_major_version], [2])
m4_define([libpinyin_minor_version], [1])
m4_define([libpinyin_micro_version], [91])
m4_define(libpinyin_maybe_datestamp,
    m4_esyscmd([if test x]libpinyin_released[ != x1; then date +.%Y%m%d | tr -d '\n\r'; fi]))

m4_define([libpinyin_abi_current], [13])
m4_define([libpinyin_abi_revision], [0])

m4_define([libpinyin_version],
          libpinyin_major_version.libpinyin_minor_version.libpinyin_micro_version[]libpinyin_maybe_datestamp)

m4_define([libpinyin_binary_version],
          [libpinyin_abi_current.libpinyin_abi_revision])

AC_PREREQ(2.60)
AC_INIT([libpinyin], [libpinyin_version], [https://github.com/libpinyin/libpinyin/issues/new])
AM_INIT_AUTOMAKE

AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADER([config.h])
AC_CONFIG_MACRO_DIR([m4])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])

# Define a string for binary compatibility
m4_define([lt_current], [libpinyin_abi_current])
m4_define([lt_revision], [libpinyin_abi_revision])
LT_VERSION_INFO="lt_current:lt_revision"
AC_SUBST(LT_VERSION_INFO)

LIBPINYIN_BINARY_VERSION="libpinyin_binary_version"
AC_SUBST(LIBPINYIN_BINARY_VERSION)

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET

AC_GNU_SOURCE

AX_CXX_COMPILE_STDCXX([11])

# Init libtool
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)

# libtool option to control which symbols are exported
# right now, symbols starting with _ are not exported
LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
AC_SUBST(LIBTOOL_EXPORT_OPTIONS)

# Checks for libraries.
PKG_CHECK_MODULES(GLIB2, [glib-2.0 >= 2.4.0])

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([locale.h stdlib.h string.h sys/time.h unistd.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME

# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_REALLOC
AC_FUNC_STAT
AC_FUNC_MMAP
AC_CHECK_FUNCS([gettimeofday memmove memset setlocale])

AC_CHECK_HEADERS([libintl.h string.h])

# Check Berkeley DB or Kyoto Cabinet
DBM="BerkeleyDB"
AC_ARG_WITH(dbm,
    AS_HELP_STRING([--with-dbm[=NAME]],
        [Select BerkeleyDB or KyotoCabinet]),
        [DBM=$with_dbm], []
)

if test x"$DBM" = x"BerkeleyDB"; then
   # Check Berkeley DB
   AC_CHECK_HEADER([db.h], [], AC_MSG_ERROR([Cannot find Berkeley DB library version 4]))

   AC_SEARCH_LIBS([db_create], [db], [], AC_MSG_ERROR([Cannot find Berkeley DB library version 4]))

   AC_DEFINE([HAVE_BERKELEY_DB], [], [Have Berkeley DB.])
fi

AM_CONDITIONAL([BERKELEYDB], [test x"$DBM" = x"BerkeleyDB"])

if test x"$DBM" = x"KyotoCabinet"; then
   # Check Kyoto Cabinet
   PKG_CHECK_MODULES(KYOTOCABINET, [kyotocabinet], [])

   AC_SEARCH_LIBS([kcdbopen], [kyotocabinet], [], AC_MSG_ERROR([Cannot find Kyoto Cabinet library]))

   AC_DEFINE([HAVE_KYOTO_CABINET], [], [Have Kyoto Cabinet.])
fi

AM_CONDITIONAL([KYOTOCABINET], [test x"$DBM" = x"KyotoCabinet"])

# --enable-libzhuyin
AC_ARG_ENABLE(libzhuyin,
    AC_HELP_STRING([--enable-libzhuyin],
        [Support libzhuyin library.]),
        [enable_libzhuyin=$enableval],
        [enable_libzhuyin=no]
)
AM_CONDITIONAL(ENABLE_LIBZHUYIN, test x"$enable_libzhuyin" = x"yes")


AC_CONFIG_FILES([libpinyin.pc
                 libzhuyin.pc
                 libpinyin.spec
                 Makefile
                 doc/Makefile
                 data/Makefile
                 src/Makefile
                 src/include/Makefile
                 src/storage/Makefile
                 src/lookup/Makefile
                 tests/Makefile
                 tests/include/Makefile
                 tests/storage/Makefile
                 tests/lookup/Makefile
                 utils/Makefile
                 utils/storage/Makefile
                 utils/segment/Makefile
                 utils/training/Makefile
])

AC_OUTPUT

AC_MSG_RESULT([
Build options:
    Version                     $VERSION
    Install prefix              $prefix
    DBM                         $DBM
    Enable libzhuyin            $enable_libzhuyin
])