# Makefile --
#
#       FIXME: This file needs a description here.
#
# Copyright (c) 2000-2002 The Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# A. Redistributions of source code must retain the above copyright notice,
#    this list of conditions and the following disclaimer.
# B. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
# C. Neither the names of the copyright holders nor the names of its
#    contributors may be used to endorse or promote products derived from this
#    software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

INPUT_DIR = ../tests/work/405test1
TMP_DIR = ./tmp
BIN_DIR = ../utils
RESULTS_DIR = ./results
SIM_DIR = ../sim

LOG_B2A = $(BIN_DIR)/log_b2a
RANGE = $(BIN_DIR)/range
MARK2GRAPH = $(BIN_DIR)/mark2graph
MARK2STATE = $(BIN_DIR)/mark2state
SIM2STATE = $(BIN_DIR)/sim2state
SIM = $(SIM_DIR)/sim
ANALYZE = $(BIN_DIR)/analyze

RANGE_BEGIN = 10000
RANGE_END = 15000

default:
	@echo "usage: make [prepare] [raw] [fraw] [mark] [fmark]"

prepare:
	$(LOG_B2A) $(INPUT_DIR)/log.speaker > $(TMP_DIR)/speaker.dat
	$(LOG_B2A) $(INPUT_DIR)/log.audienceLeft > $(TMP_DIR)/audienceLeft.dat
	$(LOG_B2A) $(INPUT_DIR)/log.audienceCenter > $(TMP_DIR)/audienceCenter.dat
	$(LOG_B2A) $(INPUT_DIR)/log.audienceRight > $(TMP_DIR)/audienceRight.dat

range:
	$(RANGE) log.speaker.ascii $(RANGE_BEGIN) $(RANGE_END) > range.speaker
	$(RANGE) log.audienceLeft.ascii $(RANGE_BEGIN) $(RANGE_END) > range.audienceLeft
	$(RANGE) log.audienceCenter.ascii $(RANGE_BEGIN) $(RANGE_END) > range.audienceCenter
	$(RANGE) log.audienceRight.ascii $(RANGE_BEGIN) $(RANGE_END) > range.audienceRight
	$(RANGE) graph.mark $(RANGE_BEGIN) $(RANGE_END) > range.mark

raw:
	assembleGraph.tcl -t "Raw Microphone Inputs" \
	-x "Set() calls (every 16.67 ms)" \
	-f log.speaker.ascii -l "speaker" \
	-f log.audienceLeft.ascii -l "left" \
	-f log.audienceCenter.ascii -l "center" \
	-f log.audienceRight.ascii -l "right" > graph.raw

fraw:
	make range
	assembleGraph.tcl -t "Raw Microphone Inputs (range: $(RANGE_BEGIN)-$(RANGE_END)" \
	-x "Set() calls (every 16.67 ms)" \
	-f range.speaker -l "speaker" \
	-f range.audienceLeft -l "left" \
	-f range.audienceCenter -l "center" \
	-f range.audienceRight -l "right" > graph.fraw


mark:
	$(MARK2GRAPH) $(INPUT_DIR)/log.mark 10 100 125 150 > graph.mark
	assembleGraph.tcl -t "Raw Microphone Inputs" \
	-x "Set() calls (every 16.67 ms)" \
	-f graph.mark -l "question marks" \
	-f log.speaker.ascii -l "speaker" \
	-f log.audienceLeft.ascii -l "left" \
	-f log.audienceCenter.ascii -l "center" \
	-f log.audienceRight.ascii -l "right" > graph.rawmark

fmark:
	$(MARK2GRAPH) $(INPUT_DIR)/log.mark 10 100 125 150 > graph.mark
	$(RANGE) graph.mark $(RANGE_BEGIN) $(RANGE_END) > range.mark
	$(RANGE) log.speaker.ascii $(RANGE_BEGIN) $(RANGE_END) > range.speaker
	$(RANGE) log.audienceLeft.ascii $(RANGE_BEGIN) $(RANGE_END) > range.audienceLeft
	$(RANGE) log.audienceCenter.ascii $(RANGE_BEGIN) $(RANGE_END) > range.audienceCenter
	$(RANGE) log.audienceRight.ascii $(RANGE_BEGIN) $(RANGE_END) > range.audienceRight
	assembleGraph.tcl -t "Raw Microphone Inputs (range: $(RANGE_BEGIN)-$(RANGE_END)" \
	-x "Set() calls (every 16.67 ms)" \
	-f range.mark -l "question marks" \
	-f range.speaker -l "speaker" \
	-f range.audienceLeft -l "left" \
	-f range.audienceCenter -l "center" \
	-f range.audienceRight -l "right" > graph.frawmark

NUM_INDICES = 22000

compare:
	$(SIM) -lidir $(TMP_DIR)
	mv sim.out $(TMP_DIR)/sim.out
	$(MARK2STATE) $(INPUT_DIR)/log.mark $(NUM_INDICES) > $(TMP_DIR)/mark.state
	$(SIM2STATE) $(TMP_DIR)/sim.out $(NUM_INDICES) > $(TMP_DIR)/sim.state
	$(ANALYZE) $(TMP_DIR)/mark.state $(TMP_DIR)/sim.state > $(RESULTS_DIR)/analyze.out
