# Makefile for /dapi/src for Dectalk software for x86_64-apple-macos 
#
# this file does the linking of the library and the install
#
# 001 MGS 05/22/1998 changed code for vtm_fa.c (FVTM C)
# 002 ETT 10/22/1998 moved to autoconf system. 
#		this file /dapi/src/Makefile.in
#		is processed by configure to produce Makefile
# 003 ETT 12/07/1998 added SO_LOCATIONS
# 004 NAL 04/07/2000 added gspeak demo info
# 005 MGS 06/19/2001 Solaris Port BATS#972
CP=cp
RM=rm -f

#### Start of system configuration section. ####  

AR=ar ruvs
LD=ld
CC=/usr/bin/gcc
LN_S=ln -f -s
RANLIB=ranlib
#should we link linux_audio.o ?
LINK_LINUX_AUDIO=
LINK_PORT_AUDIO=
#which DECtalk libraries should we link?
ALL=$(OUTPUT_DIR)/libtts.a 	$(OUTPUT_DIR)/libtts.dylib
#which objects should we link into the libs?
DECTALK_TTS_OBJS=$(API_ALL_OBJ) $(API_MME_OBJ) 	$(CMD_OBJ) $(LTS_OBJ) $(LTS_NORM_OBJS) $(PH_OBJ) $(HL_OBJ) $(KERNEL_OBJ) 	$(NT_OBJ) $(NT_MME_OBJ) $(OSF_OBJ) $(VTM_OBJ)
#
DECTALK_MME_OBJS=$(API_ALL_OBJ) $(API_MME_OBJ) $(CMD_OBJ) $(LTS_OBJ) 	$(LTS_NORM_OBJS) $(PH_OBJ) $(HL_OBJ) $(KERNEL_OBJ) $(NT_OBJ) 	$(NT_MME_OBJ) $(OSF_OBJ) $(VTM_OBJ)

DECTALK_DEMO_OBJS=$(API_ALL_OBJ) $(API_DEMO_OBJ) 	$(CMD_OBJ) $(LTS_OBJ) $(LTS_DEMO_OBJS) $(PH_OBJ) $(HL_OBJ) $(KERNEL_OBJ) 	$(NT_OBJ) $(OSF_OBJ) $(NT_MME_OBJ) $(VTM_OBJ)
#which system libraries get linked in?
LIBS=-lpthread -framework CoreAudio -framework AudioToolbox -framework AudioUnit
MMELIBS= -lpthread
#where do the shared libs go?
SHLIB=/usr/lib
SHLIB_SUFFIX=dylib
#osf crazy hidden shared lib symbol madness:
SO_LOCATIONS=
DAPI_LD_SHARED=$(CC) -arch x86_64 -dynamic -dynamiclib -dylib 		-o $@ $(DECTALK_TTS_OBJS) $(LIBS) $(LANG_LIBS)
LIB_LN_S_A_DIR=/usr/lib
LIB_LN_S_SO_DIR=/usr/lib
INC_LN_S_DIR=/usr/include/dtk
PLAYAUD=playaud_mac.o
#### End of system configuration section. #### 

OUTPUT_DIR_2= $(OUTPUT_DIR)/com

API_SRC = api/ttsapi.c api/decstd97.c api/init.c api/crypt2.c

CMD_SRC =cmd/cm_char.c  cmd/cm_main.c  cmd/cm_text.c  cmd/cm_pars.c \
         cmd/cm_cmd.c   cmd/cm_util.c  cmd/cm_phon.c  cmd/cm_copt.c \
         cmd/par_pars.c cmd/par_ambi.c cmd/par_dict.c cmd/par_rule.c \
         cmd/par_char.c cmd/cmd_wav.c  cmd/cmd_init.c

