# full path name for sound data for the speak/espeak program
DATADIR=/usr/local/share/espeak-data

#full path name for the portaudio Library
PORTAUDIOLIB = /usr/local/opt/portaudio/lib

# underlying directory for speak program
PREFIX=/usr/local
BINDIR=$(PREFIX)/bin

RELEASE = 1.48
BIN_NAME = speak

# 'runtime' uses pulseaudio if it is running, else uses portaudio
# normally portaudio is used on Mac OS X
#AUDIO = runtime
AUDIO = portaudio
#AUDIO = portaudio0
#AUDIO = portaudio2
#AUDIO = pulseaudio
#AUDIO = sada

ifeq ($(AUDIO),runtime)
WAVE=wave.cpp wave_pulse.cpp
LIB_AUDIO=-lpulse -lpulse-simple -lportaudio
USE_AUDIO=-DUSE_PULSEAUDIO -DUSE_PORTAUDIO
else
ifeq ($(AUDIO),pulseaudio)
WAVE=wave_pulse.cpp
LIB_AUDIO=-lpulse
USE_AUDIO=-DUSE_PULSEAUDIO
else
ifeq ($(AUDIO),portaudio)
WAVE=wave.cpp
LIB_AUDIO=-lportaudio
USE_AUDIO=-DUSE_PORTAUDIO
else
ifeq ($(AUDIO),portaudio0)
WAVE=wave.cpp
LIB_AUDIO=/usr/lib/libportaudio.so.0
USE_AUDIO=-DUSE_PORTAUDIO
else
ifeq ($(AUDIO),portaudio2)
WAVE=wave.cpp
LIB_AUDIO=/usr/lib/libportaudio.so.2
USE_AUDIO=-DUSE_PORTAUDIO
else
ifeq ($(AUDIO),sada)
WAVE=wave_sada.cpp
USE_AUDIO=-DUSE_SADA
else
WAVE=wave.cpp
endif
endif
endif
endif
endif
endif

# listing of C/C++ files needed for the speak program
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \
	readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \
	synthdata.cpp synthesize.cpp translate.cpp mbrowrap.cpp \
	tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp klatt.cpp sonic.cpp \
        sem_timedwait.cpp

# identify .o files from each of the .cpp files
SRCS1=$(speak_SOURCES)
OBJS1=$(patsubst %.cpp,%.o,$(SRCS1))

# identify relevant compiling and loading files in the construction of spea;
CXXFLAGS=-std=c++98 $(USE_AUDIO) -O2 -Wno-deprecated-declarations -Wno-constant-logical-operand -Wno-logical-not-parentheses 
LIBS1=-lstdc++ $(LIB_AUDIO) -lpthread $(EXTRA_LIBS) -L $(PORTAUDIOLIB) -l portaudio

# details for the installation of the speak program
INSTALL = install
MKDIR = mkdir -p

# rules indicating how the speak program should be compiled and installed
all: $(BIN_NAME)
	echo $(LIB_AUDIO)
	echo $(USE_AUDIO)

$(BIN_NAME): $(OBJS1)
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1)

$(BIN_NAME): $(OBJS1)
	$(CXX) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1)

clean:
	rm -f *.o *.a *~ speak

install: all
	# Create directories
	$(MKDIR) $(BINDIR)
	$(MKDIR) $(DATADIR)
        
	# Install speak executable
	cp $(BIN_NAME) $(BINDIR)/$(BIN_NAME)
	chmod 755 $(BINDIR)/$(BIN_NAME)

	# Install data files
	cp -prf espeak-data/* $(DATADIR)
	chmod -R 755 $(DATADIR)
