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