blob: bb3cdfe519a99a83c4fad2a63976049187cea4a9 [file] [log] [blame]
# 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++
PKG_CONFIG ?= pkg-config
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