diff --git a/CMakeLists.txt b/CMakeLists.txt
index f99e0f9..42ecb77 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,13 +32,14 @@
 #   in case any of the generator files changes. We should also remove the CACHE "" FORCE stuff to
 #   override options in third_party dependencies.
 # - When upgrading to CMake 3.20 we can take advantage of the GENERATED property being global in
-#   DawnGenerator. We should also use the path utilities in install_if_enabled.
+#   DawnGenerator. We should also use the path utilities in dawn_install_target.
 
 project(
     Dawn
     DESCRIPTION "Dawn, a WebGPU implementation"
     LANGUAGES C CXX
     HOMEPAGE_URL "https://dawn.googlesource.com/dawn"
+    VERSION 0.0.0
 )
 enable_testing()
 
@@ -59,44 +60,6 @@
 set(DAWN_INCLUDE_DIR "${Dawn_SOURCE_DIR}/include" CACHE PATH "Directory that contains public headers for dawn")
 set(DAWN_TEMPLATE_DIR "${DAWN_GENERATOR_DIR}/templates" CACHE PATH "Directory that contains templates for generators")
 
-function (install_if_enabled target)
-    if(NOT DAWN_ENABLE_INSTALL)
-        return()
-    endif()
-
-    install(TARGETS ${target}
-        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    )
-
-    get_target_property(targetHeaders ${target} INTERFACE_SOURCES)
-    if (NOT targetHeaders)
-        return()
-    endif()
-
-    foreach(headerFile ${targetHeaders})
-        # Starting from CMake 3.20 there is the cmake_path command that could simplify this code.
-        # Compute the install subdirectory for the header by stripping out the path to
-        # the include / gen/include directory...
-        string(FIND "${headerFile}" "${DAWN_INCLUDE_DIR}" foundIndex)
-        if (foundIndex EQUAL 0)
-            string(LENGTH "${DAWN_INCLUDE_DIR}/" lengthToRemove)
-        endif()
-        string(FIND "${headerFile}" "${DAWN_BUILD_GEN_DIR}/include/" foundIndex)
-        if (foundIndex EQUAL 0)
-            string(LENGTH "${DAWN_BUILD_GEN_DIR}/include/" lengthToRemove)
-        endif()
-        string(SUBSTRING "${headerFile}" "${lengthToRemove}" -1 headerRelDir)
-
-        # ... then remove everything after the last /
-        string(FIND "${headerRelDir}" "/" foundIndex REVERSE)
-        string(SUBSTRING "${headerRelDir}" 0 ${foundIndex} headerRelDir)
-
-        install(FILES "${headerFile}" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${headerRelDir})
-    endforeach()
-endfunction()
-
 ################################################################################
 # Configuration options
 ################################################################################
@@ -260,6 +223,8 @@
 
 option(DAWN_FETCH_DEPENDENCIES "Use fetch_dawn_dependencies.py as an alternative to using depot_tools" OFF)
 
+option(DAWN_BUILD_MONOLITHIC_LIBRARY "Bundle all dawn components into a single shared library." ON)
+
 # Much of the backend code is shared among desktop OpenGL and OpenGL ES
 if (${DAWN_ENABLE_DESKTOP_GL} OR ${DAWN_ENABLE_OPENGLES})
     set(DAWN_ENABLE_OPENGL ON)
@@ -269,11 +234,14 @@
     set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 endif()
 
+# Defines `CMAKE_INSTALL_*DIR` variables
+include(GNUInstallDirs)
 # The public config contains only the include paths for the Dawn headers.
 add_library(dawn_public_config INTERFACE)
 target_include_directories(dawn_public_config INTERFACE
-    "${DAWN_INCLUDE_DIR}"
-    "${DAWN_BUILD_GEN_DIR}/include"
+    "$<BUILD_INTERFACE:${DAWN_INCLUDE_DIR}>"
+    "$<BUILD_INTERFACE:${DAWN_BUILD_GEN_DIR}/include>"
+    "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
 )
 
 # The internal config contains additional path but includes the dawn_public_config include paths
