Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 98 additions & 31 deletions packages/react-native/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@
* LICENSE file in the root directory of this source tree.
*/

import Foundation
import PackageDescription

let BUILD_FROM_SOURCE = false

/**
This is the `Package.swift` file that allows to build React Native core using Swift PM.
To build React Native, you need to follow these steps:
Expand All @@ -33,6 +36,8 @@ let RuntimeExecutorPath = "ReactCommon/runtimeexecutor" // header only target
let CallInvokerPath = "ReactCommon/callinvoker" // header only target
let ReactFBReactNativeSpecPath = "React/FBReactNativeSpec" // generated
let FBLazyVectorPath = "Libraries/FBLazyVector" // header only
let virtualViewPath = "ReactCommon/react/renderer/components/virtualview" // header only
let virtualViewExperimentalPath = "ReactCommon/react/renderer/components/virtualviewexperimental" // header only

// MARK: Prebuilt Dependencies declaration
let reactNativeDependencies = BinaryTarget(
Expand Down Expand Up @@ -391,6 +396,8 @@ let reactRuntimeApple = RNTarget(
dependencies: [.reactNativeDependencies, .jsi, .reactPerfLogger, .reactCxxReact, .rctDeprecation, .yoga, .reactRuntime, .reactRCTFabric, .reactCoreModules, .reactTurboModuleCore, .hermesPrebuilt, .reactUtils]
)

let publicHeadersPathForReactCore: String = BUILD_FROM_SOURCE ? "includes" : "."

/// React-Core.podspec
let reactCore = RNTarget(
name: .reactCore,
Expand All @@ -403,7 +410,8 @@ let reactCore = RNTarget(
linkedFrameworks: ["CoreServices"],
excludedPaths: ["Fabric", "Tests", "Resources", "Runtime/RCTJscInstanceFactory.mm", "I18n/strings", "CxxBridge/JSCExecutorFactory.mm", "CoreModules"],
dependencies: [.reactNativeDependencies, .reactCxxReact, .reactPerfLogger, .jsi, .reactJsiExecutor, .reactUtils, .reactFeatureFlags, .reactRuntimeScheduler, .yoga, .reactJsInspector, .reactJsiTooling, .rctDeprecation, .reactCoreRCTWebsocket, .reactRCTImage, .reactTurboModuleCore, .reactRCTText, .reactRCTBlob, .reactRCTAnimation, .reactRCTNetwork, .reactFabric, .hermesPrebuilt],
sources: [".", "Runtime/RCTHermesInstanceFactory.mm"]
sources: [".", "Runtime/RCTHermesInstanceFactory.mm"],
publicHeadersPath: publicHeadersPathForReactCore
)

/// React-Fabric.podspec
Expand Down Expand Up @@ -434,6 +442,7 @@ let reactFabric = RNTarget(
"components/modal",
"components/rncore",
"components/safeareaview",
"components/switch",
"components/text",
"components/textinput",
"components/textinput/platform/ios/",
Expand All @@ -446,37 +455,66 @@ let reactFabric = RNTarget(
sources: ["animations", "attributedstring", "core", "componentregistry", "componentregistry/native", "components/root", "components/view", "components/view/platform/cxx", "components/scrollview", "components/scrollview/platform/cxx", "components/legacyviewmanagerinterop", "dom", "scheduler", "mounting", "observers/events", "telemetry", "consistency", "leakchecker", "uimanager", "uimanager/consistency"]
)

/// React-RCTFabric.podspec
let reactRCTFabric = RNTarget(
name: .reactRCTFabric,
path: "React/Fabric",
dependencies: [.reactNativeDependencies, .reactCore, .reactRCTImage, .yoga, .reactRCTText, .jsi, .reactFabricComponents, .reactGraphics, .reactImageManager, .reactDebug, .reactUtils, .reactPerformanceTimeline, .reactRendererDebug, .reactRendererConsistency, .reactRuntimeScheduler, .reactRCTAnimation, .reactJsInspector, .reactJsInspectorNetwork, .reactJsInspectorTracing, .reactFabric, .reactFabricImage, .rctSwiftUIWrapper]
let reactFabricInputAccessory = RNTarget(
name: .reactFabricInputAccessory,
path: "ReactCommon/react/renderer/components/inputaccessory",
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging]
)

/// React-FabricComponents.podspec
let reactFabricComponents = RNTarget(
name: .reactFabricComponents,
path: "ReactCommon/react/renderer",
let reactFabricModal = RNTarget(
name: .reactFabricModal,
path: "ReactCommon/react/renderer/components/modal",
excludedPaths: [
"components/modal/platform/android",
"components/modal/platform/cxx",
"components/view/platform/android",
"components/view/platform/windows",
"components/view/platform/macos",
"components/switch/iosswitch/react/renderer/components/switch/MacOSSwitchShadowNode.mm",
"components/textinput/platform/android",
"components/text/platform/android",
"components/textinput/platform/macos",
"components/text/tests",
"textlayoutmanager/tests",
"textlayoutmanager/platform/android",
"textlayoutmanager/platform/cxx",
"textlayoutmanager/platform/windows",
"textlayoutmanager/platform/macos",
"conponents/rncore", // this was the old folder where RN Core Components were generated. If you ran codegen in the past, you might have some files in it that might make the build fail.
"platform/android",
"platform/cxx",
],
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging]
)

let reactFabricSwitch = RNTarget(
name: .reactFabricSwitch,
path: "ReactCommon/react/renderer/components/switch/iosswitch",
excludedPaths: ["react/renderer/components/switch/MacOSSwitchShadowNode.mm"],
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging]
)

let reactFabricSafeAreaView = RNTarget(
name: .reactFabricSafeAreaView,
path: "ReactCommon/react/renderer/components/safeareaview",
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging]
)

let reactFabricTextLayoutManager = RNTarget(
name: .reactFabricTextLayoutManager,
path: "ReactCommon/react/renderer/textlayoutmanager",
excludedPaths: [
"platform/android",
"platform/cxx",
"platform/windows",
"platform/macos",
"tests",
],
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging],
sources: ["components/inputaccessory", "components/modal", "components/safeareaview", "components/text", "components/text/platform/cxx", "components/textinput", "components/textinput/platform/ios/", "components/unimplementedview", "components/virtualview", "components/virtualviewexperimental", "textlayoutmanager", "textlayoutmanager/platform/ios", "components/switch/iosswitch"]
sources: [".", "platform/ios"]
)

let reactFabricText = RNTarget(
name: .reactFabricText,
path: "ReactCommon/react/renderer/components/text",
excludedPaths: [
"platform/android",
"tests",
],
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging, .reactFabricTextLayoutManager],
sources: [".", "platform/cxx"]
)

let reactFabricTextInput = RNTarget(
name: .reactFabricTextInput,
path: "ReactCommon/react/renderer/components/textinput",
excludedPaths: ["platform/android", "platform/macos"],
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging, .reactFabricTextLayoutManager],
sources: [".", "platform/ios"]
)

/// React-FabricImage.podspec
Expand All @@ -487,6 +525,20 @@ let reactFabricImage = RNTarget(
dependencies: [.reactNativeDependencies, .reactFabric, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactTurboModuleBridging, .reactImageManagerApple]
)

let reactFabricUnimplementedView = RNTarget(
name: .reactFabricUnimplementedView,
path: "ReactCommon/react/renderer/components/unimplementedview",
dependencies: [.reactNativeDependencies, .reactCore, .reactJsiExecutor, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .yoga, .reactRendererDebug, .reactGraphics, .reactFabric, .reactTurboModuleBridging]
)

/// React-RCTFabric.podspec
let reactRCTFabric = RNTarget(
name: .reactRCTFabric,
path: "React/Fabric",
searchPaths: [virtualViewPath, virtualViewExperimentalPath],
dependencies: [.reactNativeDependencies, .reactCore, .reactRCTImage, .yoga, .reactRCTText, .jsi, .reactFabricInputAccessory, .reactFabricModal, .reactFabricSafeAreaView, .reactFabricSwitch, .reactFabricText, .reactFabricTextInput, .reactFabricUnimplementedView, .reactFabricTextLayoutManager, .reactGraphics, .reactImageManager, .reactDebug, .reactUtils, .reactPerformanceTimeline, .reactRendererDebug, .reactRendererConsistency, .reactRuntimeScheduler, .reactRCTAnimation, .reactJsInspector, .reactJsInspectorNetwork, .reactJsInspectorTracing, .reactFabric, .reactFabricImage, .rctSwiftUIWrapper]
)

/// React-ImageManagerApple.podspec
let reactImageManagerApple = RNTarget(
name: .reactImageManagerApple,
Expand Down Expand Up @@ -593,8 +645,15 @@ let targets = [
rctSwiftUI,
rctSwiftUIWrapper,
reactRCTFabric,
reactFabricComponents,
reactFabricImage,
reactFabricInputAccessory,
reactFabricModal,
reactFabricSafeAreaView,
reactFabricSwitch,
reactFabricTextLayoutManager,
reactFabricText,
reactFabricTextInput,
reactFabricUnimplementedView,
reactNativeDependencies,
hermesPrebuilt,
reactJsiTooling,
Expand Down Expand Up @@ -762,12 +821,20 @@ extension String {
static let reactJsInspector = "React-jsinspector"
static let reactJsInspectorTracing = "React-jsinspectortracing"
static let reactCxxReact = "React-cxxreact"
static let reactCore = "React-Core"
static let reactCoreRCTWebsocket = "React-Core/RCTWebSocket"
static let reactCore = "React"
static let reactCoreRCTWebsocket = "React/RCTWebSocket"
static let reactFabric = "React-Fabric"
static let reactRCTFabric = "React-RCTFabric"
static let reactFabricComponents = "React-FabricComponents"

static let reactFabricImage = "React-FabricImage"
static let reactFabricInputAccessory = "React-FabricInputAccessory"
static let reactFabricModal = "React-FabricModal"
static let reactFabricSafeAreaView = "React-FabricSafeAreaView"
static let reactFabricSwitch = "React-FabricSwitch"
static let reactFabricTextLayoutManager = "React-FabricTextLayoutManager"
static let reactFabricText = "React-FabricText"
static let reactFabricTextInput = "React-FabricTextInput"
static let reactFabricUnimplementedView = "React-FabricUnimplementedView"

static let reactNativeDependencies = "ReactNativeDependencies"

Expand Down
Loading