Explorar el Código

AK+LibGfx+LibWebView: Add wrapper header around swift/bridging

When using a configuration without a swift compiler, we need to no-op
the swift annotations. Other, cleverer solutions beyond the has include
all fell flat in the face of the clang modules implementation used by
swift to parse-once use-everywhere each module.
Andrew Kaster hace 11 meses
padre
commit
b03b13b720
Se han modificado 3 ficheros con 23 adiciones y 7 borrados
  1. 21 0
      AK/Swift.h
  2. 1 1
      Userland/Libraries/LibGfx/Color.cpp
  3. 1 6
      Userland/Libraries/LibWebView/Application.h

+ 21 - 0
AK/Swift.h

@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2024, Andrew Kaster <andrew@ladybird.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#if __has_include(<swift/bridging>)
+#    include <swift/bridging>
+#else
+#    define SWIFT_SELF_CONTAINED
+#    define SWIFT_RETURNS_INDEPENDENT_VALUE
+#    define SWIFT_SHARED_REFERENCE(retain, release)
+#    define SWIFT_IMMORTAL_REFERENCE
+#    define SWIFT_UNSAFE_REFERENCE
+#    define SWIFT_NAME(name)
+#    define SWIFT_CONFORMS_TO_PROTOCOL(protocol)
+#    define SWIFT_COMPUTED_PROPERTY
+#    define SWIFT_MUTATING
+#endif

+ 1 - 1
Userland/Libraries/LibGfx/Color.cpp

@@ -9,6 +9,7 @@
 #include <AK/ByteString.h>
 #include <AK/FloatingPointStringConversions.h>
 #include <AK/Optional.h>
+#include <AK/Swift.h>
 #include <AK/Vector.h>
 #include <LibGfx/Color.h>
 #include <LibGfx/SystemTheme.h>
@@ -18,7 +19,6 @@
 
 #ifdef LIBGFX_USE_SWIFT
 #    include <LibGfx-Swift.h>
-#    include <swift/bridging>
 #endif
 
 namespace Gfx {

+ 1 - 6
Userland/Libraries/LibWebView/Application.h

@@ -7,6 +7,7 @@
 #pragma once
 
 #include <AK/Badge.h>
+#include <AK/Swift.h>
 #include <LibCore/EventLoop.h>
 #include <LibMain/Main.h>
 #include <LibURL/URL.h>
@@ -14,12 +15,6 @@
 #include <LibWebView/Process.h>
 #include <LibWebView/ProcessManager.h>
 
-#ifdef __swift__
-#    include <swift/bridging>
-#else
-#    define SWIFT_IMMORTAL_REFERENCE
-#endif
-
 namespace WebView {
 
 class Application {