Revert D4588356: Refactor dependencies

Differential Revision: D4588356

fbshipit-source-id: 88cd348ed10cbf51e8ea4cde7503f6e0f9e6c572
This commit is contained in:
Martin Konicek 2017-03-10 05:17:45 -08:00 committed by Facebook Github Bot
parent 5c24a9110a
commit f0394ce38b
4 changed files with 144 additions and 202 deletions

View File

@ -30,11 +30,10 @@ def react_native_integration_tests_target(path):
def react_native_dep(path): def react_native_dep(path):
return '//ReactAndroid/src/main/' + path return '//ReactAndroid/src/main/' + path
JSC_INTERNAL_DEPS = [ JSC_DEPS = [
'//native/third-party/jsc:jsc', '//native/third-party/jsc:jsc',
'//native/third-party/jsc:jsc_legacy_profiler', '//native/third-party/jsc:jsc_legacy_profiler',
] ]
JSC_DEPS = JSC_INTERNAL_DEPS
YOGA_TARGET = '//ReactAndroid/src/main/java/com/facebook:yoga' YOGA_TARGET = '//ReactAndroid/src/main/java/com/facebook:yoga'
FBGLOGINIT_TARGET = '//ReactAndroid/src/main/jni/first-party/fbgloginit:fbgloginit' FBGLOGINIT_TARGET = '//ReactAndroid/src/main/jni/first-party/fbgloginit:fbgloginit'

View File

@ -7,89 +7,51 @@ EXPORTED_HEADERS = [
"Value.h", "Value.h",
] ]
EXPORTED_HEADER_MAP = subdir_glob(
(("", header) for header in EXPORTED_HEADERS),
prefix = "jschelpers",
)
if THIS_IS_FBANDROID: if THIS_IS_FBANDROID:
include_defs("//ReactAndroid/DEFS") include_defs('//ReactAndroid/DEFS')
cxx_library( cxx_library(
name = "jscinternalhelpers", name = 'jschelpers',
force_static = True, force_static = True,
compiler_flags = [ compiler_flags = [
"-Wall", '-Wall',
"-fexceptions", '-fexceptions',
"-fvisibility=hidden", '-fvisibility=hidden',
"-std=c++1y", '-std=c++1y',
], ],
exported_headers = EXPORTED_HEADERS, exported_headers = EXPORTED_HEADERS,
headers = glob(["*.h"], excludes=EXPORTED_HEADERS), headers = glob(['*.h'], excludes=EXPORTED_HEADERS),
header_namespace = "jschelpers", header_namespace = 'jschelpers',
srcs = glob(["*.cpp"], excludes=["systemJSCWrapper.cpp"]), srcs = glob(['*.cpp']),
deps = JSC_INTERNAL_DEPS + [ deps = JSC_DEPS + [
"//xplat/folly:molly", '//xplat/folly:molly',
], ],
visibility = [ visibility = [
"PUBLIC", 'PUBLIC',
],
)
cxx_library(
name = "jschelpers",
force_static = True,
compiler_flags = [
"-Wall",
"-fexceptions",
"-fvisibility=hidden",
"-std=c++1y",
],
srcs = [],
deps = [ ":jscinternalhelpers" ],
visibility = [
"PUBLIC",
], ],
) )
if THIS_IS_FBOBJC: if THIS_IS_FBOBJC:
ios_library( ios_library(
name = "jscinternalhelpers", name = 'jschelpers',
inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS, inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS,
compiler_flags = [ compiler_flags = [
"-Wall", '-Wall',
"-fexceptions", '-fexceptions',
"-fvisibility=hidden", '-fvisibility=hidden',
"-std=c++1y", '-std=c++1y',
], ],
exported_headers = EXPORTED_HEADER_MAP, exported_headers = EXPORTED_HEADERS,
headers = subdir_glob([("", "*.h")], excludes=EXPORTED_HEADERS, prefix="jschelpers"), headers = glob(['*.h'], excludes=EXPORTED_HEADERS),
header_namespace = "jschelpers", header_namespace = 'jschelpers',
srcs = glob(["*.cpp"], excludes=["systemJSCWrapper.cpp"]), srcs = glob(['*.cpp']),
deps = [
"//xplat/folly:molly",
],
visibility = [
"PUBLIC",
],
)
ios_library(
name = "jschelpers",
inherited_buck_flags = STATIC_LIBRARY_IOS_FLAGS,
compiler_flags = [
"-Wall",
"-fexceptions",
"-fvisibility=hidden",
"-std=c++1y",
],
srcs = ["systemJSCWrapper.cpp"],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework", '$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework',
],
deps = [
'//xplat/folly:molly',
], ],
deps = [ ":jscinternalhelpers" ],
visibility = [ visibility = [
"PUBLIC", 'PUBLIC',
], ],
) )

