#  FLAC - Free Lossless Audio Codec
#  Copyright (C) 2001-2009  Josh Coalson
#  Copyright (C) 2011-2013  Xiph.Org Foundation
#
#  This file is part the FLAC project.  FLAC is comprised of several
#  components distributed under different 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.

#
# GNU Makefile
#
# Useful targets
#
# all     : build all libraries and programs in the default configuration (currently 'release')
# debug   : build all libraries and programs in debug mode
# valgrind: build all libraries and programs in debug mode, dynamically linked and ready for valgrind
# release : build all libraries and programs in release mode
# test    : run the unit and stream tests
# clean   : remove all non-distro files
#

topdir = .

.PHONY: all doc src examples libFLAC libFLAC++ share plugin_common plugin_xmms flac metaflac test_grabbag test_libFLAC test_libFLAC++ test_seeking test_streams utils flacdiff flactimer
all: doc src examples

DEFAULT_CONFIG = release

CONFIG = $(DEFAULT_CONFIG)

debug   : CONFIG = debug
valgrind: CONFIG = valgrind
release : CONFIG = release

debug   : all
valgrind: all
release : all

doc:
	(cd $@ && $(MAKE) -f Makefile.lite)

src examples:
	(cd $@ && $(MAKE) -f Makefile.lite $(CONFIG))

libFLAC libFLAC++ share flac metaflac plugin_common plugin_xmms test_libs_common test_seeking test_streams test_grabbag test_libFLAC test_libFLAC++:
	(cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))

flacdiff flactimer:
	(cd src/utils/$@ && $(MAKE) -f Makefile.lite $(CONFIG))

test: debug
	(cd test && $(MAKE) -f Makefile.lite debug)

testv: valgrind
	(cd test && $(MAKE) -f Makefile.lite valgrind)

testr: release
	(cd test && $(MAKE) -f Makefile.lite release)

clean:
	-(cd doc && $(MAKE) -f Makefile.lite clean)
	-(cd src && $(MAKE) -f Makefile.lite clean)
	-(cd examples && $(MAKE) -f Makefile.lite clean)
	-(cd test && $(MAKE) -f Makefile.lite clean)

examples: libFLAC libFLAC++ share
include $(topdir)/Makefile.deps
