summaryrefslogtreecommitdiff
path: root/configure.in
blob: fff6acb7420f11ca49f97296a9c9afe04bc3a2cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
#  FLAC - Free Lossless Audio Codec
#  Copyright (C) 2001,2002,2003  Josh Coalson
#
#  This program is part of FLAC; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

# NOTE that for many of the AM_CONDITIONALs we use the prefix FLaC__
# instead of FLAC__ since autoconf triggers off 'AC_' in strings

AC_INIT(src/flac/main.c)
AM_INIT_AUTOMAKE(flac, 1.1.0)

# Don't automagically regenerate autoconf/automake generated files unless
# explicitly requested.  Eases autobuilding -mdz
AM_MAINTAINER_MODE

# Function to configure paths for id3lib; search for 'meat' to get to the end.
# adapted from ogg.m4
# This is here until id3lib comes with an equivalent.
# It is inline with configure.in instead of a separate file as a courtesy to users unaware of the -I flag to aclocal
dnl LOCAL__PATH_ID3LIB([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
dnl Test for libid3, and define ID3LIB_CFLAGS and ID3LIB_LIBS
dnl
AC_DEFUN(LOCAL__PATH_ID3LIB,
[dnl
dnl Get the cflags and libraries
dnl
AC_ARG_WITH(id3lib,[  --with-id3lib=PFX   Prefix where libid3 is installed (optional)], id3lib_prefix="$withval", id3lib_prefix="")
AC_ARG_WITH(id3lib-libraries,[  --with-id3lib-libraries=DIR   Directory where libid3 library is installed (optional)], id3lib_libraries="$withval", id3lib_libraries="")
AC_ARG_WITH(id3lib-includes,[  --with-id3lib-includes=DIR   Directory where libid3 header files are installed (optional)], id3lib_includes="$withval", id3lib_includes="")
AC_ARG_ENABLE(id3libtest, [  --disable-id3libtest       Do not try to compile and run a test id3lib program],, enable_id3libtest=yes)

	if test "x$id3lib_libraries" != "x" ; then
		ID3LIB_LIBS="-L$id3lib_libraries"
	elif test "x$id3lib_prefix" != "x" ; then
		ID3LIB_LIBS="-L$id3lib_prefix/lib"
	elif test "x$prefix" != "xNONE" ; then
		ID3LIB_LIBS="-L$prefix/lib"
	fi

	ID3LIB_LIBS="$ID3LIB_LIBS -lid3"

	if test "x$id3lib_includes" != "x" ; then
		ID3LIB_CFLAGS="-I$id3lib_includes"
	elif test "x$id3lib_prefix" != "x" ; then
		ID3LIB_CFLAGS="-I$id3lib_prefix/include"
	elif test "$prefix" != "xNONE"; then
		ID3LIB_CFLAGS="-I$prefix/include"
	fi

	AC_MSG_CHECKING(for id3lib)


	if test "x$enable_id3libtest" = "xyes" ; then
		id3lib_found=""
	else
		id3lib_found="yes"
	fi
	dnl There is some confusion over what libraries libid3 needs
	dnl so we must be pessimistic and try all permutations:
	dnl "-lid3" "-lid3 -lstdc++" "-lid3 -lz" "-lid3 -lz -lstdc++"
	for xtra_stdcpp in "" " -lstdc++" ; do
		for xtra_z in "" " -lz" ; do
			if test "x$id3lib_found" = "x" ; then
				ac_save_CFLAGS="$CFLAGS"
				ac_save_LIBS="$LIBS"
				CFLAGS="$CFLAGS $ID3LIB_CFLAGS"
				LIBS="$LIBS $ID3LIB_LIBS$xtra_stdcpp$xtra_z"
				rm -f conf.id3libtest
				AC_TRY_RUN([
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <id3.h>
int main () { system("touch conf.id3libtest"); return 0; }
], id3lib_found=yes,,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
				CFLAGS="$ac_save_CFLAGS"
				LIBS="$ac_save_LIBS"
			fi
			if test "x$id3lib_found" = "xyes" ; then
				ID3LIB_LIBS="$ID3LIB_LIBS$xtra_stdcpp$xtra_z"
			fi
		done
	done

	if test "x$id3lib_found" = "xyes" ; then
		AC_MSG_RESULT(yes)
		ifelse([$1], , :, [$1])
	else
		AC_MSG_RESULT(no)
		if test -f conf.id3libtest ; then
			:
		else
			echo "*** Could not run id3lib test program, checking why..."
			CFLAGS="$CFLAGS $ID3LIB_CFLAGS"
			LIBS="$LIBS $ID3LIB_LIBS"
			AC_TRY_LINK([
#include <stdio.h>
#include <id3.h>
],     [ return 0; ],
			[ echo "*** The test program compiled, but did not run. This usually means"
			echo "*** that the run-time linker is not finding id3lib or finding the wrong"
			echo "*** version of id3lib. If it is not finding id3lib, you'll need to set your"
			echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
			echo "*** to the installed location  Also, make sure you have run ldconfig if that"
			echo "*** is required on your system"
			echo "***"
			echo "*** If you have an old version installed, it is best to remove it, although"
			echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
			[ echo "*** The test program failed to compile or link. See the file config.log for the"
			echo "*** exact error that occured. This usually means id3lib was incorrectly installed"
			echo "*** or that you have moved id3lib since it was installed." ])
			CFLAGS="$ac_save_CFLAGS"
			LIBS="$ac_save_LIBS"
		fi
		ID3LIB_CFLAGS=""
		ID3LIB_LIBS=""
		ifelse([$2], , :, [$2])
	fi
	AC_SUBST(ID3LIB_CFLAGS)
	AC_SUBST(ID3LIB_LIBS)
	rm -f conf.id3libtest
])


dnl Now the meat of configure.in:

# We need two libtools, one that builds both shared and static, and
# one that builds only static.  This is because the resulting libtool
# does not allow us to choose which to build at runtime.
AM_PROG_LIBTOOL
sed -e 's/^build_old_libs=yes/build_old_libs=no/' libtool > libtool-disable-static
chmod +x libtool-disable-static

AC_PROG_CXX
AC_PROG_MAKE_SET

dnl check for getopt in standard library
dnl AC_CHECK_FUNCS(getopt_long , , [LIBOBJS="$LIBOBJS getopt.o getopt1.o"] )
AC_CHECK_FUNCS(getopt_long, [], [])

AC_CANONICAL_HOST
case "$host_cpu" in
	i*86)	cpu_ia32=true ; AC_DEFINE(FLAC__CPU_IA32) ;;
	powerpc)	cpu_ppc=true ; AC_DEFINE(FLAC__CPU_PPC) ;;
	sparc)	cpu_sparc=true ; AC_DEFINE(FLAC__CPU_SPARC) ;;
esac
AM_CONDITIONAL(FLaC__CPU_IA32, test x$cpu_ia32 = xtrue)
AM_CONDITIONAL(FLaC__CPU_PPC, test x$cpu_ppc = xtrue)
AM_CONDITIONAL(FLaC__CPU_SPARC, test x$cpu_sparc = xtrue)
case "$host" in
	i[[3-6]]86-*-openbsd*) OBJ_FORMAT=aoutb ;;
	*) OBJ_FORMAT=elf ;;
