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.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])
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"
143 AC_MSG_RESULT($DO_MYSQL)
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,
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)
164 AC_MSG_RESULT($MANGOSD_DEBUG_INFO)
166 ## Check for required header files.
169 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 ])
171 AC_CHECK_HEADERS([pthread.h])
172 AC_CHECK_HEADERS([openssl/md5.h openssl/rand.h openssl/ssl.h openssl/sha.h openssl/bn.h])
173 AC_CHECK_HEADERS([mysql.h mysql/mysql.h])
174 AC_CHECK_HEADERS([libpq-fe.h])
175 AC_CHECK_HEADERS([zlib.h])
177 ## Check for typedefs, structures, and compiler characteristics.
184 AC_CHECK_TYPES([ptrdiff_t])
186 ## Check for required library functions.
187 AC_FUNC_CLOSEDIR_VOID
188 AC_FUNC_ERROR_AT_LINE
192 AC_FUNC_SELECT_ARGTYPES
195 AC_CHECK_FUNCS([atexit ftime gethostbyaddr gethostbyname gethostname gettimeofday memmove memset pow realpath select socket sqrt strchr strdup strerror strstr])
197 ## Check what to do with ACE library
199 AC_CHECK_HEADER([ace/Reactor.h], [have_ace_headers=yes], [have_ace_headers=no])
200 AC_CHECK_LIB([ACE], [main], [have_ace_lib=yes], [have_ace_lib=no])
203 AC_MSG_CHECKING([whether to build ACE])
204 if test X$have_ace_headers = Xyes -a X$have_ace_lib = Xyes;
209 if test X$have_ace_headers = Xno -a X$have_ace_lib = Xno; then
210 need_to_build_ace=yes
213 if test X$have_ace_headers = Xyes; then
214 AC_MSG_ERROR([looks like you have ACE headers, but you do not have ACE libs installed])
216 need_to_build_ace=yes
217 AC_MSG_RESULT([yes, over-install])
222 if test X$need_to_build_ace = Xyes; then
223 MANGOS_INCLUDES="-I\$(top_srcdir)/dep/ACE_wrappers -I\$(top_builddir)/dep/ACE_wrappers $MANGOS_INCLUDES"
224 MANGOS_LIBS="\$(top_builddir)/dep/ACE_wrappers/ace/libACE.la $MANGOS_LIBS"
226 MANGOS_LIBS="-lACE $MANGOS_LIBS"
229 AM_CONDITIONAL([MANGOS_BUILD_ACE], [test X$need_to_build_ace = Xyes])
232 ## Unify all additional includes/libs in one variable.
233 # TODO this looks kinda ugly, but when we add m4 folder I will make it look very pritey ( by Derex ).
234 MANGOS_INCLUDES="$POSTGRE_INCLUDES $MYSQL_INCLUDES $MANGOS_INCLUDES"
235 MANGOS_LIBS="$POSTGRE_LIBS $MYSQL_LIBS $ZLIB $COMPATLIB $SSLLIB $MANGOS_LIBS"
237 ## Export defined variables
239 AC_SUBST(MANGOSD_DEBUG_INFO)
241 ## Additional CPPFLAGS and LDFLAGS.
242 AC_SUBST(MANGOS_INCLUDES)
243 AC_SUBST(MANGOS_LIBS)
246 AC_CONFIG_HEADERS([config.h])
251 dep/src/g3dlite/Makefile
252 dep/src/sockets/Makefile
253 dep/src/zlib/Makefile
263 src/tools/genrevision/Makefile
264 src/framework/Makefile
266 src/shared/Auth/Makefile
267 src/shared/Config/Makefile
268 src/shared/Database/Makefile
269 src/shared/vmap/Makefile
270 src/shared/SystemConfig.h
273 src/realmd/realmd.conf.dist
275 src/mangosd/mangosd.conf.dist
276 src/bindings/Makefile
277 src/bindings/universal/Makefile
280 ## Configure ACE, if needed
281 if test X$need_to_build_ace = Xyes; then
282 AC_CONFIG_SUBDIRS([dep/ACE_wrappers])
285 AC_CONFIG_COMMANDS([default],[
287 echo "Configuration of MaNGOS $PACKAGE_VERSION is now complete."
289 ],[PACKAGE_VERSION=$PACKAGE_VERSION])
291 ## Disabled Makefiles, until they are ready for a successful make and