1#                                               -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_INIT([Tux4Kids-Common],[0.1.1],[tuxmath-devel@lists.sourceforge.net],[t4k_common])
5AC_CONFIG_SRCDIR([src/t4k_audio.c])
6AC_CONFIG_MACRO_DIR([m4])
7
8AC_PREREQ([2.63])
9AC_CANONICAL_HOST
10AC_CANONICAL_BUILD
11AC_CANONICAL_TARGET
12
13AM_INIT_AUTOMAKE(foreign)
14AC_CONFIG_SRCDIR([config.h.in])
15AC_CONFIG_HEADER([config.h])
16
17NAME_VERSION=$PACKAGE-$VERSION
18
19AC_DEFINE_UNQUOTED([PROGRAM_NAME], "$PACKAGE", [Tux4Kids-Common])
20
21AC_SUBST(NAME_VERSION)
22
23# Needed for gettext:
24AC_GNU_SOURCE
25AM_GNU_GETTEXT_VERSION([0.18.1])
26AM_GNU_GETTEXT([external])
27
28
29# ----------------------------------------------------------------------
30# Checks for programs.
31# ----------------------------------------------------------------------
32
33AC_PROG_CXX
34AC_PROG_CC
35AC_PROG_INSTALL
36AC_PROG_MAKE_SET
37AC_PROG_AWK
38AC_PROG_CPP
39AC_PROG_MKDIR_P
40AC_PROG_YACC
41AC_PROG_LIBTOOL
42
43
44# -----------------------------------------------------------------------
45# Checks for libraries.
46# -----------------------------------------------------------------------
47
48
49dnl ---------------------------------------------------------------------------
50dnl In the following checks we attempt to use pkg-config if available, falling
51dnl back to standard autoconf macro as needed:
52dnl ---------------------------------------------------------------------------
53
54dnl Create output variables to be used in t4k_common.pc.in:
55dnl NOTE - the libs in DEP_LIBS_PRIVATE are all needed, even if all optional
56dnl libraries are deselected. The one lib in the list that is not needed by the
57dnl DEP_LIBS is -lpthread, which is needed by TuxMath itself.  Perhaps we should
58dnl check for it with the pkg-config/autoconf macros?
59
60DEP_PKGS=""
61DEP_LIBS=""
62DEP_LIBS_PRIVATE="-mwindows -lmikmod -lsmpeg -lstdc++ -lmingw32 -lSDLmain -liconv -luser32 -lgdi32 -lwinmm -ldxguid -lSDL -lpthread -lvorbisfile -lvorbis -lm -logg -lfreetype"
63
64
65dnl Check for SDL
66PKG_CHECK_MODULES([SDL],
67	[sdl >= 1.2.0],
68	[],
69	[SDL_VERSION=1.2.0
70	 AM_PATH_SDL($SDL_VERSION, :,
71		AC_MSG_ERROR([SDL version $SDL_VERSION not found! http://www.libsdl.org]))])
72
73CFLAGS="$CFLAGS $SDL_CFLAGS"
74LIBS="$LIBS $SDL_LIBS"
75DEP_PKGS="$DEP_PKGS sdl >= 1.2.0"
76
77
78
79dnl Check for SDL_image: ------------------------------------------------------
80
81PKG_CHECK_MODULES([SDL_IMAGE],
82	[SDL_image],
83	[],
84	[AC_MSG_NOTICE([SDL_image not located by pkg-config, checking with AC CHECK LIB:])
85	 AC_CHECK_LIB([SDL_image],
86		[IMG_Load],
87		[],
88		[AC_MSG_ERROR([SDL_image not found! http://www.libsdl.org/projects/SDL_image])])])
89
90AC_DEFINE([HAVE_LIBSDL_IMAGE],[1],[Define to 1 if you have the 'SDL_image' library])
91CFLAGS="$CFLAGS $SDL_IMAGE"
92LIBS="$LIBS $SDL_IMAGE_LIBS"
93DEP_PKGS="$DEP_PKGS SDL_image"
94
95dnl Check for SDL_mixer: --------------------------------------------------------
96
97PKG_CHECK_MODULES([SDL_MIXER],
98	[SDL_mixer],
99	[],
100	[AC_MSG_NOTICE([SDL_mixer not located by pkg-config, checking with AC CHECK LIB:])
101	 AC_CHECK_LIB([SDL_mixer],
102		[Mix_OpenAudio],
103		[],
104		[AC_MSG_ERROR([SDL_mixer not found! http://www.libsdl.org/projects/SDL_mixer])])])
105
106AC_DEFINE([HAVE_LIBSDL_MIXER],[1],[Define to 1 if you have the 'SDL_mixer' library])
107CFLAGS="$CFLAGS $SDL_MIXER_CFLAGS"
108LIBS="$LIBS $SDL_MIXER_LIBS"
109DEP_LIBS="$DEP_LIBS -lSDL_mixer"
110
111
112dnl Check for SDL_Pango: --------------------------------------------------------
113
114dnl SDL_Pango is enabled by default.
115dnl If SDL_Pango disabled at configure time, or if we can't find it,
116dnl we look for SDL_ttf:
117
118AC_ARG_WITH([sdlpango],
119	[AS_HELP_STRING([--without-sdlpango],
120	[Do not use SDL_Pango even if available])],
121	[],
122	[with_sdlpango=yes])
123
124
125if test "x$with_sdlpango" != xno; then
126
127PKG_CHECK_MODULES([SDL_PANGO],
128	[SDL_Pango],
129	[],
130	[AC_MSG_NOTICE([SDL_Pango not located by pkg-config, checking with AC CHECK LIB:])
131	 AC_CHECK_LIB([SDL_Pango],
132		[SDLPango_Init],
133		[],
134		[AC_MSG_FAILURE([SDL_Pango test failed (--without-sdlpango to disable)])])])
135
136AC_DEFINE([HAVE_LIBSDL_PANGO],[1],[Define to 1 if you have the `SDL_Pango` library])
137CFLAGS="$CFLAGS $SDL_PANGO_CFLAGS"
138LIBS="$LIBS $SDL_PANGO_LIBS"
139DEP_PKGS="$DEP_PKGS SDL_Pango"
140
141fi
142
143
144
145dnl We only use SDL_ttf if SDL_Pango disabled: --------------------------------------
146
147if [test "x$with_sdlpango" = xno]; then
148dnl Add freetype link "by hand" until mingw-cross-env takes care
149dnl of this automatically
150LIBS="-lfreetype $LIBS"
151
152PKG_CHECK_MODULES([SDL_ttf],
153	[SDL_ttf],
154	[],
155	[AC_MSG_NOTICE([SDL_ttf not located by pkg-config, checking with AC CHECK LIB:])
156	 AC_CHECK_LIB([SDL_ttf],
157		[TTF_Init],
158		[],
159		[AC_MSG_ERROR([SDL_ttf not found! http://www.libsdl.org/projects/SDL_ttf])])])
160
161AC_DEFINE([HAVE_LIBSDL_TTF],[1],[Define to 1 if you have the `SDL_ttf` library])
162CFLAGS="$CFLAGS $SDL_TTF_CFLAGS"
163LIBS="$LIBS $SDL_TTF_LIBS"
164DEP_LIBS="$DEP_LIBS -lSDL_ttf"
165fi
166
167
168
169dnl Check for SDL_net: --------------------------------------------------------
170
171dnl SDL_net is enabled by default.
172
173AC_ARG_WITH([sdlnet],
174	[AS_HELP_STRING([--without-sdlnet],
175	[Do not use SDL_net even if available])],
176	[],
177	[with_sdlnet=yes]
178)
179
180if test "x$with_sdlnet" != xno; then
181dnl We will need this for socket programming on Win32
182AC_CHECK_LIB([ws2_32],
183             [WSAStartup],
184	     []  ,
185	     [AC_MSG_NOTICE([Windows socket library ws2_32 not found - (only needed on win32)])])
186
187
188PKG_CHECK_MODULES([SDL_NET],
189	[SDL_net],
190	[],
191	[AC_MSG_NOTICE([SDL_net not located by pkg-config, checking with AC CHECK LIB:])
192	 AC_CHECK_LIB([SDL_net],
193		[SDLNet_Init],
194		[],
195		[AC_MSG_FAILURE([SDL_net test failed (--without-sdlnet to disable)])])])
196
197AC_DEFINE([HAVE_LIBSDL_NET],[1],[Define to 1 if you have the 'SDL_net' library])
198CFLAGS="$CFLAGS $SDL_NET_CFLAGS"
199LIBS="$LIBS $SDL_NET_LIBS"
200DEP_LIBS="$DEP_LIBS -lSDL_net"
201fi
202
203
204
205dnl Check for libRSVG and cairo. SVG support is enabled by default ----------------------
206
207AC_ARG_WITH([rsvg],
208	[AS_HELP_STRING([--without-rsvg],[do not use libRSVG even if available])],
209	[with_rsvg=no],
210	[with_rsvg=yes])
211
212if test "x$with_rsvg" = xyes; then
213PKG_CHECK_MODULES([RSVG],
214	[librsvg-2.0 >= 2.18],
215	[],
216	[AC_MSG_FAILURE([libRSVG test failed (--without-rsvg to disable svg support)])])
217
218CFLAGS="$CFLAGS $RSVG_CFLAGS"
219LIBS="$LIBS $RSVG_LIBS"
220DEP_PKGS="$DEP_PKGS librsvg-2.0"
221fi
222
223if test "x$with_rsvg" = xyes; then
224PKG_CHECK_MODULES([CAIRO],
225	[cairo >= 1.4.10],
226	[],
227	[AC_MSG_FAILURE([cairo test failed (--without-rsvg to disable svg support)])])
228
229CFLAGS="$CFLAGS $CAIRO_CFLAGS"
230LIBS="$LIBS $CAIRO_LIBS"
231AC_DEFINE([HAVE_RSVG],[1],[Define to 1 if you have the `libRSVG` library])
232fi
233
234
235
236if test "x$with_rsvg" = xyes; then
237PKG_CHECK_MODULES([LIBPNG],
238	[libpng >= 1.2.37],
239	[],
240	[AC_MSG_FAILURE([libpng test failed (--without-rsvg to disable svg support)])])
241CFLAGS="$CFLAGS $LIBPNG_CFLAGS"
242LIBS="$LIBS $LIBPNG_LIBS"
243AC_DEFINE([HAVE_LIBPNG],[1],[Define to 1 if you have the `libpng` library])
244fi
245
246
247
248dnl Check for libxml2: --------------------------------------------------------
249
250PKG_CHECK_MODULES([XML2],
251	[libxml-2.0],
252	[],
253	[AC_MSG_NOTICE([libxml2 not located by pkg-config, checking with AC CHECK LIB:])
254	 AC_CHECK_LIB([xml2],
255		[xmlParseFile],
256		[],
257		[AC_MSG_ERROR([libxml-2.0 not found: http://www.xmlsoft.org])])])
258
259AC_DEFINE([HAVE_LIBXML2],[1],[Define to 1 if you have the `libxml-2.0` library])
260CFLAGS="$CFLAGS $XML2_CFLAGS"
261LIBS="$LIBS $XML2_LIBS"
262DEP_PKGS="$DEP_PKGS libxml-2.0"
263
264
265
266dnl Check for math functions - needed for SDL_extras: --------------------------------------------
267
268AC_CHECK_LIB([m],
269	[csin],
270	[],
271	[AC_MSG_ERROR([Math library not found - functions in <math.h> may not be available.])])
272
273
274
275dnl Output substitutions needed for t4k_common.pc.in:
276dnl (these are used by the subsequent build process of a program using t4k_common,
277dnl not by the build process of t4k_common itself).
278
279AC_SUBST(DEP_PKGS)
280AC_SUBST(DEP_LIBS)
281AC_SUBST(DEP_LIBS_PRIVATE)
282
283
284# --------------------------------------------------------------------------------------
285# Checks for header files.
286# --------------------------------------------------------------------------------------
287
288AC_FUNC_ALLOCA
289AC_HEADER_DIRENT
290AC_HEADER_STDC
291AC_CHECK_HEADERS([argz.h error.h errno.h fcntl.h float.h iconv.h inttypes.h langinfo.h libgen.h libintl.h limits.h locale.h malloc.h math.h stddef.h stdint.h stdio_ext.h stdlib.h string.h strings.h sys/param.h unistd.h wchar.h])
292
293
294# --------------------------------------------------------------------------------------------
295# Checks for typedefs, structures, and compiler characteristics.
296# --------------------------------------------------------------------------------------------
297
298AC_HEADER_STDBOOL
299AC_C_CONST
300AC_C_INLINE
301AC_C_RESTRICT
302AC_TYPE_MODE_T
303AC_TYPE_SIZE_T
304AC_TYPE_UINT16_T
305AC_TYPE_UINT32_T
306AC_TYPE_UINT8_T
307AC_C_VOLATILE
308AC_CHECK_TYPES([ptrdiff_t])
309
310
311
312# -------------------------------------------------------------------------------------------
313# Checks for library functions.
314# -------------------------------------------------------------------------------------------
315
316
317AC_FUNC_CLOSEDIR_VOID
318AC_FUNC_ERROR_AT_LINE
319#AC_FUNC_MALLOC
320AC_FUNC_MMAP
321#AC_FUNC_REALLOC
322AC_FUNC_STAT
323AC_FUNC_STRCOLL
324AC_FUNC_STRTOD
325AC_FUNC_VPRINTF
326AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify atexit basename bcopy floor getcwd localeconv localtime_r memmove mempcpy memset mkdir munmap nl_langinfo scandir alphasort setlocale sqrt stpcpy strcasecmp strchr strcspn strdup strncasecmp strndup strrchr strstr strtoul])
327
328
329dnl FIXME - get rid of remaining win32 conditional code
330
331# Check platform - see if WinMain needed:
332AC_MSG_CHECKING([for native Win32])
333case "$host" in
334  *-*-mingw*)
335    native_win32=yes
336    ;;
337  *)
338    native_win32=no
339    ;;
340esac
341AC_MSG_RESULT([$native_win32])
342
343AM_CONDITIONAL(BUILD_MINGW32, test $native_win32 = yes)
344
345# Set the
346MINGW32_PACKAGE_DATA_DIR="data"
347AC_SUBST(MINGW32_PACKAGE_DATA_DIR)
348
349
350if test $native_win32 = yes; then
351   AC_DEFINE([BUILD_MINGW32], 1,[Native MinGW32 build])
352   CFLAGS="$CFLAGS -D__GW32__"
353   LIBS="$LIBS -luuid -lole32 -lwsock32 -mwindows"
354   CPPFLAGS="$CPPFLAGS -idirafter $prefix/include/glibc"
355   AC_PATH_PROG(WINDRES, "$target_alias-windres", no, [$PATH])
356fi
357
358dnl ----------------------------------------------------------
359
360dnl Needed for Doxygen:
361AC_SUBST(T4K_DEVELOPER_WARNINGS, ["NO"])
362AC_SUBST(DOXYFILE_SOURCE_DIR, [$srcdir"/src"])
363AC_SUBST(DOXYFILE_OUTPUT_DIR, [doxygen])
364
365DX_HTML_FEATURE(ON)
366DX_CHM_FEATURE(OFF)
367DX_CHI_FEATURE(OFF)
368DX_MAN_FEATURE(OFF)
369DX_RTF_FEATURE(OFF)
370DX_XML_FEATURE(OFF)
371DX_PDF_FEATURE(ON)
372DX_PS_FEATURE(OFF)
373DX_INIT_DOXYGEN(t4k_common, doxygen.cfg)
374
375AC_CONFIG_FILES([Makefile
376                 data/Makefile
377                 data/images/Makefile
378                 data/images/menu/Makefile
379                 po/Makefile.in
380                 src/Makefile
381                 src/linebreak/Makefile
382		 Doxyfile
383                 t4k_common.pc])
384AC_OUTPUT
385