esac
AC_SUBST(OBJ_FORMAT)

if test x$cpu_ia32 = xtrue ; then
AC_DEFINE(FLAC__ALIGN_MALLOC_DATA)
fi

AC_ARG_ENABLE(asm-optimizations, [  --disable-asm-optimizations    Don't use any assembly optimization routines], asm_opt=no, asm_opt=yes)
AM_CONDITIONAL(FLaC__NO_ASM, test x$asm_opt = xno)
if test x$asm_opt = xno ; then
AC_DEFINE(FLAC__NO_ASM)
fi

AC_ARG_ENABLE(debug,
[  --enable-debug                 Turn on debugging],
[case "${enableval}" in
	yes) debug=true ;;
	no)  debug=false ;;
	*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)

AC_ARG_ENABLE(sse,
[  --enable-sse                   Enable SSE support by asserting that the OS supports SSE instructions],
[case "${enableval}" in
	yes) sse_os=true ;;
	no)  sse_os=false ;;
	*) AC_MSG_ERROR(bad value ${enableval} for --enable-sse) ;;
esac],[sse_os=false])
AM_CONDITIONAL(FLaC__SSE_OS, test x$sse_os = xtrue)
if test x$sse_os = xtrue ; then
AC_DEFINE(FLAC__SSE_OS)
fi

