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
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])
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
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
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.
57 ## Disable building of static libraries by default
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.
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";
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])
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();],
93 [], [AC_MSG_ERROR([Missing pthread])])
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) ;;
110 [ --with-mysql Use MySQL as a backend (default: yes)],
111 [case "${withval}" in
114 maybe) DO_MYSQL=maybe ;;
115 *) AC_MSG_ERROR(Bad value ${withval} for --with-mysql) ;;
120 AC_MSG_CHECKING(whether to build/link POSTGRESQL)
121 if test "x$DO_POSTGRESQL" = "xyes"; then
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)
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"
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])
148 AC_MSG_RESULT($DO_MYSQL)
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,
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)
169 AC_MSG_RESULT($MANGOSD_DEBUG_INFO)
171 ## Check for required header files.
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.
189 AC_CHECK_TYPES([ptrdiff_t])
191 ## Check for required library functions.
192 AC_FUNC_CLOSEDIR_VOID
193 AC_FUNC_ERROR_AT_LINE
197 AC_FUNC_SELECT_ARGTYPES
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
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])
208 AC_MSG_CHECKING([whether to build ACE])
209 if test X$have_ace_headers = Xyes -a X$have_ace_lib = Xyes;
214 if test X$have_ace_headers = Xno -a X$have_ace_lib = Xno; then
215 need_to_build_ace=yes
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])
221 need_to_build_ace=yes
222 AC_MSG_RESULT([yes, over-install])
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"
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
246 AC_SUBST(MANGOSD_DEBUG_INFO)
248 ## Additional CPPFLAGS and LDFLAGS.
249 AC_SUBST(MANGOS_INCLUDES)
250 AC_SUBST(MANGOS_LIBS)
253 AC_CONFIG_HEADERS([config.h])
258 dep/src/g3dlite/Makefile
259 dep/src/sockets/Makefile
260 dep/src/zlib/Makefile
270 src/tools/genrevision/Makefile
271 src/framework/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
280 src/realmd/realmd.conf.dist
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],[
294 echo "Configuration of MaNGOS $PACKAGE_VERSION is now complete."
296 ],[PACKAGE_VERSION=$PACKAGE_VERSION])
298 ## Disabled Makefiles, until they are ready for a successful make and