From: <man...@us...> - 2014-02-26 20:29:16
|
Revision: 3779 http://sourceforge.net/p/modplug/code/3779 Author: manxorist Date: 2014-02-26 20:29:10 +0000 (Wed, 26 Feb 2014) Log Message: ----------- [New] build: Add experimental support for building libopenmpt with emscripten. Modified Paths: -------------- trunk/OpenMPT/Makefile trunk/OpenMPT/libopenmpt/libopenmpt_config.h Added Paths: ----------- trunk/OpenMPT/build/make/Makefile.config.emscripten trunk/OpenMPT/build/make/test-pre.js Modified: trunk/OpenMPT/Makefile =================================================================== --- trunk/OpenMPT/Makefile 2014-02-26 19:07:20 UTC (rev 3778) +++ trunk/OpenMPT/Makefile 2014-02-26 20:29:10 UTC (rev 3779) @@ -216,7 +216,7 @@ CXXFLAGS += -fvisibility=hidden CFLAGS += -fvisibility=hidden LDFLAGS += -LDLIBS += -lm +LDLIBS += ARFLAGS += ifeq ($(DEBUG),1) @@ -537,11 +537,11 @@ .PHONY: test test: bin/libopenmpt_test$(EXESUFFIX) - bin/libopenmpt_test$(EXESUFFIX) + $(RUNPREFIX) bin/libopenmpt_test$(EXESUFFIX) bin/libopenmpt_test$(EXESUFFIX): $(LIBOPENMPTTEST_OBJECTS) $(INFO) [LD-TEST] $@ - $(SILENT)$(LINK.cc) $(LDFLAGS_RPATH) $(LIBOPENMPTTEST_OBJECTS) $(LOADLIBES) $(LDLIBS) -o $@ + $(SILENT)$(LINK.cc) $(LDFLAGS_RPATH) $(TEST_LDFLAGS) $(LIBOPENMPTTEST_OBJECTS) $(LOADLIBES) $(LDLIBS) -o $@ bin/libopenmpt.pc: $(INFO) [GEN] $@ Added: trunk/OpenMPT/build/make/Makefile.config.emscripten =================================================================== --- trunk/OpenMPT/build/make/Makefile.config.emscripten (rev 0) +++ trunk/OpenMPT/build/make/Makefile.config.emscripten 2014-02-26 20:29:10 UTC (rev 3779) @@ -0,0 +1,34 @@ + +CC = emcc +CXX = em++ +LD = em++ +AR = emar + +CPPFLAGS += -DMPT_EMSCRIPTEN -DMPT_CHARSET_CPP -DMPT_CHARSET_ASSUME_UTF8_LOCALE +CXXFLAGS += -std=c++0x -fPIC +CFLAGS += -std=c99 -fPIC +LDFLAGS += -O2 -s DISABLE_EXCEPTION_CATCHING=0 +LDLIBS += +ARFLAGS := rcs + +CXXFLAGS_WARNINGS += -Wmissing-prototypes +CFLAGS_WARNINGS += -Wmissing-prototypes + +EXESUFFIX=.js +SOSUFFIX=.js +RUNPREFIX=nodejs +TEST_LDFLAGS= --pre-js build/make/test-pre.js + +DYNLINK=0 +SHARED_LIB=1 +STATIC_LIB=0 +EXAMPLES=1 +OPENMPT123=0 +SHARED_SONAME=0 + +NO_ZLIB=1 +NO_PORTAUDIO=1 +NO_SDL=1 +NO_FLAC=1 +NO_WAVPACK=1 +NO_SNDFILE=1 Added: trunk/OpenMPT/build/make/test-pre.js =================================================================== --- trunk/OpenMPT/build/make/test-pre.js (rev 0) +++ trunk/OpenMPT/build/make/test-pre.js 2014-02-26 20:29:10 UTC (rev 3779) @@ -0,0 +1,7 @@ + +var Module = { + 'preInit': function(text) { + FS.mkdir('/test'); + FS.mount(NODEFS, {'root': './test/'}, '/test'); + } +}; Modified: trunk/OpenMPT/libopenmpt/libopenmpt_config.h =================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_config.h 2014-02-26 19:07:20 UTC (rev 3778) +++ trunk/OpenMPT/libopenmpt/libopenmpt_config.h 2014-02-26 20:29:10 UTC (rev 3779) @@ -38,6 +38,7 @@ #elif defined(__GNUC__) || defined(__clang__) +#if !defined(MPT_EMSCRIPTEN) #if defined(_WIN32) #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) @@ -47,6 +48,10 @@ #endif #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden"))) +#else +#define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) __attribute__((used)) +#define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden"))) +#endif #else @@ -66,7 +71,9 @@ #endif #ifdef __cplusplus + #define LIBOPENMPT_CXX_API LIBOPENMPT_API + #if defined(LIBOPENMPT_USE_DLL) #if defined(_MSC_VER) && !defined(_DLL) #error "C++ interface is disabled if libopenmpt is built as a DLL and the runtime is statically linked. This is not supported by microsoft and cannot possibly work. Ever." @@ -74,8 +81,15 @@ #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL #endif #endif + +#if defined(MPT_EMSCRIPTEN) +/* Only the C API is supported for emscripten. Disable the C++ API. */ +#undef LIBOPENMPT_CXX_API +#define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL #endif +#endif + /*! @} */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |