#  test_libOggFLAC++ - Unit tester for libOggFLAC++
#  Copyright (C) 2002,2003,2004  Josh Coalson
#
#  This program is free software; 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.

#
# GNU makefile
#

topdir = ../..
libdir = $(topdir)/obj/$(BUILD)/lib

PROGRAM_NAME = test_libOggFLAC++

INCLUDES = -I$(topdir)/include

ifeq ($(DARWIN_BUILD),yes)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libreplaygain_analysis.a $(libdir)/libOggFLAC++.a $(libdir)/libOggFLAC.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lgrabbag -lreplaygain_analysis -lOggFLAC++ -lOggFLAC -lFLAC -L$(OGG_LIB_DIR) -logg -lm
endif

SRCS_C = \
	file_utils.c \
	metadata_utils.c
SRCS_CPP = \
	decoders.cpp \
	encoders.cpp \
	main.cpp

include $(topdir)/build/exe.mk

LINK = $(CCC) $(LINKAGE)

# DO NOT DELETE THIS LINE -- make depend depends on it.
