########################################################-*-mode:Makefile-*-
##                                                                       ##
##                  Language Technologies Institute                      ##
##                     Carnegie Mellon University                        ##
##                      Copyright (c) 2000-2008                          ##
##                        All Rights Reserved.                           ##
##                                                                       ##
##  Permission is hereby granted, free of charge, to use and distribute  ##
##  this software and its documentation without restriction, including   ##
##  without limitation the rights to use, copy, modify, merge, publish,  ##
##  distribute, sublicense, and/or sell copies of this work, and to      ##
##  permit persons to whom this work is furnished to do so, subject to   ##
##  the following conditions:                                            ##
##   1. The code must retain the above copyright notice, this list of    ##
##      conditions and the following disclaimer.                         ##
##   2. Any modifications must be clearly marked as such.                ##
##   3. Original authors' names are not deleted.                         ##
##   4. The authors' names are not used to endorse or promote products   ##
##      derived from this software without specific prior written        ##
##      permission.                                                      ##
##                                                                       ##
##  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         ##
##  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      ##
##  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   ##
##  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      ##
##  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    ##
##  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   ##
##  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          ##
##  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       ##
##  THIS SOFTWARE.                                                       ##
##                                                                       ##
###########################################################################
FLITEDIR=__FLITEDIR__
TOP=$(FLITEDIR)
DIRNAME=flite
VOICENAME=__VOICENAME__
VOICETYPE=__VOICETYPE__

FLITE_LANG=__FLITELANG__
FLITE_LEX=__FLITELEX__
LOCAL_INCLUDES = -I$(TOP)/lang/$(FLITE_LANG) -I$(TOP)/lang/$(FLITE_LEX)
LOCAL_LANGLEX_LIBS = -lflite_$(FLITE_LANG) -lflite_$(FLITE_LEX)
LOCAL_LIBS = -L . -l$(VOICENAME) 
H = 

CSRCS = $(VOICENAME).c

VOICES=$(VOICENAME)

ifeq ($(VOICETYPE),diphone)
## Diphone
CSRCS +=$(VOICENAME)_$(VOICETYPE).c
CSRCS +=$(VOICENAME)_lpc.c
CSRCS +=$(VOICENAME)_res.c
CSRCS +=$(VOICENAME)_residx.c
else
ifeq ($(VOICETYPE),cg)
## Clustergen
CSRCS += $(VOICENAME)_cg.c
CSRCS += $(VOICENAME)_cg_f0_trees.c 
CSRCS += $(VOICENAME)_cg_durmodel.c
CSRCS += $(VOICENAME)_cg_phonestate.c
# Identify which .c param files are used (static+delta/single)
include paramfiles.mak
ifeq ($(PARAMMODEL),multimodel)
CSRCS += $(VOICENAME)_cg_static_mcep_trees.c $(VOICENAME)_cg_static_params.c
CSRCS += $(VOICENAME)_cg_delta_mcep_trees.c $(VOICENAME)_cg_delta_params.c
else
# Single model
CSRCS += $(VOICENAME)_cg_single_mcep_trees.c $(VOICENAME)_cg_single_params.c
endif
MCEPOBJS =
LPCOBJS =
else
## Clunits/ldom
CSRCS += $(VOICENAME)_clunits.c
CSRCS += $(VOICENAME)_cltrees.c $(VOICENAME)_lpc.c $(VOICENAME)_mcep.c
CSRCS += $(VOICENAME)_cl_durmodel.c
MCEPSRCS = $(shell ls $(VOICENAME)_mcep_*.c)
MCEPOBJS = $(MCEPSRCS:.c=.o)
LPCSRCS= $(shell ls $(VOICENAME)_lpc_*.c)
LPCOBJS = $(LPCSRCS:.c=.o)
RESSRCS= $(shell ls $(VOICENAME)_res_*.c)
RESOBJS = $(RESSRCS:.c=.o)
endif
endif

OBJS = $(CSRCS:.c=.o) $(LPCOBJS) $(MCEPOBJS) $(RESOBJS) 

ALL = .build_lib flite_$(VOICENAME)

include $(FLITEDIR)/config/common_make_rules

LIBDIR=.
ifdef SHFLAGS
ALL += lib$(VOICENAME).so
endif

$(VOICENAME)_lpc.o: $(VOICENAME)_lpc.c
	$(CC) -I. -I$(FLITEDIR)/include -c -o $@ $<

$(VOICENAME)_mcep.o: $(VOICENAME)_mcep.c
	$(CC) -I. -I$(FLITEDIR)/include -c -o $@ $<

flite_$(VOICENAME): flite_main.o flite_voice_list.o $(FLITELIBS) lib$(VOICENAME).a
	$(CC) $(CFLAGS) -o $@ flite_main.o flite_voice_list.o $(LOCAL_LIBS)  $(LOCAL_LANGLEX_LIBS) $(FLITELIBFLAGS) $(LDFLAGS)

.build_lib: $(OBJS)
	@ $(AR) cruv $(LIBDIR)/lib$(VOICENAME).a $(OBJS)
	@ $(RANLIB) $(LIBDIR)/lib$(VOICENAME).a
	@ touch .build_lib

flite_voice_list.c:
	$(TOP)/tools/make_voice_list $(VOICES)