#  FLAC - Free Lossless Audio Codec
#  Copyright (C) 2001,2002,2003,2004  Josh Coalson
#
#  This file is part the FLAC project.  FLAC is comprised of several
#  components distributed under difference licenses.  The codec libraries
#  are distributed under Xiph.Org's BSD-like license (see the file
#  COPYING.Xiph in this distribution).  All other programs, libraries, and
#  plugins are distributed under the GPL (see COPYING.GPL).  The documentation
#  is distributed under the Gnu FDL (see COPYING.FDL).  Each file in the
#  FLAC distribution contains at the top the terms under which it may be
#  distributed.
#
#  Since this particular file is relevant to all components of FLAC,
#  it may be distributed under the Xiph.Org license, which is the least
#  restrictive of those mentioned above.  See the file COPYING.Xiph in this
#  distribution.

if FLaC__HAS_XMMS
XMMS_DIRS = plugin_xmms
endif

if FLaC__HAS_OGG
OGGFLAC_DIRS = libOggFLAC libOggFLAC++
OGGFLAC_TEST_DIRS = test_libOggFLAC test_libOggFLAC++
endif

SUBDIRS = \
	libFLAC \
	libFLAC++ \
	$(OGGFLAC_DIRS) \
	share \
	flac \
	metaflac \
	monkeys_audio_utilities \
	plugin_common \
	$(XMMS_DIRS) \
	plugin_winamp2 \
	test_grabbag \
	test_libFLAC \
	test_libFLAC++ \
	$(OGGFLAC_TEST_DIRS) \
	test_seeking \
	test_streams

EXTRA_DIST = \
	Makefile.lite
