# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

CXX ?= g++

LDFLAGS = -lpthread -lm -lasound -lpico -lresample -lchromeos -lrt -lbase

CCFLAGS = $(CFLAGS) \
	-Wall -Werror \
	-I. \
	-I/build/x86_generic/usr/include \
	-L/build/x86_generic/usr/lib

INCLUDE_DIRS=-I -I.. $(shell pkg-config --cflags gobject-2.0 dbus-1 dbus-glib-1)
LIB_DIRS=-L $(shell pkg-config --libs gobject-2.0 dbus-1 dbus-glib-1)

DBUS_SOURCE=speech_synthesizer.xml
DBUS_SERVER=bindings/server.h
DBUS_CLIENT=bindings/client.h
BINDINGS_DIR=bindings

CC_SRCS = linux/audio_output_alsa.cc linux/threading.cc \
pico/pico_tts_engine.cc pico/load_pico_voices_static.cc resampler.cc \
tts_engine.cc earcon_manager.cc tts_service.cc speech_synthesizer_main.cc \
speech_synthesizer_service.cc interface.cc
HEADERS = audio_output.h pico/pico_tts_engine.h resampler.h ringbuffer.h \
threading.h tts_engine.h tts_receiver.h earcon_manager.h tts_service.h log.h \
speech_synthesizer_service.h interface.h

all: dirs speech_synthesizer speech_synthesizer_client libtts.so
	@echo "Done building."

clean:
	rm -rf libttspico.so tts_chromeos tts_chromeos.o tts_loader.o objs/

dirs:
	test -d objs/pico || mkdir -p objs/pico
	test -d objs/linux || mkdir -p objs/linux

CC_OBJS = $(CC_SRCS:%.cc=objs/%.o)
OBJS = $(CC_OBJS)

$(CC_OBJS): objs/%.o: %.cc $(HEADERS) $(DBUS_SERVER)
	$(CXX) -c $(CCFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) -fPIC -Iobjs/ $< -o $@

speech_synthesizer: $(OBJS)
	$(CXX) \
	$(CCFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) \
	-o $@ $^ \
	$(LDFLAGS)

$(BINDINGS_DIR):
	mkdir -p $(BINDINGS_DIR)

$(DBUS_SERVER): $(DBUS_SOURCE) $(BINDINGS_DIR)
	dbus-binding-tool --mode=glib-server \
	 --prefix=`basename $(DBUS_SOURCE) .xml` $(DBUS_SOURCE) > $(DBUS_SERVER)

$(DBUS_CLIENT): $(DBUS_SOURCE) $(BINDINGS_DIR)
	dbus-binding-tool --mode=glib-client \
	 --prefix=`basename $(DBUS_SOURCE) .xml` $(DBUS_SOURCE) > $(DBUS_CLIENT)

# =============================================================================
# Build rules for the DBUS client shared library
# =============================================================================

CLIENT_SRCS = tts_extern.cc marshal.cc
CLIENT_HEADERS = tts_extern.h marshal.h
CLIENT_OBJS = $(CLIENT_SRCS:%.cc=%.o)

$(CLIENT_OBJS): %.o: %.cc $(CLIENT_HEADERS)
	$(CXX) $(CCFLAGS) -fPIC $(INCLUDE_DIRS) $(LIB_DIRS) \
	-c $< -o $@

libtts.so: $(CLIENT_OBJS)
	$(CXX) \
	$(CCFLAGS) -shared -fPIC \
	-o $@ $^ \
	$(LDFLAGS)

# =============================================================================
# Remove the following build rules before checking in to the Chromium OS repo
# =============================================================================

speech_synthesizer_client.o: $(DBUS_CLIENT)
	$(CXX) $(CCFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) \
	-c speech_synthesizer_client.cc

speech_synthesizer_client: speech_synthesizer_client.o marshal.o
	$(CXX) \
	$(CCFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) \
	-o speech_synthesizer_client \
	speech_synthesizer_client.o marshal.o \
	$(LDFLAGS)

tts_loader.o:
	$(CXX) $(CCFLAGS) -c tts_loader.cc

tts_chromeos.o:
	$(CXX) $(CCFLAGS) -c tts_chromeos.cc

tts_chromeos: tts_loader.o tts_chromeos.o
	$(CXX) \
	$(CCFLAGS) $(INCLUDE_DIRS) $(LIB_DIRS) \
	-o tts_chromeos \
	tts_loader.o tts_chromeos.o \
	$(LDFLAGS) -ldl