LTS_SRC=lts/lsa_adju.c lts/lsa_coni.c lts/lsa_fr.c lts/lsa_gr.c \
        lts/lsa_ir.c lts/lsa_it.c lts/lsa_ja.c lts/lsa_rtbi.c lts/lsa_rule.c \
        lts/lsa_sl.c lts/lsa_sp.c lts/lsa_task.c lts/lsa_us.c lts/lsa_util.c \
        lts/lsw_main.c lts/ls_chari.c lts/ls_dict.c lts/ls_homo.c \
        lts/ls_math.c lts/ls_proc.c lts/ls_spel.c lts/ls_speli.c \
        lts/ls_suff.c lts/ls_suffi.c lts/loaddict.c 

PH_SRC= ph/ph_aloph.c ph/ph_claus.c ph/ph_draw.c ph/ph_drwt0.c ph\ph_drwt02it.c \
        ph/ph_inton.c ph/ph_inton2.c ph/ph_inton2it.c ph/ph_main.c ph/ph_romi.c ph/ph_setar.c ph/ph_sort.c \
        ph/ph_syl.c ph/ph_syntx.c ph/ph_task.c ph/ph_timng.c ph/ph_vdefi.c \
        ph/ph_vset.c ph/phinit.c ph/phlog.c 

HL_SRC= acxf1c.c hlframe.c log10table.c brent.c \
        inithl.c nasalf1x.c sqrttable.c circuit.c 

 

KERNEL_SRC = kernel/services.c kernel/usa_init.c

NT_SRC= nt/playaud.c nt/mmalloc.c nt/opthread.c nt/spc.c nt/pipe.c nt/linux_audio.c

OSF_SRC= osf/playaud.c osf/loadable.c osf/dtmmio.c
 
VTM_SRC=vtm/vtm.c vtm/vtmiont.c vtm/sync.c vtm/playtone.c

ALL_SRC = $(API_SRC) $(CMD_SRC) $(LTS_SRC) $(PH_SRC) $(KERNEL_SRC) \
          $(NT_SRC) $(OSF_SRC) $(VTM_SRC) $(HL_SRC)

API_ALL_OBJ = $(OUTPUT_DIR_2)/decstd97.o $(OUTPUT_DIR_2)/crypt2.o

API_TTS_OBJ = $(OUTPUT_DIR_2)/ttsapi.o

API_MME_OBJ = $(OUTPUT_DIR_2)/ttsapi_mme.o $(OUTPUT_DIR_2)/init.o

API_DEMO_OBJ = $(OUTPUT_DIR_2)/ttsapi_demo.o $(OUTPUT_DIR_2)/init_demo.o

LTS_NORM_OBJS = 

LTS_DEMO_OBJS = 

#$(OUTPUT_DIR_2)/lsw_main_demo.o


CMD_OBJ = $(OUTPUT_DIR_2)/cmd_init.o $(OUTPUT_DIR_2)/cm_char.o \
          $(OUTPUT_DIR_2)/cm_cmd.o   $(OUTPUT_DIR_2)/cm_copt.o \
          $(OUTPUT_DIR_2)/cm_main.o  $(OUTPUT_DIR_2)/cm_pars.o \
          $(OUTPUT_DIR_2)/cm_phon.o  $(OUTPUT_DIR_2)/cm_text.o \
          $(OUTPUT_DIR_2)/cm_util.o  $(OUTPUT_DIR_2)/cmd_wav.o \
          $(OUTPUT_DIR_2)/par_ambi.o $(OUTPUT_DIR_2)/par_char.o \
          $(OUTPUT_DIR_2)/par_dict.o $(OUTPUT_DIR_2)/par_pars1.o \
          $(OUTPUT_DIR_2)/par_rule.o

LTS_OBJ = $(OUTPUT_DIR_2)/l_us_cha.o

