[8315] Fixed memory leaks (mostly at server shutdown) and code cleanups.
[getmangos.git] / configure.ac
blob1f31c942916e2322cf2c7b27ca67dca6f650a476
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.14.0 (trunk)
18 #  BUG-REPORT-ADDRESS: mangos-devs@lists.sourceforge.net
19 AC_INIT( [mangos], [0.14.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         # Workaround for --as-needed linker flag that comes sometimes from mysql
142         if echo $MYSQL_LIBS|grep "\-Wl,--as-needed" > /dev/null; then
143                 MYSQL_LIBS=`echo $MYSQL_LIBS|sed -e "s/-Wl,--as-needed//"`;
144                 AC_MSG_WARN([Your mysql libs contains -Wl,--as-needed, this is not good, problem fixed in more recent mysql versions])
145         fi
146     fi
147 else
148 AC_MSG_RESULT($DO_MYSQL)
151 ## Check for options
152 #  Include debug info in library?
153 AC_MSG_CHECKING(whether to include debug info in library)
154 MANGOSD_DEBUG_INFO=no
155 AC_ARG_WITH(debug-info,
157 Debugging options:
159   --with-debug-info       Include debug info in library],
161     if test "$withval" = "yes" ; then
162         CFLAGS="-g -DMANGOS_DEBUG $CFLAGS"
163         CXXFLAGS="-g -DMANGOS_DEBUG $CXXFLAGS"
164         MANGOSD_DEBUG_INFO=yes
165     elif test "$withval" != "no" ; then
166         AC_MSG_ERROR(Please choose yes or no)
167     fi
169 AC_MSG_RESULT($MANGOSD_DEBUG_INFO)
171 ## Check for required header files.
172 AC_HEADER_STDC
173 AC_HEADER_DIRENT
174 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  ])
176 AC_CHECK_HEADERS([pthread.h])
177 AC_CHECK_HEADERS([openssl/md5.h openssl/rand.h openssl/ssl.h openssl/sha.h openssl/bn.h])
178 AC_CHECK_HEADERS([mysql.h mysql/mysql.h])
179 AC_CHECK_HEADERS([libpq-fe.h])
180 AC_CHECK_HEADERS([zlib.h])
182 ## Check for typedefs, structures, and compiler characteristics.
183 AC_HEADER_STDBOOL
184 AC_C_CONST
185 AC_C_INLINE
186 AC_HEADER_TIME
187 AC_STRUCT_TM
188 AC_C_VOLATILE
189 AC_CHECK_TYPES([ptrdiff_t])
191 ## Check for required library functions.
192 AC_FUNC_CLOSEDIR_VOID
193 AC_FUNC_ERROR_AT_LINE
194 AC_FUNC_MALLOC
195 AC_FUNC_MEMCMP
196 AC_FUNC_REALLOC
197 AC_FUNC_SELECT_ARGTYPES
198 AC_TYPE_SIGNAL
199 AC_FUNC_VPRINTF
200 AC_CHECK_FUNCS([atexit ftime gethostbyaddr gethostbyname gethostname gettimeofday memmove memset pow realpath select socket sqrt strchr strdup strerror strstr])
202 ## Check what to do with ACE library
203 AC_LANG_PUSH([C++])
204 AC_CHECK_HEADER([ace/Reactor.h], [have_ace_headers=yes], [have_ace_headers=no])
205 AC_CHECK_LIB([ACE], [main], [have_ace_lib=yes], [have_ace_lib=no])
206 AC_LANG_POP([C++])
208 AC_MSG_CHECKING([whether to build ACE])
209 if test X$have_ace_headers = Xyes -a X$have_ace_lib = Xyes;
210 then
211   need_to_build_ace=no
212   AC_MSG_RESULT([no])
213 else
214   if test X$have_ace_headers = Xno -a X$have_ace_lib = Xno; then
215     need_to_build_ace=yes
216     AC_MSG_RESULT([yes])
217   else
218     if test X$have_ace_headers = Xyes; then
219        AC_MSG_ERROR([looks like you have ACE headers, but you do not have ACE libs installed])
220     else
221        need_to_build_ace=yes
222        AC_MSG_RESULT([yes, over-install])
223     fi
224   fi
227 if test X$need_to_build_ace = Xyes; then
228    MANGOS_INCLUDES="-I\$(top_srcdir)/dep/ACE_wrappers -I\$(top_builddir)/dep/ACE_wrappers $MANGOS_INCLUDES"
229    MANGOS_LIBS="\$(top_builddir)/dep/ACE_wrappers/ace/libACE.la $MANGOS_LIBS"
230 else
231    MANGOS_LIBS="-lACE $MANGOS_LIBS"
234 AM_CONDITIONAL([MANGOS_BUILD_ACE], [test X$need_to_build_ace = Xyes])
236 # old ace versions not have ace/Stack_Trace.h
237 AC_CHECK_HEADERS([ace/Stack_Trace.h])
239 ## Unify all additional includes/libs in one variable.
240 # TODO this looks kinda ugly, but when we add m4 folder I will make it look very pritey ( by Derex ).
241 MANGOS_INCLUDES="$POSTGRE_INCLUDES $MYSQL_INCLUDES $MANGOS_INCLUDES"
242 MANGOS_LIBS="$POSTGRE_LIBS $MYSQL_LIBS $ZLIB $COMPATLIB $SSLLIB $MANGOS_LIBS"
244 ## Export defined variables
245 AC_SUBST(DOXYGEN)
246 AC_SUBST(MANGOSD_DEBUG_INFO)
248 ## Additional CPPFLAGS and LDFLAGS.
249 AC_SUBST(MANGOS_INCLUDES)
250 AC_SUBST(MANGOS_LIBS)
252 ## Set output files.
253 AC_CONFIG_HEADERS([config.h])
254 AC_CONFIG_FILES([
255    dep/include/Makefile
256    dep/lib/Makefile
257    dep/src/Makefile
258    dep/src/g3dlite/Makefile
259    dep/src/sockets/Makefile
260    dep/src/zlib/Makefile
261    dep/Makefile
262    doc/Doxyfile
263    doc/Makefile
264    Makefile
265    sql/Makefile
266    sql/tools/Makefile
267    sql/updates/Makefile
268    src/Makefile
269    src/tools/Makefile
270    src/tools/genrevision/Makefile
271    src/framework/Makefile
272    src/shared/Makefile
273    src/shared/Auth/Makefile
274    src/shared/Config/Makefile
275    src/shared/Database/Makefile
276    src/shared/vmap/Makefile
277    src/shared/SystemConfig.h
278    src/game/Makefile
279    src/realmd/Makefile
280    src/realmd/realmd.conf.dist
281    src/mangosd/Makefile
282    src/mangosd/mangosd.conf.dist
283    src/bindings/Makefile
284    src/bindings/universal/Makefile
287 ## Configure ACE, if needed
288 if test X$need_to_build_ace = Xyes; then
289   AC_CONFIG_SUBDIRS([dep/ACE_wrappers])
292 AC_CONFIG_COMMANDS([default],[
293   echo ""
294   echo "Configuration of MaNGOS $PACKAGE_VERSION is now complete."
295   echo ""
296  ],[PACKAGE_VERSION=$PACKAGE_VERSION])
298 ## Disabled Makefiles, until they are ready for a successful make and
299 #  make dist run.
301 ## Output files.
302 AC_OUTPUT