def kwargs_add(base_kwargs, **new_kwargs): ret_kwargs = dict(base_kwargs) for name, add_value in new_kwargs.iteritems(): if name in ret_kwargs: # Don't use +=, it will modify base_kwargs ret_kwargs[name] = ret_kwargs[name] + add_value else: ret_kwargs[name] = add_value return ret_kwargs if THIS_IS_FBANDROID: include_defs('//ReactAndroid/DEFS') def react_library(**kwargs): kwargs = kwargs_add( kwargs, # We depend on JSC, support the same platforms supported_platforms_regex = '^android-(armv7|x86)$', compiler_flags = [ '-Wno-pessimizing-move', ], deps = [ '//xplat/folly:molly', ]) cxx_library( name = 'bridge', **kwargs_add( kwargs, preprocessor_flags = [ '-DWITH_JSC_EXTRA_TRACING=1', '-DWITH_JSC_MEMORY_PRESSURE=1', '-DWITH_REACT_INTERNAL_SETTINGS=1', '-DWITH_FB_MEMORY_PROFILING=1', ], deps = JSC_DEPS ) ) elif THIS_IS_FBOBJC: def react_library(**kwargs): ios_library( name = 'bridge', header_path_prefix = "cxxreact", frameworks = [ '$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework', ], **kwargs_add( kwargs, preprocessor_flags = DEBUG_PREPROCESSOR_FLAGS, deps = [ '//xplat/folly:molly', ] ) ) LOCAL_HEADERS = [ 'JSCTracing.h', 'JSCLegacyProfiler.h', 'JSCLegacyTracing.h', 'JSCMemory.h', 'JSCPerfStats.h', ] react_library( soname = 'libreactnativefb.so', header_namespace = 'cxxreact', force_static = True, srcs = glob(['*.cpp']), headers = LOCAL_HEADERS, preprocessor_flags = [ '-DLOG_TAG="ReactNative"', '-DWITH_FBSYSTRACE=1', ], compiler_flags = [ '-Wall', '-fexceptions', '-fvisibility=hidden', '-frtti', ], exported_headers = glob(['*.h'], excludes=LOCAL_HEADERS), deps = [ '//xplat/fbsystrace:fbsystrace', ], visibility = [ 'PUBLIC' ], )