PH_OBJ= $(OUTPUT_DIR_2)/p_uk_sr1.o $(OUTPUT_DIR_2)/p_uk_sy1.o \
        $(OUTPUT_DIR_2)/ph_drwt02.o $(OUTPUT_DIR_2)/ph_fr_inton2.o \
        $(OUTPUT_DIR_2)/ph_inton2.o $(OUTPUT_DIR_2)/ph_intonnew.o \
        $(OUTPUT_DIR_2)/p_ch_sr1.o $(OUTPUT_DIR_2)/p_ch_st1.o \
        $(OUTPUT_DIR_2)/p_ch_sy1.o $(OUTPUT_DIR_2)/p_ch_tim.o \
        $(OUTPUT_DIR_2)/p_fr_sr1.o $(OUTPUT_DIR_2)/p_fr_st1.o \
        $(OUTPUT_DIR_2)/p_fr_sy1.o $(OUTPUT_DIR_2)/p_fr_tim.o \
        $(OUTPUT_DIR_2)/p_gr_sr1.o $(OUTPUT_DIR_2)/p_gr_st1.o \
        $(OUTPUT_DIR_2)/p_gr_tim.o $(OUTPUT_DIR_2)/p_he_st1.o \
        $(OUTPUT_DIR_2)/p_he_tim.o $(OUTPUT_DIR_2)/p_it_st1.o \
        $(OUTPUT_DIR_2)/p_it_sy1.o $(OUTPUT_DIR_2)/p_it_tim.o \
        $(OUTPUT_DIR_2)/p_jp_sr1.o $(OUTPUT_DIR_2)/p_jp_st1.o \
        $(OUTPUT_DIR_2)/p_jp_sy1.o $(OUTPUT_DIR_2)/p_jp_tim.o \
        $(OUTPUT_DIR_2)/p_kr_sr1.o $(OUTPUT_DIR_2)/p_kr_st1.o \
        $(OUTPUT_DIR_2)/p_kr_sy1.o $(OUTPUT_DIR_2)/p_kr_tim.o \
        $(OUTPUT_DIR_2)/p_krnew_tim.o $(OUTPUT_DIR_2)/p_la_sr1.o \
        $(OUTPUT_DIR_2)/p_la_st1.o $(OUTPUT_DIR_2)/p_la_sy1.o \
        $(OUTPUT_DIR_2)/p_la_tim.o $(OUTPUT_DIR_2)/p_sp_sr1.o \
        $(OUTPUT_DIR_2)/p_sp_st1.o $(OUTPUT_DIR_2)/p_sp_sy1.o \
        $(OUTPUT_DIR_2)/p_sp_tim.o $(OUTPUT_DIR_2)/p_uk_st1.o \
        $(OUTPUT_DIR_2)/p_uk_tim.o $(OUTPUT_DIR_2)/p_us_sr1.o \
        $(OUTPUT_DIR_2)/p_us_st1.o $(OUTPUT_DIR_2)/p_us_sy1.o \
        $(OUTPUT_DIR_2)/p_us_tim.o $(OUTPUT_DIR_2)/ph_aloph.o \
        $(OUTPUT_DIR_2)/ph_claus.o $(OUTPUT_DIR_2)/ph_draw.o \
        $(OUTPUT_DIR_2)/ph_main.o $(OUTPUT_DIR_2)/ph_romi.o \
        $(OUTPUT_DIR_2)/ph_setar.o $(OUTPUT_DIR_2)/ph_sort.o \
        $(OUTPUT_DIR_2)/ph_sort2.o $(OUTPUT_DIR_2)/ph_sttr2.o \
        $(OUTPUT_DIR_2)/ph_syl.o $(OUTPUT_DIR_2)/ph_task.o \
        $(OUTPUT_DIR_2)/ph_timng.o $(OUTPUT_DIR_2)/ph_vdefi.o \
        $(OUTPUT_DIR_2)/ph_vset.o $(OUTPUT_DIR_2)/phinit.o \
        $(OUTPUT_DIR_2)/phlog.o $(OUTPUT_DIR_2)/phprint.o

KERNEL_OBJ = $(OUTPUT_DIR_2)/services.o $(OUTPUT_DIR_2)/usa_init.o

NT_OBJ=	$(OUTPUT_DIR_2)/opthread.o $(OUTPUT_DIR_2)/spc.o \
	$(OUTPUT_DIR_2)/pipe.o $(LINK_LINUX_AUDIO) $(LINK_PORT_AUDIO)

NT_MME_OBJ= $(OUTPUT_DIR_2)/$(PLAYAUD) $(OUTPUT_DIR_2)/mmalloc.o

OSF_OBJ= $(OUTPUT_DIR_2)/loadable.o $(OUTPUT_DIR_2)/dtmmio.o 

OSF_TTS_OBJ= $(OUTPUT_DIR_2)/playstub.o 

VTM_OBJ=$(OUTPUT_DIR_2)/vtm3.o $(OUTPUT_DIR_2)/vtmiont.o \
	 $(OUTPUT_DIR_2)/sync.o $(OUTPUT_DIR_2)/playtone.o

HL_OBJ= $(OUTPUT_DIR_2)/acxf1c.o $(OUTPUT_DIR_2)/hlframe.o \
        $(OUTPUT_DIR_2)/log10table.o \
        $(OUTPUT_DIR_2)/brent.o $(OUTPUT_DIR_2)/inithl.o \
        $(OUTPUT_DIR_2)/nasalf1x.o $(OUTPUT_DIR_2)/sqrttable.o \
        $(OUTPUT_DIR_2)/circuit.o 


#DECTALK_OBJS= see above in config section
#DECTALK_MME_OBJS= see above in config section

ALL_OBJS=$(API_ALL_OBJ) $(API_MME_OBJ) $(CMD_OBJ) 	      $(LTS_OBJ) $(PH_OBJ) $(HL_OBJ) $(KERNEL_OBJ) $(NT_OBJ)               $(NT_MME_OBJ) $(OSF_OBJ) $(OSF_TTS_OBJ) $(VTM_OBJ)               $(LTS_NORM_OBJS) $(LTS_DEMO_OBJS)

#$(API_ALL_OBJ) $(API_MME_OBJ) $(API_TTS_OBJ) $(CMD_OBJ) $(LTS_OBJ) $(PH_OBJ) \
#	 $(KERNEL_OBJ) $(NT_OBJ) $(NT_MME_OBJ) $(OSF_OBJ) $(OSF_TTS_OBJ)\
#	 $(VTM_OBJ)

LANG_LIBS=$(OUTPUT_DIR)/libtts_ch_stub.a $(OUTPUT_DIR)/libtts_hb.a      \
	  $(OUTPUT_DIR)/libtts_kr_stub.a $(OUTPUT_DIR)/libtts_uk_stub.a \
	  $(OUTPUT_DIR)/libtts_fr_stub.a $(OUTPUT_DIR)/libtts_it_stub.a \
	  $(OUTPUT_DIR)/libtts_la_stub.a $(OUTPUT_DIR)/libtts_us.a \
	  $(OUTPUT_DIR)/libtts_gr_stub.a $(OUTPUT_DIR)/libtts_jp_stub.a \
	  $(OUTPUT_DIR)/libtts_sp_stub.a


#LIBS= see above in config section
#MMELIBS= see above in config section

all:: $(ALL)

$(LIB_LN_S_A_DIR)/libtts_$(LANG_CODE).a:$(OUTPUT_DIR)/libtts_$(LANG_CODE).a
	-mkdir -p $(INC_LN_S_DIR)
	-$(LN_S) $(DT_LIB_DIR)/libtts_$(LANG_CODE).a $@
	-$(LN_S) `pwd`/api/ttsapi.h $(INC_LN_S_DIR)/ttsapi.h
	-$(LN_S) `pwd`/osf/dtmmedefs.h $(INC_LN_S_DIR)/dtmmedefs.h	

$(LIB_LN_S_A_DIR)/libtts_demo_$(LANG_CODE).a:$(OUTPUT_DIR)/libtts_demo_$(LANG_CODE).a
	-mkdir -p $(INC_LN_S_DIR)
	-$(LN_S) $(DT_LIB_DIR)/libtts_demo_$(LANG_CODE).a $@
	-$(LN_S) `pwd`/api/ttsapi.h $(INC_LN_S_DIR)/ttsapi.h
	-$(LN_S) `pwd`/osf/dtmmedefs.h $(INC_LN_S_DIR)/dtmmedefs.h	

