[7929] Some fixes and optimizations for work with packet guids.
[getmangos.git] / configure.ac
blobfbbc65d9c08996cf2ac14030f633bea4b7716381
1 # Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/>
3 # This file is free software; as a special exception the author gives
4 # unlimited permission to copy and/or distribute it, with or without
5 # modifications, as long as this notice is preserved.
7 # This program is distributed in the hope that it will be useful, but
8 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
9 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 ## Process this file with autoconf to produce a configure script.
13 # TODO: create m4 directory and put the checks there, because this file got realy poluted ( by Derex )
15 ## Prelude, basic settings for Autoconf
16 #  PACKAGE:            mangos
17 #  VERSION:            0.13.0 (trunk)
18 #  BUG-REPORT-ADDRESS: mangos-devs@lists.sourceforge.net
19 AC_INIT( [mangos], [0.13.0], [mangos-devs@lists.sourceforge.net])
20 AC_CONFIG_SRCDIR([src/shared/Base.cpp])
22 ## Prelude, basic settings for Automake
23 #  Turn on all warnings and error messages, and enforce GNU
24 #  standards for the package.
25 AM_INIT_AUTOMAKE([-Wall -Werror gnu tar-pax])
26 AM_MAINTAINER_MODE
28 ## Prevent the configure script from continuing any further if
29 # configuration is being performed in the top-level directory.
30 # The idea is to prevent this ,because some maintainers tend
31 # to break parallel build trees (a.k.a. VPATH builds).
32 if test "$srcdir" = "." && test "$enable_maintainer_mode" != "yes"; then
33   AC_MSG_ERROR(
34      [
35       Please configure and build in a directory other than the
36       top-level source directory. This is needed because a lot
37       of maintainers tend to break parallel build trees
38       (a.k.a. VPATH builds). This is kinda real ensurance they
39       will not do it (by enforcing everybody to do VPATH builds).
41       For example, try the following from the top-level source
42       directory:
44           mkdir objdir
45           cd objdir
46           ../configure
47           make
49       This will create a build space in the directory `objdir' and
50       start a build in that directory.
52       If however you realy want to disable this error,
53       use --enable-maintainer-mode switch.
54      ])
57 ## Disable building of static libraries by default
58 AC_DISABLE_STATIC
60 ## Check for required dependencies.
62 ## Check for a valid build environment.
63 #  Valid equals having:
64 #  - a C++ compiler compliant with the ISO98 C++ specification.
65 #  - a working library tool for creating convenience libraries.
66 #  - a working linker for creating static and shared libraries.
67 AC_PROG_CC
68 AC_PROG_CXX
69 AM_PROG_CC_C_O
70 AC_PROG_LIBTOOL
71 AC_PROG_INSTALL
73 # Check for doxygen
74 AC_ARG_ENABLE(doxygen, AC_HELP_STRING([--enable-doxygen], [turn on generating documentation]))
76 enable_doxygen_support=no
78 if test "x$enable_doxygen" = "xyes";
79 then
80   AC_PATH_PROG(DOXYGEN, doxygen, no)
81   if test "x$DOXYGEN" = "xno"; then
82     AC_MSG_ERROR([You need to install the doxygen package])
83   fi
84   enable_doxygen_support=yes
86 AM_CONDITIONAL(DOXYGEN_ENABLED, test x$enable_doxygen_support = xyes)
88 ## Check for required libraries.
89 AC_CHECK_LIB( pthread, pthread_create, [],
90     [LDFLAGS="-pthread $LDFLAGS"
91      AC_TRY_LINK([char pthread_create();],
92          pthread_create();,
93          [], [AC_MSG_ERROR([Missing pthread])])
94     ])
95 AC_CHECK_LIB( z, compress, [ZLIB=-lz],[AC_MSG_ERROR([Missing zlib])] )
96 AC_CHECK_LIB( compat, ftime, [COMPATLIB=-lcompat] )
97 AC_CHECK_LIB( crypto, SHA1_Init, [SSLLIB=-lssl], [AC_MSG_ERROR([Missing openssl])])
99 AC_ARG_WITH(postgresql,
100 [  --with-postgresql       Use PostgreSQL as a backend (default: no)],
101 [case "${withval}" in
102         yes) DO_POSTGRESQL=yes ;;
103         no)  DO_POSTGRESQL=no ;;
104         maybe) DO_POSTGRESQL=maybe ;;
105         *)   AC_MSG_ERROR(Bad value ${withval} for --with-postgresql) ;;
106     esac],
107 [DO_POSTGRESQL=no])
109 AC_ARG_WITH(mysql,
110 [  --with-mysql            Use MySQL as a backend (default: yes)],
111 [case "${withval}" in
112         yes) DO_MYSQL=yes ;;
113         no)  DO_MYSQL=no ;;
114         maybe) DO_MYSQL=maybe ;;
115         *)   AC_MSG_ERROR(Bad value ${withval} for --with-mysql) ;;
116     esac],
117 [DO_MYSQL=yes])
119 # here Postgre
120 AC_MSG_CHECKING(whether to build/link POSTGRESQL)
121 if test "x$DO_POSTGRESQL" = "xyes"; then
122 DO_MYSQL=no
123 POSTGRE_INCLUDES="-I/usr/include/postgresql $POSTGRE_INCLUDES"
124 POSTGRE_LIBS="-L/usr/lib/postresql -lpq -lz -lpthread -lcrypt -lnsl -lm -lpthread -L/usr/lib -lssl -lcrypto $POSTGRE_LIBS "
125 CXXFLAGS="-DDO_POSTGRESQL $CXXFLAGS"
127 AC_MSG_RESULT($DO_POSTGRESQL)
129 # here mysql
130 AC_MSG_CHECKING(whether to build/link MYSQL)
131 if test "x$DO_MYSQL" = "xyes"; then
132 AC_MSG_RESULT($DO_MYSQL)
133 AC_PATH_PROGS(MYSQL_CONFIG, mysql_config, mysql_config, $PATH)
134     if test -x "$MYSQL_CONFIG"
135         then
136     # MySQL v4 uses --include while v3 uses --cflags
137         MYSQL_INCLUDES="`$MYSQL_CONFIG --include`" || \
138             MYSQL_INCLUDES="`$MYSQL_CONFIG --cflags`"
139         MYSQL_LIBS="`$MYSQL_CONFIG --libs_r`"
140         CXXFLAGS="-DDO_MYSQL $CXXFLAGS"
141     fi
142 else
143 AC_MSG_RESULT($DO_MYSQL)
146 ## Check for options
147 #  Include debug info in library?
148 AC_MSG_CHECKING(whether to include debug info in library)
149 MANGOSD_DEBUG_INFO=no
150 AC_ARG_WITH(debug-info,
152 Debugging options:
154   --with-debug-info       Include debug info in library],
156     if test "$withval" = "yes" ; then
157         CFLAGS="-g -DMANGOS_DEBUG $CFLAGS"
158         CXXFLAGS="-g -DMANGOS_DEBUG $CXXFLAGS"
159         MANGOSD_DEBUG_INFO=yes
160     elif test "$withval" != "no" ; then
161         AC_MSG_ERROR(Please choose yes or no)
162     fi
164 AC_MSG_RESULT($MANGOSD_DEBUG_INFO)
167 # Enable CLI console?
168 AC_MSG_CHECKING(whether cli console is enabled)
169 MANGOSD_ENABLE_CLI=no
170 AC_ARG_ENABLE(cli,
171 [  --enable-cli Turn on command console system],
173     if test "$enableval" = "yes" ; then
174         CFLAGS="-DENABLE_CLI $CFLAGS"
175         CXXFLAGS="-DENABLE_CLI $CXXFLAGS"
176         MANGOSD_ENABLE_CLI=yes
177     elif test "$withval" != "no" ; then
178         AC_MSG_ERROR(Please choose yes or no)
179     fi
181 AC_MSG_RESULT($MANGOSD_ENABLE_CLI)
183 # Enable remote console?
184 AC_MSG_CHECKING(whether remote console is enabled)
185 MANGOSD_ENABLE_RA=no
186 AC_ARG_ENABLE(ra,
187 [  --enable-ra Turn on remote console system],
189     if test "$enableval" = "yes" ; then
190         CFLAGS="-DENABLE_RA $CFLAGS"
191         CXXFLAGS="-DENABLE_RA $CXXFLAGS"
192         MANGOSD_ENABLE_RA=yes
193     elif test "$withval" != "no" ; then
194         AC_MSG_ERROR(Please choose yes or no)
195     fi
197 AC_MSG_RESULT($MANGOSD_ENABLE_RA)
199 ## Check for required header files.
200 AC_HEADER_STDC
201 AC_HEADER_DIRENT
202 AC_CHECK_HEADERS([ arpa/inet.h fcntl.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/socket.h sys/timeb.h sys/time.h termios.h unistd.h  ])
204 AC_CHECK_HEADERS([pthread.h])
205 AC_CHECK_HEADERS([openssl/md5.h openssl/rand.h openssl/ssl.h openssl/sha.h openssl/bn.h])
206 AC_CHECK_HEADERS([mysql.h mysql/mysql.h])
207 AC_CHECK_HEADERS([libpq-fe.h])
208 AC_CHECK_HEADERS([zlib.h])
210 ## Check for typedefs, structures, and compiler characteristics.
211 AC_HEADER_STDBOOL
212 AC_C_CONST
213 AC_C_INLINE
214 AC_TYPE_SIZE_T
215 AC_HEADER_TIME
216 AC_STRUCT_TM
217 AC_TYPE_UINT64_T
218 AC_C_VOLATILE
219 AC_CHECK_TYPES([ptrdiff_t])
221 ## Check for required library functions.
222 AC_FUNC_CLOSEDIR_VOID
223 AC_FUNC_ERROR_AT_LINE
224 AC_FUNC_MALLOC
225 AC_FUNC_MEMCMP
226 AC_FUNC_REALLOC
227 AC_FUNC_SELECT_ARGTYPES
228 AC_TYPE_SIGNAL
229 AC_FUNC_VPRINTF
230 AC_CHECK_FUNCS([atexit ftime gethostbyaddr gethostbyname gethostname gettimeofday memmove memset pow realpath select socket sqrt strchr strdup strerror strstr])
232 ## Check what to do with ACE library
233 AC_LANG_PUSH([C++])
234 AC_CHECK_HEADER([ace/Reactor.h], [have_ace_headers=yes], [have_ace_headers=no])
235 AC_CHECK_LIB([ACE], [main], [have_ace_lib=yes], [have_ace_lib=no])
236 AC_LANG_POP([C++])
238 AC_MSG_CHECKING([whether to build ACE])
239 if test X$have_ace_headers = Xyes -a X$have_ace_lib = Xyes;
240 then
241   need_to_build_ace=no
242   AC_MSG_RESULT([no])
243 else
244   if test X$have_ace_headers = Xno -a X$have_ace_lib = Xno; then
245     need_to_build_ace=yes
246     AC_MSG_RESULT([yes])
247   else
248     if test X$have_ace_headers = Xyes; then
249        AC_MSG_ERROR([looks like you have ACE headers, but you do not have ACE libs installed])
250     else
251        need_to_build_ace=yes
252        AC_MSG_RESULT([yes, over-install])
253     fi
254   fi
257 if test X$need_to_build_ace = Xyes; then
258    MANGOS_INCLUDES="-I\$(top_srcdir)/dep/ACE_wrappers -I\$(top_builddir)/dep/ACE_wrappers $MANGOS_INCLUDES"
259    MANGOS_LIBS="\$(top_builddir)/dep/ACE_wrappers/ace/libACE.la $MANGOS_LIBS"
260 else
261    MANGOS_LIBS="-lACE $MANGOS_LIBS"
264 AM_CONDITIONAL([MANGOS_BUILD_ACE], [test X$need_to_build_ace = Xyes])
267 ## Unify all additional includes/libs in one variable.
268 # TODO this looks kinda ugly, but when we add m4 folder I will make it look very pritey ( by Derex ).
269 MANGOS_INCLUDES="$POSTGRE_INCLUDES $MYSQL_INCLUDES $MANGOS_INCLUDES"
270 MANGOS_LIBS="$POSTGRE_LIBS $MYSQL_LIBS $ZLIB $COMPATLIB $SSLLIB $MANGOS_LIBS"
272 ## Export defined variables
273 AC_SUBST(DOXYGEN)
274 AC_SUBST(MANGOSD_DEBUG_INFO)
275 AC_SUBST(MANGOSD_ENABLE_CLI)
276 AC_SUBST(MANGOSD_ENABLE_RA)
278 ## Additional CPPFLAGS and LDFLAGS.
279 AC_SUBST(MANGOS_INCLUDES)
280 AC_SUBST(MANGOS_LIBS)
282 ## Set output files.
283 AC_CONFIG_HEADERS([config.h])
284 AC_CONFIG_FILES([
285    dep/include/Makefile
286    dep/lib/Makefile
287    dep/src/Makefile
288    dep/src/g3dlite/Makefile
289    dep/src/sockets/Makefile
290    dep/src/zlib/Makefile
291    dep/Makefile
292    doc/Doxyfile
293    doc/Makefile
294    Makefile
295    sql/Makefile
296    sql/tools/Makefile
297    sql/updates/Makefile
298    src/Makefile
299    src/tools/Makefile
300    src/tools/genrevision/Makefile
301    src/framework/Makefile
302    src/shared/Makefile
303    src/shared/Auth/Makefile
304    src/shared/Config/Makefile
305    src/shared/Database/Makefile
306    src/shared/vmap/Makefile
307    src/shared/SystemConfig.h
308    src/game/Makefile
309    src/realmd/Makefile
310    src/realmd/realmd.conf.dist
311    src/mangosd/Makefile
312    src/mangosd/mangosd.conf.dist
313    src/bindings/Makefile
314    src/bindings/universal/Makefile
317 ## Configure ACE, if needed
318 if test X$need_to_build_ace = Xyes; then
319   AC_CONFIG_SUBDIRS([dep/ACE_wrappers])
322 AC_CONFIG_COMMANDS([default],[
323   echo ""
324   echo "Configuration of MaNGOS $PACKAGE_VERSION is now complete."
325   echo ""
326  ],[PACKAGE_VERSION=$PACKAGE_VERSION])
328 ## Disabled Makefiles, until they are ready for a successful make and
329 #  make dist run.
331 ## Output files.
332 AC_OUTPUT