Skip to content

Instantly share code, notes, and snippets.

@clurect
Forked from hjanuschka/00-README.md
Created November 12, 2025 22:00
Show Gist options
  • Select an option

  • Save clurect/358bda26638bd9a564a1884ef13a02de to your computer and use it in GitHub Desktop.

Select an option

Save clurect/358bda26638bd9a564a1884ef13a02de to your computer and use it in GitHub Desktop.
Chromium macOS SDK Compatibility Patch - Fix for older SDKs missing kCGBitmapByteOrderInfoMask and kCGImageByteOrder32Host

Tested with: Xcode 15.4 (SDK 14.5)

Apply

cd /path/to/chromium/src
git apply 1.patch
autoninja -C out/Default chrome

Managing Xcode versions

# Install xcodes (like nvm for Xcode)
brew install xcodesorg/made/xcodes

# List and install
xcodes list
xcodes install 15.4

# Switch version
sudo xcodes select 15.4
xcrun --show-sdk-version
diff --git a/chrome/browser/media/webrtc/window_icon_util_mac.mm b/chrome/browser/media/webrtc/window_icon_util_mac.mm
index 8bd216b9da864..964c97c6649bd 100644
--- a/chrome/browser/media/webrtc/window_icon_util_mac.mm
+++ b/chrome/browser/media/webrtc/window_icon_util_mac.mm
@@ -11,6 +11,12 @@
#include "third_party/libyuv/include/libyuv/convert_argb.h"
#include "third_party/skia/include/core/SkBitmap.h"
+// kCGBitmapByteOrderInfoMask is not available in recent macOS SDKs.
+// It's the same as kCGBitmapByteOrderMask.
+#ifndef kCGBitmapByteOrderInfoMask
+#define kCGBitmapByteOrderInfoMask kCGBitmapByteOrderMask
+#endif
+
gfx::ImageSkia GetWindowIcon(content::DesktopMediaID id) {
DCHECK(id.type == content::DesktopMediaID::TYPE_WINDOW);
diff --git a/ios/chrome/browser/snapshots/model/image_file_manager_unittest.mm b/ios/chrome/browser/snapshots/model/image_file_manager_unittest.mm
index 1013d09c97b19..b5e629586ea56 100644
--- a/ios/chrome/browser/snapshots/model/image_file_manager_unittest.mm
+++ b/ios/chrome/browser/snapshots/model/image_file_manager_unittest.mm
@@ -28,6 +28,16 @@
#import "ios/web/public/test/web_task_environment.h"
#import "testing/platform_test.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace {
const NSUInteger kSnapshotCount = 10;
diff --git a/services/shape_detection/text_detection_impl_mac_unittest.mm b/services/shape_detection/text_detection_impl_mac_unittest.mm
index f5797e9d31e4d..cc38eb89165a7 100644
--- a/services/shape_detection/text_detection_impl_mac_unittest.mm
+++ b/services/shape_detection/text_detection_impl_mac_unittest.mm
@@ -21,6 +21,16 @@
#include "third_party/skia/include/utils/mac/SkCGUtils.h"
#include "ui/gl/gl_switches.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
using base::test::RunOnceClosure;
namespace shape_detection {
diff --git a/skia/ext/skia_utils_ios.mm b/skia/ext/skia_utils_ios.mm
index 1b202bf6f3709..0c5e79660ff6d 100644
--- a/skia/ext/skia_utils_ios.mm
+++ b/skia/ext/skia_utils_ios.mm
@@ -15,6 +15,16 @@
#include "base/logging.h"
#include "third_party/skia/include/utils/mac/SkCGUtils.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace {
const uint8_t kICOHeaderMagic[4] = {0x00, 0x00, 0x01, 0x00};
diff --git a/skia/ext/skia_utils_mac.mm b/skia/ext/skia_utils_mac.mm
index 0da7d8e323d9e..5099f10d5d5c3 100644
--- a/skia/ext/skia_utils_mac.mm
+++ b/skia/ext/skia_utils_mac.mm
@@ -22,6 +22,16 @@
#include "third_party/skia/include/core/SkColorSpace.h"
#include "third_party/skia/include/utils/mac/SkCGUtils.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace {
// Draws an NSImage or an NSImageRep with a given size into a SkBitmap.
diff --git a/third_party/blink/renderer/platform/mac/graphics_context_canvas.mm b/third_party/blink/renderer/platform/mac/graphics_context_canvas.mm
index 9234de2adf65a..67281d71f50e6 100644
--- a/third_party/blink/renderer/platform/mac/graphics_context_canvas.mm
+++ b/third_party/blink/renderer/platform/mac/graphics_context_canvas.mm
@@ -12,6 +12,16 @@
#include "skia/ext/skia_utils_mac.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace blink {
GraphicsContextCanvas::GraphicsContextCanvas(cc::PaintCanvas* canvas,
diff --git a/ui/base/resource/resource_bundle_ios.mm b/ui/base/resource/resource_bundle_ios.mm
index a207f8db06b18..2049e0459b406 100644
--- a/ui/base/resource/resource_bundle_ios.mm
+++ b/ui/base/resource/resource_bundle_ios.mm
@@ -19,6 +19,16 @@
#include "ui/base/resource/resource_scale_factor.h"
#include "ui/gfx/image/image.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace ui {
namespace {
diff --git a/ui/gfx/image/image_ios.mm b/ui/gfx/image/image_ios.mm
index 676998a61f432..9e3d49927b6ee 100644
--- a/ui/gfx/image/image_ios.mm
+++ b/ui/gfx/image/image_ios.mm
@@ -19,6 +19,16 @@
#include "ui/gfx/image/image_skia_rep.h"
#include "ui/gfx/image/image_skia_util_ios.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace {
// Returns a 16x16 red UIImage to visually show when a UIImage cannot be
diff --git a/ui/gfx/image/image_ios_unittest.mm b/ui/gfx/image/image_ios_unittest.mm
index fe3ea09bf480e..503be91aa8577 100644
--- a/ui/gfx/image/image_ios_unittest.mm
+++ b/ui/gfx/image/image_ios_unittest.mm
@@ -19,6 +19,16 @@
#include "ui/base/resource/resource_scale_factor.h"
#include "ui/gfx/image/image_skia.h"
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace {
// Helper function to return a UIImage with the given size and scale.
diff --git a/ui/gfx/image/image_unittest_util_apple.mm b/ui/gfx/image/image_unittest_util_apple.mm
index 4a6e3016b082b..fb0384cd34d62 100644
--- a/ui/gfx/image/image_unittest_util_apple.mm
+++ b/ui/gfx/image/image_unittest_util_apple.mm
@@ -16,6 +16,16 @@
#import <UIKit/UIKit.h>
#endif
+// kCGImageByteOrder32Host is not available in recent macOS SDKs.
+// Define it based on the host byte order.
+#ifndef kCGImageByteOrder32Host
+#if __BIG_ENDIAN__
+#define kCGImageByteOrder32Host kCGImageByteOrder32Big
+#else
+#define kCGImageByteOrder32Host kCGImageByteOrder32Little
+#endif
+#endif
+
namespace gfx::test {
// The |x| and |y| coordinates are interpreted as scale-independent on the Mac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment