--- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,13 +64,13 @@ set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/wasm/prefix/") - set(JPEG_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include") + set(JPEG_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include" CACHE PATH "Wasm JPEG headers" FORCE) set(JPEG_LIBRARY "${CMAKE_SOURCE_DIR}/wasm/prefix/lib/libjpeg.a") - set(PNG_PNG_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include/") + set(PNG_PNG_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include/" CACHE PATH "Wasm PNG headers" FORCE) set(PNG_LIBRARY "${CMAKE_SOURCE_DIR}/wasm/prefix/lib/libpng16.a") - set(ZLIB_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include") + set(ZLIB_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include" CACHE PATH "Wasm zlib headers" FORCE) set(ZLIB_LIBRARY "${CMAKE_SOURCE_DIR}/wasm/prefix/lib/libz.a") set(HARFBUZZ_INCLUDEDIR "${CMAKE_SOURCE_DIR}/wasm/prefix/include/") --- a/wasm/build.sh +++ b/wasm/build.sh @@ -5,7 +5,7 @@ BUILD_TYPE="${1:-'Release'}" -CORE_COUNT="$(nproc --all)" +CORE_COUNT="8" BASE_DIR="$(realpath "$(dirname "$0")")" SRC_DIR="$(dirname "$BASE_DIR")" WEB_DIR="$BASE_DIR/web" @@ -17,7 +17,7 @@ source "$EMSDK_DIR/emsdk_env.sh" embuilder build sdl2 sdl2_ttf sdl2_image sdl2_image_jpg sdl2_image_png -emcmake cmake "$SRC_DIR" -DNO_SHADERC=on -DCMAKE_BUILD_TYPE=$BUILD_TYPE +emcmake cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 "$SRC_DIR" -DNO_SHADERC=on -DCHECK_ASSETS=off -DCMAKE_BUILD_TYPE=$BUILD_TYPE make -j$CORE_COUNT echo "copying wasm files" --- a/wasm/build_deps.sh +++ b/wasm/build_deps.sh @@ -3,7 +3,7 @@ set -x set -e -CORE_COUNT="$(nproc --all)" +CORE_COUNT="8" BASE_DIR="$(realpath "$(dirname "$0")")" BUILD_DIR="$BASE_DIR/build" EMSDK_DIR="$BASE_DIR/emsdk" @@ -54,7 +54,7 @@ cd "$SRC_DIR" emconfigure ./Configure linux-x32 -no-asm -static -no-afalgeng -no-dso -DOPENSSL_SYS_NETWARE -DSIG_DFL=0 -DSIG_IGN=0 -DHAVE_FORK=0 -DOPENSSL_NO_AFALGENG=1 -DOPENSSL_NO_SPEED=1 -DOPENSSL_NO_DYNAMIC_ENGINE -DDLOPEN_FLAG=0 - sed -i 's|^CROSS_COMPILE.*$|CROSS_COMPILE=|g' Makefile + sed -i '' 's|^CROSS_COMPILE.*$|CROSS_COMPILE=|g' Makefile emmake make -j$CORE_COUNT build_generated libssl.a libcrypto.a cp -r include/openssl $PREFIX/include cp libcrypto.a libssl.a $PREFIX/lib @@ -65,7 +65,7 @@ clone_repo "https://github.com/madler/zlib" v1.3.1 "$SRC_DIR" cd "$SRC_DIR" - emconfigure ./configure --prefix="$PREFIX" --static + AR=emar ARFLAGS=rcs RANLIB=emranlib emconfigure ./configure --uname=Linux --prefix="$PREFIX" --static emmake make -j$CORE_COUNT make install } @@ -92,7 +92,7 @@ mkdir -p build cd build - emcmake cmake -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" -DWITH_SIMD=0 -DENABLE_SHARED=0 .. + emcmake cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" -DWITH_SIMD=0 -DENABLE_SHARED=0 .. emmake make -j$CORE_COUNT make install } @@ -116,11 +116,11 @@ cd build if [ ! "$with_harfbuzz" ]; then - emcmake cmake .. -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" \ + emcmake cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" \ -DZLIB_LIBRARY="$LIB/libz.a" -DZLIB_INCLUDE_DIR="$INCLUDE" \ -DPNG_LIBRARY="$LIB/libpng.a" -DPNG_PNG_INCLUDE_DIR="$INCLUDE" else - emcmake cmake .. -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" \ + emcmake cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" \ -DZLIB_LIBRARY="$LIB/libz.a" -DZLIB_INCLUDE_DIR="$INCLUDE" \ -DPNG_LIBRARY="$LIB/libpng.a" -DPNG_PNG_INCLUDE_DIR="$INCLUDE" \ -DHarfBuzz_LIBRARY="$LIB/libharfbuzz.a" -DHarfBuzz_INCLUDE_DIR="$INCLUDE/harfbuzz/" \ --- a/src/main.cpp +++ b/src/main.cpp @@ -2042,6 +2042,10 @@ //============================================================================= void askForInternetPermission() { +#ifdef __EMSCRIPTEN__ + UserConfigParams::m_internet_status = Online::RequestManager::IPERM_NOT_ALLOWED; + return; +#endif if (UserConfigParams::m_internet_status != Online::RequestManager::IPERM_NOT_ASKED) return; --- a/src/states_screens/main_menu_screen.cpp +++ b/src/states_screens/main_menu_screen.cpp @@ -117,6 +117,13 @@ void MainMenuScreen::beforeAddingWidget() { +#ifdef __EMSCRIPTEN__ + // Keep the widgets alive: native menu initialization still updates them. + getWidget("online")->setVisible(false); + getWidget("online")->setActive(false); + getWidget("addons")->setVisible(false); + getWidget("addons")->setActive(false); +#endif #ifdef IOS_STK // iOS app doesn't like quit button in UI Widget* w = getWidget("quit"); --- a/src/states_screens/options/options_screen_general.cpp +++ b/src/states_screens/options/options_screen_general.cpp @@ -57,6 +57,10 @@ CheckBoxWidget* internet_enabled = getWidget("enable-internet"); assert( internet_enabled != NULL ); +#ifdef __EMSCRIPTEN__ + UserConfigParams::m_internet_status = RequestManager::IPERM_NOT_ALLOWED; + internet_enabled->setActive(false); +#endif internet_enabled->setState( UserConfigParams::m_internet_status ==RequestManager::IPERM_ALLOWED ); --- a/src/states_screens/options/user_screen.cpp +++ b/src/states_screens/options/user_screen.cpp @@ -49,6 +49,9 @@ void BaseUserScreen::loadedFromFile() { m_online_cb = getWidget("online"); +#ifdef __EMSCRIPTEN__ + m_online_cb->setActive(false); +#endif assert(m_online_cb); m_username_tb = getWidget("username"); assert(m_username_tb); --- a/src/states_screens/online/register_screen.cpp +++ b/src/states_screens/online/register_screen.cpp @@ -67,6 +67,9 @@ // ----------------------------------------------------------------------------- void RegisterScreen::init() { +#ifdef __EMSCRIPTEN__ + UserConfigParams::m_internet_status = Online::RequestManager::IPERM_NOT_ALLOWED; +#endif if (m_existing_player) getWidget("create_user")->setText(_("Rename")); else @@ -97,7 +100,11 @@ } // Hide the tabs in case of a rename + #ifdef __EMSCRIPTEN__ + ribbon->setVisible(false); +#else ribbon->setVisible(m_existing_player == NULL); +#endif Screen::init(); // If there is no player (i.e. first start of STK), try to pick