@rnpack/utils 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/__mocks__/jestSetupFile.js +0 -0
  2. package/__mocks__/rnpack-utils-mock.js +17 -0
  3. package/example/node_modules/react-native/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +34 -0
  4. package/example/node_modules/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec +88 -0
  5. package/example/node_modules/react-native/Libraries/Blob/React-RCTBlob.podspec +59 -0
  6. package/example/node_modules/react-native/Libraries/FBLazyVector/FBLazyVector.podspec +31 -0
  7. package/example/node_modules/react-native/Libraries/Image/React-RCTImage.podspec +57 -0
  8. package/example/node_modules/react-native/Libraries/LinkingIOS/React-RCTLinking.podspec +51 -0
  9. package/example/node_modules/react-native/Libraries/NativeAnimation/React-RCTAnimation.podspec +54 -0
  10. package/example/node_modules/react-native/Libraries/Network/React-RCTNetwork.podspec +56 -0
  11. package/example/node_modules/react-native/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +53 -0
  12. package/example/node_modules/react-native/Libraries/Required/RCTRequired.podspec +30 -0
  13. package/example/node_modules/react-native/Libraries/Settings/React-RCTSettings.podspec +53 -0
  14. package/example/node_modules/react-native/Libraries/Text/React-RCTText.podspec +37 -0
  15. package/example/node_modules/react-native/Libraries/TypeSafety/RCTTypeSafety.podspec +39 -0
  16. package/example/node_modules/react-native/Libraries/Vibration/React-RCTVibration.podspec +53 -0
  17. package/example/node_modules/react-native/React/CoreModules/React-CoreModules.podspec +67 -0
  18. package/example/node_modules/react-native/React/React-RCTFBReactNativeSpec.podspec +95 -0
  19. package/example/node_modules/react-native/React/React-RCTFabric.podspec +107 -0
  20. package/example/node_modules/react-native/React/Runtime/React-RCTRuntime.podspec +70 -0
  21. package/example/node_modules/react-native/React-Core-prebuilt.podspec +78 -0
  22. package/example/node_modules/react-native/React-Core.podspec +137 -0
  23. package/example/node_modules/react-native/React.podspec +56 -0
  24. package/example/node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation/RCTDeprecation.podspec +25 -0
  25. package/example/node_modules/react-native/ReactCommon/React-Fabric.podspec +207 -0
  26. package/example/node_modules/react-native/ReactCommon/React-FabricComponents.podspec +170 -0
  27. package/example/node_modules/react-native/ReactCommon/React-FabricImage.podspec +79 -0
  28. package/example/node_modules/react-native/ReactCommon/React-Mapbuffer.podspec +40 -0
  29. package/example/node_modules/react-native/ReactCommon/ReactCommon.podspec +72 -0
  30. package/example/node_modules/react-native/ReactCommon/callinvoker/React-callinvoker.podspec +30 -0
  31. package/example/node_modules/react-native/ReactCommon/cxxreact/React-cxxreact.podspec +56 -0
  32. package/example/node_modules/react-native/ReactCommon/hermes/React-hermes.podspec +52 -0
  33. package/example/node_modules/react-native/ReactCommon/hermes/executor/React-jsitracing.podspec +38 -0
  34. package/example/node_modules/react-native/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +52 -0
  35. package/example/node_modules/react-native/ReactCommon/jsi/React-jsi.podspec +50 -0
  36. package/example/node_modules/react-native/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +45 -0
  37. package/example/node_modules/react-native/ReactCommon/jsinspector-modern/React-jsinspector.podspec +63 -0
  38. package/example/node_modules/react-native/ReactCommon/jsinspector-modern/cdp/React-jsinspectorcdp.podspec +48 -0
  39. package/example/node_modules/react-native/ReactCommon/jsinspector-modern/network/React-jsinspectornetwork.podspec +53 -0
  40. package/example/node_modules/react-native/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +51 -0
  41. package/example/node_modules/react-native/ReactCommon/jsitooling/React-jsitooling.podspec +47 -0
  42. package/example/node_modules/react-native/ReactCommon/logger/React-logger.podspec +34 -0
  43. package/example/node_modules/react-native/ReactCommon/oscompat/React-oscompat.podspec +31 -0
  44. package/example/node_modules/react-native/ReactCommon/react/debug/React-debug.podspec +34 -0
  45. package/example/node_modules/react-native/ReactCommon/react/featureflags/React-featureflags.podspec +44 -0
  46. package/example/node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +54 -0
  47. package/example/node_modules/react-native/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +54 -0
  48. package/example/node_modules/react-native/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +60 -0
  49. package/example/node_modules/react-native/ReactCommon/react/nativemodule/featureflags/React-featureflagsnativemodule.podspec +53 -0
  50. package/example/node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +55 -0
  51. package/example/node_modules/react-native/ReactCommon/react/nativemodule/microtasks/React-microtasksnativemodule.podspec +52 -0
  52. package/example/node_modules/react-native/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +63 -0
  53. package/example/node_modules/react-native/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +50 -0
  54. package/example/node_modules/react-native/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec +43 -0
  55. package/example/node_modules/react-native/ReactCommon/react/renderer/css/React-renderercss.podspec +47 -0
  56. package/example/node_modules/react-native/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +48 -0
  57. package/example/node_modules/react-native/ReactCommon/react/renderer/graphics/React-graphics.podspec +55 -0
  58. package/example/node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +56 -0
  59. package/example/node_modules/react-native/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +59 -0
  60. package/example/node_modules/react-native/ReactCommon/react/runtime/React-RuntimeCore.podspec +56 -0
  61. package/example/node_modules/react-native/ReactCommon/react/runtime/React-RuntimeHermes.podspec +53 -0
  62. package/example/node_modules/react-native/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +72 -0
  63. package/example/node_modules/react-native/ReactCommon/react/timing/React-timing.podspec +43 -0
  64. package/example/node_modules/react-native/ReactCommon/react/utils/React-utils.podspec +55 -0
  65. package/example/node_modules/react-native/ReactCommon/reactperflogger/React-perflogger.podspec +42 -0
  66. package/example/node_modules/react-native/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +56 -0
  67. package/example/node_modules/react-native/ReactCommon/yoga/Yoga.podspec +66 -0
  68. package/example/node_modules/react-native/react-native.config.js +139 -0
  69. package/example/node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec +165 -0
  70. package/example/node_modules/react-native/third-party-podspecs/DoubleConversion.podspec +34 -0
  71. package/example/node_modules/react-native/third-party-podspecs/RCT-Folly.podspec +132 -0
  72. package/example/node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec +99 -0
  73. package/example/node_modules/react-native/third-party-podspecs/boost.podspec +34 -0
  74. package/example/node_modules/react-native/third-party-podspecs/fast_float.podspec +29 -0
  75. package/example/node_modules/react-native/third-party-podspecs/fmt.podspec +29 -0
  76. package/example/node_modules/react-native/third-party-podspecs/glog.podspec +47 -0
  77. package/example/node_modules/react-native-nitro-modules/NitroModules.podspec +90 -0
  78. package/example/node_modules/react-native-nitro-modules/react-native.config.js +16 -0
  79. package/example/react-native.config.js +21 -0
  80. package/lib/typescript/__tests__/utils/string.test.d.ts +2 -0
  81. package/lib/typescript/__tests__/utils/string.test.d.ts.map +1 -0
  82. package/package.json +5 -3
