123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- EM_DEBUG ?= 0
- ifneq ($(EM_DEBUG), 1)
- CXXFLAGS+=-O3
- endif
-
-
-
-
-
-
-
-
- ifndef EMSCRIPTEN
- $(error EMSCRIPTEN var not set. You must use emmake to run this Makefile!)
- endif
-
-
-
-
- EM_VIRTUAL_PATH_ESPEAKNG_DATA=/usr/share/espeak-ng-data
-
-
-
- EM_WEBIDL_BINDER=python $(EMSCRIPTEN)/tools/webidl_binder.py
- EM_FILE_PACKAGER=python $(EMSCRIPTEN)/tools/file_packager.py
-
-
- EM_LIBESPEAKNG_SO=$(wildcard ../src/.libs/libespeak-ng.so)
- EM_LIBESPEAKNG_DYLIB=$(wildcard ../src/.libs/libespeak-ng.dylib)
- ifneq ($(EM_LIBESPEAKNG_DYLIB),)
- EM_LIBESPEAKNG=$(EM_LIBESPEAKNG_DYLIB)
- else ifneq ($(EM_LIBESPEAKNG_SO),)
- EM_LIBESPEAKNG=$(EM_LIBESPEAKNG_SO)
- endif
-
-
- 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
-
-
- EM_DATA_DIR=../espeak-ng-data
-
- EM_EXCLUDE_DATA=../espeak-ng-data/mbrola_ph ../espeak-ng-data/phondata-manifest
-
-
- EM_PRE_JS=pre.js
- EM_POST_JS=post.js
-
-
- 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
-
-
- EM_ALL_PRE_JS=$(EM_PRE_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS)
- EM_ALL_POST_JS=$(EM_GLUE_AUTOGEN_JS) $(EM_POST_JS)
-
-
-
-
-
- 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_GLUE_OBJ) $(EM_ALL_PRE_JS) $(EM_ALL_POST_JS)
- ifeq ($(EM_LIBESPEAKNG),)
- $(error Unable to find ../src/.libs/libespeak-ng .so or .dylib. Aborting!)
- endif
- $(CXX) $(CXXFLAGS) \
- $(EM_CXXFLAGS) \
- $(EM_GLUE_OBJ) \
- $(EM_LIBESPEAKNG) \
- $(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"
|