diff options
Diffstat (limited to 'vcpkg/ports/dawn/portfile.cmake')
| -rw-r--r-- | vcpkg/ports/dawn/portfile.cmake | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/vcpkg/ports/dawn/portfile.cmake b/vcpkg/ports/dawn/portfile.cmake new file mode 100644 index 0000000..90cf215 --- /dev/null +++ b/vcpkg/ports/dawn/portfile.cmake @@ -0,0 +1,213 @@ +if (VCPKG_TARGET_IS_EMSCRIPTEN) + vcpkg_download_distfile(ARCHIVE + URLS "https://github.com/google/dawn/releases/download/v${VERSION}/emdawnwebgpu_pkg-v${VERSION}.zip" + FILENAME "emdawnwebgpu_pkg-v${VERSION}.zip" + SHA512 a0544b3bf2d81abee91fb43901d384b021005d4158b43fec996977607f08852b211940a3ca71d37ac8bda52821c361bbaa93d0e4e63f72ff186863ef48a6a3d0 + ) + vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE ${ARCHIVE} + PATCHES + 000-fix-emdawnwebgpu.patch + ) + set(VCPKG_BUILD_TYPE release) + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/DawnConfig.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + file(INSTALL "${SOURCE_PATH}/webgpu/include" DESTINATION "${CURRENT_PACKAGES_DIR}") + file(INSTALL "${SOURCE_PATH}/webgpu_cpp/include" DESTINATION "${CURRENT_PACKAGES_DIR}") + file(INSTALL "${SOURCE_PATH}/webgpu/src" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" PATTERN "LICENSE" EXCLUDE) + file(INSTALL "${SOURCE_PATH}/emdawnwebgpu.port.py" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + set(DAWN_PKGCONFIG_CFLAGS "--use-port=\${prefix}/share/${PORT}/emdawnwebgpu.port.py") + set(DAWN_PKGCONFIG_LIBS "--use-port=\${prefix}/share/${PORT}/emdawnwebgpu.port.py") + set(DAWN_PKGCONFIG_REQUIRES "") + configure_file("${CMAKE_CURRENT_LIST_DIR}/unofficial_webgpu_dawn.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/unofficial_webgpu_dawn.pc" @ONLY) + vcpkg_fixup_pkgconfig() + vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/webgpu/src/LICENSE" "${SOURCE_PATH}/webgpu_cpp/LICENSE") + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + return() +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO google/dawn + REF "v${VERSION}" + SHA512 6962d1526ac88d4e00d236b4ae86bd885d67f493d6b7342117e3b658fa6f37bf6d6b8617af4d74ef0bf9e3e95cf91aed567fb0f90bf836ad132dff4a304525f8 + HEAD_REF master + PATCHES + 001-fix-windows-build.patch + 002-fix-uwp.patch + 003-fix-d3d11.patch + 004-deps.patch + 005-bsd-support.patch + 006-fix-x11-include-dirs.patch +) + +# vcpkg_find_acquire_program(PYTHON3) +# vcpkg_execute_in_download_mode( +# COMMAND "${PYTHON3}" tools/fetch_dawn_dependencies.py +# WORKING_DIRECTORY "${SOURCE_PATH}" +# ) +# +# get_dawn_deps_commit() { curl -s "https://dawn.googlesource.com/dawn/+/refs/heads/chromium/7371/$1" | htmlq .gitlink-detail --text; } +# + +function(checkout_in_path PATH URL REF) + if(EXISTS "${PATH}") + file(GLOB_RECURSE subdirectory_children "${CURRENT_PACKAGES_DIR}/include/${directory_child}/*") + if(NOT "${subdirectory_children}" STREQUAL "") + return() + else() + file(REMOVE_RECURSE "${PATH}") + endif() + endif() + + vcpkg_from_git( + OUT_SOURCE_PATH DEP_SOURCE_PATH + URL "${URL}" + REF "${REF}" + ) + file(RENAME "${DEP_SOURCE_PATH}" "${PATH}") + file(REMOVE_RECURSE "${DEP_SOURCE_PATH}") +endfunction() + +checkout_in_path( + "${SOURCE_PATH}/third_party/jinja2" + "https://chromium.googlesource.com/chromium/src/third_party/jinja2" + "e2d024354e11cc6b041b0cff032d73f0c7e43a07" +) + +checkout_in_path( + "${SOURCE_PATH}/third_party/markupsafe" + "https://chromium.googlesource.com/chromium/src/third_party/markupsafe" + "0bad08bb207bbfc1d6f3bbc82b9242b0c50e5794" +) + +checkout_in_path( + "${SOURCE_PATH}/third_party/spirv-headers/src" + "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers" + "a8637796c28386c3cf3b4e8107020fbb52c46f3f" +) + +checkout_in_path( + "${SOURCE_PATH}/third_party/spirv-tools/src" + "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools" + "f386417185be0601894b20d9ad000aceb73d898b" +) + +vcpkg_find_acquire_program(PYTHON3) + +if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(DAWN_BUILD_MONOLITHIC_LIBRARY "STATIC") +else() + set(DAWN_BUILD_MONOLITHIC_LIBRARY "SHARED") +endif() + +# DAWN_BUILD_MONOLITHIC_LIBRARY SHARED/STATIC requires BUILD_SHARED_LIBS=OFF +set(VCPKG_LIBRARY_LINKAGE_BACKUP ${VCPKG_LIBRARY_LINKAGE}) +set(VCPKG_LIBRARY_LINKAGE static) + +set(DAWN_ENABLE_NULL ON) +set(DAWN_ENABLE_D3D11 OFF) +if("d3d11" IN_LIST FEATURES) + set(DAWN_ENABLE_D3D11 ON) +endif() +set(DAWN_ENABLE_D3D12 OFF) +if("d3d12" IN_LIST FEATURES) + set(DAWN_ENABLE_D3D12 ON) +endif() +set(DAWN_ENABLE_DESKTOP_GL OFF) +if("gl" IN_LIST FEATURES) + set(DAWN_ENABLE_DESKTOP_GL ON) +endif() +set(DAWN_ENABLE_OPENGLES OFF) +if("gles" IN_LIST FEATURES) + set(DAWN_ENABLE_OPENGLES ON) +endif() +set(DAWN_ENABLE_METAL OFF) +if("metal" IN_LIST FEATURES) + set(DAWN_ENABLE_METAL ON) +endif() +set(DAWN_ENABLE_VULKAN OFF) +if("vulkan" IN_LIST FEATURES) + set(DAWN_ENABLE_VULKAN ON) +endif() +set(DAWN_USE_WAYLAND OFF) +if("wayland" IN_LIST FEATURES) + set(DAWN_USE_WAYLAND ON) +endif() +set(DAWN_USE_X11 OFF) +if("x11" IN_LIST FEATURES) + set(DAWN_USE_X11 ON) +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DPython3_EXECUTABLE="${PYTHON3}" + -DDAWN_BUILD_MONOLITHIC_LIBRARY=${DAWN_BUILD_MONOLITHIC_LIBRARY} + -DDAWN_ENABLE_INSTALL=ON + -DDAWN_USE_GLFW=OFF + -DDAWN_BUILD_PROTOBUF=OFF + -DDAWN_BUILD_SAMPLES=OFF + -DDAWN_BUILD_TESTS=OFF + -DTINT_BUILD_TESTS=OFF + -DTINT_ENABLE_INSTALL=OFF + -DTINT_BUILD_CMD_TOOLS=OFF + -DDAWN_ENABLE_NULL=${DAWN_ENABLE_NULL} + -DDAWN_ENABLE_D3D11=${DAWN_ENABLE_D3D11} + -DDAWN_ENABLE_D3D12=${DAWN_ENABLE_D3D12} + -DDAWN_ENABLE_DESKTOP_GL=${DAWN_ENABLE_DESKTOP_GL} + -DDAWN_ENABLE_OPENGLES=${DAWN_ENABLE_OPENGLES} + -DDAWN_ENABLE_METAL=${DAWN_ENABLE_METAL} + -DDAWN_ENABLE_VULKAN=${DAWN_ENABLE_VULKAN} + -DDAWN_USE_WAYLAND=${DAWN_USE_WAYLAND} + -DDAWN_USE_X11=${DAWN_USE_X11} +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/Dawn) + +list(APPEND DAWN_ABSL_REQUIRES + absl_flat_hash_set + absl_flat_hash_map + absl_inlined_vector + absl_no_destructor + absl_overload + absl_str_format_internal + absl_strings + absl_span + absl_string_view +) +list(JOIN DAWN_ABSL_REQUIRES ", " DAWN_ABSL_REQUIRES) + +set(DAWN_PKGCONFIG_CFLAGS "") +set(DAWN_PKGCONFIG_REQUIRES "${DAWN_ABSL_REQUIRES}") +set(DAWN_PKGCONFIG_LIBS "-lwebgpu_dawn") + +if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW AND NOT VCPKG_TARGET_IS_UWP) + set(DAWN_PKGCONFIG_LIBS "${DAWN_PKGCONFIG_LIBS} -lonecore -luser32 -ldelayimp") +endif() +if (DAWN_ENABLE_D3D11 OR DAWN_ENABLE_D3D12) + set(DAWN_PKGCONFIG_LIBS "${DAWN_PKGCONFIG_LIBS} -ldxguid") +endif() +if (DAWN_ENABLE_METAL) + set(DAWN_PKGCONFIG_LIBS "${DAWN_PKGCONFIG_LIBS} -framework IOSurface -framework Metal -framework QuartzCore") + if (VCPKG_TARGET_IS_OSX) + set(DAWN_PKGCONFIG_LIBS "${DAWN_PKGCONFIG_LIBS} -framework Cocoa -framework IOKit") + endif() +endif() + +if (EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib") + configure_file("${CMAKE_CURRENT_LIST_DIR}/unofficial_webgpu_dawn.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/unofficial_webgpu_dawn.pc" @ONLY) +endif() +if (EXISTS "${CURRENT_PACKAGES_DIR}/lib") + configure_file("${CMAKE_CURRENT_LIST_DIR}/unofficial_webgpu_dawn.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/unofficial_webgpu_dawn.pc" @ONLY) +endif() +vcpkg_fixup_pkgconfig() + +# Restore the original library linkage +set(VCPKG_LIBRARY_LINKAGE ${VCPKG_LIBRARY_LINKAGE_BACKUP}) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") |