1111 "APPLE" ,
1212 "CXX" ,
1313 "IOS" ,
14- "IS_OSS_BUILD" ,
1514 "MACOSX" ,
1615 "WINDOWS" ,
1716 "YOGA_CXX_TARGET" ,
@@ -37,68 +36,24 @@ load("//tools/build_defs/third_party:yarn_defs.bzl", "yarn_workspace_binary")
3736
3837# Call this in the react-native-codegen/BUCK file
3938def rn_codegen_cli ():
40- if not IS_OSS_BUILD :
41- # FB Internal Setup
42- yarn_workspace_binary (
43- name = "write_to_json" ,
44- main = "src/cli/combine/combine-js-to-schema-cli.js" ,
45- root = "//xplat/js:workspace" ,
46- visibility = ["PUBLIC" ],
47- deps = [
48- ":yarn-workspace" ,
49- ],
50- )
51- yarn_workspace_binary (
52- name = "generate_all_from_schema" ,
53- main = "src/cli/generators/generate-all.js" ,
54- root = "//xplat/js:workspace" ,
55- visibility = ["PUBLIC" ],
56- deps = [
57- ":yarn-workspace" ,
58- ],
59- )
60- else :
61- # OSS setup, assumes yarn and node (v12.0.0+) are installed.
62- fb_native .genrule (
63- name = "setup_cli" ,
64- srcs = native .glob ([
65- "scripts/**/*" ,
66- "src/**/*" ,
67- ], exclude = [
68- "__tests__/**/*" ,
69- ]) + [
70- ".babelrc" ,
71- ".prettierrc" ,
72- "package.json" ,
73- ],
74- out = "build" ,
75- bash = r"""
76- set -euo pipefail
77- mkdir -p "$OUT"
78- rsync -rLptgoD "$SRCDIR/" "$OUT"
79- cd "$OUT"
80- yarn install 2> >(grep -v '^warning' 1>&2)
81- yarn run build
82- """ ,
83- )
84-
85- fb_native .sh_binary (
86- name = "write_to_json" ,
87- main = "scripts/buck-oss/combine_js_to_schema.sh" ,
88- resources = [
89- ":setup_cli" ,
90- ],
91- visibility = ["PUBLIC" ],
92- )
93-
94- fb_native .sh_binary (
95- name = "generate_all_from_schema" ,
96- main = "scripts/buck-oss/generate-all.sh" ,
97- resources = [
98- ":setup_cli" ,
99- ],
100- visibility = ["PUBLIC" ],
101- )
39+ yarn_workspace_binary (
40+ name = "write_to_json" ,
41+ main = "src/cli/combine/combine-js-to-schema-cli.js" ,
42+ root = "//xplat/js:workspace" ,
43+ visibility = ["PUBLIC" ],
44+ deps = [
45+ ":yarn-workspace" ,
46+ ],
47+ )
48+ yarn_workspace_binary (
49+ name = "generate_all_from_schema" ,
50+ main = "src/cli/generators/generate-all.js" ,
51+ root = "//xplat/js:workspace" ,
52+ visibility = ["PUBLIC" ],
53+ deps = [
54+ ":yarn-workspace" ,
55+ ],
56+ )
10257
10358def rn_codegen_modules (
10459 name ,
@@ -215,54 +170,53 @@ def rn_codegen_modules(
215170 ##############
216171 # macOS and iOS handling
217172 ##############
218- if not IS_OSS_BUILD :
219- # iOS Buck build isn't fully working in OSS, so let's skip it for OSS for now.
220- fb_native .genrule (
221- name = generate_module_hobjcpp_name ,
222- out = "{}.h" .format (name ),
223- cmd = "cp $(location :{})/{}/{}.h $OUT" .format (generate_fixtures_rule_name , name , name ),
224- labels = ["codegen_rule" ],
225- )
173+ # iOS Buck build isn't fully working in OSS, so let's skip it for OSS for now.
174+ fb_native .genrule (
175+ name = generate_module_hobjcpp_name ,
176+ out = "{}.h" .format (name ),
177+ cmd = "cp $(location :{})/{}/{}.h $OUT" .format (generate_fixtures_rule_name , name , name ),
178+ labels = ["codegen_rule" ],
179+ )
226180
227- fb_native .genrule (
228- name = generate_module_mm_name ,
229- out = "{}-generated.mm" .format (name ),
230- cmd = "cp $(location :{})/{}/{}-generated.mm $OUT" .format (generate_fixtures_rule_name , name , name ),
231- labels = ["codegen_rule" ],
232- )
181+ fb_native .genrule (
182+ name = generate_module_mm_name ,
183+ out = "{}-generated.mm" .format (name ),
184+ cmd = "cp $(location :{})/{}/{}-generated.mm $OUT" .format (generate_fixtures_rule_name , name , name ),
185+ labels = ["codegen_rule" ],
186+ )
233187
234- MOBILE_DEPS = [
235- "//xplat/js/react-native-github:RCTTypeSafety" ,
236- "//xplat/js/react-native-github/packages/react-native/Libraries/RCTRequired:RCTRequired" ,
237- react_native_xplat_target_apple ("react/nativemodule/core:core" ),
238- ]
239- rn_apple_library (
240- name = "{}Apple" .format (name ),
241- srcs = [
242- ":{}" .format (generate_module_mm_name ),
243- ],
244- headers = [
245- ":{}" .format (generate_module_hobjcpp_name ),
246- ],
247- header_namespace = "" ,
248- exported_headers = {
249- "{}/{}.h" .format (name , name ): ":{}" .format (generate_module_hobjcpp_name ),
250- },
251- autoglob = False ,
252- compiler_flags = [
253- "-Wno-unused-private-field" ,
254- ],
255- extension_api_only = True ,
256- ios_exported_deps = MOBILE_DEPS ,
257- labels = library_labels + ["codegen_rule" ],
258- macosx_exported_deps = MOBILE_DEPS if is_catalyst_build () else [
259- react_native_desktop_root_target (":RCTTypeSafetyAppleMac" ),
260- react_native_desktop_root_target (":RCTRequiredAppleMac" ),
261- react_native_desktop_root_target (":nativemoduleAppleMac" ),
262- ],
263- sdks = (IOS , MACOSX ),
264- visibility = ["PUBLIC" ],
265- )
188+ MOBILE_DEPS = [
189+ "//xplat/js/react-native-github:RCTTypeSafety" ,
190+ "//xplat/js/react-native-github/packages/react-native/Libraries/RCTRequired:RCTRequired" ,
191+ react_native_xplat_target_apple ("react/nativemodule/core:core" ),
192+ ]
193+ rn_apple_library (
194+ name = "{}Apple" .format (name ),
195+ srcs = [
196+ ":{}" .format (generate_module_mm_name ),
197+ ],
198+ headers = [
199+ ":{}" .format (generate_module_hobjcpp_name ),
200+ ],
201+ header_namespace = "" ,
202+ exported_headers = {
203+ "{}/{}.h" .format (name , name ): ":{}" .format (generate_module_hobjcpp_name ),
204+ },
205+ autoglob = False ,
206+ compiler_flags = [
207+ "-Wno-unused-private-field" ,
208+ ],
209+ extension_api_only = True ,
210+ ios_exported_deps = MOBILE_DEPS ,
211+ labels = library_labels + ["codegen_rule" ],
212+ macosx_exported_deps = MOBILE_DEPS if is_catalyst_build () else [
213+ react_native_desktop_root_target (":RCTTypeSafetyAppleMac" ),
214+ react_native_desktop_root_target (":RCTRequiredAppleMac" ),
215+ react_native_desktop_root_target (":nativemoduleAppleMac" ),
216+ ],
217+ sdks = (IOS , MACOSX ),
218+ visibility = ["PUBLIC" ],
219+ )
266220
267221def rn_codegen_components (
268222 name = "" ,
@@ -406,63 +360,62 @@ def rn_codegen_components(
406360 ##############
407361 # iOS handling
408362 ##############
409- if not IS_OSS_BUILD :
410- # iOS Buck build isn't fully working in OSS, so let's skip it for OSS for now.
411- if is_running_buck_project ():
412- rn_xplat_cxx_library (name = "generated_components-{}" .format (name ), visibility = ["PUBLIC" ])
413- else :
414- MOBILE_DEPS = [
415- react_native_xplat_target ("react/renderer/debug:debug" ),
416- react_native_xplat_target ("react/renderer/core:core" ),
417- react_native_xplat_target ("react/renderer/graphics:graphics" ),
418- react_native_xplat_target ("react/renderer/components/image:image" ),
419- react_native_xplat_target ("react/renderer/imagemanager:imagemanager" ),
420- react_native_xplat_target ("react/renderer/components/view:view" ),
421- ]
422- rn_xplat_cxx_library (
423- name = "generated_components-{}" .format (name ),
424- srcs = [
425- ":{}" .format (generate_event_emitter_cpp_name ),
426- ":{}" .format (generate_props_cpp_name ),
427- ":{}" .format (generate_state_cpp_name ),
428- ":{}" .format (generate_shadow_node_cpp_name ),
429- ],
430- headers = [
431- ":{}" .format (generate_component_descriptor_h_name ),
432- ":{}" .format (generate_event_emitter_h_name ),
433- ":{}" .format (generate_props_h_name ),
434- ":{}" .format (generate_state_h_name ),
435- ":{}" .format (generate_shadow_node_h_name ),
436- ],
437- header_namespace = "react/renderer/components/{}" .format (name ),
438- exported_headers = {
439- "ComponentDescriptors.h" : ":{}" .format (generate_component_descriptor_h_name ),
440- "EventEmitters.h" : ":{}" .format (generate_event_emitter_h_name ),
441- "Props.h" : ":{}" .format (generate_props_h_name ),
442- "RCTComponentViewHelpers.h" : ":{}" .format (generate_component_hobjcpp_name ),
443- "ShadowNodes.h" : ":{}" .format (generate_shadow_node_h_name ),
444- "States.h" : ":{}" .format (generate_state_h_name ),
445- },
446- fbobjc_compiler_flags = get_apple_compiler_flags (),
447- fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode () + get_apple_inspector_flags (),
448- ios_exported_headers = {
449- "ComponentViewHelpers.h" : ":{}" .format (generate_component_hobjcpp_name ),
450- },
451- ios_headers = [
452- ":{}" .format (generate_component_hobjcpp_name ),
453- ],
454- labels = library_labels + ["codegen_rule" ],
455- platforms = (ANDROID , APPLE , CXX ),
456- preprocessor_flags = [
457- "-DLOG_TAG=\" ReactNative\" " ,
458- "-DWITH_FBSYSTRACE=1" ,
459- ],
460- tests = [":generated_tests-{}" .format (name )],
461- visibility = ["PUBLIC" ],
462- fbandroid_deps = MOBILE_DEPS ,
463- ios_deps = MOBILE_DEPS ,
464- macosx_deps = [react_native_desktop_root_target (":renderer_headers" )] if is_rn_desktop () else MOBILE_DEPS ,
465- )
363+ # iOS Buck build isn't fully working in OSS, so let's skip it for OSS for now.
364+ if is_running_buck_project ():
365+ rn_xplat_cxx_library (name = "generated_components-{}" .format (name ), visibility = ["PUBLIC" ])
366+ else :
367+ MOBILE_DEPS = [
368+ react_native_xplat_target ("react/renderer/debug:debug" ),
369+ react_native_xplat_target ("react/renderer/core:core" ),
370+ react_native_xplat_target ("react/renderer/graphics:graphics" ),
371+ react_native_xplat_target ("react/renderer/components/image:image" ),
372+ react_native_xplat_target ("react/renderer/imagemanager:imagemanager" ),
373+ react_native_xplat_target ("react/renderer/components/view:view" ),
374+ ]
375+ rn_xplat_cxx_library (
376+ name = "generated_components-{}" .format (name ),
377+ srcs = [
378+ ":{}" .format (generate_event_emitter_cpp_name ),
379+ ":{}" .format (generate_props_cpp_name ),
380+ ":{}" .format (generate_state_cpp_name ),
381+ ":{}" .format (generate_shadow_node_cpp_name ),
382+ ],
383+ headers = [
384+ ":{}" .format (generate_component_descriptor_h_name ),
385+ ":{}" .format (generate_event_emitter_h_name ),
386+ ":{}" .format (generate_props_h_name ),
387+ ":{}" .format (generate_state_h_name ),
388+ ":{}" .format (generate_shadow_node_h_name ),
389+ ],
390+ header_namespace = "react/renderer/components/{}" .format (name ),
391+ exported_headers = {
392+ "ComponentDescriptors.h" : ":{}" .format (generate_component_descriptor_h_name ),
393+ "EventEmitters.h" : ":{}" .format (generate_event_emitter_h_name ),
394+ "Props.h" : ":{}" .format (generate_props_h_name ),
395+ "RCTComponentViewHelpers.h" : ":{}" .format (generate_component_hobjcpp_name ),
396+ "ShadowNodes.h" : ":{}" .format (generate_shadow_node_h_name ),
397+ "States.h" : ":{}" .format (generate_state_h_name ),
398+ },
399+ fbobjc_compiler_flags = get_apple_compiler_flags (),
400+ fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode () + get_apple_inspector_flags (),
401+ ios_exported_headers = {
402+ "ComponentViewHelpers.h" : ":{}" .format (generate_component_hobjcpp_name ),
403+ },
404+ ios_headers = [
405+ ":{}" .format (generate_component_hobjcpp_name ),
406+ ],
407+ labels = library_labels + ["codegen_rule" ],
408+ platforms = (ANDROID , APPLE , CXX ),
409+ preprocessor_flags = [
410+ "-DLOG_TAG=\" ReactNative\" " ,
411+ "-DWITH_FBSYSTRACE=1" ,
412+ ],
413+ tests = [":generated_tests-{}" .format (name )],
414+ visibility = ["PUBLIC" ],
415+ fbandroid_deps = MOBILE_DEPS ,
416+ ios_deps = MOBILE_DEPS ,
417+ macosx_deps = [react_native_desktop_root_target (":renderer_headers" )] if is_rn_desktop () else MOBILE_DEPS ,
418+ )
466419
467420 # Tests
468421 fb_xplat_cxx_test (
0 commit comments