@@ -466,3 +434,32 @@
     COMMENT "Generating tint coverage data"
     VERBATIM)
 endif()
+
+if (DAWN_BUILD_MONOLITHIC_LIBRARY AND DAWN_ENABLE_INSTALL)
+  # This series of functions add the necessary information so that other CMake projects
+  # can use Dawn, be it from a build directory, a local install or when packaged.
+  install(EXPORT DawnTargets
+    FILE DawnTargets.cmake
+    NAMESPACE dawn::
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Dawn")
+  export(EXPORT DawnTargets
+    FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/DawnTargets.cmake"
+      NAMESPACE dawn::
+  )
+  # Create a ConfigVersion.cmake file:
+  include(CMakePackageConfigHelpers)
+  write_basic_package_version_file(
+    "${CMAKE_CURRENT_BINARY_DIR}/DawnConfigVersion.cmake"
+    COMPATIBILITY AnyNewerVersion)
+  # Configure config file
+  configure_package_config_file("${CMAKE_CURRENT_LIST_DIR}/src/cmake/DawnConfig.cmake.in"
+    "${CMAKE_CURRENT_BINARY_DIR}/DawnConfig.cmake"
+    INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Dawn"
+  )
+  # Install the fully generated config and configVersion files
+  install(FILES
+    "${CMAKE_CURRENT_BINARY_DIR}/DawnConfig.cmake"
+    "${CMAKE_CURRENT_BINARY_DIR}/DawnConfigVersion.cmake"
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Dawn"
+  )
+endif ()
diff --git a/src/cmake/DawnConfig.cmake.in b/src/cmake/DawnConfig.cmake.in
new file mode 100644
index 0000000..8bfeda5
--- /dev/null
+++ b/src/cmake/DawnConfig.cmake.in
@@ -0,0 +1,34 @@
+# Copyright 2024 The Dawn & Tint Authors
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+#    list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+#    this list of conditions and the following disclaimer in the documentation
+#    and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+#    contributors may be used to endorse or promote products derived from
+#    this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This allows CMake find_package() to find all the dawn targets that were exported.
+# For a helpful explanation on this subject, please walk through the steps in the CMake tutorial.
+# 1. https://cmake.org/cmake/help/latest/guide/tutorial/Installing%20and%20Testing.html
+# 2. https://cmake.org/cmake/help/latest/guide/tutorial/Adding%20Export%20Configuration.html
+
+@PACKAGE_INIT@
+include ("${CMAKE_CURRENT_LIST_DIR}/DawnTargets.cmake")
diff --git a/src/cmake/DawnLibrary.cmake b/src/cmake/DawnLibrary.cmake
index d0df135..db93886 100644
--- a/src/cmake/DawnLibrary.cmake
+++ b/src/cmake/DawnLibrary.cmake
@@ -141,3 +141,53 @@
   endif ()
   add_library("dawn::${name}" ALIAS "${name}")
 endfunction()
+
+#[==[.rst:
+.. cmake:command:: dawn_install_target
+
+  Install a target and associated header files.
+
+  .. code-block:: cmake
+
+  dawn_install_target(<name>
+    [HEADERS                  <header>...]
+  )
+
+  * ``HEADERS``: A list of header files to install.
+#]==]
+function(dawn_install_target name)
+  cmake_parse_arguments(PARSE_ARGV 1 arg
+    ""
+    ""
+    "HEADERS")
+  if (arg_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR
+      "Unparsed arguments for dawn_install_target: "
+      "${arg_UNPARSED_ARGUMENTS}")
+  endif ()
+  install(TARGETS "${name}"
+    EXPORT DawnTargets
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
+  foreach(header IN LISTS arg_HEADERS)
+    # Starting from CMake 3.20 there is the cmake_path command that could simplify this code.
+    # Compute the install subdirectory for the header by stripping out the path to
+    # the 'include' (or) 'gen/include' directory...
+    string(FIND "${header}" "${DAWN_INCLUDE_DIR}" found)
+    if (found EQUAL 0)
+      string(LENGTH "${DAWN_INCLUDE_DIR}/" deduction)
+    endif()
+    string(FIND "${header}" "${DAWN_BUILD_GEN_DIR}/include/" found)
+    if (found EQUAL 0)
+      string(LENGTH "${DAWN_BUILD_GEN_DIR}/include/" deduction)
+    endif()
+    string(SUBSTRING "${header}" "${deduction}" -1 subdir)
+
+    # ... then remove everything after the last /
+    string(FIND "${subdir}" "/" found REVERSE)
+    string(SUBSTRING "${subdir}" 0 ${found} subdir)
+    install(FILES "${header}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${subdir}")
+  endforeach()
+endfunction()
diff --git a/src/dawn/CMakeLists.txt b/src/dawn/CMakeLists.txt
index 51560ad..0056327 100644
--- a/src/dawn/CMakeLists.txt
+++ b/src/dawn/CMakeLists.txt
@@ -26,30 +26,6 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ###############################################################################
-# Dawn projects
-###############################################################################
-
-add_subdirectory(partition_alloc)
-add_subdirectory(common)
-add_subdirectory(platform)
-add_subdirectory(native)
-add_subdirectory(wire)
-add_subdirectory(utils)
-
-if (DAWN_BUILD_BENCHMARKS)
-    add_subdirectory(tests/benchmarks)
-endif()
-if(DAWN_USE_GLFW)
-    add_subdirectory(glfw)
-endif()
-if (DAWN_BUILD_SAMPLES)
-    add_subdirectory(samples)
-endif()
-if (DAWN_BUILD_NODE_BINDINGS)
-    add_subdirectory(node)
-endif()
-
-###############################################################################
 # Dawn headers
 ###############################################################################
 
@@ -69,8 +45,6 @@
     DEPENDS
         dawn_public_config
 )
-install_if_enabled(dawn_headers)
-
 ###############################################################################
 # Dawn C++ headers
 ###############################################################################
@@ -91,12 +65,34 @@
     DEPENDS
         dawn::dawn_headers
 )
