set(SOURCES AffineTransform.cpp Bitmap.cpp BitmapExport.cpp BitmapSequence.cpp CMYKBitmap.cpp CanvasCommandList.cpp CanvasCommandPlayer.cpp Color.cpp ColorConversion.cpp ColorSpace.cpp CornerRadii.cpp Cursor.cpp Filter.cpp Font/Font.cpp Font/FontDatabase.cpp Font/FontSupport.cpp Font/FontVariationSettings.cpp Font/PathFontProvider.cpp Font/Typeface.cpp Font/TypefaceSkia.cpp Font/WOFF/Loader.cpp Font/WOFF2/Loader.cpp FontCascadeList.cpp GradientPainting.cpp Gradients.cpp Matrix4x4.cpp DecodedImageFrame.cpp ImageFormats/BMPWriter.cpp ImageFormats/JPEGWriter.cpp ImageFormats/PNGWriter.cpp ImageFormats/WebPSharedLossless.cpp ImageFormats/WebPWriter.cpp ImageFormats/WebPWriterLossless.cpp PaintStyle.cpp Painter.cpp PainterSkia.cpp PaintingSurface.cpp Palette.cpp Path.cpp PathSkia.cpp Point.cpp Rect.cpp SharedImage.cpp SharedImageBuffer.cpp ShareableBitmap.cpp ShapeFeature.cpp Size.cpp SkiaBackendContext.cpp SkiaUtils.cpp SystemTheme.cpp TextLayout.cpp Triangle.cpp VectorGraphic.cpp YUVData.cpp ) if (APPLE) list(APPEND SOURCES MetalContext.mm) endif() if (HAS_DIRECTX) list(APPEND SOURCES Direct3DContext.cpp) endif() if (HAS_VULKAN) list(APPEND SOURCES SkiaVulkanMemoryAllocator.cpp VulkanContext.cpp VulkanImage.cpp) endif() if (HAS_FONTCONFIG) list(APPEND SOURCES Font/GlobalFontConfig.cpp) endif() ladybird_lib(LibGfx gfx) target_link_libraries(LibGfx PRIVATE LibCompress LibCore LibCrypto LibFileSystem LibTextCodec LibIPC LibSync LibUnicode) target_link_libraries(LibGfx PRIVATE PkgConfig::WOFF2 JPEG::JPEG PNG::PNG skia harfbuzz) import_rust_crate(MANIFEST_PATH Rust/Cargo.toml CRATE_NAME libgfx_rust FFI_HEADER RustFFI.h) target_link_libraries(LibGfx PRIVATE libgfx_rust) if (HAS_FONTCONFIG) target_link_libraries(LibGfx PRIVATE Fontconfig::Fontconfig) endif() if (NOT ANDROID) # FIXME: Build vcpkg libraries with clang-cl so they can also build in sanitize. # https://github.com/LadybirdBrowser/ladybird/issues/5224 if (WIN32 AND ENABLE_ADDRESS_SANITIZER) # We have to disable ASAN for the full target as fixing the issue in the initial SkiaBackendContext.cpp TU # alone causes transitive issues in other TUs that depend on it target_compile_options(LibGfx PRIVATE -fno-sanitize=address) endif() endif() if (APPLE) target_link_libraries(LibCore PUBLIC "-framework Metal") target_link_libraries(LibCore PUBLIC "-framework Accelerate") endif() if (HAS_DIRECTX) target_link_libraries(LibGfx PRIVATE d3d12 dxgi d3dcompiler) endif() if (HAS_VULKAN) target_link_libraries(LibCore PUBLIC Vulkan::Vulkan Vulkan::Headers) target_link_libraries(LibGfx PRIVATE GPUOpen::VulkanMemoryAllocator) if (USE_VULKAN_DMABUF_IMAGES) pkg_check_modules(LibDRM REQUIRED libdrm) target_include_directories(LibGfx PUBLIC ${LibDRM_INCLUDE_DIRS}) endif() endif()