1################################################################################ 2# Process this file with autoconf to produce a configure script. 3################################################################################ 4 5AC_INIT([freealut library], [1.1.0], [openal-devel@opensource.creative.com], [freealut]) 6AC_CONFIG_AUX_DIR([admin/autotools]) 7AM_INIT_AUTOMAKE 8AC_PREREQ([2.56]) 9AC_CONFIG_SRCDIR([AUTHORS]) 10AC_CONFIG_HEADERS([config.h]) 11 12# Compatibility hack for older autoconf versions 13m4_ifdef([AS_HELP_STRING], [], [AC_DEFUN([AS_HELP_STRING], [AC_HELP_STRING($][@)])]) 14 15################################################################################ 16## libtool shared library version. 17################################################################################ 18 19# Some information from the libtool info pages and the autobook regarding how to 20# handle the library version info: 21# 22# 1. Start with version information of `0:0:0' for each libtool library. 23# 24# 2. Update the version information only immediately before a public release of 25# your software. More frequent updates are unnecessary, and only guarantee 26# that the current interface number gets larger faster. 27# 28# 3. If the library source code has changed at all since the last update, then 29# increment REVISION (`C:R:A' becomes `C:r+1:A'). This is a new revision of 30# the current interface. 31# 32# 4. If any interfaces have been added, removed, or changed since the last 33# update, increment CURRENT, and set REVISION to 0. This is the first 34# revision of a new interface. 35# 36# 5. If any interfaces have been added since the last public release, then 37# increment AGE. This release is backwards compatible with the previous 38# release. 39# 40# 6. If any interfaces have been removed since the last public release, then set 41# AGE to 0. This release has a new, but backwards incompatible interface. 42# 43# NEVER try to set the interface numbers so that they correspond to the release 44# number of your package. This is an abuse that only fosters misunderstanding of 45# the purpose of library versions. Furthermore, do not confuse those versions 46# with the version of the specification which is implemented. 47 48CURRENT=1 49REVISION=0 50AGE=1 51 52AC_SUBST([VERSIONINFO], ["$CURRENT:$REVISION:$AGE"]) 53 54################################################################################ 55# Checks for programs. 56################################################################################ 57 58AC_PROG_CC 59AC_C_CONST 60ALUT_C__ATTRIBUTE__ 61 62# Note that -fvisibility=... support implies __attribute__((visibility(...))) 63# support. 64ALUT_CHECK_FLAG([-fvisibility=hidden], 65 [AM_CFLAGS="$AM_CFLAGS -fvisibility=hidden" 66 AC_DEFINE([HAVE_GCC_VISIBILITY], [1], 67 [Define to 1 if we are using a GCC with symbol visibility support.])]) 68 69# test_suite/test_retrostuff tests deprecated functions, but we don't want to 70# get compiler warnings because of that. 71ALUT_CHECK_FLAG([-Wno-deprecated-declarations], 72 [alut_wno_deprecated_declarations=yes], 73 [alut_wno_deprecated_declarations=no]) 74AM_CONDITIONAL([WNO_DEPRECATED_DECLARATIONS], 75 [test x"$alut_wno_deprecated_declarations" = xyes]) 76 77AC_EXEEXT 78AC_LIBTOOL_WIN32_DLL 79AC_PROG_LIBTOOL 80AC_SUBST([LIBTOOL_DEPS]) 81 82AC_DEFINE([ALUT_BUILD_LIBRARY], [1], [Define to 1 if you want to build the ALUT DLL.]) 83 84# Checks for libraries. (not perfect yet) 85AC_SEARCH_LIBS([pthread_self], [pthread]) 86AC_SEARCH_LIBS([alGetError], [openal32 openal]) 87 88################################################################################ 89# Checks for header files. 90################################################################################ 91 92# We could possibly need struct timespec and random(), which are not ANSI. 93AC_DEFINE([_XOPEN_SOURCE], [500], [Define to 500 if Single Unix conformance is wanted, 600 for sixth revision.]) 94 95# We might need nanosleep, which is a POSIX IEEE Std 1003.1b-1993 feature. 96AC_DEFINE([_POSIX_C_SOURCE], [199309], [Define to the POSIX version that should be used.]) 97 98# Without __NO_CTYPE tolower and friends are macros which introduce a GLIBC 2.3 99# dependency. By defining this identifier we are currently backwards compatible 100# to GLIBC 2.1.3, which is a good thing. In addition, the macros lead to code 101# which triggers warnings with -Wunreachable-code. 102AC_DEFINE([__NO_CTYPE], [1], [Define to 1 if tolower and friends should not be macros.]) 103 104AC_HEADER_STDC 105AC_CHECK_HEADERS([AL/alc.h AL/al.h basetsd.h ctype.h math.h stdio.h time.h windows.h]) 106 107# Checks for library functions. 108ALUT_CHECK_FUNC([[@%:@include <time.h>]], 109 [nanosleep], [[((struct timespec*)0, (struct timespec*)0)]]) 110 111ALUT_CHECK_FUNC([[@%:@include <unistd.h>]], 112 [usleep], [[(0)]]) 113 114ALUT_CHECK_FUNC([[@%:@include <windows.h>]], 115 [Sleep], [[(0)]]) 116 117ALUT_CHECK_FUNC([[@%:@include <sys/types.h> 118 @%:@include <sys/stat.h> 119 @%:@include <unistd.h>]], 120 [stat], [[("", (struct stat*)0)]]) 121 122ALUT_CHECK_FUNC([[@%:@include <sys/types.h> 123 @%:@include <sys/stat.h>]], 124 [_stat], [[("", (struct _stat*)0)]]) 125 126AC_CHECK_LIBM 127AC_SUBST([LIBM]) 128 129################################################################################ 130# Build time configuration. 131################################################################################ 132 133AC_ARG_ENABLE([warnings], 134[AS_HELP_STRING([--enable-warnings], 135 [enable pedantic compiler warnings @<:@default=yes@:>@])]) 136 137if test "x$enable_warnings" != xno; then 138 # Doing it in two steps gives a nicer message... 139 AX_CFLAGS_WARN_ALL_ANSI([flags]) 140 AM_CFLAGS="$AM_CFLAGS $flags" 141fi 142 143AC_ARG_ENABLE([more-warnings], 144[AS_HELP_STRING([--enable-more-warnings], 145 [enable even more compiler warnings @<:@default=no@:>@])]) 146 147if test "x$enable_more_warnings" = xyes; then 148 if test "x$enable_warnings" = xno; then 149 AC_MSG_WARN([--enable-more-warnings ignored because of --disable-warnings]) 150 elif test "x$GCC" != xyes; then 151 AC_MSG_WARN([--enable-more-warnings ignored because no GCC was detected]) 152 else 153 # The long list of warning options below contains every GCC warning option 154 # which is not automatically enabled with -Wall. The only exceptions to this 155 # rule are: 156 # 157 # -Wpadded: 158 # Perhaps good for optimizing out data layout, but not in general. 159 # 160 # -Wconversion: 161 # Passing e.g. float as an argument is fine, we always have prototypes. 162 # 163 # Note that some older GCC versions give false positives about unreachable 164 # code. 165 AM_CFLAGS="$AM_CFLAGS -W -Waggregate-return -Wbad-function-cast -Wcast-align -Wcast-qual -Wdisabled-optimization -Wendif-labels -Wfloat-equal -Winline -Wlong-long -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wpacked -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-compare -Wstrict-prototypes -Wundef -Wunreachable-code -Wwrite-strings" 166 167 # Check for GCC 4.x-only warning options. 168 ALUT_CHECK_FLAG([-Wdeclaration-after-statement], 169 [AM_CFLAGS="$AM_CFLAGS -Wdeclaration-after-statement"]) 170 ALUT_CHECK_FLAG([-Winvalid-pch], 171 [AM_CFLAGS="$AM_CFLAGS -Winvalid-pch"]) 172 ALUT_CHECK_FLAG([-Wmissing-field-initializers], 173 [AM_CFLAGS="$AM_CFLAGS -Wmissing-field-initializers"]) 174 # We cheat here a bit: The code generated by AC_LANG_PROGRAM triggers a 175 # warning with -Wold-style-definition, so we assume that this flag is 176 # supported whenever -Wvariadic-macros is. 177 ALUT_CHECK_FLAG([-Wvariadic-macros], 178 [AM_CFLAGS="$AM_CFLAGS -Wvariadic-macros -Wold-style-definition"]) 179 fi 180fi 181 182AC_ARG_ENABLE([werror], 183[AS_HELP_STRING([--enable-werror], 184 [enable failure on all warnings @<:@default=no@:>@])]) 185 186if test "x$enable_werror" = xyes; then 187 if test "x$enable_warnings" = xno; then 188 AC_MSG_WARN([--enable-werror ignored because of --disable-warnings]) 189 elif test "x$GCC" != xyes; then 190 AC_MSG_WARN([--enable-werror ignored because no GCC was detected]) 191 else 192 AM_CFLAGS="$AM_CFLAGS -Werror" 193 fi 194fi 195 196AC_ARG_ENABLE([efence], 197[AS_HELP_STRING([--enable-efence], 198 [enable Electric Fence support @<:@default=no@:>@])]) 199 200if test "x$enable_efence" = xyes; then 201 alut_saved_LIBS=$LIBS 202 LIBS="-lefence $LIBS" 203 AC_LINK_IFELSE([AC_LANG_PROGRAM([extern int EF_ALIGNMENT;], [EF_ALIGNMENT = 8;])], 204 [:], 205 [AC_MSG_WARN([--enable-efence ignored because the Electric Fence library was not found.]) 206 LIBS=$alut_saved_LIBS]) 207fi 208 209################################################################################ 210# Generate output. 211################################################################################ 212 213AC_SUBST([AM_CFLAGS]) 214 215# NOTE: Do not break the following line, otherwise we are into CR/LF vs. LF 216# trouble! This is a buglet in autoconf IMHO, but easy to work around. 217AC_CONFIG_FILES([Makefile admin/Makefile admin/pkgconfig/Makefile admin/pkgconfig/freealut-config admin/pkgconfig/freealut.pc admin/RPM/freealut.spec examples/Makefile include/Makefile src/Makefile test_suite/Makefile]) 218 219AC_OUTPUT 220