@@ -0,0 +1,66 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ package = JSON.parse(File.read(File.expand_path('../../package.json', __dir__)))
7
+ version = package['version']
8
+
9
+ source = { :git => ENV['INSTALL_YOGA_FROM_LOCATION'] || 'https://github.com/facebook/react-native.git' }
10
+ if version == '1000.0.0'
11
+ # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
12
+ source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
13
+ else
14
+ source[:tag] = "v#{version}"
15
+ end
16
+
17
+ Pod::Spec.new do |spec|
18
+ spec.name = 'Yoga'
19
+ spec.version = '0.0.0'
20
+ spec.license = { :type => 'MIT' }
21
+ spec.homepage = 'https://yogalayout.dev'
22
+ spec.documentation_url = 'https://yogalayout.dev/docs/'
23
+
24
+ spec.summary = 'Yoga is a cross-platform layout engine which implements Flexbox.'
25
+ spec.description = 'Yoga is a cross-platform layout engine enabling maximum collaboration within your team by implementing an API many designers are familiar with, and opening it up to developers across different platforms.'
26
+
27
+ spec.authors = 'Facebook'
28
+ spec.source = source
29
+
30
+ spec.module_name = 'yoga'
31
+ spec.header_dir = 'yoga'
32
+ spec.requires_arc = false
33
+ spec.pod_target_xcconfig = {
34
+ 'DEFINES_MODULE' => 'YES'
35
+ }.merge!(ENV['USE_FRAMEWORKS'] != nil ? {
36
+ 'HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)"'
37
+ } : {})
38
+ spec.compiler_flags = [
39
+ '-fno-omit-frame-pointer',
40
+ '-fexceptions',
41
+ '-Wall',
42
+ '-Werror',
43
+ '-std=c++20',
44
+ '-fPIC'
45
+ ]
46
+
47
+ # Pinning to the same version as React.podspec.
48
+ spec.platforms = min_supported_versions
49
+
50
+ # Set this environment variable when *not* using the `:path` option to install the pod.
51
+ # E.g. when publishing this spec to a spec repo.
52
+ source_files = 'yoga/**/*.{cpp,h}'
53
+ source_files = File.join('ReactCommon/yoga', source_files) if ENV['INSTALL_YOGA_WITHOUT_PATH_OPTION']
54
+ spec.source_files = podspec_sources(source_files, "yoga/**/*.h")
55
+ spec.header_mappings_dir = 'yoga'
56
+
57
+ public_header_files = 'yoga/*.h'
58
+ public_header_files = File.join('ReactCommon/yoga', public_header_files) if ENV['INSTALL_YOGA_WITHOUT_PATH_OPTION']
59
+ spec.public_header_files = public_header_files
60
+
61
+ # Fabric must be able to access private headers (which should not be included in the umbrella header)
62
+ all_header_files = 'yoga/**/*.h'
63
+ all_header_files = File.join('ReactCommon/yoga', all_header_files) if ENV['INSTALL_YOGA_WITHOUT_PATH_OPTION']
64
+ spec.private_header_files = Dir.glob(all_header_files) - Dir.glob(public_header_files)
65
+ spec.preserve_paths = [all_header_files]
66
+ end
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ /*::
14
+ import type {Command} from '@react-native-community/cli-types';
15
+ */
16
+
17
+ // React Native shouldn't be exporting itself like this, the Community Template should be be directly
18
+ // depending on and injecting:
19
+ // - @react-native-community/cli-platform-android
20
+ // - @react-native-community/cli-platform-ios
21
+ // - @react-native/community-cli-plugin (via the @react-native/core-cli-utils package)
22
+ // - codegen command should be inhoused into @react-native-community/cli
23
+ //
24
+ // This is a temporary workaround.
25
+
26
+ const verbose = Boolean(process.env.DEBUG?.includes('react-native'));
27
+
28
+ function findCommunityPlatformPackage(
29
+ spec /*: string */,
30
+ startDir /*: string */ = process.cwd(),
31
+ ) {
32
+ // In monorepos, we cannot make any assumptions on where
33
+ // `@react-native-community/*` gets installed. The safest way to find it
34
+ // (barring adding an optional peer dependency) is to start from the project
35
+ // root.
36
+ //
37
+ // Note that we're assuming that the current working directory is the project
38
+ // root. This is also what `@react-native-community/cli` assumes (see
39
+ // https://github.com/react-native-community/cli/blob/14.x/packages/cli-tools/src/findProjectRoot.ts).
40
+ const main = require.resolve(spec, {paths: [startDir]});
41
+ // $FlowIgnore[unsupported-syntax]
42
+ return require(main);
43
+ }
44
+
45
+ let android;
46
+ try {
47
+ android = findCommunityPlatformPackage(
48
+ '@react-native-community/cli-platform-android',
49
+ );
50
+ } catch {
51
+ if (verbose) {
52
+ console.warn(
53
+ '@react-native-community/cli-platform-android not found, the react-native.config.js may be unusable.',
54
+ );
55
+ }
56
+ }
57
+
58
+ let ios;
59
+ try {
60
+ ios = findCommunityPlatformPackage(
61
+ '@react-native-community/cli-platform-ios',
62
+ );
63
+ } catch {
64
+ if (verbose) {
65
+ console.warn(
66
+ '@react-native-community/cli-platform-ios not found, the react-native.config.js may be unusable.',
67
+ );
68
+ }
69
+ }
70
+
71
+ const commands /*: Array<Command> */ = [];
72
+
73
+ const {
74
+ bundleCommand,
75
+ startCommand,
76
+ } = require('@react-native/community-cli-plugin');
77
+
78
+ commands.push(bundleCommand, startCommand);
79
+
80
+ const codegenCommand /*: Command */ = {
81
+ name: 'codegen',
82
+ options: [
83
+ {
84
+ name: '--path <path>',
85
+ description: 'Path to the React Native project root.',
86
+ default: process.cwd(),
87
+ },
88
+ {
89
+ name: '--platform <string>',
90
+ description:
91
+ 'Target platform. Supported values: "android", "ios", "all".',
92
+ default: 'all',
93
+ },
94
+ {
95
+ name: '--outputPath <path>',
96
+ description: 'Path where generated artifacts will be output to.',
97
+ },
98
+ {
99
+ name: '--source <string>',
100
+ description: 'Whether the script is invoked from an `app` or a `library`',
101
+ default: 'app',
102
+ },
103
+ ],
104
+ func: (argv, config, args) =>
105
+ require('./scripts/codegen/generate-artifacts-executor').execute(
106
+ args.path,
107
+ args.platform,
108
+ args.outputPath,
109
+ args.source,
110
+ ),
111
+ };
112
+
113
+ commands.push(codegenCommand);
114
+
115
+ const config = {
116
+ commands,
117
+ platforms: {} /*:: as {[string]: $ReadOnly<{
118
+ projectConfig: mixed,
119
+ dependencyConfig: mixed,
120
+ }>} */,
121
+ };
122
+
123
+ if (ios != null) {
124
+ config.commands.push(...ios.commands);
125
+ config.platforms.ios = {
126
+ projectConfig: ios.projectConfig,
127
+ dependencyConfig: ios.dependencyConfig,
128
+ };
129
+ }
130
+
131
+ if (android != null) {
132
+ config.commands.push(...android.commands);
133
+ config.platforms.android = {
134
+ projectConfig: android.projectConfig,
135
+ dependencyConfig: android.dependencyConfig,
136
+ };
137
+ }
138
+
139
+ module.exports = config;
@@ -0,0 +1,165 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ require "json"
7
+ require_relative "./hermes-utils.rb"
8
+
9
+ begin
10
+ react_native_path = File.dirname(Pod::Executable.execute_command('node', ['-p',
11
+ 'require.resolve(
12
+ "react-native",
13
+ {paths: [process.argv[1]]},
14
+ )', __dir__]).strip
15
+ )
16
+ rescue => e
17
+ # Fallback to the parent directory if the above command fails (e.g when building locally in OOT Platform)
18
+ react_native_path = File.join(__dir__, "..", "..")
19
+ end
20
+
21
+ # package.json
22
+ package = JSON.parse(File.read(File.join(react_native_path, "package.json")))
23
+ version = package['version']
24
+
25
+ source_type = hermes_source_type(version, react_native_path)
26
+ source = podspec_source(source_type, version, react_native_path)
27
+
28
+ Pod::Spec.new do |spec|
29
+ spec.name = "hermes-engine"
30
+ spec.version = version
31
+ spec.summary = "Hermes is a small and lightweight JavaScript engine optimized for running React Native."
32
+ spec.description = "Hermes is a JavaScript engine optimized for fast start-up of React Native apps. It features ahead-of-time static optimization and compact bytecode."
33
+ spec.homepage = "https://hermesengine.dev"
34
+ spec.license = package['license']
35
+ spec.author = "Facebook"
36
+ spec.source = source
37
+ spec.platforms = { :osx => "10.13", :ios => "15.1", :visionos => "1.0", :tvos => "15.1" }
38
+
39
+ spec.preserve_paths = '**/*.*'
40
+ spec.source_files = ''
41
+
42
+ spec.pod_target_xcconfig = {
43
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
44
+ "CLANG_CXX_LIBRARY" => "compiler-default",
45
+ "GCC_WARN_INHIBIT_ALL_WARNINGS" => "YES" # Disable warnings because we don't control this library
46
+ }
47
+
48
+ spec.ios.vendored_frameworks = "destroot/Library/Frameworks/ios/hermes.framework"
49
+ spec.tvos.vendored_frameworks = "destroot/Library/Frameworks/tvos/hermes.framework"
50
+ spec.osx.vendored_frameworks = "destroot/Library/Frameworks/macosx/hermes.framework"
51
+ spec.visionos.vendored_frameworks = "destroot/Library/Frameworks/xros/hermes.framework"
52
+
53
+ if HermesEngineSourceType::isPrebuilt(source_type) then
54
+
55
+ spec.subspec 'Pre-built' do |ss|
56
+ ss.preserve_paths = ["destroot/bin/*"].concat(["**/*.{h,c,cpp}"])
57
+ ss.source_files = "destroot/include/hermes/**/*.h"
58
+ ss.header_mappings_dir = "destroot/include"
59
+ ss.ios.vendored_frameworks = "destroot/Library/Frameworks/universal/hermes.xcframework"
60
+ ss.visionos.vendored_frameworks = "destroot/Library/Frameworks/universal/hermes.xcframework"
61
+ ss.tvos.vendored_frameworks = "destroot/Library/Frameworks/universal/hermes.xcframework"
62
+ ss.osx.vendored_frameworks = "destroot/Library/Frameworks/macosx/hermes.framework"
63
+ end
64
+
65
+
66
+ # Right now, even reinstalling pods with the PRODUCTION flag turned on, does not change the version of hermes that is downloaded
67
+ # To remove the PRODUCTION flag, we want to download the right version of hermes on the flight
68
+ # we do so in a pre-build script we invoke from the Xcode build pipeline
69
+ # We use this only for Apps created using the template. RNTester and Nightlies should not be used to build for Release.
70
+ # We ignore this if we provide a specific tarball: the assumption here is that if you are providing a tarball, is because you want to
71
+ # test something specific for that tarball.
72
+ if source_type == HermesEngineSourceType::DOWNLOAD_PREBUILD_RELEASE_TARBALL
73
+ spec.script_phase = {
74
+ :name => "[Hermes] Replace Hermes for the right configuration, if needed",
75
+ :execution_position => :before_compile,
76
+ :script => <<-EOS
77
+ . "$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh"
78
+
79
+ CONFIG="Release"
80
+ if echo $GCC_PREPROCESSOR_DEFINITIONS | grep -q "DEBUG=1"; then
81
+ CONFIG="Debug"
82
+ fi
83
+
84
+ "$NODE_BINARY" "$REACT_NATIVE_PATH/sdks/hermes-engine/utils/replace_hermes_version.js" -c "$CONFIG" -r "#{version}" -p "$PODS_ROOT"
85
+ EOS
86
+ }
87
+ end
88
+
89
+ elsif HermesEngineSourceType::isFromSource(source_type) then
90
+
91
+ spec.subspec 'Hermes' do |ss|
92
+ ss.source_files = ''
93
+ ss.public_header_files = 'API/hermes/*.h'
94
+ ss.header_dir = 'hermes'
95
+ end
96
+
97
+ spec.subspec 'cdp' do |ss|
98
+ ss.source_files = ''
99
+ ss.public_header_files = 'API/hermes/cdp/*.h'
100
+ ss.header_dir = 'hermes/cdp'
101
+ end
102
+
103
+ spec.subspec 'inspector' do |ss|
104
+ ss.source_files = ''
105
+ ss.public_header_files = 'API/hermes/inspector/*.h'
106
+ ss.header_dir = 'hermes/inspector'
107
+ end
108
+
109
+ spec.subspec 'inspector_chrome' do |ss|
110
+ ss.source_files = ''
111
+ ss.public_header_files = 'API/hermes/inspector/chrome/*.h'
112
+ ss.header_dir = 'hermes/inspector/chrome'
113
+ end
114
+
115
+ spec.subspec 'Public' do |ss|
116
+ ss.source_files = ''
117
+ ss.public_header_files = 'public/hermes/Public/*.h'
118
+ ss.header_dir = 'hermes/Public'
119
+ end
120
+
121
+ hermesc_path = "${PODS_ROOT}/hermes-engine/build_host_hermesc"
122
+
123
+ if ENV.has_key?('HERMES_OVERRIDE_HERMESC_PATH') && File.exist?(ENV['HERMES_OVERRIDE_HERMESC_PATH']) then
124
+ hermesc_path = ENV['HERMES_OVERRIDE_HERMESC_PATH']
125
+ end
126
+
127
+ spec.user_target_xcconfig = {
128
+ 'HERMES_CLI_PATH' => "#{hermesc_path}/bin/hermesc"
129
+ }
130
+
131
+ spec.prepare_command = ". '#{react_native_path}/sdks/hermes-engine/utils/create-dummy-hermes-xcframework.sh'"
132
+
133
+ # This podspec is also run in CI to build Hermes without using Pod install
134
+ # and sometimes CI fails because `Pod::Executable` does not exist if it is not run with Pod Install.
135
+ if defined?(Pod::Executable.to_s)
136
+ CMAKE_BINARY = Pod::Executable::which!('cmake')
137
+ # NOTE: Script phases are sorted alphabetically inside Xcode project
138
+ spec.script_phases = [
139
+ {
140
+ :name => '[RN] [1] Build Hermesc',
141
+ :output_files => [
142
+ "#{hermesc_path}/ImportHermesc.cmake"
143
+ ],
144
+ :script => <<-EOS
145
+ . "${REACT_NATIVE_PATH}/scripts/xcode/with-environment.sh"
146
+ export CMAKE_BINARY=${CMAKE_BINARY:-#{CMAKE_BINARY}}
147
+ . ${REACT_NATIVE_PATH}/sdks/hermes-engine/utils/build-hermesc-xcode.sh #{hermesc_path} ${REACT_NATIVE_PATH}/ReactCommon/jsi
148
+ EOS
149
+ },
150
+ {
151
+ :name => '[RN] [2] Build Hermes',
152
+ :input_files => ["#{hermesc_path}/ImportHermesc.cmake"],
153
+ :output_files => [
154
+ "${PODS_ROOT}/hermes-engine/build/iphonesimulator/API/hermes/hermes.framework/hermes"
155
+ ],
156
+ :script => <<-EOS
157
+ . "${REACT_NATIVE_PATH}/scripts/xcode/with-environment.sh"
158
+ export CMAKE_BINARY=${CMAKE_BINARY:-#{CMAKE_BINARY}}
159
+ . ${REACT_NATIVE_PATH}/sdks/hermes-engine/utils/build-hermes-xcode.sh #{version} #{hermesc_path}/ImportHermesc.cmake ${REACT_NATIVE_PATH}/ReactCommon/jsi
160
+ EOS
161
+ }
162
+ ]
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,34 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ double_conversion_config = get_double_conversion_config()
7
+ double_conversion_git_url = double_conversion_config[:git]
8
+
9
+ Pod::Spec.new do |spec|
10
+ spec.name = 'DoubleConversion'
11
+ spec.version = '1.1.6'
12
+ spec.license = { :type => 'MIT' }
13
+ spec.homepage = 'https://github.com/google/double-conversion'
14
+ spec.summary = 'Efficient binary-decimal and decimal-binary conversion routines for IEEE doubles'
15
+ spec.authors = 'Google'
16
+ spec.prepare_command = 'mv src double-conversion'
17
+ spec.source = { :git => double_conversion_git_url,
18
+ :tag => "v#{spec.version}" }
19
+ spec.module_name = 'DoubleConversion'
20
+ spec.header_dir = 'double-conversion'
21
+ spec.source_files = 'double-conversion/*.{h,cc}'
22
+ spec.compiler_flags = '-Wno-unreachable-code'
23
+
24
+ spec.user_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/DoubleConversion\"" }
25
+
26
+ spec.pod_target_xcconfig = {
27
+ "DEFINES_MODULE" => "YES",
28
+ "GCC_WARN_INHIBIT_ALL_WARNINGS" => "YES" # Disable warnings because we don't control this library
29
+ }
30
+
31
+ # Pinning to the same version as React.podspec.
32
+ spec.platforms = min_supported_versions
33
+
34
+ end
@@ -0,0 +1,132 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ folly_config = get_folly_config()
7
+ folly_config_file = folly_config[:config_file]
8
+ folly_release_version = folly_config[:version]
9
+ folly_git_url = folly_config[:git]
10
+
11
+ Pod::Spec.new do |spec|
12
+ spec.name = 'RCT-Folly'
13
+ # Patched to v2 to address https://github.com/react-native-community/releases/issues/251
14
+ spec.version = folly_release_version
15
+ spec.license = { :type => 'Apache License, Version 2.0' }
16
+ spec.homepage = 'https://github.com/facebook/folly'
17
+ spec.summary = 'An open-source C++ library developed and used at Facebook.'
18
+ spec.authors = 'Facebook'
19
+ spec.source = { :git => folly_git_url,
20
+ :tag => "v#{folly_release_version}" }
21
+ spec.module_name = 'folly'
22
+ spec.prepare_command = "echo '#{folly_config_file.join("\n")}' > folly/folly-config.h"
23
+ spec.header_mappings_dir = '.'
24
+ spec.dependency "boost"
25
+ spec.dependency "DoubleConversion"
26
+ spec.dependency "glog"
27
+ spec.dependency "fast_float", "8.0.0"
28
+ spec.dependency "fmt", "11.0.2"
29
+ spec.compiler_flags = '-Wno-documentation -faligned-new'
30
+ spec.source_files = 'folly/String.cpp',
31
+ 'folly/Conv.cpp',
32
+ 'folly/Demangle.cpp',
33
+ 'folly/FileUtil.cpp',
34
+ 'folly/Format.cpp',
35
+ 'folly/lang/SafeAssert.cpp',
36
+ 'folly/lang/ToAscii.cpp',
37
+ 'folly/ScopeGuard.cpp',
38
+ 'folly/Unicode.cpp',
39
+ 'folly/json/dynamic.cpp',
40
+ 'folly/json/json.cpp',
41
+ 'folly/json/json_pointer.cpp',
42
+ 'folly/container/detail/F14Table.cpp',
43
+ 'folly/detail/Demangle.cpp',
44
+ 'folly/detail/FileUtilDetail.cpp',
45
+ 'folly/detail/SplitStringSimd.cpp',
46
+ 'folly/detail/StaticSingletonManager.cpp',
47
+ 'folly/detail/UniqueInstance.cpp',
48
+ 'folly/hash/SpookyHashV2.cpp',
49
+ 'folly/lang/CString.cpp',
50
+ 'folly/lang/Exception.cpp',
51
+ 'folly/memory/ReentrantAllocator.cpp',
52
+ 'folly/memory/detail/MallocImpl.cpp',
53
+ 'folly/net/NetOps.cpp',
54
+ 'folly/portability/SysUio.cpp',
55
+ 'folly/synchronization/SanitizeThread.cpp',
56
+ 'folly/system/AtFork.cpp',
57
+ 'folly/system/ThreadId.cpp',
58
+ 'folly/*.h',
59
+ 'folly/algorithm/simd/*.h',
60
+ 'folly/algorithm/simd/detail/*.h',
61
+ 'folly/chrono/*.h',
62
+ 'folly/container/*.h',
63
+ 'folly/container/detail/*.h',
64
+ 'folly/detail/*.h',
65
+ 'folly/functional/*.h',
66
+ 'folly/hash/*.h',
67
+ 'folly/json/*.h',
68
+ 'folly/lang/*.h',
69
+ 'folly/memory/*.h',
70
+ 'folly/memory/detail/*.h',
71
+ 'folly/net/*.h',
72
+ 'folly/net/detail/*.h',
73
+ 'folly/portability/*.h',
74
+ 'folly/system/*.h',
75
+
76
+ # workaround for https://github.com/facebook/react-native/issues/14326
77
+ spec.preserve_paths = 'folly/*.h',
78
+ 'folly/algorithm/simd/*.h',
79
+ 'folly/algorithm/simd/detail/*.h',
80
+ 'folly/chrono/*.h',
81
+ 'folly/container/*.h',
82
+ 'folly/container/detail/*.h',
83
+ 'folly/detail/*.h',
84
+ 'folly/functional/*.h',
85
+ 'folly/hash/*.h',
86
+ 'folly/json/*.h',
87
+ 'folly/lang/*.h',
88
+ 'folly/memory/*.h',
89
+ 'folly/memory/detail/*.h',
90
+ 'folly/net/*.h',
91
+ 'folly/net/detail/*.h',
92
+ 'folly/portability/*.h',
93
+ 'folly/system/*.h',
94
+ spec.libraries = "c++abi" # NOTE Apple-only: Keep c++abi here due to https://github.com/react-native-community/releases/issues/251
95
+ spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
96
+ "DEFINES_MODULE" => "YES",
97
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
98
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\"",
99
+ # In dynamic framework (use_frameworks!) mode, ignore the unused and undefined boost symbols when generating the library.
100
+ "OTHER_LDFLAGS" => "\"-Wl,-U,_jump_fcontext\" \"-Wl,-U,_make_fcontext\"",
101
+ "GCC_WARN_INHIBIT_ALL_WARNINGS" => "YES" # Disable warnings because we don't control this library
102
+ }
103
+
104
+ # TODO: The boost spec should really be selecting these files so that dependents of Folly can also access the required headers.
105
+ spec.user_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"" }
106
+
107
+ spec.default_subspec = 'Default'
108
+
109
+ spec.resource_bundles = {'RCT-Folly_privacy' => 'RCT-Folly/PrivacyInfo.xcprivacy'}
110
+
111
+ spec.subspec 'Default' do
112
+ # no-op
113
+ end
114
+
115
+ spec.subspec 'Fabric' do |fabric|
116
+ fabric.source_files = 'folly/SharedMutex.cpp',
117
+ 'folly/concurrency/CacheLocality.cpp',
118
+ 'folly/detail/Futex.cpp',
119
+ 'folly/synchronization/ParkingLot.cpp',
120
+ 'folly/concurrency/CacheLocality.h',
121
+ 'folly/synchronization/*.h',
122
+ 'folly/system/ThreadId.h'
123
+
124
+ fabric.preserve_paths = 'folly/concurrency/CacheLocality.h',
125
+ 'folly/synchronization/*.h',
126
+ 'folly/system/ThreadId.h'
127
+ end
128
+
129
+ # Folly has issues when compiled with iOS 10 set as deployment target
130
+ # See https://github.com/facebook/folly/issues/1470 for details
131
+ spec.platforms = min_supported_versions
132
+ end
@@ -0,0 +1,99 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ require "json"
7
+
8
+ begin
9
+ react_native_path = File.dirname(Pod::Executable.execute_command('node', ['-p',
10
+ 'require.resolve(
11
+ "react-native",
12
+ {paths: [process.argv[1]]},
13
+ )', __dir__]).strip
14
+ )
15
+ rescue => e
16
+ # Fallback to the parent directory if the above command fails (e.g when building locally in OOT Platform)
17
+ react_native_path = File.join(__dir__, "..", "..")
18
+ end
19
+
20
+ # package.json
21
+ package = JSON.parse(File.read(File.join(react_native_path, "package.json")))
22
+ version = package['version']
23
+
24
+ source = ReactNativeDependenciesUtils.resolve_podspec_source()
25
+
26
+ Pod::Spec.new do |spec|
27
+ spec.name = 'ReactNativeDependencies'
28
+ spec.version = version
29
+ spec.summary = 'React Native Dependencies'
30
+ spec.description = 'ReactNativeDependencies is a podspec that contains all the third-party dependencies of React Native.'
31
+ spec.homepage = 'https://github.com/facebook/react-native'
32
+ spec.license = package['license']
33
+ spec.authors = 'meta'
34
+ spec.platforms = min_supported_versions
35
+ spec.user_target_xcconfig = {
36
+ 'WARNING_CFLAGS' => '-Wno-comma -Wno-shorten-64-to-32',
37
+ }
38
+
39
+ spec.source = source
40
+ spec.preserve_paths = '**/*.*'
41
+ spec.vendored_frameworks = 'framework/packages/react-native/ReactNativeDependencies.xcframework'
42
+ spec.header_mappings_dir = 'Headers'
43
+ spec.source_files = 'Headers/**/*.{h,hpp}'
44
+
45
+ # We need to make sure that the headers are copied to the right place - local tar.gz has a different structure
46
+ # than the one from the maven repo
47
+ spec.prepare_command = <<-CMD
48
+ CURRENT_PATH=$(pwd)
49
+ mkdir -p Headers
50
+ XCFRAMEWORK_PATH=$(find "$CURRENT_PATH" -type d -name "ReactNativeDependencies.xcframework")
51
+ HEADERS_PATH=$(find "$XCFRAMEWORK_PATH" -type d -name "Headers" | head -n 1)
52
+
53
+ # Check if XCFRAMEWORK_PATH is empty
54
+ if [ -z "$XCFRAMEWORK_PATH" ]; then
55
+ echo "ERROR: XCFRAMEWORK_PATH is empty."
56
+ exit 0
57
+ fi
58
+
59
+ # Check if HEADERS_PATH is empty
60
+ if [ -z "$HEADERS_PATH" ]; then
61
+ echo "ERROR: HEADERS_PATH is empty."
62
+ exit 0
63
+ fi
64
+
65
+ cp -R "$HEADERS_PATH/" Headers
66
+ mkdir -p framework/packages/react-native
67
+ cp -R "$XCFRAMEWORK_PATH/../." framework/packages/react-native/
68
+ find "$XCFRAMEWORK_PATH/.." -type f -exec rm {} +
69
+ find "$CURRENT_PATH" -type d -empty -delete
70
+ CMD
71
+
72
+ # If we are passing a local tarball, we don't want to switch between Debug and Release
73
+ if !ENV["RCT_USE_LOCAL_RN_DEP"]
74
+ script_phase = {
75
+ :name => "[RNDeps] Replace React Native Dependencies for the right configuration, if needed",
76
+ :execution_position => :before_compile,
77
+ :script => <<-EOS
78
+ . "$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh"
79
+
80
+ CONFIG="Release"
81
+ if echo $GCC_PREPROCESSOR_DEFINITIONS | grep -q "DEBUG=1"; then
82
+ CONFIG="Debug"
83
+ fi
84
+
85
+ "$NODE_BINARY" "$REACT_NATIVE_PATH/third-party-podspecs/replace_dependencies_version.js" -c "$CONFIG" -r "#{version}" -p "$PODS_ROOT"
86
+ EOS
87
+ }
88
+
89
+
90
+ # :always_out_of_date is only available in CocoaPods 1.13.0 and later
91
+ if Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.13.0')
92
+ # always run the script without warning
93
+ script_phase[:always_out_of_date] = "1"
94
+ end
95
+
96
+ spec.script_phase = script_phase
97
+ end
98
+
99
+ end
@@ -0,0 +1,34 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ boost_config = get_boost_config()
7
+ boost_git_url = boost_config[:git]
8
+
9
+ Pod::Spec.new do |spec|
10
+ spec.name = 'boost'
11
+ spec.version = '1.84.0'
12
+ spec.license = { :type => 'Boost Software License', :file => "LICENSE_1_0.txt" }
13
+ spec.homepage = 'http://www.boost.org'
14
+ spec.summary = 'Boost provides free peer-reviewed portable C++ source libraries.'
15
+ spec.authors = 'Rene Rivera'
16
+ spec.source = { :git => boost_git_url,
17
+ :tag => "v1.84.0" }
18
+
19
+ # Pinning to the same version as React.podspec.
20
+ spec.platforms = min_supported_versions
21
+ spec.requires_arc = false
22
+ spec.source_files = 'boost/**/*.{hpp,cpp}'
23
+
24
+ spec.module_name = 'boost'
25
+ spec.header_dir = 'boost'
26
+ spec.preserve_path = 'boost'
27
+ spec.header_mappings_dir = 'boost/boost'
28
+
29
+ spec.resource_bundles = {'boost_privacy' => 'boost/PrivacyInfo.xcprivacy'}
30
+
31
+ spec.pod_target_xcconfig = {
32
+ "GCC_WARN_INHIBIT_ALL_WARNINGS" => "YES" # Disable warnings because we don't control this library
33
+ }
34
+ end