#  test_libFLAC++ - Unit tester for libFLAC++
#  Copyright (C) 2002,2003  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.

!include <win32.mak>

SUFFIXES = .cpp

!IFDEF DEBUG
.c.obj:
	$(cc) -DFLAC__NO_DLL $(cdebug) $(cflags) /I "..\..\include" /I ".\include" -DSTRICT -DVERSION=\"1.0.5_beta2\" -YX /Od /D "_DEBUG" $<
!else
.c.obj:
	$(cc) -DFLAC__NO_DLL /O2 $(crelease) $(cflags) /I "..\..\include" /I ".\include" -DSTRICT -DVERSION=\"1.0.5_beta2\" -YX -DNODEBUG $<
!endif

!IFDEF DEBUG
.cpp.obj:
	$(cc) -DFLAC__NO_DLL /GR /D "_LIB" /GX $(cdebug) $(cflags) /I "..\..\include" -DSTRICT -YX /Od /D "_DEBUG" $<
!else
.cpp.obj:
	$(cc) -DFLAC__NO_DLL /GR /D "_LIB" /O2 $(crelease) $(cflags) /I "..\..\include" -DSTRICT -YX -DNODEBUG $<
!endif

C_FILES= \
	file_utils.c \
	metadata_utils.c

CPP_FILES= \
	decoders.cpp \
	encoders.cpp \
	main.cpp \
	metadata.cpp \
	metadata_manip.cpp \
	metadata_object.cpp

C_OBJS= $(C_FILES:.c=.obj)
CPP_OBJS= $(CPP_FILES:.cpp=.obj)

all: test_libFLAC++.exe

test_libFLAC++.exe: $(C_OBJS) $(CPP_OBJS)
	link.exe /libpath:"..\..\obj\release\lib" -out:../../obj/release/bin/$*.exe $(CPP_OBJS) $(C_OBJS) grabbag_static.lib gain_analysis_static.lib libFLAC++_static.lib libFLAC_static.lib

clean:
	-del *.obj *.pch
	-del ..\..\obj\release\bin\test_libFLAC++.exe
