diff options
| -rw-r--r-- | cmake/QtAutoDetect.cmake | 6 | ||||
| -rw-r--r-- | cmake/QtFlagHandlingHelpers.cmake | 6 | ||||
| -rw-r--r-- | cmake/QtTargetHelpers.cmake | 2 | ||||
| -rw-r--r-- | cmake/QtWasmHelpers.cmake | 20 | ||||
| -rw-r--r-- | configure.cmake | 2 | ||||
| -rw-r--r-- | src/corelib/Qt6CoreConfigExtras.cmake.in | 1 | ||||
| -rw-r--r-- | src/gui/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmcompositor.h | 1 | ||||
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmtheme.cpp | 1 |
9 files changed, 35 insertions, 6 deletions
diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake index 60aa532d23..6c46f3b470 100644 --- a/cmake/QtAutoDetect.cmake +++ b/cmake/QtAutoDetect.cmake @@ -35,6 +35,10 @@ function(qt_auto_detect_wasm) __qt_internal_query_emsdk_version("${EMROOT_PATH}" TRUE CMAKE_EMSDK_REGEX_VERSION) set(EMCC_VERSION "${CMAKE_EMSDK_REGEX_VERSION}" CACHE STRING INTERNAL FORCE) + if(NOT DEFINED BUILD_SHARED_LIBS) + qt_internal_ensure_static_qt_config() + endif() + # Find toolchain file if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) __qt_internal_get_emscripten_cmake_toolchain_file_path_from_emsdk_env( @@ -49,8 +53,6 @@ function(qt_auto_detect_wasm) __qt_internal_show_error_no_emscripten_toolchain_file_found_when_building_qt() endif() - qt_internal_ensure_static_qt_config() - __qt_internal_get_emcc_recommended_version(recommended_version) set(QT_EMCC_RECOMMENDED_VERSION "${recommended_version}" CACHE STRING INTERNAL FORCE) diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake index 08bc9177d2..25a0e0e290 100644 --- a/cmake/QtFlagHandlingHelpers.cmake +++ b/cmake/QtFlagHandlingHelpers.cmake @@ -9,6 +9,10 @@ # PRIVATE_CONTENT_FILE specifies the pre-cooked content of Qt_<version>_PRIVATE_API section. # Requires the content file available at build time. function(qt_internal_add_linker_version_script target) + if(WASM) + return() + endif() + qt_parse_all_arguments(arg "qt_internal_add_linker_version_script" "" "PRIVATE_CONTENT_FILE" @@ -94,7 +98,7 @@ function(qt_internal_add_linker_version_script target) endfunction() function(qt_internal_add_link_flags_no_undefined target) - if (NOT QT_BUILD_SHARED_LIBS) + if (NOT QT_BUILD_SHARED_LIBS OR WASM) return() endif() if ((GCC OR CLANG) AND NOT MSVC) diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index fefb614a72..7e1f7cdc2d 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -530,6 +530,8 @@ endif()\n\n") if(target_type STREQUAL "SHARED_LIBRARY") if(WIN32) set(write_implib TRUE) + elseif(WASM) + # Keep write_soname at FALSE else() set(write_soname TRUE) endif() diff --git a/cmake/QtWasmHelpers.cmake b/cmake/QtWasmHelpers.cmake index 7a0830abc0..198ebbff23 100644 --- a/cmake/QtWasmHelpers.cmake +++ b/cmake/QtWasmHelpers.cmake @@ -6,7 +6,6 @@ function (qt_internal_setup_wasm_target_properties wasmTarget) target_link_options("${wasmTarget}" INTERFACE - "SHELL:-s ERROR_ON_UNDEFINED_SYMBOLS=1" "SHELL:-s MAX_WEBGL_VERSION=2" "SHELL:-s FETCH=1" "SHELL:-s WASM_BIGINT=1") @@ -82,6 +81,25 @@ function (qt_internal_setup_wasm_target_properties wasmTarget) # Set ASYNCIFY_IMPORTS unconditionally in order to support enabling asyncify at link time. target_link_options("${wasmTarget}" INTERFACE "SHELL:-sASYNCIFY_IMPORTS=qt_asyncify_suspend_js,qt_asyncify_resume_js") + if(QT_FEATURE_shared) + + set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) + + # plugins are SIDE_MODULE + target_compile_options("${wasmTarget}" INTERFACE + "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,MODULE_LIBRARY>:" -s SIDE_MODULE=1>) + target_link_options("${wasmTarget}" INTERFACE + "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,MODULE_LIBRARY>:" -s SIDE_MODULE=1>) + + # shared libs are SIDE_MODULE + target_compile_options("${wasmTarget}" INTERFACE + "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:" -s SIDE_MODULE=1>) + target_link_options("${wasmTarget}" INTERFACE + "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:" -s SIDE_MODULE=1>) + + else() + target_link_options("${wasmTarget}" INTERFACE "SHELL:-s ERROR_ON_UNDEFINED_SYMBOLS=1") + endif() endfunction() function(qt_internal_wasm_add_finalizers target) diff --git a/configure.cmake b/configure.cmake index f188b99201..570a260715 100644 --- a/configure.cmake +++ b/configure.cmake @@ -390,7 +390,7 @@ qt_feature("android-style-assets" PRIVATE ) qt_feature("shared" PUBLIC LABEL "Building shared libraries" - AUTODETECT NOT UIKIT AND NOT WASM + AUTODETECT NOT UIKIT CONDITION BUILD_SHARED_LIBS ) qt_feature_definition("shared" "QT_STATIC" NEGATE PREREQUISITE "!defined(QT_SHARED) && !defined(QT_STATIC)") diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in index 8b4d3164cf..a2a27fe016 100644 --- a/src/corelib/Qt6CoreConfigExtras.cmake.in +++ b/src/corelib/Qt6CoreConfigExtras.cmake.in @@ -65,6 +65,7 @@ if(ANDROID_PLATFORM) endif() if(EMSCRIPTEN) + set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) include("${CMAKE_CURRENT_LIST_DIR}/@QT_CMAKE_EXPORT_NAMESPACE@WasmMacros.cmake") endif() diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index f08a7ea950..9bf98d9ac6 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -851,7 +851,7 @@ qt_internal_extend_target(Gui CONDITION QT_FEATURE_opengles2 opengl/qopengles2ext.h ) -qt_internal_extend_target(Gui CONDITION QT_FEATURE_egl AND QT_FEATURE_opengl +qt_internal_extend_target(Gui CONDITION QT_FEATURE_egl AND QT_FEATURE_opengl AND NOT WASM SOURCES opengl/platform/egl/qeglpbuffer.cpp opengl/platform/egl/qeglpbuffer_p.h opengl/platform/egl/qeglplatformcontext.cpp opengl/platform/egl/qeglplatformcontext_p.h diff --git a/src/plugins/platforms/wasm/qwasmcompositor.h b/src/plugins/platforms/wasm/qwasmcompositor.h index 3609f44c5e..b2bb51fc52 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.h +++ b/src/plugins/platforms/wasm/qwasmcompositor.h @@ -8,6 +8,7 @@ #include <QtGui/qregion.h> #include <qpa/qplatformwindow.h> +#include <QMap> #include <QtOpenGL/qopengltextureblitter.h> #include <QtGui/qpalette.h> diff --git a/src/plugins/platforms/wasm/qwasmtheme.cpp b/src/plugins/platforms/wasm/qwasmtheme.cpp index 51399159c4..b188dcb4b6 100644 --- a/src/plugins/platforms/wasm/qwasmtheme.cpp +++ b/src/plugins/platforms/wasm/qwasmtheme.cpp @@ -4,6 +4,7 @@ #include "qwasmtheme.h" #include <QtCore/qvariant.h> #include <QFontDatabase> +#include <QList> QT_BEGIN_NAMESPACE |
