#  test_streams - Simple test pattern generator
#  Copyright (C) 2000-2009  Josh Coalson
#  Copyright (C) 2011-2016  Xiph.Org Foundation
#
#  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.,
#  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

#
# GNU makefile
#

topdir = ../..

include $(topdir)/build/config.mk
libdir = $(topdir)/objs/$(BUILD)/lib

PROGRAM_NAME = test_streams

INCLUDES = -I./include -I$(topdir)/include

ifeq ($(OS),Darwin)
    EXPLICIT_LIBS = $(libdir)/libgrabbag.a -lm
else
    LIBS = -lgrabbag -lm
endif

SRCS_C = \
	main.c

include $(topdir)/build/exe.mk

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