From 4a9dbfbe65228ee33edd0fffc988ea883cff7048 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Mon, 3 May 2021 01:53:40 +0300 Subject: [PATCH] Emscripten: build with timidity --- CMakeLists.txt | 2 +- os/emscripten/emscripten-build.sh | 39 ++++++++++++++++++++++++++----- os/emscripten/shell.html | 2 ++ 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3face43005..43d70cde24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -332,7 +332,7 @@ if(EMSCRIPTEN) target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/lang@/lang") target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_SOURCE_DIR}/bin/ai@/ai") target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_SOURCE_DIR}/bin/game@/game") - target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/TimGM6mb.sf2@/usr/share/sounds/sf2/TimGM6mb.sf2") + target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/timidity@/timidity") # We use IDBFS for persistent storage. target_link_libraries(WASM::WASM INTERFACE "-lidbfs.js") diff --git a/os/emscripten/emscripten-build.sh b/os/emscripten/emscripten-build.sh index 3dffa859f8..22ced9c1ee 100755 --- a/os/emscripten/emscripten-build.sh +++ b/os/emscripten/emscripten-build.sh @@ -17,6 +17,27 @@ source "$PATH_EMSDK/emsdk_env.sh" mkdir -p build-wasm-$BUILD_TYPE cd build-wasm-$BUILD_TYPE +embuilder build liblzma ogg vorbis zlib sdl2 +embuilder build --lto liblzma ogg vorbis zlib sdl2 + +[ -e libtimidity-0.2.7/build-wasm/lib/libtimidity.a ] || { + wget https://sourceforge.net/projects/libtimidity/files/libtimidity/0.2.7/libtimidity-0.2.7.tar.gz || exit 1 + tar xvf libtimidity-0.2.7.tar.gz || exit 1 + cd libtimidity-0.2.7 || exit 1 + autoreconf -fi + OPT="-O3 -flto=thin" + [ "$BUILD_TYPE" = "Debug" ] && OPT="-g" + emconfigure ./configure --prefix=`pwd`/build-wasm \ + --disable-shared --enable-static \ + --disable-ao --disable-aotest \ + CFLAGS="$OPT" \ + LDFLAGS="$OPT" \ + --with-timidity-cfg="/timidity/timidity.cfg" || exit 1 + make -j8 || exit 1 + make install || exit 1 + cd .. +} + [ -e build-host ] || { rm -rf build-host mkdir -p build-host @@ -26,9 +47,6 @@ cd build-wasm-$BUILD_TYPE cd .. } -embuilder build liblzma -embuilder build --lto liblzma - mkdir -p baseset [ -e baseset/opengfx-0.6.1.tar ] || { @@ -52,11 +70,20 @@ mkdir -p baseset mv openmsx-0.4.0.tar baseset/ || exit 1 } -[ -e TimGM6mb.sf2 ] || { - wget 'https://sourceforge.net/p/mscore/code/HEAD/tree/trunk/mscore/share/sound/TimGM6mb.sf2?format=raw' -O TimGM6mb.sf2 || exit 1 +#[ -e TimGM6mb.sf2 ] || { +# wget 'https://sourceforge.net/p/mscore/code/HEAD/tree/trunk/mscore/share/sound/TimGM6mb.sf2?format=raw' -O TimGM6mb.sf2 || exit 1 +#} + +[ -e timidity/timidity.cfg ] || { + wget https://sourceforge.net/projects/libsdl-android/files/timidity.zip || exit 1 + unzip timidity.zip } -[ -e Makefile ] || emcmake cmake .. -DHOST_BINARY_DIR=$(pwd)/build-host -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPTION_USE_ASSERTS=OFF || exit 1 +[ -e Makefile ] || emcmake cmake .. -DHOST_BINARY_DIR=$(pwd)/build-host -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPTION_USE_ASSERTS=OFF \ + -DTimidity_LIBRARY=`pwd`/libtimidity-0.2.7/build-wasm/lib/libtimidity.a \ + -DTimidity_INCLUDE_DIR=`pwd`/libtimidity-0.2.7/build-wasm/include \ + || exit 1 + rm -f openttd.html emmake make -j8 VERBOSE=1 || exit 1 diff --git a/os/emscripten/shell.html b/os/emscripten/shell.html index 6bc3260d67..33bb850964 100644 --- a/os/emscripten/shell.html +++ b/os/emscripten/shell.html @@ -176,6 +176,8 @@ document.getElementById("title").innerHTML = "Thank you for playing!"; document.getElementById("message").innerHTML = "We hope you enjoyed OpenTTD!

Reload your browser to restart the game."; + + window.close('','_parent',''); }, onAbort: function() {