View File

@ -11,6 +11,8 @@
#if defined(__APPLE__) #if defined(__APPLE__)
#include <mutex>
// TODO: use glog in OSS too // TODO: use glog in OSS too
#if __has_include(<glog/logging.h>) #if __has_include(<glog/logging.h>)
#define USE_GLOG 1 #define USE_GLOG 1
@ -19,11 +21,36 @@
#define USE_GLOG 0 #define USE_GLOG 0
#endif #endif
#include <objc/runtime.h>
// Crash the app (with a descriptive stack trace) if a function that is not supported by
// the system JSC is called.
#define UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(FUNC_NAME) \
static void Unimplemented_##FUNC_NAME(__unused void* args...) { \
assert(false); \
}
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSEvaluateBytecodeBundle)
#if WITH_FBJSCEXTENSIONS
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSStringCreateWithUTF8CStringExpectAscii)
#endif
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSPokeSamplingProfiler)
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSStartSamplingProfilingOnMainJSCThread)
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(configureJSCForIOS)
bool JSSamplingProfilerEnabled() {
return false;
}
const int32_t JSNoBytecodeFileFormatVersion = -1;
namespace facebook { namespace facebook {
namespace react { namespace react {
static const JSCWrapper* s_customWrapper = nullptr; static const JSCWrapper* s_customWrapper = nullptr;
static JSCWrapper s_systemWrapper = {};
bool isCustomJSCWrapperSet() { bool isCustomJSCWrapperSet() {
return s_customWrapper != nullptr; return s_customWrapper != nullptr;
} }
@ -42,6 +69,96 @@ void setCustomJSCWrapper(const JSCWrapper* wrapper) {
s_customWrapper = wrapper; s_customWrapper = wrapper;
} }
const JSCWrapper* systemJSCWrapper() {
// Note that this is not used on Android. All methods are statically linked instead.
// Some fields are lazily initialized
static std::once_flag flag;
std::call_once(flag, []() {
s_systemWrapper = {
.JSGlobalContextCreateInGroup = JSGlobalContextCreateInGroup,
.JSGlobalContextRelease = JSGlobalContextRelease,
.JSGlobalContextSetName = JSGlobalContextSetName,
.JSContextGetGlobalContext = JSContextGetGlobalContext,
.JSContextGetGlobalObject = JSContextGetGlobalObject,
.JSEvaluateScript = JSEvaluateScript,
.JSEvaluateBytecodeBundle =
(decltype(&JSEvaluateBytecodeBundle))
Unimplemented_JSEvaluateBytecodeBundle,
.JSStringCreateWithUTF8CString = JSStringCreateWithUTF8CString,
.JSStringCreateWithCFString = JSStringCreateWithCFString,
#if WITH_FBJSCEXTENSIONS
.JSStringCreateWithUTF8CStringExpectAscii =
(decltype(&JSStringCreateWithUTF8CStringExpectAscii))
Unimplemented_JSStringCreateWithUTF8CStringExpectAscii,
#endif
.JSStringCopyCFString = JSStringCopyCFString,
.JSStringGetCharactersPtr = JSStringGetCharactersPtr,
.JSStringGetLength = JSStringGetLength,
.JSStringGetMaximumUTF8CStringSize = JSStringGetMaximumUTF8CStringSize,
.JSStringIsEqualToUTF8CString = JSStringIsEqualToUTF8CString,
.JSStringRelease = JSStringRelease,
.JSStringRetain = JSStringRetain,
.JSClassCreate = JSClassCreate,
.JSClassRelease = JSClassRelease,
.JSObjectCallAsConstructor = JSObjectCallAsConstructor,
.JSObjectCallAsFunction = JSObjectCallAsFunction,
.JSObjectGetPrivate = JSObjectGetPrivate,
.JSObjectGetProperty = JSObjectGetProperty,
.JSObjectGetPropertyAtIndex = JSObjectGetPropertyAtIndex,
.JSObjectIsConstructor = JSObjectIsConstructor,
.JSObjectIsFunction = JSObjectIsFunction,
.JSObjectMake = JSObjectMake,
.JSObjectMakeArray = JSObjectMakeArray,
.JSObjectMakeError = JSObjectMakeError,
.JSObjectMakeFunctionWithCallback = JSObjectMakeFunctionWithCallback,
.JSObjectSetPrivate = JSObjectSetPrivate,
.JSObjectSetProperty = JSObjectSetProperty,
.JSObjectCopyPropertyNames = JSObjectCopyPropertyNames,
.JSPropertyNameArrayGetCount = JSPropertyNameArrayGetCount,
.JSPropertyNameArrayGetNameAtIndex = JSPropertyNameArrayGetNameAtIndex,
.JSPropertyNameArrayRelease = JSPropertyNameArrayRelease,
.JSValueCreateJSONString = JSValueCreateJSONString,
.JSValueGetType = JSValueGetType,
.JSValueMakeFromJSONString = JSValueMakeFromJSONString,
.JSValueMakeBoolean = JSValueMakeBoolean,
.JSValueMakeNull = JSValueMakeNull,
.JSValueMakeNumber = JSValueMakeNumber,
.JSValueMakeString = JSValueMakeString,
.JSValueMakeUndefined = JSValueMakeUndefined,
.JSValueProtect = JSValueProtect,
.JSValueToBoolean = JSValueToBoolean,
.JSValueToNumber = JSValueToNumber,
.JSValueToObject = JSValueToObject,
.JSValueToStringCopy = JSValueToStringCopy,
.JSValueUnprotect = JSValueUnprotect,
.JSSamplingProfilerEnabled = JSSamplingProfilerEnabled,
.JSPokeSamplingProfiler =
(decltype(&JSPokeSamplingProfiler))
Unimplemented_JSPokeSamplingProfiler,
.JSStartSamplingProfilingOnMainJSCThread =
(decltype(&JSStartSamplingProfilingOnMainJSCThread))
Unimplemented_JSStartSamplingProfilingOnMainJSCThread,
.configureJSCForIOS =
(decltype(&configureJSCForIOS))Unimplemented_configureJSCForIOS,
.JSContext = objc_getClass("JSContext"),
.JSValue = objc_getClass("JSValue"),
.JSBytecodeFileFormatVersion = JSNoBytecodeFileFormatVersion,
};
});
return &s_systemWrapper;
}
} } } }
#endif #endif

View File

@ -1,136 +0,0 @@
/**
* Copyright (c) 2016-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#include <jschelpers/JSCWrapper.h>
#if defined(__APPLE__)
#include <mutex>
#include <objc/runtime.h>
// Crash the app (with a descriptive stack trace) if a function that is not supported by
// the system JSC is called.
#define UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(FUNC_NAME) \
static void Unimplemented_##FUNC_NAME(__unused void* args...) { \
assert(false); \
}
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSEvaluateBytecodeBundle)
#if WITH_FBJSCEXTENSIONS
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSStringCreateWithUTF8CStringExpectAscii)
#endif
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSPokeSamplingProfiler)
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(JSStartSamplingProfilingOnMainJSCThread)
UNIMPLEMENTED_SYSTEM_JSC_FUNCTION(configureJSCForIOS)
bool JSSamplingProfilerEnabled() {
return false;
}
const int32_t JSNoBytecodeFileFormatVersion = -1;
namespace facebook {
namespace react {
static JSCWrapper s_systemWrapper = {};
const JSCWrapper* systemJSCWrapper() {
// Note that this is not used on Android. All methods are statically linked instead.
// Some fields are lazily initialized
static std::once_flag flag;
std::call_once(flag, []() {
s_systemWrapper = {
.JSGlobalContextCreateInGroup = JSGlobalContextCreateInGroup,
.JSGlobalContextRelease = JSGlobalContextRelease,
.JSGlobalContextSetName = JSGlobalContextSetName,
.JSContextGetGlobalContext = JSContextGetGlobalContext,
.JSContextGetGlobalObject = JSContextGetGlobalObject,
.JSEvaluateScript = JSEvaluateScript,
.JSEvaluateBytecodeBundle =
(decltype(&JSEvaluateBytecodeBundle))
Unimplemented_JSEvaluateBytecodeBundle,
.JSStringCreateWithUTF8CString = JSStringCreateWithUTF8CString,
.JSStringCreateWithCFString = JSStringCreateWithCFString,
#if WITH_FBJSCEXTENSIONS
.JSStringCreateWithUTF8CStringExpectAscii =
(decltype(&JSStringCreateWithUTF8CStringExpectAscii))
Unimplemented_JSStringCreateWithUTF8CStringExpectAscii,
#endif
.JSStringCopyCFString = JSStringCopyCFString,
.JSStringGetCharactersPtr = JSStringGetCharactersPtr,
.JSStringGetLength = JSStringGetLength,
.JSStringGetMaximumUTF8CStringSize = JSStringGetMaximumUTF8CStringSize,
.JSStringIsEqualToUTF8CString = JSStringIsEqualToUTF8CString,
.JSStringRelease = JSStringRelease,
.JSStringRetain = JSStringRetain,
.JSClassCreate = JSClassCreate,
.JSClassRelease = JSClassRelease,
.JSObjectCallAsConstructor = JSObjectCallAsConstructor,
.JSObjectCallAsFunction = JSObjectCallAsFunction,
.JSObjectGetPrivate = JSObjectGetPrivate,
.JSObjectGetProperty = JSObjectGetProperty,
.JSObjectGetPropertyAtIndex = JSObjectGetPropertyAtIndex,
.JSObjectIsConstructor = JSObjectIsConstructor,
.JSObjectIsFunction = JSObjectIsFunction,
.JSObjectMake = JSObjectMake,
.JSObjectMakeArray = JSObjectMakeArray,
.JSObjectMakeError = JSObjectMakeError,
.JSObjectMakeFunctionWithCallback = JSObjectMakeFunctionWithCallback,
.JSObjectSetPrivate = JSObjectSetPrivate,
.JSObjectSetProperty = JSObjectSetProperty,
.JSObjectCopyPropertyNames = JSObjectCopyPropertyNames,
.JSPropertyNameArrayGetCount = JSPropertyNameArrayGetCount,
.JSPropertyNameArrayGetNameAtIndex = JSPropertyNameArrayGetNameAtIndex,
.JSPropertyNameArrayRelease = JSPropertyNameArrayRelease,
.JSValueCreateJSONString = JSValueCreateJSONString,
.JSValueGetType = JSValueGetType,
.JSValueMakeFromJSONString = JSValueMakeFromJSONString,
.JSValueMakeBoolean = JSValueMakeBoolean,
.JSValueMakeNull = JSValueMakeNull,
.JSValueMakeNumber = JSValueMakeNumber,
.JSValueMakeString = JSValueMakeString,
.JSValueMakeUndefined = JSValueMakeUndefined,
.JSValueProtect = JSValueProtect,
.JSValueToBoolean = JSValueToBoolean,
.JSValueToNumber = JSValueToNumber,
.JSValueToObject = JSValueToObject,
.JSValueToStringCopy = JSValueToStringCopy,
.JSValueUnprotect = JSValueUnprotect,
.JSSamplingProfilerEnabled = JSSamplingProfilerEnabled,
.JSPokeSamplingProfiler =
(decltype(&JSPokeSamplingProfiler))
Unimplemented_JSPokeSamplingProfiler,
.JSStartSamplingProfilingOnMainJSCThread =
(decltype(&JSStartSamplingProfilingOnMainJSCThread))
Unimplemented_JSStartSamplingProfilingOnMainJSCThread,
.configureJSCForIOS =
(decltype(&configureJSCForIOS))Unimplemented_configureJSCForIOS,
.JSContext = objc_getClass("JSContext"),
.JSValue = objc_getClass("JSValue"),
.JSBytecodeFileFormatVersion = JSNoBytecodeFileFormatVersion,
};
});
return &s_systemWrapper;
}
} }
#endif