$(LIB_LN_S_A_DIR)/libttsmme_$(LANG_CODE).a:$(OUTPUT_DIR)/libttsmme_$(LANG_CODE).a
	$(LN_S) $(DT_LIB_DIR)/libttsmme_$(LANG_CODE).a $@

$(SHLIB)/libtts_$(LANG_CODE).so:$(OUTPUT_DIR)/libtts_$(LANG_CODE).so
	$(LN_S) $(DT_LIB_DIR)/libtts_$(LANG_CODE).so $@

$(SHLIB)/libtts_$(LANG_CODE).dylib:$(OUTPUT_DIR)/libtts_$(LANG_CODE).dylib
	$(LN_S) $(DT_LIB_DIR)/libtts_$(LANG_CODE).dylib $@

$(SHLIB)/libttsmme_$(LANG_CODE).so:$(OUTPUT_DIR)/libttsmme_$(LANG_CODE).so
	$(LN_S) $(DT_LIB_DIR)/libttsmme_$(LANG_CODE).so $@

$(OUTPUT_DIR)/libtts.a: $(ALL_OBJS)
	$(RM) $@
	$(AR) $@ $(DECTALK_TTS_OBJS)
#	$(RANLIB) $@

$(OUTPUT_DIR)/libtts_demo.a: $(ALL_OBJS)
	$(RM) $@
	$(AR) $@ $(DECTALK_DEMO_OBJS)
#	$(RANLIB) $@

$(OUTPUT_DIR)/libttsmme.a: $(ALL_OBJS)
	$(RM) $@
	$(AR) $@ $(DECTALK_MME_OBJS)
#	$(RANLIB) $@

$(OUTPUT_DIR)/libtts.so: $(ALL_OBJS)
	$(SO_LOCATIONS)
	$(DAPI_LD_SHARED)
#	$(LD) -shared -update_registry \
#	$(OUTPUT_DIR)/so_locations -hidden \
#	-soname libtts_$(LANG_CODE).so  -o $@ $(DECTALK_TTS_OBJS) $(LIBS) 

$(OUTPUT_DIR)/libttsmme.so: $(ALL_OBJS)
	$(CP) /usr/shlib/so_locations $(OUTPUT_DIR)
	$(LD) -shared -update_registry \
	$(OUTPUT_DIR)/so_locations -hidden \
	-soname libttsmme_$(LANG_CODE).so \
	-o $@ $(DECTALK_MME_OBJS) $(LIBS) $(MMELIBS) 

#$(OUTPUT_DIR)/libtts_$(LANG_CODE).so: $(ALL_OBJS)
#	$(LD) -shared -soname \
#	libtts_$(LANG_CODE).so -o $@ $(DECTALK_TTS_OBJS) $(LIBS)
#
#$(OUTPUT_DIR)/libttsmme_$(LANG_CODE).so: $(ALL_OBJS)
#	$(LD) -shared -update_registry -hidden -soname \
#	libttsmme_$(LANG_CODE).so -o $@ $(DECTALK_MME_OBJS) $(LIBS) $(MMELIBS)

../shared/src/3rdParty/portaudio/lib/libportaudio.a:
	#cd ../shared/src/3rdParty/portaudio; ./configure
	cd ../shared/src/3rdParty/portaudio; make

$(OUTPUT_DIR)/libtts.dylib: $(ALL_OBJS)
	$(SO_LOCATIONS)
	$(DAPI_LD_SHARED)
#	$(LD) -shared -update_registry \
#	$(OUTPUT_DIR)/so_locations -hidden \
#	-soname libtts_$(LANG_CODE).so  -o $@ $(DECTALK_TTS_OBJS) $(LIBS) 

clean:
	$(RM) $(OUTPUT_DIR)/link/*.o
	$(RM) $(OUTPUT_DIR)/*.a
	$(RM) $(OUTPUT_DIR)/*.so
	$(RM) core *~
	$(RM) api/*~ cmd/*~ include/*~ kernel/*~ lts/*~ nt/*~
	$(RM) osf/*~ ph/*~ vtm/*~