AC_ARG_ENABLE(3dnow,
[  --disable-3dnow                Disable 3DNOW! optimizations],
[case "${enableval}" in
	yes) use_3dnow=true ;;
	no)  use_3dnow=false ;;
	*) AC_MSG_ERROR(bad value ${enableval} for --enable-3dnow) ;;
esac],[use_3dnow=true])
AM_CONDITIONAL(FLaC__USE_3DNOW, test x$use_3dnow = xtrue)
if test x$use_3dnow = xtrue ; then
AC_DEFINE(FLAC__USE_3DNOW)
fi

AC_ARG_ENABLE(local-xmms-plugin,
[  --enable-local-xmms-plugin     Install XMMS plugin to ~/.xmms/Plugins instead of system location],
[case "${enableval}" in
	yes) install_xmms_plugin_locally=true ;;
	no)  install_xmms_plugin_locally=false ;;
	*) AC_MSG_ERROR(bad value ${enableval} for --enable-local-xmms-plugin) ;;
esac],[install_xmms_plugin_locally=false])
AM_CONDITIONAL(FLaC__INSTALL_XMMS_PLUGIN_LOCALLY, test x$install_xmms_plugin_locally = xtrue)

AC_ARG_ENABLE(exhaustive-tests,
[  --enable-exhaustive-tests      Enable exhaustive testing],
[case "${enableval}" in
	yes) exhaustive_tests=true ;;
	no)  exhaustive_tests=false ;;
	*) AC_MSG_ERROR(bad value ${enableval} for --enable-exhaustive-tests) ;;
esac],[exhaustive_tests=false])
AM_CONDITIONAL(FLaC__EXHAUSTIVE_TESTS, test x$exhaustive_tests = xtrue)
if test x$exhaustive_tests = xtrue ; then
AC_DEFINE(FLAC__EXHAUSTIVE_TESTS)
fi

AC_ARG_ENABLE(valgrind-testing,
[  --enable-valgrind-testing      Run all tests inside Valgrind],
[case "${enableval}" in
	yes) valgrind_testing=true ;;
	no)  valgrind_testing=false ;;
	*) AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind-testing) ;;
esac],[valgrind_testing=false])
AM_CONDITIONAL(FLaC__VALGRIND_TESTING, test x$valgrind_testing = xtrue)
if test x$valgrind_testing = xtrue ; then
AC_DEFINE(FLAC__VALGRIND_TESTING)
fi

dnl check for ogg library
XIPH_PATH_OGG(have_ogg=yes, AC_MSG_WARN([*** Ogg development enviroment not installed - Ogg support will not be built]))
AM_CONDITIONAL(FLaC__HAS_OGG, [test x$have_ogg = xyes])
if test x$have_ogg = xyes ; then
AC_DEFINE(FLAC__HAS_OGG)
fi

AM_PATH_XMMS(0.9.5.1, , AC_MSG_WARN([*** XMMS >= 0.9.5.1 not installed - xmms support will not be built]))
AM_CONDITIONAL(FLaC__HAS_XMMS, test x$XMMS_INPUT_PLUGIN_DIR != x)

dnl check for i18n(internationalization); these are from libiconv/gettext
AM_ICONV
AM_LANGINFO_CODESET

dnl check for id3lib library
dnl LOCAL__PATH_ID3LIB is defined by us, and will be until such time as id3lib supplies one
LOCAL__PATH_ID3LIB(have_id3lib=yes, AC_MSG_WARN([*** id3lib not found - id3v2 support will not be built]))
AM_CONDITIONAL(FLaC__HAS_ID3LIB, [test x$have_id3lib = xyes])
if test x$have_id3lib = xyes ; then
AC_DEFINE(FLAC__HAS_ID3LIB)

dnl expected id3lib version for cross compiling
ID3LIB_MAJOR=3
ID3LIB_MINOR=8
ID3LIB_PATCH=0

