| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | 
							- #
 - # Copyright (C) 2014-2017 Eitan Isaacson
 - # Copyright (C) 2016-2017 Alberto Pettarin
 - #
 - # This program is free software; you can redistribute it and/or modify
 - # it under the terms of the GNU General Public License as published by
 - # the Free Software Foundation; either version 3 of the License, or
 - # (at your option) any later version.
 - #
 - # This program is distributed in the hope that it will be useful,
 - # but WITHOUT ANY WARRANTY; without even the implied warranty of
 - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - # GNU General Public License for more details.
 - #
 - # You should have received a copy of the GNU General Public License
 - # along with this program; if not, see: <http://www.gnu.org/licenses/>.
 - #
 - 
 - # NOTE: variables specific to espeak-ng + emscripten starts with "EM_"
 - 
 - # NOTE: set to 1 to debug or to speed emscripten up while developing.
 - #       If the EM_DEBUG environment variable is set,
 - #       the value specified here will be ignored.
 - EM_DEBUG ?= 0
 - ifneq ($(EM_DEBUG), 1)
 -     CXXFLAGS+=-O3
 - endif
 - 
 - 
 - 
 - ###############################################################################
 - # WARNING: modify code below this line at your own risk!
 - ###############################################################################
 - 
 - # NOTE: sanity check
 - ifndef EMSCRIPTEN
 -     $(error EMSCRIPTEN var not set. You must use emmake to run this Makefile!)
 - endif
 - 
 - # NOTE: in the emscripten virtual FS,
 - #       this is the location of the eSpeak-ng data files,
 - #       if we configure with "./configure --prefix=/usr"
 - EM_VIRTUAL_PATH_ESPEAKNG_DATA=/usr/share/espeak-ng-data
 - 
 - # NOTE: emmake will replace EMSCRIPTEN with the actual root directory
 - #       of the emscripten tools inside the emscripten SDK directory
 - EM_WEBIDL_BINDER=python $(EMSCRIPTEN)/tools/webidl_binder.py
 - EM_FILE_PACKAGER=python $(EMSCRIPTEN)/tools/file_packager.py
 - 
 - # NOTE: libespeak-ng.so compiled to LLVM IR code
 - EM_LIBESPEAKNG_SO=../src/.libs/libespeak-ng.so
 - 
 - # NOTE: glue code files
 - EM_GLUE_PREFIX=glue
 - EM_GLUE_IDL=espeakng_glue.idl
 - EM_GLUE_OBJ=espeakng_glue.o
 - EM_GLUE_CPP=espeakng_glue.cpp
 - EM_GLUE_AUTOGEN_CPP=glue.cpp
 - EM_GLUE_AUTOGEN_JS=glue.js
 - 
 - # NOTE: preload espeak-ng-data directory...
 - EM_DATA_DIR=../espeak-ng-data
 - # NOTE: ... but exclude these subdirectories/files
 - EM_EXCLUDE_DATA=../espeak-ng-data/mbrola_ph ../espeak-ng-data/phondata-manifest
 - 
 - # NOTE: pre/post JS files
 - EM_PRE_JS=pre.js
 - EM_POST_JS=post.js
 - 
 - # NOTE: output files
 - EM_ESPEAKNG_DATA_PACKAGE_JS=espeakng_data_package.js
 - EM_WORKER_DATA=js/espeakng.worker.data
 - EM_WORKER_JS=js/espeakng.worker.js
 - EM_PTHREAD_MAIN_JS=js/pthread-main.js
 - 
 - # NOTE: intermediate objects
 - EM_OBJS=$(EM_GLUE_OBJ) $(EM_LIBESPEAKNG_SO)
 - EM_ALL_PRE_JS=$(EM_PRE_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS)
 - EM_ALL_POST_JS=$(EM_GLUE_AUTOGEN_JS) $(EM_POST_JS)
 - 
 - # NOTE: compile without async, i.e. with synchronous output
 - #
 - # ./emconfigure ./configure --prefix=/usr --without-async
 - # ./emmake make
 - CXXFLAGS+=-DESPEAK_DATA_PATH=\"$(EM_VIRTUAL_PATH_ESPEAKNG_DATA)\"
 - CXXFLAGS+=-I ./ -I ../ -I ../src/include/espeak-ng
 - 
 - # NOTE: so far, pthread is not supported in any browser
 - #       except Firefox Nightly.
 - #       If we want to enable pthread in the future,
 - #       we must append "-s USE_PTHREADS=1" to CXXFLAGS
 - #       and pass that to emconfigure and emmake.
 - #       If enabled, js/pthread-main.js will be created as well.
 - #
 - #CXXFLAGS+=-s USE_PTHREADS=1
 - 
 - # NOTE: extra flags for emscripten
 - EM_CXXFLAGS=-s RESERVED_FUNCTION_POINTERS=2 --memory-init-file 0
 - 
 - 
 - 
 - ###############################################################################
 - # NOTE: actual targets
 - ###############################################################################
 - 
 - all: $(EM_WORKER_JS)
 - 
 - $(EM_WORKER_DATA):
 - 	$(EM_FILE_PACKAGER) $@ \
 -         --js-output=$(EM_ESPEAKNG_DATA_PACKAGE_JS) \
 -         --preload $(EM_DATA_DIR)@$(EM_VIRTUAL_PATH_ESPEAKNG_DATA) \
 -         $(patsubst %,--exclude %,$(EM_EXCLUDE_DATA))
 - 
 - $(EM_ESPEAKNG_DATA_PACKAGE_JS): $(EM_WORKER_DATA)
 - 
 - $(EM_GLUE_AUTOGEN_CPP): $(EM_GLUE_IDL)
 - 	$(EM_WEBIDL_BINDER) $(EM_GLUE_IDL) $(EM_GLUE_PREFIX)
 - 
 - $(EM_GLUE_AUTOGEN_JS): $(EM_GLUE_AUTOGEN_CPP)
 - 
 - $(EM_GLUE_OBJ): $(EM_GLUE_CPP)
 - 
 - $(EM_WORKER_JS): $(EM_GLUE_AUTOGEN_CPP) $(EM_OBJS) $(EM_ALL_PRE_JS) $(EM_ALL_POST_JS)
 - 	$(CXX) $(CXXFLAGS) \
 -         $(EM_CXXFLAGS) \
 -         $(EM_OBJS) \
 -         $(patsubst %,--pre-js %,$(EM_ALL_PRE_JS)) \
 -         $(patsubst %,--post-js %,$(EM_ALL_POST_JS)) \
 -         -o $@
 - 
 - clean-intermediate:
 - 	rm -f *.o *.out *.pkl $(EM_GLUE_AUTOGEN_CPP) $(EM_GLUE_AUTOGEN_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS)
 - 
 - clean: clean-intermediate
 - 	rm -f $(EM_WORKER_DATA) $(EM_WORKER_JS) $(EM_PTHREAD_MAIN_JS)
 - 
 - help:
 - 	echo "Available targets: all clean clean-intermediate help"
 
 
  |