-
Notifications
You must be signed in to change notification settings - Fork 2
/
configure.ac
262 lines (232 loc) · 9.63 KB
/
configure.ac
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
256
257
258
259
260
261
262
dnl -*-m4-*-
dnl Process this file with autoconf to produce a configure script.
dnl --------------------------------------------------------------
dnl configure.ac for Eliot
dnl --------------------------------------------------------------
AC_INIT([eliot],[2.3-git])
AC_CONFIG_SRCDIR(qt/main.cpp)
dnl See http://www.flameeyes.eu/autotools-mythbuster/automake/nonrecursive.html
dnl for the subdir-objets arguments (used at the moment for game/cmd/)
AM_INIT_AUTOMAKE([subdir-objects])
AC_CONFIG_HEADERS([config.h])
AC_CANONICAL_HOST
AC_CANONICAL_BUILD
dnl --------------------------------------------------------------
dnl Checks for programs.
dnl --------------------------------------------------------------
AC_PROG_INSTALL
AC_PROG_CC
dnl Needed for gettext
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_CXX
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AM_PROG_AR
PKG_PROG_PKG_CONFIG
AC_CHECK_HEADERS_ONCE(execinfo.h)
AX_CXX_GCC_ABI_DEMANGLE
dnl --------------------------------------------------------------
dnl Checks for compilation flags
dnl --------------------------------------------------------------
CFLAGS_save="${CFLAGS}"
AC_CACHE_CHECK([if \$CC accepts -Wall],
[ac_cv_c_Wall],
[CFLAGS="-Wall ${CFLAGS_save}"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_c_Wall=yes],[ac_cv_c_Wall=no])])
CFLAGS="${CFLAGS_save}"
if test "${ac_cv_c_Wall}" != "no"; then
CFLAGS+=" -Wall"
CXXFLAGS+=" -Wall"
fi
CFLAGS_save="${CFLAGS}"
AC_CACHE_CHECK([if \$CC accepts -Wextra],
[ac_cv_c_Wextra],
[CFLAGS="-Wextra ${CFLAGS_save}"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_c_Wextra=yes],[ac_cv_c_Wextra=no])])
CFLAGS="${CFLAGS_save}"
if test "${ac_cv_c_Wextra}" != "no"; then
CFLAGS+=" -Wextra"
CXXFLAGS+=" -Wextra"
fi
dnl Logging
AC_ARG_ENABLE([logging],AS_HELP_STRING([--enable-logging],[logging (default disabled)]))
if test "${enable_logging}" = "yes"; then
want_logging=1
else
want_logging=0
fi
dnl Debug mode
AC_ARG_ENABLE([debug],AS_HELP_STRING([--enable-debug],[debug mode (default disabled)]))
if test "${enable_debug}" = "yes"; then
CPPFLAGS+=" -DDEBUG"
CFLAGS+=" -g"
CXXFLAGS+=" -g"
fi
dnl Profile mode
AC_ARG_ENABLE([profile],AS_HELP_STRING([--enable-profile],[profile mode (default disabled)]))
if test "${enable_profile}" = "yes"; then
CPPFLAGS+=" -DPROFILE"
CFLAGS+=" -pg"
CXXFLAGS+=" -pg"
LDFLAGS+=" -pg"
fi
dnl Regexp / Listdic / Compdic build enable
AC_ARG_ENABLE([dictools],AS_HELP_STRING([--enable-dictools],[build independant dictionary tools (default enabled)]))
AM_CONDITIONAL([BUILD_DICTOOLS], [test "${enable_dictools}" != "no"])
dnl Define WIN32_BUILD if the compiler is i586-mingw32msvc-g++
AM_CONDITIONAL([WIN32_BUILD], [test "${CXX}" = "i586-mingw32msvc-g++"])
dnl --------------------------------------------------------------
dnl Checks for header files.
dnl --------------------------------------------------------------
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h unistd.h sys/stats.h sys/types.h)
AC_CHECK_HEADERS(arpa/inet.h netinet/in.h)
AC_CHECK_HEADERS([readline/readline.h], [has_readline=1], [has_readline=0])
AM_CONDITIONAL(HAS_READLINE, test "$has_readline" = "1")
dnl --------------------------------------------------------------
dnl Checks for typedefs, structures, and compiler characteristics.
dnl --------------------------------------------------------------
AC_C_CONST
AC_TYPE_SIZE_T
AC_C_BIGENDIAN
AC_C_INLINE
dnl AC_CHECK_SIZEOF(char, 1)
dnl AC_CHECK_SIZEOF(short, 2)
dnl AC_CHECK_SIZEOF(int *, 4)
dnl AC_CHECK_SIZEOF(int, 4)
dnl AC_CHECK_SIZEOF(long, 4)
dnl AC_CHECK_SIZEOF(long long, 0)
dnl --------------------------------------------------------------
dnl Checks for library functions.
dnl --------------------------------------------------------------
AC_FUNC_MEMCMP
AC_CHECK_FUNCS([wcwidth])
dnl --------------------------------------------------------------
dnl Checks for libraries.
dnl --------------------------------------------------------------
dnl Check for the Boost libraries (in fact we only need the headers)
dnl We need at least version 1.36, for Boost.Unordered
AX_BOOST_BASE([1.36.0])
PKG_CHECK_MODULES(LIBCONFIG, [libconfig++],
[has_libconfig=1
AC_DEFINE(HAVE_LIBCONFIG, 1, [Define to 1 if you have the libconfig library])],
[has_libconfig=0])
dnl Check for liblog4cxx
PKG_CHECK_MODULES(LOG4CXX, [liblog4cxx],
[has_log4cxx=1
AC_DEFINE(HAVE_LIBLOG4CXX, 1, [Define to 1 if you have the liblog4cxx library])],
[has_log4cxx=0])
AS_IF([test "${want_logging}" = "1"],
[AS_IF([test "${has_log4cxx}" = "1"],
[with_logging=1
AC_DEFINE(USE_LOGGING, 1, [Define to 1 if you want to enable logging])],
[AC_MSG_ERROR([Logging requested, but liblog4cxx could not be found on your system (using pkg-config)])])])
# Conditional, to avoid a useless dependency (in the case of shared library)
AM_CONDITIONAL([WITH_LOGGING], [test "${with_logging}" = "1"])
dnl Check for Expat
AX_LIB_EXPAT([2.0.1])
dnl Check for arabica and libxml2
PKG_CHECK_MODULES(ARABICA, [arabica], [],
[AC_MSG_ERROR([Could not find Arabica on your system (using pkg-config)])])
dnl PKG_CHECK_MODULES(LIBXML2, [libxml-2.0], [],
dnl [AC_MSG_ERROR([Could not find libxml2 on your system (using pkg-config)])])
dnl Check for ncurses
dnl We enable it if asked by the user, or if ncursesw is found
AC_ARG_ENABLE([ncurses],AS_HELP_STRING([--enable-ncurses],
[ncurses interface support (default enabled if ncursesw found on your system)]))
AX_WITH_CURSES([--without-ncurses --with-ncursesw])
if test "${enable_ncurses}" != "no" -a "${ax_cv_ncursesw}" = "yes"; then
want_ncurses=1
else
want_ncurses=0
if test "${enable_ncurses}" = "yes"; then
AC_MSG_ERROR([Could not find the ncursesw library on your system])
fi
fi
AM_CONDITIONAL([BUILD_NCURSES], [test "${want_ncurses}" = "1"])
dnl Check for Qt4
AC_ARG_ENABLE([qt],AS_HELP_STRING([--enable-qt4],
[Qt4 interface support (default disabled)]))
qt4_ok=0
AS_IF([test "${enable_qt4}" = "yes"],
[PKG_CHECK_MODULES(QT, [QtCore QtGui QtNetwork >= 4.2.0],
[qt4_ok=1
dnl Check for the qt4 suffix first (useful on Archlinux, which uses qt5 by default)
AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
AC_PATH_PROGS(RCC, [rcc-qt4 rcc], rcc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
QT4LOCALEDIR="$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/"
AC_SUBST(QT4LOCALEDIR)
],
[AC_MSG_ERROR([Could not find Qt on your system (using pkg-config)])]
)
])
dnl Check for Qt
AC_ARG_ENABLE([qt5],AS_HELP_STRING([--enable-qt],
[Qt5 interface support (default enabled)]))
qt5_ok=0
AS_IF([test "${enable_qt}" != "no"],
[PKG_CHECK_MODULES([QT], [Qt5PrintSupport Qt5Widgets Qt5Gui Qt5Core Qt5Network >= 5.1.0],
[qt5_ok=1
AC_PATH_PROGS(MOC, moc, moc,`$PKG_CONFIG --variable=exec_prefix Qt5Core`/bin)
AC_PATH_PROGS(UIC, uic, uic,`$PKG_CONFIG --variable=exec_prefix Qt5Core`/bin)
AC_PATH_PROGS(RCC, rcc, rcc,`$PKG_CONFIG --variable=exec_prefix Qt5Core`/bin)
QT4LOCALEDIR="$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/"
AC_SUBST(QT4LOCALEDIR)
dnl FIXME: hack
CXXFLAGS="${CXXFLAGS} -fPIC"
],
[AC_MSG_ERROR([Could not find Qt5 on your system (using pkg-config)])]
)
])
dnl We build either with Qt4 or Qt5, but not both
if test "${qt5_ok}" = "1" && "${qt4_ok}" = "1"; then
AC_MSG_ERROR([Please deactivate Qt4 explicitly if you want to build with Qt5])
fi
AM_CONDITIONAL([BUILD_QT], [test "${qt4_ok}" = "1" -o "${qt5_ok}" = "1" ])
dnl Enable/disable text version
AC_ARG_ENABLE([text],AS_HELP_STRING([--enable-text],[text interface support (default enabled)]))
AM_CONDITIONAL([BUILD_TEXT], [test "${enable_text}" != "no"])
dnl Internationalization macros
AM_GNU_GETTEXT_VERSION(0.20)
AM_GNU_GETTEXT([external])
dnl Iconv
AM_ICONV
AS_IF([test "$am_cv_func_iconv" != "yes"],
[AC_MSG_ERROR([libiconv is needed for Eliot to work properly])])
dnl Information about who built eliot (useful for the dictionary)
AC_DEFINE_UNQUOTED(ELIOT_COMPILE_BY, "`whoami`", [user who ran configure])
AC_DEFINE_UNQUOTED(ELIOT_COMPILE_HOST, "`hostname`", [host which ran configure])
dnl Check the operating system
case "${host_os}" in
*mingw32* | *cygwin*)
SYS=mingw32
;;
*)
dnl nothing to do
;;
esac
if test "$SYS" = "mingw32"; then
# For ntohl, in particular
LIBS="${LIBS} -lws2_32"
fi
dnl --------------------------------------------------------------
dnl Output
dnl --------------------------------------------------------------
AC_CONFIG_FILES(po/Makefile.in
dic/Makefile
game/Makefile
utils/Makefile
qt/Makefile
extras/Makefile
extras/innosetup/eliot-setup.iss
Makefile)
AC_OUTPUT
if test "$has_libconfig" != "1"; then
echo
echo "@@@@@@@@@@@"
echo "Warning!"
echo "libconfig++ was not detected on your system: saving and loading the configuration will be impossible!"
echo "libconfig++ can be downloaded here: http://www.hyperrealm.com/main.php?s=libconfig"
echo "@@@@@@@@@@@"
fi