CFLAGS_save_blah_blah_blah=$CFLAGS
CFLAGS="$ID3LIB_CFLAGS $CFLAGS"
LIBS_save_blah_blah_blah=$LIBS
LIBS="$ID3LIB_LIBS $LIBS"
AC_MSG_CHECKING(for id3lib version)
      AC_TRY_RUN([
#include <id3.h>
#include <stdio.h>
int
main ()
{
	FILE *output;
	output=fopen("conftest.id3","w");
	fprintf(output,"ID3LIB_MAJOR=%d\nID3LIB_MINOR=%d\nID3LIB_PATCH=%d\n",ID3LIB_MAJOR_VERSION,ID3LIB_MINOR_VERSION,ID3LIB_PATCH_VERSION);
	fclose(output);
	exit(0);
}
], . ./conftest.id3; echo "${ID3LIB_MAJOR}.${ID3LIB_MINOR}.${ID3LIB_PATCH}", AC_MSG_WARN(could not determine id3lib version),[echo $ac_n "cross compiling; assuming ${ID3LIB_MAJOR}.${ID3LIB_MINOR}.${ID3LIB_PATCH} $ac_c"])
AC_DEFINE_UNQUOTED(ID3LIB_MAJOR, $ID3LIB_MAJOR)
AC_DEFINE_UNQUOTED(ID3LIB_MINOR, $ID3LIB_MINOR)
AC_DEFINE_UNQUOTED(ID3LIB_PATCH, $ID3LIB_PATCH)
CFLAGS=$CFLAGS_save_blah_blah_blah
LIBS=$LIBS_save_blah_blah_blah
fi

AC_CHECK_PROGS(DOXYGEN, doxygen)
AM_CONDITIONAL(FLaC__HAS_DOXYGEN, test -n "$DOXYGEN")
if test -n "$DOXYGEN" ; then
AC_DEFINE(FLAC__HAS_DOXYGEN)
fi

AC_CHECK_PROGS(NASM, nasm)
AM_CONDITIONAL(FLaC__HAS_NASM, test -n "$NASM")
if test -n "$NASM" ; then
AC_DEFINE(FLAC__HAS_NASM)
fi

dnl Check for type sizes

AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)

case 2 in
	$ac_cv_sizeof_short) FLaC__SIZE16="short" ; FLaC__USIZE16="unsigned short";;
	$ac_cv_sizeof_int) FLaC__SIZE16="int" ; FLaC__USIZE16="unsigned int";;
esac

case 4 in
	$ac_cv_sizeof_short) FLaC__SIZE32="short" ; FLaC__USIZE32="unsigned short";;
	$ac_cv_sizeof_int) FLaC__SIZE32="int" ; FLaC__USIZE32="unsigned int";;
	$ac_cv_sizeof_long) FLaC__SIZE32="long" ; FLaC__USIZE32="unsigned long";;
esac

case 8 in
	$ac_cv_sizeof_int) FLaC__SIZE64="int" ; FLaC__USIZE64="unsigned int";;
	$ac_cv_sizeof_long) FLaC__SIZE64="long" ; FLaC__USIZE64="unsigned long";;
	$ac_cv_sizeof_long_long) FLaC__SIZE64="long long" ; FLaC__USIZE64="unsigned long long";;
esac

if test -z "$FLaC__SIZE16"; then
	AC_MSG_ERROR(No 16 bit type found on this platform!)
fi
if test -z "$FLaC__USIZE16"; then
	AC_MSG_ERROR(No unsigned 16 bit type found on this platform!)
fi
if test -z "$FLaC__SIZE32"; then
	AC_MSG_ERROR(No 32 bit type found on this platform!)
fi
if test -z "$FLaC__USIZE32"; then
	AC_MSG_ERROR(No unsigned 32 bit type found on this platform!)
fi
if test -z "$FLaC__SIZE64"; then
	AC_MSG_WARN(No 64 bit type found on this platform!)
fi
if test -z "$FLaC__USIZE64"; then
	AC_MSG_ERROR(No unsigned 64 bit type found on this platform!)
fi

AC_SUBST(FLaC__SIZE16)
AC_SUBST(FLaC__USIZE16)
AC_SUBST(FLaC__SIZE32)
AC_SUBST(FLaC__USIZE32)
AC_SUBST(FLaC__SIZE64)
AC_SUBST(FLaC__USIZE64)

OUR_CFLAGS_HEAD='-I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include'
if test x$debug = xtrue; then
	OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -g -O0 -DDEBUG"
else
	OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -O3 -DNDEBUG"
	if test x$GCC = xyes; then
		OUR_CFLAGS_HEAD="$OUR_CFLAGS_HEAD -fomit-frame-pointer -funroll-loops -finline-functions -Wall -W -Winline -DFLaC__INLINE=__inline__"
	fi