-install_if_enabled(dawncpp_headers)
-
 add_library(dawncpp ALIAS dawncpp_headers)
 add_library(webgpu_cpp ALIAS dawncpp_headers)
 
 ###############################################################################
+# Dawn projects
+###############################################################################
+
+add_subdirectory(partition_alloc)
+add_subdirectory(common)
+add_subdirectory(platform)
+add_subdirectory(wire)
+add_subdirectory(native)
+add_subdirectory(utils)
+
+if (DAWN_BUILD_BENCHMARKS)
+  add_subdirectory(tests/benchmarks)
+endif()
+if(DAWN_USE_GLFW)
+  add_subdirectory(glfw)
+endif()
+if (DAWN_BUILD_SAMPLES)
+  add_subdirectory(samples)
+endif()
+if (DAWN_BUILD_NODE_BINDINGS)
+  add_subdirectory(node)
+endif()
+
+###############################################################################
 # libdawn_proc
 ###############################################################################
 
@@ -123,7 +119,6 @@
 if(BUILD_SHARED_LIBS)
   target_compile_definitions(dawn_proc PUBLIC "WGPU_SHARED_LIBRARY")
 endif()
-install_if_enabled(dawn_proc)
 
 ###############################################################################
 # Other generated files (upstream header, emscripten header, emscripten bits)
diff --git a/src/dawn/glfw/CMakeLists.txt b/src/dawn/glfw/CMakeLists.txt
index 4f943af..b0036b9 100644
--- a/src/dawn/glfw/CMakeLists.txt
+++ b/src/dawn/glfw/CMakeLists.txt
@@ -34,7 +34,7 @@
 set(conditional_private_depends)
 if (DAWN_ENABLE_METAL)
     list(APPEND sources "utils_metal.mm")
