Browse Source

emscripten/Makefile support for both Linux, macOS

master
Alberto Pettarin 8 years ago
parent
commit
0241fb47d2
1 changed files with 23 additions and 14 deletions
  1. 23
    14
      emscripten/Makefile

+ 23
- 14
emscripten/Makefile View File

# the value specified here will be ignored. # the value specified here will be ignored.
EM_DEBUG ?= 0 EM_DEBUG ?= 0
ifneq ($(EM_DEBUG), 1) ifneq ($(EM_DEBUG), 1)
CXXFLAGS+=-O3
CXXFLAGS+=-O3
endif endif






# NOTE: sanity check # NOTE: sanity check
ifndef EMSCRIPTEN ifndef EMSCRIPTEN
$(error EMSCRIPTEN var not set. You must use emmake to run this Makefile!)
$(error EMSCRIPTEN var not set. You must use emmake to run this Makefile!)
endif endif


# NOTE: in the emscripten virtual FS, # NOTE: in the emscripten virtual FS,
EM_WEBIDL_BINDER=python $(EMSCRIPTEN)/tools/webidl_binder.py EM_WEBIDL_BINDER=python $(EMSCRIPTEN)/tools/webidl_binder.py
EM_FILE_PACKAGER=python $(EMSCRIPTEN)/tools/file_packager.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: libespeak-ng.so (Linux) or libespeak-ng.dylib (macOS) compiled to LLVM IR code
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


# NOTE: glue code files # NOTE: glue code files
EM_GLUE_PREFIX=glue EM_GLUE_PREFIX=glue
EM_PTHREAD_MAIN_JS=js/pthread-main.js EM_PTHREAD_MAIN_JS=js/pthread-main.js


# NOTE: intermediate objects # 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_PRE_JS=$(EM_PRE_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS)
EM_ALL_POST_JS=$(EM_GLUE_AUTOGEN_JS) $(EM_POST_JS) EM_ALL_POST_JS=$(EM_GLUE_AUTOGEN_JS) $(EM_POST_JS)




$(EM_WORKER_DATA): $(EM_WORKER_DATA):
$(EM_FILE_PACKAGER) $@ \ $(EM_FILE_PACKAGER) $@ \
--js-output=$(EM_ESPEAKNG_DATA_PACKAGE_JS) \
--preload $(EM_DATA_DIR)@$(EM_VIRTUAL_PATH_ESPEAKNG_DATA) \
$(patsubst %,--exclude %,$(EM_EXCLUDE_DATA))
--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_ESPEAKNG_DATA_PACKAGE_JS): $(EM_WORKER_DATA)




$(EM_GLUE_OBJ): $(EM_GLUE_CPP) $(EM_GLUE_OBJ): $(EM_GLUE_CPP)


$(EM_WORKER_JS): $(EM_GLUE_AUTOGEN_CPP) $(EM_OBJS) $(EM_ALL_PRE_JS) $(EM_ALL_POST_JS)
$(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) \ $(CXX) $(CXXFLAGS) \
$(EM_CXXFLAGS) \
$(EM_OBJS) \
$(patsubst %,--pre-js %,$(EM_ALL_PRE_JS)) \
$(patsubst %,--post-js %,$(EM_ALL_POST_JS)) \
-o $@
$(EM_CXXFLAGS) \
$(EM_GLUE_OBJ) \
$(EM_LIBESPEAKNG) \
$(patsubst %,--pre-js %,$(EM_ALL_PRE_JS)) \
$(patsubst %,--post-js %,$(EM_ALL_POST_JS)) \
-o $@


clean-intermediate: clean-intermediate:
rm -f *.o *.out *.pkl $(EM_GLUE_AUTOGEN_CPP) $(EM_GLUE_AUTOGEN_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS) rm -f *.o *.out *.pkl $(EM_GLUE_AUTOGEN_CPP) $(EM_GLUE_AUTOGEN_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS)

Loading…
Cancel
Save