66 * LICENSE file in the root directory of this source tree.
77 */
88
9+ import Foundation
910import PackageDescription
1011
12+ let BUILD_FROM_SOURCE = false
13+
1114/**
1215 This is the `Package.swift` file that allows to build React Native core using Swift PM.
1316 To build React Native, you need to follow these steps:
@@ -33,6 +36,8 @@ let RuntimeExecutorPath = "ReactCommon/runtimeexecutor" // header only target
3336let CallInvokerPath = " ReactCommon/callinvoker " // header only target
3437let ReactFBReactNativeSpecPath = " React/FBReactNativeSpec " // generated
3538let FBLazyVectorPath = " Libraries/FBLazyVector " // header only
39+ let virtualViewPath = " ReactCommon/react/renderer/components/virtualview " // header only
40+ let virtualViewExperimentalPath = " ReactCommon/react/renderer/components/virtualviewexperimental " // header only
3641
3742// MARK: Prebuilt Dependencies declaration
3843let reactNativeDependencies = BinaryTarget (
@@ -391,6 +396,8 @@ let reactRuntimeApple = RNTarget(
391396 dependencies: [ . reactNativeDependencies, . jsi, . reactPerfLogger, . reactCxxReact, . rctDeprecation, . yoga, . reactRuntime, . reactRCTFabric, . reactCoreModules, . reactTurboModuleCore, . hermesPrebuilt, . reactUtils]
392397)
393398
399+ let publicHeadersPathForReactCore : String = BUILD_FROM_SOURCE ? " includes " : " . "
400+
394401/// React-Core.podspec
395402let reactCore = RNTarget (
396403 name: . reactCore,
@@ -403,7 +410,8 @@ let reactCore = RNTarget(
403410 linkedFrameworks: [ " CoreServices " ] ,
404411 excludedPaths: [ " Fabric " , " Tests " , " Resources " , " Runtime/RCTJscInstanceFactory.mm " , " I18n/strings " , " CxxBridge/JSCExecutorFactory.mm " , " CoreModules " ] ,
405412 dependencies: [ . reactNativeDependencies, . reactCxxReact, . reactPerfLogger, . jsi, . reactJsiExecutor, . reactUtils, . reactFeatureFlags, . reactRuntimeScheduler, . yoga, . reactJsInspector, . reactJsiTooling, . rctDeprecation, . reactCoreRCTWebsocket, . reactRCTImage, . reactTurboModuleCore, . reactRCTText, . reactRCTBlob, . reactRCTAnimation, . reactRCTNetwork, . reactFabric, . hermesPrebuilt] ,
406- sources: [ " . " , " Runtime/RCTHermesInstanceFactory.mm " ]
413+ sources: [ " . " , " Runtime/RCTHermesInstanceFactory.mm " ] ,
414+ publicHeadersPath: publicHeadersPathForReactCore
407415)
408416
409417/// React-Fabric.podspec
@@ -434,6 +442,7 @@ let reactFabric = RNTarget(
434442 " components/modal " ,
435443 " components/rncore " ,
436444 " components/safeareaview " ,
445+ " components/switch " ,
437446 " components/text " ,
438447 " components/textinput " ,
439448 " components/textinput/platform/ios/ " ,
@@ -446,37 +455,66 @@ let reactFabric = RNTarget(
446455 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 " ]
447456)
448457
449- /// React-RCTFabric.podspec
450- let reactRCTFabric = RNTarget (
451- name: . reactRCTFabric,
452- path: " React/Fabric " ,
453- dependencies: [ . reactNativeDependencies, . reactCore, . reactRCTImage, . yoga, . reactRCTText, . jsi, . reactFabricComponents, . reactGraphics, . reactImageManager, . reactDebug, . reactUtils, . reactPerformanceTimeline, . reactRendererDebug, . reactRendererConsistency, . reactRuntimeScheduler, . reactRCTAnimation, . reactJsInspector, . reactJsInspectorNetwork, . reactJsInspectorTracing, . reactFabric, . reactFabricImage, . rctSwiftUIWrapper]
458+ let reactFabricInputAccessory = RNTarget (
459+ name: . reactFabricInputAccessory,
460+ path: " ReactCommon/react/renderer/components/inputaccessory " ,
461+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging]
454462)
455463
456- /// React-FabricComponents.podspec
457- let reactFabricComponents = RNTarget (
458- name: . reactFabricComponents,
459- path: " ReactCommon/react/renderer " ,
464+ let reactFabricModal = RNTarget (
465+ name: . reactFabricModal,
466+ path: " ReactCommon/react/renderer/components/modal " ,
460467 excludedPaths: [
461- " components/modal/platform/android " ,
462- " components/modal/platform/cxx " ,
463- " components/view/platform/android " ,
464- " components/view/platform/windows " ,
465- " components/view/platform/macos " ,
466- " components/switch/iosswitch/react/renderer/components/switch/MacOSSwitchShadowNode.mm " ,
467- " components/textinput/platform/android " ,
468- " components/text/platform/android " ,
469- " components/textinput/platform/macos " ,
470- " components/text/tests " ,
471- " textlayoutmanager/tests " ,
472- " textlayoutmanager/platform/android " ,
473- " textlayoutmanager/platform/cxx " ,
474- " textlayoutmanager/platform/windows " ,
475- " textlayoutmanager/platform/macos " ,
476- " 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.
468+ " platform/android " ,
469+ " platform/cxx " ,
470+ ] ,
471+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging]
472+ )
473+
474+ let reactFabricSwitch = RNTarget (
475+ name: . reactFabricSwitch,
476+ path: " ReactCommon/react/renderer/components/switch/iosswitch " ,
477+ excludedPaths: [ " react/renderer/components/switch/MacOSSwitchShadowNode.mm " ] ,
478+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging]
479+ )
480+
481+ let reactFabricSafeAreaView = RNTarget (
482+ name: . reactFabricSafeAreaView,
483+ path: " ReactCommon/react/renderer/components/safeareaview " ,
484+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging]
485+ )
486+
487+ let reactFabricTextLayoutManager = RNTarget (
488+ name: . reactFabricTextLayoutManager,
489+ path: " ReactCommon/react/renderer/textlayoutmanager " ,
490+ excludedPaths: [
491+ " platform/android " ,
492+ " platform/cxx " ,
493+ " platform/windows " ,
494+ " platform/macos " ,
495+ " tests " ,
477496 ] ,
478497 dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging] ,
479- 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 " ]
498+ sources: [ " . " , " platform/ios " ]
499+ )
500+
501+ let reactFabricText = RNTarget (
502+ name: . reactFabricText,
503+ path: " ReactCommon/react/renderer/components/text " ,
504+ excludedPaths: [
505+ " platform/android " ,
506+ " tests " ,
507+ ] ,
508+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging, . reactFabricTextLayoutManager] ,
509+ sources: [ " . " , " platform/cxx " ]
510+ )
511+
512+ let reactFabricTextInput = RNTarget (
513+ name: . reactFabricTextInput,
514+ path: " ReactCommon/react/renderer/components/textinput " ,
515+ excludedPaths: [ " platform/android " , " platform/macos " ] ,
516+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging, . reactFabricTextLayoutManager] ,
517+ sources: [ " . " , " platform/ios " ]
480518)
481519
482520/// React-FabricImage.podspec
@@ -487,6 +525,20 @@ let reactFabricImage = RNTarget(
487525 dependencies: [ . reactNativeDependencies, . reactFabric, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactTurboModuleBridging, . reactImageManagerApple]
488526)
489527
528+ let reactFabricUnimplementedView = RNTarget (
529+ name: . reactFabricUnimplementedView,
530+ path: " ReactCommon/react/renderer/components/unimplementedview " ,
531+ dependencies: [ . reactNativeDependencies, . reactCore, . reactJsiExecutor, . reactTurboModuleCore, . jsi, . logger, . reactDebug, . reactFeatureFlags, . reactUtils, . reactRuntimeScheduler, . reactCxxReact, . yoga, . reactRendererDebug, . reactGraphics, . reactFabric, . reactTurboModuleBridging]
532+ )
533+
534+ /// React-RCTFabric.podspec
535+ let reactRCTFabric = RNTarget (
536+ name: . reactRCTFabric,
537+ path: " React/Fabric " ,
538+ searchPaths: [ virtualViewPath, virtualViewExperimentalPath] ,
539+ 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]
540+ )
541+
490542/// React-ImageManagerApple.podspec
491543let reactImageManagerApple = RNTarget (
492544 name: . reactImageManagerApple,
@@ -593,8 +645,15 @@ let targets = [
593645 rctSwiftUI,
594646 rctSwiftUIWrapper,
595647 reactRCTFabric,
596- reactFabricComponents,
597648 reactFabricImage,
649+ reactFabricInputAccessory,
650+ reactFabricModal,
651+ reactFabricSafeAreaView,
652+ reactFabricSwitch,
653+ reactFabricTextLayoutManager,
654+ reactFabricText,
655+ reactFabricTextInput,
656+ reactFabricUnimplementedView,
598657 reactNativeDependencies,
599658 hermesPrebuilt,
600659 reactJsiTooling,
@@ -762,12 +821,20 @@ extension String {
762821 static let reactJsInspector = " React-jsinspector "
763822 static let reactJsInspectorTracing = " React-jsinspectortracing "
764823 static let reactCxxReact = " React-cxxreact "
765- static let reactCore = " React-Core "
766- static let reactCoreRCTWebsocket = " React-Core /RCTWebSocket "
824+ static let reactCore = " React "
825+ static let reactCoreRCTWebsocket = " React/RCTWebSocket "
767826 static let reactFabric = " React-Fabric "
768827 static let reactRCTFabric = " React-RCTFabric "
769- static let reactFabricComponents = " React-FabricComponents "
828+
770829 static let reactFabricImage = " React-FabricImage "
830+ static let reactFabricInputAccessory = " React-FabricInputAccessory "
831+ static let reactFabricModal = " React-FabricModal "
832+ static let reactFabricSafeAreaView = " React-FabricSafeAreaView "
833+ static let reactFabricSwitch = " React-FabricSwitch "
834+ static let reactFabricTextLayoutManager = " React-FabricTextLayoutManager "
835+ static let reactFabricText = " React-FabricText "
836+ static let reactFabricTextInput = " React-FabricTextInput "
837+ static let reactFabricUnimplementedView = " React-FabricUnimplementedView "
771838
772839 static let reactNativeDependencies = " ReactNativeDependencies "
773840
0 commit comments