-    list(APPEND conditional_private_depends"-framework Metal")
+    list(APPEND conditional_private_depends "-framework Metal")
 endif ()
 
 dawn_add_library(
diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt
index 6e36756..aec51ef 100644
--- a/src/dawn/native/CMakeLists.txt
+++ b/src/dawn/native/CMakeLists.txt
@@ -189,7 +189,6 @@
     "ComputePipeline.cpp"
     "CopyTextureForBrowserHelper.cpp"
     "CreatePipelineAsyncEvent.cpp"
-    "DawnNative.cpp"
     "Device.cpp"
     "DynamicUploader.cpp"
     "EncodingContext.cpp"
@@ -318,7 +317,6 @@
     list(APPEND sources
         "d3d/BackendD3D.cpp"
         "d3d/BlobD3D.cpp"
-        "d3d/D3DBackend.cpp"
         "d3d/D3DError.cpp"
         "d3d/DeviceD3D.cpp"
         "d3d/KeyedMutex.cpp"
@@ -374,7 +372,6 @@
         "d3d11/CommandBufferD3D11.cpp"
         "d3d11/CommandRecordingContextD3D11.cpp"
         "d3d11/ComputePipelineD3D11.cpp"
-        "d3d11/D3D11Backend.cpp"
         "d3d11/DeviceD3D11.cpp"
         "d3d11/DeviceInfoD3D11.cpp"
         "d3d11/PhysicalDeviceD3D11.cpp"
@@ -447,7 +444,6 @@
         "d3d12/CommandRecordingContext.cpp"
         "d3d12/ComputePipelineD3D12.cpp"
         "d3d12/CPUDescriptorHeapAllocationD3D12.cpp"
-        "d3d12/D3D12Backend.cpp"
         "d3d12/D3D12Info.cpp"
         "d3d12/DeviceD3D12.cpp"
         "d3d12/GPUDescriptorHeapAllocationD3D12.cpp"
@@ -516,7 +512,6 @@
         "metal/CommandRecordingContext.mm"
         "metal/ComputePipelineMTL.mm"
         "metal/DeviceMTL.mm"
-        "metal/MetalBackend.mm"
         "metal/PhysicalDeviceMTL.mm"
         "metal/PipelineLayoutMTL.mm"
         "metal/QuerySetMTL.mm"
@@ -535,6 +530,7 @@
         list(APPEND conditional_private_platform_depends "-framework Cocoa")
     endif()
     list(APPEND conditional_private_platform_depends
+        "-framework Foundation"
         "-framework IOKit"
         "-framework IOSurface"
         "-framework QuartzCore"
@@ -551,7 +547,6 @@
     )
     list(APPEND sources
         "null/DeviceNull.cpp"
-        "null/NullBackend.cpp"
     )
 endif()
 
@@ -627,7 +622,6 @@
         "opengl/DisplayEGL.cpp"
         "opengl/EGLFunctions.cpp"
         "opengl/GLFormat.cpp"
-        "opengl/OpenGLBackend.cpp"
         "opengl/OpenGLFunctions.cpp"
         "opengl/OpenGLVersion.cpp"
         "opengl/PersistentPipelineStateGL.cpp"
@@ -722,7 +716,6 @@
         "vulkan/SwapChainVk.cpp"
         "vulkan/TextureVk.cpp"
         "vulkan/UtilsVulkan.cpp"
-        "vulkan/VulkanBackend.cpp"
         "vulkan/VulkanError.cpp"
         "vulkan/VulkanExtensions.cpp"
         "vulkan/VulkanFunctions.cpp"
@@ -761,22 +754,38 @@
     endif()
 endif()
 
-dawn_add_library(
-  dawn_native
-  UTILITY_TARGET dawn_internal_config
-  HEADERS
-    ${headers}
-  PRIVATE_HEADERS
-    ${private_headers}
-  SOURCES
-    ${sources}
-  DEPENDS
+set(dawn_component_srcs)
+list(APPEND dawn_component_srcs "DawnNative.cpp")
+if (DAWN_ENABLE_D3D11 OR DAWN_ENABLE_D3D12)
+    list(APPEND dawn_component_srcs "d3d/D3DBackend.cpp")
+endif()
+if (DAWN_ENABLE_D3D11)
+    list(APPEND dawn_component_srcs "d3d11/D3D11Backend.cpp")
+endif()
+if (DAWN_ENABLE_D3D12)
+    list(APPEND dawn_component_srcs "d3d12/D3D12Backend.cpp")
+endif()
+if (DAWN_ENABLE_METAL)
+    list(APPEND dawn_component_srcs "metal/MetalBackend.mm")
+endif()
+if (DAWN_ENABLE_NULL)
+    list(APPEND dawn_component_srcs "null/NullBackend.cpp")
+endif()
+if (DAWN_ENABLE_OPENGL)
+    list(APPEND dawn_component_srcs "opengl/OpenGLBackend.cpp")
+endif()
+if (DAWN_ENABLE_VULKAN)
+    list(APPEND dawn_component_srcs "vulkan/VulkanBackend.cpp")
+endif()
+
+set(dawn_native_public_depends
     dawn::dawn_common
     dawn::dawn_platform
     dawn::dawncpp_headers
     dawn::partition_alloc
     ${conditional_public_depends}
-  PRIVATE_DEPENDS
+)
+set(dawn_native_private_depends
     absl::flat_hash_map
     absl::flat_hash_set
     absl::inlined_vector
@@ -784,6 +793,38 @@
     absl::strings
     libtint
     ${conditional_private_depends}
+)
+
+# The same object files are reused to build
+# 1. dawn_native (which gets used by tests, samples, benchmarks)
+# 2. webgpu_dawn bundle (which gets installed via CMake install rules)
+dawn_add_library(
+  dawn_native_objects
+  UTILITY_TARGET dawn_internal_config
+  FORCE_OBJECT
+  HEADERS
+    ${headers}
+  PRIVATE_HEADERS
+    ${private_headers}
+  SOURCES
+    ${sources}
+  DEPENDS
+    ${dawn_native_public_depends}
+  PRIVATE_DEPENDS
+    ${dawn_native_private_depends}
+    ${conditional_private_platform_depends}
+)
+
+dawn_add_library(
+  dawn_native
+  UTILITY_TARGET dawn_internal_config
+  SOURCES
+    ${dawn_component_srcs}
+  DEPENDS
+    dawn::dawn_native_objects
+    ${dawn_native_public_depends}
+  PRIVATE_DEPENDS
+    ${dawn_native_private_depends}
     ${conditional_private_platform_depends}
 )
 
@@ -811,35 +852,59 @@
     target_compile_definitions(dawn_native PRIVATE "DAWN_ENABLE_SWIFTSHADER")
 endif()
 
-###############################################################################
-# Do the 'complete_lib' build.
-# A convenience target that bundles dawn_native and procs calling it directly so that
-# applications link against it and have WebGPU work without jumping through more hoops.
-# Note that this library name is referenced in several places, search for it and things like:
-# "{{.*}}_dawn" when you rename it.
-###############################################################################
-
-if (NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
+if (DAWN_BUILD_MONOLITHIC_LIBRARY)
+    ###############################################################################
+    # Do the 'complete_lib' build.
+    # A convenience target that bundles dawn_native and procs calling it directly so that
+    # applications link against it and have WebGPU work without jumping through more hoops.
+    # Note that this library name is referenced in several places, search for it and things like:
+    # "{{.*}}_dawn" when you rename it.
+    ###############################################################################
     DawnJSONGenerator(
         TARGET "webgpu_dawn_native_proc"
         PRINT_NAME "Dawn native WebGPU procs"
         OUTPUT_SOURCES WEBGPU_DAWN_NATIVE_PROC_GEN_SOURCES
     )
-
+    # Bundle all objects of dawn_native, it's public dependencies and private dependencies.
     include(BundleLibraries)
-    bundle_libraries(webgpu_dawn dawn_native)
-    add_library(dawn::webgpu ALIAS webgpu_dawn)
+    bundle_libraries(webgpu_dawn dawn::dawn_native_objects)
+    add_library(dawn::webgpu_dawn ALIAS webgpu_dawn)
+    # Compile backend specific sources along with webgpu_dawn_native_proc sources for export macros to get applied.
     target_sources(webgpu_dawn
-    PRIVATE
+        PRIVATE
         ${WEBGPU_DAWN_NATIVE_PROC_GEN_SOURCES}
+        ${dawn_component_srcs}
     )
+    target_compile_definitions(webgpu_dawn
+        PRIVATE
+            "WGPU_IMPLEMENTATION"
+            "DAWN_NATIVE_IMPLEMENTATION"
+        PUBLIC
+            "WGPU_SHARED_LIBRARY"
+            "DAWN_NATIVE_SHARED_LIBRARY"
+    )
+    # TODO: Revert https://dawn-review.googlesource.com/c/dawn/+/196361 and remove the next line.
+    set_target_properties(webgpu_dawn PROPERTIES CXX_EXTENSIONS NO)
+    # Apart from dawn_public_config, everything else goes inside PRIVATE, otherwise install rules will complain that they were not exported.
     target_link_libraries(webgpu_dawn
-    PRIVATE
-        dawn_internal_config
-        ${conditional_private_platform_depends}
+        PUBLIC
+            dawn_public_config
+        PRIVATE
+            dawn_internal_config
+            ${dawn_native_public_depends}
+            ${dawn_native_private_depends}
+            ${conditional_private_platform_depends}
     )
-    target_compile_definitions(webgpu_dawn PRIVATE "WGPU_IMPLEMENTATION")
-    target_compile_definitions(webgpu_dawn PUBLIC "WGPU_SHARED_LIBRARY")
+    set(webgpu_dawn_public_headers)
+    foreach(dawn_target_name IN ITEMS dawn_headers dawncpp_headers dawn_native_objects)
+        get_target_property(headers "${dawn_target_name}" INTERFACE_SOURCES)
+        list(INSERT webgpu_dawn_public_headers 0 "${headers}")
+    endforeach()
+    if (DAWN_ENABLE_INSTALL)
+        dawn_install_target(dawn_public_config)
+        dawn_install_target(webgpu_dawn
+            HEADERS ${webgpu_dawn_public_headers})
+    endif ()
 endif ()
 
 # Linking with dxcompiler after bundling so that the bundling process
@@ -850,6 +915,3 @@
     target_link_libraries(dawn_native PRIVATE dxcompiler)
     target_link_libraries(webgpu_dawn PRIVATE dxcompiler)
 endif()
-
-install_if_enabled(dawn_native)
-install_if_enabled(webgpu_dawn)
diff --git a/src/dawn/platform/CMakeLists.txt b/src/dawn/platform/CMakeLists.txt
index 7916e10..34648c9 100644
--- a/src/dawn/platform/CMakeLists.txt
+++ b/src/dawn/platform/CMakeLists.txt
@@ -56,5 +56,3 @@
 if (DAWN_USE_BUILT_DXC)
   target_compile_definitions(dawn_platform PRIVATE "DAWN_USE_BUILT_DXC")
 endif()
-
-install_if_enabled(dawn_platform)
diff --git a/src/dawn/wire/CMakeLists.txt b/src/dawn/wire/CMakeLists.txt
index 35020df..1ac86c8 100644
--- a/src/dawn/wire/CMakeLists.txt
+++ b/src/dawn/wire/CMakeLists.txt
@@ -128,5 +128,3 @@
 if(BUILD_SHARED_LIBS)
     target_compile_definitions(dawn_wire PRIVATE "DAWN_WIRE_SHARED_LIBRARY")
 endif()
-
-install_if_enabled(dawn_wire)
diff --git a/tools/android/webgpu/src/main/cpp/CMakeLists.txt b/tools/android/webgpu/src/main/cpp/CMakeLists.txt
index 44033e0..259af44 100644
--- a/tools/android/webgpu/src/main/cpp/CMakeLists.txt
+++ b/tools/android/webgpu/src/main/cpp/CMakeLists.txt
@@ -31,6 +31,7 @@
 cmake_minimum_required(VERSION 3.22.1)
 
 set(DAWN_BUILD_ANDROID_SAMPLES OFF)
+set(DAWN_BUILD_MONOLITHIC_LIBRARY OFF)
 set(DAWN_BUILD_SAMPLES OFF)
 set(TINT_BUILD_TESTS OFF)
 set(TINT_BUILD_CMD_TOOLS OFF)