fi
CFLAGS="$OUR_CFLAGS_HEAD $CFLAGS"
CXXFLAGS="$OUR_CFLAGS_HEAD $CXXFLAGS"

AM_CONFIG_HEADER(config.h)
AH_TEMPLATE(FLAC__ALIGN_MALLOC_DATA,  [define to align allocated memory on 32-byte boundaries])
AH_TEMPLATE(FLAC__CPU_IA32,  [define if building for ia32/i386])
AH_TEMPLATE(FLAC__CPU_PPC,  [define if building for PowerPC])
AH_TEMPLATE(FLAC__CPU_SPARC,  [define if building for SPARC])
AH_TEMPLATE(FLAC__EXHAUSTIVE_TESTS,  [define to run even more tests])
AH_TEMPLATE(FLAC__VALGRIND_TESTING,  [define to enable use of Valgrind in testers])
AH_TEMPLATE(FLAC__HAS_DOXYGEN,  [define if you have Doxygen])
AH_TEMPLATE(FLAC__HAS_ID3LIB,  [define if you have the id3lib library])
AH_TEMPLATE(FLAC__HAS_NASM,  [define if you have the NASM assembler])
AH_TEMPLATE(FLAC__HAS_OGG,  [define if you have the ogg library])
AH_TEMPLATE(FLAC__NO_ASM,  [define to disable use of assembly code])
AH_TEMPLATE(FLAC__SSE_OS,  [define if your operating system supports SSE instructions])
AH_TEMPLATE(FLAC__USE_3DNOW,  [define to enable use of 3Dnow! instructions])
AH_TEMPLATE(ID3LIB_MAJOR,  [define to major version number of id3lib])
AH_TEMPLATE(ID3LIB_MINOR,  [define to minor version number of id3lib])
AH_TEMPLATE(ID3LIB_PATCH,  [define to patch level of id3lib])

AC_OUTPUT( \
	Makefile \
	src/Makefile \
	src/libFLAC/Makefile \
	src/libFLAC/ia32/Makefile \
	src/libFLAC/include/Makefile \
	src/libFLAC/include/private/Makefile \
	src/libFLAC/include/protected/Makefile \
	src/libFLAC++/Makefile \
	src/libOggFLAC/Makefile \
	src/libOggFLAC/include/Makefile \
	src/libOggFLAC/include/protected/Makefile \
	src/libOggFLAC++/Makefile \
	src/flac/Makefile \
	src/metaflac/Makefile \
	src/monkeys_audio_utilities/Makefile \
	src/monkeys_audio_utilities/flac_mac/Makefile \
	src/monkeys_audio_utilities/flac_ren/Makefile \
	src/plugin_common/Makefile \
	src/plugin_common/include/Makefile \
	src/plugin_common/include/private/Makefile \
	src/plugin_winamp2/Makefile \
	src/plugin_winamp2/include/Makefile \
	src/plugin_winamp2/include/winamp2/Makefile \
	src/plugin_winamp3/Makefile \
	src/plugin_xmms/Makefile \
	src/share/Makefile \
	src/share/gain_analysis/Makefile \
	src/share/getopt/Makefile \
	src/share/grabbag/Makefile \
	src/share/utf8/Makefile \
	src/test_grabbag/Makefile \
	src/test_grabbag/cuesheet/Makefile \
	src/test_libFLAC/Makefile \
	src/test_libFLAC++/Makefile \
	src/test_libOggFLAC/Makefile \
	src/test_libOggFLAC++/Makefile \
	src/test_streams/Makefile \
	include/Makefile \
	include/FLAC/Makefile \
	include/FLAC/ordinals.h \
	include/FLAC++/Makefile \
	include/OggFLAC/Makefile \
	include/OggFLAC++/Makefile \
	include/share/Makefile \
	include/share/grabbag/Makefile \
	doc/Makefile \
	doc/html/Makefile \
	doc/html/images/Makefile \
	doc/html/ru/Makefile \
	man/Makefile \
	test/Makefile \
	test/cuesheets/Makefile \
	build/Makefile \
	obj/Makefile \
	obj/debug/Makefile \
	obj/debug/bin/Makefile \
	obj/debug/lib/Makefile \
	obj/release/Makefile \
	obj/release/bin/Makefile \
	obj/release/lib/Makefile \
	flac.pbproj/Makefile \
)