1 # Copyright (C) 2005-2008 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.12.0 (trunk)
18 # BUG-REPORT-ADDRESS: mangos-devs@lists.sourceforge.net
19 AC_INIT( [mangos], [0.12.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)
167 # Enable CLI console?
168 AC_MSG_CHECKING(whether cli console is enabled)
169 MANGOSD_ENABLE_CLI=no
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)
181 AC_MSG_RESULT($MANGOSD_ENABLE_CLI)
183 # Enable remote console?
184 AC_MSG_CHECKING(whether remote console is enabled)
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)
197 AC_MSG_RESULT($MANGOSD_ENABLE_RA)
199 ## Check for required header files.
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.
219 AC_CHECK_TYPES([ptrdiff_t])
221 ## Check for required library functions.
222 AC_FUNC_CLOSEDIR_VOID
223 AC_FUNC_ERROR_AT_LINE
227 AC_FUNC_SELECT_ARGTYPES
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
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])
238 AC_MSG_CHECKING([whether to build ACE])
239 if test X$have_ace_headers = Xyes -a X$have_ace_lib = Xyes;
244 if test X$have_ace_headers = Xno -a X$have_ace_lib = Xno; then
245 need_to_build_ace=yes
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])
251 need_to_build_ace=yes
252 AC_MSG_RESULT([yes, over-install])
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"
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
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)
283 AC_CONFIG_HEADERS([config.h])
288 dep/src/g3dlite/Makefile
289 dep/src/sockets/Makefile
290 dep/src/zlib/Makefile
291 dep/src/zthread/Makefile
301 src/tools/genrevision/Makefile
302 src/framework/Makefile
304 src/shared/Auth/Makefile
305 src/shared/Config/Makefile
306 src/shared/Database/Makefile
307 src/shared/vmap/Makefile
308 src/shared/SystemConfig.h
311 src/realmd/realmd.conf.dist
313 src/mangosd/mangosd.conf.dist
314 src/bindings/Makefile
315 src/bindings/universal/Makefile
318 ## Configure ACE, if needed
319 if test X$need_to_build_ace = Xyes; then
320 AC_CONFIG_SUBDIRS([dep/ACE_wrappers])
323 AC_CONFIG_COMMANDS([default],[
325 echo "Configuration of MaNGOS $PACKAGE_VERSION is now complete."
327 ],[PACKAGE_VERSION=$PACKAGE_VERSION])
329 ## Disabled Makefiles, until they are ready for a successful make and